OSDN Git Service

Changed Locale in ServiceInfo to a list.
authorRobert Greenwalt <rgreenwalt@google.com>
Fri, 2 Jun 2017 21:54:16 +0000 (14:54 -0700)
committerRobert Greenwalt <rgreenwalt@google.com>
Fri, 2 Jun 2017 21:54:16 +0000 (14:54 -0700)
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/java/android/telephony/mbms/FileServiceInfo.java
telephony/java/android/telephony/mbms/ServiceInfo.java
telephony/java/android/telephony/mbms/StreamingServiceInfo.java

index 8bda370..8e890fd 100644 (file)
@@ -32,9 +32,10 @@ import java.util.Map;
 public class FileServiceInfo extends ServiceInfo implements Parcelable {
     public List<FileInfo> files;
 
-    public FileServiceInfo(Map<Locale, String> newNames, String newClassName, Locale newLocale,
-            String newServiceId, Date start, Date end, List<FileInfo> newFiles) {
-        super(newNames, newClassName, newLocale, newServiceId, start, end);
+    public FileServiceInfo(Map<Locale, String> newNames, String newClassName,
+            List<Locale> newLocales, String newServiceId, Date start, Date end,
+            List<FileInfo> newFiles) {
+        super(newNames, newClassName, newLocales, newServiceId, start, end);
         files = new ArrayList(newFiles);
     }
 
index f167f0a..b5675b2 100644 (file)
@@ -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<Locale> locales;
 
     /**
      * The carrier's identifier for the service.
@@ -64,20 +66,23 @@ public class ServiceInfo implements Parcelable {
     final Date sessionEndTime;
 
 
-    public ServiceInfo(Map<Locale, String> newNames, String newClassName, Locale newLocale,
+    public ServiceInfo(Map<Locale, String> newNames, String newClassName, List<Locale> 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<Locale>(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<Locale> getLocales() {
+        return locales;
     }
 
     public String getServiceId() {
index f559585..77ce3bb 100644 (file)
@@ -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<Locale, String> newNames, String newClassName,
-            Locale newLocale, String newServiceId, Date start, Date end) {
-        super(newNames, newClassName, newLocale, newServiceId, start, end);
+            List<Locale> newLocales, String newServiceId, Date start, Date end) {
+        super(newNames, newClassName, newLocales, newServiceId, start, end);
     }
 
     public static final Parcelable.Creator<StreamingServiceInfo> CREATOR =