Bug 1234316 - Show migration message in Reading List panel r?liuche draft
authorAndrzej Hunt <ahunt@mozilla.com>
Tue, 22 Mar 2016 12:58:19 -0700
changeset 343978 9fb26911dec1643c03720e35d668cee402e5df76
parent 343977 a30891be3fd91d1f9adf3c0fb3f4ce9f959594f6
child 343979 b5d554e55253c91ada8b0118d59e3bf4af8466ce
push id13730
push userahunt@mozilla.com
push dateWed, 23 Mar 2016 17:30:25 +0000
reviewersliuche
bugs1234316
milestone48.0a1
Bug 1234316 - Show migration message in Reading List panel r?liuche We'll kill this panel in a few weeks, hence we don't really care about duplication here. MozReview-Commit-ID: 5XSS3ROa5P3
mobile/android/base/java/org/mozilla/gecko/home/ReadingListPanel.java
mobile/android/base/locales/en-US/android_strings.dtd
mobile/android/base/resources/drawable-hdpi/reading_list_migration.png
mobile/android/base/resources/drawable-xhdpi/reading_list_migration.png
mobile/android/base/resources/drawable-xxhdpi/reading_list_migration.png
mobile/android/base/resources/layout/readinglistpanel_gone_fragment.xml
mobile/android/base/strings.xml.in
--- a/mobile/android/base/java/org/mozilla/gecko/home/ReadingListPanel.java
+++ b/mobile/android/base/java/org/mozilla/gecko/home/ReadingListPanel.java
@@ -1,228 +1,61 @@
 /* -*- Mode: Java; c-basic-offset: 4; tab-width: 20; indent-tabs-mode: nil; -*-
  * 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/. */
 
 package org.mozilla.gecko.home;
 
-import java.util.EnumSet;
+import android.os.Bundle;
 
-import org.mozilla.gecko.GeckoProfile;
-import org.mozilla.gecko.R;
-import org.mozilla.gecko.reader.ReaderModeUtils;
-import org.mozilla.gecko.Telemetry;
-import org.mozilla.gecko.TelemetryContract;
-import org.mozilla.gecko.db.BrowserContract.ReadingListItems;
-import org.mozilla.gecko.db.BrowserContract.URLColumns;
-import org.mozilla.gecko.db.ReadingListAccessor;
-import org.mozilla.gecko.home.HomeContextMenuInfo.RemoveItemType;
-import org.mozilla.gecko.home.HomePager.OnUrlOpenListener;
-
-import android.content.Context;
-import android.database.Cursor;
-import android.os.Bundle;
-import android.support.v4.content.Loader;
-import android.support.v4.widget.CursorAdapter;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.view.ViewStub;
-import android.widget.AdapterView;
-import android.widget.ImageView;
-import android.widget.TextView;
-import org.mozilla.gecko.util.NetworkUtils;
+
+import org.mozilla.gecko.AppConstants;
+import org.mozilla.gecko.Locales;
+import org.mozilla.gecko.R;
+
+import java.util.EnumSet;
+import java.util.Locale;
 
 /**
- * Fragment that displays reading list contents in a ListView.
+ * Fragment that used to display reading list contents in a ListView, and now directs
+ * users to Bookmarks to view their former reading-list content.
  */
 public class ReadingListPanel extends HomeFragment {
 
-    // Cursor loader ID for reading list
-    private static final int LOADER_ID_READING_LIST = 0;
-
-    // Formatted string in hint text to be replaced with an icon.
-    private final String MATCH_STRING = "%I";
-
-    // Adapter for the list of reading list items
-    private ReadingListAdapter mAdapter;
-
-    // The view shown by the fragment
-    private HomeListView mList;
-
-    // Reference to the View to display when there are no results.
-    private View mEmptyView;
-
-    // Reference to top view.
-    private View mTopView;
-
-    // Callbacks used for the reading list and favicon cursor loaders
-    private CursorLoaderCallbacks mCursorLoaderCallbacks;
-
     @Override
-    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
-        return inflater.inflate(R.layout.home_list_panel, container, false);
-    }
+    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstance) {
+        final ViewGroup root = (ViewGroup) inflater.inflate(R.layout.readinglistpanel_gone_fragment, container, false);
 
-    @Override
-    public void onViewCreated(View view, Bundle savedInstanceState) {
-        super.onViewCreated(view, savedInstanceState);
-
-        mTopView = view;
-
-        mList = (HomeListView) view.findViewById(R.id.list);
-        mList.setTag(HomePager.LIST_TAG_READING_LIST);
-
-        mList.setOnItemClickListener(new AdapterView.OnItemClickListener() {
+        // We could update the ID names - however this panel is only intended to be live for one
+        // release, hence there's little utility in optimising this code.
+        root.findViewById(R.id.welcome_account).setOnClickListener(new View.OnClickListener() {
             @Override
-            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-                final Context context = getActivity();
-                if (context == null) {
-                    return;
-                }
-
-                final Cursor c = mAdapter.getCursor();
-                if (c == null || !c.moveToPosition(position)) {
-                    return;
-                }
-
-                String url = c.getString(c.getColumnIndexOrThrow(URLColumns.URL));
-                url = ReaderModeUtils.getAboutReaderForUrl(url);
-
-                Telemetry.sendUIEvent(TelemetryContract.Event.LOAD_URL, TelemetryContract.Method.LIST_ITEM, "reading_list");
-                Telemetry.addToHistogram("FENNEC_LOAD_SAVED_PAGE", NetworkUtils.isConnected(context) ? 0 : 1);
-
-                // This item is a TwoLinePageRow, so we allow switch-to-tab.
-                mUrlOpenListener.onUrlOpen(url, EnumSet.of(OnUrlOpenListener.Flags.ALLOW_SWITCH_TO_TAB));
-
-                markAsRead(context, id);
+            public void onClick(View v) {
+                mUrlOpenListener.onUrlOpen("about:home?panel=" + HomeConfig.getIdForBuiltinPanelType(HomeConfig.PanelType.BOOKMARKS),
+                        EnumSet.noneOf(HomePager.OnUrlOpenListener.Flags.class));
             }
         });
 
-        mList.setContextMenuInfoFactory(new HomeContextMenuInfo.Factory() {
+        root.findViewById(R.id.welcome_browse).setOnClickListener(new View.OnClickListener() {
             @Override
-            public HomeContextMenuInfo makeInfoForCursor(View view, int position, long id, Cursor cursor) {
-                final HomeContextMenuInfo info = new HomeContextMenuInfo(view, position, id);
-                info.url = cursor.getString(cursor.getColumnIndexOrThrow(ReadingListItems.URL));
-                info.title = cursor.getString(cursor.getColumnIndexOrThrow(ReadingListItems.TITLE));
-                info.readingListItemId = cursor.getInt(cursor.getColumnIndexOrThrow(ReadingListItems._ID));
-                info.isUnread = cursor.getInt(cursor.getColumnIndexOrThrow(ReadingListItems.IS_UNREAD)) == 1;
-                info.itemType = RemoveItemType.READING_LIST;
-                return info;
+            public void onClick(View v) {
+                final String link = getString(R.string.migrated_reading_list_url,
+                        AppConstants.MOZ_APP_VERSION,
+                        AppConstants.OS_TARGET,
+                        Locales.getLanguageTag(Locale.getDefault()));
+
+                mUrlOpenListener.onUrlOpen(link,
+                        EnumSet.noneOf(HomePager.OnUrlOpenListener.Flags.class));
             }
         });
-        registerForContextMenu(mList);
-    }
 
-    private void markAsRead(final Context context, final long id) {
-        GeckoProfile.get(context).getDB().getReadingListAccessor().markAsRead(
-            context.getContentResolver(),
-            id
-        );
-    }
-
-    @Override
-    public void onDestroyView() {
-        super.onDestroyView();
-
-        // Discard any additional item clicks on the list as the
-        // panel is getting destroyed (bug 1210243).
-        mList.setOnItemClickListener(null);
-
-        mList = null;
-        mTopView = null;
-        mEmptyView = null;
-    }
-
-    @Override
-    public void onActivityCreated(Bundle savedInstanceState) {
-        super.onActivityCreated(savedInstanceState);
-
-        mAdapter = new ReadingListAdapter(getActivity(), null);
-        mList.setAdapter(mAdapter);
-
-        // Create callbacks before the initial loader is started.
-        mCursorLoaderCallbacks = new CursorLoaderCallbacks();
-        loadIfVisible();
+        return root;
     }
 
     @Override
     protected void load() {
-        getLoaderManager().initLoader(LOADER_ID_READING_LIST, null, mCursorLoaderCallbacks);
-    }
-
-    private void updateUiFromCursor(Cursor c) {
-        // We delay setting the empty view until the cursor is actually empty.
-        // This avoids image flashing.
-        if ((c == null || c.getCount() == 0) && mEmptyView == null) {
-            final ViewStub emptyViewStub = (ViewStub) mTopView.findViewById(R.id.home_empty_view_stub);
-            mEmptyView = emptyViewStub.inflate();
-
-            final TextView emptyText = (TextView) mEmptyView.findViewById(R.id.home_empty_text);
-            emptyText.setText(R.string.home_reading_list_empty);
-
-            final ImageView emptyImage = (ImageView) mEmptyView.findViewById(R.id.home_empty_image);
-            emptyImage.setImageResource(R.drawable.icon_reading_list_empty);
-
-            mList.setEmptyView(mEmptyView);
-        }
-    }
-
-    /**
-     * Cursor loader for the list of reading list items.
-     */
-    private static class ReadingListLoader extends SimpleCursorLoader {
-        private final ReadingListAccessor accessor;
-
-        public ReadingListLoader(Context context) {
-            super(context);
-            accessor = GeckoProfile.get(context).getDB().getReadingListAccessor();
-        }
-
-        @Override
-        public Cursor loadCursor() {
-            return accessor.getReadingList(getContext().getContentResolver());
-        }
-    }
-
-    /**
-     * Cursor adapter for the list of reading list items.
-     */
-    private class ReadingListAdapter extends CursorAdapter {
-        public ReadingListAdapter(Context context, Cursor cursor) {
-            super(context, cursor, 0);
-        }
-
-        @Override
-        public void bindView(View view, Context context, Cursor cursor) {
-            final ReadingListRow row = (ReadingListRow) view;
-            row.updateFromCursor(cursor);
-        }
-
-        @Override
-        public View newView(Context context, Cursor cursor, ViewGroup parent) {
-            return LayoutInflater.from(parent.getContext()).inflate(R.layout.reading_list_item_row, parent, false);
-        }
-    }
-
-    /**
-     * LoaderCallbacks implementation that interacts with the LoaderManager.
-     */
-    private class CursorLoaderCallbacks extends TransitionAwareCursorLoaderCallbacks {
-        @Override
-        public Loader<Cursor> onCreateLoader(int id, Bundle args) {
-            return new ReadingListLoader(getActivity());
-        }
-
-        @Override
-        public void onLoadFinishedAfterTransitions(Loader<Cursor> loader, Cursor c) {
-            mAdapter.swapCursor(c);
-            updateUiFromCursor(c);
-        }
-
-        @Override
-        public void onLoaderReset(Loader<Cursor> loader) {
-            super.onLoaderReset(loader);
-            mAdapter.swapCursor(null);
-        }
+        // Must be overriden, but we're not doing any loading hence no real implementation...
     }
 }
--- a/mobile/android/base/locales/en-US/android_strings.dtd
+++ b/mobile/android/base/locales/en-US/android_strings.dtd
@@ -19,16 +19,20 @@
 <!ENTITY firstrun_sync_subtext "Sync your tabs, passwords, and more everywhere you use it.">
 <!ENTITY firstrun_signin_message "Get connected, get started">
 <!ENTITY firstrun_signin_button "Sign in to Sync">
 <!ENTITY  onboard_start_button_browser "Start Browsing">
 <!ENTITY firstrun_button_next "Next">
 
 <!ENTITY  onboard_start_restricted1 "Stay safe and in control with this simplified version of &brandShortName;.">
 
+<!ENTITY  reading_list_migration_title "Reading List connected">
+<!ENTITY  reading_list_migration_subtext "Your Reading List items will now be added to your Bookmarks">
+<!ENTITY  reading_list_migration_goto_bookmarks "Go to Bookmarks">
+
 <!-- Localization note: These are used as the titles of different pages on the home screen.
      They are automatically converted to all caps by the Android platform. -->
 <!ENTITY  bookmarks_title "Bookmarks">
 <!ENTITY  history_title "History">
 <!ENTITY  reading_list_title "Reading List">
 <!ENTITY  recent_tabs_title "Recent Tabs">
 
 <!ENTITY  switch_to_tab "Switch to tab">
new file mode 100644
index 0000000000000000000000000000000000000000..69af116f2e23546f55ff9704d19268c7ea124f1d
GIT binary patch
literal 2906
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
Ef~B0HDgXcg
new file mode 100644
index 0000000000000000000000000000000000000000..cab7f2a3602653ecf593bec66fdbb4f562b75e6f
GIT binary patch
literal 6208
zc$@)17{BL<P)<h;3K|Lk000e1NJLTq00AQa002-31^@s6QsEQ!00001b5ch_0Itp)
z=>Py1`bk7VRCodHoe7v!)s@H3t!{Q)SOo>48^MK$8;C(fa6yH*Oq?*Eam6UmsADun
z{WN2uMl+5&8b_OM;>zb_+@f(Zqa-wof>DBwilR{h-5{WX#03Nz=z8-zuez$MyQ`|}
z)qAxy_kQ2y-FM%;=brm7-oMX1cX>u^un1TL+Ajjtt0qf>xl@c&CSn#4e=HScb%oer
zQ;14goh$+tfdCMgRre3#gr5^}LQT@l8tGz=lc{B&HRTmXDo)A5P{?Xw5wHjZfWVWR
z_ZDfG-JFP2t}{q>gzpWYg}_BvG7210E6^fP00?aP`Z{r>cVbP<c{029$i&a`mutx=
zf7siWEdtp=K&>K2u1YH0af~!LzexH#PY)~^<q3G(tVJMe2z>MPl?=!BO)1}T&X(%B
zqf?g2@k2{SIR@M|XA#IM0@WM3GIMrKT5W{Gx29DtM};gI<p^loj71<P2!yv!Pwp#f
zp@HLkPiC(g)gm`<x0a0Z2EA?AA`mbFFFBpWG1qyL+8_mE9a%E+^vl`87J&jrU~S!0
zd`0_v($JAJq_XxnPj#|X*pg9}fVE;R0y#xsp;Ic3b3<lrIt5`JSu)D(*R!=O0)>UZ
zU+XS_j0R_>lrvFg*Nw@nZg90M83l)>m1Ggf4+4&E_i%3X)p$e0ZNBOUP}!1E03ccs
z7J<AXP+j)}tfGT`>EOu8Qn~sBUow1Fwq)cJKwI4+kXHnBHFemzDG(iu<kdQ|WE9A+
zXoXk=@`S*w+A|rVjR>T5#~ClPYR3m6D+3{=8Pv&373VS8SGLJf5@Jc$A+p3wkllGv
z#5QUXC?o`o+{_yhU~p&FP7F|B+M-O_C39TRc}6<Q7xG;(a;k*o6s{uyy~I_+$Oqg{
zG!?Qw$7<Q;ECPjtK-FsA4d+jRD-<d{MP>||AGq8$1QwKK<W$SyF7Y@J&?Xs&?%iUn
zAJ6`d97g^xdCnp)8!Q5QC<0-uqHF|bx2`+NIT_{EGID0g0g%cm#8c_~Da8FeV7paH
zrKg!LyFApfMJ)pD1A*#QW2HeBXRR|O<}{gJ9=z3+LgAcRMp!-_0B|DYGqG{_b!ZCR
znm;nsa;Pm(P$YEcPM5J~?+0mYs1PrX<CH94zP$5}9XmQVG&FSP-i@Tgp-`y4q@<)?
zLx&C>>U;F)Q9pe6@STO&535s#2!zega9n3tIgM&zch6c*$tWk55&oa<_<wEzyGwwf
zPa04}i>xD2gVVYO3aY^dx*Hi6Mjt|Gx0#vp^VoemNGx5twAc3S+lN6eLyR%~x$ehR
zEyjLCy=v@1eh02zLIZL(QSWoE8>#p?(Y<oNCL9ib)U#*Ll}8+L#J66A+Ol~-pla<%
z3GZ5#{gz86$;`noXTP0D3t1;4=V3WWcFJ5xWJsHxGO~p-i-_|mUt_M2598}Fth*4O
z(ww-w*C{h5?!IV}uf6u#pxwK7AA`b&LJ-5ax{-9xe02g+(m%C2Dey7zBjSfxSbyo)
zuiraEhYqdh-iAUzpmNm<sBupARWZwCX8Ez%Zzs}%Z!&Uz!(ZxMIGY_Aj>v<sR<@9S
z5Bq11{D8^$N>K(+cB0&F$}c6(qf8A`_DfSu*)z=R&xHPli0b^y;hC~GexnQIn^;}}
zCLo@^5YI?d8-)cjikE&Aq|>(mRZXZ8`sxtxU9L;fe<|rVCQO*{w}gdlX7&(x#wn4_
zbtf=9TfmBI-|uc(iW+l~gvy?h=_c#GS<fAU5V}G(<DdbZZdb?i;oK*Z^Etz-o3Laa
zY1U~Yf9L*b>bxwSWs&)jYYjCklIq5JNZ#kU5?>^g$T?<)ycoSLglpqa>m+nhr~D}p
zPkGRKK@4H!Zb$A8joe4mCER!7Sts&3HKsf2l^9q+_9qCN%XMzIZr$dO969pqz=T^t
z!jZ83MZ!9}d^m6r9im|t+3B2fcns!-V|0|V+>OR8mk@FK;7^0pB@u}<lkYfCN~Ijr
zNIXhDV;~a!&+RpALdLZ+Se`YLBx94Gq1yfYKv%~aH}VjEBhLKIUs$+sVP~Ai;~)Sf
zpOcA4k!};)L>lvQZ=>!?t~yj&$Mtip5%uqUMjPty`K(v3UYor-q*tt1(Q)I(jeSc?
zOZUUc-4{81X-EB0{gFSEs}2*($cs)8BvLP79(8pA>g&Y0$bWI{*s&`T7POhI5qM<N
zUQ)kxI7h|mAN9j|M<Q2odbKWGU^xa)uo9F}k_s)CFtK;&1DP^V|1f$E311kjpCMR2
zN<8{<odifdJWGzRVDSBv$jMB@`({$7QYNF%|HQ-_`3N#PBzB*p1O(I_a+u7^doFPj
z&35zBG%xU0>b*sscSwJPtdF_>c-**gN<dkhCP}X4n{U3^f!VoohLlQ7hoH|f=rWq?
z;N-PhKcUWY;%_0Qr;b1V_%*Fd?14FY-q1&D!4+%AQ7fmBbPRu<GyKC<kSH3XGu|tS
zjaC%bQsQOhZT>%S$q4JmNEI)6Sk5AKDlhxsv^%PP8<DrDvltud17y^4ujHlQWtxG!
z-sB&}Q0iUoeTT-Gxxdq1hd5ye;>gxvLsrA$#fy7jMV!gYc`gl2<eHYr%!}#zT&S~*
zI?I@DU&c%NA^G8~Djbk-^?B{wx${^EQ;BIbVvpzAwJq`Vk7CZBm6*D8>GJgG(W5uF
zRi|A%S8He2wqyC4>oG3zsI?=`q5PlCWJJ*}Ab|(IrvLAW4)KIog0Fbr!SBfwm%Q9Q
z8s{Z^33d2y9GT#u*MCEJ4Rz+>L0Vv@%2$c%Vqxur!}%_VVn(9pndV^~y-M3S@*0DY
zOR<g~i{57AiY0UpFV#Qua>bKi!loKY<{ci^XzbXr<B~CB#$;r=CTt+jnJZVW?6iLU
zdL5RYhAO8Mn|ydlbORIhZ9T>8+=C~aaDrNd?Jqp~X&<TI_HT6Thy4HCbBQP2U)C5#
zO3vLfqx^nI$}zmyR{`7uZPeGlX!Egf^yQkzp0K($%4hX4exrZE0=q4)k^h45ei(Nj
zXmZh_Mc>uG@Tr9IvVB6Cm$=Ty3RtkmSOI|Y$}6u7#9~xp`bYYIGB~94J5lBh;)A_=
z_kPx^?<>`Bkk@C`tM-uw^ENM6Szh%h#>S0QOT~~GhS@2d?YgvCAB;OgvxK}F%&B=Y
zP2M)T0=htgQ^f|_25BM(!{WUP>6a}X8J>;CkMc%>?yusd`W?fU-|^Re8R>$-D1ojy
z$$ItGSNlLlQy{1Fz+(()*A<YYadpT))V+K62a0|+u5$HF5YZh;`f0P<LLk&}n3B;i
zDEITYvO4rSi=mgA)t-Xud#aWZ4B<8g;jB*9IDVrN{P>%p$9-aDO616({8BNQaS5!W
zd%3-gxQ6(9h8s#if%w7VnrT-_UD%1QNlEE)NGa*^2A=CM|2|0R*QrPec|-W4a2>J^
zp!~}xo_Jz4bqmAqHfz;m{C~WpUHyQ$>`bU+vca!27QfEoSi43(#s9K@?7oczWHu1;
ziEMT?Olv!$i}`L~*ra3UtOeTrJ;Kk9Yv8A}c~9KEO%@0OkVgpX@(ipcU4n61GHXdm
ziFiNjmhNv!N?2SYsK1E1v6)@UJ_jL9;hKMow6gXFX3GAxKp-zdHA;sl8Fhe+bRlB*
zSPweLcg!?NxK_k@k~Pm;adt-+Jvwr5tX?#Ma~nd_r2$zB_`0ru_#TWkVC0Xqsm@dz
z3K#+WOG8m_Cd4w8Ym;Rgr?Zk0q;uDR0R!&SZ790rV9S;*_+wf-$|-y8`0?ZKi>scW
z<gCy5BfPDa*|Roh8S|rH0k>+HK&u!s$sN!0V*h~``+G5Uja<WveSh@6@u-h!lsOeE
zh$%~kNr}T>$*!TyOVockagktho!RW=+U4$_iU>4pJsHf_5FZOFgVD@NNe6)?OP1`#
zkn1W)=UU1qTi~~f;qXr&u5!x#dlI?dvQ*+Q7Fw=N@;rChRkc$k9DX!+4Yr4t%w}fN
zMoL9lU4)Dta#u9R$Okg{U&tgzPLS2X5Rej0%kVj6=aX53eKpTqF6&wr$mTtItwpba
zac!K$P;Ft{y-gN40*$0}C1mpxR82@qSU<aXo^(kC&;NjRbXGxhwQ`jX)flqb&^7|@
z7N*nKjO)6IB4kv>$%zfkhGne|E^}Xe{m<gC#z&|4b&XMlyqB#RthPJC+(pZoKqJ3`
zM48pFq1X`67449UT1rVtDOI1C(L5Lb(etUw<m_41>IXRv_KKXfSDX#iONluv{s1?Z
zjI=Mj*z378Ij)V2<He3Swq5I}x73;`90-ykxIU=Jp=Tqg|4@pez8^8ge;y?I+n69D
z%V;xaM;^r5wTZwG&{gj2ox2r*6%bRY2f^zZt{uv7ZHtFG*(s{a8LH|YW(9WhB{SJ+
ztr(@Um(iSyMfBhC$~Tcwr96SPb5Y#G+ZpoQ5_g|8iT`FePH=Tt>#W*|T)Q)TQ_oUg
zrue@|TG8hNd|7>I<uhWmA7R#$_c52b4tbx_ZS{O2!0g#!kkMlNMLpBi1Iy|GhHF=+
zTRyAh^eeAbtDofm=6P9dr`Uw+-Zf*+ml<VGw^Th8%h2r|@gZ_NNPJE#jrG$XBDfH1
zX%2A%j^y_N{XXJk3Pon+lpuDyJJ@6Of=;j!d?PZK$H@)R=1Fn)Hd&+yU>zOig@_uv
zc_qU=JvS=<LDxSWQm%j8bqR_Mih#QW15+UZ5$WS5GKy^V(7b3E1?e=KdWCqdWjOaf
zFZ>3!W6XhkE+lg9N@LJXvqt`c)H{e1IAHCC=%XxN^<cK9pi2&HC~5?B?;BRm-CjF^
zB^9DxHP>Xby<SE7D?fpwReG2I6K~;Me}dXeZTx5zWsfK8O^l4(71PE&xGYju2U!ge
zN_=o!pHj<Bk-BNNiel$V7wL`9W;7Pd&xniK@-M}U&N!`(^!Sj%qKhwP(}jz`h7B9e
zhfoG*q9OH;W-U|UIFF}rVngo^-^VIglu3WuO&w#dV=d9FRQ-vOQDdRzL$%0xMoslY
z?u)ORW}kt8F30*Q!>=?H0;=HpJX=V<YAT$gR3F#L-gH=-Bjp^0Tb85NZ8KRw07B7C
zw|>ISx=_-OfI#c&VPn0zp9vwo9;n=65oXLSQc<qksZxgKvlU7<4f5kyjmY=RVz(Rw
zqE<+swx;vlGlw?Ic*?3n`!&ew*(M>urm()YGkkoFc20^(-sSqL9**7HM6n^z@{gn^
z{UNiyTeogKl1j@wRm^7LDSfv}^{O*)Z*YEf(lg<+sX@ME-vtrfo=)S<$*3o5h`!MC
zZes_R4Z}w?5Ub}C6$S}~6A5(|a+cc%OsPlrsBLn;XBL%xAaw#KBX<UG7i1UN57%-!
ze^4SlZC-I80GT|3@8=w@(f>o96{r4I&y})WVfv7-<%x9@<=gsKXli)2o6Em^^B+v#
z-<Yl*(JAp*dB{hB8W+n5$&c{=JQ}-iOkj;13=#0HZ`WZwf$Y6omT~Wmti&=JmhhQ}
zOy@Da8@7Y?qF<klcbvDB6OyaYxoO{8%jfpK;1R&@Gl|(WUBIfdW1Z4f7!uM=v%g@9
z|F(4N<h<NtwftWW>j8m7bKZ8Y8Z_o%X3eHWX3)}Wv^5#Eac~*mK^w$z`b!W$AYl{H
zvyjxWti!$;dd4%bdkhTqx^PH{ega9qK&xw*4o_1=EsG0AnTx4yL(wCkGix}s_lIP<
zXvA95FX*~yy{ChniJIS$_z5eqSFjR$Wx;p+(e(qRz8*qy1{b`pUKKPfM4nN8Aw(4R
zQnfW1RWihK+%G*u<!q9f!dE0BgyMcJWEO+D=pp@@@5tL&N$O9kfkKwx$lejH?B&YZ
zrSD*AO`^_3;#gwZe-SCW8S>MGRCi((t><ckMWC<|s9aMnX17{M2NbrVp0s;j4rMum
zE^F`@T9Z+tgUdQ_p#C&@Cn}qv+^<P@;pMO4Ah!8_tq|ntFi*{DC7|?zT3|TGT^%C(
z<n%O3PfVO%L$;JfAd3i8*B-)7|5y0Gtml9gchI9idX=BUA^Rz}j3w)2D>Bl8_=8>m
zoO9wTW#!;9_r%7{aw~1!L`<klOoxbNri54n0nL-1SYXVg#h%-QMW9#__|57OEF@mY
zkS*=4F9p|C!z^Lv&}5lfmeHt4`;%<8qK0QpWE5FQc#l^A+)cA0qXAlvqU}xnFS*vT
z_g@!8Ze_4{2PBm0xP>*8kDL%tf(4eveQsX+X3JXy0z=^P^5s&s_B3&J>2W-XCxQZN
zEGvTkEZw@DB^UL}n21!Xgw{x_gUbX9q)d9Gb8uP0O|z~0{|(m7Z4l9&#E#7#N66;|
z)_>3AOzXmTL^f02-dF^DAW&I*F-O-v?n6TEtLmq(Lu~xgWeYw-LdyvM(8mnb)<P5q
zHp=h9G4#iiUeK~V-8Ab???<QHcg5{hYgxGIesAhDx3nUk%Kbje0Ak0MG!?fgi@+X$
zfC+cyohz>3u1V|?$ZGe5WaOgZFg%L?gpuQ}CtBdHuKt2!LZWMob_cL{OTRXW^BN-h
zsJMO!tF1*KKm;6f5FXnA1?EUpLp^%?KPo6W8L5*v-0XX57ho-orAeLo@8AKm4Jf)0
z@>)loeMyfYHeWMj<O-(aEfE2X4SO&GMh^1uUKI{dAxFvR4ZjK{C!<cBZLO2%(OIs@
zS<~_7O($!6E5x&idhQ1x@%wzxvS8y!7;hzC5BOgO5&dV&GWOmgu*V@#tShn|myCS>
zTuI5uTq>Kegw(r#N*k@{;-+Pg$~>-0KyNVXwJTK}2<mkfPo5^T<a*a)N>$iCvk2@7
z2)IYp)|M5eWh6Sh^dFLvQKRS^A&dC{)a;No@^nZQS?|+b7Mcs>8?UM~uIRqYYdu@u
zBG4`on7w)+@0o6GDZbz^ybK_uBqJQkZ($uB&D7ob_>a0mLLck!i+pz%e*o=U5f%Z9
zfFcks;e~D}PAp6?8-5e6Gb&C*tkxERB1WLHb{dRSUA#Rg?I|+{ed$MkUx!%vY1r1a
z2v`K-5Qxl3#bp#(vUIoap_(P5BKys)y6qH!fM%rfhE6zS$tZ8&+lDOy!6M-MWe!#y
zkJ17lQ)?M{#M~CQ2n3FRPV0*q61d!43JhRI&5}_re=ysYMIaFZRqOWW_>iuN9u-fX
z|Amj1jEd*iwwktA1WNonfAbEFZe{TqEE)L(&{nqy_(mY?->UGfgI@u9QstAIeVxT*
z$;j`IVC!21{2~y5^VhEmfz<zYi!bZQl2IVPf)!#B@Pj}wd%IF-@C{$;_@kH42Bnad
z{82b;$tXEG_K8KH2oMNhCMsbsjqHSg9*~kQL-?xe=@JT!bV(^;;Q%sy_M<ca6|4x0
zfJML;0s;Gs+z(kgPm5D}Gg~xP$5fj>`2R?sF0*RKbBNoon87<P_AHQuzkb-gX@UF*
zR)|F)Lj?5evfIO-W>~v*HT_D5Q+hol^j7PKEpn=A&*n2pcaR&*r?!n*j0HBXMJs9F
zTAxwcP}zbOfh-`f)1RLurjar4G7LLIDu$e#77=O18D%d*9wS6TmoR**i^<A7VSPrK
zV`pnx1oDi4-#uN14`+n<jOvWCqlt4p_eMWKJ+tfy=~Z^Hn9$W66SUE@jA#YN=`V9W
z>lVHBdbO63SHx_2i$IVF7$?JRAm&R*=%+HMd>G%gpMzx+_NA771-7E>0qM2Z5M<qg
zEYAlfy6x9*%dkJ#XTCaMD_aCC0{##PJNj|c^n)=wAfdaZiz$bM?vY8RKK;sRl$_Fc
zD?_*2rCX<RNa<dpw+}P!4teWOoJy9A;=r&;i$Km1FlMjx+QjlP^0;*Bq?XY2d`9}K
z^y+0;>f!;LA*Ji2wBt}V@je16rFRUaankHhYrQNPwZ_EeSOjv2fb)KvjTw1KN}MBc
zPEVCf56JD2&zBEaCo{`0<GAVJ5YltR)E{;$EnU%Of07iiQ~ODPvDp@ZoFMS<>Or#8
zSx#FC_H`M)x?`@#m$N7*x}?)c<(gx}H0T<oQ(G4|H4s;V{MIEC<ybOGgo@3x2;>rh
zs?|qedE8ALMYH;K<;7AGdQ_$jTGXZ`l1n|~+p1bU4nn$tA)J2HbqhntKS{T)*T_Zv
ezKt*DCH?<k<_<WJze}nB0000<MNUMnLSTYQs0q>l
new file mode 100644
index 0000000000000000000000000000000000000000..f81bbb0ab76370cc3383397285b64c7ad5f6ab1e
GIT binary patch
literal 10435
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
WD4Q(&IX(#PWmA+@lc|<65B)!Z(>#s<
copy from mobile/android/base/resources/layout/firstrun_sync_fragment.xml
copy to mobile/android/base/resources/layout/readinglistpanel_gone_fragment.xml
--- a/mobile/android/base/resources/layout/firstrun_sync_fragment.xml
+++ b/mobile/android/base/resources/layout/readinglistpanel_gone_fragment.xml
@@ -12,44 +12,48 @@
 
     <LinearLayout android:layout_width="match_parent"
                   android:layout_height="wrap_content"
                   android:minHeight="@dimen/firstrun_min_height"
                   android:background="@color/about_page_header_grey"
                   android:gravity="center_horizontal"
                   android:orientation="vertical">
 
-
         <ImageView android:layout_width="wrap_content"
-                   android:layout_height="@dimen/firstrun_background_height"
+                   android:layout_height="wrap_content"
                    android:layout_marginTop="40dp"
                    android:layout_marginBottom="40dp"
                    android:scaleType="fitCenter"
                    android:layout_gravity="center"
                    android:adjustViewBounds="true"
-                   android:src="@drawable/firstrun_signin"/>
+                   android:src="@drawable/reading_list_migration"/>
 
         <TextView android:layout_width="@dimen/firstrun_content_width"
                   android:layout_height="wrap_content"
                   android:gravity="center"
-                  android:paddingBottom="40dp"
                   android:textAppearance="@style/TextAppearance.FirstrunLight.Main"
-                  android:text="@string/firstrun_signin_message"/>
+                  android:text="@string/reading_list_migration_title"/>
+
+        <TextView android:id="@+id/firstrun_subtext"
+                  android:layout_width="@dimen/firstrun_content_width"
+                  android:layout_height="wrap_content"
+                  android:paddingTop="20dp"
+                  android:paddingBottom="30dp"
+                  android:gravity="center"
+                  android:text="@string/reading_list_migration_subtext"
+                  android:textAppearance="@style/TextAppearance.FirstrunRegular.Body"
+                  android:singleLine="false"/>
 
         <Button android:id="@+id/welcome_account"
                 style="@style/Widget.Firstrun.Button"
                 android:background="@drawable/button_background_action_orange_round"
                 android:layout_gravity="center"
-                android:text="@string/firstrun_signin_button"/>
-
-        <View android:layout_weight="1"
-              android:layout_height="0dp"
-              android:layout_width="match_parent"/>
+                android:text="@string/reading_list_migration_goto_bookmarks"/>
 
         <TextView android:id="@+id/welcome_browse"
                   android:layout_width="wrap_content"
                   android:layout_height="wrap_content"
-                  android:padding="30dp"
+                  android:padding="16dp"
                   android:gravity="center"
                   android:textAppearance="@style/TextAppearance.FirstrunRegular.Link"
-                  android:text="@string/firstrun_welcome_button_browser"/>
+                  android:text="@string/pref_learn_more"/>
     </LinearLayout>
 </ScrollView>
--- a/mobile/android/base/strings.xml.in
+++ b/mobile/android/base/strings.xml.in
@@ -52,16 +52,19 @@
 
   <string name="firstrun_welcome_restricted">&onboard_start_restricted1;</string>
 
   <string name="bookmarks_title">&bookmarks_title;</string>
   <string name="history_title">&history_title;</string>
   <string name="reading_list_title">&reading_list_title;</string>
   <string name="recent_tabs_title">&recent_tabs_title;</string>
 
+  <!-- https://support.mozilla.org/1/mobile/%VERSION%/%OS%/%LOCALE%/reading-list -->
+  <string name="migrated_reading_list_url">https://support.mozilla.org/1/mobile/&formatS1;/&formatS2;/&formatS3;/reading-list</string>
+
   <string name="switch_to_tab">&switch_to_tab;</string>
 
   <string name="crash_reporter_title">&crash_reporter_title;</string>
   <string name="crash_message2">&crash_message2;</string>
   <string name="crash_send_report_message3">&crash_send_report_message3;</string>
   <string name="crash_include_url2">&crash_include_url2;</string>
   <string name="crash_sorry">&crash_sorry;</string>
   <string name="crash_comment">&crash_comment;</string>
@@ -346,16 +349,20 @@
   <string name="site_settings_cancel">&site_settings_cancel;</string>
   <string name="site_settings_clear">&site_settings_clear;</string>
 
   <string name="reading_list_added">&reading_list_added3;</string>
   <string name="reading_list_removed">&reading_list_removed;</string>
   <string name="reading_list_remove">&reading_list_remove;</string>
   <string name="reading_list_duplicate">&reading_list_duplicate;</string>
 
+  <string name="reading_list_migration_title">&reading_list_migration_title;</string>
+  <string name="reading_list_migration_subtext">&reading_list_migration_subtext;</string>
+  <string name="reading_list_migration_goto_bookmarks">&reading_list_migration_goto_bookmarks;</string>
+
   <string name="page_action_dropmarker_description">&page_action_dropmarker_description;</string>
 
   <string name="contextmenu_open_new_tab">&contextmenu_open_new_tab;</string>
   <string name="contextmenu_open_private_tab">&contextmenu_open_private_tab;</string>
   <string name="contextmenu_remove">&contextmenu_remove;</string>
   <string name="contextmenu_add_to_launcher">&contextmenu_add_to_launcher;</string>
   <string name="contextmenu_share">&contextmenu_share;</string>
   <string name="contextmenu_pasteandgo">&contextmenu_pasteandgo;</string>