minimize patches

This commit is contained in:
bridiver
2020-03-16 20:14:38 -07:00
parent c43da4b30f
commit 52d321d219
8 changed files with 161 additions and 92 deletions
@@ -317,24 +317,60 @@ public abstract class BraveActivity extends ChromeActivity {
}
}
public void openNewOrSelectExistingTab(String url) {
public Tab selectExistingTab(String url) {
Tab tab = getActivityTab();
if (tab != null && tab.getUrl().equals(url)) {
return tab;
}
TabModel tabModel = getCurrentTabModel();
int tabIndex = TabModelUtils.getTabIndexByUrl(tabModel, url);
// Find if tab exists
if (tabIndex != TabModel.INVALID_TAB_INDEX){
tab = tabModel.getTabAt(tabIndex);
// Moving tab forward
tabModel.moveTab(tab.getId(), tabModel.getCount());
tabModel.setIndex(
TabModelUtils.getTabIndexById(tabModel, tab.getId()),
TabSelectionType.FROM_USER);
return tab;
} else {
return null;
}
}
public Tab openNewOrSelectExistingTab(String url) {
TabModel tabModel = getCurrentTabModel();
int tabRewardsIndex = TabModelUtils.getTabIndexByUrl(tabModel, url);
// Find if tab exists
if (tabRewardsIndex != TabModel.INVALID_TAB_INDEX){
Tab tab = tabModel.getTabAt(tabRewardsIndex);
// Moving tab forward
if (!getActivityTab().equals(tab)){
tabModel.moveTab(tab.getId(), tabModel.getCount());
tabModel.setIndex(
TabModelUtils.getTabIndexById(tabModel, tab.getId()),
TabSelectionType.FROM_USER);
}
Tab tab = selectExistingTab(url);
if (tab != null) {
return tab;
} else { // Open a new tab
getTabCreator(false).launchUrl(url, TabLaunchType.FROM_CHROME_UI);
return getTabCreator(false).launchUrl(url, TabLaunchType.FROM_CHROME_UI);
}
}
private native void nativeRestartStatsUpdater();
static public ChromeTabbedActivity getChromeTabbedActivity() {
for (Activity ref : ApplicationStatus.getRunningActivities()) {
if (!(ref instanceof ChromeTabbedActivity)) continue;
return (ChromeTabbedActivity)ref;
}
return null;
}
static public BraveActivity getBraveActivity() {
for (Activity ref : ApplicationStatus.getRunningActivities()) {
if (!(ref instanceof BraveActivity)) continue;
return (BraveActivity)ref;
}
return null;
}
}
@@ -194,23 +194,11 @@ public class BraveRewardsHelper implements LargeIconBridge.LargeIconCallback{
}
static public ChromeTabbedActivity getChromeTabbedActivity() {
for (Activity ref : ApplicationStatus.getRunningActivities()) {
if (!(ref instanceof ChromeTabbedActivity)) continue;
return (ChromeTabbedActivity)ref;
}
return null;
return BraveActivity.getChromeTabbedActivity();
}
static public BraveActivity getBraveActivity() {
for (Activity ref : ApplicationStatus.getRunningActivities()) {
if (!(ref instanceof BraveActivity)) continue;
return (BraveActivity)ref;
}
return null;
return BraveActivity.getBraveActivity();
}
static public String getCurrentMonth(Calendar currentTime,
@@ -45,8 +45,9 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
}
@Override
public void insertSiteSectionView() {
protected void insertSiteSectionView() {
ViewGroup mainLayout = findViewById(R.id.ntp_main_layout);
mSiteSectionView = SiteSection.inflateSiteSection(mainLayout);
ViewGroup.LayoutParams layoutParams = mSiteSectionView.getLayoutParams();
layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
@@ -66,7 +67,7 @@ public class BraveNewTabPageLayout extends NewTabPageLayout {
}
@Override
public int getMaxTileRows() {
protected int getMaxTileRows() {
boolean isMoreTabs = false;
ChromeTabbedActivity chromeTabbedActivity = BraveRewardsHelper.getChromeTabbedActivity();
if(chromeTabbedActivity != null) {
@@ -10,52 +10,49 @@ import android.os.Build;
import org.chromium.base.Supplier;
import org.chromium.chrome.browser.ChromeActivity;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
import org.chromium.chrome.browser.BraveActivity;
import org.chromium.chrome.browser.ChromeTabbedActivity;
import org.chromium.chrome.browser.init.StartupTabPreloader;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.util.UrlConstants;
import org.chromium.chrome.browser.BraveRewardsHelper;
import org.chromium.chrome.browser.tab.Tab;
import org.chromium.chrome.browser.tab.TabDelegateFactory;
import org.chromium.chrome.browser.ntp_sponsored_images.SponsoredImageUtil;
import org.chromium.chrome.browser.ntp_sponsored_images.NTPSponsoredImagesBridge;
import org.chromium.chrome.browser.ntp.NewTabPage;
import org.chromium.chrome.browser.preferences.BravePref;
import org.chromium.chrome.browser.preferences.BravePrefServiceBridge;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.util.UrlConstants;
public class BraveTabCreator extends ChromeTabCreator {
public BraveTabCreator(ChromeActivity activity,
public BraveTabCreator(ChromeActivity activity,
WindowAndroid nativeWindow,
StartupTabPreloader startupTabPreloader,
Supplier<TabDelegateFactory> tabDelegateFactory,
StartupTabPreloader startupTabPreloader,
Supplier<TabDelegateFactory> tabDelegateFactory,
boolean incognito) {
super(activity, nativeWindow, startupTabPreloader, tabDelegateFactory, incognito);
}
@Override
public void launchNTP() {
ChromeTabbedActivity chromeTabbedActivity = BraveRewardsHelper.getChromeTabbedActivity();
if(chromeTabbedActivity != null && Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
TabModel tabModel = chromeTabbedActivity.getCurrentTabModel();
if (tabModel.getCount() >= SponsoredImageUtil.MAX_TABS && BravePrefServiceBridge.getInstance().getBoolean(BravePref.NTP_SHOW_BACKGROUND_IMAGE)) {
if(chromeTabbedActivity.getActivityTab() != null && NewTabPage.isNTPUrl(chromeTabbedActivity.getActivityTab().getUrl())) {
chromeTabbedActivity.hideOverview();
} else {
chromeTabbedActivity.openNewOrSelectExistingTab(UrlConstants.NTP_URL);
chromeTabbedActivity.hideOverview();
}
} else {
initializeNTPBridge();
launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
}
} else {
initializeNTPBridge();
launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);
}
super(activity, nativeWindow, startupTabPreloader, tabDelegateFactory, incognito);
}
private void initializeNTPBridge() {
@Override
public Tab launchUrl(String url, @TabLaunchType int type) {
if (url.equals(UrlConstants.NTP_URL) && type == TabLaunchType.FROM_CHROME_UI) {
registerPageView();
ChromeTabbedActivity chromeTabbedActivity = BraveActivity.getChromeTabbedActivity();
if(chromeTabbedActivity != null && Build.VERSION.SDK_INT <= Build.VERSION_CODES.M) {
TabModel tabModel = chromeTabbedActivity.getCurrentTabModel();
if (tabModel.getCount() >= SponsoredImageUtil.MAX_TABS && BravePrefServiceBridge.getInstance().getBoolean(BravePref.NTP_SHOW_BACKGROUND_IMAGE)) {
Tab tab = chromeTabbedActivity.selectExistingTab(UrlConstants.NTP_URL);
if (tab != null) {
chromeTabbedActivity.hideOverview();
return tab;
}
}
}
}
return super.launchUrl(url, type);
}
private void registerPageView() {
NTPSponsoredImagesBridge.getInstance(Profile.getLastUsedProfile()).registerPageView();
}
}
@@ -15,9 +15,11 @@ import org.chromium.base.Log;
import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.base.task.PostTask;
import org.chromium.chrome.browser.BraveHelper;
import org.chromium.chrome.browser.preferences.BravePref;
import org.chromium.chrome.browser.preferences.BravePrefServiceBridge;
import org.chromium.chrome.browser.preferences.website.BraveShieldsContentSettings;
import org.chromium.chrome.browser.profiles.Profile;
import org.chromium.chrome.browser.settings.BackgroundImagesPreferences;
import org.chromium.chrome.browser.settings.website.WebsitePreferenceBridge;
import org.chromium.content_public.browser.BrowserStartupController;
import org.chromium.content_public.browser.UiThreadTaskTraits;
@@ -219,6 +221,14 @@ public class BraveUpgradeJobIntentService extends JobIntentService {
BravePrefServiceBridge.getInstance().setDesktopModeEnabled(
BravePrefServiceBridge.getInstance().GetBooleanForContentSetting(CONTENT_SETTINGS_TYPE_DESKTOP_VIEW));
// Background image settings settings
if (sharedPreferences.contains(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES)) {
BravePrefServiceBridge.getInstance().setBoolean(BravePref.NTP_SHOW_BACKGROUND_IMAGE,
sharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_BACKGROUND_IMAGES, true));
BravePrefServiceBridge.getInstance().setBoolean(BravePref.NTP_SHOW_BRANDED_BACKGROUND_IMAGE,
sharedPreferences.getBoolean(BackgroundImagesPreferences.PREF_SHOW_SPONSORED_IMAGES, true));
}
// Migrate search engines settings
sharedPreferencesEditor.putString(BraveHelper.PRIVATE_DSE_KEYWORD,
sharedPreferences.getString(PREF_PRIVATE_SEARCH_ENGINE_KEYWORD, DSE_KEYWORD));
@@ -9,15 +9,21 @@ import static org.objectweb.asm.Opcodes.ACC_PRIVATE;
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
import static org.objectweb.asm.Opcodes.ASM5;
import java.util.ArrayList;
import java.util.List;
import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.tree.AnnotationNode;
import org.objectweb.asm.tree.ClassNode;
import org.objectweb.asm.tree.MethodNode;
class BraveClassVisitor extends ClassVisitor {
private ClassVisitor mTarget;
class Method {
public int access;
public String name;
@@ -48,9 +54,12 @@ class BraveClassVisitor extends ClassVisitor {
new HashMap<String, ArrayList<String>>();
private Map<String, ArrayList<String>> mMakePublicMethods =
new HashMap<String, ArrayList<String>>();
private Map<String, Map<String, ArrayList<String>>> mAddAnnotations =
new HashMap<String, Map<String, ArrayList<String>>>();
public BraveClassVisitor(ClassVisitor visitor) {
super(ASM5, visitor);
super(ASM5, null);
mTarget = visitor;
}
protected void changeSuperName(String className, String superName) {
@@ -99,6 +108,22 @@ class BraveClassVisitor extends ClassVisitor {
methods.add(methodName);
}
protected void addMethodAnnotation(String className, String methodName, String annotationType) {
Map<String, ArrayList<String>> annotations = mAddAnnotations.get(className);
if (annotations == null) {
annotations = new HashMap<String, ArrayList<String>>();
mAddAnnotations.put(className, annotations);
}
ArrayList<String> annotationList = annotations.get(methodName);
if (annotationList == null) {
annotationList = new ArrayList<String>();
annotations.put(methodName, annotationList);
}
annotationList.add(annotationType);
}
@Override
public void visit(int version,
int access,
@@ -106,6 +131,7 @@ class BraveClassVisitor extends ClassVisitor {
String signature,
String superName,
String[] interfaces) {
super.cv = new ClassNode();
mName = name;
if (mSuperNames.containsKey(name)) {
superName = mSuperNames.get(name);
@@ -151,4 +177,36 @@ class BraveClassVisitor extends ClassVisitor {
method.signature,
method.exceptions);
}
protected ClassNode process(ClassNode source) {
Map<String, ArrayList<String>> annotationsForClass = mAddAnnotations.get(source.name);
if (annotationsForClass == null)
return source;
List<MethodNode> methods = source.methods;
for (MethodNode method : methods) {
ArrayList<String> annotations = annotationsForClass.get(method.name);
if (annotations != null) {
if (method.visibleAnnotations == null) {
method.visibleAnnotations = new ArrayList<AnnotationNode>();
}
for (String annotation : annotations) {
method.visibleAnnotations.add(new AnnotationNode(annotation));
System.out.println("add " + annotation + " annotation to " + method.name + " in " + source.name);
}
}
}
return source;
}
@Override
public void visitEnd() {
super.visitEnd();
ClassNode source = (ClassNode)super.cv;
ClassNode result = process(source);
if (mTarget != null) {
result.accept(mTarget);
}
}
}
@@ -1,25 +1,17 @@
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
index db1db4f0b941c6cea83f2ca28ddc70b8e7916a90..29b95ee943646c9556533850585b904300ad918d 100644
index db1db4f0b941c6cea83f2ca28ddc70b8e7916a90..337bbb41a18195c16603c62acb92de4c5c921a13 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
@@ -20,6 +20,7 @@ import android.view.ViewGroup;
import android.view.ViewStub;
import android.widget.ImageView;
import android.widget.LinearLayout;
+import android.widget.FrameLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
@@ -62,7 +63,7 @@ import org.chromium.ui.base.DeviceFormFactor;
@@ -62,7 +62,7 @@ import org.chromium.ui.base.DeviceFormFactor;
* Layout for the new tab page. This positions the page elements in the correct vertical positions.
* There are no separate phone and tablet UIs; this layout adapts based on the available space.
*/
-public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer, VrModeObserver {
+public class NewTabPageLayout extends FrameLayout implements TileGroup.Observer, VrModeObserver {
+public class NewTabPageLayout extends android.widget.FrameLayout implements TileGroup.Observer, VrModeObserver {
private static final String TAG = "NewTabPageLayout";
// Used to signify the cached resource value is unset.
private static final int UNSET_RESOURCE_FLAG = -1;
@@ -74,7 +75,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
@@ -74,7 +74,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
private LogoView mSearchProviderLogoView;
private View mSearchBoxView;
@@ -28,21 +20,21 @@ index db1db4f0b941c6cea83f2ca28ddc70b8e7916a90..29b95ee943646c9556533850585b9043
private SiteSectionViewHolder mSiteSectionViewHolder;
private ImageView mVoiceSearchButton;
private View mTileGridPlaceholder;
@@ -415,7 +416,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
@@ -415,7 +415,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
1f);
}
- private void insertSiteSectionView() {
+ public void insertSiteSectionView() {
+ protected void insertSiteSectionView() {
mSiteSectionView = SiteSection.inflateSiteSection(this);
ViewGroup.LayoutParams layoutParams = mSiteSectionView.getLayoutParams();
layoutParams.width = ViewGroup.LayoutParams.WRAP_CONTENT;
@@ -786,7 +787,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
@@ -786,7 +786,7 @@ public class NewTabPageLayout extends LinearLayout implements TileGroup.Observer
}
}
- private static int getMaxTileRows() {
+ public int getMaxTileRows() {
+ protected int getMaxTileRows() {
return 2;
}
@@ -1,13 +0,0 @@
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
index de7adb86f85b72ad82b8d994c59d164394cbdfdb..c8f26dd54052d28257d9ddbb670264d0c6b54dcb 100644
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabCreatorManager.java
@@ -87,7 +87,7 @@ public interface TabCreatorManager {
/**
* Creates a new tab and loads the NTP.
*/
- public final void launchNTP() {
+ public void launchNTP() {
try {
TraceEvent.begin("TabCreator.launchNTP");
launchUrl(UrlConstants.NTP_URL, TabLaunchType.FROM_CHROME_UI);