Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4051)

Unified Diff: chrome/common/extensions/docs/server2/sidenav_data_source.py

Issue 102593005: Clean patch with DCC static content (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: addressed reviewer's comments Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/server2/sidenav_data_source.py
diff --git a/chrome/common/extensions/docs/server2/sidenav_data_source.py b/chrome/common/extensions/docs/server2/sidenav_data_source.py
index 598122a8ff39313dc66f1fb7d2aacb272e032d55..1d4cc4281e0fe167ea3e14f40e6f4123cc3d6bca 100644
--- a/chrome/common/extensions/docs/server2/sidenav_data_source.py
+++ b/chrome/common/extensions/docs/server2/sidenav_data_source.py
@@ -21,24 +21,38 @@ def _AddLevels(items, level):
if 'items' in item:
_AddLevels(item['items'], level + 1)
not at google - send to devlin 2013/12/18 05:10:14 need an extra \n here
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.
-
-def _AddSelected(items, path):
- '''Add 'selected' and 'child_selected' properties to |items| so that the
- sidenav can be expanded to show which menu item has been selected. Returns
- True if an item was marked 'selected'.
+def _AddAnnotations(items, path, parent=None):
+ '''Add 'selected', 'child_selected' and 'related' properties to
+ |items| so that the sidenav can be expanded to show which menu item has
+ been selected and the related pages section can be drawn. 'related'
+ is added to all items with the same parent as the selected item.
+ If more than one item exactly matches the path, the deepest one is considered
+ 'selected'. A 'parent' property is added to the selected path.
+
+ Returns True if an item was marked 'selected'.
'''
for item in items:
- if item.get('href', '') == path:
- item['selected'] = True
- return True
+ # depth first search
not at google - send to devlin 2013/12/18 05:10:14 Comment is ok to leave out I think.
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.
if 'items' in item:
- if _AddSelected(item['items'], path):
+ if _AddAnnotations(item['items'], path, item):
item['child_selected'] = True
return True
+ if item.get('href', '') == path:
+ item['selected'] = True
+ if parent:
+ item['parent'] = parent
+
+ # navigate on siblings, marking them as related
not at google - send to devlin 2013/12/18 05:10:14 the docstring on this function adequately covers t
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.
+ for sibling in items:
+ sibling['related'] = True
+
+ return True
+
return False
+
not at google - send to devlin 2013/12/18 05:10:14 need 1 less \n here
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.
class SidenavDataSource(DataSource):
'''Provides templates with access to JSON files used to create the side
navigation bar.
@@ -78,13 +92,14 @@ class SidenavDataSource(DataSource):
item['href'] = self._server_instance.base_path + href
def Cron(self):
- futures = [self._cache.GetFromFile('%s/%s_sidenav.json' %
- (JSON_TEMPLATES, platform))
- for platform in ('apps', 'extensions')]
- return Future(delegate=Gettable(lambda: [f.Get() for f in futures]))
+ future = self._cache.GetFromFile('%s/chrome_sidenav.json' %
+ (JSON_TEMPLATES))
+ return future
not at google - send to devlin 2013/12/18 05:10:14 inline this (no need for the extra |future| variab
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.
def get(self, key):
not at google - send to devlin 2013/12/18 05:10:14 add: # TODO(mangini/kalman): Use |key| to decide
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.
- sidenav = copy.deepcopy(self._cache.GetFromFile(
- '%s/%s_sidenav.json' % (JSON_TEMPLATES, key)).Get())
- _AddSelected(sidenav, self._server_instance.base_path + self._request.path)
- return sidenav
+ sidenav = self._cache.GetFromFile(
+ '%s/chrome_sidenav.json' % JSON_TEMPLATES).Get()
+ sidenav = copy.deepcopy(sidenav)
+ _AddAnnotations(sidenav,
+ self._server_instance.base_path + self._request.path)
not at google - send to devlin 2013/12/18 05:10:14 indent -= 3 to align with the (
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.
+ return sidenav
not at google - send to devlin 2013/12/18 05:10:14 no trailing space
Renato Mangini (chromium) 2013/12/18 13:25:30 Done.

Powered by Google App Engine
This is Rietveld 408576698