Merge change 629 into donut

* changes:
  Display the app icon to the left of the search field for search within apps.
diff --git a/core/java/android/app/SearchDialog.java b/core/java/android/app/SearchDialog.java
index 3d89ad7..d3c29cf 100644
--- a/core/java/android/app/SearchDialog.java
+++ b/core/java/android/app/SearchDialog.java
@@ -57,6 +57,7 @@
 import android.widget.AutoCompleteTextView;
 import android.widget.Button;
 import android.widget.ImageButton;
+import android.widget.ImageView;
 import android.widget.ListView;
 import android.widget.TextView;
 import android.widget.AdapterView.OnItemClickListener;
@@ -89,12 +90,16 @@
     private static final int INSTANCE_SELECTED_BUTTON = -2;
     private static final int INSTANCE_SELECTED_QUERY = -1;
     
+    private static final int SEARCH_PLATE_LEFT_PADDING_GLOBAL = 12;
+    private static final int SEARCH_PLATE_LEFT_PADDING_NON_GLOBAL = 7;
+    
     // interaction with runtime
     private IntentFilter mCloseDialogsFilter;
     private IntentFilter mPackageFilter;
     
     // views & widgets
     private TextView mBadgeLabel;
+    private ImageView mAppIcon;
     private SearchAutoComplete mSearchAutoComplete;
     private Button mGoButton;
     private ImageButton mVoiceButton;
@@ -167,6 +172,7 @@
         mBadgeLabel = (TextView) findViewById(com.android.internal.R.id.search_badge);
         mSearchAutoComplete = (SearchAutoComplete)
                 findViewById(com.android.internal.R.id.search_src_text);
+        mAppIcon = (ImageView) findViewById(com.android.internal.R.id.search_app_icon);
         mGoButton = (Button) findViewById(com.android.internal.R.id.search_go_btn);
         mVoiceButton = (ImageButton) findViewById(com.android.internal.R.id.search_voice_btn);
         mSearchPlate = findViewById(com.android.internal.R.id.search_plate);
@@ -417,6 +423,7 @@
         if (isShowing()) {
             // Redraw (resources may have changed)
             updateSearchButton();
+            updateSearchAppIcon();
             updateSearchBadge();
             updateQueryHint();
         } 
@@ -429,6 +436,7 @@
         if (mSearchable != null) {
             updateSearchAutoComplete();
             updateSearchButton();
+            updateSearchAppIcon();
             updateSearchBadge();
             updateQueryHint();
             updateVoiceButton();
@@ -499,6 +507,34 @@
         mGoButton.setCompoundDrawablesWithIntrinsicBounds(iconLabel, null, null, null);
     }
     
+    private void updateSearchAppIcon() {
+        if (mGlobalSearchMode) {
+            mAppIcon.setImageResource(0);
+            mAppIcon.setVisibility(View.GONE);
+            mSearchPlate.setPadding(SEARCH_PLATE_LEFT_PADDING_GLOBAL,
+                    mSearchPlate.getPaddingTop(),
+                    mSearchPlate.getPaddingRight(),
+                    mSearchPlate.getPaddingBottom());
+        } else {
+            PackageManager pm = getContext().getPackageManager();
+            Drawable icon = null;
+            try {
+                ActivityInfo info = pm.getActivityInfo(mLaunchComponent, 0);
+                icon = pm.getApplicationIcon(info.applicationInfo);
+                if (DBG) Log.d(LOG_TAG, "Using app-specific icon");
+            } catch (NameNotFoundException e) {
+                icon = pm.getDefaultActivityIcon();
+                Log.w(LOG_TAG, mLaunchComponent + " not found, using generic app icon");
+            }
+            mAppIcon.setImageDrawable(icon);
+            mAppIcon.setVisibility(View.VISIBLE);
+            mSearchPlate.setPadding(SEARCH_PLATE_LEFT_PADDING_NON_GLOBAL,
+                    mSearchPlate.getPaddingTop(),
+                    mSearchPlate.getPaddingRight(),
+                    mSearchPlate.getPaddingBottom());
+        }
+    }
+
     /**
      * Setup the search "Badge" if requested by mode flags.
      */
@@ -517,18 +553,6 @@
             text = mActivityContext.getResources().getText(mSearchable.getLabelId()).toString();
             visibility = View.VISIBLE;
             if (DBG) Log.d(LOG_TAG, "Using badge label: " + mSearchable.getLabelId());
-        } else if (!mGlobalSearchMode) {
-            // Get the localized name of the application which we are doing search in.
-            try {
-                PackageManager pm = getContext().getPackageManager();
-                ActivityInfo info = pm.getActivityInfo(mLaunchComponent, 0);
-                text = pm.getApplicationLabel(info.applicationInfo);
-                visibility = View.VISIBLE;
-                if (DBG) Log.d(LOG_TAG, "Using application label: " + text);
-            } catch (NameNotFoundException e) {
-                // app not found, fine, don't use its name for the label
-                Log.w(LOG_TAG, mLaunchComponent + " not found.");
-            }
         }
         
         mBadgeLabel.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null);
diff --git a/core/res/res/layout/search_bar.xml b/core/res/res/layout/search_bar.xml
index 6155626..bdf0574 100644
--- a/core/res/res/layout/search_bar.xml
+++ b/core/res/res/layout/search_bar.xml
@@ -50,13 +50,21 @@
             android:textAppearance="?android:attr/textAppearanceSmall"
             android:textColor="?android:attr/textColorPrimaryInverse" />
 
-        <!-- Inner layout contains the button(s) and EditText -->
+        <!-- Inner layout contains the app icon, button(s) and EditText -->
         <LinearLayout
             android:id="@+id/search_edit_frame"
             android:layout_width="fill_parent"
             android:layout_height="wrap_content"
             android:orientation="horizontal">
             
+            <ImageView
+                android:id="@+id/search_app_icon"
+                android:layout_height="36dip"
+                android:layout_width="36dip"
+                android:layout_marginRight="7dip"
+                android:layout_gravity="center_vertical"
+            />
+
             <view class="android.app.SearchDialog$SearchAutoComplete"
                 android:id="@+id/search_src_text"
                 android:background="@drawable/textfield_search"
@@ -71,7 +79,7 @@
                 android:dropDownAnchor="@id/search_plate"
                 android:dropDownVerticalOffset="-9dip"
                 android:popupBackground="@android:drawable/search_dropdown_background"
-                />
+            />
                 
             <!-- This button can switch between text and icon "modes" -->
             <Button