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

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

Issue 23867003: Docserver: Consolidate features caching and access. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: let's try this again, shall we? Created 7 years, 2 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: chrome/common/extensions/docs/server2/permissions_data_source.py
diff --git a/chrome/common/extensions/docs/server2/permissions_data_source.py b/chrome/common/extensions/docs/server2/permissions_data_source.py
index 7662fa77ab9d91a280d622ebe0f98585ea9259ba..560e192e516503023255d126ca033bdd13237361 100644
--- a/chrome/common/extensions/docs/server2/permissions_data_source.py
+++ b/chrome/common/extensions/docs/server2/permissions_data_source.py
@@ -41,18 +41,10 @@ class PermissionsDataSource(object):
'''Load and format permissions features to be used by templates. Requries a
template data source be set before use.
'''
- def __init__(self,
- compiled_fs_factory,
- file_system,
- api_features_path,
- permissions_features_path,
- permissions_json_path):
- self._api_features_path = api_features_path
- self._permissions_features_path = permissions_features_path
- self._permissions_json_path = permissions_json_path
- self._file_system = file_system
- self._cache = compiled_fs_factory.Create(
- self._CreatePermissionsDataSource, PermissionsDataSource)
+ def __init__(self, server_instance):
+ self._features_bundle = server_instance.features_bundle
+ self._object_store = server_instance.object_store_creator.Create(
+ PermissionsDataSource)
def SetTemplateDataSource(self, template_data_source_factory):
'''Initialize a template data source to be used to render partial templates
@@ -61,21 +53,13 @@ class PermissionsDataSource(object):
self._template_data_source = template_data_source_factory.Create(
None, {})
- def _CreatePermissionsDataSource(self, _, content):
- '''Combine the contents of |_permissions_json_path| and
- |_permissions_features_path|. Filter into lists, one for extensions and
- one for apps.
- '''
- api_features = Parse(self._file_system.ReadSingle(self._api_features_path))
+ def _CreatePermissionsData(self):
+ api_features = self._features_bundle.GetAPIFeatures()
+ permission_features = self._features_bundle.GetPermissionFeatures()
def filter_for_platform(permissions, platform):
return _ListifyPermissions(features.Filtered(permissions, platform))
- permissions_json = Parse(self._file_system.ReadSingle(
- self._permissions_json_path))
- permission_features = features.MergedWith(
- features.Parse(Parse(content)), permissions_json)
-
_AddDependencyDescriptions(permission_features, api_features)
# Turn partial templates into descriptions, ensure anchors are set.
for permission in permission_features.values():
@@ -87,10 +71,17 @@ class PermissionsDataSource(object):
del permission['partial']
return {
- 'declare_apps': filter_for_platform(permission_features, 'app'),
+ 'declare_apps': filter_for_platform(permission_features, 'apps'),
'declare_extensions': filter_for_platform(
- permission_features, 'extension')
+ permission_features, 'extensions')
}
+ def _GetCachedPermissionsData(self):
+ data = self._object_store.Get('permissions_data').Get()
+ if data is None:
+ data = self._CreatePermissionsData()
+ self._object_store.Set('permissions_data', data)
+ return data
+
def get(self, key):
- return self._cache.GetFromFile(self._permissions_features_path)[key]
+ return self._GetCachedPermissionsData().get(key)

Powered by Google App Engine
This is Rietveld 408576698