Make Parcelable classes final, API cleanup.

Remove some Context methods that leaked through.  Add lint rule to
recommend using List<? extends Parcelable> instead of Parcelable[].

Bug: 27932224, 27930145, 27932911
Change-Id: Ia302de46cdb0c5101fa175a09316df91aeefcf0d
This commit is contained in:
Jeff Sharkey
2016-03-30 21:47:16 -06:00
parent 60328375c8
commit 70168dde6e
8 changed files with 23 additions and 20 deletions

View File

@@ -8222,8 +8222,6 @@ package android.content {
method public java.lang.String getPackageResourcePath();
method public android.content.res.Resources getResources();
method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
method public java.io.File getSharedPreferencesPath(java.lang.String);
method public java.lang.Object getSystemService(java.lang.String);
method public java.lang.String getSystemServiceName(java.lang.Class<?>);
method public android.content.res.Resources.Theme getTheme();
@@ -9991,7 +9989,7 @@ package android.content.pm {
field public java.lang.String permission;
}
public class ShortcutInfo implements android.os.Parcelable {
public final class ShortcutInfo implements android.os.Parcelable {
method public int describeContents();
method public android.content.ComponentName getActivityComponent();
method public android.os.PersistableBundle getExtras();
@@ -29481,7 +29479,7 @@ package android.os.health {
method public android.os.health.HealthStats[] takeUidSnapshots(int[]);
}
public class TimerStat implements android.os.Parcelable {
public final class TimerStat implements android.os.Parcelable {
ctor public TimerStat();
ctor public TimerStat(int, long);
ctor public TimerStat(android.os.Parcel);
@@ -37954,8 +37952,6 @@ package android.test.mock {
method public java.lang.String getPackageResourcePath();
method public android.content.res.Resources getResources();
method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
method public java.io.File getSharedPreferencesPath(java.lang.String);
method public java.lang.Object getSystemService(java.lang.String);
method public java.lang.String getSystemServiceName(java.lang.Class<?>);
method public android.content.res.Resources.Theme getTheme();

View File

@@ -8532,8 +8532,6 @@ package android.content {
method public java.lang.String getPackageResourcePath();
method public android.content.res.Resources getResources();
method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
method public java.io.File getSharedPreferencesPath(java.lang.String);
method public java.lang.Object getSystemService(java.lang.String);
method public java.lang.String getSystemServiceName(java.lang.Class<?>);
method public android.content.res.Resources.Theme getTheme();
@@ -10389,7 +10387,7 @@ package android.content.pm {
field public java.lang.String permission;
}
public class ShortcutInfo implements android.os.Parcelable {
public final class ShortcutInfo implements android.os.Parcelable {
method public int describeContents();
method public android.content.ComponentName getActivityComponent();
method public android.os.PersistableBundle getExtras();
@@ -31794,7 +31792,7 @@ package android.os.health {
method public android.os.health.HealthStats[] takeUidSnapshots(int[]);
}
public class TimerStat implements android.os.Parcelable {
public final class TimerStat implements android.os.Parcelable {
ctor public TimerStat();
ctor public TimerStat(int, long);
ctor public TimerStat(android.os.Parcel);
@@ -40670,8 +40668,6 @@ package android.test.mock {
method public java.lang.String getPackageResourcePath();
method public android.content.res.Resources getResources();
method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
method public java.io.File getSharedPreferencesPath(java.lang.String);
method public java.lang.Object getSystemService(java.lang.String);
method public java.lang.String getSystemServiceName(java.lang.Class<?>);
method public android.content.res.Resources.Theme getTheme();

View File

@@ -8228,8 +8228,6 @@ package android.content {
method public java.lang.String getPackageResourcePath();
method public android.content.res.Resources getResources();
method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
method public java.io.File getSharedPreferencesPath(java.lang.String);
method public java.lang.Object getSystemService(java.lang.String);
method public java.lang.String getSystemServiceName(java.lang.Class<?>);
method public android.content.res.Resources.Theme getTheme();
@@ -10001,7 +9999,7 @@ package android.content.pm {
field public java.lang.String permission;
}
public class ShortcutInfo implements android.os.Parcelable {
public final class ShortcutInfo implements android.os.Parcelable {
method public int describeContents();
method public android.content.ComponentName getActivityComponent();
method public android.os.PersistableBundle getExtras();
@@ -29547,7 +29545,7 @@ package android.os.health {
method public android.os.health.HealthStats[] takeUidSnapshots(int[]);
}
public class TimerStat implements android.os.Parcelable {
public final class TimerStat implements android.os.Parcelable {
ctor public TimerStat();
ctor public TimerStat(int, long);
ctor public TimerStat(android.os.Parcel);
@@ -38026,8 +38024,6 @@ package android.test.mock {
method public java.lang.String getPackageResourcePath();
method public android.content.res.Resources getResources();
method public android.content.SharedPreferences getSharedPreferences(java.lang.String, int);
method public android.content.SharedPreferences getSharedPreferences(java.io.File, int);
method public java.io.File getSharedPreferencesPath(java.lang.String);
method public java.lang.Object getSystemService(java.lang.String);
method public java.lang.String getSystemServiceName(java.lang.Class<?>);
method public android.content.res.Resources.Theme getTheme();

View File

@@ -164,6 +164,7 @@ public class ContextWrapper extends Context {
return mBase.getSharedPreferences(name, mode);
}
/** @removed */
@Override
public SharedPreferences getSharedPreferences(File file, int mode) {
return mBase.getSharedPreferences(file, mode);
@@ -201,6 +202,7 @@ public class ContextWrapper extends Context {
return mBase.getFileStreamPath(name);
}
/** @removed */
@Override
public File getSharedPreferencesPath(String name) {
return mBase.getSharedPreferencesPath(name);

View File

@@ -47,7 +47,7 @@ import java.lang.annotation.RetentionPolicy;
*
* We will disallow byte[] icons, because they can easily go over binder size limit.
*/
public class ShortcutInfo implements Parcelable {
public final class ShortcutInfo implements Parcelable {
/* @hide */
public static final int FLAG_DYNAMIC = 1 << 0;

View File

@@ -27,7 +27,7 @@ import android.os.Parcelable;
* object to be constructed, even internally, but the getTimers method on
* {@link android.os.health.HealthStats} does require TimerStat objects.
*/
public class TimerStat implements Parcelable {
public final class TimerStat implements Parcelable {
private int mCount;
private long mTime;

View File

@@ -145,6 +145,7 @@ public class MockContext extends Context {
throw new UnsupportedOperationException();
}
/** @removed */
@Override
public SharedPreferences getSharedPreferences(File file, int mode) {
throw new UnsupportedOperationException();
@@ -180,6 +181,7 @@ public class MockContext extends Context {
throw new UnsupportedOperationException();
}
/** @removed */
@Override
public File getSharedPreferencesPath(String name) {
throw new UnsupportedOperationException();

View File

@@ -980,6 +980,16 @@ def verify_files(clazz):
warn(clazz, m, "M10", "Methods accepting File should also accept FileDescriptor or streams")
def verify_manager_list(clazz):
"""Verifies that managers return List<? extends Parcelable> instead of arrays."""
if not clazz.name.endswith("Manager"): return
for m in clazz.methods:
if m.typ.startswith("android.") and m.typ.endswith("[]"):
warn(clazz, m, None, "Methods should return List<? extends Parcelable> instead of Parcelable[] to support ParceledListSlice under the hood")
def examine_clazz(clazz):
"""Find all style issues in the given class."""
if clazz.pkg.name.startswith("java"): return
@@ -1025,6 +1035,7 @@ def examine_clazz(clazz):
verify_listener_last(clazz)
verify_resource_names(clazz)
verify_files(clazz)
verify_manager_list(clazz)
def examine_stream(stream):