[Android] NewTabPage modifications
Fixes crash on opening new tab after closing all Fixes NTP image on changing phone layout Related to chromium change: https://chromium.googlesource.com/chromium/src/+/c0a930a52910bb56bf68925d9f233c29281c516b commit c0a930a52910bb56bf68925d9f233c29281c516b Author: Theresa Wellington <twellington@chromium.org> Date: Fri May 1 20:33:45 2020 +0000 Combine FeedNewTabPage with NewTabPage, delete dead code Fold FeedNewTabPage into NewTabPage and start cleaning-up Java code that is no longer needed. Obviously dead code has been removed; subsequent CLs will be needed to clean-up more Java code and C++ classes. Bug: 1069183
This commit is contained in:
@@ -48,6 +48,7 @@ brave_java_sources = [
|
||||
"../../brave/android/java/org/chromium/chrome/browser/BraveUphold.java",
|
||||
"../../brave/android/java/org/chromium/chrome/browser/notifications/channels/BraveChannelDefinitions.java",
|
||||
"../../brave/android/java/org/chromium/chrome/browser/ntp/BraveDuckDuckGoOfferView.java",
|
||||
"../../brave/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPage.java",
|
||||
"../../brave/android/java/org/chromium/chrome/browser/ntp/BraveNewTabPageLayout.java",
|
||||
"../../brave/android/java/org/chromium/chrome/browser/ntp/IncognitoNewTabPageView.java",
|
||||
"../../brave/android/java/org/chromium/chrome/browser/ntp_background_images/model/NTPImage.java",
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
/* Copyright (c) 2020 The Brave Authors. All rights reserved.
|
||||
* 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.chromium.chrome.browser.ntp;
|
||||
|
||||
import android.app.Activity;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import org.chromium.base.supplier.Supplier;
|
||||
import org.chromium.chrome.browser.compositor.layouts.OverviewModeBehavior;
|
||||
import org.chromium.chrome.browser.feed.BraveFeedSurfaceCoordinator;
|
||||
import org.chromium.chrome.browser.feed.FeedProcessScopeFactory;
|
||||
import org.chromium.chrome.browser.feed.shared.FeedSurfaceProvider;
|
||||
import org.chromium.chrome.browser.fullscreen.BrowserControlsStateProvider;
|
||||
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
||||
import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
||||
import org.chromium.chrome.browser.ui.native_page.NativePageHost;
|
||||
|
||||
public class BraveNewTabPage extends NewTabPage {
|
||||
private NewTabPageLayout mNewTabPageLayout;
|
||||
private FeedSurfaceProvider mFeedSurfaceProvider;
|
||||
|
||||
public BraveNewTabPage(Activity activity,
|
||||
BrowserControlsStateProvider browserControlsStateProvider,
|
||||
Supplier<Tab> activityTabProvider, @Nullable OverviewModeBehavior overviewModeBehavior,
|
||||
SnackbarManager snackbarManager, ActivityLifecycleDispatcher lifecycleDispatcher,
|
||||
TabModelSelector tabModelSelector, boolean isTablet, NewTabPageUma uma,
|
||||
boolean isInNightMode, NativePageHost nativePageHost, Tab tab) {
|
||||
super(activity, browserControlsStateProvider, activityTabProvider, overviewModeBehavior,
|
||||
snackbarManager, lifecycleDispatcher, tabModelSelector, isTablet, uma,
|
||||
isInNightMode, nativePageHost, tab);
|
||||
|
||||
assert mNewTabPageLayout instanceof BraveNewTabPageLayout;
|
||||
if (mNewTabPageLayout instanceof BraveNewTabPageLayout) {
|
||||
((BraveNewTabPageLayout) mNewTabPageLayout).setTab(tab);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void initializeMainView(Activity activity, Supplier<Tab> tabProvider,
|
||||
SnackbarManager snackbarManager, TabModelSelector tabModelSelector, NewTabPageUma uma,
|
||||
boolean isInNightMode) {
|
||||
super.initializeMainView(
|
||||
activity, tabProvider, snackbarManager, tabModelSelector, uma, isInNightMode);
|
||||
// Override surface provider
|
||||
Profile profile = Profile.fromWebContents(mTab.getWebContents());
|
||||
|
||||
assert !FeedProcessScopeFactory.isFeedProcessEnabled();
|
||||
mFeedSurfaceProvider =
|
||||
new BraveFeedSurfaceCoordinator(activity, snackbarManager, tabModelSelector,
|
||||
tabProvider, new SnapScrollHelper(mNewTabPageManager, mNewTabPageLayout),
|
||||
mNewTabPageLayout, null, null, isInNightMode, this,
|
||||
mNewTabPageManager.getNavigationDelegate(), profile);
|
||||
}
|
||||
}
|
||||
@@ -105,7 +105,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
|
||||
|
||||
private ViewGroup mSiteSectionView;
|
||||
|
||||
private Supplier<Tab> mTabProvider;
|
||||
private Tab mTab;
|
||||
private Activity mActivity;
|
||||
|
||||
public BraveNewTabPageLayout(Context context, AttributeSet attrs) {
|
||||
@@ -204,6 +204,10 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
|
||||
@Override
|
||||
public void onConfigurationChanged(Configuration newConfig) {
|
||||
if (sponsoredTab != null && NTPUtil.shouldEnableNTPFeature(sponsoredTab.isMoreTabs())) {
|
||||
if (bgImageView != null) {
|
||||
// We need to redraw image to fit parent properly
|
||||
bgImageView.setImageResource(android.R.color.transparent);
|
||||
}
|
||||
NTPImage ntpImage = sponsoredTab.getTabNTPImage(false);
|
||||
if (ntpImage == null) {
|
||||
sponsoredTab.setNTPImage(SponsoredImageUtil.getBackgroundImage());
|
||||
@@ -234,7 +238,6 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
|
||||
|
||||
assert (activity instanceof BraveActivity);
|
||||
mActivity = activity;
|
||||
mTabProvider = tabProvider;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -636,14 +639,13 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
|
||||
return view != null && view.getParent() != null;
|
||||
}
|
||||
|
||||
public void setTab(Tab tab) {
|
||||
mTab = tab;
|
||||
}
|
||||
|
||||
private Tab getTab() {
|
||||
Tab tab = mTabProvider.get();
|
||||
if (tab == null && mActivity instanceof ChromeTabbedActivity) {
|
||||
ChromeTabbedActivity chromeActivity = ((ChromeTabbedActivity) mActivity);
|
||||
tab = chromeActivity.getActivityTab();
|
||||
}
|
||||
assert tab != null;
|
||||
return tab;
|
||||
assert mTab != null;
|
||||
return mTab;
|
||||
}
|
||||
|
||||
private TabImpl getTabImpl() {
|
||||
|
||||
@@ -33,6 +33,7 @@ public class BytecodeTest {
|
||||
Assert.assertTrue(classExists("org/chromium/chrome/browser/LaunchIntentDispatcher"));
|
||||
Assert.assertTrue(classExists("org/chromium/chrome/browser/ntp/NewTabPageLayout"));
|
||||
Assert.assertTrue(classExists("org/chromium/chrome/browser/feed/FeedSurfaceCoordinator"));
|
||||
Assert.assertTrue(classExists("org/chromium/chrome/browser/ntp/NewTabPage"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -65,6 +66,8 @@ public class BytecodeTest {
|
||||
Assert.assertTrue(fieldExists("org/chromium/chrome/browser/feed/FeedSurfaceCoordinator", "mScrollViewForPolicy"));
|
||||
Assert.assertTrue(fieldExists("org/chromium/chrome/browser/feed/FeedSurfaceCoordinator", "mNtpHeader"));
|
||||
Assert.assertTrue(fieldExists("org/chromium/chrome/browser/feed/FeedSurfaceCoordinator", "mRootView"));
|
||||
Assert.assertTrue(fieldExists("org/chromium/chrome/browser/ntp/NewTabPage", "mNewTabPageLayout"));
|
||||
Assert.assertTrue(fieldExists("org/chromium/chrome/browser/ntp/NewTabPage", "mFeedSurfaceProvider"));
|
||||
}
|
||||
|
||||
private boolean classExists(String className) {
|
||||
|
||||
@@ -17,6 +17,7 @@ public class BraveClassAdapter {
|
||||
chain = new BraveManageSyncSettingsClassAdapter(chain);
|
||||
chain = new BraveNewTabPageLayoutClassAdapter(chain);
|
||||
chain = new BraveFeedSurfaceCoordinatorClassAdapter(chain);
|
||||
chain = new BraveNewTabPageClassAdapter(chain);
|
||||
return chain;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
/* Copyright (c) 2020 The Brave Authors. All rights reserved.
|
||||
* 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.brave.bytecode;
|
||||
|
||||
import org.objectweb.asm.ClassVisitor;
|
||||
|
||||
public class BraveNewTabPageClassAdapter extends BraveClassVisitor {
|
||||
static String sNewTabPageClassName = "org/chromium/chrome/browser/ntp/NewTabPage";
|
||||
static String sBraveNewTabPageClassName = "org/chromium/chrome/browser/ntp/BraveNewTabPage";
|
||||
|
||||
public BraveNewTabPageClassAdapter(ClassVisitor visitor) {
|
||||
super(visitor);
|
||||
|
||||
deleteField(sBraveNewTabPageClassName, "mNewTabPageLayout");
|
||||
makeProtectedField(sNewTabPageClassName, "mNewTabPageLayout");
|
||||
|
||||
deleteField(sBraveNewTabPageClassName, "mFeedSurfaceProvider");
|
||||
makeProtectedField(sNewTabPageClassName, "mFeedSurfaceProvider");
|
||||
}
|
||||
}
|
||||
@@ -8,5 +8,6 @@ brave_java_bytecode_files = [
|
||||
"../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveFeedSurfaceCoordinatorClassAdapter.java",
|
||||
"../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveMainPreferenceBaseClassAdapter.java",
|
||||
"../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveManageSyncSettingsClassAdapter.java",
|
||||
"../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageLayoutClassAdapter.java"
|
||||
"../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageClassAdapter.java",
|
||||
"../../../brave/build/android/bytecode/java/org/brave/bytecode/BraveNewTabPageLayoutClassAdapter.java",
|
||||
]
|
||||
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
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
|
||||
index 7fc28ad0d47a3a9cabf5631aad19d469d5d05e11..e7d64854f03e54e602119982685b0a9503c3e1eb 100644
|
||||
--- 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
|
||||
@@ -82,7 +82,7 @@ public class NativePageFactory {
|
||||
NativePageHost nativePageHost = new TabShim(tab, mActivity);
|
||||
if (tab.isIncognito()) return new IncognitoNewTabPage(mActivity, nativePageHost);
|
||||
|
||||
- return new NewTabPage(mActivity, mActivity.getFullscreenManager(),
|
||||
+ return new org.chromium.chrome.browser.ntp.BraveNewTabPage(mActivity, mActivity.getFullscreenManager(),
|
||||
mActivity.getActivityTabProvider(), mActivity.getOverviewModeBehavior(),
|
||||
mActivity.getSnackbarManager(), mActivity.getLifecycleDispatcher(),
|
||||
mActivity.getTabModelSelector(), mActivity.isTablet(), mUma.get(),
|
||||
@@ -1,13 +0,0 @@
|
||||
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
|
||||
index 83657d3a9d528cc51e69be8dad61eb67f6e652a4..703764e66938d7427fb4341ab42a5ba52d2b19db 100644
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.java
|
||||
@@ -440,7 +440,7 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide
|
||||
}
|
||||
|
||||
mFeedSurfaceProvider =
|
||||
- new FeedSurfaceCoordinator(activity, snackbarManager, tabModelSelector, tabProvider,
|
||||
+ new org.chromium.chrome.browser.feed.BraveFeedSurfaceCoordinator(activity, snackbarManager, tabModelSelector, tabProvider,
|
||||
new SnapScrollHelper(mNewTabPageManager, mNewTabPageLayout),
|
||||
mNewTabPageLayout, sectionHeaderView, actionApi, isInNightMode, this,
|
||||
mNewTabPageManager.getNavigationDelegate(), profile);
|
||||
Reference in New Issue
Block a user