Loading api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -29666,6 +29666,9 @@ package android.view.accessibility { method public boolean performAction(int, android.os.Bundle); method public void recycle(); method public boolean refresh(); method public void removeAction(int); method public boolean removeChild(android.view.View); method public boolean removeChild(android.view.View, int); method public void setAccessibilityFocused(boolean); method public void setBoundsInParent(android.graphics.Rect); method public void setBoundsInScreen(android.graphics.Rect); core/java/android/util/LongArray.java 0 → 100644 +160 −0 Original line number Diff line number Diff line /* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.util; import com.android.internal.util.ArrayUtils; /** * Implements a growing array of long primitives. * * @hide */ public class LongArray implements Cloneable { private static final int MIN_CAPACITY_INCREMENT = 12; private long[] mValues; private int mSize; /** * Creates an empty LongArray with the default initial capacity. */ public LongArray() { this(10); } /** * Creates an empty LongArray with the specified initial capacity. */ public LongArray(int initialCapacity) { if (initialCapacity == 0) { mValues = ContainerHelpers.EMPTY_LONGS; } else { initialCapacity = ArrayUtils.idealLongArraySize(initialCapacity); mValues = new long[initialCapacity]; } mSize = 0; } /** * Appends the specified value to the end of this array. */ public void add(long value) { add(mSize, value); } /** * Inserts a value at the specified position in this array. * * @throws IndexOutOfBoundsException when index < 0 || index > size() */ public void add(int index, long value) { if (index < 0 || index > mSize) { throw new IndexOutOfBoundsException(); } ensureCapacity(1); if (mSize - index != 0) { System.arraycopy(mValues, index, mValues, index + 1, mSize - index); } mValues[index] = value; mSize++; } /** * Adds the values in the specified array to this array. */ public void addAll(LongArray values) { final int count = values.mSize; ensureCapacity(count); System.arraycopy(mValues, mSize, values.mValues, 0, count); mSize += count; } /** * Ensures capacity to append at least <code>count</code> values. */ private void ensureCapacity(int count) { final int currentSize = mSize; final int minCapacity = currentSize + count; if (minCapacity >= mValues.length) { final int targetCap = currentSize + (currentSize < (MIN_CAPACITY_INCREMENT / 2) ? MIN_CAPACITY_INCREMENT : currentSize >> 1); final int newCapacity = targetCap > minCapacity ? targetCap : minCapacity; final long[] newValues = new long[ArrayUtils.idealLongArraySize(newCapacity)]; System.arraycopy(mValues, 0, newValues, 0, currentSize); mValues = newValues; } } /** * Removes all values from this array. */ public void clear() { mSize = 0; } @Override @SuppressWarnings("unchecked") public LongArray clone() { LongArray clone = null; try { clone = (LongArray) super.clone(); clone.mValues = mValues.clone(); } catch (CloneNotSupportedException cnse) { /* ignore */ } return clone; } /** * Returns the value at the specified position in this array. */ public long get(int index) { return mValues[index]; } /** * Returns the index of the first occurrence of the specified value in this * array, or -1 if this array does not contain the value. */ public int indexOf(long value) { final int n = mSize; for (int i = 0; i < n; i++) { if (mValues[i] == value) { return i; } } return -1; } /** * Removes the value at the specified index from this array. */ public void remove(int index) { System.arraycopy(mValues, index, mValues, index + 1, mSize - index); } /** * Returns the number of values in this array. */ public int size() { return mSize; } } core/java/android/view/AccessibilityInteractionController.java +5 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.Looper; import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.util.LongArray; import android.util.SparseLongArray; import android.view.View.AttachInfo; import android.view.accessibility.AccessibilityInteractionClient; Loading Loading @@ -881,13 +882,12 @@ final class AccessibilityInteractionController { AccessibilityNodeInfo parent = provider.createAccessibilityNodeInfo(parentVirtualDescendantId); if (parent != null) { SparseLongArray childNodeIds = parent.getChildNodeIds(); final int childCount = childNodeIds.size(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { if (outInfos.size() >= MAX_ACCESSIBILITY_NODE_INFO_BATCH_SIZE) { return; } final long childNodeId = childNodeIds.get(i); final long childNodeId = parent.getChildId(i); if (childNodeId != current.getSourceNodeId()) { final int childVirtualDescendantId = AccessibilityNodeInfo.getVirtualDescendantId(childNodeId); Loading @@ -906,14 +906,13 @@ final class AccessibilityInteractionController { private void prefetchDescendantsOfVirtualNode(AccessibilityNodeInfo root, AccessibilityNodeProvider provider, List<AccessibilityNodeInfo> outInfos) { SparseLongArray childNodeIds = root.getChildNodeIds(); final int initialOutInfosSize = outInfos.size(); final int childCount = childNodeIds.size(); final int childCount = root.getChildCount(); for (int i = 0; i < childCount; i++) { if (outInfos.size() >= MAX_ACCESSIBILITY_NODE_INFO_BATCH_SIZE) { return; } final long childNodeId = childNodeIds.get(i); final long childNodeId = root.getChildId(i); AccessibilityNodeInfo child = provider.createAccessibilityNodeInfo( AccessibilityNodeInfo.getVirtualDescendantId(childNodeId)); if (child != null) { Loading core/java/android/view/ViewGroup.java +3 −3 Original line number Diff line number Diff line Loading @@ -2511,13 +2511,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfoInternal(info); if (mAttachInfo != null) { ArrayList<View> childrenForAccessibility = mAttachInfo.mTempArrayList; final ArrayList<View> childrenForAccessibility = mAttachInfo.mTempArrayList; childrenForAccessibility.clear(); addChildrenForAccessibility(childrenForAccessibility); final int childrenForAccessibilityCount = childrenForAccessibility.size(); for (int i = 0; i < childrenForAccessibilityCount; i++) { View child = childrenForAccessibility.get(i); info.addChild(child); final View child = childrenForAccessibility.get(i); info.addChildUnchecked(child); } childrenForAccessibility.clear(); } Loading core/java/android/view/accessibility/AccessibilityInteractionClient.java +2 −3 Original line number Diff line number Diff line Loading @@ -718,10 +718,9 @@ public final class AccessibilityInteractionClient Log.e(LOG_TAG, "Duplicate node."); return; } SparseLongArray childIds = current.getChildNodeIds(); final int childCount = childIds.size(); final int childCount = current.getChildCount(); for (int i = 0; i < childCount; i++) { final long childId = childIds.valueAt(i); final long childId = current.getChildId(i); for (int j = 0; j < infoCount; j++) { AccessibilityNodeInfo child = infos.get(j); if (child.getSourceNodeId() == childId) { Loading Loading
api/current.txt +3 −0 Original line number Diff line number Diff line Loading @@ -29666,6 +29666,9 @@ package android.view.accessibility { method public boolean performAction(int, android.os.Bundle); method public void recycle(); method public boolean refresh(); method public void removeAction(int); method public boolean removeChild(android.view.View); method public boolean removeChild(android.view.View, int); method public void setAccessibilityFocused(boolean); method public void setBoundsInParent(android.graphics.Rect); method public void setBoundsInScreen(android.graphics.Rect);
core/java/android/util/LongArray.java 0 → 100644 +160 −0 Original line number Diff line number Diff line /* * Copyright (C) 2013 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.util; import com.android.internal.util.ArrayUtils; /** * Implements a growing array of long primitives. * * @hide */ public class LongArray implements Cloneable { private static final int MIN_CAPACITY_INCREMENT = 12; private long[] mValues; private int mSize; /** * Creates an empty LongArray with the default initial capacity. */ public LongArray() { this(10); } /** * Creates an empty LongArray with the specified initial capacity. */ public LongArray(int initialCapacity) { if (initialCapacity == 0) { mValues = ContainerHelpers.EMPTY_LONGS; } else { initialCapacity = ArrayUtils.idealLongArraySize(initialCapacity); mValues = new long[initialCapacity]; } mSize = 0; } /** * Appends the specified value to the end of this array. */ public void add(long value) { add(mSize, value); } /** * Inserts a value at the specified position in this array. * * @throws IndexOutOfBoundsException when index < 0 || index > size() */ public void add(int index, long value) { if (index < 0 || index > mSize) { throw new IndexOutOfBoundsException(); } ensureCapacity(1); if (mSize - index != 0) { System.arraycopy(mValues, index, mValues, index + 1, mSize - index); } mValues[index] = value; mSize++; } /** * Adds the values in the specified array to this array. */ public void addAll(LongArray values) { final int count = values.mSize; ensureCapacity(count); System.arraycopy(mValues, mSize, values.mValues, 0, count); mSize += count; } /** * Ensures capacity to append at least <code>count</code> values. */ private void ensureCapacity(int count) { final int currentSize = mSize; final int minCapacity = currentSize + count; if (minCapacity >= mValues.length) { final int targetCap = currentSize + (currentSize < (MIN_CAPACITY_INCREMENT / 2) ? MIN_CAPACITY_INCREMENT : currentSize >> 1); final int newCapacity = targetCap > minCapacity ? targetCap : minCapacity; final long[] newValues = new long[ArrayUtils.idealLongArraySize(newCapacity)]; System.arraycopy(mValues, 0, newValues, 0, currentSize); mValues = newValues; } } /** * Removes all values from this array. */ public void clear() { mSize = 0; } @Override @SuppressWarnings("unchecked") public LongArray clone() { LongArray clone = null; try { clone = (LongArray) super.clone(); clone.mValues = mValues.clone(); } catch (CloneNotSupportedException cnse) { /* ignore */ } return clone; } /** * Returns the value at the specified position in this array. */ public long get(int index) { return mValues[index]; } /** * Returns the index of the first occurrence of the specified value in this * array, or -1 if this array does not contain the value. */ public int indexOf(long value) { final int n = mSize; for (int i = 0; i < n; i++) { if (mValues[i] == value) { return i; } } return -1; } /** * Removes the value at the specified index from this array. */ public void remove(int index) { System.arraycopy(mValues, index, mValues, index + 1, mSize - index); } /** * Returns the number of values in this array. */ public int size() { return mSize; } }
core/java/android/view/AccessibilityInteractionController.java +5 −6 Original line number Diff line number Diff line Loading @@ -24,6 +24,7 @@ import android.os.Looper; import android.os.Message; import android.os.Process; import android.os.RemoteException; import android.util.LongArray; import android.util.SparseLongArray; import android.view.View.AttachInfo; import android.view.accessibility.AccessibilityInteractionClient; Loading Loading @@ -881,13 +882,12 @@ final class AccessibilityInteractionController { AccessibilityNodeInfo parent = provider.createAccessibilityNodeInfo(parentVirtualDescendantId); if (parent != null) { SparseLongArray childNodeIds = parent.getChildNodeIds(); final int childCount = childNodeIds.size(); final int childCount = parent.getChildCount(); for (int i = 0; i < childCount; i++) { if (outInfos.size() >= MAX_ACCESSIBILITY_NODE_INFO_BATCH_SIZE) { return; } final long childNodeId = childNodeIds.get(i); final long childNodeId = parent.getChildId(i); if (childNodeId != current.getSourceNodeId()) { final int childVirtualDescendantId = AccessibilityNodeInfo.getVirtualDescendantId(childNodeId); Loading @@ -906,14 +906,13 @@ final class AccessibilityInteractionController { private void prefetchDescendantsOfVirtualNode(AccessibilityNodeInfo root, AccessibilityNodeProvider provider, List<AccessibilityNodeInfo> outInfos) { SparseLongArray childNodeIds = root.getChildNodeIds(); final int initialOutInfosSize = outInfos.size(); final int childCount = childNodeIds.size(); final int childCount = root.getChildCount(); for (int i = 0; i < childCount; i++) { if (outInfos.size() >= MAX_ACCESSIBILITY_NODE_INFO_BATCH_SIZE) { return; } final long childNodeId = childNodeIds.get(i); final long childNodeId = root.getChildId(i); AccessibilityNodeInfo child = provider.createAccessibilityNodeInfo( AccessibilityNodeInfo.getVirtualDescendantId(childNodeId)); if (child != null) { Loading
core/java/android/view/ViewGroup.java +3 −3 Original line number Diff line number Diff line Loading @@ -2511,13 +2511,13 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfoInternal(info); if (mAttachInfo != null) { ArrayList<View> childrenForAccessibility = mAttachInfo.mTempArrayList; final ArrayList<View> childrenForAccessibility = mAttachInfo.mTempArrayList; childrenForAccessibility.clear(); addChildrenForAccessibility(childrenForAccessibility); final int childrenForAccessibilityCount = childrenForAccessibility.size(); for (int i = 0; i < childrenForAccessibilityCount; i++) { View child = childrenForAccessibility.get(i); info.addChild(child); final View child = childrenForAccessibility.get(i); info.addChildUnchecked(child); } childrenForAccessibility.clear(); } Loading
core/java/android/view/accessibility/AccessibilityInteractionClient.java +2 −3 Original line number Diff line number Diff line Loading @@ -718,10 +718,9 @@ public final class AccessibilityInteractionClient Log.e(LOG_TAG, "Duplicate node."); return; } SparseLongArray childIds = current.getChildNodeIds(); final int childCount = childIds.size(); final int childCount = current.getChildCount(); for (int i = 0; i < childCount; i++) { final long childId = childIds.valueAt(i); final long childId = current.getChildId(i); for (int j = 0; j < infoCount; j++) { AccessibilityNodeInfo child = infos.get(j); if (child.getSourceNodeId() == childId) { Loading