Commit 3b103d47 authored by Hitoshi Yoshida's avatar Hitoshi Yoshida Committed by Commit Bot

IDL Dictionary: Make const and non-const ref getters


Bug: 839389
Change-Id: Ic7c4f8bb6ae05db2debb827abe9c7ab565abb6b3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2108312Reviewed-by: default avatarYuki Shiino <yukishiino@chromium.org>
Commit-Queue: Hitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#751681}
parent 054707c2
......@@ -97,7 +97,8 @@ def blink_type_info(idl_type):
"double": "double",
"unrestricted double": "double",
}
return TypeInfo(cxx_type[real_type.keyword_typename])
return TypeInfo(
cxx_type[real_type.keyword_typename], const_ref_fmt="{}")
if real_type.is_string:
return TypeInfo(
......@@ -129,19 +130,11 @@ def blink_type_info(idl_type):
has_null_value=True)
elif "AllowShared" in real_type.extended_attributes:
return TypeInfo(
"DOM{}".format(real_type.keyword_typename),
member_fmt="Member<{}>",
ref_fmt="MaybeShared<{}>",
const_ref_fmt="const MaybeShared<{}>",
value_fmt="MaybeShared<{}>",
"MaybeShared<DOM{}>".format(real_type.keyword_typename),
has_null_value=True)
else:
return TypeInfo(
"DOM{}".format(real_type.keyword_typename),
member_fmt="Member<{}>",
ref_fmt="NotShared<{}>",
const_ref_fmt="const NotShared<{}>",
value_fmt="NotShared<{}>",
"NotShared<DOM{}>".format(real_type.keyword_typename),
has_null_value=True)
if real_type.is_symbol:
......
......@@ -114,21 +114,32 @@ def make_dict_member_get_def(cg_context):
member = cg_context.dict_member
blink_member_name = _blink_member_name(member)
name = blink_member_name.get_api
blink_type = blink_type_info(member.idl_type)
if blink_type.ref_t != blink_type.const_ref_t:
func_def = CxxFuncDefNode(
name=name, arg_decls=[], return_type=blink_type.ref_t)
func_def.set_base_template_vars(cg_context.template_bindings())
func_def.body.extend([
TextNode(_format("DCHECK({}());", blink_member_name.has_api)),
TextNode(_format("return {};", blink_member_name.value_var)),
])
else:
func_def = None
func_def = CxxFuncDefNode(
name=blink_member_name.get_api,
const_func_def = CxxFuncDefNode(
name=name,
arg_decls=[],
return_type=blink_type_info(member.idl_type).ref_t,
return_type=blink_type.const_ref_t,
const=True)
func_def.set_base_template_vars(cg_context.template_bindings())
body = func_def.body
body.extend([
const_func_def.set_base_template_vars(cg_context.template_bindings())
const_func_def.body.extend([
TextNode(_format("DCHECK({}());", blink_member_name.has_api)),
TextNode(_format("return {};", blink_member_name.value_var)),
])
return func_def
return ListNode([func_def, const_func_def])
def make_dict_member_has_def(cg_context):
......@@ -789,5 +800,5 @@ def generate_dictionary(dictionary):
def generate_dictionaries(web_idl_database):
dictionary = web_idl_database.find("OriginTrialsTestDictionary")
dictionary = web_idl_database.find("RTCQuicStreamWriteParameters")
generate_dictionary(dictionary)
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