diff --git a/telephony/java/android/telephony/mbms/FileServiceInfo.java b/telephony/java/android/telephony/mbms/FileServiceInfo.java index 8bda3707ef544..8e890fd580e37 100644 --- a/telephony/java/android/telephony/mbms/FileServiceInfo.java +++ b/telephony/java/android/telephony/mbms/FileServiceInfo.java @@ -32,9 +32,10 @@ import java.util.Map; public class FileServiceInfo extends ServiceInfo implements Parcelable { public List files; - public FileServiceInfo(Map newNames, String newClassName, Locale newLocale, - String newServiceId, Date start, Date end, List newFiles) { - super(newNames, newClassName, newLocale, newServiceId, start, end); + public FileServiceInfo(Map newNames, String newClassName, + List newLocales, String newServiceId, Date start, Date end, + List newFiles) { + super(newNames, newClassName, newLocales, newServiceId, start, end); files = new ArrayList(newFiles); } diff --git a/telephony/java/android/telephony/mbms/ServiceInfo.java b/telephony/java/android/telephony/mbms/ServiceInfo.java index f167f0ab228e5..b5675b2576dc3 100644 --- a/telephony/java/android/telephony/mbms/ServiceInfo.java +++ b/telephony/java/android/telephony/mbms/ServiceInfo.java @@ -20,8 +20,10 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; +import java.util.ArrayList; import java.util.Date; import java.util.HashMap; +import java.util.List; import java.util.Locale; import java.util.Map; import java.util.Set; @@ -44,9 +46,9 @@ public class ServiceInfo implements Parcelable { final String className; /** - * The language for this service content + * The languages available for this service content */ - final Locale locale; + final List locales; /** * The carrier's identifier for the service. @@ -64,20 +66,23 @@ public class ServiceInfo implements Parcelable { final Date sessionEndTime; - public ServiceInfo(Map newNames, String newClassName, Locale newLocale, + public ServiceInfo(Map newNames, String newClassName, List newLocales, String newServiceId, Date start, Date end) { if (newNames == null || newNames.isEmpty() || TextUtils.isEmpty(newClassName) - || newLocale == null || TextUtils.isEmpty(newServiceId) + || newLocales == null || newLocales.isEmpty() || TextUtils.isEmpty(newServiceId) || start == null || end == null) { throw new IllegalArgumentException("Bad ServiceInfo construction"); } if (newNames.size() > MAP_LIMIT) { - throw new RuntimeException("bad map length" + newNames.size()); + throw new RuntimeException("bad map length " + newNames.size()); + } + if (newLocales.size() > MAP_LIMIT) { + throw new RuntimeException("bad locales length " + newLocales.size()); } names = new HashMap(newNames.size()); names.putAll(newNames); className = newClassName; - locale = (Locale)newLocale.clone(); + locales = new ArrayList(newLocales); serviceId = newServiceId; sessionStartTime = (Date)start.clone(); sessionEndTime = (Date)end.clone(); @@ -99,7 +104,7 @@ public class ServiceInfo implements Parcelable { ServiceInfo(Parcel in) { int mapCount = in.readInt(); if (mapCount > MAP_LIMIT || mapCount < 0) { - throw new RuntimeException("bad map length" + mapCount); + throw new RuntimeException("bad map length" + mapCount); } names = new HashMap(mapCount); while (mapCount-- > 0) { @@ -108,7 +113,15 @@ public class ServiceInfo implements Parcelable { names.put(locale, name); } className = in.readString(); - locale = (java.util.Locale) in.readSerializable(); + int localesCount = in.readInt(); + if (localesCount > MAP_LIMIT || localesCount < 0) { + throw new RuntimeException("bad locale length " + localesCount); + } + locales = new ArrayList(localesCount); + while (localesCount-- > 0) { + Locale l = (java.util.Locale) in.readSerializable(); + locales.add(l); + } serviceId = in.readString(); sessionStartTime = (java.util.Date) in.readSerializable(); sessionEndTime = (java.util.Date) in.readSerializable(); @@ -123,7 +136,11 @@ public class ServiceInfo implements Parcelable { dest.writeString(names.get(l)); } dest.writeString(className); - dest.writeSerializable(locale); + int localesCount = locales.size(); + dest.writeInt(localesCount); + for (Locale l : locales) { + dest.writeSerializable(l); + } dest.writeString(serviceId); dest.writeSerializable(sessionStartTime); dest.writeSerializable(sessionEndTime); @@ -142,8 +159,8 @@ public class ServiceInfo implements Parcelable { return className; } - public Locale getLocale() { - return locale; + public List getLocales() { + return locales; } public String getServiceId() { diff --git a/telephony/java/android/telephony/mbms/StreamingServiceInfo.java b/telephony/java/android/telephony/mbms/StreamingServiceInfo.java index f559585bea2c5..77ce3bbd696e4 100644 --- a/telephony/java/android/telephony/mbms/StreamingServiceInfo.java +++ b/telephony/java/android/telephony/mbms/StreamingServiceInfo.java @@ -20,6 +20,7 @@ import android.os.Parcel; import android.os.Parcelable; import java.util.Date; +import java.util.List; import java.util.Locale; import java.util.Map; @@ -31,8 +32,8 @@ import java.util.Map; public class StreamingServiceInfo extends ServiceInfo implements Parcelable { public StreamingServiceInfo(Map newNames, String newClassName, - Locale newLocale, String newServiceId, Date start, Date end) { - super(newNames, newClassName, newLocale, newServiceId, start, end); + List newLocales, String newServiceId, Date start, Date end) { + super(newNames, newClassName, newLocales, newServiceId, start, end); } public static final Parcelable.Creator CREATOR =