| Index: chrome/common/extensions/docs/server2/samples_data_source.py
|
| diff --git a/chrome/common/extensions/docs/server2/samples_data_source.py b/chrome/common/extensions/docs/server2/samples_data_source.py
|
| index cf2791676462c849d9e5453f642d08b20e2aa85e..6a49fe22b9a6a628c0b8a552095482db6488f54d 100644
|
| --- a/chrome/common/extensions/docs/server2/samples_data_source.py
|
| +++ b/chrome/common/extensions/docs/server2/samples_data_source.py
|
| @@ -7,7 +7,7 @@ import json
|
| import logging
|
| import re
|
|
|
| -import compiled_file_system as compiled_fs
|
| +from compiled_file_system import CompiledFileSystem
|
| from file_system import FileNotFoundError
|
| import third_party.json_schema_compiler.json_comment_eater as json_comment_eater
|
| import third_party.json_schema_compiler.model as model
|
| @@ -15,44 +15,46 @@ import url_constants
|
|
|
| DEFAULT_ICON_PATH = '/images/sample-default-icon.png'
|
|
|
| -# See api_data_source.py for more info on _VERSION.
|
| -_VERSION = 3
|
| +# Increment this if the data model changes for SamplesDataSource.
|
| +_VERSION = 4
|
|
|
| class SamplesDataSource(object):
|
| """Constructs a list of samples and their respective files and api calls.
|
| """
|
| -
|
| class Factory(object):
|
| """A factory to create SamplesDataSource instances bound to individual
|
| Requests.
|
| """
|
| def __init__(self,
|
| channel,
|
| - file_system,
|
| - github_file_system,
|
| - cache_factory,
|
| - github_cache_factory,
|
| + extensions_file_system,
|
| + apps_file_system,
|
| ref_resolver_factory,
|
| - samples_path):
|
| - self._file_system = file_system
|
| - self._github_file_system = github_file_system
|
| + extension_samples_path):
|
| + self._svn_file_system = extensions_file_system
|
| + self._github_file_system = apps_file_system
|
| self._static_path = '/%s/static' % channel
|
| - self._extensions_cache = cache_factory.Create(self._MakeSamplesList,
|
| - compiled_fs.EXTENSIONS,
|
| - version=_VERSION)
|
| - self._apps_cache = github_cache_factory.Create(
|
| - lambda x, y: self._MakeSamplesList(x, y, is_apps=True),
|
| - compiled_fs.APPS,
|
| - version=_VERSION)
|
| self._ref_resolver = ref_resolver_factory.Create()
|
| - self._samples_path = samples_path
|
| + self._extension_samples_path = extension_samples_path
|
| + def create_compiled_fs(fs, fn, category):
|
| + return CompiledFileSystem.Factory(fs).Create(fn,
|
| + SamplesDataSource,
|
| + category=category,
|
| + version=_VERSION)
|
| + self._extensions_cache = create_compiled_fs(extensions_file_system,
|
| + self._MakeSamplesList,
|
| + 'extensions')
|
| + self._apps_cache = create_compiled_fs(apps_file_system,
|
| + lambda *args: self._MakeSamplesList(
|
| + *args, is_apps=True),
|
| + 'apps')
|
|
|
| def Create(self, request):
|
| """Returns a new SamplesDataSource bound to |request|.
|
| """
|
| return SamplesDataSource(self._extensions_cache,
|
| self._apps_cache,
|
| - self._samples_path,
|
| + self._extension_samples_path,
|
| request)
|
|
|
| def _GetAPIItems(self, js_file):
|
| @@ -99,7 +101,11 @@ class SamplesDataSource(object):
|
| return l10n_data
|
|
|
| def _MakeSamplesList(self, base_dir, files, is_apps=False):
|
| - file_system = self._github_file_system if is_apps else self._file_system
|
| + # HACK(kalman): The code here (for legacy reasons) assumes that |files| is
|
| + # prefixed by |base_dir|, so make it true.
|
| + files = ['%s%s' % (base_dir, f) for f in files]
|
| + file_system = (self._github_file_system if is_apps else
|
| + self._svn_file_system)
|
| samples_list = []
|
| for filename in sorted(files):
|
| if filename.rsplit('/')[-1] != 'manifest.json':
|
| @@ -130,7 +136,7 @@ class SamplesDataSource(object):
|
| item = item[:-len('.addListener')]
|
| if item.startswith('chrome.'):
|
| item = item[len('chrome.'):]
|
| - ref_data = self._ref_resolver.GetLink(item, 'samples')
|
| + ref_data = self._ref_resolver.GetLink(item)
|
| if ref_data is None:
|
| continue
|
| api_calls.append({
|
| @@ -173,10 +179,14 @@ class SamplesDataSource(object):
|
|
|
| return samples_list
|
|
|
| - def __init__(self, extensions_cache, apps_cache, samples_path, request):
|
| + def __init__(self,
|
| + extensions_cache,
|
| + apps_cache,
|
| + extension_samples_path,
|
| + request):
|
| self._extensions_cache = extensions_cache
|
| self._apps_cache = apps_cache
|
| - self._samples_path = samples_path
|
| + self._extension_samples_path = extension_samples_path
|
| self._request = request
|
|
|
| def _GetAcceptedLanguages(self):
|
| @@ -212,7 +222,7 @@ class SamplesDataSource(object):
|
| samples_list = self._apps_cache.GetFromFileListing('/')
|
| else:
|
| samples_list = self._extensions_cache.GetFromFileListing(
|
| - self._samples_path + '/')
|
| + self._extension_samples_path + '/')
|
| return_list = []
|
| for dict_ in samples_list:
|
| name = dict_['name']
|
|
|