Index: third_party/WebKit/Source/bindings/scripts/v8_attributes.py |
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_attributes.py b/third_party/WebKit/Source/bindings/scripts/v8_attributes.py |
index 109b010f4b9c90a336c98eaf0888aba037dbc113..4b47204bca4396be584d915e1273f60a1c6a1e1e 100644 |
--- a/third_party/WebKit/Source/bindings/scripts/v8_attributes.py |
+++ b/third_party/WebKit/Source/bindings/scripts/v8_attributes.py |
@@ -378,19 +378,20 @@ def is_keep_alive_for_gc(interface, attribute): |
def setter_context(interface, attribute, interfaces, context): |
if 'PutForwards' in attribute.extended_attributes: |
- # Use target interface and attribute in place of original interface and |
- # attribute from this point onwards. |
+ # Make sure the target interface and attribute exist. |
target_interface_name = attribute.idl_type.base_type |
target_attribute_name = attribute.extended_attributes['PutForwards'] |
interface = interfaces[target_interface_name] |
try: |
- attribute = next(candidate |
- for candidate in interface.attributes |
- if candidate.name == target_attribute_name) |
+ next(candidate |
+ for candidate in interface.attributes |
+ if candidate.name == target_attribute_name) |
except StopIteration: |
raise Exception('[PutForward] target not found:\n' |
'Attribute "%s" is not present in interface "%s"' % |
(target_attribute_name, target_interface_name)) |
+ context['target_attribute_name'] = target_attribute_name |
+ return |
if ('Replaceable' in attribute.extended_attributes): |
context['cpp_setter'] = 'v8CallBoolean(info.Holder()->CreateDataProperty(info.GetIsolate()->GetCurrentContext(), propertyName, v8Value))' |