diff options
Diffstat (limited to 'core/java')
| -rw-r--r-- | core/java/android/app/AppOpsManager.java | 3 | ||||
| -rw-r--r-- | core/java/android/app/INotificationManager.aidl | 4 | ||||
| -rw-r--r-- | core/java/android/hardware/input/InputManager.java | 6 | ||||
| -rw-r--r-- | core/java/android/view/GLES20Canvas.java | 8 | ||||
| -rw-r--r-- | core/java/android/view/GLES20RecordingCanvas.java | 2 | ||||
| -rw-r--r-- | core/java/android/view/HardwareCanvas.java | 27 | ||||
| -rw-r--r-- | core/java/android/view/HardwareRenderer.java | 15 | ||||
| -rw-r--r-- | core/java/android/view/ViewRootImpl.java | 1 | ||||
| -rw-r--r-- | core/java/android/widget/AbsSeekBar.java | 4 | ||||
| -rw-r--r-- | core/java/android/widget/ProgressBar.java | 8 | ||||
| -rw-r--r-- | core/java/com/android/internal/util/ProcFileReader.java | 50 |
11 files changed, 111 insertions, 17 deletions
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java index b1d0305..a1fdef8 100644 --- a/core/java/android/app/AppOpsManager.java +++ b/core/java/android/app/AppOpsManager.java @@ -47,6 +47,7 @@ public class AppOpsManager { public static final int OP_READ_CALENDAR = 8; public static final int OP_WRITE_CALENDAR = 9; public static final int OP_WIFI_SCAN = 10; + public static final int OP_POST_NOTIFICATION = 11; private static String[] sOpNames = new String[] { "COARSE_LOCATION", @@ -60,6 +61,7 @@ public class AppOpsManager { "READ_CALENDAR", "WRITE_CALENDAR", "WIFI_SCAN", + "POST_NOTIFICATION", }; private static String[] sOpPerms = new String[] { @@ -74,6 +76,7 @@ public class AppOpsManager { android.Manifest.permission.READ_CALENDAR, android.Manifest.permission.WRITE_CALENDAR, android.Manifest.permission.ACCESS_WIFI_STATE, + null, // no permission required for notifications }; public static String opToName(int op) { diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl index 62d4962..b4c222f 100644 --- a/core/java/android/app/INotificationManager.aidl +++ b/core/java/android/app/INotificationManager.aidl @@ -32,7 +32,7 @@ interface INotificationManager in Notification notification, inout int[] idReceived, int userId); void cancelNotificationWithTag(String pkg, String tag, int id, int userId); - void setNotificationsEnabledForPackage(String pkg, boolean enabled); - boolean areNotificationsEnabledForPackage(String pkg); + void setNotificationsEnabledForPackage(String pkg, int uid, boolean enabled); + boolean areNotificationsEnabledForPackage(String pkg, int uid); } diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java index 262d87d..6b00c58 100644 --- a/core/java/android/hardware/input/InputManager.java +++ b/core/java/android/hardware/input/InputManager.java @@ -212,8 +212,10 @@ public final class InputManager { } catch (RemoteException ex) { throw new RuntimeException("Could not get input device information.", ex); } + if (inputDevice != null) { + mInputDevices.setValueAt(index, inputDevice); + } } - mInputDevices.setValueAt(index, inputDevice); return inputDevice; } } @@ -241,6 +243,8 @@ public final class InputManager { inputDevice = mIm.getInputDevice(id); } catch (RemoteException ex) { // Ignore the problem for the purposes of this method. + } + if (inputDevice == null) { continue; } mInputDevices.setValueAt(i, inputDevice); diff --git a/core/java/android/view/GLES20Canvas.java b/core/java/android/view/GLES20Canvas.java index e0cf3b2..8051923 100644 --- a/core/java/android/view/GLES20Canvas.java +++ b/core/java/android/view/GLES20Canvas.java @@ -144,6 +144,14 @@ class GLES20Canvas extends HardwareCanvas { } } + @Override + public void setName(String name) { + super.setName(name); + nSetName(mRenderer, name); + } + + private static native void nSetName(int renderer, String name); + /////////////////////////////////////////////////////////////////////////// // Hardware layers /////////////////////////////////////////////////////////////////////////// diff --git a/core/java/android/view/GLES20RecordingCanvas.java b/core/java/android/view/GLES20RecordingCanvas.java index 168ae81..7da2451 100644 --- a/core/java/android/view/GLES20RecordingCanvas.java +++ b/core/java/android/view/GLES20RecordingCanvas.java @@ -43,7 +43,7 @@ class GLES20RecordingCanvas extends GLES20Canvas { private GLES20DisplayList mDisplayList; private GLES20RecordingCanvas() { - super(true /*record*/, true /*translucent*/); + super(true, true); } static GLES20RecordingCanvas obtain(GLES20DisplayList displayList) { diff --git a/core/java/android/view/HardwareCanvas.java b/core/java/android/view/HardwareCanvas.java index eeae3ed..3d19260 100644 --- a/core/java/android/view/HardwareCanvas.java +++ b/core/java/android/view/HardwareCanvas.java @@ -27,6 +27,8 @@ import android.graphics.Rect; * @hide */ public abstract class HardwareCanvas extends Canvas { + private String mName; + @Override public boolean isHardwareAccelerated() { return true; @@ -36,7 +38,30 @@ public abstract class HardwareCanvas extends Canvas { public void setBitmap(Bitmap bitmap) { throw new UnsupportedOperationException(); } - + + /** + * Specifies the name of this canvas. Naming the canvas is entirely + * optional but can be useful for debugging purposes. + * + * @param name The name of the canvas, can be null + * + * @see #getName() + */ + public void setName(String name) { + mName = name; + } + + /** + * Returns the name of this canvas. + * + * @return The name of the canvas or null + * + * @see #setName(String) + */ + public String getName() { + return mName; + } + /** * Invoked before any drawing operation is performed in this canvas. * diff --git a/core/java/android/view/HardwareRenderer.java b/core/java/android/view/HardwareRenderer.java index 5e6125f..e0d48a4 100644 --- a/core/java/android/view/HardwareRenderer.java +++ b/core/java/android/view/HardwareRenderer.java @@ -543,6 +543,13 @@ public abstract class HardwareRenderer { } /** + * Optional, sets the name of the renderer. Useful for debugging purposes. + * + * @param name The name of this renderer, can be null + */ + abstract void setName(String name); + + /** * Creates a hardware renderer using OpenGL. * * @param glVersion The version of OpenGL to use (1 for OpenGL 1, 11 for OpenGL 1.1, etc.) @@ -756,6 +763,8 @@ public abstract class HardwareRenderer { GL mGl; HardwareCanvas mCanvas; + String mName; + long mFrameCount; Paint mDebugPaint; @@ -963,6 +972,7 @@ public abstract class HardwareRenderer { } else { if (mCanvas == null) { mCanvas = createCanvas(); + mCanvas.setName(mName); } if (mCanvas != null) { setEnabled(true); @@ -1277,6 +1287,11 @@ public abstract class HardwareRenderer { return mCanvas; } + @Override + void setName(String name) { + mName = name; + } + boolean canDraw() { return mGl != null && mCanvas != null; } diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index ba9eb89..c3321ea 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -739,6 +739,7 @@ public final class ViewRootImpl implements ViewParent, final boolean translucent = attrs.format != PixelFormat.OPAQUE; mAttachInfo.mHardwareRenderer = HardwareRenderer.createGlRenderer(2, translucent); + mAttachInfo.mHardwareRenderer.setName(attrs.getTitle().toString()); mAttachInfo.mHardwareAccelerated = mAttachInfo.mHardwareAccelerationRequested = mAttachInfo.mHardwareRenderer != null; diff --git a/core/java/android/widget/AbsSeekBar.java b/core/java/android/widget/AbsSeekBar.java index 3b5e75b..7674837 100644 --- a/core/java/android/widget/AbsSeekBar.java +++ b/core/java/android/widget/AbsSeekBar.java @@ -305,7 +305,7 @@ public abstract class AbsSeekBar extends ProgressBar { } // Canvas will be translated, so 0,0 is where we start drawing - final int left = isLayoutRtl() ? available - thumbPos : thumbPos; + final int left = (isLayoutRtl() && mMirrorForRtl) ? available - thumbPos : thumbPos; thumb.setBounds(left, topBound, left + thumbWidth, bottomBound); } @@ -426,7 +426,7 @@ public abstract class AbsSeekBar extends ProgressBar { int x = (int)event.getX(); float scale; float progress = 0; - if (isLayoutRtl()) { + if (isLayoutRtl() && mMirrorForRtl) { if (x > width - mPaddingRight) { scale = 0.0f; } else if (x < mPaddingLeft) { diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java index f2d2c65..d816200 100644 --- a/core/java/android/widget/ProgressBar.java +++ b/core/java/android/widget/ProgressBar.java @@ -223,6 +223,8 @@ public class ProgressBar extends View { private boolean mAttached; private boolean mRefreshIsPosted; + boolean mMirrorForRtl = false; + private final ArrayList<RefreshData> mRefreshData = new ArrayList<RefreshData>(); private AccessibilityEventSender mAccessibilityEventSender; @@ -302,6 +304,8 @@ public class ProgressBar extends View { setIndeterminate(mOnlyIndeterminate || a.getBoolean( R.styleable.ProgressBar_indeterminate, mIndeterminate)); + mMirrorForRtl = a.getBoolean(R.styleable.ProgressBar_mirrorForRtl, mMirrorForRtl); + a.recycle(); } @@ -1004,7 +1008,7 @@ public class ProgressBar extends View { } } } - if (isLayoutRtl()) { + if (isLayoutRtl() && mMirrorForRtl) { int tempLeft = left; left = w - right; right = w - tempLeft; @@ -1026,7 +1030,7 @@ public class ProgressBar extends View { // Translate canvas so a indeterminate circular progress bar with padding // rotates properly in its animation canvas.save(); - if(isLayoutRtl()) { + if(isLayoutRtl() && mMirrorForRtl) { canvas.translate(getWidth() - mPaddingRight, mPaddingTop); canvas.scale(-1.0f, 1.0f); } else { diff --git a/core/java/com/android/internal/util/ProcFileReader.java b/core/java/com/android/internal/util/ProcFileReader.java index 72e1f0f..81571fe 100644 --- a/core/java/com/android/internal/util/ProcFileReader.java +++ b/core/java/com/android/internal/util/ProcFileReader.java @@ -19,6 +19,7 @@ package com.android.internal.util; import java.io.Closeable; import java.io.IOException; import java.io.InputStream; +import java.net.ProtocolException; import java.nio.charset.Charsets; /** @@ -82,12 +83,15 @@ public class ProcFileReader implements Closeable { } /** - * Find buffer index of next token delimiter, usually space or newline. Will - * fill buffer as needed. + * Find buffer index of next token delimiter, usually space or newline. + * Fills buffer as needed. + * + * @return Index of next delimeter, otherwise -1 if no tokens remain on + * current line. */ private int nextTokenIndex() throws IOException { if (mLineFinished) { - throw new IOException("no tokens remaining on current line"); + return -1; } int i = 0; @@ -105,7 +109,7 @@ public class ProcFileReader implements Closeable { } } while (fillBuf() > 0); - throw new IOException("end of stream while looking for token boundary"); + throw new ProtocolException("End of stream while looking for token boundary"); } /** @@ -136,7 +140,7 @@ public class ProcFileReader implements Closeable { } } while (fillBuf() > 0); - throw new IOException("end of stream while looking for line boundary"); + throw new ProtocolException("End of stream while looking for line boundary"); } /** @@ -144,9 +148,11 @@ public class ProcFileReader implements Closeable { */ public String nextString() throws IOException { final int tokenIndex = nextTokenIndex(); - final String s = new String(mBuffer, 0, tokenIndex, Charsets.US_ASCII); - consumeBuf(tokenIndex + 1); - return s; + if (tokenIndex == -1) { + throw new ProtocolException("Missing required string"); + } else { + return parseAndConsumeString(tokenIndex); + } } /** @@ -154,6 +160,33 @@ public class ProcFileReader implements Closeable { */ public long nextLong() throws IOException { final int tokenIndex = nextTokenIndex(); + if (tokenIndex == -1) { + throw new ProtocolException("Missing required long"); + } else { + return parseAndConsumeLong(tokenIndex); + } + } + + /** + * Parse and return next token as base-10 encoded {@code long}, or return + * the given default value if no remaining tokens on current line. + */ + public long nextOptionalLong(long def) throws IOException { + final int tokenIndex = nextTokenIndex(); + if (tokenIndex == -1) { + return def; + } else { + return parseAndConsumeLong(tokenIndex); + } + } + + private String parseAndConsumeString(int tokenIndex) throws IOException { + final String s = new String(mBuffer, 0, tokenIndex, Charsets.US_ASCII); + consumeBuf(tokenIndex + 1); + return s; + } + + private long parseAndConsumeLong(int tokenIndex) throws IOException { final boolean negative = mBuffer[0] == '-'; // TODO: refactor into something like IntegralToString @@ -193,6 +226,7 @@ public class ProcFileReader implements Closeable { return (int) value; } + @Override public void close() throws IOException { mStream.close(); } |
