Coverage Report

Created: 2018-09-25 14:53

/src/mozilla-central/dom/quota/FileStreams.h
Line
Count
Source (jump to first uncovered line)
1
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2
/* vim: set ts=8 sts=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/. */
6
7
#ifndef mozilla_dom_quota_filestreams_h__
8
#define mozilla_dom_quota_filestreams_h__
9
10
#include "QuotaCommon.h"
11
12
#include "nsFileStreams.h"
13
14
#include "PersistenceType.h"
15
#include "QuotaObject.h"
16
17
BEGIN_QUOTA_NAMESPACE
18
19
template <class FileStreamBase>
20
class FileQuotaStream : public FileStreamBase
21
{
22
public:
23
  // nsFileStreamBase override
24
  NS_IMETHOD
25
  SetEOF() override;
26
27
  NS_IMETHOD
28
  Close() override;
29
30
protected:
31
  FileQuotaStream(PersistenceType aPersistenceType, const nsACString& aGroup,
32
                  const nsACString& aOrigin)
33
  : mPersistenceType(aPersistenceType), mGroup(aGroup), mOrigin(aOrigin)
34
0
  { }
Unexecuted instantiation: mozilla::dom::quota::FileQuotaStream<nsFileInputStream>::FileQuotaStream(mozilla::dom::quota::PersistenceType, nsTSubstring<char> const&, nsTSubstring<char> const&)
Unexecuted instantiation: mozilla::dom::quota::FileQuotaStream<nsFileOutputStream>::FileQuotaStream(mozilla::dom::quota::PersistenceType, nsTSubstring<char> const&, nsTSubstring<char> const&)
Unexecuted instantiation: mozilla::dom::quota::FileQuotaStream<nsFileStream>::FileQuotaStream(mozilla::dom::quota::PersistenceType, nsTSubstring<char> const&, nsTSubstring<char> const&)
35
36
  // nsFileStreamBase override
37
  virtual nsresult
38
  DoOpen() override;
39
40
  PersistenceType mPersistenceType;
41
  nsCString mGroup;
42
  nsCString mOrigin;
43
  RefPtr<QuotaObject> mQuotaObject;
44
};
45
46
template <class FileStreamBase>
47
class FileQuotaStreamWithWrite : public FileQuotaStream<FileStreamBase>
48
{
49
public:
50
  // nsFileStreamBase override
51
  NS_IMETHOD
52
  Write(const char* aBuf, uint32_t aCount, uint32_t* _retval) override;
53
54
protected:
55
  FileQuotaStreamWithWrite(PersistenceType aPersistenceType,
56
                           const nsACString& aGroup, const nsACString& aOrigin)
57
  : FileQuotaStream<FileStreamBase>(aPersistenceType, aGroup, aOrigin)
58
0
  { }
Unexecuted instantiation: mozilla::dom::quota::FileQuotaStreamWithWrite<nsFileOutputStream>::FileQuotaStreamWithWrite(mozilla::dom::quota::PersistenceType, nsTSubstring<char> const&, nsTSubstring<char> const&)
Unexecuted instantiation: mozilla::dom::quota::FileQuotaStreamWithWrite<nsFileStream>::FileQuotaStreamWithWrite(mozilla::dom::quota::PersistenceType, nsTSubstring<char> const&, nsTSubstring<char> const&)
59
};
60
61
class FileInputStream : public FileQuotaStream<nsFileInputStream>
62
{
63
public:
64
  NS_INLINE_DECL_REFCOUNTING_INHERITED(FileInputStream,
65
                                       FileQuotaStream<nsFileInputStream>)
66
67
  FileInputStream(PersistenceType aPersistenceType, const nsACString& aGroup,
68
                  const nsACString& aOrigin)
69
  : FileQuotaStream<nsFileInputStream>(aPersistenceType, aGroup, aOrigin)
70
0
  { }
71
72
private:
73
0
  virtual ~FileInputStream() {
74
0
    Close();
75
0
  }
76
};
77
78
class FileOutputStream : public FileQuotaStreamWithWrite<nsFileOutputStream>
79
{
80
public:
81
  NS_INLINE_DECL_REFCOUNTING_INHERITED(FileOutputStream,
82
                                       FileQuotaStreamWithWrite<nsFileOutputStream>);
83
84
  FileOutputStream(PersistenceType aPersistenceType, const nsACString& aGroup,
85
                   const nsACString& aOrigin)
86
  : FileQuotaStreamWithWrite<nsFileOutputStream>(aPersistenceType, aGroup,
87
                                                 aOrigin)
88
0
  { }
89
90
private:
91
0
  virtual ~FileOutputStream() {
92
0
    Close();
93
0
  }
94
};
95
96
class FileStream : public FileQuotaStreamWithWrite<nsFileStream>
97
{
98
public:
99
  NS_INLINE_DECL_REFCOUNTING_INHERITED(FileStream,
100
                                       FileQuotaStreamWithWrite<nsFileStream>)
101
102
  FileStream(PersistenceType aPersistenceType, const nsACString& aGroup,
103
             const nsACString& aOrigin)
104
  : FileQuotaStreamWithWrite<nsFileStream>(aPersistenceType, aGroup, aOrigin)
105
0
  { }
106
107
private:
108
0
  virtual ~FileStream() {
109
0
    Close();
110
0
  }
111
};
112
113
already_AddRefed<FileInputStream>
114
CreateFileInputStream(PersistenceType aPersistenceType,
115
                      const nsACString& aGroup,
116
                      const nsACString& aOrigin,
117
                      nsIFile* aFile,
118
                      int32_t aIOFlags = -1,
119
                      int32_t aPerm = -1,
120
                      int32_t aBehaviorFlags = 0);
121
122
already_AddRefed<FileOutputStream>
123
CreateFileOutputStream(PersistenceType aPersistenceType,
124
                       const nsACString& aGroup,
125
                       const nsACString& aOrigin,
126
                       nsIFile* aFile,
127
                       int32_t aIOFlags = -1,
128
                       int32_t aPerm = -1,
129
                       int32_t aBehaviorFlags = 0);
130
131
already_AddRefed<FileStream>
132
CreateFileStream(PersistenceType aPersistenceType,
133
                 const nsACString& aGroup,
134
                 const nsACString& aOrigin,
135
                 nsIFile* aFile,
136
                 int32_t aIOFlags = -1,
137
                 int32_t aPerm = -1,
138
                 int32_t aBehaviorFlags = 0);
139
140
END_QUOTA_NAMESPACE
141
142
#endif /* mozilla_dom_quota_filestreams_h__ */