Backed out changeset 399980ce108a (bug 1137483)
authorCarsten "Tomcat" Book <cbook@mozilla.com>
Fri, 08 May 2015 10:48:33 +0200
changeset 274176 c53c5bd43297e17c8cf2ca920cc4c899f9a1923e
parent 274175 e32bd51ba9ea2accb8917500b1f1176a99ee7fca
child 274177 86203ac87a085594b4d8496060f42dab7787949f
push id863
push userraliiev@mozilla.com
push dateMon, 03 Aug 2015 13:22:43 +0000
treeherdermozilla-release@f6321b14228d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1137483
milestone40.0a1
backs out399980ce108a47e41be77480eacf731a39e91ada
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changeset 399980ce108a (bug 1137483)
mobile/android/base/home/SearchEngineBar.java
mobile/android/base/resources/layout/browser_search.xml
mobile/android/base/resources/layout/search_engine_bar_item.xml
--- a/mobile/android/base/home/SearchEngineBar.java
+++ b/mobile/android/base/home/SearchEngineBar.java
@@ -9,17 +9,16 @@ import android.content.Context;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.util.AttributeSet;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
-import android.widget.FrameLayout;
 
 import org.mozilla.gecko.R;
 import org.mozilla.gecko.widget.FaviconView;
 import org.mozilla.gecko.widget.TwoWayView;
 
 import java.util.ArrayList;
 import java.util.List;
 
@@ -29,22 +28,34 @@ public class SearchEngineBar extends Two
 
     public interface OnSearchBarClickListener {
         public void onSearchBarClickListener(SearchEngine searchEngine);
     }
 
     private final SearchEngineAdapter adapter;
     private OnSearchBarClickListener onSearchBarClickListener;
 
+    private final Paint dividerPaint;
+
     public SearchEngineBar(final Context context, final AttributeSet attrs) {
         super(context, attrs);
 
         adapter = new SearchEngineAdapter();
         setAdapter(adapter);
         setOnItemClickListener(this);
+
+        dividerPaint = new Paint();
+        dividerPaint.setColor(getResources().getColor(R.color.divider_light));
+    }
+
+    @Override
+    public void onDraw(final Canvas canvas) {
+        super.onDraw(canvas);
+
+        canvas.drawLine(0, 0, getWidth(), 0, dividerPaint);
     }
 
     @Override
     public void onItemClick(final AdapterView<?> parent, final View view, final int position,
             final long id) {
         if (onSearchBarClickListener == null) {
             throw new IllegalStateException(
                     OnSearchBarClickListener.class.getSimpleName() + " is not initialized");
@@ -96,38 +107,9 @@ public class SearchEngineBar extends Two
 
             final FaviconView faviconView = (FaviconView) view.findViewById(R.id.search_engine_icon);
             final SearchEngine searchEngine = searchEngines.get(position);
             faviconView.updateAndScaleImage(searchEngine.getIcon(), searchEngine.getEngineIdentifier());
 
             return view;
         }
     }
-
-    /**
-     * A Container to surround the SearchEngineBar. This is necessary so we can draw
-     * a divider across the entire width of the screen, but have the inner list layout
-     * not take up the full width of the screen so it can be centered within this container
-     * if there aren't enough items that it needs to scroll.
-     *
-     * Note: a better implementation would have this View inflating an inner layout so
-     * the containing layout doesn't need two "SearchEngineBar" Views but it wasn't
-     * worth the refactor time.
-     */
-    @SuppressWarnings("unused") // via XML
-    public static class SearchEngineBarContainer extends FrameLayout {
-        private final Paint dividerPaint;
-
-        public SearchEngineBarContainer(final Context context, final AttributeSet attrs) {
-            super(context, attrs);
-
-            dividerPaint = new Paint();
-            dividerPaint.setColor(getResources().getColor(R.color.divider_light));
-        }
-
-        @Override
-        public void onDraw(final Canvas canvas) {
-            super.onDraw(canvas);
-
-            canvas.drawLine(0, 0, getWidth(), 0, dividerPaint);
-        }
-    }
 }
--- a/mobile/android/base/resources/layout/browser_search.xml
+++ b/mobile/android/base/resources/layout/browser_search.xml
@@ -14,31 +14,29 @@
               android:layout="@layout/home_suggestion_prompt" />
 
     <view class="org.mozilla.gecko.home.BrowserSearch$HomeSearchListView"
             android:id="@+id/home_list_view"
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_weight="1" />
 
-    <view class="org.mozilla.gecko.home.SearchEngineBar$SearchEngineBarContainer"
-          android:layout_width="match_parent"
-          android:layout_height="wrap_content"
-          android:background="#fff">
+    <!-- The desired layout_height is 48dp. We add paddingTop so we have
+         space to dynamically draw the divider in onDraw. Preferably, we'd
+         wrap_content on the inner layout, but TwoWayView ignores wrap_content. :(
 
-        <!-- We add a marginTop so the outer container can draw a divider.
+         Note: the layout_height value is shared with the inner layout
+         (search_engine_bar_item at the time of this writing).
 
-             listSelector is too slow for showing pressed state
-             so we set the pressed colors on the child. -->
-        <org.mozilla.gecko.home.SearchEngineBar
-              android:id="@+id/search_engine_bar"
-              android:layout_width="wrap_content"
-              android:layout_height="48dp"
-              android:layout_marginTop="1dp"
-              android:orientation="horizontal"
-              android:layout_gravity="center_horizontal"
-              android:choiceMode="singleChoice"
-              android:listSelector="@android:color/transparent"
-              android:cacheColorHint="@android:color/transparent"/>
-
-   </view>
+         listSelector is too slow for showing pressed state
+         so we set the pressed colors on the child. -->
+    <org.mozilla.gecko.home.SearchEngineBar
+          android:id="@+id/search_engine_bar"
+          android:layout_width="match_parent"
+          android:layout_height="49dp"
+          android:paddingTop="1dp"
+          android:orientation="horizontal"
+          android:background="#fff"
+          android:choiceMode="singleChoice"
+          android:listSelector="@android:color/transparent"
+          android:cacheColorHint="@android:color/transparent"/>
 
 </LinearLayout>
--- a/mobile/android/base/resources/layout/search_engine_bar_item.xml
+++ b/mobile/android/base/resources/layout/search_engine_bar_item.xml
@@ -6,17 +6,17 @@
 <!-- TwoWayView doesn't let us set the margin around items (except as
      gecko:itemMargin, but that doesn't increase the hit area) so we
      have to surround the main View by a ViewGroup to create a pressable margin.
 
      Note: the layout_height values are shared with the parent
      View (browser_search at the time of this writing). -->
 <FrameLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_height="match_parent"
+    android:layout_height="48dp"
     android:layout_width="72dp"
     android:background="@color/pressed_about_page_header_grey">
 
     <!-- Width & height are set to make the Favicons as sharp as possible
          based on asset size. -->
     <org.mozilla.gecko.widget.FaviconView
         android:id="@+id/search_engine_icon"
         android:layout_width="16dp"