Merge change 5054 into donut

* changes:
  Rollback the number of loop in the memory stress test
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index 5d5a277..6c7bcda 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -88,13 +88,11 @@
     private static final String INSTANCE_KEY_COMPONENT = "comp";
     private static final String INSTANCE_KEY_APPDATA = "data";
     private static final String INSTANCE_KEY_GLOBALSEARCH = "glob";
-    private static final String INSTANCE_KEY_DISPLAY_QUERY = "dQry";
-    private static final String INSTANCE_KEY_DISPLAY_SEL_START = "sel1";
-    private static final String INSTANCE_KEY_DISPLAY_SEL_END = "sel2";
-    private static final String INSTANCE_KEY_SELECTED_ELEMENT = "slEl";
-    private static final int INSTANCE_SELECTED_BUTTON = -2;
-    private static final int INSTANCE_SELECTED_QUERY = -1;
-    
+    private static final String INSTANCE_KEY_STORED_COMPONENT = "sComp";
+    private static final String INSTANCE_KEY_STORED_APPDATA = "sData";
+    private static final String INSTANCE_KEY_PREVIOUS_COMPONENTS = "sPrev";
+    private static final String INSTANCE_KEY_USER_QUERY = "uQry";
+
     private static final int SEARCH_PLATE_LEFT_PADDING_GLOBAL = 12;
     private static final int SEARCH_PLATE_LEFT_PADDING_NON_GLOBAL = 7;
     
@@ -450,8 +448,6 @@
     /**
      * Save the minimal set of data necessary to recreate the search
      * 
-     * TODO: go through this and make sure that it saves everything that is needed
-     * 
      * @return A bundle with the state of the dialog.
      */
     @Override
@@ -462,20 +458,11 @@
         bundle.putParcelable(INSTANCE_KEY_COMPONENT, mLaunchComponent);
         bundle.putBundle(INSTANCE_KEY_APPDATA, mAppSearchData);
         bundle.putBoolean(INSTANCE_KEY_GLOBALSEARCH, mGlobalSearchMode);
-        
-        // UI state
-        bundle.putString(INSTANCE_KEY_DISPLAY_QUERY, mSearchAutoComplete.getText().toString());
-        bundle.putInt(INSTANCE_KEY_DISPLAY_SEL_START, mSearchAutoComplete.getSelectionStart());
-        bundle.putInt(INSTANCE_KEY_DISPLAY_SEL_END, mSearchAutoComplete.getSelectionEnd());
-        
-        int selectedElement = INSTANCE_SELECTED_QUERY;
-        if (mGoButton.isFocused()) {
-            selectedElement = INSTANCE_SELECTED_BUTTON;
-        } else if (mSearchAutoComplete.isPopupShowing()) {
-            selectedElement = 0; // TODO mSearchTextField.getListSelection()    // 0..n
-        }
-        bundle.putInt(INSTANCE_KEY_SELECTED_ELEMENT, selectedElement);
-        
+        bundle.putParcelable(INSTANCE_KEY_STORED_COMPONENT, mStoredComponentName);
+        bundle.putBundle(INSTANCE_KEY_STORED_APPDATA, mStoredAppSearchData);
+        bundle.putParcelableArrayList(INSTANCE_KEY_PREVIOUS_COMPONENTS, mPreviousComponents);
+        bundle.putString(INSTANCE_KEY_USER_QUERY, mUserQuery);
+
         return bundle;
     }
 
@@ -489,45 +476,27 @@
      */
     @Override
     public void onRestoreInstanceState(Bundle savedInstanceState) {
-        // Get the launch info
         ComponentName launchComponent = savedInstanceState.getParcelable(INSTANCE_KEY_COMPONENT);
         Bundle appSearchData = savedInstanceState.getBundle(INSTANCE_KEY_APPDATA);
         boolean globalSearch = savedInstanceState.getBoolean(INSTANCE_KEY_GLOBALSEARCH);
-        
-        // get the UI state
-        String displayQuery = savedInstanceState.getString(INSTANCE_KEY_DISPLAY_QUERY);
-        int querySelStart = savedInstanceState.getInt(INSTANCE_KEY_DISPLAY_SEL_START, -1);
-        int querySelEnd = savedInstanceState.getInt(INSTANCE_KEY_DISPLAY_SEL_END, -1);
-        int selectedElement = savedInstanceState.getInt(INSTANCE_KEY_SELECTED_ELEMENT);
-        
-        // show the dialog.  skip any show/hide animation, we want to go fast.
-        // send the text that actually generates the suggestions here;  we'll replace the display
-        // text as necessary in a moment.
-        if (!show(displayQuery, false, launchComponent, appSearchData, globalSearch)) {
+        ComponentName storedComponentName =
+                savedInstanceState.getParcelable(INSTANCE_KEY_STORED_COMPONENT);
+        Bundle storedAppSearchData =
+                savedInstanceState.getBundle(INSTANCE_KEY_STORED_APPDATA);
+        ArrayList<ComponentName> previousComponents =
+                savedInstanceState.getParcelableArrayList(INSTANCE_KEY_PREVIOUS_COMPONENTS);
+        String userQuery = savedInstanceState.getString(INSTANCE_KEY_USER_QUERY);
+
+        // Set stored state
+        mStoredComponentName = storedComponentName;
+        mStoredAppSearchData = storedAppSearchData;
+        mPreviousComponents = previousComponents;
+
+        // show the dialog.
+        if (!doShow(userQuery, false, launchComponent, appSearchData, globalSearch)) {
             // for some reason, we couldn't re-instantiate
             return;
         }
-        
-        mSearchAutoComplete.setText(displayQuery);
-        
-        // clean up the selection state
-        switch (selectedElement) {
-        case INSTANCE_SELECTED_BUTTON:
-            mGoButton.setEnabled(true);
-            mGoButton.setFocusable(true);
-            mGoButton.requestFocus();
-            break;
-        case INSTANCE_SELECTED_QUERY:
-            if (querySelStart >= 0 && querySelEnd >= 0) {
-                mSearchAutoComplete.requestFocus();
-                mSearchAutoComplete.setSelection(querySelStart, querySelEnd);
-            }
-            break;
-        default:
-            // TODO: defer selecting a list element until suggestion list appears
-//            mSearchAutoComplete.setListSelection(selectedElement)
-            break;
-        }
     }
     
     /**
diff --git a/include/private/opengles/gl_context.h b/include/private/opengles/gl_context.h
index 0c7ad46..a85f275 100644
--- a/include/private/opengles/gl_context.h
+++ b/include/private/opengles/gl_context.h
@@ -456,7 +456,7 @@
     void validate();
     matrixf_t& top() { return stack[depth]; }
     const matrixf_t& top() const { return stack[depth]; }
-    const uint32_t top_ops() const { return ops[depth]; }
+    uint32_t top_ops() const { return ops[depth]; }
     inline bool isRigidBody() const {
         return !(ops[depth] & ~(OP_TRANSLATE|OP_UNIFORM_SCALE|OP_ROTATE));
     }
diff --git a/opengl/libagl/texture.cpp b/opengl/libagl/texture.cpp
index b6f534b..14a910c 100644
--- a/opengl/libagl/texture.cpp
+++ b/opengl/libagl/texture.cpp
@@ -900,7 +900,7 @@
         memcpy(textureObject->crop_rect, params, 4*sizeof(GLint));
         break;
     default:
-        ogles_error(c, GL_INVALID_ENUM);
+        texParameterx(target, pname, GLfixed(params[0]), c);
         return;
     }
 }
@@ -919,6 +919,13 @@
     texParameterx(target, pname, param, c);
 }
 
+void glTexParameteri(
+        GLenum target, GLenum pname, GLint param)
+{
+    ogles_context_t* c = ogles_context_t::get();
+    texParameterx(target, pname, GLfixed(param), c);
+}
+
 // ----------------------------------------------------------------------------
 #if 0
 #pragma mark -
diff --git a/opengl/tests/angeles/Android.mk b/opengl/tests/angeles/Android.mk
index 46958d3..e193483 100644
--- a/opengl/tests/angeles/Android.mk
+++ b/opengl/tests/angeles/Android.mk
@@ -5,7 +5,7 @@
 LOCAL_SRC_FILES:= app-linux.c demo.c.arm
 LOCAL_SHARED_LIBRARIES := libEGL libGLESv1_CM libui
 LOCAL_MODULE:= angeles
-LOCAL_MODULE_TAGS := tests
+LOCAL_MODULE_TAGS := optional
 include $(BUILD_EXECUTABLE)
 
 
@@ -13,5 +13,5 @@
 LOCAL_SRC_FILES:= gpustate.c
 LOCAL_SHARED_LIBRARIES := libEGL libGLESv1_CM
 LOCAL_MODULE:= gpustate
-LOCAL_MODULE_TAGS := tests
+LOCAL_MODULE_TAGS := optional
 include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/filter/Android.mk b/opengl/tests/filter/Android.mk
index a448f0d..31b7d9a 100644
--- a/opengl/tests/filter/Android.mk
+++ b/opengl/tests/filter/Android.mk
@@ -12,6 +12,6 @@
 
 LOCAL_MODULE:= test-opengl-filter
 
-LOCAL_MODULE_TAGS := tests
+LOCAL_MODULE_TAGS := optional
 
 include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/finish/Android.mk b/opengl/tests/finish/Android.mk
index 26836c1..8b46cd7 100644
--- a/opengl/tests/finish/Android.mk
+++ b/opengl/tests/finish/Android.mk
@@ -12,6 +12,6 @@
 
 LOCAL_MODULE:= test-opengl-finish
 
-LOCAL_MODULE_TAGS := tests
+LOCAL_MODULE_TAGS := optional
 
 include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/textures/Android.mk b/opengl/tests/textures/Android.mk
index a8c62209..8d5f56d 100644
--- a/opengl/tests/textures/Android.mk
+++ b/opengl/tests/textures/Android.mk
@@ -12,6 +12,6 @@
 
 LOCAL_MODULE:= test-opengl-textures
 
-LOCAL_MODULE_TAGS := tests
+LOCAL_MODULE_TAGS := optional
 
 include $(BUILD_EXECUTABLE)
diff --git a/opengl/tests/tritex/Android.mk b/opengl/tests/tritex/Android.mk
index 5cd1f04..76fd8dd 100644
--- a/opengl/tests/tritex/Android.mk
+++ b/opengl/tests/tritex/Android.mk
@@ -12,6 +12,6 @@
 
 LOCAL_MODULE:= test-opengl-tritex
 
-LOCAL_MODULE_TAGS := tests
+LOCAL_MODULE_TAGS := optional
 
 include $(BUILD_EXECUTABLE)
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 8cf1cc2..16bb29d 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -4869,9 +4869,11 @@
                 isRestrictedBackupMode = (mBackupTarget.backupMode == BackupRecord.RESTORE)
                         || (mBackupTarget.backupMode == BackupRecord.BACKUP_FULL);
             }
-            ensurePackageDexOpt(app.info.packageName);
-            if (app.instrumentationInfo != null) {
-                ensurePackageDexOpt(app.instrumentationInfo.packageName);
+            ensurePackageDexOpt(app.instrumentationInfo != null
+                    ? app.instrumentationInfo.packageName
+                    : app.info.packageName);
+            if (app.instrumentationClass != null) {
+                ensurePackageDexOpt(app.instrumentationClass.getPackageName());
             }
             thread.bindApplication(processName, app.instrumentationInfo != null
                     ? app.instrumentationInfo : app.info, providers,
diff --git a/tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java b/tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java
index dc6860a..719e758 100644
--- a/tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java
+++ b/tests/permission/src/com/android/framework/permission/tests/HardwareServicePermissionTest.java
@@ -22,10 +22,12 @@
 import android.os.IHardwareService;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.test.suitebuilder.annotation.SmallTest;
 
 /**
  * Verify that Hardware apis cannot be called without required permissions.
  */
+@SmallTest
 public class HardwareServicePermissionTest extends TestCase {
 
     private IHardwareService mHardwareService;