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

Unified Diff: trunk/src/chrome/common/extensions/docs/server2/manifest_data_source.py

Issue 14712010: Revert 199633 "Doc server manifest page generation" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 7 years, 7 months 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: trunk/src/chrome/common/extensions/docs/server2/manifest_data_source.py
===================================================================
--- trunk/src/chrome/common/extensions/docs/server2/manifest_data_source.py (revision 199633)
+++ trunk/src/chrome/common/extensions/docs/server2/manifest_data_source.py (working copy)
@@ -1,90 +0,0 @@
-# Copyright 2013 The Chromium Authors. All rights reserved.
-# Use of this source code is governed by a BSD-style license that can be
-# found in the LICENSE file.
-
-from collections import OrderedDict
-from copy import deepcopy
-from operator import itemgetter
-
-from third_party.json_schema_compiler.json_parse import Parse
-
-class ManifestDataSource(object):
- """ Provides a template with access to manifest properties specific to apps or
- extensions.
- """
- def __init__(self,
- compiled_fs_factory,
- file_system,
- manifest_path,
- features_path):
- self._manifest_path = manifest_path
- self._features_path = features_path
- self._file_system = file_system
- self._cache = compiled_fs_factory.Create(
- self._CreateManifestData, ManifestDataSource)
-
- def _ApplyAppsTransformations(self, manifest):
- manifest['required'][0]['example'] = 'Application'
- manifest['optional'][-1]['is_last'] = True
-
- def _ApplyExtensionsTransformations(self, manifest):
- manifest['optional'][-1]['is_last'] = True
-
- def _CreateManifestData(self, _, content):
- """Take the contents of |_manifest_path| and create apps and extensions
- versions of a manifest example based on the contents of |_features_path|.
- """
- def create_manifest_dict():
- d = OrderedDict()
- for category in ['required', 'only_one', 'recommended', 'optional']:
- d[category] = []
- return d
-
- apps = create_manifest_dict()
- extensions = create_manifest_dict()
-
- manifest_json = Parse(content)
- features_json = Parse(self._file_system.ReadSingle(
- self._features_path))
-
- def add_property(feature, manifest_key, category):
- """If |feature|, from features_json, has the correct extension_types, add
- |manifest_key| to either apps or extensions.
- """
- added = False
- extension_types = feature['extension_types']
- if extension_types == 'all' or 'platform_app' in extension_types:
- apps[category].append(deepcopy(manifest_key))
- added = True
- if extension_types == 'all' or 'extension' in extension_types:
- extensions[category].append(deepcopy(manifest_key))
- added = True
- return added
-
- # Property types are: required, only_one, recommended, and optional.
- for category in manifest_json:
- for manifest_key in manifest_json[category]:
- # If a property is in manifest.json but not _manifest_features, this
- # will cause an error.
- feature = features_json[manifest_key['name']]
- if add_property(feature, manifest_key, category):
- del features_json[manifest_key['name']]
-
- # All of the properties left in features_json are assumed to be optional.
- for feature in features_json.keys():
- item = features_json[feature]
- # Handles instances where a features entry is a union with a whitelist.
- if isinstance(item, list):
- item = item[0]
- add_property(item, {'name': feature}, 'optional')
-
- apps['optional'].sort(key=itemgetter('name'))
- extensions['optional'].sort(key=itemgetter('name'))
-
- self._ApplyAppsTransformations(apps)
- self._ApplyExtensionsTransformations(extensions)
-
- return {'apps': apps, 'extensions': extensions}
-
- def get(self, key):
- return self._cache.GetFromFile(self._manifest_path)[key]

Powered by Google App Engine
This is Rietveld 408576698