diff options
-rw-r--r-- | api/current.xml | 52 | ||||
-rw-r--r-- | core/java/android/database/sqlite/SQLiteCursor.java | 11 | ||||
-rw-r--r-- | core/java/android/database/sqlite/SQLiteQueryBuilder.java | 54 | ||||
-rw-r--r-- | core/java/android/os/DropBoxManager.java | 7 | ||||
-rw-r--r-- | core/java/android/preference/DialogPreference.java | 2 | ||||
-rw-r--r-- | services/java/com/android/server/MountService.java | 11 | ||||
-rw-r--r-- | tools/aapt/ResourceTable.cpp | 14 |
7 files changed, 115 insertions, 36 deletions
diff --git a/api/current.xml b/api/current.xml index 4c9743e..7dc498d 100644 --- a/api/current.xml +++ b/api/current.xml @@ -55246,6 +55246,29 @@ </parameter> <parameter name="selection" type="java.lang.String"> </parameter> +<parameter name="groupBy" type="java.lang.String"> +</parameter> +<parameter name="having" type="java.lang.String"> +</parameter> +<parameter name="sortOrder" type="java.lang.String"> +</parameter> +<parameter name="limit" type="java.lang.String"> +</parameter> +</method> +<method name="buildQuery" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="deprecated" + visibility="public" +> +<parameter name="projectionIn" type="java.lang.String[]"> +</parameter> +<parameter name="selection" type="java.lang.String"> +</parameter> <parameter name="selectionArgs" type="java.lang.String[]"> </parameter> <parameter name="groupBy" type="java.lang.String"> @@ -55323,6 +55346,33 @@ </parameter> <parameter name="selection" type="java.lang.String"> </parameter> +<parameter name="groupBy" type="java.lang.String"> +</parameter> +<parameter name="having" type="java.lang.String"> +</parameter> +</method> +<method name="buildUnionSubQuery" + return="java.lang.String" + abstract="false" + native="false" + synchronized="false" + static="false" + final="false" + deprecated="deprecated" + visibility="public" +> +<parameter name="typeDiscriminatorColumn" type="java.lang.String"> +</parameter> +<parameter name="unionColumns" type="java.lang.String[]"> +</parameter> +<parameter name="columnsPresentInTable" type="java.util.Set<java.lang.String>"> +</parameter> +<parameter name="computedColumnsOffset" type="int"> +</parameter> +<parameter name="typeDiscriminatorValue" type="java.lang.String"> +</parameter> +<parameter name="selection" type="java.lang.String"> +</parameter> <parameter name="selectionArgs" type="java.lang.String[]"> </parameter> <parameter name="groupBy" type="java.lang.String"> @@ -216168,7 +216218,7 @@ deprecated="not deprecated" visibility="public" > -<parameter name="t" type="T"> +<parameter name="arg0" type="T"> </parameter> </method> </interface> diff --git a/core/java/android/database/sqlite/SQLiteCursor.java b/core/java/android/database/sqlite/SQLiteCursor.java index c7e58fa..2fd28d7 100644 --- a/core/java/android/database/sqlite/SQLiteCursor.java +++ b/core/java/android/database/sqlite/SQLiteCursor.java @@ -131,11 +131,11 @@ public class SQLiteCursor extends AbstractWindowedCursor { // the cursor's state doesn't change while (true) { mLock.lock(); - if (mCursorState != mThreadState) { - mLock.unlock(); - break; - } try { + if (mCursorState != mThreadState) { + break; + } + int count = mQuery.fillWindow(cw, mMaxRead, mCount); // return -1 means not finished if (count != 0) { @@ -217,9 +217,8 @@ public class SQLiteCursor extends AbstractWindowedCursor { mColumnNameMap = null; mQuery = query; + db.lock(); try { - db.lock(); - // Setup the list of columns int columnCount = mQuery.columnCountLocked(); mColumns = new String[columnCount]; diff --git a/core/java/android/database/sqlite/SQLiteQueryBuilder.java b/core/java/android/database/sqlite/SQLiteQueryBuilder.java index 610bf70..4ab646e 100644 --- a/core/java/android/database/sqlite/SQLiteQueryBuilder.java +++ b/core/java/android/database/sqlite/SQLiteQueryBuilder.java @@ -321,7 +321,7 @@ public class SQLiteQueryBuilder } String sql = buildQuery( - projectionIn, selection, selectionArgs, groupBy, having, + projectionIn, selection, groupBy, having, sortOrder, limit); if (Log.isLoggable(TAG, Log.DEBUG)) { @@ -345,10 +345,6 @@ public class SQLiteQueryBuilder * formatted as an SQL WHERE clause (excluding the WHERE * itself). Passing null will return all rows for the given * URL. - * @param selectionArgs You may include ?s in selection, which - * will be replaced by the values from selectionArgs, in order - * that they appear in the selection. The values will be bound - * as Strings. * @param groupBy A filter declaring how to group rows, formatted * as an SQL GROUP BY clause (excluding the GROUP BY itself). * Passing null will cause the rows to not be grouped. @@ -365,8 +361,8 @@ public class SQLiteQueryBuilder * @return the resulting SQL SELECT statement */ public String buildQuery( - String[] projectionIn, String selection, String[] selectionArgs, - String groupBy, String having, String sortOrder, String limit) { + String[] projectionIn, String selection, String groupBy, + String having, String sortOrder, String limit) { String[] projection = computeProjection(projectionIn); StringBuilder where = new StringBuilder(); @@ -394,6 +390,19 @@ public class SQLiteQueryBuilder } /** + * @deprecated This method's signature is misleading since no SQL parameter + * substitution is carried out. The selection arguments parameter does not get + * used at all. To avoid confusion, call + * {@link #buildQuery(String[], String, String, String, String, String)} instead. + */ + @Deprecated + public String buildQuery( + String[] projectionIn, String selection, String[] selectionArgs, + String groupBy, String having, String sortOrder, String limit) { + return buildQuery(projectionIn, selection, groupBy, having, sortOrder, limit); + } + + /** * Construct a SELECT statement suitable for use in a group of * SELECT statements that will be joined through UNION operators * in buildUnionQuery. @@ -422,10 +431,6 @@ public class SQLiteQueryBuilder * formatted as an SQL WHERE clause (excluding the WHERE * itself). Passing null will return all rows for the given * URL. - * @param selectionArgs You may include ?s in selection, which - * will be replaced by the values from selectionArgs, in order - * that they appear in the selection. The values will be bound - * as Strings. * @param groupBy A filter declaring how to group rows, formatted * as an SQL GROUP BY clause (excluding the GROUP BY itself). * Passing null will cause the rows to not be grouped. @@ -443,7 +448,6 @@ public class SQLiteQueryBuilder int computedColumnsOffset, String typeDiscriminatorValue, String selection, - String[] selectionArgs, String groupBy, String having) { int unionColumnsCount = unionColumns.length; @@ -463,12 +467,36 @@ public class SQLiteQueryBuilder } } return buildQuery( - projectionIn, selection, selectionArgs, groupBy, having, + projectionIn, selection, groupBy, having, null /* sortOrder */, null /* limit */); } /** + * @deprecated This method's signature is misleading since no SQL parameter + * substitution is carried out. The selection arguments parameter does not get + * used at all. To avoid confusion, call + * {@link #buildUnionSubQuery(String, String[], Set<String>, int, String, String, String, String)} + * instead. + */ + @Deprecated + public String buildUnionSubQuery( + String typeDiscriminatorColumn, + String[] unionColumns, + Set<String> columnsPresentInTable, + int computedColumnsOffset, + String typeDiscriminatorValue, + String selection, + String[] selectionArgs, + String groupBy, + String having) { + return buildUnionSubQuery( + typeDiscriminatorColumn, unionColumns, columnsPresentInTable, + computedColumnsOffset, typeDiscriminatorValue, selection, + groupBy, having); + } + + /** * Given a set of subqueries, all of which are SELECT statements, * construct a query that returns the union of what those * subqueries return. diff --git a/core/java/android/os/DropBoxManager.java b/core/java/android/os/DropBoxManager.java index 7889a92..4a0612c 100644 --- a/core/java/android/os/DropBoxManager.java +++ b/core/java/android/os/DropBoxManager.java @@ -150,7 +150,12 @@ public class DropBoxManager { try { is = getInputStream(); byte[] buf = new byte[maxBytes]; - return new String(buf, 0, Math.max(0, is.read(buf))); + int readBytes = 0; + int n = 0; + while (n >= 0 && (readBytes += n) < maxBytes) { + n = is.read(buf, readBytes, maxBytes - readBytes); + } + return new String(buf, 0, readBytes); } catch (IOException e) { return null; } finally { diff --git a/core/java/android/preference/DialogPreference.java b/core/java/android/preference/DialogPreference.java index bbad2b6..45c8174 100644 --- a/core/java/android/preference/DialogPreference.java +++ b/core/java/android/preference/DialogPreference.java @@ -322,7 +322,7 @@ public abstract class DialogPreference extends Preference implements private void requestInputMethod(Dialog dialog) { Window window = dialog.getWindow(); window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE | - WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); } /** diff --git a/services/java/com/android/server/MountService.java b/services/java/com/android/server/MountService.java index cb55808..542c740 100644 --- a/services/java/com/android/server/MountService.java +++ b/services/java/com/android/server/MountService.java @@ -958,6 +958,17 @@ class MountService extends IMountService.Stub // Post a unmount message. ShutdownCallBack ucb = new ShutdownCallBack(path, observer); mHandler.sendMessage(mHandler.obtainMessage(H_UNMOUNT_PM_UPDATE, ucb)); + } else if (observer != null) { + /* + * Observer is waiting for onShutDownComplete when we are done. + * Since nothing will be done send notification directly so shutdown + * sequence can continue. + */ + try { + observer.onShutDownComplete(StorageResultCode.OperationSucceeded); + } catch (RemoteException e) { + Slog.w(TAG, "RemoteException when shutting down"); + } } } diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp index a2f085a..82c143d 100644 --- a/tools/aapt/ResourceTable.cpp +++ b/tools/aapt/ResourceTable.cpp @@ -1629,13 +1629,6 @@ status_t ResourceTable::startBag(const SourcePos& sourcePos, // If a parent is explicitly specified, set it. if (bagParent.size() > 0) { - String16 curPar = e->getParent(); - if (curPar.size() > 0 && curPar != bagParent) { - sourcePos.error("Conflicting parents specified, was '%s', now '%s'\n", - String8(e->getParent()).string(), - String8(bagParent).string()); - return UNKNOWN_ERROR; - } e->setParent(bagParent); } @@ -1683,13 +1676,6 @@ status_t ResourceTable::addBag(const SourcePos& sourcePos, // If a parent is explicitly specified, set it. if (bagParent.size() > 0) { - String16 curPar = e->getParent(); - if (curPar.size() > 0 && curPar != bagParent) { - sourcePos.error("Conflicting parents specified, was '%s', now '%s'\n", - String8(e->getParent()).string(), - String8(bagParent).string()); - return UNKNOWN_ERROR; - } e->setParent(bagParent); } |