Add a NavigationThrottle to the public content/ interface
[chromium-blink-merge.git] / chrome / common / extensions / docs / server2 / github_file_system_provider.py
blobb5e5c224269d162382947c40bbc80ca91a48745a
1 # Copyright 2013 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.
5 from caching_file_system import CachingFileSystem
6 from empty_dir_file_system import EmptyDirFileSystem
7 from github_file_system import GithubFileSystem as OldGithubFileSystem
8 from new_github_file_system import GithubFileSystem as NewGithubFileSystem
11 class GithubFileSystemProvider(object):
12 '''Provides GithubFileSystems bound to an owner/repo pair.
13 '''
15 def __init__(self, object_store_creator):
16 self._object_store_creator = object_store_creator
18 def Create(self, owner, repo):
19 '''Creates a GithubFileSystem. For legacy reasons this is hacked
20 such that the apps samples returns the old GithubFileSystem.
22 |owner| is the owner of the GitHub account, e.g. 'GoogleChrome'.
23 |repo| is the repository name, e.g. 'devtools-docs'.
24 '''
25 if owner == 'GoogleChrome' and repo == 'chrome-app-samples':
26 # NOTE: The old GitHub file system implementation doesn't support being
27 # wrapped by a CachingFileSystem. It's also too slow to run on the dev
28 # server, since every app API page would need to read from it.
29 return OldGithubFileSystem.CreateChromeAppsSamples(
30 self._object_store_creator)
31 return CachingFileSystem(
32 NewGithubFileSystem.Create(owner, repo, self._object_store_creator),
33 self._object_store_creator)
35 @staticmethod
36 def ForEmpty():
37 class EmptyImpl(object):
38 def Create(self, owner, repo):
39 return EmptyDirFileSystem()
40 return EmptyImpl()