Bug 1383735 - Activity Stream: Update highlights layout to match latest mocks. r=mcomella
authorSebastian Kaspari <s.kaspari@gmail.com>
Mon, 07 Aug 2017 16:30:24 +0200
changeset 373385 450405f6daaa6f0e16c892766483bfda69e256fc
parent 373384 d24eb41fd63ca7d219d64be017058839281b9658
child 373386 ab0d7ef87baad0dbd762472ef573287bbea27ecb
push id48237
push users.kaspari@gmail.com
push dateTue, 08 Aug 2017 12:38:32 +0000
treeherderautoland@450405f6daaa [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersmcomella
bugs1383735
milestone57.0a1
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
Bug 1383735 - Activity Stream: Update highlights layout to match latest mocks. r=mcomella This is a version that does not use ConstraintLayout. Luckily I was able to simplify the layout nevertheless. MozReview-Commit-ID: 36AtqfmjZN0
mobile/android/app/src/australis/res/values/colors.xml
mobile/android/app/src/main/res/layout/activity_stream_card_history_item.xml
mobile/android/app/src/photon/res/values/colors.xml
mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/model/Highlight.java
mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/HighlightItem.java
--- a/mobile/android/app/src/australis/res/values/colors.xml
+++ b/mobile/android/app/src/australis/res/values/colors.xml
@@ -166,15 +166,14 @@
   <color name="top_site_default">#FFECF0F3</color>
   <color name="top_site_border">#FFCFD9E1</color>
 
   <color name="private_active_text">#FFFFFF</color>
 
   <color name="action_bar_bg_color">@color/toolbar_grey</color>
 
   <color name="activity_stream_subtitle">#FF919191</color>
-  <color name="activity_stream_timestamp">#FFD3D3D3</color>
   <color name="activity_stream_icon">#FF919191</color>
 
   <color name="tablet_tab_strip_divider_color">#555555</color>
 
   <color name="bookmark_folder_bg_color">#FCFCFC</color>
 </resources>
--- a/mobile/android/app/src/main/res/layout/activity_stream_card_history_item.xml
+++ b/mobile/android/app/src/main/res/layout/activity_stream_card_history_item.xml
@@ -1,128 +1,112 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:gecko="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginTop="0dp"
-    android:orientation="vertical">
+    android:background="?android:attr/selectableItemBackground"
+    android:orientation="horizontal">
+
+    <!-- On some devices, marginBottom is ignored for Views within a RelativeLayout.
+         Wrapping in a FrameLayout appears to be a sufficient workaround for this issue -->
+    <FrameLayout
+        android:id="@+id/icon_wrapper"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content">
 
-    <RelativeLayout
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:background="?android:attr/selectableItemBackground">
+        <org.mozilla.gecko.widget.FaviconView
+            android:id="@+id/icon"
+            android:layout_width="@dimen/favicon_bg"
+            android:layout_height="@dimen/favicon_bg"
+            android:layout_marginBottom="@dimen/activity_stream_base_margin"
+            android:layout_marginLeft="@dimen/activity_stream_base_margin"
+            android:layout_marginStart="@dimen/activity_stream_base_margin"
+            android:layout_marginTop="@dimen/activity_stream_base_margin"
+            gecko:enableRoundCorners="false"
+            tools:background="@drawable/favicon_globe" />
 
+    </FrameLayout>
+
+    <ImageView
+        android:id="@+id/menu"
+        android:layout_width="32dp"
+        android:layout_height="48dp"
+        android:layout_alignParentEnd="true"
+        android:layout_alignParentRight="true"
+        android:layout_alignParentTop="true"
+        android:layout_gravity="right|end|top"
+        android:contentDescription="@string/menu"
+        android:paddingBottom="16dp"
+        android:paddingTop="16dp" />
 
-        <!-- On some devices, marginBottom is ignored for Views within a RelativeLayout.
-             Wrapping in a FrameLayout appears to be a sufficient workaround for this issue -->
-        <FrameLayout
-            android:id="@+id/icon_wrapper"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content">
+    <TextView
+        android:id="@+id/page"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_toEndOf="@id/icon_wrapper"
+        android:layout_toLeftOf="@id/menu"
+        android:layout_toRightOf="@id/icon_wrapper"
+        android:layout_toStartOf="@id/menu"
+        android:paddingLeft="@dimen/activity_stream_base_margin"
+        android:paddingStart="@dimen/activity_stream_base_margin"
+        android:paddingTop="@dimen/activity_stream_base_margin"
+        android:textColor="@color/activity_stream_subtitle"
+        android:textSize="12sp"
+        tools:text="twitter" />
 
-            <org.mozilla.gecko.widget.FaviconView
-                android:id="@+id/icon"
-                android:layout_width="@dimen/favicon_bg"
-                android:layout_height="@dimen/favicon_bg"
-                android:layout_marginStart="@dimen/activity_stream_base_margin"
-                android:layout_marginLeft="@dimen/activity_stream_base_margin"
-                android:layout_marginTop="@dimen/activity_stream_base_margin"
-                android:layout_marginBottom="@dimen/activity_stream_base_margin"
-                android:layout_gravity="center"
-                gecko:enableRoundCorners="false"
-                tools:background="@drawable/favicon_globe" />
+    <TextView
+        android:id="@+id/card_history_label"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_below="@id/page"
+        android:layout_toEndOf="@id/icon_wrapper"
+        android:layout_toLeftOf="@id/menu"
+        android:layout_toRightOf="@id/icon_wrapper"
+        android:layout_toStartOf="@id/menu"
+        android:ellipsize="end"
+        android:maxLines="3"
+        android:paddingLeft="@dimen/activity_stream_base_margin"
+        android:paddingStart="@dimen/activity_stream_base_margin"
+        android:textColor="#ff000000"
+        android:textSize="14sp"
+        android:textStyle="bold"
+        tools:text="Descriptive title of a page that is veeeeeeery long - maybe even too long?" />
 
-        </FrameLayout>
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_alignParentBottom="true"
+        android:layout_below="@id/card_history_label"
+        android:layout_toEndOf="@id/icon_wrapper"
+        android:layout_toRightOf="@id/icon_wrapper"
+        android:gravity="center_vertical"
+        android:orientation="horizontal"
+        android:paddingBottom="@dimen/activity_stream_base_margin"
+        android:paddingEnd="@dimen/activity_stream_base_margin"
+        android:paddingLeft="@dimen/activity_stream_base_margin"
+        android:paddingRight="@dimen/activity_stream_base_margin"
+        android:paddingStart="@dimen/activity_stream_base_margin"
+        android:paddingTop="4dp"
+        tools:ignore="UseCompoundDrawables">
 
         <ImageView
-            android:id="@+id/menu"
-            android:layout_width="wrap_content"
-            android:layout_height="36dp"
-            android:layout_margin="2dp"
-            android:layout_alignParentEnd="true"
-            android:layout_alignParentRight="true"
-            android:layout_alignParentTop="true"
-            android:layout_gravity="right|end|top"
-            android:contentDescription="@string/menu"
-            android:src="@drawable/menu"
-            android:padding="@dimen/activity_stream_base_margin" />
-
-        <TextView
-            android:id="@+id/page"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            tools:text="twitter"
-            android:textSize="12sp"
-            android:textColor="@color/activity_stream_subtitle"
-            android:layout_toRightOf="@id/icon_wrapper"
-            android:layout_toEndOf="@id/icon_wrapper"
-            android:layout_toLeftOf="@id/menu"
-            android:layout_toStartOf="@id/menu"
-            android:paddingTop="@dimen/activity_stream_base_margin"
-            android:paddingLeft="@dimen/activity_stream_base_margin"
-            android:paddingStart="@dimen/activity_stream_base_margin"/>
+            android:id="@+id/source_icon"
+            android:layout_width="12dp"
+            android:layout_height="12dp"
+            tools:src="@drawable/ic_as_bookmarked" />
 
         <TextView
-            android:id="@+id/card_history_label"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_toEndOf="@id/icon_wrapper"
-            android:layout_toRightOf="@id/icon_wrapper"
-            android:maxLines="3"
-            android:ellipsize="end"
-            android:paddingLeft="@dimen/activity_stream_base_margin"
-            android:paddingStart="@dimen/activity_stream_base_margin"
-            android:textSize="14sp"
-            android:textStyle="bold"
-            android:textColor="#ff000000"
-            android:layout_below="@id/page"
-            android:layout_toLeftOf="@id/menu"
-            android:layout_toStartOf="@id/menu"
-            tools:text="Descriptive title of a page that is veeeeeeery long - maybe even too long?" />
-
-        <LinearLayout
-            android:layout_width="match_parent"
+            android:id="@+id/card_history_source"
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:layout_toRightOf="@id/icon_wrapper"
-            android:layout_toEndOf="@id/icon_wrapper"
-            android:layout_alignParentBottom="true"
-            android:paddingLeft="@dimen/activity_stream_base_margin"
-            android:paddingStart="@dimen/activity_stream_base_margin"
-            android:paddingRight="@dimen/activity_stream_base_margin"
-            android:paddingEnd="@dimen/activity_stream_base_margin"
-            android:paddingTop="4dp"
-            android:paddingBottom="@dimen/activity_stream_base_margin"
-            android:gravity="center_vertical"
-            android:layout_below="@id/card_history_label">
-
-            <ImageView
-                android:id="@+id/source_icon"
-                android:layout_width="12dp"
-                android:layout_height="12dp" />
+            android:layout_marginLeft="2dp"
+            android:layout_weight="1"
+            android:textColor="@color/activity_stream_subtitle"
+            android:textSize="12sp"
+            tools:text="Bookmarked" />
 
-            <TextView
-                android:id="@+id/card_history_source"
-                android:layout_width="0dp"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="2dp"
-                android:textSize="12sp"
-                android:layout_weight="1"
-                android:textColor="@color/activity_stream_subtitle"
-                tools:text="Bookmarked" />
-
-            <TextView
-                android:id="@+id/card_history_time_since"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textSize="12sp"
-                android:textColor="@color/activity_stream_timestamp"
-                tools:text="20m" />
-
-        </LinearLayout>
-    </RelativeLayout>
-</FrameLayout>
+    </LinearLayout>
+</RelativeLayout>
--- a/mobile/android/app/src/photon/res/values/colors.xml
+++ b/mobile/android/app/src/photon/res/values/colors.xml
@@ -277,15 +277,14 @@
     <color name="top_site_default">#FFECF0F3</color>
     <color name="top_site_border">#FFCFD9E1</color>
 
     <color name="private_active_text">#FFFFFF</color>
 
     <color name="action_bar_bg_color">@color/toolbar_grey</color>
 
     <color name="activity_stream_subtitle">#FF919191</color>
-    <color name="activity_stream_timestamp">#FFD3D3D3</color>
     <color name="activity_stream_icon">#FF919191</color>
 
     <color name="tablet_tab_strip_divider_color">#414146</color>
 
     <color name="bookmark_folder_bg_color">#FCFCFC</color>
 </resources>
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/model/Highlight.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/model/Highlight.java
@@ -31,17 +31,16 @@ public class Highlight implements Item {
 
     // A pattern matching a json object containing the key "description_length" and extracting the value: this
     // regex should perfectly match values in json without whitespace.
     private static final Pattern FAST_DESCRIPTION_LENGTH_PATTERN = Pattern.compile("\"description_length\":([0-9]+)");
 
     private final String title;
     private final String url;
     private final Utils.HighlightSource source;
-    private final long time;
 
     private long historyId;
 
     private @Nullable Metadata metadata; // lazily-loaded.
     private @Nullable final String metadataJSON;
     private @Nullable String fastImageURL;
     private int fastDescriptionLength;
 
@@ -51,17 +50,16 @@ public class Highlight implements Item {
     public static Highlight fromCursor(final Cursor cursor, final HighlightCandidateCursorIndices cursorIndices) {
         return new Highlight(cursor, cursorIndices);
     }
 
     private Highlight(final Cursor cursor, final HighlightCandidateCursorIndices cursorIndices) {
         title = cursor.getString(cursorIndices.titleColumnIndex);
         url = cursor.getString(cursorIndices.urlColumnIndex);
         source = Utils.highlightSource(cursor, cursorIndices);
-        time = cursor.getLong(cursorIndices.highlightsDateColumnIndex);
 
         historyId = cursor.getLong(cursorIndices.historyIDColumnIndex);
 
         metadataJSON = cursor.getString(cursorIndices.metadataColumnIndex);
         fastImageURL = initFastImageURL(metadataJSON);
         fastDescriptionLength = initFastDescriptionLength(metadataJSON);
 
         updateState();
@@ -190,21 +188,16 @@ public class Highlight implements Item {
         this.isBookmarked = bookmarked;
     }
 
     @Override
     public void updatePinned(boolean pinned) {
         this.isPinned = pinned;
     }
 
-    public String getRelativeTimeSpan() {
-        return DateUtils.getRelativeTimeSpanString(
-                        time, System.currentTimeMillis(), DateUtils.MINUTE_IN_MILLIS, 0).toString();
-    }
-
     public Utils.HighlightSource getSource() {
         return source;
     }
 
     public long getHistoryId() {
         return historyId;
     }
 }
--- a/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/HighlightItem.java
+++ b/mobile/android/base/java/org/mozilla/gecko/activitystream/homepanel/stream/HighlightItem.java
@@ -39,33 +39,31 @@ public class HighlightItem extends Strea
 
     public static final int LAYOUT_ID = R.layout.activity_stream_card_history_item;
 
     private Highlight highlight;
     private int position;
 
     private final FaviconView pageIconView;
     private final TextView pageTitleView;
-    private final TextView vTimeSince;
     private final TextView pageSourceView;
     private final TextView pageDomainView;
     private final ImageView pageSourceIconView;
 
     private Future<IconResponse> ongoingIconLoad;
     private int tilesMargin;
 
     public HighlightItem(final View itemView,
                          final HomePager.OnUrlOpenListener onUrlOpenListener,
                          final HomePager.OnUrlOpenInBackgroundListener onUrlOpenInBackgroundListener) {
         super(itemView);
 
         tilesMargin = itemView.getResources().getDimensionPixelSize(R.dimen.activity_stream_base_margin);
 
         pageTitleView = (TextView) itemView.findViewById(R.id.card_history_label);
-        vTimeSince = (TextView) itemView.findViewById(R.id.card_history_time_since);
         pageIconView = (FaviconView) itemView.findViewById(R.id.icon);
         pageSourceView = (TextView) itemView.findViewById(R.id.card_history_source);
         pageDomainView = (TextView) itemView.findViewById(R.id.page);
         pageSourceIconView = (ImageView) itemView.findViewById(R.id.source_icon);
 
         final ImageView menuButton = (ImageView) itemView.findViewById(R.id.menu);
 
         menuButton.setImageDrawable(
@@ -102,17 +100,16 @@ public class HighlightItem extends Strea
 
     public void bind(Highlight highlight, int position, int tilesWidth, int tilesHeight) {
         this.highlight = highlight;
         this.position = position;
 
         final String backendHightlightTitle = highlight.getTitle();
         final String uiHighlightTitle = !TextUtils.isEmpty(backendHightlightTitle) ? backendHightlightTitle : highlight.getUrl();
         pageTitleView.setText(uiHighlightTitle);
-        vTimeSince.setText(highlight.getRelativeTimeSpan());
 
         ViewGroup.LayoutParams layoutParams = pageIconView.getLayoutParams();
         layoutParams.width = tilesWidth - tilesMargin;
         layoutParams.height = tilesHeight;
         pageIconView.setLayoutParams(layoutParams);
 
         updateUiForSource(highlight.getSource());
         updatePageDomain();