From 28c3287c5847ef48c2dcff12989bd8b4510cbd67 Mon Sep 17 00:00:00 2001 From: "joaodasilva@chromium.org" Date: Fri, 16 Mar 2012 18:04:16 +0000 Subject: Extended policy device_management support at the testserver to handle lists of protobufs. BUG=None TEST=The testserver can be used to push the AppPack device policy Review URL: https://chromiumcodereview.appspot.com/9703116 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127201 0039d316-1c4b-4281-b951-d872f2087c98 --- net/tools/testserver/device_management.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'net/tools') diff --git a/net/tools/testserver/device_management.py b/net/tools/testserver/device_management.py index 4cd1532..a7d16ff 100644 --- a/net/tools/testserver/device_management.py +++ b/net/tools/testserver/device_management.py @@ -314,8 +314,21 @@ class RequestHandler(object): if field.label == field.LABEL_REPEATED: assert type(field_value) == list entries = group_message.__getattribute__(field.name) - for list_item in field_value: - entries.append(list_item) + if field.message_type is None: + for list_item in field_value: + entries.append(list_item) + else: + # This field is itself a protobuf. + sub_type = field.message_type + for sub_value in field_value: + assert type(sub_value) == dict + # Add a new sub-protobuf per list entry. + sub_message = entries.add() + # Now iterate over its fields and recursively add them. + for sub_field in sub_message.DESCRIPTOR.fields: + if sub_field.name in sub_value: + value = sub_value[sub_field.name] + self.SetProtobufMessageField(sub_message, sub_field, value) return elif field.type == field.TYPE_BOOL: assert type(field_value) == bool -- cgit v1.1