[Touchless] Update placeholder text and add special case for first run

Bug: 954529
Change-Id: I9cba7d40d2bc024226274debf1ffc1c5e60b5241
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1574297
Reviewed-by: Matthew Jones <mdjones@chromium.org>
Reviewed-by: Justin DeWitt <dewittj@chromium.org>
Commit-Queue: Brandon Wylie <wylieb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654064}
diff --git a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabMediator.java b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabMediator.java
index 68ef4f8d..a27034e 100644
--- a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabMediator.java
+++ b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabMediator.java
@@ -8,6 +8,7 @@
 import static android.text.format.DateUtils.getRelativeTimeSpanString;
 
 import android.content.Context;
+import android.content.SharedPreferences;
 import android.graphics.Bitmap;
 
 import org.chromium.chrome.browser.favicon.LargeIconBridge;
@@ -31,6 +32,8 @@
  */
 // TODO(crbug.com/948858): Add unit tests for this behavior.
 class OpenLastTabMediator implements HistoryProvider.BrowsingHistoryObserver, FocusableComponent {
+    private static final String FIRST_LAUNCHED_KEY = "TOUCHLESS_WAS_FIRST_LAUNCHED";
+
     private final Context mContext;
     private final Profile mProfile;
     private final NativePageHost mNativePageHost;
@@ -55,6 +58,13 @@
                 ViewUtils.createDefaultRoundedIconGenerator(mContext.getResources(), false);
         mIconBridge = new LargeIconBridge(mProfile);
 
+        // Check if this is a first launch of Chrome.
+        SharedPreferences prefs =
+                mNativePageHost.getActiveTab().getActivity().getPreferences(Context.MODE_PRIVATE);
+        boolean firstLaunched = prefs.getBoolean(FIRST_LAUNCHED_KEY, true);
+        prefs.edit().putBoolean(FIRST_LAUNCHED_KEY, false).apply();
+        mModel.set(OpenLastTabProperties.OPEN_LAST_TAB_FIRST_LAUNCH, firstLaunched);
+
         // TODO(wylieb):Investigate adding an item limit to the API.
         // Query the history for everything (no API exists to only query for the most recent).
         mHistoryBridge.queryHistory("");
diff --git a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabProperties.java b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabProperties.java
index d89c627d..3a0ccde 100644
--- a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabProperties.java
+++ b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabProperties.java
@@ -28,6 +28,9 @@
     public static final PropertyModel.WritableBooleanPropertyKey OPEN_LAST_TAB_LOAD_SUCCESS =
             new PropertyModel.WritableBooleanPropertyKey();
 
+    public static final PropertyModel.WritableBooleanPropertyKey OPEN_LAST_TAB_FIRST_LAUNCH =
+            new PropertyModel.WritableBooleanPropertyKey();
+
     public static final PropertyModel.WritableObjectPropertyKey<Runnable> ON_FOCUS_CALLBACK =
             new PropertyModel.WritableObjectPropertyKey<>();
 
diff --git a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabView.java b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabView.java
index ebc16087..e50e07d7 100644
--- a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabView.java
+++ b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabView.java
@@ -24,6 +24,7 @@
 // TODO(crbug.com/948858): Add render tests for this view.
 public class OpenLastTabView extends FrameLayout {
     private LinearLayout mPlaceholder;
+    private TextView mPlaceholderText;
 
     private LinearLayout mLastTabView;
     private ImageView mIconView;
@@ -42,6 +43,8 @@
         super.onFinishInflate();
 
         mPlaceholder = findViewById(R.id.placeholder);
+        mPlaceholderText = findViewById(R.id.placeholder_text);
+
         mLastTabView = findViewById(R.id.open_last_tab);
         mIconView = findViewById(R.id.favicon);
         mTitleText = findViewById(R.id.title);
@@ -60,6 +63,12 @@
         }
     }
 
+    void setFirstLaunched(boolean firstLaunched) {
+        if (firstLaunched) {
+            mPlaceholderText.setText(R.string.open_last_tab_placeholder_first_launch);
+        }
+    }
+
     void setOpenLastTabOnClickListener(OnClickListener onClickListener) {
         mLastTabView.setOnClickListener(onClickListener);
     }
diff --git a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabViewBinder.java b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabViewBinder.java
index 2222034..76de5934 100644
--- a/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabViewBinder.java
+++ b/chrome/android/touchless/java/src/org/chromium/chrome/browser/touchless/OpenLastTabViewBinder.java
@@ -23,6 +23,8 @@
             view.setTimestamp(model.get(OpenLastTabProperties.OPEN_LAST_TAB_TIMESTAMP));
         } else if (propertyKey == OpenLastTabProperties.OPEN_LAST_TAB_LOAD_SUCCESS) {
             view.setLoadSuccess(model.get(OpenLastTabProperties.OPEN_LAST_TAB_LOAD_SUCCESS));
+        } else if (propertyKey == OpenLastTabProperties.OPEN_LAST_TAB_FIRST_LAUNCH) {
+            view.setFirstLaunched(model.get(OpenLastTabProperties.OPEN_LAST_TAB_FIRST_LAUNCH));
         } else if (propertyKey == OpenLastTabProperties.ON_FOCUS_CALLBACK) {
             view.setOnFocusCallback(model.get(OpenLastTabProperties.ON_FOCUS_CALLBACK));
         } else if (propertyKey == OpenLastTabProperties.SHOULD_FOCUS_VIEW) {
diff --git a/chrome/android/touchless/java/strings/touchless_strings.grd b/chrome/android/touchless/java/strings/touchless_strings.grd
index 75f08ae..1048e0c 100644
--- a/chrome/android/touchless/java/strings/touchless_strings.grd
+++ b/chrome/android/touchless/java/strings/touchless_strings.grd
@@ -116,8 +116,11 @@
   </translations>
   <release seq="1">
     <messages fallback_to_english="true">
-      <message name="IDS_OPEN_LAST_TAB_PLACEHOLDER" desc="Message when user is first launching Chrome or after clearing history. [CHAR_LIMIT=NONE]">
-        Welcome to Chrome Explore
+      <message name="IDS_OPEN_LAST_TAB_PLACEHOLDER_FIRST_LAUNCH" desc="Message when user is first launching Chrome. [CHAR_LIMIT=NONE]">
+        Welcome to Chrome
+      </message>
+      <message name="IDS_OPEN_LAST_TAB_PLACEHOLDER" desc="Message after user has cleared history. [CHAR_LIMIT=NONE]">
+        Chrome
       </message>
       <message name="IDS_OPEN_LAST_TAB_JUST_NOW" desc="The present time or moment (noun). Used instead of a timestamp when the site was visited less than a minute ago. [CHAR_LIMIT=12]">
         Now