Commit ccbd91ce authored by spdonghao's avatar spdonghao Committed by Commit Bot

[Instant Start] Show Sign-in box for Feed articles pre-native.

Bug: 1086961
Change-Id: If811181513eced84a7c92960520a5f8e5f398398
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2218849
Commit-Queue: Hao Dong <spdonghao@chromium.org>
Reviewed-by: default avatarWei-Yin Chen (陳威尹) <wychen@chromium.org>
Reviewed-by: default avatarXi Han <hanxi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#776558}
parent 55c84ae7
...@@ -91,6 +91,7 @@ android_library("java") { ...@@ -91,6 +91,7 @@ android_library("java") {
deps += [ deps += [
"//chrome/browser/profiles/android:java", "//chrome/browser/profiles/android:java",
"//components/signin/public/android:java",
"//content/public/android:content_java", "//content/public/android:content_java",
"//third_party/android_sdk/androidx_browser:androidx_browser_java", "//third_party/android_sdk/androidx_browser:androidx_browser_java",
"//ui/android:ui_utils_java", "//ui/android:ui_utils_java",
......
...@@ -32,6 +32,12 @@ ...@@ -32,6 +32,12 @@
android:textAppearance="@style/TextAppearance.TextMedium.Blue" /> android:textAppearance="@style/TextAppearance.TextMedium.Blue" />
</LinearLayout> </LinearLayout>
<LinearLayout
android:id="@+id/sign_in_box"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"/>
<LinearLayout <LinearLayout
android:id="@+id/images_layout" android:id="@+id/images_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
......
...@@ -10,7 +10,12 @@ import android.view.ContextThemeWrapper; ...@@ -10,7 +10,12 @@ import android.view.ContextThemeWrapper;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import org.chromium.chrome.browser.ntp.cards.SignInPromo;
import org.chromium.chrome.browser.signin.ProfileDataCache;
import org.chromium.chrome.browser.signin.SigninPromoController;
import org.chromium.chrome.browser.signin.SigninPromoUtil;
import org.chromium.chrome.start_surface.R; import org.chromium.chrome.start_surface.R;
import org.chromium.components.signin.metrics.SigninAccessPoint;
/** The coordinator to control the loading feed surface. */ /** The coordinator to control the loading feed surface. */
public class FeedLoadingCoordinator { public class FeedLoadingCoordinator {
...@@ -30,5 +35,15 @@ public class FeedLoadingCoordinator { ...@@ -30,5 +35,15 @@ public class FeedLoadingCoordinator {
(FeedLoadingLayout) LayoutInflater.from(mContext).inflate( (FeedLoadingLayout) LayoutInflater.from(mContext).inflate(
R.layout.feed_loading_layout, null, false); R.layout.feed_loading_layout, null, false);
mParentView.addView(feedLoadingView); mParentView.addView(feedLoadingView);
if (SignInPromo.shouldCreatePromo()) {
SigninPromoController signinPromoController =
new SigninPromoController(SigninAccessPoint.NTP_CONTENT_SUGGESTIONS);
int imageSize =
mContext.getResources().getDimensionPixelSize(R.dimen.user_picture_size);
ProfileDataCache profileDataCache = new ProfileDataCache(mContext, imageSize);
SigninPromoUtil.setupPromoViewFromCache(signinPromoController, profileDataCache,
feedLoadingView.getSigninPromoView(), null);
}
} }
} }
...@@ -8,10 +8,14 @@ import android.content.Context; ...@@ -8,10 +8,14 @@ import android.content.Context;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.TypedValue; import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import androidx.annotation.Nullable;
import org.chromium.chrome.browser.signin.PersonalizedSigninPromoView;
import org.chromium.chrome.start_surface.R; import org.chromium.chrome.start_surface.R;
/** /**
...@@ -19,6 +23,7 @@ import org.chromium.chrome.start_surface.R; ...@@ -19,6 +23,7 @@ import org.chromium.chrome.start_surface.R;
*/ */
public class FeedLoadingLayout extends LinearLayout { public class FeedLoadingLayout extends LinearLayout {
private Context mContext; private Context mContext;
private @Nullable PersonalizedSigninPromoView mSigninPromoView;
public FeedLoadingLayout(Context context, AttributeSet attrs) { public FeedLoadingLayout(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
...@@ -38,6 +43,22 @@ public class FeedLoadingLayout extends LinearLayout { ...@@ -38,6 +43,22 @@ public class FeedLoadingLayout extends LinearLayout {
setImageForConfiguration(); setImageForConfiguration();
} }
/** @return The {@link PersonalizedSigninPromoView} for this class. */
PersonalizedSigninPromoView getSigninPromoView() {
if (mSigninPromoView == null) {
mSigninPromoView = (PersonalizedSigninPromoView) LayoutInflater.from(mContext).inflate(
R.layout.personalized_signin_promo_view_modern_content_suggestions, null,
false);
LinearLayout signView = findViewById(R.id.sign_in_box);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
signView.setLayoutParams(lp);
lp.setMargins(0, 0, 0, dpToPx(12));
signView.addView(mSigninPromoView);
}
return mSigninPromoView;
}
private void setImageForConfiguration() { private void setImageForConfiguration() {
int currentOrientation = getResources().getConfiguration().orientation; int currentOrientation = getResources().getConfiguration().orientation;
LinearLayout imageParentView = findViewById(R.id.images_layout); LinearLayout imageParentView = findViewById(R.id.images_layout);
......
...@@ -53,6 +53,7 @@ import org.chromium.chrome.browser.flags.CachedFeatureFlags; ...@@ -53,6 +53,7 @@ import org.chromium.chrome.browser.flags.CachedFeatureFlags;
import org.chromium.chrome.browser.flags.ChromeFeatureList; import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches; import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.homepage.HomepageManager; import org.chromium.chrome.browser.homepage.HomepageManager;
import org.chromium.chrome.browser.ntp.cards.SignInPromo;
import org.chromium.chrome.browser.tab.TabState; import org.chromium.chrome.browser.tab.TabState;
import org.chromium.chrome.browser.tabmodel.TabPersistentStore; import org.chromium.chrome.browser.tabmodel.TabPersistentStore;
import org.chromium.chrome.browser.tabmodel.TabPersistentStore.TabModelMetadata; import org.chromium.chrome.browser.tabmodel.TabPersistentStore.TabModelMetadata;
...@@ -612,6 +613,7 @@ public class InstantStartTest { ...@@ -612,6 +613,7 @@ public class InstantStartTest {
createThumbnailBitmapAndWriteToFile(0); createThumbnailBitmapAndWriteToFile(0);
TabAttributeCache.setTitleForTesting(0, "Google"); TabAttributeCache.setTitleForTesting(0, "Google");
SignInPromo.setDisablePromoForTests(true);
startMainActivityFromLauncher(); startMainActivityFromLauncher();
CriteriaHelper.pollUiThread( CriteriaHelper.pollUiThread(
() -> mActivityTestRule.getActivity().getLayoutManager().overviewVisible()); () -> mActivityTestRule.getActivity().getLayoutManager().overviewVisible());
......
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