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 #include "MozNDEFRecord.h"
10 #include "mozilla/dom/MozNDEFRecordBinding.h"
11 #include "mozilla/HoldDropJSObjects.h"
12 #include "nsContentUtils.h"
19 NS_IMPL_CYCLE_COLLECTION_CLASS(MozNDEFRecord
)
21 NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(MozNDEFRecord
)
22 NS_IMPL_CYCLE_COLLECTION_UNLINK(mWindow
)
23 NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
25 NS_IMPL_CYCLE_COLLECTION_UNLINK_END
27 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(MozNDEFRecord
)
28 NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWindow
)
29 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS
30 NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
32 NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(MozNDEFRecord
)
33 NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mType
)
34 NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mId
)
35 NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mPayload
)
36 NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
37 NS_IMPL_CYCLE_COLLECTION_TRACE_END
39 NS_IMPL_CYCLE_COLLECTING_ADDREF(MozNDEFRecord
)
40 NS_IMPL_CYCLE_COLLECTING_RELEASE(MozNDEFRecord
)
41 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(MozNDEFRecord
)
42 NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
43 NS_INTERFACE_MAP_ENTRY(nsISupports
)
47 MozNDEFRecord::HoldData()
49 mozilla::HoldJSObjects(this);
53 MozNDEFRecord::DropData()
64 mozilla::DropJSObjects(this);
68 already_AddRefed
<MozNDEFRecord
>
69 MozNDEFRecord::Constructor(const GlobalObject
& aGlobal
,
71 const Optional
<Uint8Array
>& aType
,
72 const Optional
<Uint8Array
>& aId
,
73 const Optional
<Uint8Array
>& aPayload
,
76 nsCOMPtr
<nsPIDOMWindow
> win
= do_QueryInterface(aGlobal
.GetAsSupports());
78 aRv
.Throw(NS_ERROR_FAILURE
);
82 nsRefPtr
<MozNDEFRecord
> ndefrecord
= new MozNDEFRecord(aGlobal
.Context(),
83 win
, aTnf
, aType
, aId
,
86 aRv
.Throw(NS_ERROR_FAILURE
);
89 return ndefrecord
.forget();
92 MozNDEFRecord::MozNDEFRecord(JSContext
* aCx
, nsPIDOMWindow
* aWindow
,
94 const Optional
<Uint8Array
>& aType
,
95 const Optional
<Uint8Array
>& aId
,
96 const Optional
<Uint8Array
>& aPayload
)
99 mWindow
= aWindow
; // For GetParentObject()
101 if (aType
.WasPassed()) {
102 aType
.Value().ComputeLengthAndData();
103 mType
= Uint8Array::Create(aCx
, this, aType
.Value().Length(), aType
.Value().Data());
106 if (aId
.WasPassed()) {
107 aId
.Value().ComputeLengthAndData();
108 mId
= Uint8Array::Create(aCx
, this, aId
.Value().Length(), aId
.Value().Data());
111 if (aPayload
.WasPassed()) {
112 aPayload
.Value().ComputeLengthAndData();
113 mPayload
= Uint8Array::Create(aCx
, this, aPayload
.Value().Length(), aPayload
.Value().Data());
120 MozNDEFRecord::~MozNDEFRecord()
126 MozNDEFRecord::WrapObject(JSContext
* aCx
)
128 return MozNDEFRecordBinding::Wrap(aCx
, this);
132 } // namespace mozilla