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/. */
7 #include "mozilla/dom/TVUtils.h"
15 * Implementation of TVTunerData
18 NS_IMPL_ISUPPORTS(TVTunerData
, nsITVTunerData
)
20 TVTunerData::TVTunerData()
21 : mSupportedSourceTypes(nullptr)
26 TVTunerData::~TVTunerData()
28 if (mSupportedSourceTypes
) {
29 NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(mCount
, mSupportedSourceTypes
);
33 /* virtual */ NS_IMETHODIMP
34 TVTunerData::GetId(nsAString
& aId
)
40 /* virtual */ NS_IMETHODIMP
41 TVTunerData::SetId(const nsAString
& aId
)
44 return NS_ERROR_INVALID_ARG
;
51 /* virtual */ NS_IMETHODIMP
52 TVTunerData::GetSupportedSourceTypes(uint32_t* aCount
,
57 char** sourceTypes
= (mCount
> 0) ?
58 static_cast<char **>(NS_Alloc(mCount
* sizeof(char*))) :
60 for (uint32_t i
= 0; i
< mCount
; i
++) {
61 sourceTypes
[i
] = NS_strdup(mSupportedSourceTypes
[i
]);
64 *aSourceTypes
= sourceTypes
;
68 /* virtual */ NS_IMETHODIMP
69 TVTunerData::SetSupportedSourceTypes(uint32_t aCount
,
70 const char** aSourceTypes
)
73 return NS_ERROR_INVALID_ARG
;
75 NS_ENSURE_ARG_POINTER(aSourceTypes
);
77 for (uint32_t i
= 0; i
< aCount
; i
++) {
78 if (TVSourceType::EndGuard_
== ToTVSourceType(aSourceTypes
[i
])) {
79 return NS_ERROR_INVALID_ARG
;
83 if (mSupportedSourceTypes
) {
84 NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(mCount
, mSupportedSourceTypes
);
89 mSupportedSourceTypes
= (mCount
> 0) ?
90 static_cast<char **>(NS_Alloc(mCount
* sizeof(char*))) :
92 for (uint32_t i
= 0; i
< mCount
; i
++) {
93 mSupportedSourceTypes
[i
] = NS_strdup(aSourceTypes
[i
]);
101 * Implementation of TVChannelData
104 NS_IMPL_ISUPPORTS(TVChannelData
, nsITVChannelData
)
106 TVChannelData::TVChannelData()
107 : mIsEmergency(false)
112 TVChannelData::~TVChannelData()
116 /* virtual */ NS_IMETHODIMP
117 TVChannelData::GetNetworkId(nsAString
& aNetworkId
)
119 aNetworkId
= mNetworkId
;
123 /* virtual */ NS_IMETHODIMP
124 TVChannelData::SetNetworkId(const nsAString
& aNetworkId
)
126 if (aNetworkId
.IsEmpty()) {
127 return NS_ERROR_INVALID_ARG
;
130 mNetworkId
= aNetworkId
;
134 /* virtual */ NS_IMETHODIMP
135 TVChannelData::GetTransportStreamId(nsAString
& aTransportStreamId
)
137 aTransportStreamId
= mTransportStreamId
;
141 /* virtual */ NS_IMETHODIMP
142 TVChannelData::SetTransportStreamId(const nsAString
& aTransportStreamId
)
144 if (aTransportStreamId
.IsEmpty()) {
145 return NS_ERROR_INVALID_ARG
;
148 mTransportStreamId
= aTransportStreamId
;
152 /* virtual */ NS_IMETHODIMP
153 TVChannelData::GetServiceId(nsAString
& aServiceId
)
155 aServiceId
= mServiceId
;
159 /* virtual */ NS_IMETHODIMP
160 TVChannelData::SetServiceId(const nsAString
& aServiceId
)
162 if (aServiceId
.IsEmpty()) {
163 return NS_ERROR_INVALID_ARG
;
166 mServiceId
= aServiceId
;
170 /* virtual */ NS_IMETHODIMP
171 TVChannelData::GetType(nsAString
& aType
)
177 /* virtual */ NS_IMETHODIMP
178 TVChannelData::SetType(const nsAString
& aType
)
180 if (aType
.IsEmpty()) {
181 return NS_ERROR_INVALID_ARG
;
184 if (TVChannelType::EndGuard_
== ToTVChannelType(aType
)) {
185 return NS_ERROR_INVALID_ARG
;
192 /* virtual */ NS_IMETHODIMP
193 TVChannelData::GetNumber(nsAString
& aNumber
)
199 /* virtual */ NS_IMETHODIMP
200 TVChannelData::SetNumber(const nsAString
& aNumber
)
202 if (aNumber
.IsEmpty()) {
203 return NS_ERROR_INVALID_ARG
;
210 /* virtual */ NS_IMETHODIMP
211 TVChannelData::GetName(nsAString
& aName
)
217 /* virtual */ NS_IMETHODIMP
218 TVChannelData::SetName(const nsAString
& aName
)
220 if (aName
.IsEmpty()) {
221 return NS_ERROR_INVALID_ARG
;
228 /* virtual */ NS_IMETHODIMP
229 TVChannelData::GetIsEmergency(bool *aIsEmergency
)
231 *aIsEmergency
= mIsEmergency
;
235 /* virtual */ NS_IMETHODIMP
236 TVChannelData::SetIsEmergency(bool aIsEmergency
)
238 mIsEmergency
= aIsEmergency
;
242 /* virtual */ NS_IMETHODIMP
243 TVChannelData::GetIsFree(bool *aIsFree
)
249 /* virtual */ NS_IMETHODIMP
250 TVChannelData::SetIsFree(bool aIsFree
)
258 * Implementation of TVProgramData
261 NS_IMPL_ISUPPORTS(TVProgramData
, nsITVProgramData
)
263 TVProgramData::TVProgramData()
264 : mAudioLanguages(nullptr)
265 , mAudioLanguageCount(0)
266 , mSubtitleLanguages(nullptr)
267 , mSubtitleLanguageCount(0)
271 TVProgramData::~TVProgramData()
273 if (mAudioLanguages
) {
274 NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(mAudioLanguageCount
, mAudioLanguages
);
276 if (mSubtitleLanguages
) {
277 NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(mSubtitleLanguageCount
, mSubtitleLanguages
);
281 /* virtual */ NS_IMETHODIMP
282 TVProgramData::GetEventId(nsAString
& aEventId
)
288 /* virtual */ NS_IMETHODIMP
289 TVProgramData::SetEventId(const nsAString
& aEventId
)
291 if (aEventId
.IsEmpty()) {
292 return NS_ERROR_INVALID_ARG
;
299 /* virtual */ NS_IMETHODIMP
300 TVProgramData::GetTitle(nsAString
& aTitle
)
306 /* virtual */ NS_IMETHODIMP
307 TVProgramData::SetTitle(const nsAString
& aTitle
)
309 if (aTitle
.IsEmpty()) {
310 return NS_ERROR_INVALID_ARG
;
317 /* virtual */ NS_IMETHODIMP
318 TVProgramData::GetStartTime(uint64_t *aStartTime
)
320 *aStartTime
= mStartTime
;
324 /* virtual */ NS_IMETHODIMP
325 TVProgramData::SetStartTime(uint64_t aStartTime
)
327 mStartTime
= aStartTime
;
331 /* virtual */ NS_IMETHODIMP
332 TVProgramData::GetDuration(uint64_t *aDuration
)
334 *aDuration
= mDuration
;
338 /* virtual */ NS_IMETHODIMP
339 TVProgramData::SetDuration(uint64_t aDuration
)
341 mDuration
= aDuration
;
345 /* virtual */ NS_IMETHODIMP
346 TVProgramData::GetDescription(nsAString
& aDescription
)
348 aDescription
= mDescription
;
352 /* virtual */ NS_IMETHODIMP
353 TVProgramData::SetDescription(const nsAString
& aDescription
)
355 mDescription
= aDescription
;
359 /* virtual */ NS_IMETHODIMP
360 TVProgramData::GetRating(nsAString
& aRating
)
366 /* virtual */ NS_IMETHODIMP
367 TVProgramData::SetRating(const nsAString
& aRating
)
373 /* virtual */ NS_IMETHODIMP
374 TVProgramData::GetAudioLanguages(uint32_t* aCount
,
377 *aCount
= mAudioLanguageCount
;
379 char** languages
= (mAudioLanguageCount
> 0) ?
380 static_cast<char **>(NS_Alloc(mAudioLanguageCount
* sizeof(char*))) :
382 for (uint32_t i
= 0; i
< mAudioLanguageCount
; i
++) {
383 languages
[i
] = NS_strdup(mAudioLanguages
[i
]);
386 *aLanguages
= languages
;
390 /* virtual */ NS_IMETHODIMP
391 TVProgramData::SetAudioLanguages(uint32_t aCount
,
392 const char** aLanguages
)
395 NS_ENSURE_ARG_POINTER(aLanguages
);
398 if (mAudioLanguages
) {
399 NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(mAudioLanguageCount
, mAudioLanguages
);
402 mAudioLanguageCount
= aCount
;
404 mAudioLanguages
= (mAudioLanguageCount
> 0) ?
405 static_cast<char **>(NS_Alloc(mAudioLanguageCount
* sizeof(char*))) :
407 for (uint32_t i
= 0; i
< mAudioLanguageCount
; i
++) {
408 mAudioLanguages
[i
] = NS_strdup(aLanguages
[i
]);
414 /* virtual */ NS_IMETHODIMP
415 TVProgramData::GetSubtitleLanguages(uint32_t* aCount
,
418 *aCount
= mSubtitleLanguageCount
;
420 char** languages
= (mSubtitleLanguageCount
> 0) ?
421 static_cast<char **>(NS_Alloc(mSubtitleLanguageCount
* sizeof(char*))) :
423 for (uint32_t i
= 0; i
< mSubtitleLanguageCount
; i
++) {
424 languages
[i
] = NS_strdup(mSubtitleLanguages
[i
]);
427 *aLanguages
= languages
;
431 /* virtual */ NS_IMETHODIMP
432 TVProgramData::SetSubtitleLanguages(uint32_t aCount
,
433 const char** aLanguages
)
436 NS_ENSURE_ARG_POINTER(aLanguages
);
439 if (mSubtitleLanguages
) {
440 NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(mSubtitleLanguageCount
, mSubtitleLanguages
);
443 mSubtitleLanguageCount
= aCount
;
445 mSubtitleLanguages
= (mSubtitleLanguageCount
> 0) ?
446 static_cast<char **>(NS_Alloc(mSubtitleLanguageCount
* sizeof(char*))) :
448 for (uint32_t i
= 0; i
< mSubtitleLanguageCount
; i
++) {
449 mSubtitleLanguages
[i
] = NS_strdup(aLanguages
[i
]);
456 } // namespace mozilla