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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4
5 from api_categorizer import APICategorizer
6 from api_models import APIModels
7 from availability_finder import AvailabilityFinder
8 from features_bundle import FeaturesBundle
9 from future import Collect
10 from platform_util import GetPlatforms, PlatformToExtensionType
11 from reference_resolver import ReferenceResolver
12
13
14 class _PlatformData(object):
15 def __init__(self):
16 self.features_bundle = None
17 self.api_models = None
18 self.reference_resolver = None
19 self.availability_finder = None
20 self.api_categorizer = None
21
22
23 class PlatformBundle(object):
24 '''Creates various objects for different platforms
25 '''
26 def __init__(self,
27 branch_utility,
28 compiled_fs_factory,
29 host_fs_at_trunk,
30 host_file_system_iterator,
31 object_store_creator):
32 self._branch_utility = branch_utility
33 self._compiled_fs_factory = compiled_fs_factory
34 self._host_fs_at_trunk = host_fs_at_trunk
35 self._host_file_system_iterator = host_file_system_iterator
36 self._object_store_creator = object_store_creator
37 self._platform_data = dict((p, _PlatformData()) for p in GetPlatforms())
38
39 def GetFeaturesBundle(self, platform):
40 if self._platform_data[platform].features_bundle is None:
41 self._platform_data[platform].features_bundle = FeaturesBundle(
42 self._host_fs_at_trunk,
43 self._compiled_fs_factory,
44 self._object_store_creator,
45 platform)
46 return self._platform_data[platform].features_bundle
47
48 def GetAPIModels(self, platform):
49 if self._platform_data[platform].api_models is None:
50 # TODO(danielj41): Filter APIModels data here rather than passing the
51 # platform.
52 self._platform_data[platform].api_models = APIModels(
53 self.GetFeaturesBundle(platform),
54 self._compiled_fs_factory,
55 self._host_fs_at_trunk,
56 platform)
57 return self._platform_data[platform].api_models
58
59 def GetReferenceResolver(self, platform):
60 if self._platform_data[platform].reference_resolver is None:
61 self._platform_data[platform].reference_resolver = ReferenceResolver(
62 self.GetAPIModels(platform),
63 self._object_store_creator.Create(ReferenceResolver,
64 category=platform))
65 return self._platform_data[platform].reference_resolver
66
67 def GetAvailabilityFinder(self, platform):
68 if self._platform_data[platform].availability_finder is None:
69 self._platform_data[platform].availability_finder = AvailabilityFinder(
70 self._branch_utility,
71 self._compiled_fs_factory,
72 self._host_file_system_iterator,
73 self._host_fs_at_trunk,
74 self._object_store_creator,
75 platform)
76 return self._platform_data[platform].availability_finder
77
78 def GetAPICategorizer(self, platform):
79 if self._platform_data[platform].api_categorizer is None:
80 self._platform_data[platform].api_categorizer = APICategorizer(
81 self._host_fs_at_trunk,
82 self._compiled_fs_factory,
83 platform)
84 return self._platform_data[platform].api_categorizer
85
86 def Cron(self):
87 return Collect([self.GetAPIModels(platform).Cron()
88 for platform in self._platform_data])
89
90 def GetIdentity(self):
91 return self._host_fs_at_trunk.GetIdentity()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698