| Index: chrome/common/extensions/docs/server2/document_parser.py
|
| diff --git a/chrome/common/extensions/docs/server2/document_parser.py b/chrome/common/extensions/docs/server2/document_parser.py
|
| index b44c743e8cfa854c05fbaec74f2d0a8233020e00..08b5e800dcb5984703711a70302c96bb5083ade5 100644
|
| --- a/chrome/common/extensions/docs/server2/document_parser.py
|
| +++ b/chrome/common/extensions/docs/server2/document_parser.py
|
| @@ -48,6 +48,8 @@ class DocumentStructureEntry(object):
|
| # so make it private. In particular we pretend that anything but the first
|
| # h1 is an h2, and it'd be odd to expose that.
|
| self._tag = tag
|
| + # Documents can override the name of the entry using title="".
|
| + self._has_explicit_name = False
|
|
|
| def __repr__(self):
|
| return '<%s>%s</%s>' % (self._tag, self.name, self._tag)
|
| @@ -125,7 +127,16 @@ class _DocumentParser(HTMLParser):
|
| (tag, self._processing_entry._tag))
|
| return
|
|
|
| - self._processing_entry = DocumentStructureEntry(tag, dict(attrs))
|
| + attrs_dict = dict(attrs)
|
| + self._processing_entry = DocumentStructureEntry(tag, attrs_dict)
|
| +
|
| + explicit_name = attrs_dict.pop('title', None)
|
| + if explicit_name == '':
|
| + # Don't create a TOC entry at all if the tag has specified title="".
|
| + return
|
| + if explicit_name is not None:
|
| + self._processing_entry.name = explicit_name
|
| + self._processing_entry._has_explicit_name = True
|
|
|
| if tag == 'h1' and self._title_entry is not None:
|
| self._WarnWithPosition('Found multiple <h1> tags. Subsequent <h1> tags '
|
| @@ -169,7 +180,8 @@ class _DocumentParser(HTMLParser):
|
| self._processing_entry = None
|
|
|
| def handle_data(self, data):
|
| - if self._processing_entry is not None:
|
| + if (self._processing_entry is not None and
|
| + not self._processing_entry._has_explicit_name):
|
| # += is inefficient, but probably fine here because the chances of a
|
| # large number of nested tags within header tags is pretty low.
|
| self._processing_entry.name += data
|
|
|