Bumping manifests a=b2g-bump
[gecko.git] / dom / indexedDB / IDBFileHandle.h
blob94934323bb449077921d61431cc17c0806240b0d
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 file,
5 * You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_dom_indexeddb_idbfilehandle_h__
8 #define mozilla_dom_indexeddb_idbfilehandle_h__
10 #include "IDBFileRequest.h"
11 #include "js/TypeDecls.h"
12 #include "MainThreadUtils.h"
13 #include "mozilla/Assertions.h"
14 #include "mozilla/Attributes.h"
15 #include "mozilla/dom/FileHandle.h"
16 #include "mozilla/DOMEventTargetHelper.h"
17 #include "nsCycleCollectionParticipant.h"
19 class nsPIDOMWindow;
21 namespace mozilla {
22 namespace dom {
24 struct IDBFileMetadataParameters;
26 namespace indexedDB {
28 class IDBMutableFile;
30 class IDBFileHandle MOZ_FINAL : public DOMEventTargetHelper,
31 public nsIRunnable,
32 public FileHandleBase
34 public:
35 NS_DECL_ISUPPORTS_INHERITED
36 NS_DECL_NSIRUNNABLE
38 NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(IDBFileHandle, DOMEventTargetHelper)
40 static already_AddRefed<IDBFileHandle>
41 Create(FileMode aMode,
42 RequestMode aRequestMode,
43 IDBMutableFile* aMutableFile);
45 virtual MutableFileBase*
46 MutableFile() const MOZ_OVERRIDE;
48 // nsIDOMEventTarget
49 virtual nsresult
50 PreHandleEvent(EventChainPreVisitor& aVisitor) MOZ_OVERRIDE;
52 // WrapperCache
53 virtual JSObject*
54 WrapObject(JSContext* aCx) MOZ_OVERRIDE;
56 // WebIDL
57 nsPIDOMWindow*
58 GetParentObject() const
60 return GetOwner();
63 IDBMutableFile*
64 GetMutableFile() const
66 MOZ_ASSERT(NS_IsMainThread(), "Wrong thread!");
68 return mMutableFile;
71 IDBMutableFile*
72 GetFileHandle() const
74 return GetMutableFile();
77 already_AddRefed<IDBFileRequest>
78 GetMetadata(const IDBFileMetadataParameters& aParameters, ErrorResult& aRv);
80 already_AddRefed<IDBFileRequest>
81 ReadAsArrayBuffer(uint64_t aSize, ErrorResult& aRv)
83 return Read(aSize, false, NullString(), aRv).downcast<IDBFileRequest>();
86 already_AddRefed<IDBFileRequest>
87 ReadAsText(uint64_t aSize, const nsAString& aEncoding, ErrorResult& aRv)
89 return Read(aSize, true, aEncoding, aRv).downcast<IDBFileRequest>();
92 template<class T>
93 already_AddRefed<IDBFileRequest>
94 Write(const T& aValue, ErrorResult& aRv)
96 return
97 WriteOrAppend(aValue, false, aRv).template downcast<IDBFileRequest>();
100 template<class T>
101 already_AddRefed<IDBFileRequest>
102 Append(const T& aValue, ErrorResult& aRv)
104 return WriteOrAppend(aValue, true, aRv).template downcast<IDBFileRequest>();
107 already_AddRefed<IDBFileRequest>
108 Truncate(const Optional<uint64_t>& aSize, ErrorResult& aRv)
110 return FileHandleBase::Truncate(aSize, aRv).downcast<IDBFileRequest>();
113 already_AddRefed<IDBFileRequest>
114 Flush(ErrorResult& aRv)
116 return FileHandleBase::Flush(aRv).downcast<IDBFileRequest>();
119 IMPL_EVENT_HANDLER(complete)
120 IMPL_EVENT_HANDLER(abort)
121 IMPL_EVENT_HANDLER(error)
123 private:
124 IDBFileHandle(FileMode aMode,
125 RequestMode aRequestMode,
126 IDBMutableFile* aMutableFile);
127 ~IDBFileHandle();
129 virtual nsresult
130 OnCompleteOrAbort(bool aAborted) MOZ_OVERRIDE;
132 virtual bool
133 CheckWindow() MOZ_OVERRIDE;
135 virtual already_AddRefed<FileRequestBase>
136 GenerateFileRequest() MOZ_OVERRIDE;
138 nsRefPtr<IDBMutableFile> mMutableFile;
141 } // namespace indexedDB
142 } // namespace dom
143 } // namespace mozilla
145 #endif // mozilla_dom_indexeddb_idbfilehandle_h__