Example #1
0
 def GetFeaturesBundle(self, platform):
   if self._platform_data[platform].features_bundle is None:
     self._platform_data[platform].features_bundle = FeaturesBundle(
         self._host_fs_at_master,
         self._compiled_fs_factory,
         self._object_store_creator,
         platform)
   return self._platform_data[platform].features_bundle
Example #2
0
 def setUp(self):
     object_store_creator = ObjectStoreCreator.ForTest()
     compiled_fs_factory = CompiledFileSystem.Factory(object_store_creator)
     self._mock_file_system = MockFileSystem(TestFileSystem(_TEST_DATA))
     features_bundle = FeaturesBundle(self._mock_file_system,
                                      compiled_fs_factory,
                                      object_store_creator)
     self._api_models = APIModels(features_bundle, compiled_fs_factory,
                                  self._mock_file_system)
 def setUp(self):
     object_store_creator = ObjectStoreCreator.ForTest()
     compiled_fs_factory = CompiledFileSystem.Factory(object_store_creator)
     self._mock_file_system = MockFileSystem(
         TestFileSystem(_TEST_DATA, relative_to=CHROME_EXTENSIONS))
     features_bundle = FeaturesBundle(self._mock_file_system,
                                      compiled_fs_factory,
                                      object_store_creator, 'extensions')
     self._api_models = APIModels(features_bundle, compiled_fs_factory,
                                  self._mock_file_system,
                                  object_store_creator, 'extensions')
  def setUp(self):
    self._base_path = Server2Path('test_data', 'test_json')

    server_instance = ServerInstance.ForTest(
        TestFileSystem(CANNED_MASTER_FS_DATA, relative_to=CHROME_EXTENSIONS))
    file_system = server_instance.host_file_system_provider.GetMaster()
    self._json_cache = server_instance.compiled_fs_factory.ForJson(file_system)
    self._features_bundle = FeaturesBundle(file_system,
                                           server_instance.compiled_fs_factory,
                                           server_instance.object_store_creator,
                                           'extensions')
    self._api_models = server_instance.platform_bundle.GetAPIModels(
        'extensions')
    self._fake_availability = AvailabilityInfo(ChannelInfo('stable', '396', 5))
  def setUp(self):
    self._base_path = Server2Path('test_data', 'test_json')

    server_instance = ServerInstance.ForTest(
        TestFileSystem(CANNED_TRUNK_FS_DATA, relative_to=CHROME_EXTENSIONS))
    file_system = server_instance.host_file_system_provider.GetTrunk()
    self._json_cache = server_instance.compiled_fs_factory.ForJson(file_system)
    self._features_bundle = FeaturesBundle(file_system,
                                           server_instance.compiled_fs_factory,
                                           server_instance.object_store_creator)
    self._api_models = server_instance.api_models

    # Used for testGetAPIAvailability() so that valid-ish data is processed.
    server_instance = ServerInstance.ForTest(
        file_system_provider=FakeHostFileSystemProvider(
            CANNED_API_FILE_SYSTEM_DATA))
    self._avail_api_models = server_instance.api_models
    self._avail_json_cache = server_instance.compiled_fs_factory.ForJson(
        server_instance.host_file_system_provider.GetTrunk())
    self._avail_finder = server_instance.availability_finder
Example #6
0
 def _CreateFeaturesBundle(self, file_system):
     return FeaturesBundle(file_system, self._compiled_fs_factory,
                           self._object_store_creator, self._platform)
  def __init__(self,
               object_store_creator,
               compiled_fs_factory,
               branch_utility,
               host_file_system_provider,
               github_file_system_provider,
               gcs_file_system_provider,
               base_path='/'):
    '''
    |object_store_creator|
        The ObjectStoreCreator used to create almost all caches.
    |compiled_fs_factory|
        Factory used to create CompiledFileSystems, a higher-level cache type
        than ObjectStores. This can usually be derived from just
        |object_store_creator| but under special circumstances a different
        implementation needs to be passed in.
    |branch_utility|
        Has knowledge of Chrome branches, channels, and versions.
    |host_file_system_provider|
        Creates FileSystem instances which host the server at alternative
        revisions.
    |github_file_system_provider|
        Creates FileSystem instances backed by GitHub.
    |base_path|
        The path which all HTML is generated relative to. Usually this is /
        but some servlets need to override this.
    '''
    self.object_store_creator = object_store_creator

    self.compiled_fs_factory = compiled_fs_factory

    self.host_file_system_provider = host_file_system_provider
    host_fs_at_trunk = host_file_system_provider.GetTrunk()

    self.github_file_system_provider = github_file_system_provider
    self.gcs_file_system_provider = gcs_file_system_provider

    assert base_path.startswith('/') and base_path.endswith('/')
    self.base_path = base_path

    self.host_file_system_iterator = HostFileSystemIterator(
        host_file_system_provider,
        branch_utility)

    self.features_bundle = FeaturesBundle(
        host_fs_at_trunk,
        self.compiled_fs_factory,
        self.object_store_creator)

    self.api_models = APIModels(
        self.features_bundle,
        self.compiled_fs_factory,
        host_fs_at_trunk)

    self.availability_finder = AvailabilityFinder(
        branch_utility,
        compiled_fs_factory,
        self.host_file_system_iterator,
        host_fs_at_trunk,
        object_store_creator)

    self.api_categorizer = APICategorizer(
        host_fs_at_trunk,
        compiled_fs_factory)

    self.api_data_source_factory = APIDataSource.Factory(
        self.compiled_fs_factory,
        host_fs_at_trunk,
        self.availability_finder,
        self.api_models,
        self.features_bundle,
        self.object_store_creator)

    self.ref_resolver_factory = ReferenceResolver.Factory(
        self.api_data_source_factory,
        self.api_models,
        object_store_creator)

    self.api_data_source_factory.SetReferenceResolverFactory(
        self.ref_resolver_factory)

    # Note: samples are super slow in the dev server because it doesn't support
    # async fetch, so disable them.
    if IsDevServer():
      extension_samples_fs = EmptyDirFileSystem()
      app_samples_fs = EmptyDirFileSystem()
    else:
      extension_samples_fs = host_fs_at_trunk
      # TODO(kalman): Re-enable the apps samples, see http://crbug.com/344097.
      app_samples_fs = EmptyDirFileSystem()
      #app_samples_fs = github_file_system_provider.Create(
      #    'GoogleChrome', 'chrome-app-samples')
    self.samples_data_source_factory = SamplesDataSource.Factory(
        extension_samples_fs,
        app_samples_fs,
        CompiledFileSystem.Factory(object_store_creator),
        self.ref_resolver_factory,
        base_path)

    self.api_data_source_factory.SetSamplesDataSourceFactory(
        self.samples_data_source_factory)

    self.content_providers = ContentProviders(
        object_store_creator,
        self.compiled_fs_factory,
        host_fs_at_trunk,
        self.github_file_system_provider,
        self.gcs_file_system_provider)

    # TODO(kalman): Move all the remaining DataSources into DataSourceRegistry,
    # then factor out the DataSource creation into a factory method, so that
    # the entire ServerInstance doesn't need to be passed in here.
    self.template_renderer = TemplateRenderer(self)

    # TODO(kalman): It may be better for |document_renderer| to construct a
    # TemplateDataSource itself rather than depending on template_renderer, but
    # for that the above todo should be addressed.
    self.document_renderer = DocumentRenderer(
        TableOfContentsRenderer(host_fs_at_trunk,
                                compiled_fs_factory,
                                self.template_renderer),
        self.ref_resolver_factory.Create())
Example #8
0
    def __init__(self,
                 object_store_creator,
                 compiled_fs_factory,
                 branch_utility,
                 host_file_system_provider,
                 github_file_system_provider,
                 base_path='/'):
        '''
    |object_store_creator|
        The ObjectStoreCreator used to create almost all caches.
    |compiled_fs_factory|
        Factory used to create CompiledFileSystems, a higher-level cache type
        than ObjectStores. This can usually be derived from just
        |object_store_creator| but under special circumstances a different
        implementation needs to be passed in.
    |branch_utility|
        Has knowledge of Chrome branches, channels, and versions.
    |host_file_system_provider|
        Creates FileSystem instances which host the server at alternative
        revisions.
    |github_file_system_provider|
        Creates FileSystem instances backed by GitHub.
    |base_path|
        The path which all HTML is generated relative to. Usually this is /
        but some servlets need to override this.
    '''
        self.object_store_creator = object_store_creator

        self.compiled_fs_factory = compiled_fs_factory

        self.host_file_system_provider = host_file_system_provider
        host_fs_at_trunk = host_file_system_provider.GetTrunk()

        self.github_file_system_provider = github_file_system_provider

        assert base_path.startswith('/') and base_path.endswith('/')
        self.base_path = base_path

        self.host_file_system_iterator = HostFileSystemIterator(
            host_file_system_provider, branch_utility)

        self.features_bundle = FeaturesBundle(host_fs_at_trunk,
                                              self.compiled_fs_factory,
                                              self.object_store_creator)

        self.api_models = APIModels(self.features_bundle,
                                    self.compiled_fs_factory, host_fs_at_trunk)

        self.availability_finder = AvailabilityFinder(
            branch_utility, compiled_fs_factory,
            self.host_file_system_iterator, host_fs_at_trunk,
            object_store_creator)

        self.api_list_data_source_factory = APIListDataSource.Factory(
            self.compiled_fs_factory, host_fs_at_trunk, self.features_bundle,
            self.object_store_creator)

        self.api_data_source_factory = APIDataSource.Factory(
            self.compiled_fs_factory, host_fs_at_trunk, svn_constants.API_PATH,
            self.availability_finder, branch_utility)

        self.ref_resolver_factory = ReferenceResolver.Factory(
            self.api_data_source_factory, self.api_models,
            object_store_creator)

        self.api_data_source_factory.SetReferenceResolverFactory(
            self.ref_resolver_factory)

        # Note: samples are super slow in the dev server because it doesn't support
        # async fetch, so disable them.
        if IsDevServer():
            extension_samples_fs = EmptyDirFileSystem()
            app_samples_fs = EmptyDirFileSystem()
        else:
            extension_samples_fs = host_fs_at_trunk
            app_samples_fs = github_file_system_provider.Create(
                'GoogleChrome', 'chrome-app-samples')
        self.samples_data_source_factory = SamplesDataSource.Factory(
            extension_samples_fs, app_samples_fs,
            CompiledFileSystem.Factory(object_store_creator),
            self.ref_resolver_factory, svn_constants.EXAMPLES_PATH, base_path)

        self.api_data_source_factory.SetSamplesDataSourceFactory(
            self.samples_data_source_factory)

        self.intro_data_source_factory = IntroDataSource.Factory(
            self.compiled_fs_factory, host_fs_at_trunk,
            self.ref_resolver_factory,
            [svn_constants.INTRO_PATH, svn_constants.ARTICLE_PATH])

        self.path_canonicalizer = PathCanonicalizer(self.compiled_fs_factory,
                                                    host_fs_at_trunk)

        self.content_providers = ContentProviders(
            self.compiled_fs_factory, host_fs_at_trunk,
            self.github_file_system_provider)

        # TODO(kalman): Move all the remaining DataSources into DataSourceRegistry,
        # then factor out the DataSource creation into a factory method, so that
        # the entire ServerInstance doesn't need to be passed in here.
        self.template_renderer = TemplateRenderer(self)

        self.strings_json_path = svn_constants.STRINGS_JSON_PATH
        self.manifest_json_path = svn_constants.MANIFEST_JSON_PATH
        self.manifest_features_path = svn_constants.MANIFEST_FEATURES_PATH