| Index: chrome/common/extensions/docs/server2/platform_bundle.py
|
| diff --git a/chrome/common/extensions/docs/server2/platform_bundle.py b/chrome/common/extensions/docs/server2/platform_bundle.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1e716c8cb492e412f3f44015c6602a506c138e00
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/docs/server2/platform_bundle.py
|
| @@ -0,0 +1,91 @@
|
| +# Copyright 2014 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 api_categorizer import APICategorizer
|
| +from api_models import APIModels
|
| +from availability_finder import AvailabilityFinder
|
| +from features_bundle import FeaturesBundle
|
| +from future import Collect
|
| +from platform_util import GetPlatforms, PlatformToExtensionType
|
| +from reference_resolver import ReferenceResolver
|
| +
|
| +
|
| +class _PlatformData(object):
|
| + def __init__(self):
|
| + self.features_bundle = None
|
| + self.api_models = None
|
| + self.reference_resolver = None
|
| + self.availability_finder = None
|
| + self.api_categorizer = None
|
| +
|
| +
|
| +class PlatformBundle(object):
|
| + '''Creates various objects for different platforms
|
| + '''
|
| + def __init__(self,
|
| + branch_utility,
|
| + compiled_fs_factory,
|
| + host_fs_at_trunk,
|
| + host_file_system_iterator,
|
| + object_store_creator):
|
| + self._branch_utility = branch_utility
|
| + self._compiled_fs_factory = compiled_fs_factory
|
| + self._host_fs_at_trunk = host_fs_at_trunk
|
| + self._host_file_system_iterator = host_file_system_iterator
|
| + self._object_store_creator = object_store_creator
|
| + self._platform_data = dict((p, _PlatformData()) for p in GetPlatforms())
|
| +
|
| + def GetFeaturesBundle(self, platform):
|
| + if self._platform_data[platform].features_bundle is None:
|
| + self._platform_data[platform].features_bundle = FeaturesBundle(
|
| + self._host_fs_at_trunk,
|
| + self._compiled_fs_factory,
|
| + self._object_store_creator,
|
| + platform)
|
| + return self._platform_data[platform].features_bundle
|
| +
|
| + def GetAPIModels(self, platform):
|
| + if self._platform_data[platform].api_models is None:
|
| + # TODO(danielj41): Filter APIModels data here rather than passing the
|
| + # platform.
|
| + self._platform_data[platform].api_models = APIModels(
|
| + self.GetFeaturesBundle(platform),
|
| + self._compiled_fs_factory,
|
| + self._host_fs_at_trunk,
|
| + platform)
|
| + return self._platform_data[platform].api_models
|
| +
|
| + def GetReferenceResolver(self, platform):
|
| + if self._platform_data[platform].reference_resolver is None:
|
| + self._platform_data[platform].reference_resolver = ReferenceResolver(
|
| + self.GetAPIModels(platform),
|
| + self._object_store_creator.Create(ReferenceResolver,
|
| + category=platform))
|
| + return self._platform_data[platform].reference_resolver
|
| +
|
| + def GetAvailabilityFinder(self, platform):
|
| + if self._platform_data[platform].availability_finder is None:
|
| + self._platform_data[platform].availability_finder = AvailabilityFinder(
|
| + self._branch_utility,
|
| + self._compiled_fs_factory,
|
| + self._host_file_system_iterator,
|
| + self._host_fs_at_trunk,
|
| + self._object_store_creator,
|
| + platform)
|
| + return self._platform_data[platform].availability_finder
|
| +
|
| + def GetAPICategorizer(self, platform):
|
| + if self._platform_data[platform].api_categorizer is None:
|
| + self._platform_data[platform].api_categorizer = APICategorizer(
|
| + self._host_fs_at_trunk,
|
| + self._compiled_fs_factory,
|
| + platform)
|
| + return self._platform_data[platform].api_categorizer
|
| +
|
| + def Cron(self):
|
| + return Collect([self.GetAPIModels(platform).Cron()
|
| + for platform in self._platform_data])
|
| +
|
| + def GetIdentity(self):
|
| + return self._host_fs_at_trunk.GetIdentity()
|
|
|