Backed out changeset 9157ea42ff41 (bug 914925) for Android/B2G test bustage.
[gecko.git] / dom / quota / FileStreams.h
blobc5bbc421f11edb007a689fb529c192a9ac0502c9
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_quota_filestreams_h__
8 #define mozilla_dom_quota_filestreams_h__
10 #include "QuotaCommon.h"
12 #include "nsFileStreams.h"
14 #include "PersistenceType.h"
15 #include "QuotaObject.h"
17 BEGIN_QUOTA_NAMESPACE
19 template <class FileStreamBase>
20 class FileQuotaStream : public FileStreamBase
22 public:
23 // nsFileStreamBase override
24 NS_IMETHOD
25 SetEOF() MOZ_OVERRIDE;
27 NS_IMETHOD
28 Close() MOZ_OVERRIDE;
30 protected:
31 FileQuotaStream(PersistenceType aPersistenceType, const nsACString& aGroup,
32 const nsACString& aOrigin)
33 : mPersistenceType(aPersistenceType), mGroup(aGroup), mOrigin(aOrigin)
34 { }
36 // nsFileStreamBase override
37 virtual nsresult
38 DoOpen() MOZ_OVERRIDE;
40 PersistenceType mPersistenceType;
41 nsCString mGroup;
42 nsCString mOrigin;
43 nsRefPtr<QuotaObject> mQuotaObject;
46 template <class FileStreamBase>
47 class FileQuotaStreamWithWrite : public FileQuotaStream<FileStreamBase>
49 public:
50 // nsFileStreamBase override
51 NS_IMETHOD
52 Write(const char* aBuf, uint32_t aCount, uint32_t* _retval) MOZ_OVERRIDE;
54 protected:
55 FileQuotaStreamWithWrite(PersistenceType aPersistenceType,
56 const nsACString& aGroup, const nsACString& aOrigin)
57 : FileQuotaStream<FileStreamBase>(aPersistenceType, aGroup, aOrigin)
58 { }
61 class FileInputStream : public FileQuotaStream<nsFileInputStream>
63 public:
64 NS_DECL_ISUPPORTS_INHERITED
66 static already_AddRefed<FileInputStream>
67 Create(PersistenceType aPersistenceType, const nsACString& aGroup,
68 const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1,
69 int32_t aPerm = -1, int32_t aBehaviorFlags = 0);
71 private:
72 FileInputStream(PersistenceType aPersistenceType, const nsACString& aGroup,
73 const nsACString& aOrigin)
74 : FileQuotaStream<nsFileInputStream>(aPersistenceType, aGroup, aOrigin)
75 { }
77 virtual ~FileInputStream() {
78 Close();
82 class FileOutputStream : public FileQuotaStreamWithWrite<nsFileOutputStream>
84 public:
85 NS_DECL_ISUPPORTS_INHERITED
87 static already_AddRefed<FileOutputStream>
88 Create(PersistenceType aPersistenceType, const nsACString& aGroup,
89 const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1,
90 int32_t aPerm = -1, int32_t aBehaviorFlags = 0);
92 private:
93 FileOutputStream(PersistenceType aPersistenceType, const nsACString& aGroup,
94 const nsACString& aOrigin)
95 : FileQuotaStreamWithWrite<nsFileOutputStream>(aPersistenceType, aGroup,
96 aOrigin)
97 { }
99 virtual ~FileOutputStream() {
100 Close();
104 class FileStream : public FileQuotaStreamWithWrite<nsFileStream>
106 public:
107 NS_DECL_ISUPPORTS_INHERITED
109 static already_AddRefed<FileStream>
110 Create(PersistenceType aPersistenceType, const nsACString& aGroup,
111 const nsACString& aOrigin, nsIFile* aFile, int32_t aIOFlags = -1,
112 int32_t aPerm = -1, int32_t aBehaviorFlags = 0);
114 private:
115 FileStream(PersistenceType aPersistenceType, const nsACString& aGroup,
116 const nsACString& aOrigin)
117 : FileQuotaStreamWithWrite<nsFileStream>(aPersistenceType, aGroup, aOrigin)
120 virtual ~FileStream() {
121 Close();
125 END_QUOTA_NAMESPACE
127 #endif /* mozilla_dom_quota_filestreams_h__ */