| Index: tools/dom/scripts/htmldartgenerator.py | 
| diff --git a/tools/dom/scripts/htmldartgenerator.py b/tools/dom/scripts/htmldartgenerator.py | 
| index 29b757f9d84bfbdecdf0dfa24c00b98f2e61f62f..607a75694feea0721187eb46b693b24762cf9037 100644 | 
| --- a/tools/dom/scripts/htmldartgenerator.py | 
| +++ b/tools/dom/scripts/htmldartgenerator.py | 
| @@ -107,11 +107,28 @@ class HtmlDartGenerator(object): | 
| convert_to_future_members): | 
| self.AddOperation(ConvertToFuture(info), declare_only) | 
|  | 
| +  def _HoistableConstants(self, interface): | 
| +    consts = [] | 
| +    if interface.parents: | 
| +      for parent in interface.parents: | 
| +        parent_interface = self._database.GetInterface(parent.type.id) | 
| +        # TODO(vsm): This should be a general check.  E.g., on private | 
| +        # interfaces? | 
| +        if parent.type.id == 'WebGLRenderingContextBase': | 
| +          consts = consts + parent_interface.constants | 
| +    return consts | 
| + | 
| def AddSecondaryMembers(self, interface): | 
| # With multiple inheritance, attributes and operations of non-first | 
| # interfaces need to be added.  Sometimes the attribute or operation is | 
| # defined in the current interface as well as a parent.  In that case we | 
| # avoid making a duplicate definition and pray that the signatures match. | 
| +    if not self._renamer.ShouldSuppressInterface(interface): | 
| +      secondary_constants = sorted(self._HoistableConstants(interface), | 
| +                                     ConstantOutputOrder) | 
| +      for const in secondary_constants: | 
| +        self.AddConstant(const) | 
| + | 
| secondary_parents = self._database.TransitiveSecondaryParents(interface, | 
| not self._dart_use_blink) | 
| for parent_interface in sorted(secondary_parents): | 
|  |