Line data Source code
1 : /* This Source Code Form is subject to the terms of the Mozilla Public
2 : * License, v. 2.0. If a copy of the MPL was not distributed with this
3 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4 :
5 : #ifndef DirectoryProvider_h__
6 : #define DirectoryProvider_h__
7 :
8 : #include "nsIDirectoryService.h"
9 : #include "nsComponentManagerUtils.h"
10 : #include "nsISimpleEnumerator.h"
11 : #include "nsIFile.h"
12 : #include "mozilla/Attributes.h"
13 :
14 : #define NS_BROWSERDIRECTORYPROVIDER_CONTRACTID \
15 : "@mozilla.org/browser/directory-provider;1"
16 :
17 : namespace mozilla {
18 : namespace browser {
19 :
20 3 : class DirectoryProvider final : public nsIDirectoryServiceProvider2
21 : {
22 : public:
23 : NS_DECL_ISUPPORTS
24 : NS_DECL_NSIDIRECTORYSERVICEPROVIDER
25 : NS_DECL_NSIDIRECTORYSERVICEPROVIDER2
26 :
27 : private:
28 0 : ~DirectoryProvider() {}
29 :
30 : class AppendingEnumerator final : public nsISimpleEnumerator
31 : {
32 : public:
33 : NS_DECL_ISUPPORTS
34 : NS_DECL_NSISIMPLEENUMERATOR
35 :
36 : AppendingEnumerator(nsISimpleEnumerator* aBase,
37 : char const *const *aAppendList);
38 :
39 : private:
40 0 : ~AppendingEnumerator() {}
41 :
42 : nsCOMPtr<nsISimpleEnumerator> mBase;
43 : char const *const *const mAppendList;
44 : nsCOMPtr<nsIFile> mNext;
45 : };
46 : };
47 :
48 : } // namespace browser
49 : } // namespace mozilla
50 :
51 : #endif // DirectoryProvider_h__
|