Bumping manifests a=b2g-bump
[gecko.git] / dom / nfc / MozNDEFRecord.h
blobbf1864188861997168e29f1150ad2894568d0003
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim:set ts=2 sw=2 sts=2 et cindent: */
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 /* Copyright © 2013 Deutsche Telekom, Inc. */
9 #ifndef mozilla_dom_MozNDEFRecord_h__
10 #define mozilla_dom_MozNDEFRecord_h__
12 #include "mozilla/Attributes.h"
13 #include "mozilla/ErrorResult.h"
14 #include "nsCycleCollectionParticipant.h"
15 #include "nsWrapperCache.h"
16 #include "jsapi.h"
18 #include "mozilla/dom/TypedArray.h"
19 #include "jsfriendapi.h"
20 #include "js/GCAPI.h"
21 #include "nsPIDOMWindow.h"
23 struct JSContext;
25 namespace mozilla {
26 namespace dom {
28 class MozNDEFRecord MOZ_FINAL : public nsISupports,
29 public nsWrapperCache
31 public:
32 NS_DECL_CYCLE_COLLECTING_ISUPPORTS
33 NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(MozNDEFRecord)
35 public:
37 MozNDEFRecord(JSContext* aCx, nsPIDOMWindow* aWindow, uint8_t aTnf,
38 const Optional<Uint8Array>& aType,
39 const Optional<Uint8Array>& aId,
40 const Optional<Uint8Array>& aPlayload);
42 ~MozNDEFRecord();
44 nsIDOMWindow* GetParentObject() const
46 return mWindow;
49 virtual JSObject* WrapObject(JSContext* aCx) MOZ_OVERRIDE;
51 static already_AddRefed<MozNDEFRecord>
52 Constructor(const GlobalObject& aGlobal, uint8_t aTnf,
53 const Optional<Uint8Array>& aType,
54 const Optional<Uint8Array>& aId,
55 const Optional<Uint8Array>& aPayload, ErrorResult& aRv);
57 uint8_t Tnf() const
59 return mTnf;
62 void GetType(JSContext* cx, JS::MutableHandle<JSObject*> retval) const
64 if (mType) {
65 JS::ExposeObjectToActiveJS(mType);
67 retval.set(mType);
70 void GetId(JSContext* cx, JS::MutableHandle<JSObject*> retval) const
72 if (mId) {
73 JS::ExposeObjectToActiveJS(mId);
75 retval.set(mId);
78 void GetPayload(JSContext* cx, JS::MutableHandle<JSObject*> retval) const
80 if (mPayload) {
81 JS::ExposeObjectToActiveJS(mPayload);
83 retval.set(mPayload);
86 private:
87 MozNDEFRecord() MOZ_DELETE;
88 nsRefPtr<nsPIDOMWindow> mWindow;
89 void HoldData();
90 void DropData();
92 uint8_t mTnf;
93 JS::Heap<JSObject*> mType;
94 JS::Heap<JSObject*> mId;
95 JS::Heap<JSObject*> mPayload;
98 } // namespace dom
99 } // namespace mozilla
101 #endif // mozilla_dom_MozNDEFRecord_h__