From 0c28d43fe1423198f99a0518887b69a4205bc6f7 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 9 Jun 2017 11:37:02 -0600 Subject: [PATCH] Hide APIs not intended to ship in DR. This CL will be reverted once it merges into the next release branch to re-introduce the proposed APIs. This CL also makes the following code changes to preserve API compatibility: -- It keeps the recently added RemoteViews.clone() synchronized logic intact, but moves it inside the method to avoid changing the API signature. -- It reverts the RttCall.read() behavior to the oc-dev logic, since we can't throw IOException until we get an API level bump. (The original logic returned null instead of throwing.) Test: builds, boots Bug: 62427252, 62431886, 62427329 Bug: 62468911, 62431162, 62428935, 62429096 Bug: 37290820, 37359238, 36886243 Bug: 30143923, 35761231, 62192626, 29829689 Change-Id: I83d723f598cb0ee1fe198e65debd86ef7fd0420c --- api/current.txt | 17 +---------- api/system-current.txt | 27 +---------------- api/test-current.txt | 7 +---- .../app/admin/DevicePolicyManager.java | 1 - .../android/content/pm/PackageManager.java | 4 +-- core/java/android/view/InputDevice.java | 1 + .../accessibility/AccessibilityManager.java | 5 ++++ .../AccessibilityRequestPreparer.java | 3 ++ core/java/android/webkit/WebView.java | 2 ++ .../webkit/WebViewFactoryProvider.java | 8 +++-- core/java/android/widget/RemoteViews.java | 30 ++++++++++--------- telecomm/java/android/telecom/Call.java | 18 +++++++---- 12 files changed, 51 insertions(+), 72 deletions(-) diff --git a/api/current.txt b/api/current.txt index a71c63ae598c2..05d9b9bf5a671 100644 --- a/api/current.txt +++ b/api/current.txt @@ -10712,7 +10712,6 @@ package android.content.pm { field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce"; field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef"; field public static final java.lang.String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep"; - field public static final java.lang.String FEATURE_PC = "android.hardware.type.pc"; field public static final java.lang.String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture"; field public static final java.lang.String FEATURE_PRINTING = "android.software.print"; field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape"; @@ -10754,7 +10753,6 @@ package android.content.pm { field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; field public static final java.lang.String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware"; field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct"; - field public static final java.lang.String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; field public static final int GET_ACTIVITIES = 1; // 0x1 field public static final int GET_CONFIGURATIONS = 16384; // 0x4000 field public static final deprecated int GET_DISABLED_COMPONENTS = 512; // 0x200 @@ -38673,8 +38671,7 @@ package android.telecom { public static final class Call.RttCall { method public int getRttAudioMode(); - method public java.lang.String read() throws java.io.IOException; - method public java.lang.String readImmediately() throws java.io.IOException; + method public java.lang.String read(); method public void setRttMode(int); method public void write(java.lang.String) throws java.io.IOException; field public static final int RTT_MODE_FULL = 1; // 0x1 @@ -43965,7 +43962,6 @@ package android.view { method public android.os.Vibrator getVibrator(); method public boolean[] hasKeys(int...); method public boolean hasMicrophone(); - method public boolean isEnabled(); method public boolean isVirtual(); method public boolean supportsSource(int); method public void writeToParcel(android.os.Parcel, int); @@ -46955,7 +46951,6 @@ package android.view.accessibility { } public final class AccessibilityManager { - method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public void addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, android.os.Handler); method public boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); @@ -46966,7 +46961,6 @@ package android.view.accessibility { method public void interrupt(); method public boolean isEnabled(); method public boolean isTouchExplorationEnabled(); - method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent); @@ -47283,13 +47277,6 @@ package android.view.accessibility { method public void setToIndex(int); } - public abstract class AccessibilityRequestPreparer { - ctor public AccessibilityRequestPreparer(android.view.View, int); - method public android.view.View getView(); - method public abstract void onPrepareExtraData(int, java.lang.String, android.os.Bundle, android.os.Message); - field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1 - } - public final class AccessibilityWindowInfo implements android.os.Parcelable { method public int describeContents(); method public android.view.accessibility.AccessibilityNodeInfo getAnchor(); @@ -48811,7 +48798,6 @@ package android.webkit { method public void goBack(); method public void goBackOrForward(int); method public void goForward(); - method public static void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void invokeZoomPicker(); method public boolean isPrivateBrowsingEnabled(); method public void loadData(java.lang.String, java.lang.String, java.lang.String); @@ -48856,7 +48842,6 @@ package android.webkit { method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); method public deprecated boolean showFindDialog(java.lang.String, boolean); - method public static void shutdownSafeBrowsing(); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); diff --git a/api/system-current.txt b/api/system-current.txt index fbe210925ab3d..6e27ffbf89678 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -6679,7 +6679,6 @@ package android.app.admin { field public static final java.lang.String ACTION_SET_NEW_PASSWORD = "android.app.action.SET_NEW_PASSWORD"; field public static final java.lang.String ACTION_SET_PROFILE_OWNER = "android.app.action.SET_PROFILE_OWNER"; field public static final java.lang.String ACTION_START_ENCRYPTION = "android.app.action.START_ENCRYPTION"; - field public static final java.lang.String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE"; field public static final java.lang.String ACTION_SYSTEM_UPDATE_POLICY_CHANGED = "android.app.action.SYSTEM_UPDATE_POLICY_CHANGED"; field public static final java.lang.String DELEGATION_APP_RESTRICTIONS = "delegation-app-restrictions"; field public static final java.lang.String DELEGATION_BLOCK_UNINSTALL = "delegation-block-uninstall"; @@ -11336,7 +11335,6 @@ package android.content.pm { method public abstract java.util.List queryIntentContentProviders(android.content.Intent, int); method public abstract java.util.List queryIntentServices(android.content.Intent, int); method public abstract java.util.List queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public abstract void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback); method public abstract void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); method public abstract deprecated void removePackageFromPreferred(java.lang.String); method public abstract void removePermission(java.lang.String); @@ -11415,7 +11413,6 @@ package android.content.pm { field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce"; field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef"; field public static final java.lang.String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep"; - field public static final java.lang.String FEATURE_PC = "android.hardware.type.pc"; field public static final java.lang.String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture"; field public static final java.lang.String FEATURE_PRINTING = "android.software.print"; field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape"; @@ -11458,7 +11455,6 @@ package android.content.pm { field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; field public static final java.lang.String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware"; field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct"; - field public static final java.lang.String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; field public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT = 32; // 0x20 field public static final int FLAG_PERMISSION_POLICY_FIXED = 4; // 0x4 field public static final int FLAG_PERMISSION_REVIEW_REQUIRED = 64; // 0x40 @@ -11558,11 +11554,6 @@ package android.content.pm { field public static final int VERSION_CODE_HIGHEST = -1; // 0xffffffff } - public static abstract class PackageManager.DexModuleRegisterCallback { - ctor public PackageManager.DexModuleRegisterCallback(); - method public abstract void onDexModuleRegistered(java.lang.String, boolean, java.lang.String); - } - public static class PackageManager.NameNotFoundException extends android.util.AndroidException { ctor public PackageManager.NameNotFoundException(); ctor public PackageManager.NameNotFoundException(java.lang.String); @@ -41917,8 +41908,7 @@ package android.telecom { public static final class Call.RttCall { method public int getRttAudioMode(); - method public java.lang.String read() throws java.io.IOException; - method public java.lang.String readImmediately() throws java.io.IOException; + method public java.lang.String read(); method public void setRttMode(int); method public void write(java.lang.String) throws java.io.IOException; field public static final int RTT_MODE_FULL = 1; // 0x1 @@ -44389,7 +44379,6 @@ package android.test.mock { method public java.util.List queryIntentContentProviders(android.content.Intent, int); method public java.util.List queryIntentServices(android.content.Intent, int); method public java.util.List queryPermissionsByGroup(java.lang.String, int) throws android.content.pm.PackageManager.NameNotFoundException; - method public void registerDexModule(java.lang.String, android.content.pm.PackageManager.DexModuleRegisterCallback); method public void removeOnPermissionsChangeListener(android.content.pm.PackageManager.OnPermissionsChangedListener); method public void removePackageFromPreferred(java.lang.String); method public void removePermission(java.lang.String); @@ -47512,7 +47501,6 @@ package android.view { method public android.os.Vibrator getVibrator(); method public boolean[] hasKeys(int...); method public boolean hasMicrophone(); - method public boolean isEnabled(); method public boolean isVirtual(); method public boolean supportsSource(int); method public void writeToParcel(android.os.Parcel, int); @@ -50505,7 +50493,6 @@ package android.view.accessibility { } public final class AccessibilityManager { - method public void addAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public void addAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener, android.os.Handler); method public boolean addTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); @@ -50517,7 +50504,6 @@ package android.view.accessibility { method public static boolean isAccessibilityButtonSupported(); method public boolean isEnabled(); method public boolean isTouchExplorationEnabled(); - method public void removeAccessibilityRequestPreparer(android.view.accessibility.AccessibilityRequestPreparer); method public boolean removeAccessibilityStateChangeListener(android.view.accessibility.AccessibilityManager.AccessibilityStateChangeListener); method public boolean removeTouchExplorationStateChangeListener(android.view.accessibility.AccessibilityManager.TouchExplorationStateChangeListener); method public void sendAccessibilityEvent(android.view.accessibility.AccessibilityEvent); @@ -50834,13 +50820,6 @@ package android.view.accessibility { method public void setToIndex(int); } - public abstract class AccessibilityRequestPreparer { - ctor public AccessibilityRequestPreparer(android.view.View, int); - method public android.view.View getView(); - method public abstract void onPrepareExtraData(int, java.lang.String, android.os.Bundle, android.os.Message); - field public static final int REQUEST_TYPE_EXTRA_DATA = 1; // 0x1 - } - public final class AccessibilityWindowInfo implements android.os.Parcelable { method public int describeContents(); method public android.view.accessibility.AccessibilityNodeInfo getAnchor(); @@ -52456,7 +52435,6 @@ package android.webkit { method public void goBack(); method public void goBackOrForward(int); method public void goForward(); - method public static void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void invokeZoomPicker(); method public boolean isPrivateBrowsingEnabled(); method public void loadData(java.lang.String, java.lang.String, java.lang.String); @@ -52501,7 +52479,6 @@ package android.webkit { method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); method public deprecated boolean showFindDialog(java.lang.String, boolean); - method public static void shutdownSafeBrowsing(); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); @@ -52689,10 +52666,8 @@ package android.webkit { method public abstract java.lang.String findAddress(java.lang.String); method public abstract void freeMemoryForTests(); method public abstract java.lang.String getDefaultUserAgent(android.content.Context); - method public abstract void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public abstract android.net.Uri[] parseFileChooserResult(int, android.content.Intent); method public abstract void setWebContentsDebuggingEnabled(boolean); - method public abstract void shutdownSafeBrowsing(); } public class WebViewFragment extends android.app.Fragment { diff --git a/api/test-current.txt b/api/test-current.txt index 96bda4f3c8083..5a265cc6bd844 100644 --- a/api/test-current.txt +++ b/api/test-current.txt @@ -10753,7 +10753,6 @@ package android.content.pm { field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION = "android.hardware.nfc.hce"; field public static final java.lang.String FEATURE_NFC_HOST_CARD_EMULATION_NFCF = "android.hardware.nfc.hcef"; field public static final java.lang.String FEATURE_OPENGLES_EXTENSION_PACK = "android.hardware.opengles.aep"; - field public static final java.lang.String FEATURE_PC = "android.hardware.type.pc"; field public static final java.lang.String FEATURE_PICTURE_IN_PICTURE = "android.software.picture_in_picture"; field public static final java.lang.String FEATURE_PRINTING = "android.software.print"; field public static final java.lang.String FEATURE_SCREEN_LANDSCAPE = "android.hardware.screen.landscape"; @@ -10795,7 +10794,6 @@ package android.content.pm { field public static final java.lang.String FEATURE_WIFI = "android.hardware.wifi"; field public static final java.lang.String FEATURE_WIFI_AWARE = "android.hardware.wifi.aware"; field public static final java.lang.String FEATURE_WIFI_DIRECT = "android.hardware.wifi.direct"; - field public static final java.lang.String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; field public static final int GET_ACTIVITIES = 1; // 0x1 field public static final int GET_CONFIGURATIONS = 16384; // 0x4000 field public static final deprecated int GET_DISABLED_COMPONENTS = 512; // 0x200 @@ -38880,7 +38878,7 @@ package android.telecom { public static final class Call.RttCall { method public int getRttAudioMode(); - method public java.lang.String read() throws java.io.IOException; + method public java.lang.String read(); method public java.lang.String readImmediately() throws java.io.IOException; method public void setRttMode(int); method public void write(java.lang.String) throws java.io.IOException; @@ -44360,7 +44358,6 @@ package android.view { method public android.os.Vibrator getVibrator(); method public boolean[] hasKeys(int...); method public boolean hasMicrophone(); - method public boolean isEnabled(); method public boolean isVirtual(); method public boolean supportsSource(int); method public void writeToParcel(android.os.Parcel, int); @@ -49226,7 +49223,6 @@ package android.webkit { method public void goBack(); method public void goBackOrForward(int); method public void goForward(); - method public static void initSafeBrowsing(android.content.Context, android.webkit.ValueCallback); method public void invokeZoomPicker(); method public boolean isPrivateBrowsingEnabled(); method public void loadData(java.lang.String, java.lang.String, java.lang.String); @@ -49271,7 +49267,6 @@ package android.webkit { method public static void setWebContentsDebuggingEnabled(boolean); method public void setWebViewClient(android.webkit.WebViewClient); method public deprecated boolean showFindDialog(java.lang.String, boolean); - method public static void shutdownSafeBrowsing(); method public void stopLoading(); method public void zoomBy(float); method public boolean zoomIn(); diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java index ff9425ebd1557..9eacd2166bfde 100644 --- a/core/java/android/app/admin/DevicePolicyManager.java +++ b/core/java/android/app/admin/DevicePolicyManager.java @@ -279,7 +279,6 @@ public class DevicePolicyManager { * @hide */ @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION) - @SystemApi public static final String ACTION_STATE_USER_SETUP_COMPLETE = "android.app.action.STATE_USER_SETUP_COMPLETE"; diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 6bc7d42a14b2c..06dbc0b37f92c 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -2285,6 +2285,7 @@ public abstract class PackageManager { /** * Feature for {@link #getSystemAvailableFeatures} and * {@link #hasSystemFeature}: The device supports Wi-Fi Passpoint. + * @hide */ @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_WIFI_PASSPOINT = "android.hardware.wifi.passpoint"; @@ -2342,6 +2343,7 @@ public abstract class PackageManager { * computers, laptops and variants such as convertibles or detachables. * Due to the larger screen, the device will most likely use the * {@link #FEATURE_FREEFORM_WINDOW_MANAGEMENT} feature as well. + * @hide */ @SdkConstant(SdkConstantType.FEATURE) public static final String FEATURE_PC = "android.hardware.type.pc"; @@ -5773,7 +5775,6 @@ public abstract class PackageManager { * * @hide */ - @SystemApi public static abstract class DexModuleRegisterCallback { public abstract void onDexModuleRegistered(String dexModulePath, boolean success, String message); @@ -5807,7 +5808,6 @@ public abstract class PackageManager { * * @hide */ - @SystemApi public abstract void registerDexModule(String dexModulePath, @Nullable DexModuleRegisterCallback callback); } diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java index 8405d9ea8c38a..15be2b0bd8ab8 100644 --- a/core/java/android/view/InputDevice.java +++ b/core/java/android/view/InputDevice.java @@ -772,6 +772,7 @@ public final class InputDevice implements Parcelable { /** * Returns true if input device is enabled. * @return Whether the input device is enabled. + * @hide */ public boolean isEnabled() { return InputManager.getInstance().isInputDeviceEnabled(mId); diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java index 8fc586eba21df..3a3e17123d3c6 100644 --- a/core/java/android/view/accessibility/AccessibilityManager.java +++ b/core/java/android/view/accessibility/AccessibilityManager.java @@ -25,6 +25,7 @@ import android.annotation.Nullable; import android.annotation.SdkConstant; import android.annotation.SystemApi; import android.annotation.SystemService; +import android.annotation.TestApi; import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManager; @@ -704,7 +705,9 @@ public final class AccessibilityManager { /** * Registers a {@link AccessibilityRequestPreparer}. + * @hide */ + @TestApi public void addAccessibilityRequestPreparer(AccessibilityRequestPreparer preparer) { if (mRequestPreparerLists == null) { mRequestPreparerLists = new SparseArray<>(1); @@ -720,7 +723,9 @@ public final class AccessibilityManager { /** * Unregisters a {@link AccessibilityRequestPreparer}. + * @hide */ + @TestApi public void removeAccessibilityRequestPreparer(AccessibilityRequestPreparer preparer) { if (mRequestPreparerLists == null) { return; diff --git a/core/java/android/view/accessibility/AccessibilityRequestPreparer.java b/core/java/android/view/accessibility/AccessibilityRequestPreparer.java index 889feb983be43..c0323902aa953 100644 --- a/core/java/android/view/accessibility/AccessibilityRequestPreparer.java +++ b/core/java/android/view/accessibility/AccessibilityRequestPreparer.java @@ -18,6 +18,7 @@ package android.view.accessibility; import android.annotation.IntDef; import android.annotation.Nullable; +import android.annotation.TestApi; import android.content.Context; import android.os.Bundle; import android.os.Message; @@ -39,7 +40,9 @@ import java.lang.ref.WeakReference; *

* Note: This class should only be needed in exceptional situations where a * {@link View} cannot otherwise synchronously meet the request for accessibility data. + * @hide */ +@TestApi public abstract class AccessibilityRequestPreparer { public static final int REQUEST_TYPE_EXTRA_DATA = 0x00000001; diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index ec2b302d35ca2..2753ff675dec4 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -1625,6 +1625,7 @@ public class WebView extends AbsoluteLayout * @param context is the activity context the WebView will be used in. * @param callback will be called with the value true if initialization is * successful. The callback will be run on the UI thread. + * @hide */ public static void initSafeBrowsing(Context context, ValueCallback callback) { getFactory().getStatics().initSafeBrowsing(context, callback); @@ -1632,6 +1633,7 @@ public class WebView extends AbsoluteLayout /** * Shuts down Safe Browsing. This should only be called once. + * @hide */ public static void shutdownSafeBrowsing() { getFactory().getStatics().shutdownSafeBrowsing(); diff --git a/core/java/android/webkit/WebViewFactoryProvider.java b/core/java/android/webkit/WebViewFactoryProvider.java index 5cf48b585b16b..00fdac89d0285 100644 --- a/core/java/android/webkit/WebViewFactoryProvider.java +++ b/core/java/android/webkit/WebViewFactoryProvider.java @@ -78,14 +78,18 @@ public interface WebViewFactoryProvider { /** * Implement the API method * {@link android.webkit.WebView#initSafeBrowsing(Context , ValueCallback)} + * @hide */ - void initSafeBrowsing(Context context, ValueCallback callback); + default void initSafeBrowsing(Context context, ValueCallback callback) { + } /** * Implement the API method * {@link android.webkit.WebView#shutdownSafeBrowsing()} + * @hide */ - void shutdownSafeBrowsing(); + default void shutdownSafeBrowsing() { + } } Statics getStatics(); diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index af459855c53dc..d2b9018e7abd3 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -2418,24 +2418,26 @@ public class RemoteViews implements Parcelable, Filter { } - public synchronized RemoteViews clone() { - Preconditions.checkState(mIsRoot, "RemoteView has been attached to another RemoteView. " - + "May only clone the root of a RemoteView hierarchy."); + public RemoteViews clone() { + synchronized (this) { + Preconditions.checkState(mIsRoot, "RemoteView has been attached to another RemoteView. " + + "May only clone the root of a RemoteView hierarchy."); - Parcel p = Parcel.obtain(); + Parcel p = Parcel.obtain(); - // Do not parcel the Bitmap cache - doing so creates an expensive copy of all bitmaps. - // Instead pretend we're not owning the cache while parceling. - mIsRoot = false; - writeToParcel(p, PARCELABLE_ELIDE_DUPLICATES); - p.setDataPosition(0); - mIsRoot = true; + // Do not parcel the Bitmap cache - doing so creates an expensive copy of all bitmaps. + // Instead pretend we're not owning the cache while parceling. + mIsRoot = false; + writeToParcel(p, PARCELABLE_ELIDE_DUPLICATES); + p.setDataPosition(0); + mIsRoot = true; - RemoteViews rv = new RemoteViews(p, mBitmapCache.clone(), mApplication, 0); - rv.mIsRoot = true; + RemoteViews rv = new RemoteViews(p, mBitmapCache.clone(), mApplication, 0); + rv.mIsRoot = true; - p.recycle(); - return rv; + p.recycle(); + return rv; + } } public String getPackage() { diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java index c1475784a9ac3..a6bfbad8e0537 100644 --- a/telecomm/java/android/telecom/Call.java +++ b/telecomm/java/android/telecom/Call.java @@ -19,6 +19,7 @@ package android.telecom; import android.annotation.IntDef; import android.annotation.Nullable; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.net.Uri; import android.os.Bundle; import android.os.Handler; @@ -1076,12 +1077,17 @@ public final class Call { * @return A string containing text sent by the remote user, or {@code null} if the * conversation has been terminated or if there was an error while reading. */ - public String read() throws IOException { - int numRead = mReceiveStream.read(mReadBuffer, 0, READ_BUFFER_SIZE); - if (numRead < 0) { - return null; + public String read() { + try { + int numRead = mReceiveStream.read(mReadBuffer, 0, READ_BUFFER_SIZE); + if (numRead < 0) { + return null; + } + return new String(mReadBuffer, 0, numRead); + } catch (IOException e) { + Log.w(this, "Exception encountered when reading from InputStreamReader: %s", e); } - return new String(mReadBuffer, 0, numRead); + return null; } /** @@ -1089,7 +1095,9 @@ public final class Call { * be read. * @return A string containing text entered by the user, or {@code null} if the user has * not entered any new text yet. + * @hide */ + @TestApi public String readImmediately() throws IOException { if (mReceiveStream.ready()) { return read();