Commit 9fdcb7d9 authored by Marian Fechete's avatar Marian Fechete Committed by Commit Bot

[Autofill Assistant] Update onboarding screen based on intent.

This CL updates the layout and informational messages for the AA
onboarding screen, based on intent and experiment ids.
Please see the screenshots shared offline already.

Bug: b/150927780
Change-Id: I9e6d30a9116c41f1c38362dd5a75907742707c66
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2098789
Commit-Queue: Marian Fechete <marianfe@google.com>
Reviewed-by: default avatarMathias Carlen <mcarlen@chromium.org>
Cr-Commit-Position: refs/heads/master@{#749714}
parent 5ba3014f
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:orientation="horizontal" android:orientation="horizontal"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:layout_marginTop="24dp"> android:layout_marginTop="16dp">
<ImageView <ImageView
android:id="@+id/onboarding_title_poodle" android:id="@+id/onboarding_title_poodle"
tools:ignore="contentDescription" tools:ignore="contentDescription"
...@@ -34,6 +34,13 @@ ...@@ -34,6 +34,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center_vertical" android:layout_gravity="center_vertical"
app:srcCompat="@drawable/ic_logo_assistant_24dp" /> app:srcCompat="@drawable/ic_logo_assistant_24dp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_horizontal"
android:layout_marginTop="12dp">
<TextView <TextView
android:id="@+id/onboarding_try_assistant" android:id="@+id/onboarding_try_assistant"
android:layout_width="wrap_content" android:layout_width="wrap_content"
...@@ -42,10 +49,6 @@ ...@@ -42,10 +49,6 @@
android:gravity="center" android:gravity="center"
android:text="@string/autofill_assistant_init_title" /> android:text="@string/autofill_assistant_init_title" />
<!-- This balances the picture on the other side to make the text centered--> <!-- This balances the picture on the other side to make the text centered-->
<Space
android:layout_width="24dp"
android:layout_height="1dp"/>
</LinearLayout> </LinearLayout>
...@@ -64,7 +67,7 @@ ...@@ -64,7 +67,7 @@
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_weight="4" android:layout_weight="4"
android:layout_marginTop="24dp" android:layout_marginTop="20dp"
android:textAppearance="@style/TextAppearance.AssistantBlackBody" android:textAppearance="@style/TextAppearance.AssistantBlackBody"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:text="@string/autofill_assistant_init_message" /> android:text="@string/autofill_assistant_init_message" />
...@@ -79,7 +82,7 @@ ...@@ -79,7 +82,7 @@
android:id="@+id/onboarding_separator" android:id="@+id/onboarding_separator"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="24dp" android:layout_marginTop="20dp"
android:gravity="center_horizontal" android:gravity="center_horizontal"
android:orientation="horizontal" android:orientation="horizontal"
android:weightSum="1.0"> android:weightSum="1.0">
...@@ -88,7 +91,7 @@ ...@@ -88,7 +91,7 @@
android:layout_height="1dp" android:layout_height="1dp"
android:layout_weight="0.33"/> android:layout_weight="0.33"/>
</LinearLayout> </LinearLayout>
<Space android:layout_width="0dp" android:layout_height="24dp"/> <Space android:layout_width="0dp" android:layout_height="20dp"/>
<!-- Terms and Conditions message and link --> <!-- Terms and Conditions message and link -->
<LinearLayout <LinearLayout
......
...@@ -8,6 +8,7 @@ import android.content.Context; ...@@ -8,6 +8,7 @@ import android.content.Context;
import android.text.SpannableString; import android.text.SpannableString;
import android.text.method.LinkMovementMethod; import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View;
import android.widget.ScrollView; import android.widget.ScrollView;
import android.widget.TextView; import android.widget.TextView;
...@@ -28,6 +29,7 @@ import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController; ...@@ -28,6 +29,7 @@ import org.chromium.chrome.browser.widget.bottomsheet.BottomSheetController;
import org.chromium.ui.text.NoUnderlineClickableSpan; import org.chromium.ui.text.NoUnderlineClickableSpan;
import org.chromium.ui.text.SpanApplier; import org.chromium.ui.text.SpanApplier;
import java.util.Arrays;
import java.util.Map; import java.util.Map;
/** /**
...@@ -36,7 +38,9 @@ import java.util.Map; ...@@ -36,7 +38,9 @@ import java.util.Map;
*/ */
class AssistantOnboardingCoordinator { class AssistantOnboardingCoordinator {
private static final String INTENT_IDENTFIER = "INTENT"; private static final String INTENT_IDENTFIER = "INTENT";
private static final String BUY_MOVIE_TICKETS_INTENT = "BUY_MOVIE_TICKET";
private static final String RENT_CAR_INTENT = "RENT_CAR"; private static final String RENT_CAR_INTENT = "RENT_CAR";
private static final String BUY_MOVIE_TICKETS_EXPERIMENT_ID = "4363482";
private final String mExperimentIds; private final String mExperimentIds;
private final Map<String, String> mParameters; private final Map<String, String> mParameters;
...@@ -194,10 +198,21 @@ class AssistantOnboardingCoordinator { ...@@ -194,10 +198,21 @@ class AssistantOnboardingCoordinator {
return; return;
} }
TextView titleTextView = initView.findViewById(R.id.onboarding_try_assistant);
TextView termsTextView = initView.findViewById(R.id.onboarding_subtitle); TextView termsTextView = initView.findViewById(R.id.onboarding_subtitle);
switch (mParameters.get(INTENT_IDENTFIER)) { switch (mParameters.get(INTENT_IDENTFIER)) {
case RENT_CAR_INTENT: case RENT_CAR_INTENT:
termsTextView.setText(R.string.autofill_assistant_init_message_rent_car); termsTextView.setVisibility(View.GONE);
titleTextView.setText(R.string.autofill_assistant_init_message_rent_car);
break;
case BUY_MOVIE_TICKETS_INTENT:
if (Arrays.asList(mExperimentIds.split(","))
.contains(BUY_MOVIE_TICKETS_EXPERIMENT_ID)) {
termsTextView.setVisibility(View.GONE);
titleTextView.setText(
R.string.autofill_assistant_init_message_buy_movie_tickets);
}
break; break;
} }
} }
......
...@@ -170,10 +170,13 @@ ...@@ -170,10 +170,13 @@
I agree I agree
</message> </message>
<message name="IDS_AUTOFILL_ASSISTANT_INIT_TITLE" desc="The title of the onboarding screen."> <message name="IDS_AUTOFILL_ASSISTANT_INIT_TITLE" desc="The title of the onboarding screen.">
Try \n Google Assistant \n in Chrome Try Google Assistant \n in Chrome
</message> </message>
<message name="IDS_AUTOFILL_ASSISTANT_INIT_MESSAGE_RENT_CAR" desc="Onboarding message describing autofill assistant's capability for car rentals."> <message name="IDS_AUTOFILL_ASSISTANT_INIT_MESSAGE_RENT_CAR" desc="Onboarding message describing autofill assistant's capability for car rentals.">
Quickly complete the car rental flow with just a few taps. Rent a car \n with Google Assistant \n in just a few taps.
</message>
<message name="IDS_AUTOFILL_ASSISTANT_INIT_MESSAGE_BUY_MOVIE_TICKETS" desc="Onboarding message describing autofill assistant's capability for movie tickets.">
Buy movie tickets \n with Google Assistant \n in just a few taps.
</message> </message>
<message name="IDS_AUTOFILL_ASSISTANT_INIT_MESSAGE" desc="Onboarding message describing autofill assistant's capability."> <message name="IDS_AUTOFILL_ASSISTANT_INIT_MESSAGE" desc="Onboarding message describing autofill assistant's capability.">
Google Assistant saves you time by helping you complete actions on the web, like search and checkout. Google Assistant saves you time by helping you complete actions on the web, like search and checkout.
......
...@@ -24,6 +24,7 @@ import static org.mockito.Mockito.verify; ...@@ -24,6 +24,7 @@ import static org.mockito.Mockito.verify;
import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewMatchesCondition; import static org.chromium.chrome.browser.autofill_assistant.AutofillAssistantUiTestUtil.waitUntilViewMatchesCondition;
import android.support.test.filters.MediumTest; import android.support.test.filters.MediumTest;
import android.view.View;
import android.widget.TextView; import android.widget.TextView;
import androidx.annotation.IdRes; import androidx.annotation.IdRes;
...@@ -176,11 +177,36 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -176,11 +177,36 @@ public class AssistantOnboardingCoordinatorTest {
coordinator.disableAnimationForTesting(); coordinator.disableAnimationForTesting();
showOnboardingAndWait(coordinator, mCallback); showOnboardingAndWait(coordinator, mCallback);
TextView view = mBottomSheetController.getBottomSheetViewForTesting().findViewById( TextView termsView = mBottomSheetController.getBottomSheetViewForTesting().findViewById(
R.id.onboarding_subtitle); R.id.onboarding_subtitle);
assertEquals(View.GONE, termsView.getVisibility());
TextView titleView = mBottomSheetController.getBottomSheetViewForTesting().findViewById(
R.id.onboarding_try_assistant);
assertEquals( assertEquals(
mActivity.getResources().getText(R.string.autofill_assistant_init_message_rent_car), mActivity.getResources().getText(R.string.autofill_assistant_init_message_rent_car),
view.getText()); titleView.getText());
}
@Test
@MediumTest
public void testShowExperimentalInformationalText() throws Exception {
AutofillAssistantPreferencesUtil.setInitialPreferences(true);
HashMap<String, String> parameters = new HashMap();
parameters.put("INTENT", "BUY_MOVIE_TICKET");
AssistantOnboardingCoordinator coordinator = new AssistantOnboardingCoordinator(
"4363482", parameters, mActivity, mBottomSheetController, mTab);
coordinator.disableAnimationForTesting();
showOnboardingAndWait(coordinator, mCallback);
TextView termsView = mBottomSheetController.getBottomSheetViewForTesting().findViewById(
R.id.onboarding_subtitle);
assertEquals(View.GONE, termsView.getVisibility());
TextView titleView = mBottomSheetController.getBottomSheetViewForTesting().findViewById(
R.id.onboarding_try_assistant);
assertEquals(mActivity.getResources().getText(
R.string.autofill_assistant_init_message_buy_movie_tickets),
titleView.getText());
} }
@Test @Test
...@@ -194,10 +220,15 @@ public class AssistantOnboardingCoordinatorTest { ...@@ -194,10 +220,15 @@ public class AssistantOnboardingCoordinatorTest {
coordinator.disableAnimationForTesting(); coordinator.disableAnimationForTesting();
showOnboardingAndWait(coordinator, mCallback); showOnboardingAndWait(coordinator, mCallback);
TextView view = mBottomSheetController.getBottomSheetViewForTesting().findViewById( TextView termsView = mBottomSheetController.getBottomSheetViewForTesting().findViewById(
R.id.onboarding_subtitle); R.id.onboarding_subtitle);
assertEquals(View.VISIBLE, termsView.getVisibility());
assertEquals(mActivity.getResources().getText(R.string.autofill_assistant_init_message), assertEquals(mActivity.getResources().getText(R.string.autofill_assistant_init_message),
view.getText()); termsView.getText());
TextView titleView = mBottomSheetController.getBottomSheetViewForTesting().findViewById(
R.id.onboarding_try_assistant);
assertEquals(mActivity.getResources().getText(R.string.autofill_assistant_init_title),
titleView.getText());
} }
/** Trigger onboarding and wait until it is fully displayed. */ /** Trigger onboarding and wait until it is fully displayed. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment