From 47c2a3e93eff59fe2309917662093e44c5ab70cf Mon Sep 17 00:00:00 2001 From: Robert Greenwalt Date: Fri, 2 Jun 2017 14:54:16 -0700 Subject: [PATCH] Changed Locale in ServiceInfo to a list. EMBMS advertises all the locales the content is available for. Query currently out for how a client app selects the locale it wants, but this change reflects what the carrier gives out for info. Test: builds Change-Id: Ie2bb0f73784514d26eefb919649da761a379ea2b --- .../telephony/mbms/FileServiceInfo.java | 7 ++-- .../android/telephony/mbms/ServiceInfo.java | 39 +++++++++++++------ .../telephony/mbms/StreamingServiceInfo.java | 5 ++- 3 files changed, 35 insertions(+), 16 deletions(-) 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 =