Bumping manifests a=b2g-bump
[gecko.git] / dom / tv / TVTypes.cpp
blobbd5c103fabaa3684bc644383fcb2bba98aa6ab4f
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"
8 #include "nsCRTGlue.h"
9 #include "TVTypes.h"
11 namespace mozilla {
12 namespace dom {
15 * Implementation of TVTunerData
18 NS_IMPL_ISUPPORTS(TVTunerData, nsITVTunerData)
20 TVTunerData::TVTunerData()
21 : mSupportedSourceTypes(nullptr)
22 , mCount(0)
26 TVTunerData::~TVTunerData()
28 if (mSupportedSourceTypes) {
29 NS_FREE_XPCOM_ALLOCATED_POINTER_ARRAY(mCount, mSupportedSourceTypes);
33 /* virtual */ NS_IMETHODIMP
34 TVTunerData::GetId(nsAString& aId)
36 aId = mId;
37 return NS_OK;
40 /* virtual */ NS_IMETHODIMP
41 TVTunerData::SetId(const nsAString& aId)
43 if (aId.IsEmpty()) {
44 return NS_ERROR_INVALID_ARG;
47 mId = aId;
48 return NS_OK;
51 /* virtual */ NS_IMETHODIMP
52 TVTunerData::GetSupportedSourceTypes(uint32_t* aCount,
53 char*** aSourceTypes)
55 *aCount = mCount;
57 char** sourceTypes = (mCount > 0) ?
58 static_cast<char **>(NS_Alloc(mCount * sizeof(char*))) :
59 nullptr;
60 for (uint32_t i = 0; i < mCount; i++) {
61 sourceTypes[i] = NS_strdup(mSupportedSourceTypes[i]);
64 *aSourceTypes = sourceTypes;
65 return NS_OK;
68 /* virtual */ NS_IMETHODIMP
69 TVTunerData::SetSupportedSourceTypes(uint32_t aCount,
70 const char** aSourceTypes)
72 if (aCount == 0) {
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);
87 mCount = aCount;
89 mSupportedSourceTypes = (mCount > 0) ?
90 static_cast<char **>(NS_Alloc(mCount * sizeof(char*))) :
91 nullptr;
92 for (uint32_t i = 0; i < mCount; i++) {
93 mSupportedSourceTypes[i] = NS_strdup(aSourceTypes[i]);
96 return NS_OK;
101 * Implementation of TVChannelData
104 NS_IMPL_ISUPPORTS(TVChannelData, nsITVChannelData)
106 TVChannelData::TVChannelData()
107 : mIsEmergency(false)
108 , mIsFree(false)
112 TVChannelData::~TVChannelData()
116 /* virtual */ NS_IMETHODIMP
117 TVChannelData::GetNetworkId(nsAString& aNetworkId)
119 aNetworkId = mNetworkId;
120 return NS_OK;
123 /* virtual */ NS_IMETHODIMP
124 TVChannelData::SetNetworkId(const nsAString& aNetworkId)
126 if (aNetworkId.IsEmpty()) {
127 return NS_ERROR_INVALID_ARG;
130 mNetworkId = aNetworkId;
131 return NS_OK;
134 /* virtual */ NS_IMETHODIMP
135 TVChannelData::GetTransportStreamId(nsAString& aTransportStreamId)
137 aTransportStreamId = mTransportStreamId;
138 return NS_OK;
141 /* virtual */ NS_IMETHODIMP
142 TVChannelData::SetTransportStreamId(const nsAString& aTransportStreamId)
144 if (aTransportStreamId.IsEmpty()) {
145 return NS_ERROR_INVALID_ARG;
148 mTransportStreamId = aTransportStreamId;
149 return NS_OK;
152 /* virtual */ NS_IMETHODIMP
153 TVChannelData::GetServiceId(nsAString& aServiceId)
155 aServiceId = mServiceId;
156 return NS_OK;
159 /* virtual */ NS_IMETHODIMP
160 TVChannelData::SetServiceId(const nsAString& aServiceId)
162 if (aServiceId.IsEmpty()) {
163 return NS_ERROR_INVALID_ARG;
166 mServiceId = aServiceId;
167 return NS_OK;
170 /* virtual */ NS_IMETHODIMP
171 TVChannelData::GetType(nsAString& aType)
173 aType = mType;
174 return NS_OK;
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;
188 mType = aType;
189 return NS_OK;
192 /* virtual */ NS_IMETHODIMP
193 TVChannelData::GetNumber(nsAString& aNumber)
195 aNumber = mNumber;
196 return NS_OK;
199 /* virtual */ NS_IMETHODIMP
200 TVChannelData::SetNumber(const nsAString& aNumber)
202 if (aNumber.IsEmpty()) {
203 return NS_ERROR_INVALID_ARG;
206 mNumber = aNumber;
207 return NS_OK;
210 /* virtual */ NS_IMETHODIMP
211 TVChannelData::GetName(nsAString& aName)
213 aName = mName;
214 return NS_OK;
217 /* virtual */ NS_IMETHODIMP
218 TVChannelData::SetName(const nsAString& aName)
220 if (aName.IsEmpty()) {
221 return NS_ERROR_INVALID_ARG;
224 mName = aName;
225 return NS_OK;
228 /* virtual */ NS_IMETHODIMP
229 TVChannelData::GetIsEmergency(bool *aIsEmergency)
231 *aIsEmergency = mIsEmergency;
232 return NS_OK;
235 /* virtual */ NS_IMETHODIMP
236 TVChannelData::SetIsEmergency(bool aIsEmergency)
238 mIsEmergency = aIsEmergency;
239 return NS_OK;
242 /* virtual */ NS_IMETHODIMP
243 TVChannelData::GetIsFree(bool *aIsFree)
245 *aIsFree = mIsFree;
246 return NS_OK;
249 /* virtual */ NS_IMETHODIMP
250 TVChannelData::SetIsFree(bool aIsFree)
252 mIsFree = aIsFree;
253 return NS_OK;
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)
284 aEventId = mEventId;
285 return NS_OK;
288 /* virtual */ NS_IMETHODIMP
289 TVProgramData::SetEventId(const nsAString& aEventId)
291 if (aEventId.IsEmpty()) {
292 return NS_ERROR_INVALID_ARG;
295 mEventId = aEventId;
296 return NS_OK;
299 /* virtual */ NS_IMETHODIMP
300 TVProgramData::GetTitle(nsAString& aTitle)
302 aTitle = mTitle;
303 return NS_OK;
306 /* virtual */ NS_IMETHODIMP
307 TVProgramData::SetTitle(const nsAString& aTitle)
309 if (aTitle.IsEmpty()) {
310 return NS_ERROR_INVALID_ARG;
313 mTitle = aTitle;
314 return NS_OK;
317 /* virtual */ NS_IMETHODIMP
318 TVProgramData::GetStartTime(uint64_t *aStartTime)
320 *aStartTime = mStartTime;
321 return NS_OK;
324 /* virtual */ NS_IMETHODIMP
325 TVProgramData::SetStartTime(uint64_t aStartTime)
327 mStartTime = aStartTime;
328 return NS_OK;
331 /* virtual */ NS_IMETHODIMP
332 TVProgramData::GetDuration(uint64_t *aDuration)
334 *aDuration = mDuration;
335 return NS_OK;
338 /* virtual */ NS_IMETHODIMP
339 TVProgramData::SetDuration(uint64_t aDuration)
341 mDuration = aDuration;
342 return NS_OK;
345 /* virtual */ NS_IMETHODIMP
346 TVProgramData::GetDescription(nsAString& aDescription)
348 aDescription = mDescription;
349 return NS_OK;
352 /* virtual */ NS_IMETHODIMP
353 TVProgramData::SetDescription(const nsAString& aDescription)
355 mDescription = aDescription;
356 return NS_OK;
359 /* virtual */ NS_IMETHODIMP
360 TVProgramData::GetRating(nsAString& aRating)
362 aRating = mRating;
363 return NS_OK;
366 /* virtual */ NS_IMETHODIMP
367 TVProgramData::SetRating(const nsAString& aRating)
369 mRating = aRating;
370 return NS_OK;
373 /* virtual */ NS_IMETHODIMP
374 TVProgramData::GetAudioLanguages(uint32_t* aCount,
375 char*** aLanguages)
377 *aCount = mAudioLanguageCount;
379 char** languages = (mAudioLanguageCount > 0) ?
380 static_cast<char **>(NS_Alloc(mAudioLanguageCount * sizeof(char*))) :
381 nullptr;
382 for (uint32_t i = 0; i < mAudioLanguageCount; i++) {
383 languages[i] = NS_strdup(mAudioLanguages[i]);
386 *aLanguages = languages;
387 return NS_OK;
390 /* virtual */ NS_IMETHODIMP
391 TVProgramData::SetAudioLanguages(uint32_t aCount,
392 const char** aLanguages)
394 if (aCount > 0) {
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*))) :
406 nullptr;
407 for (uint32_t i = 0; i < mAudioLanguageCount; i++) {
408 mAudioLanguages[i] = NS_strdup(aLanguages[i]);
411 return NS_OK;
414 /* virtual */ NS_IMETHODIMP
415 TVProgramData::GetSubtitleLanguages(uint32_t* aCount,
416 char*** aLanguages)
418 *aCount = mSubtitleLanguageCount;
420 char** languages = (mSubtitleLanguageCount > 0) ?
421 static_cast<char **>(NS_Alloc(mSubtitleLanguageCount * sizeof(char*))) :
422 nullptr;
423 for (uint32_t i = 0; i < mSubtitleLanguageCount; i++) {
424 languages[i] = NS_strdup(mSubtitleLanguages[i]);
427 *aLanguages = languages;
428 return NS_OK;
431 /* virtual */ NS_IMETHODIMP
432 TVProgramData::SetSubtitleLanguages(uint32_t aCount,
433 const char** aLanguages)
435 if (aCount > 0) {
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*))) :
447 nullptr;
448 for (uint32_t i = 0; i < mSubtitleLanguageCount; i++) {
449 mSubtitleLanguages[i] = NS_strdup(aLanguages[i]);
452 return NS_OK;
455 } // namespace dom
456 } // namespace mozilla