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

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

Issue 344453003: Docserver: separate models for apps and extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase/Add comment Created 6 years, 6 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/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()

Powered by Google App Engine
This is Rietveld 408576698