From: csagan5 <32685696+csagan5@users.noreply.github.com> Date: Sat, 7 Nov 2020 23:51:29 +0100 Subject: Restore Simplified NTP launch This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad. License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html --- chrome/android/chrome_java_resources.gni | 8 + chrome/android/chrome_java_sources.gni | 2 + .../ic_most_visited_placeholder.png | Bin 0 -> 1273 bytes .../ic_most_visited_placeholder.png | Bin 0 -> 718 bytes .../ic_most_visited_placeholder.png | Bin 0 -> 1519 bytes .../ic_most_visited_placeholder.png | Bin 0 -> 2335 bytes .../ic_most_visited_placeholder.png | Bin 0 -> 4034 bytes .../java/res/layout/mv_tiles_container.xml | 39 +++ .../java/res/layout/mv_tiles_layout.xml | 11 +- .../java/res/layout/new_tab_page_layout.xml | 7 + .../new_tab_page_tile_grid_placeholder.xml | 43 +++ .../android/java/res/layout/ntp_shortcuts.xml | 65 ++++ chrome/android/java/res/values/attrs.xml | 4 + chrome/android/java/res/values/dimens.xml | 2 + .../chrome/browser/ChromeTabbedActivity.java | 3 +- .../browser/TabbedModeTabDelegateFactory.java | 12 +- .../feedback/ChromeFeedbackCollector.java | 1 + .../feedback/SimplifiedNtpFeedbackSource.java | 38 +++ .../identity_disc/IdentityDiscController.java | 2 +- .../native_page/NativePageFactory.java | 20 +- .../NativePageNavigationDelegateImpl.java | 2 +- .../chrome/browser/ntp/NewTabPage.java | 8 +- .../browser/ntp/NewTabPageCoordinator.java | 28 +- .../ntp/search/SearchBoxViewBinder.java | 1 + .../suggestions/SuggestionsConfig.java | 2 +- .../SuggestionsNavigationDelegate.java | 27 +- .../tile/MostVisitedTilesCoordinator.java | 8 +- .../tile/MostVisitedTilesGridLayout.java | 287 ++++++++++++++++++ .../tile/MostVisitedTilesMediator.java | 12 +- .../tile/TileDragDelegateImpl.java | 18 +- .../suggestions/tile/TileRenderer.java | 12 +- .../suggestions/tile/TilesLinearLayout.java | 2 +- .../engagement/important_sites_util.cc | 2 +- .../flags/android/chrome_feature_list.cc | 1 + .../browser/flags/ChromeFeatureList.java | 1 + .../chrome_most_visited_sites_factory.cc | 4 - .../client_util/HomeModulesRankingHelper.java | 1 + .../strings/android_chrome_strings.grd | 6 + .../core/browser/top_sites_constants.h | 2 +- components/ntp_tiles/custom_links_store.cc | 2 - components/omnibox/common/omnibox_features.cc | 2 + components/search_engines/template_url.h | 4 +- .../Restore-Simplified-NTP-launch.inc | 12 + .../Restore-Simplified-NTP-launch.inc | 6 + .../Restore-Simplified-NTP-launch.inc | 1 + 45 files changed, 641 insertions(+), 67 deletions(-) create mode 100644 chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-xxhdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/drawable-xxxhdpi/ic_most_visited_placeholder.png create mode 100644 chrome/android/java/res/layout/mv_tiles_container.xml create mode 100644 chrome/android/java/res/layout/new_tab_page_tile_grid_placeholder.xml create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni --- a/chrome/android/chrome_java_resources.gni +++ b/chrome/android/chrome_java_resources.gni @@ -53,6 +53,11 @@ chrome_java_resources = [ "java/res/drawable-hdpi/ic_exit_to_app_white_24dp.png", "java/res/drawable-hdpi/ic_file_download_white_24dp.png", "java/res/drawable-hdpi/ic_link_grey600_36dp.png", + "java/res/drawable-hdpi/ic_most_visited_placeholder.png", + "java/res/drawable-mdpi/ic_most_visited_placeholder.png", + "java/res/drawable-xhdpi/ic_most_visited_placeholder.png", + "java/res/drawable-xxhdpi/ic_most_visited_placeholder.png", + "java/res/drawable-xxxhdpi/ic_most_visited_placeholder.png", "java/res/drawable-hdpi/ic_phone_googblue_36dp.png", "java/res/drawable-hdpi/ic_photo_camera.png", "java/res/drawable-hdpi/ic_place_googblue_36dp.png", @@ -553,6 +558,7 @@ chrome_java_resources = [ "java/res/layout/manage_space_activity.xml", "java/res/layout/material_tooltip.xml", "java/res/layout/multiline_spinner_item.xml", + "java/res/layout/mv_tiles_container.xml", "java/res/layout/mv_tiles_layout.xml", "java/res/layout/navigation_bubble.xml", "java/res/layout/navigation_sheet.xml", @@ -561,8 +567,10 @@ chrome_java_resources = [ "java/res/layout/new_background_tab_animation_tab_switcher_icon.xml", "java/res/layout/new_custom_tab_toolbar.xml", "java/res/layout/new_tab_page_incognito.xml", + "java/res/layout/new_tab_page_tile_grid_placeholder.xml", "java/res/layout/new_tab_page_layout.xml", "java/res/layout/open_full_chrome_history_header.xml", + "java/res/layout/ntp_shortcuts.xml", "java/res/layout/optional_toolbar_button.xml", "java/res/layout/os_version_unsupported_text.xml", "java/res/layout/other_forms_of_history_dialog.xml", diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni --- a/chrome/android/chrome_java_sources.gni +++ b/chrome/android/chrome_java_sources.gni @@ -660,6 +660,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/feedback/FeedFeedbackCollector.java", "java/src/org/chromium/chrome/browser/feedback/HelpAndFeedbackLauncherImpl.java", "java/src/org/chromium/chrome/browser/feedback/ScreenshotTask.java", + "java/src/org/chromium/chrome/browser/feedback/SimplifiedNtpFeedbackSource.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java", "java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java", @@ -1111,6 +1112,7 @@ chrome_java_sources = [ "java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java", + "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesProperties.java", "java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesViewBinder.java", diff --git a/chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..3d71af1433341fc4552e9b6c7a96cd6911bcffeb GIT binary patch literal 1273 zcmVb zNh8lQSdvZDup|3&{2}(SgPLq&iD!_PG+j2_TbRT$cICf|1G`wpqofm9ku}_- zxFHYVe)7A<*=FGSS@)V-y2q46i)GTNtA7;7qgN!+limmFgReP!}NI;*CDPV*Hn@bco2qE+6Ws?RX+@z%8R zU#AX%dRxX(g)AWJ+RLV?31bBDL=wsJgfX3bd(F5jtG(gK@?-a#&jU}C=wEvE2zAuM zCc|p4adA9L50kpFZWfAch5~T!ek?j});pV!kfN@iG>=@?i>aiN#gwjJHW#W3O2hGx zRevkP8TS#YsD^oerD3BT)U`IIC6OIj`JNy0!%}~ctN~~APMt!)GfdNjyl%2$OV*4* zoQs9*imuHQ|DvqtVj+8gN;Bl|@ML99_nsjv=_Z9Z$OZ%T@G=KWB%6&N<^FXF^d*_> zMxVa@eUjsbETf(zlcgS&vd349>=jCbEA@dzQ@UE9d_&9D9YfZ>bVbt?T7Yv#DHyW$ zO~G%sNha&J+lU4k?OJZu&GHX_{^Z_uvyDJrhnU|CS^GgInh{aKKL#d&s7FM9_)aoe zZ}^T-*0|rPaQR0L@e);yUxQ>VWQ~Pjw5YQ-g3*)W2_@@G@z_j`VDMu@*23h7**>yY z3ch`0Va!>OwJ_%5wLF9I!rJmou9+jEv5 z(=64o$^7JO%)IY9(_gD*dg=iJyOvO=9qbN89nG){UpOKTdmI5{Cos^1qEZlqX2AO% z@jh!f8Jpnb5J|09UiU7N%E!KZMok3j_4NN-68c{eRYV_+DxxP*1tC|#gg}_YiXE@b jEHDo)+h=gu{t7N%^^-?s9Fd&I00000NkvXXu0mjfGY4n( literal 0 HcmV?d00001 diff --git a/chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..f057df12978c838312853d20a9a700a9a2aaf821 GIT binary patch literal 718 zcmV;<0x|uGP)x0007&Nklbh}q}4Ua?PMqbOvt z+xQ;r1%`0(oLzUa&s5s{nA!K=JR|m+l>9pS9C5}a-VoxAOU^h#->*+flCDr@4-4w2 z_5S%c7VM#%2JH+r@B^~tBbt5{<#Ex=i+K5Q5oN!MCLg)|024JiljOn;=Mikp!L-uJ z$w75;(+US%N8mYblHo4#6ya8A3@^k=!wWRHqEhjM%ecU6Y^dC!>lGxHyaKx1QL({w z9N-;7Dt;x6!%2xlDni^@;qK4zK;<57IZ0@9PsPLi`ElSg6~W7`oUE5y1XMg9fkr!g z^{*rq`B!|U;^DvFkcz+n(||@hy*nJGA@{aNYJa@kBgFOBdAOnaElFK|i;B$`c^W1D zP@E`AnWukCn{tel&6Rs2qs6MT&4hWiJ9?L7i4?kYE2}i=9@eSVRF#<+hV^ zkL={QrA|uX*Qp$dBuCm~IimV?L7$4I9nyf3A`Do(_jymX8- zc^SLHebii95S$OMNz91xhCkYTDNcK+h2fYj#{p3=OZvX%Q07*qoM6N<$f{avI AQ2+n{ literal 0 HcmV?d00001 diff --git a/chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png new file mode 100644 index 0000000000000000000000000000000000000000..12e3d77ef68c092977975d7ac8e777304250b20d GIT binary patch literal 1519 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 literal 0 HcmV?d00001 diff --git a/chrome/android/java/res/layout/mv_tiles_container.xml b/chrome/android/java/res/layout/mv_tiles_container.xml new file mode 100644 --- /dev/null +++ b/chrome/android/java/res/layout/mv_tiles_container.xml @@ -0,0 +1,39 @@ + + + + + + + + + + + diff --git a/chrome/android/java/res/layout/mv_tiles_layout.xml b/chrome/android/java/res/layout/mv_tiles_layout.xml --- a/chrome/android/java/res/layout/mv_tiles_layout.xml +++ b/chrome/android/java/res/layout/mv_tiles_layout.xml @@ -13,9 +13,10 @@ found in the LICENSE file. android:paddingBottom="@dimen/mvt_container_bottom_padding" android:scrollbars="none"> - + diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml --- a/chrome/android/java/res/layout/new_tab_page_layout.xml +++ b/chrome/android/java/res/layout/new_tab_page_layout.xml @@ -42,6 +42,13 @@ found in the LICENSE file. /> + + + + + + + + + + + + + + diff --git a/chrome/android/java/res/layout/ntp_shortcuts.xml b/chrome/android/java/res/layout/ntp_shortcuts.xml new file mode 100644 --- /dev/null +++ b/chrome/android/java/res/layout/ntp_shortcuts.xml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + diff --git a/chrome/android/java/res/values/attrs.xml b/chrome/android/java/res/values/attrs.xml --- a/chrome/android/java/res/values/attrs.xml +++ b/chrome/android/java/res/values/attrs.xml @@ -15,6 +15,10 @@ found in the LICENSE file. + + + + diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml --- a/chrome/android/java/res/values/dimens.xml +++ b/chrome/android/java/res/values/dimens.xml @@ -125,6 +125,8 @@ found in the LICENSE file. 62dp + 6dp + 4dp 20dp 17dp 22dp diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java @@ -3738,7 +3738,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements PreAttachInt getStartupMetricsTracker(), mRootUiCoordinator.getExclusiveAccessManager(), mBackPressManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); } return mTabDelegateFactory; } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDelegateFactory.java @@ -14,6 +14,7 @@ import org.chromium.build.annotations.Nullable; import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid; import org.chromium.chrome.browser.back_press.BackPressManager; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.compositor.CompositorViewHolder; import org.chromium.chrome.browser.contextmenu.ChromeContextMenuPopulator; @@ -56,6 +57,8 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import java.util.List; import java.util.function.Supplier; +import androidx.annotation.NonNull; + /** * {@link TabDelegateFactory} class to be used in all {@link Tab} instances owned by a {@link * ChromeTabbedActivity}. @@ -89,6 +92,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { private final TopInsetProvider mTopInsetProvider; private final StartupMetricsTracker mStartupMetricsTracker; private final @Nullable ExclusiveAccessManager mExclusiveAccessManager; + private final MonotonicObservableSupplier mBookmarkManagerOpenerSupplier; + private @Nullable NativePageFactory mNativePageFactory; private final BackPressManager mBackPressManager; private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; @@ -122,7 +127,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { StartupMetricsTracker startupMetricsTracker, @Nullable ExclusiveAccessManager exclusiveAccessManager, BackPressManager backPressManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + @NonNull MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate; mShareDelegateSupplier = shareDelegateSupplier; @@ -152,6 +158,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { mExclusiveAccessManager = exclusiveAccessManager; mBackPressManager = backPressManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } @Override @@ -224,7 +231,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory { mTopInsetProvider, mStartupMetricsTracker, mBackPressManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); } return mNativePageFactory.createNativePage(url, candidatePage, tab, pdfInfo); } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java --- a/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/feedback/ChromeFeedbackCollector.java @@ -70,6 +70,7 @@ public class ChromeFeedbackCollector extends FeedbackCollector mMap; + + SimplifiedNtpFeedbackSource() { + mMap = new HashMap(1); + + boolean isEnabled = ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP); + if (!isEnabled) { + mMap.put(SIMPLIFIED_NTP_KEY, DISABLED_VALUE); + } else { + mMap.put(SIMPLIFIED_NTP_KEY, ENABLED_VALUE); + } + } + + @Override + public Map getFeedback() { + return mMap; + } +} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java --- a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/IdentityDiscController.java @@ -204,7 +204,7 @@ public class IdentityDiscController mButtonData.setButtonSpec( buttonSpecWithDrawableAndDescription(mButtonData.getButtonSpec(), profileData)); - mButtonData.setCanShow(true); + mButtonData.setCanShow(false); } private ButtonSpec buttonSpecWithDrawableAndDescription( diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageFactory.java @@ -17,6 +17,7 @@ import android.graphics.Rect; import android.view.View; import androidx.annotation.VisibleForTesting; +import androidx.annotation.NonNull; import org.chromium.base.lifetime.Destroyable; import org.chromium.base.metrics.RecordUserAction; @@ -33,6 +34,7 @@ import org.chromium.chrome.browser.app.ChromeActivity; import org.chromium.chrome.browser.app.download.home.DownloadPage; import org.chromium.chrome.browser.back_press.BackPressManager; import org.chromium.chrome.browser.bookmarks.BookmarkPage; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginAdapter; import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider; import org.chromium.chrome.browser.contextual_tasks.ContextualTasksNativePage; @@ -102,6 +104,7 @@ public class NativePageFactory { private final MonotonicObservableSupplier mEdgeToEdgeControllerSupplier; private final TopInsetProvider mTopInsetProvider; private final StartupMetricsTracker mStartupMetricsTracker; + private final MonotonicObservableSupplier mBookmarkManagerOpenerSupplier; private @Nullable NewTabPageCreationTracker mNewTabPageCreationTracker; private @Nullable NativePageBuilder mNativePageBuilder; @@ -129,7 +132,8 @@ public class NativePageFactory { TopInsetProvider topInsetProvider, StartupMetricsTracker startupMetricsTracker, BackPressManager backPressManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mBottomSheetController = sheetController; mBrowserControlsManager = browserControlsManager; @@ -150,6 +154,7 @@ public class NativePageFactory { mStartupMetricsTracker = startupMetricsTracker; mBackPressManager = backPressManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } private NativePageBuilder getBuilder() { @@ -176,7 +181,8 @@ public class NativePageFactory { mTopInsetProvider, mStartupMetricsTracker, mBackPressManager, - mRecentlyClosedEntriesManager); + mRecentlyClosedEntriesManager, + mBookmarkManagerOpenerSupplier); } return mNativePageBuilder; } @@ -213,9 +219,10 @@ public class NativePageFactory { private final StartupMetricsTracker mStartupMetricsTracker; private final BackPressManager mBackPressManager; private final RecentlyClosedEntriesManager mRecentlyClosedEntriesManager; + private final MonotonicObservableSupplier mBookmarkManagerOpenerSupplier; public NativePageBuilder( - Activity activity, + ChromeActivity activity, Supplier newTabPageCreationTracker, BottomSheetController sheetController, BrowserControlsManager browserControlsManager, @@ -235,7 +242,8 @@ public class NativePageFactory { TopInsetProvider topInsetProvider, StartupMetricsTracker startupMetricsTracker, BackPressManager backPressManager, - RecentlyClosedEntriesManager recentlyClosedEntriesManager) { + RecentlyClosedEntriesManager recentlyClosedEntriesManager, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mActivity = activity; mNewTabPageCreationTracker = newTabPageCreationTracker; mBottomSheetController = sheetController; @@ -257,6 +265,7 @@ public class NativePageFactory { mStartupMetricsTracker = startupMetricsTracker; mBackPressManager = backPressManager; mRecentlyClosedEntriesManager = recentlyClosedEntriesManager; + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; } protected NativePage buildNewTabPage(Tab tab, String url) { @@ -299,7 +308,8 @@ public class NativePageFactory { mModuleRegistrySupplier, mEdgeToEdgeControllerSupplier, mTopInsetProvider, - mStartupMetricsTracker); + mStartupMetricsTracker, + mBookmarkManagerOpenerSupplier); } protected NativePage buildBookmarksPage(Tab tab) { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/native_page/NativePageNavigationDelegateImpl.java @@ -28,7 +28,7 @@ import org.chromium.ui.mojom.WindowOpenDisposition; /** {@link NativePageNavigationDelegate} implementation. */ @NullMarked public class NativePageNavigationDelegateImpl implements NativePageNavigationDelegate { - private final Profile mProfile; + protected final Profile mProfile; protected final TabModelSelector mTabModelSelector; protected final Tab mTab; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java @@ -110,6 +110,9 @@ import org.chromium.ui.base.DeviceFormFactor; import org.chromium.ui.base.WindowAndroid; import org.chromium.ui.modaldialog.ModalDialogManager; +import androidx.annotation.NonNull; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; + import java.util.List; import java.util.function.Supplier; @@ -402,7 +405,8 @@ public class NewTabPage OneshotSupplier moduleRegistrySupplier, MonotonicObservableSupplier edgeToEdgeControllerSupplier, TopInsetProvider topInsetProvider, - StartupMetricsTracker startupMetricsTracker) { + StartupMetricsTracker startupMetricsTracker, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { mConstructedTimeNs = System.nanoTime(); TraceEvent.begin(TAG); @@ -422,7 +426,7 @@ public class NewTabPage SuggestionsNavigationDelegate navigationDelegate = new SuggestionsNavigationDelegate( - activity, profile, nativePageHost, tabModelSelector, mTab); + activity, profile, nativePageHost, tabModelSelector, mTab, bookmarkManagerOpenerSupplier); mNewTabPageManager = new NewTabPageManagerImpl( navigationDelegate, profile, nativePageHost, snackbarManager); diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageCoordinator.java @@ -13,6 +13,7 @@ import android.graphics.Point; import android.graphics.Rect; import android.text.Editable; import android.view.DragEvent; +import android.view.ViewStub; import android.view.View; import android.view.View.OnLayoutChangeListener; import android.view.ViewGroup; @@ -64,6 +65,7 @@ import org.chromium.chrome.browser.setup_list.SetupListModuleUtils; import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl; import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesCoordinator; import org.chromium.chrome.browser.suggestions.tile.TileGroup; +import org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout; import org.chromium.chrome.browser.tab.Tab; import org.chromium.chrome.browser.tab.TabLaunchType; import org.chromium.chrome.browser.tab.TabSelectionType; @@ -147,6 +149,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { private SetupListManager.@Nullable Observer mSetupListObserver; private @Nullable Point mContextMenuStartPosition; + private ViewGroup mShortcutsView; + /** * Whether the tiles shown in the layout have finished loading. With {@link #mHasShownView}, * it's one of the 2 flags used to track initialisation progress. @@ -159,14 +163,14 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { */ private boolean mHasShownView; - private boolean mSearchProviderHasLogo = true; + private boolean mSearchProviderHasLogo = false; private boolean mSearchProviderIsGoogle; private boolean mShowingNonStandardGoogleLogo; private boolean mInitialized; private float mUrlFocusChangePercent; - private boolean mDisableUrlFocusChangeAnimations; + private boolean mDisableUrlFocusChangeAnimations = true; /** Flag used to request some layout changes after the next layout pass is completed. */ private boolean mTileCountChanged; @@ -345,6 +349,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { mSearchEngineUtils.addIconObserver(mSearchEngineIconObserver); setSearchBoxTextAppearance(); + initializeShortcuts(); initializeSearchBoxTextView(); initializeVoiceSearchButton(); initializeLensButton(); @@ -742,6 +747,8 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { * @param isGoogle Whether the search provider is Google. */ void setSearchProviderInfo(boolean hasLogo, boolean isGoogle) { + hasLogo = false; + isGoogle = false; if (hasLogo == mSearchProviderHasLogo && isGoogle == mSearchProviderIsGoogle && mInitialized) { @@ -807,6 +814,7 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { * @param disable Whether to disable the animations. */ void setUrlFocusAnimationsDisabled(boolean disable) { + disable = true; if (disable == mDisableUrlFocusChangeAnimations) return; mDisableUrlFocusChangeAnimations = disable; if (!disable) onUrlFocusAnimationChanged(); @@ -1335,6 +1343,22 @@ public class NewTabPageCoordinator implements ModuleDelegateHost { } } + private void initializeShortcuts() { + if (!ChromeFeatureList.isEnabled(ChromeFeatureList.SIMPLIFIED_NTP)) { + return; + } + + ViewStub shortcutsStub = mNewTabPageLayout.findViewById(R.id.shortcuts_stub); + mShortcutsView = (ViewGroup) shortcutsStub.inflate(); + + mShortcutsView.findViewById(R.id.bookmarks_button) + .setOnClickListener(view -> mManager.getNavigationDelegate().navigateToBookmarks()); + + mShortcutsView.findViewById(R.id.downloads_button) + .setOnClickListener( + view -> mManager.getNavigationDelegate().navigateToDownloadManager()); + } + /** Makes the Search Box and Logo as wide as Most Visited. */ private void unifyElementWidths(int width) { int searchBoxWidth = width - mSearchBoxTwoSideMargin; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java --- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/search/SearchBoxViewBinder.java @@ -31,6 +31,7 @@ class SearchBoxViewBinder View searchBoxContainer = searchBoxlayout.findViewById(R.id.search_box_container); final TextView searchBoxTextView = searchBoxlayout.findViewById(R.id.search_box_text); + searchBoxlayout.setVisibility(View.GONE); if (SearchBoxProperties.ALPHA == propertyKey) { searchBoxlayout.setAlpha(model.get(SearchBoxProperties.ALPHA)); } else if (SearchBoxProperties.VOICE_SEARCH_COLOR_STATE_LIST == propertyKey) { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsConfig.java @@ -26,7 +26,7 @@ public final class SuggestionsConfig { * Maximum number of tiles that is explicitly supported. UMA relies on this value, so even if * the UI supports it, getting more can raise unexpected issues. */ - public static final int MAX_TILE_COUNT = 8; + public static final int MAX_TILE_COUNT = 24; /** Maximum number of custom tiles supported. In C++ backend this is `kMaxNumCustomLinks`. */ public static final int MAX_NUM_CUSTOM_LINKS = 8; diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/SuggestionsNavigationDelegate.java @@ -23,17 +23,42 @@ import org.chromium.ui.base.PageTransition; import org.chromium.ui.mojom.WindowOpenDisposition; import org.chromium.url.GURL; +import androidx.annotation.NonNull; +import org.chromium.base.supplier.MonotonicObservableSupplier; +import org.chromium.chrome.browser.bookmarks.BookmarkUtils; +import org.chromium.chrome.browser.download.DownloadUtils; +import org.chromium.chrome.browser.download.DownloadOpenSource; +import org.chromium.chrome.browser.profiles.OtrProfileId; +import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener; + /** Extension of {@link NativePageNavigationDelegate} with suggestions-specific methods. */ @NullMarked public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateImpl { + private final MonotonicObservableSupplier mBookmarkManagerOpenerSupplier; + public SuggestionsNavigationDelegate( Activity activity, Profile profile, NativePageHost host, TabModelSelector tabModelSelector, - Tab tab) { + Tab tab, + MonotonicObservableSupplier bookmarkManagerOpenerSupplier) { super(activity, profile, host, tabModelSelector, tab); + mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier; + } + + public void navigateToBookmarks() { + mBookmarkManagerOpenerSupplier.get() + .showBookmarkManager(mActivity, mTab, mTab.getProfile()); + } + + public void navigateToDownloadManager() { + OtrProfileId otrProfileID = null; + if (mProfile != null && mTab != null && mTab.isIncognito()) { + otrProfileID = mProfile.getOtrProfileId(); + } + DownloadUtils.showDownloadManager(mActivity, mTab, otrProfileID, DownloadOpenSource.NEW_TAB_PAGE); } /** diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java @@ -70,15 +70,11 @@ public class MostVisitedTilesCoordinator implements ConfigurationChangedObserver mActivityLifecycleDispatcher = activityLifecycleDispatcher; mMvTilesContainerLayout = mvTilesContainerLayout; - MostVisitedTilesLayout tilesLayout = + MostVisitedTilesGridLayout tilesLayout = mvTilesContainerLayout.findViewById(R.id.mv_tiles_layout); mUiConfig = new UiConfig(tilesLayout); PropertyModel propertyModel = new PropertyModel(MostVisitedTilesProperties.ALL_KEYS); - PropertyModelChangeProcessor.create( - propertyModel, - new MostVisitedTilesViewBinder.ViewHolder(mvTilesContainerLayout, tilesLayout), - MostVisitedTilesViewBinder::bind); mRenderer = new TileRenderer( mActivity, SuggestionsConfig.getTileStyle(mUiConfig), TITLE_LINES, null); @@ -88,7 +84,7 @@ public class MostVisitedTilesCoordinator implements ConfigurationChangedObserver new MostVisitedTilesMediator( activity, mUiConfig, - mvTilesContainerLayout, + tilesLayout, mRenderer, propertyModel, isTablet, diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java new file mode 100644 --- /dev/null +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesGridLayout.java @@ -0,0 +1,287 @@ +// Copyright 2015 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.chrome.browser.suggestions.tile; + +import android.content.Context; +import android.content.res.Configuration; +import android.content.res.Resources; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.util.Pair; +import android.view.View; +import android.widget.FrameLayout; + +import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; + +import org.chromium.base.MathUtils; +import org.chromium.base.library_loader.LibraryLoader; +import org.chromium.chrome.R; +import org.chromium.chrome.browser.flags.ChromeFeatureList; +import org.chromium.chrome.browser.suggestions.SiteSuggestion; +import org.chromium.components.browser_ui.widget.tile.TileView; +import org.chromium.ui.base.DeviceFormFactor; + +import java.util.ArrayList; +import java.util.List; + +/** A layout that arranges tiles in a grid. */ +public class MostVisitedTilesGridLayout extends FrameLayout { + private final int mMinHorizontalSpacing; + private final int mMaxHorizontalSpacing; + private final int mMaxWidth; + + private int mVerticalSpacing; + private int mMaxRows = 4; + private int mMaxColumns = 4; + + private List mTileList = new ArrayList(); + + /** + * Constructor for inflating from XML. + * + * @param context The view context in which this item will be shown. + * @param attrs The attributes of the XML tag that is inflating the view. + */ + public MostVisitedTilesGridLayout(Context context, AttributeSet attrs) { + super(context, attrs); + + Resources res = getResources(); + mVerticalSpacing = + getResources().getDimensionPixelOffset(getGridMVTVerticalSpacingResourcesId()); + TypedArray styledAttrs = + context.obtainStyledAttributes(attrs, R.styleable.MostVisitedTilesGridLayout); + mMinHorizontalSpacing = + styledAttrs.getDimensionPixelOffset( + R.styleable.MostVisitedTilesGridLayout_minHorizontalSpacing, + res.getDimensionPixelOffset( + R.dimen.tile_grid_layout_min_horizontal_spacing)); + styledAttrs.recycle(); + mMaxHorizontalSpacing = Integer.MAX_VALUE; + mMaxWidth = Integer.MAX_VALUE; + } + + /** Sets the maximum number of rows to display. Any items that don't fit will be hidden. */ + public void setMaxRows(int rows) { + mMaxRows = rows; + } + + /** Sets the maximum number of columns to display. Any items that don't fit will be hidden. */ + public void setMaxColumns(int columns) { + mMaxColumns = columns; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int totalWidth = Math.min(MeasureSpec.getSize(widthMeasureSpec), mMaxWidth); + int childCount = getChildCount(); + if (childCount == 0) { + setMeasuredDimension(totalWidth, resolveSize(0, heightMeasureSpec)); + return; + } + + // Measure the children. We don't use the ViewGroup.measureChildren() method here because + // it only measures visible children. In a situation where a child is invisible before + // this measurement and we decide to show it after the measurement, it will not have its + // dimensions and will not be displayed. + for (int i = 0; i < childCount; i++) { + measureChild(getChildAt(i), MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); + } + + // Determine the number of columns that will fit. + int childHeight = getChildAt(0).getMeasuredHeight(); + int childWidth = getChildAt(0).getMeasuredWidth(); + int numColumns = + MathUtils.clamp( + (totalWidth + mMinHorizontalSpacing) / (childWidth + mMinHorizontalSpacing), + 1, + mMaxColumns); + + // Determine how much padding to use between and around the tiles. + int gridWidthMinusColumns = Math.max(0, totalWidth - numColumns * childWidth); + Pair gridProperties = + computeHorizontalDimensions(gridWidthMinusColumns, numColumns); + int gridStart = gridProperties.first; + int horizontalSpacing = gridProperties.second; + + // Limit the number of rows to mMaxRows. + int visibleChildCount = Math.min(childCount, mMaxRows * numColumns); + + // Arrange the visible children in a grid. + int numRows = (visibleChildCount + numColumns - 1) / numColumns; + int paddingTop = getPaddingTop(); + boolean isRtl = getLayoutDirection() == LAYOUT_DIRECTION_RTL; + + for (int i = 0; i < visibleChildCount; i++) { + View child = getChildAt(i); + child.setVisibility(View.VISIBLE); + int row = i / numColumns; + int column = i % numColumns; + int childTop = row * (childHeight + mVerticalSpacing); + int childStart = gridStart + (column * (childWidth + horizontalSpacing)); + MarginLayoutParams layoutParams = (MarginLayoutParams) child.getLayoutParams(); + layoutParams.setMargins(isRtl ? 0 : childStart, childTop, isRtl ? childStart : 0, 0); + child.setLayoutParams(layoutParams); + } + + // Hide any extra children in case there are more than needed for the maximum number of + // rows. + for (int i = visibleChildCount; i < childCount; i++) { + getChildAt(i).setVisibility(View.GONE); + } + + int totalHeight = + paddingTop + + getPaddingBottom() + + numRows * childHeight + + (numRows - 1) * mVerticalSpacing; + + setMeasuredDimension(totalWidth, resolveSize(totalHeight, heightMeasureSpec)); + } + + /** + * @param availableWidth The space available to spread between and around the tiles. + * @param numColumns The number of columns to be organised. + * @return The [gridStart, horizontalSpacing] pair of dimensions. + */ + @VisibleForTesting + Pair computeHorizontalDimensions(int availableWidth, int numColumns) { + int gridStart; + float horizontalSpacing; + + // Identically sized spacers are added both between and around the tiles. + int spacerCount = numColumns + 1; + horizontalSpacing = (float) availableWidth / spacerCount; + gridStart = Math.round(horizontalSpacing); + + if (horizontalSpacing < mMinHorizontalSpacing + || horizontalSpacing > mMaxHorizontalSpacing) { + // Ensure column spacing isn't greater than mMaxHorizontalSpacing. + long gridSidePadding = availableWidth - (long) mMaxHorizontalSpacing * (numColumns - 1); + if (gridSidePadding > 0) { + horizontalSpacing = mMaxHorizontalSpacing; + gridStart = (int) (gridSidePadding / 2); + } else { + horizontalSpacing = (float) availableWidth / Math.max(1, numColumns - 1); + gridStart = 0; + } + } + int screenWidth = getResources().getDisplayMetrics().widthPixels; + int screenHeight = getResources().getDisplayMetrics().heightPixels; + String logMessage = + "|horizontalSpacing| = " + + horizontalSpacing + + " |numColumns| = " + + numColumns + + " |availableWidth| = " + + availableWidth + + " |screenWidth| = " + + screenWidth + + " |screenHeight| = " + + screenHeight + + "."; + assert horizontalSpacing >= mMinHorizontalSpacing + : "Horizontal spacing shouldn't be smaller than minimal horizontal spacing: " + + logMessage; + assert horizontalSpacing <= mMaxHorizontalSpacing + : "Horizontal spacing shouldn't be larger than maximal horizontal spacing: " + + logMessage; + + return Pair.create(gridStart, Math.round(horizontalSpacing)); + } + + // TODO(crbug.com/40226731): Remove this method when the Feed position experiment is cleaned up. + private int getGridMVTVerticalSpacingResourcesId() { + return R.dimen.tile_grid_layout_vertical_spacing; + } + + @Override + public void removeAllViews() { + mTileList.clear(); + super.removeAllViews(); + } + + /** + * Updates the start margin of all children except the first, to control spacing between. + * + * @param margin The margin to set. + */ + void setIntervalMargins(int margin) { + int childCount = getChildCount(); + for (int i = 1; i < childCount; i++) { + updateViewStartMargin(getChildAt(i), margin); + } + } + + /** + * Updates the start (end) margin the first (last) child, to control spacing around content. + * + * @param margin The margin to set. + */ + void setEdgeMargins(int margin) { + int childCount = getChildCount(); + if (childCount > 0) { + updateViewStartMargin(getChildAt(0), margin); + updateViewEndMargin(getChildAt(childCount - 1), margin); + } + } + + /** + * Specialized addView() for tiles. + * + * @param tileView The tile View to add. + */ + public void addTile(TileView tileView) { + super.addView(tileView); + mTileList.add(tileView); + } + + public void addNonTileViewWithWidth(View view, float widthDp) { + super.addView(view); + } + + /** + * Specialized getChildCount() for tiles. + * + * @return The count of TileView children, added from addTile(). + */ + public int getTileCount() { + return mTileList.size(); + } + + /** + * Specialized getChildAt() for tiles. + * + * @return The (index+1)-th TileView added via addTile(). + */ + public TileView getTileAt(int index) { + return mTileList.get(index); + } + + private void updateViewStartMargin(View view, int newStartMargin) { + MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams(); + if (newStartMargin != layoutParams.getMarginStart()) { + layoutParams.setMarginStart(newStartMargin); + view.setLayoutParams(layoutParams); + } + } + + private void updateViewEndMargin(View view, int newEndMargin) { + MarginLayoutParams layoutParams = (MarginLayoutParams) view.getLayoutParams(); + if (newEndMargin != layoutParams.getMarginEnd()) { + layoutParams.setMarginEnd(newEndMargin); + view.setLayoutParams(layoutParams); + } + } + + void destroy() { + for (int i = 0; i < getTileCount(); i++) { + TileView tileView = getTileAt(i); + tileView.setOnClickListener(null); + tileView.setOnCreateContextMenuListener(null); + } + removeAllViews(); + } +} diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java @@ -52,7 +52,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { private final Resources mResources; private final UiConfig mUiConfig; private final View mMvTilesContainerLayout; - private final MostVisitedTilesLayout mMvTilesLayout; + private final MostVisitedTilesGridLayout mMvTilesLayout; private final PropertyModel mModel; private final boolean mIsTablet; private final int mTileViewLandscapePadding; @@ -76,7 +76,7 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { public MostVisitedTilesMediator( Context context, UiConfig uiConfig, - View mvTilesContainerLayout, + MostVisitedTilesGridLayout mvTilesContainerLayout, TileRenderer renderer, PropertyModel propertyModel, boolean isTablet, @@ -223,12 +223,10 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { @Override public void onCustomTileCreation(Tile tile) { - mMvTilesLayout.ensureTileIsInViewOnNextLayout(tile.getIndex()); } @Override public void onCustomTileReorder(int newPos) { - mMvTilesLayout.ensureTileIsInViewOnNextLayout(newPos); } public void onConfigurationChanged() { @@ -264,10 +262,6 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { * recalculate the value of |mMvtContentFits|. */ void updateMvtOnTablet(@Nullable Integer totalWidth) { - if (totalWidth != null) { - mMvtContentFits = mMvTilesLayout.contentFitsOnTablet(totalWidth); - } - MarginLayoutParams marginLayoutParams = (MarginLayoutParams) mMvTilesContainerLayout.getLayoutParams(); marginLayoutParams.width = @@ -379,7 +373,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer { double firstTileScore = mTileGroup.getSuggestionScore(firstTile.getUrl()); if (firstTileScore < MVT_CUSTOMIZATION_IPH_TILE_SCORE_THRESHOULD) return; - - mMvTilesLayout.triggerCustomizationIph(mUserEducationHelper); } } diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileDragDelegateImpl.java @@ -77,7 +77,7 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate private static final float DOMINATE_TRESHOLD_RATIO = 0.4f; // Parent container for dragged tiles. - private final MostVisitedTilesLayout mMvTilesLayout; + private final MostVisitedTilesGridLayout mMvTilesLayout; private final @Px float mTileWidthPx; @@ -103,7 +103,7 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate // (e.g., for Swap Flow, to allow fast repeated keyboard-triggered swaps) the action. private @Nullable Runnable mPendingChangeFinalizer; - public TileDragDelegateImpl(MostVisitedTilesLayout mvTilesLayout) { + public TileDragDelegateImpl(MostVisitedTilesGridLayout mvTilesLayout) { mMvTilesLayout = mvTilesLayout; Resources res = mMvTilesLayout.getResources(); mTileWidthPx = res.getDimensionPixelSize(R.dimen.tile_view_width); @@ -228,18 +228,10 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate @Override public void showDivider(boolean isAnimated) { - SuggestionsTileVerticalDivider divider = mMvTilesLayout.getDividerMaybeNull(); - if (divider != null) { - divider.show(isAnimated); - } } @Override public void hideDivider(boolean isAnimated) { - SuggestionsTileVerticalDivider divider = mMvTilesLayout.getDividerMaybeNull(); - if (divider != null) { - divider.hide(isAnimated); - } } @Override @@ -275,7 +267,7 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate public boolean isAutoScrollEnabled() { // TODO(b/431765443): Return !DeviceInfo.isDesktop() if auto-scroll should be disabled on // desktop Android browsers. - return true; + return false; } @Override @@ -285,12 +277,12 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate @Override public SiteSuggestion getTileViewData(TileView view) { - return mMvTilesLayout.getTileViewData(view); + return null; } @Override public HorizontalScrollView getOuterView() { - return mMvTilesLayout.getScrollView(); + return null; } List getDraggableTileViews() { diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java @@ -172,7 +172,7 @@ public class TileRenderer { */ public void renderTileSection( List sectionTiles, - TilesLinearLayout parent, + MostVisitedTilesGridLayout parent, TileGroup.TileSetupDelegate setupDelegate) { try (TraceEvent e = TraceEvent.scoped("TileRenderer.renderTileSection")) { // Map the old tile views by url so they can be reused later. @@ -210,7 +210,7 @@ public class TileRenderer { if (prevTile != null && (prevTile.getData().source == TileSource.CUSTOM_LINKS) != (tile.getData().source == TileSource.CUSTOM_LINKS)) { - parent.addDivider(buildDivider(parent)); + //parent.addDivider(buildDivider(parent)); } parent.addTile(tileView); if (focusedUrl != null && focusedUrl.equals(tile.getUrl().getSpec())) { @@ -226,7 +226,7 @@ public class TileRenderer { if (shouldShowAddNewButton(sectionTiles)) { TileView addCustomLinksButton = buildAddCustomLinksButton(parent, setupDelegate); - parent.addUiView(addCustomLinksButton, mTileWidth); + //parent.addUiView(addCustomLinksButton, mTileWidth); } } } @@ -261,7 +261,7 @@ public class TileRenderer { */ @VisibleForTesting SuggestionsTileView buildTileView( - Tile tile, TilesLinearLayout parent, TileGroup.TileSetupDelegate setupDelegate) { + Tile tile, MostVisitedTilesGridLayout parent, TileGroup.TileSetupDelegate setupDelegate) { SuggestionsTileView tileView = (SuggestionsTileView) LayoutInflater.from(parent.getContext()) @@ -324,7 +324,7 @@ public class TileRenderer { return tileView; } - SuggestionsTileVerticalDivider buildDivider(TilesLinearLayout parent) { + SuggestionsTileVerticalDivider buildDivider(MostVisitedTilesGridLayout parent) { return (SuggestionsTileVerticalDivider) LayoutInflater.from(parent.getContext()) .inflate(R.layout.suggestions_tile_vertical_divider, parent, false); @@ -345,7 +345,7 @@ public class TileRenderer { } TileView buildAddCustomLinksButton( - TilesLinearLayout parent, TileGroup.TileSetupDelegate setupDelegate) { + MostVisitedTilesGridLayout parent, TileGroup.TileSetupDelegate setupDelegate) { Resources res = mContext.getResources(); String title = res.getString(R.string.most_visited_add_new); Drawable plusIcon = diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java --- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TilesLinearLayout.java @@ -32,7 +32,7 @@ import java.util.List; * #getChildAt()}. */ @NullMarked -public class TilesLinearLayout extends LinearLayout { +class TilesLinearLayout extends LinearLayout { private final List mTileList = new ArrayList<>(); protected int mTileAndUiViewCount; diff --git a/chrome/browser/engagement/important_sites_util.cc b/chrome/browser/engagement/important_sites_util.cc --- a/chrome/browser/engagement/important_sites_util.cc +++ b/chrome/browser/engagement/important_sites_util.cc @@ -59,7 +59,7 @@ static const int kTimesIgnoredForSuppression = 3; // These are the maximum # of bookmarks we can use as signals. If the user has // <= kMaxBookmarks, then we just use those bookmarks. Otherwise we filter all // bookmarks on site engagement > 0, sort, and trim to kMaxBookmarks. -static const int kMaxBookmarks = 5; +static const int kMaxBookmarks = 4 * 4 + 2; // We need this to be a macro, as the histogram macros cache their pointers // after the first call, so when we change the uma name we check fail if we're diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc --- a/chrome/browser/flags/android/chrome_feature_list.cc +++ b/chrome/browser/flags/android/chrome_feature_list.cc @@ -382,6 +382,7 @@ const base::Feature* const kFeaturesExposedToJava[] = { &kKeyboardEscBackNavigation, &kLaunchCauseScreenOffFix, &kLensOnQuickActionSearchWidget, + &kSimplifiedNTP, &kLinkHoverStatusBar, &kLoadAllTabsAtStartup, &kLoadNativeEarly, diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java --- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java +++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java @@ -530,6 +530,7 @@ public abstract class ChromeFeatureList { "MayLaunchUrlUsesSeparateStoragePartition"; public static final String MEDIA_INDICATORS_ANDROID = "MediaIndicatorsAndroid"; public static final String MOST_VISITED_TILES_CUSTOMIZATION = "MostVisitedTilesCustomization"; + public static final String SIMPLIFIED_NTP = "SimplifiedNTP"; public static final String SEARCH_READY_OMNIBOX = "SearchReadyOmnibox"; public static final String MOST_VISITED_TILES_RESELECT = "MostVisitedTilesReselect"; public static final String MOVE_TO_FRONT_IN_LAUNCH_INTENT_DISPATCHER = diff --git a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc --- a/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc +++ b/chrome/browser/ntp_tiles/chrome_most_visited_sites_factory.cc @@ -67,10 +67,6 @@ ChromeMostVisitedSitesFactory::NewForProfile(Profile* profile) { std::unique_ptr data_decoder; -#if BUILDFLAG(IS_ANDROID) - data_decoder = std::make_unique(); -#endif - bool is_default_chrome_app_migrated; #if BUILDFLAG(IS_ANDROID) diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java --- a/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java +++ b/chrome/browser/segmentation_platform/android/java/src/org/chromium/chrome/browser/segmentation_platform/client_util/HomeModulesRankingHelper.java @@ -32,6 +32,7 @@ public final class HomeModulesRankingHelper { Profile profile, InputContext freshnessAndEphemeralInputs, Callback> callback) { + if ((true)) return; HomeModulesRankingHelperJni.get() .getClassificationResult( profile, diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd --- a/chrome/browser/ui/android/strings/android_chrome_strings.grd +++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd @@ -4182,6 +4182,12 @@ To change this setting, BEGIN_LINKdelete the Chrome d Recent tabs + + Nothing to see here… yet + + + Your most visited pages will appear here + This site won't be shown again diff --git a/components/history/core/browser/top_sites_constants.h b/components/history/core/browser/top_sites_constants.h --- a/components/history/core/browser/top_sites_constants.h +++ b/components/history/core/browser/top_sites_constants.h @@ -9,7 +9,7 @@ namespace history { // How many top sites to store in the cache. -static constexpr size_t kTopSitesNumber = 10; +static constexpr size_t kTopSitesNumber = 4 * 4 + 2; } // namespace history #endif // COMPONENTS_HISTORY_CORE_BROWSER_TOP_SITES_CONSTANTS_H_ diff --git a/components/ntp_tiles/custom_links_store.cc b/components/ntp_tiles/custom_links_store.cc --- a/components/ntp_tiles/custom_links_store.cc +++ b/components/ntp_tiles/custom_links_store.cc @@ -63,8 +63,6 @@ std::vector CustomLinksStore::RetrieveLinks() { if (!has_recorded_first_load_stats) { has_recorded_first_load_stats = true; - ntp_tiles::metrics::RecordNumberOfCustomTilesOnFirstNtp( - static_cast(links.size())); } return links; diff --git a/components/omnibox/common/omnibox_features.cc b/components/omnibox/common/omnibox_features.cc --- a/components/omnibox/common/omnibox_features.cc +++ b/components/omnibox/common/omnibox_features.cc @@ -194,6 +194,7 @@ BASE_FEATURE(kOmniboxAimDeferShowUntilVisualStateReady, ENABLED); BASE_FEATURE(kDefaultTypedNavigationsToHttps, "OmniboxDefaultTypedNavigationsToHttps", enable_if(IS_IOS)); +SET_CROMITE_FEATURE_ENABLED(kDefaultTypedNavigationsToHttps); // Override the delay to create a spare renderer when the omnibox is focused // on Android. @@ -278,6 +279,7 @@ BASE_FEATURE(kOmniboxMobileParityUpdate, ENABLED); // Updates various NTP/Omnibox assets and descriptions for visual alignment on // Android and iOS, V2. BASE_FEATURE(kOmniboxMobileParityUpdateV2, ENABLED); +SET_CROMITE_FEATURE_DISABLED(kOmniboxMobileParityUpdateV2); // If enabled, the X-Geo header will include permission granularity. BASE_FEATURE(kOmniboxXGeoPermissionGranularity, ENABLED); diff --git a/components/search_engines/template_url.h b/components/search_engines/template_url.h --- a/components/search_engines/template_url.h +++ b/components/search_engines/template_url.h @@ -803,9 +803,9 @@ class TemplateURL { } const GURL& favicon_url() const { return data().favicon_url; } - const GURL& logo_url() const { return data().logo_url; } + const GURL logo_url() const { return GURL(); } - const GURL& doodle_url() const { return data().doodle_url; } + const GURL doodle_url() const { return GURL(); } const GURL& originating_url() const { return data().originating_url; } diff --git a/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/about_flags_cc/Restore-Simplified-NTP-launch.inc @@ -0,0 +1,12 @@ +#if BUILDFLAG(IS_ANDROID) + +#ifdef FLAG_SECTION + + {"simplified-ntp", + "Simplified NTP", + "Show a simplified New Tab Page.", kOsAndroid, + FEATURE_VALUE_TYPE(chrome::android::kSimplifiedNTP)}, + +#endif + +#endif diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-Simplified-NTP-launch.inc @@ -0,0 +1,6 @@ +CROMITE_FEATURE(kSimplifiedNTP, + "SimplifiedNTP", + base::FEATURE_ENABLED_BY_DEFAULT); + +SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationV2); +SET_CROMITE_FEATURE_DISABLED(kNewTabPageCustomizationForMvt); diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc new file mode 100644 --- /dev/null +++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/Restore-Simplified-NTP-launch.inc @@ -0,0 +1 @@ +BASE_DECLARE_FEATURE(kSimplifiedNTP); --