Patches for 135 (changed)
This commit is contained in:
@@ -14,15 +14,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
chrome/android/java/AndroidManifest.xml | 1 -
|
||||
.../menu/bookmark_toolbar_menu_improved.xml | 14 +
|
||||
.../browser/TabbedModeTabDelegateFactory.java | 5 +-
|
||||
.../app/bookmarks/BookmarkActivity.java | 32 ++
|
||||
.../app/bookmarks/BookmarkActivity.java | 31 ++
|
||||
.../native_page/NativePageFactory.java | 9 +-
|
||||
chrome/browser/BUILD.gn | 11 +-
|
||||
.../bookmarks/android/bookmark_bridge.cc | 267 ++++++++++++++++
|
||||
.../bookmarks/android/bookmark_bridge.cc | 267 +++++++++++++++++
|
||||
.../bookmarks/android/bookmark_bridge.h | 30 +-
|
||||
.../browser/bookmarks/BookmarkBridge.java | 285 ++++++++++++++++++
|
||||
.../browser/bookmarks/BookmarkBridge.java | 39 +++
|
||||
.../browser/bookmarks/BookmarkDelegate.java | 10 +
|
||||
.../bookmarks/BookmarkManagerCoordinator.java | 9 +
|
||||
.../bookmarks/BookmarkManagerMediator.java | 23 ++
|
||||
.../bookmarks/BookmarkManagerMediator.java | 283 ++++++++++++++++++
|
||||
.../browser/bookmarks/BookmarkPage.java | 9 +-
|
||||
.../browser/bookmarks/BookmarkToolbar.java | 28 ++
|
||||
.../bookmarks/BookmarkToolbarMediator.java | 4 +
|
||||
@@ -52,7 +52,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
ui/shell_dialogs/select_file_dialog_linux.cc | 4 +
|
||||
ui/shell_dialogs/select_file_dialog_linux.h | 2 +
|
||||
ui/shell_dialogs/select_file_dialog_win.cc | 5 +
|
||||
41 files changed, 888 insertions(+), 29 deletions(-)
|
||||
41 files changed, 901 insertions(+), 29 deletions(-)
|
||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc
|
||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc
|
||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc
|
||||
@@ -124,7 +124,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/TabbedModeTabDe
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/BookmarkActivity.java
|
||||
@@ -28,6 +28,9 @@ import org.chromium.components.embedder_support.util.UrlConstants;
|
||||
@@ -7,6 +7,7 @@ package org.chromium.chrome.browser.app.bookmarks;
|
||||
import android.content.ComponentName;
|
||||
import android.content.Intent;
|
||||
import android.text.TextUtils;
|
||||
+import android.os.Bundle;
|
||||
|
||||
import org.chromium.base.IntentUtils;
|
||||
import org.chromium.build.annotations.Nullable;
|
||||
@@ -28,6 +29,9 @@ import org.chromium.components.embedder_support.util.UrlConstants;
|
||||
import org.chromium.ui.modaldialog.ModalDialogManager;
|
||||
import org.chromium.ui.modaldialog.ModalDialogManager.ModalDialogType;
|
||||
|
||||
@@ -134,17 +142,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
|
||||
/**
|
||||
* The activity that displays the bookmark UI on the phone. It keeps a {@link
|
||||
* BookmarkManagerCoordinator} inside of it and creates a snackbar manager. This activity should
|
||||
@@ -38,6 +41,9 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
public static final int EDIT_BOOKMARK_REQUEST_CODE = 14;
|
||||
public static final String INTENT_VISIT_BOOKMARK_ID = "BookmarkEditActivity.VisitBookmarkId";
|
||||
@@ -41,6 +45,9 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
private @Nullable BookmarkManagerCoordinator mBookmarkManagerCoordinator;
|
||||
private @Nullable BookmarkOpener mBookmarkOpener;
|
||||
|
||||
+ private ActivityWindowAndroid mWindowAndroid;
|
||||
+ private IntentRequestTracker mIntentRequestTracker;
|
||||
+
|
||||
private @Nullable BookmarkManagerCoordinator mBookmarkManagerCoordinator;
|
||||
private @Nullable BookmarkOpener mBookmarkOpener;
|
||||
|
||||
@@ -70,8 +76,25 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
@Override
|
||||
protected void onProfileAvailable(Profile profile) {
|
||||
super.onProfileAvailable(profile);
|
||||
@@ -70,6 +77,14 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
getOnBackPressedDispatcher(),
|
||||
mBookmarkManagerCoordinator,
|
||||
SecondaryActivity.BOOKMARK);
|
||||
@@ -154,23 +162,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
|
||||
+ mWindowAndroid = new ActivityWindowAndroid(this, listenToActivityState,
|
||||
+ mIntentRequestTracker, /*InsetObserver*/ null,
|
||||
+ /* trackOcclusion= */ true);
|
||||
+ mWindowAndroid.getIntentRequestTracker().restoreInstanceState(savedInstanceState);
|
||||
+ mBookmarkManagerCoordinator.setWindow(mWindowAndroid,
|
||||
+ new ModalDialogManager(
|
||||
+ new AppModalPresenter(this), ModalDialogManager.ModalDialogType.APP));
|
||||
+ getModalDialogManagerSupplier().get());
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ protected void onSaveInstanceState(Bundle outState) {
|
||||
+ super.onSaveInstanceState(outState);
|
||||
+
|
||||
+ mWindowAndroid.getIntentRequestTracker().saveInstanceState(outState);
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
super.onDestroy();
|
||||
@@ -89,6 +112,7 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
@@ -89,6 +104,7 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
@Override
|
||||
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
|
||||
super.onActivityResult(requestCode, resultCode, data);
|
||||
@@ -178,10 +175,17 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
|
||||
if (requestCode == EDIT_BOOKMARK_REQUEST_CODE && resultCode == RESULT_OK) {
|
||||
BookmarkId bookmarkId =
|
||||
BookmarkId.getBookmarkIdFromString(
|
||||
@@ -102,6 +126,14 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
return new ModalDialogManager(new AppModalPresenter(this), ModalDialogType.APP);
|
||||
@@ -97,6 +113,21 @@ public class BookmarkActivity extends SnackbarActivity {
|
||||
}
|
||||
}
|
||||
|
||||
+ @Override
|
||||
+ protected void onSaveInstanceState(Bundle outState) {
|
||||
+ super.onSaveInstanceState(outState);
|
||||
+
|
||||
+ mWindowAndroid.getIntentRequestTracker().saveInstanceState(outState);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onRequestPermissionsResult(
|
||||
+ int requestCode, String[] permissions, int[] grantResults) {
|
||||
@@ -190,9 +194,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/bookmarks/B
|
||||
+ super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* @return The {@link BookmarkManagerCoordinator} for testing purposes.
|
||||
*/
|
||||
@Override
|
||||
protected ModalDialogManager createModalDialogManager() {
|
||||
return new ModalDialogManager(new AppModalPresenter(this), ModalDialogType.APP);
|
||||
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
|
||||
@@ -665,302 +669,63 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
|
||||
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
@@ -36,6 +36,48 @@ import org.chromium.url.GURL;
|
||||
@@ -36,6 +36,9 @@ import org.chromium.url.GURL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
+import android.app.Activity;
|
||||
+import android.content.Intent;
|
||||
+import android.content.Context;
|
||||
+import android.content.pm.PackageManager;
|
||||
+import android.content.DialogInterface;
|
||||
+import android.content.res.Resources;
|
||||
+import android.content.ContentResolver;
|
||||
+import android.net.Uri;
|
||||
+import android.provider.Browser;
|
||||
+import android.provider.DocumentsContract;
|
||||
+import android.Manifest.permission;
|
||||
+import android.view.View;
|
||||
+import android.view.LayoutInflater;
|
||||
+
|
||||
+import androidx.appcompat.app.AlertDialog;
|
||||
+import android.os.Build;
|
||||
+
|
||||
+import java.io.File;
|
||||
+
|
||||
+import org.chromium.base.ContentUriUtils;
|
||||
+import org.chromium.base.shared_preferences.SharedPreferencesManager;
|
||||
+import org.chromium.base.task.AsyncTask;
|
||||
+import org.chromium.chrome.R;
|
||||
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
|
||||
+import org.chromium.chrome.browser.IntentHandler;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.download.DownloadLocationDialogType;
|
||||
+import org.chromium.chrome.browser.download.settings.DownloadLocationHelperImpl;
|
||||
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogController;
|
||||
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogCoordinator;
|
||||
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationCustomView;
|
||||
+import org.chromium.chrome.browser.download.DirectoryOption;
|
||||
+import org.chromium.chrome.browser.profiles.ProfileManager;
|
||||
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
||||
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||
+import org.chromium.ui.base.PageTransition;
|
||||
+import org.chromium.ui.base.WindowAndroid;
|
||||
+import org.chromium.ui.modelutil.PropertyModel;
|
||||
+import org.chromium.ui.modaldialog.ModalDialogManager;
|
||||
+import org.chromium.ui.modaldialog.ModalDialogProperties;
|
||||
+import org.chromium.ui.modaldialog.DialogDismissalCause;
|
||||
+import java.util.function.BiConsumer;
|
||||
+
|
||||
/**
|
||||
* Provides the communication channel for Android to fetch and manipulate the bookmark model stored
|
||||
* in native.
|
||||
@@ -498,6 +540,245 @@ class BookmarkBridge {
|
||||
@@ -52,6 +55,9 @@ class BookmarkBridge {
|
||||
private boolean mIsNativeBookmarkModelLoaded;
|
||||
private boolean mInitializedPartnerBookmarks;
|
||||
|
||||
+ private static final BiConsumer<Boolean, String> NOOP = (success, bookmarksPath) -> {};
|
||||
+ private BiConsumer<Boolean, String> mOnExportedFunction = NOOP;
|
||||
+
|
||||
// Lazily set pseudo-constants. These should never change at runtime. Used to avoid crossing
|
||||
// JNI to fetch information.
|
||||
private @Nullable BookmarkId mRootFolderId;
|
||||
@@ -498,6 +504,35 @@ class BookmarkBridge {
|
||||
.getTotalBookmarkCount(mNativeBookmarkBridge, id.getId(), id.getType());
|
||||
}
|
||||
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksExported(WindowAndroid window, String bookmarksPath, boolean success) {
|
||||
+ Uri uri = Uri.parse(bookmarksPath);
|
||||
+
|
||||
+ if (success == false) {
|
||||
+ ((Activity)window.getContext().get()).runOnUiThread(new Runnable() {
|
||||
+ public void run() {
|
||||
+ window.showError(R.string.saving_file_error);
|
||||
+ }
|
||||
+ });
|
||||
+ } else {
|
||||
+ SharedPreferencesManager sharedPrefs = ChromeSharedPreferences.getInstance();
|
||||
+ sharedPrefs.writeString(ChromePreferenceKeys.BOOKMARKS_LAST_EXPORT_URI, bookmarksPath);
|
||||
+
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
+
|
||||
+ Intent intent = new Intent(Intent.ACTION_VIEW,
|
||||
+ ContentUriUtils.isContentUri(bookmarksPath) ?
|
||||
+ Uri.parse(bookmarksPath) : Uri.parse("file://" + bookmarksPath));
|
||||
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID,
|
||||
+ context.getPackageName());
|
||||
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.AUTO_BOOKMARK);
|
||||
+
|
||||
+ // If the bookmark manager is shown in a tab on a phone (rather than in a separate
|
||||
+ // activity) the component name may be null. Send the intent through
|
||||
+ // ChromeLauncherActivity instead to avoid crashing. See crbug.com/615012.
|
||||
+ intent.setClass(context, ChromeLauncherActivity.class);
|
||||
+
|
||||
+ IntentHandler.startActivityForTrustedIntent(intent);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Import bookmarks from a selected file.
|
||||
+ * @param window The current window of the bookmarks activity or page.
|
||||
+ */
|
||||
+ public void importBookmarks(WindowAndroid window) {
|
||||
+ assert mIsNativeBookmarkModelLoaded;
|
||||
+ BookmarkBridgeJni.get().importBookmarks(mNativeBookmarkBridge, BookmarkBridge.this, window);
|
||||
+ BookmarkBridgeJni.get().importBookmarks(mNativeBookmarkBridge,
|
||||
+ BookmarkBridge.this, window);
|
||||
+ }
|
||||
+
|
||||
+ /**
|
||||
+ * Export bookmarks to a path selected by the user.
|
||||
+ * @param window The current window of the bookmarks activity or page.
|
||||
+ */
|
||||
+ public void exportBookmarks(WindowAndroid window, ModalDialogManager modalDialogManager) {
|
||||
+ public void exportBookmarks(WindowAndroid window, String exportPath,
|
||||
+ BiConsumer<Boolean, String> onExportedFunction) {
|
||||
+ assert mIsNativeBookmarkModelLoaded;
|
||||
+ if (ChromeFeatureList.isEnabled(ChromeFeatureList.BOOKMARKS_EXPORT_USESAF) ||
|
||||
+ Build.VERSION.SDK_INT > Build.VERSION_CODES.Q)
|
||||
+ exportBookmarksImplUseSaf(window);
|
||||
+ else
|
||||
+ exportBookmarksImplUseFile(window, modalDialogManager);
|
||||
+ mOnExportedFunction = onExportedFunction;
|
||||
+ BookmarkBridgeJni.get().exportBookmarks(mNativeBookmarkBridge,
|
||||
+ BookmarkBridge.this, window, exportPath);
|
||||
+ }
|
||||
+
|
||||
+ private void exportBookmarksImplUseSaf(WindowAndroid window) {
|
||||
+ Context context = window.getContext().get();
|
||||
+
|
||||
+ // standard name for boorkmark file
|
||||
+ final String standardBoorkmarkName = "bookmarks.html";
|
||||
+
|
||||
+ // use the fileSelector and saf asking user for the file
|
||||
+ Intent fileSelector = new Intent(Intent.ACTION_CREATE_DOCUMENT);
|
||||
+ fileSelector.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
+ fileSelector.setType("text/html");
|
||||
+ fileSelector.putExtra(Intent.EXTRA_TITLE, standardBoorkmarkName);
|
||||
+ fileSelector.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION |
|
||||
+ Intent.FLAG_GRANT_READ_URI_PERMISSION |
|
||||
+ Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
|
||||
+
|
||||
+ // get last exported uri path, if any
|
||||
+ SharedPreferencesManager sharedPrefs = ChromeSharedPreferences.getInstance();
|
||||
+ String bookmarksPath = sharedPrefs.readString(ChromePreferenceKeys.BOOKMARKS_LAST_EXPORT_URI, standardBoorkmarkName);
|
||||
+ Uri lastSelectedUri = Uri.parse(bookmarksPath);
|
||||
+
|
||||
+ // prepare delegate for file selector
|
||||
+ DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(DialogInterface dialog, int button) {
|
||||
+ if (button == AlertDialog.BUTTON_NEGATIVE) {
|
||||
+ window.showIntent(fileSelector,
|
||||
+ new WindowAndroid.IntentCallback() {
|
||||
+ @Override
|
||||
+ public void onIntentCompleted(int resultCode, Intent data) {
|
||||
+ if (data == null) return;
|
||||
+ Uri filePath = data.getData();
|
||||
+ doExportBookmarksImpl(window, filePath);
|
||||
+ }
|
||||
+ },
|
||||
+ null);
|
||||
+ } else {
|
||||
+ if (dialog!=null) dialog.dismiss();
|
||||
+ doExportBookmarksImpl(window, lastSelectedUri);
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
+
|
||||
+ // as a workaround for https://issuetracker.google.com/issues/37136466
|
||||
+ // ask to overwrite if is a valid uri and the file is present
|
||||
+ if (DocumentsContract.isDocumentUri(context, lastSelectedUri)) {
|
||||
+ AsyncTask<Void> checkUriTask = new AsyncTask<Void>() {
|
||||
+ boolean uriExists = false;
|
||||
+ String actualFilePath = null;
|
||||
+
|
||||
+ @Override
|
||||
+ protected Void doInBackground() {
|
||||
+ uriExists = ContentUriUtils.contentUriExists(lastSelectedUri.toString());
|
||||
+ if (uriExists) {
|
||||
+ actualFilePath = ContentUriUtils.getFilePathFromContentUri(lastSelectedUri);
|
||||
+ // get real actual file name on disk
|
||||
+ if (actualFilePath==null) actualFilePath = lastSelectedUri.toString();
|
||||
+ // set file name to last exported file name
|
||||
+ fileSelector.putExtra(Intent.EXTRA_TITLE,
|
||||
+ ContentUriUtils.getDisplayName(lastSelectedUri, context,
|
||||
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME));
|
||||
+ }
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected void onPostExecute(Void result) {
|
||||
+ // check for permissions
|
||||
+ if (uriExists) {
|
||||
+ AlertDialog.Builder alert =
|
||||
+ new AlertDialog.Builder(context, R.style.ThemeOverlay_BrowserUI_AlertDialog);
|
||||
+ AlertDialog alertDialog =
|
||||
+ alert.setTitle(R.string.export_bookmarks_alert_title)
|
||||
+ .setMessage(context.getString(R.string.export_bookmarks_alert_message, actualFilePath))
|
||||
+ .setPositiveButton(
|
||||
+ R.string.export_bookmarks_alert_message_yes, onClickListener)
|
||||
+ .setNegativeButton(R.string.export_bookmarks_alert_message_no, onClickListener)
|
||||
+ .create();
|
||||
+ alertDialog.getDelegate().setHandleNativeActionModesEnabled(false);
|
||||
+
|
||||
+ // show dialog asking for overwrite
|
||||
+ alertDialog.show();
|
||||
+ return;
|
||||
+ } else {
|
||||
+ onClickListener.onClick(null, AlertDialog.BUTTON_NEGATIVE);
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
+ checkUriTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // actually open the file selector
|
||||
+ onClickListener.onClick(null, AlertDialog.BUTTON_NEGATIVE);
|
||||
+ }
|
||||
+
|
||||
+ private void doExportBookmarksImpl(WindowAndroid window, Uri filePath) {
|
||||
+ ContentResolver resolver = ContextUtils.getApplicationContext().getContentResolver();
|
||||
+ // since we want to persist the uri in settings, ask for persistable permissions
|
||||
+ resolver.takePersistableUriPermission(filePath, Intent.FLAG_GRANT_WRITE_URI_PERMISSION |
|
||||
+ Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
+
|
||||
+ BookmarkBridgeJni.get().exportBookmarks(mNativeBookmarkBridge, BookmarkBridge.this,
|
||||
+ window, filePath.toString());
|
||||
+ }
|
||||
+
|
||||
+ private void exportBookmarksImplUseFile(WindowAndroid window, ModalDialogManager modalDialogManager) {
|
||||
+ Context context = window.getContext().get();
|
||||
+
|
||||
+ // standard name for boorkmark file
|
||||
+ final String standardBoorkmarkName = "bookmarks.html";
|
||||
+
|
||||
+ // use the download ui and standard file saving
|
||||
+ DownloadLocationDialogController controller = new DownloadLocationDialogController() {
|
||||
+ @Override
|
||||
+ public void onDownloadLocationDialogComplete(String returnedPath) {}
|
||||
+
|
||||
+ @Override
|
||||
+ public void onDownloadLocationDialogCanceled() {}
|
||||
+ };
|
||||
+
|
||||
+ DownloadLocationDialogCoordinator dialog = new DownloadLocationDialogCoordinator() {
|
||||
+ @Override
|
||||
+ protected void onDirectoryOptionsRetrieved(ArrayList<DirectoryOption> dirs) {
|
||||
+ if (mDialogModel != null) return;
|
||||
+
|
||||
+ // Actually show the dialog.
|
||||
+ mCustomView = (DownloadLocationCustomView) LayoutInflater.from(context).inflate(
|
||||
+ R.layout.download_location_dialog, null);
|
||||
+ mCustomView.initialize(DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0,
|
||||
+ (isChecked) -> {},
|
||||
+ new DownloadLocationHelperImpl(mProfile));
|
||||
+ mCustomView.setTitle(context.getString(R.string.export_bookmarks_alert_title));
|
||||
+ mCustomView.setFileName(standardBoorkmarkName);
|
||||
+ mCustomView.mDontShowAgain.setVisibility(View.GONE);
|
||||
+
|
||||
+ Resources resources = context.getResources();
|
||||
+ mDialogModel = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
|
||||
+ .with(ModalDialogProperties.CONTROLLER, this)
|
||||
+ .with(ModalDialogProperties.CUSTOM_VIEW, mCustomView)
|
||||
+ .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources,
|
||||
+ R.string.export_bookmarks)
|
||||
+ .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources,
|
||||
+ R.string.cancel)
|
||||
+ .build();
|
||||
+
|
||||
+ mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.APP);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onDismiss(PropertyModel model, int dismissalCause) {
|
||||
+ switch (dismissalCause) {
|
||||
+ case DialogDismissalCause.POSITIVE_BUTTON_CLICKED:
|
||||
+ {
|
||||
+ String fileName = mCustomView.getFileName();
|
||||
+ String directory = mCustomView.getDirectoryOption().location;
|
||||
+ if (fileName != null && directory != null) {
|
||||
+ File file = new File(directory, fileName);
|
||||
+
|
||||
+ if (window.hasPermission(permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
+ BookmarkBridgeJni.get().exportBookmarks(mNativeBookmarkBridge,
|
||||
+ BookmarkBridge.this, window, file.getPath());
|
||||
+ } else {
|
||||
+ String[] requestPermissions = new String[] {permission.WRITE_EXTERNAL_STORAGE};
|
||||
+ window.requestPermissions(requestPermissions, (permissions, grantResults) -> {
|
||||
+ if (grantResults.length >= 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
+ BookmarkBridgeJni.get().exportBookmarks(mNativeBookmarkBridge,
|
||||
+ BookmarkBridge.this, window, file.getPath());
|
||||
+ }
|
||||
+ });
|
||||
+ };
|
||||
+ }
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ mDialogModel = null;
|
||||
+ mCustomView = null;
|
||||
+ }
|
||||
+ };
|
||||
+ dialog.initialize(controller);
|
||||
+ dialog.showDialog(context, modalDialogManager, /*totalBytes*/ 0,
|
||||
+ DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "",
|
||||
+ ProfileManager.getLastUsedRegularProfile());
|
||||
+ @CalledByNative
|
||||
+ public void bookmarksExported(WindowAndroid window, String bookmarksPath, boolean success) {
|
||||
+ BiConsumer<Boolean, String> action = mOnExportedFunction
|
||||
+ .andThen((x, y) -> mOnExportedFunction = NOOP);
|
||||
+ action.accept(success, bookmarksPath);
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Synchronously gets a list of bookmarks that match the specified search query.
|
||||
*
|
||||
@@ -1120,6 +1401,10 @@ class BookmarkBridge {
|
||||
@@ -1120,6 +1155,10 @@ class BookmarkBridge {
|
||||
void getChildIds(
|
||||
long nativeBookmarkBridge, long id, int type, List<BookmarkId> bookmarksList);
|
||||
|
||||
@@ -1029,7 +794,55 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
import org.chromium.ui.accessibility.AccessibilityState;
|
||||
import org.chromium.ui.listmenu.ListMenu;
|
||||
import org.chromium.ui.listmenu.ListMenuItemProperties;
|
||||
@@ -84,6 +86,9 @@ class BookmarkManagerMediator
|
||||
@@ -75,6 +77,47 @@ import java.util.function.BooleanSupplier;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
+import android.content.Intent;
|
||||
+import android.content.pm.PackageManager;
|
||||
+import android.content.DialogInterface;
|
||||
+import android.content.res.Resources;
|
||||
+import android.content.ContentResolver;
|
||||
+import android.net.Uri;
|
||||
+import android.provider.Browser;
|
||||
+import android.provider.DocumentsContract;
|
||||
+import android.Manifest.permission;
|
||||
+import android.view.View;
|
||||
+import android.view.LayoutInflater;
|
||||
+
|
||||
+import androidx.appcompat.app.AlertDialog;
|
||||
+import android.os.Build;
|
||||
+
|
||||
+import java.io.File;
|
||||
+
|
||||
+import org.chromium.base.ContextUtils;
|
||||
+import org.chromium.base.ContentUriUtils;
|
||||
+import org.chromium.base.shared_preferences.SharedPreferencesManager;
|
||||
+import org.chromium.base.task.AsyncTask;
|
||||
+import org.chromium.chrome.R;
|
||||
+import org.chromium.chrome.browser.document.ChromeLauncherActivity;
|
||||
+import org.chromium.chrome.browser.IntentHandler;
|
||||
+import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
+import org.chromium.chrome.browser.download.DownloadLocationDialogType;
|
||||
+import org.chromium.chrome.browser.download.settings.DownloadLocationHelperImpl;
|
||||
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogController;
|
||||
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationDialogCoordinator;
|
||||
+import org.chromium.chrome.browser.download.dialogs.DownloadLocationCustomView;
|
||||
+import org.chromium.chrome.browser.download.DirectoryOption;
|
||||
+import org.chromium.chrome.browser.profiles.ProfileManager;
|
||||
+import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
||||
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||
+import org.chromium.ui.base.PageTransition;
|
||||
+import org.chromium.ui.base.WindowAndroid;
|
||||
+import org.chromium.ui.modelutil.PropertyModel;
|
||||
+import org.chromium.ui.modaldialog.ModalDialogManager;
|
||||
+import org.chromium.ui.modaldialog.ModalDialogProperties;
|
||||
+import org.chromium.ui.modaldialog.DialogDismissalCause;
|
||||
+
|
||||
/** Responsible for BookmarkManager business logic. */
|
||||
// TODO(crbug.com/40256938): Remove BookmarkDelegate if possible.
|
||||
class BookmarkManagerMediator
|
||||
@@ -84,6 +127,9 @@ class BookmarkManagerMediator
|
||||
|
||||
private static boolean sPreventLoadingForTesting;
|
||||
|
||||
@@ -1039,7 +852,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
/** Keeps track of whether drag is enabled / active for bookmark lists. */
|
||||
private class BookmarkDragStateDelegate implements DragStateDelegate {
|
||||
private BookmarkDelegate mBookmarkDelegate;
|
||||
@@ -573,6 +578,14 @@ class BookmarkManagerMediator
|
||||
@@ -573,6 +619,14 @@ class BookmarkManagerMediator
|
||||
mNativePage = nativePage;
|
||||
}
|
||||
|
||||
@@ -1054,7 +867,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
/** See BookmarkManager(Coordinator)#updateForUrl */
|
||||
void updateForUrl(String url) {
|
||||
// Bookmark model is null if the manager has been destroyed.
|
||||
@@ -748,6 +761,16 @@ class BookmarkManagerMediator
|
||||
@@ -748,6 +802,235 @@ class BookmarkManagerMediator
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1065,7 +878,226 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
+
|
||||
+ @Override
|
||||
+ public void exportBookmarks() {
|
||||
+ mBookmarkModel.exportBookmarks(mWindowAndroid, mModalDialogManager);
|
||||
+ if (ChromeFeatureList.isEnabled(ChromeFeatureList.BOOKMARKS_EXPORT_USESAF) ||
|
||||
+ Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
|
||||
+ exportBookmarksImplUseSaf();
|
||||
+ } else {
|
||||
+ exportBookmarksImplUseFile();
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ private void exportBookmarksImplUseSaf() {
|
||||
+ Context context = mWindowAndroid.getContext().get();
|
||||
+
|
||||
+ // standard name for boorkmark file
|
||||
+ final String standardBoorkmarkName = "bookmarks.html";
|
||||
+
|
||||
+ // use the fileSelector and saf asking user for the file
|
||||
+ Intent fileSelector = new Intent(Intent.ACTION_CREATE_DOCUMENT);
|
||||
+ fileSelector.addCategory(Intent.CATEGORY_OPENABLE);
|
||||
+ fileSelector.setType("text/html");
|
||||
+ fileSelector.putExtra(Intent.EXTRA_TITLE, standardBoorkmarkName);
|
||||
+ fileSelector.setFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION |
|
||||
+ Intent.FLAG_GRANT_READ_URI_PERMISSION |
|
||||
+ Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
|
||||
+
|
||||
+ // get last exported uri path, if any
|
||||
+ SharedPreferencesManager sharedPrefs = ChromeSharedPreferences.getInstance();
|
||||
+ String bookmarksPath = sharedPrefs.readString(ChromePreferenceKeys.BOOKMARKS_LAST_EXPORT_URI, standardBoorkmarkName);
|
||||
+ Uri lastSelectedUri = Uri.parse(bookmarksPath);
|
||||
+
|
||||
+ // prepare delegate for file selector
|
||||
+ DialogInterface.OnClickListener onClickListener = new DialogInterface.OnClickListener() {
|
||||
+ @Override
|
||||
+ public void onClick(DialogInterface dialog, int button) {
|
||||
+ if (button == AlertDialog.BUTTON_NEGATIVE) {
|
||||
+ mWindowAndroid.showIntent(fileSelector,
|
||||
+ new WindowAndroid.IntentCallback() {
|
||||
+ @Override
|
||||
+ public void onIntentCompleted(int resultCode, Intent data) {
|
||||
+ if (data == null) return;
|
||||
+ Uri filePath = data.getData();
|
||||
+ doExportBookmarksImpl(filePath);
|
||||
+ }
|
||||
+ },
|
||||
+ null);
|
||||
+ } else {
|
||||
+ if (dialog!=null) dialog.dismiss();
|
||||
+ doExportBookmarksImpl(lastSelectedUri);
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
+
|
||||
+ // as a workaround for https://issuetracker.google.com/issues/37136466
|
||||
+ // ask to overwrite if is a valid uri and the file is present
|
||||
+ if (DocumentsContract.isDocumentUri(context, lastSelectedUri)) {
|
||||
+ AsyncTask<Void> checkUriTask = new AsyncTask<Void>() {
|
||||
+ boolean uriExists = false;
|
||||
+ String actualFilePath = null;
|
||||
+
|
||||
+ @Override
|
||||
+ protected Void doInBackground() {
|
||||
+ uriExists = ContentUriUtils.contentUriExists(lastSelectedUri.toString());
|
||||
+ if (uriExists) {
|
||||
+ actualFilePath = ContentUriUtils.getFilePathFromContentUri(lastSelectedUri);
|
||||
+ // get real actual file name on disk
|
||||
+ if (actualFilePath==null) actualFilePath = lastSelectedUri.toString();
|
||||
+ // set file name to last exported file name
|
||||
+ fileSelector.putExtra(Intent.EXTRA_TITLE,
|
||||
+ ContentUriUtils.getDisplayName(lastSelectedUri, context,
|
||||
+ DocumentsContract.Document.COLUMN_DISPLAY_NAME));
|
||||
+ }
|
||||
+ return null;
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ protected void onPostExecute(Void result) {
|
||||
+ // check for permissions
|
||||
+ if (uriExists) {
|
||||
+ AlertDialog.Builder alert =
|
||||
+ new AlertDialog.Builder(context, R.style.ThemeOverlay_BrowserUI_AlertDialog);
|
||||
+ AlertDialog alertDialog =
|
||||
+ alert.setTitle(R.string.export_bookmarks_alert_title)
|
||||
+ .setMessage(context.getString(R.string.export_bookmarks_alert_message, actualFilePath))
|
||||
+ .setPositiveButton(
|
||||
+ R.string.export_bookmarks_alert_message_yes, onClickListener)
|
||||
+ .setNegativeButton(R.string.export_bookmarks_alert_message_no, onClickListener)
|
||||
+ .create();
|
||||
+ alertDialog.getDelegate().setHandleNativeActionModesEnabled(false);
|
||||
+
|
||||
+ // show dialog asking for overwrite
|
||||
+ alertDialog.show();
|
||||
+ return;
|
||||
+ } else {
|
||||
+ onClickListener.onClick(null, AlertDialog.BUTTON_NEGATIVE);
|
||||
+ }
|
||||
+ }
|
||||
+ };
|
||||
+ checkUriTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ // actually open the file selector
|
||||
+ onClickListener.onClick(null, AlertDialog.BUTTON_NEGATIVE);
|
||||
+ }
|
||||
+
|
||||
+ private void exportBookmarksImplUseFile() {
|
||||
+ Context context = mWindowAndroid.getContext().get();
|
||||
+
|
||||
+ // standard name for boorkmark file
|
||||
+ final String standardBoorkmarkName = "bookmarks.html";
|
||||
+
|
||||
+ // use the download ui and standard file saving
|
||||
+ DownloadLocationDialogController controller = new DownloadLocationDialogController() {
|
||||
+ @Override
|
||||
+ public void onDownloadLocationDialogComplete(String returnedPath) {}
|
||||
+
|
||||
+ @Override
|
||||
+ public void onDownloadLocationDialogCanceled() {}
|
||||
+ };
|
||||
+
|
||||
+ DownloadLocationDialogCoordinator dialog = new DownloadLocationDialogCoordinator() {
|
||||
+ @Override
|
||||
+ protected void onDirectoryOptionsRetrieved(ArrayList<DirectoryOption> dirs) {
|
||||
+ if (mDialogModel != null) return;
|
||||
+
|
||||
+ // Actually show the dialog.
|
||||
+ mCustomView = (DownloadLocationCustomView) LayoutInflater.from(context).inflate(
|
||||
+ R.layout.download_location_dialog, null);
|
||||
+ mCustomView.initialize(DownloadLocationDialogType.DEFAULT, /*totalBytes*/ 0,
|
||||
+ (isChecked) -> {},
|
||||
+ new DownloadLocationHelperImpl(mProfile));
|
||||
+ mCustomView.setTitle(context.getString(R.string.export_bookmarks_alert_title));
|
||||
+ mCustomView.setFileName(standardBoorkmarkName);
|
||||
+ mCustomView.mDontShowAgain.setVisibility(View.GONE);
|
||||
+
|
||||
+ Resources resources = context.getResources();
|
||||
+ mDialogModel = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
|
||||
+ .with(ModalDialogProperties.CONTROLLER, this)
|
||||
+ .with(ModalDialogProperties.CUSTOM_VIEW, mCustomView)
|
||||
+ .with(ModalDialogProperties.POSITIVE_BUTTON_TEXT, resources,
|
||||
+ R.string.export_bookmarks)
|
||||
+ .with(ModalDialogProperties.NEGATIVE_BUTTON_TEXT, resources,
|
||||
+ R.string.cancel)
|
||||
+ .build();
|
||||
+
|
||||
+ mModalDialogManager.showDialog(mDialogModel, ModalDialogManager.ModalDialogType.APP);
|
||||
+ }
|
||||
+
|
||||
+ @Override
|
||||
+ public void onDismiss(PropertyModel model, int dismissalCause) {
|
||||
+ switch (dismissalCause) {
|
||||
+ case DialogDismissalCause.POSITIVE_BUTTON_CLICKED:
|
||||
+ {
|
||||
+ String fileName = mCustomView.getFileName();
|
||||
+ String directory = mCustomView.getDirectoryOption().location;
|
||||
+ if (fileName != null && directory != null) {
|
||||
+ File file = new File(directory, fileName);
|
||||
+
|
||||
+ if (mWindowAndroid.hasPermission(permission.WRITE_EXTERNAL_STORAGE)) {
|
||||
+ doExportBookmarksImpl(file.getPath());
|
||||
+ } else {
|
||||
+ String[] requestPermissions = new String[] {permission.WRITE_EXTERNAL_STORAGE};
|
||||
+ mWindowAndroid.requestPermissions(requestPermissions, (permissions, grantResults) -> {
|
||||
+ if (grantResults.length >= 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
|
||||
+ doExportBookmarksImpl(file.getPath());
|
||||
+ }
|
||||
+ });
|
||||
+ };
|
||||
+ }
|
||||
+ }
|
||||
+ break;
|
||||
+ }
|
||||
+ mDialogModel = null;
|
||||
+ mCustomView = null;
|
||||
+ }
|
||||
+ };
|
||||
+ dialog.initialize(controller);
|
||||
+ dialog.showDialog(context, mModalDialogManager, /*totalBytes*/ 0,
|
||||
+ DownloadLocationDialogType.DEFAULT, /*suggestedPath*/ "",
|
||||
+ ProfileManager.getLastUsedRegularProfile());
|
||||
+ }
|
||||
+
|
||||
+ private void doExportBookmarksImpl(Uri filePath) {
|
||||
+ ContentResolver resolver = ContextUtils.getApplicationContext().getContentResolver();
|
||||
+ // since we want to persist the uri in settings, ask for persistable permissions
|
||||
+ resolver.takePersistableUriPermission(filePath, Intent.FLAG_GRANT_WRITE_URI_PERMISSION |
|
||||
+ Intent.FLAG_GRANT_READ_URI_PERMISSION);
|
||||
+
|
||||
+ doExportBookmarksImpl(filePath.toString());
|
||||
+ }
|
||||
+
|
||||
+ private void doExportBookmarksImpl(String filePath) {
|
||||
+ mBookmarkModel.exportBookmarks(mWindowAndroid, filePath,
|
||||
+ (success, bookmarksPath) -> {
|
||||
+ if (!success) {
|
||||
+ ((Activity)mWindowAndroid.getContext().get()).runOnUiThread(new Runnable() {
|
||||
+ public void run() {
|
||||
+ mWindowAndroid.showError(R.string.saving_file_error);
|
||||
+ }
|
||||
+ });
|
||||
+ } else {
|
||||
+ SharedPreferencesManager sharedPrefs = ChromeSharedPreferences.getInstance();
|
||||
+ sharedPrefs.writeString(ChromePreferenceKeys.BOOKMARKS_LAST_EXPORT_URI, bookmarksPath);
|
||||
+
|
||||
+ Context context = ContextUtils.getApplicationContext();
|
||||
+
|
||||
+ Intent intent = new Intent(Intent.ACTION_VIEW,
|
||||
+ ContentUriUtils.isContentUri(bookmarksPath) ?
|
||||
+ Uri.parse(bookmarksPath) : Uri.parse("file://" + bookmarksPath));
|
||||
+ intent.putExtra(Browser.EXTRA_APPLICATION_ID,
|
||||
+ context.getPackageName());
|
||||
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
|
||||
+ intent.putExtra(IntentHandler.EXTRA_PAGE_TRANSITION_TYPE, PageTransition.AUTO_BOOKMARK);
|
||||
+
|
||||
+ // If the bookmark manager is shown in a tab on a phone (rather than in a separate
|
||||
+ // activity) the component name may be null. Send the intent through
|
||||
+ // ChromeLauncherActivity instead to avoid crashing. See crbug.com/615012.
|
||||
+ intent.setClass(context, ChromeLauncherActivity.class);
|
||||
+
|
||||
+ IntentHandler.startActivityForTrustedIntent(intent);
|
||||
+ }
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
@Override
|
||||
@@ -1107,7 +1139,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||
@@ -97,6 +97,17 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -96,6 +96,17 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
setOnMenuItemClickListener(dragEnabled ? null : this);
|
||||
}
|
||||
|
||||
@@ -1125,7 +1157,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
void setEditButtonVisible(boolean visible) {
|
||||
mEditButtonVisible = visible;
|
||||
getMenu().findItem(R.id.edit_menu_id).setVisible(visible);
|
||||
@@ -173,6 +184,13 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -172,6 +183,13 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
|
||||
void setCurrentFolder(BookmarkId folder) {
|
||||
mCurrentFolder = mBookmarkModel.getBookmarkById(folder);
|
||||
@@ -1139,7 +1171,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
}
|
||||
|
||||
void setNavigateBackRunnable(Runnable navigateBackRunnable) {
|
||||
@@ -192,6 +210,13 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -191,6 +209,13 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
@Override
|
||||
public boolean onMenuItemClick(MenuItem menuItem) {
|
||||
hideOverflowMenu();
|
||||
@@ -1153,7 +1185,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
return mMenuIdClickedFunction.apply(menuItem.getItemId());
|
||||
}
|
||||
|
||||
@@ -207,6 +232,9 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -206,6 +231,9 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
protected void showNormalView() {
|
||||
super.showNormalView();
|
||||
|
||||
|
||||
@@ -4,32 +4,32 @@ Subject: Add menu item to bookmark all tabs
|
||||
|
||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
---
|
||||
chrome/android/java/res/menu/main_menu.xml | 7 ++
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 24 +++++++
|
||||
.../bookmarks/android/bookmark_bridge.cc | 42 ++++++++++++
|
||||
.../bookmarks/android/bookmark_bridge.h | 8 +++
|
||||
.../browser/bookmarks/BookmarkBridge.java | 66 +++++++++++++++++++
|
||||
.../browser/bookmarks/bookmark_html_writer.cc | 14 +++-
|
||||
.../bookmark_merged_surface_service.cc | 3 +
|
||||
chrome/android/java/res/menu/main_menu.xml | 7 +++
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 43 +++++++++++++++++++
|
||||
.../bookmarks/android/bookmark_bridge.cc | 42 ++++++++++++++++++
|
||||
.../bookmarks/android/bookmark_bridge.h | 8 ++++
|
||||
.../browser/bookmarks/BookmarkBridge.java | 41 ++++++++++++++++++
|
||||
.../browser/bookmarks/bookmark_html_writer.cc | 14 +++++-
|
||||
.../bookmark_merged_surface_service.cc | 3 ++
|
||||
.../permanent_folder_ordering_tracker.cc | 2 +
|
||||
.../dialogs/DownloadLocationCustomView.java | 4 +-
|
||||
.../strings/android_chrome_strings.grd | 3 +
|
||||
.../strings/android_chrome_strings.grd | 3 ++
|
||||
.../bookmark_ui_operations_helper.cc | 2 +
|
||||
components/bookmark_bar_strings.grdp | 6 ++
|
||||
.../bookmarks/browser/bookmark_codec.cc | 20 +++++-
|
||||
components/bookmarks/browser/bookmark_codec.h | 7 +-
|
||||
.../browser/bookmark_load_details.cc | 14 +++-
|
||||
components/bookmark_bar_strings.grdp | 6 +++
|
||||
.../bookmarks/browser/bookmark_codec.cc | 20 +++++++--
|
||||
components/bookmarks/browser/bookmark_codec.h | 7 ++-
|
||||
.../browser/bookmark_load_details.cc | 14 ++++--
|
||||
.../bookmarks/browser/bookmark_load_details.h | 2 +
|
||||
.../bookmarks/browser/bookmark_model.cc | 3 +-
|
||||
components/bookmarks/browser/bookmark_model.h | 7 ++
|
||||
components/bookmarks/browser/bookmark_node.cc | 11 ++++
|
||||
components/bookmarks/browser/bookmark_node.h | 3 +
|
||||
components/bookmarks/browser/bookmark_model.h | 7 +++
|
||||
components/bookmarks/browser/bookmark_node.cc | 11 +++++
|
||||
components/bookmarks/browser/bookmark_node.h | 3 ++
|
||||
.../bookmarks/browser/bookmark_storage.cc | 2 +
|
||||
.../bookmarks/browser/bookmark_uuids.cc | 3 +
|
||||
.../bookmarks/browser/bookmark_uuids.cc | 3 ++
|
||||
components/bookmarks/browser/bookmark_uuids.h | 1 +
|
||||
components/bookmarks/browser/model_loader.cc | 8 ++-
|
||||
components/bookmarks/browser/model_loader.cc | 8 +++-
|
||||
.../bookmark_specifics_conversions.cc | 1 +
|
||||
25 files changed, 249 insertions(+), 14 deletions(-)
|
||||
25 files changed, 243 insertions(+), 14 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
|
||||
--- a/chrome/android/java/res/menu/main_menu.xml
|
||||
@@ -66,7 +66,25 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
||||
import org.chromium.chrome.browser.compositor.layouts.Layout;
|
||||
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChrome;
|
||||
import org.chromium.chrome.browser.compositor.layouts.LayoutManagerChromePhone;
|
||||
@@ -3102,6 +3103,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
|
||||
@@ -253,12 +254,17 @@ import org.chromium.chrome.browser.ui.RootUiCoordinator;
|
||||
import org.chromium.chrome.browser.ui.appmenu.AppMenuPropertiesDelegate;
|
||||
import org.chromium.chrome.browser.ui.desktop_windowing.AppHeaderUtils;
|
||||
import org.chromium.chrome.browser.ui.edge_to_edge.EdgeToEdgeUtils;
|
||||
+import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
|
||||
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
||||
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController;
|
||||
import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityClient;
|
||||
import org.chromium.chrome.browser.ui.searchactivityutils.SearchActivityExtras.IntentOrigin;
|
||||
import org.chromium.chrome.browser.undo_tab_close_snackbar.UndoBarController;
|
||||
import org.chromium.chrome.browser.usage_stats.UsageStatsService;
|
||||
import org.chromium.chrome.browser.util.ChromeAccessibilityUtil;
|
||||
import org.chromium.chrome.browser.xr.XrLayoutStateObserver;
|
||||
+import org.chromium.components.bookmarks.BookmarkId;
|
||||
+import org.chromium.components.bookmarks.BookmarkItem;
|
||||
import org.chromium.components.browser_ui.bottomsheet.BottomSheetController;
|
||||
import org.chromium.components.browser_ui.edge_to_edge.SystemBarColorHelper;
|
||||
import org.chromium.components.browser_ui.edge_to_edge.TabbedSystemBarColorHelper;
|
||||
@@ -3103,6 +3109,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
|
||||
getTabModelSelectorSupplier().get(),
|
||||
closeAllTabsRunnable);
|
||||
RecordUserAction.record("MobileMenuCloseAllTabs");
|
||||
@@ -75,7 +93,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
||||
} else if (id == R.id.close_all_incognito_tabs_menu_id) {
|
||||
// Close only incognito tabs
|
||||
Runnable closeAllTabsRunnable =
|
||||
@@ -3190,6 +3193,27 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
|
||||
@@ -3191,6 +3199,41 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
|
||||
getTabModalLifetimeHandler().onOmniboxFocusChanged(hasFocus);
|
||||
}
|
||||
|
||||
@@ -94,9 +112,23 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
||||
+ if (tab.isNativePage()) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ bookmarkModel.addToTabsCollection(this, tab);
|
||||
+ bookmarkModel.addToTabsCollection(tab);
|
||||
+ }
|
||||
+ bookmarkModel.finishedAddingToTabsCollection(this, getSnackbarManager());
|
||||
+ BookmarkId parent = bookmarkModel.getTabsCollectionFolderId();
|
||||
+ BookmarkItem bookmarkItem = bookmarkModel.getBookmarkById(parent);
|
||||
+ String folderName = "";
|
||||
+ if (bookmarkItem != null) {
|
||||
+ folderName = bookmarkItem.getTitle();
|
||||
+ }
|
||||
+ SnackbarController snackbarController = new SnackbarController() {
|
||||
+ @Override
|
||||
+ public void onAction(Object actionData) {
|
||||
+ }
|
||||
+ };
|
||||
+ Snackbar snackbar = Snackbar.make(folderName, snackbarController, Snackbar.TYPE_ACTION,
|
||||
+ Snackbar.UMA_BOOKMARK_ADDED)
|
||||
+ .setTemplateText(getString(R.string.bookmark_page_saved_folder));
|
||||
+ getSnackbarManager().showSnackbar(snackbar);
|
||||
+ });
|
||||
+ }
|
||||
+
|
||||
@@ -212,19 +244,15 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
import org.chromium.base.ObserverList;
|
||||
import org.chromium.base.ThreadUtils;
|
||||
import org.chromium.base.metrics.RecordUserAction;
|
||||
@@ -26,6 +27,11 @@ import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
|
||||
@@ -26,6 +27,7 @@ import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
|
||||
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
|
||||
import org.chromium.chrome.browser.preferences.ChromeSharedPreferences;
|
||||
import org.chromium.chrome.browser.profiles.Profile;
|
||||
+import org.chromium.chrome.browser.tab.Tab;
|
||||
+import org.chromium.chrome.browser.ui.messages.snackbar.Snackbar;
|
||||
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager;
|
||||
+import org.chromium.chrome.browser.ui.messages.snackbar.SnackbarManager.SnackbarController;
|
||||
+import org.chromium.chrome.R;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
import org.chromium.components.bookmarks.BookmarkItem;
|
||||
import org.chromium.components.bookmarks.BookmarkType;
|
||||
@@ -85,6 +91,7 @@ import org.chromium.ui.modaldialog.DialogDismissalCause;
|
||||
@@ -46,6 +48,7 @@ import java.util.function.BiConsumer;
|
||||
class BookmarkBridge {
|
||||
private static OneshotSupplierImpl<BookmarkModel.PartnerBookmarkIteratorProvider>
|
||||
sPartnerBookmarkIteratorSupplier = new OneshotSupplierImpl<>();
|
||||
@@ -232,7 +260,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
|
||||
private final ObserverList<BookmarkModelObserver> mObservers = new ObserverList<>();
|
||||
private final Profile mProfile;
|
||||
@@ -419,6 +426,16 @@ class BookmarkBridge {
|
||||
@@ -383,6 +386,16 @@ class BookmarkBridge {
|
||||
return mMobileFolderId;
|
||||
}
|
||||
|
||||
@@ -249,12 +277,12 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
/** Returns Id representing the special "other" folder from bookmark model. */
|
||||
public BookmarkId getOtherFolderId() {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
@@ -1140,6 +1157,50 @@ class BookmarkBridge {
|
||||
@@ -894,6 +907,29 @@ class BookmarkBridge {
|
||||
.addToReadingList(mNativeBookmarkBridge, parentId, title, url);
|
||||
}
|
||||
|
||||
+ // Used to bookmark all tabs in a specific folder, created if not existing
|
||||
+ public BookmarkId addToTabsCollection(Context context, Tab tab) {
|
||||
+ public BookmarkId addToTabsCollection(Tab tab) {
|
||||
+ BookmarkId parent = getTabsCollectionFolderId();
|
||||
+ BookmarkId existingId = BookmarkBridgeJni.get().getBookmarkIdForTabsCollection(
|
||||
+ mNativeBookmarkBridge, tab.getOriginalUrl());
|
||||
@@ -275,32 +303,11 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
+ }
|
||||
+ return bookmarkId;
|
||||
+ }
|
||||
+
|
||||
+ public void finishedAddingToTabsCollection(Activity activity, SnackbarManager snackbarManager) {
|
||||
+ BookmarkId parent = getTabsCollectionFolderId();
|
||||
+
|
||||
+ BookmarkItem bookmarkItem = getBookmarkById(parent);
|
||||
+ String folderName;
|
||||
+ if (bookmarkItem != null) {
|
||||
+ folderName = bookmarkItem.getTitle();
|
||||
+ } else {
|
||||
+ folderName = "";
|
||||
+ }
|
||||
+ SnackbarController snackbarController = new SnackbarController() {
|
||||
+ @Override
|
||||
+ public void onAction(Object actionData) {
|
||||
+ }
|
||||
+ };
|
||||
+ Snackbar snackbar = Snackbar.make(folderName, snackbarController, Snackbar.TYPE_ACTION,
|
||||
+ Snackbar.UMA_BOOKMARK_ADDED)
|
||||
+ .setTemplateText(activity.getString(R.string.bookmark_page_saved_folder));
|
||||
+ snackbarManager.showSnackbar(snackbar);
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* Helper method to mark an item as read.
|
||||
*
|
||||
@@ -1357,6 +1418,9 @@ class BookmarkBridge {
|
||||
@@ -1111,6 +1147,9 @@ class BookmarkBridge {
|
||||
BookmarkId getMostRecentlyAddedUserBookmarkIdForUrl(
|
||||
long nativeBookmarkBridge, @JniType("GURL") GURL url);
|
||||
|
||||
@@ -310,7 +317,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
BookmarkItem getBookmarkById(long nativeBookmarkBridge, long id, int type);
|
||||
|
||||
void getTopLevelFolderIds(
|
||||
@@ -1378,6 +1442,8 @@ class BookmarkBridge {
|
||||
@@ -1132,6 +1171,8 @@ class BookmarkBridge {
|
||||
|
||||
BookmarkId getRootFolderId(long nativeBookmarkBridge);
|
||||
|
||||
|
||||
@@ -32,14 +32,14 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/homepage/Homepa
|
||||
diff --git a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
|
||||
--- a/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
|
||||
+++ b/chrome/browser/partnerbookmarks/android/java/src/org/chromium/chrome/browser/partnerbookmarks/PartnerBookmarksProviderIterator.java
|
||||
@@ -65,6 +65,7 @@ public class PartnerBookmarksProviderIterator implements PartnerBookmark.Bookmar
|
||||
* @param callback The callback to receive the result.
|
||||
*/
|
||||
public static void createIfAvailable(Callback<@Nullable BookmarkIterator> callback) {
|
||||
+ if ((true)) return null;
|
||||
@@ -68,6 +68,7 @@ public class PartnerBookmarksProviderIterator implements PartnerBookmark.Bookmar
|
||||
new AsyncTask<@Nullable Cursor>() {
|
||||
@Override
|
||||
protected @Nullable Cursor doInBackground() {
|
||||
+ if ((true)) return null;
|
||||
try {
|
||||
return ContextUtils.getApplicationContext()
|
||||
.getContentResolver()
|
||||
diff --git a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java b/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
|
||||
--- a/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
|
||||
+++ b/chrome/browser/partnercustomizations/java/src/org/chromium/chrome/browser/partnercustomizations/PartnerBrowserCustomizations.java
|
||||
|
||||
@@ -37,11 +37,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../skia/src/ports/SkFontConfigInterface.cpp | 4 +
|
||||
.../ports/SkFontConfigInterface_direct.cpp | 5 +
|
||||
.../src/ports/SkFontConfigInterface_direct.h | 1 +
|
||||
.../skia/src/ports/SkFontMgr_android.cpp | 277 ++-
|
||||
.../skia/src/ports/SkFontMgr_android.cpp | 278 ++-
|
||||
.../skia/src/ports/SkFontMgr_android_data.cpp | 1640 +++++++++++++++++
|
||||
.../src/ports/SkFontMgr_android_parser.cpp | 49 +-
|
||||
.../skia/src/ports/SkFontMgr_android_parser.h | 5 +-
|
||||
35 files changed, 2406 insertions(+), 79 deletions(-)
|
||||
35 files changed, 2407 insertions(+), 79 deletions(-)
|
||||
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Android-fonts-fingerprinting-mitigation.grdp
|
||||
create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.cc
|
||||
create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.h
|
||||
@@ -1069,7 +1069,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
const SkString* cannonicalFamilyName = nullptr;
|
||||
if (!family.fNames.empty()) {
|
||||
cannonicalFamilyName = &family.fNames[0];
|
||||
@@ -119,38 +206,59 @@ public:
|
||||
@@ -119,38 +206,60 @@ public:
|
||||
|
||||
// TODO? make this lazy
|
||||
for (int i = 0; i < family.fFonts.size(); ++i) {
|
||||
@@ -1101,6 +1101,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
+
|
||||
+ std::unique_ptr<SkStreamAsset> stream;
|
||||
+ if (!custom && !fontFile.fFileName.startsWith('#')) {
|
||||
+ std::unique_ptr<SkStreamAsset>* streamPtr = streamForPath.find(pathName);
|
||||
+ if (!streamPtr) {
|
||||
+ streamPtr = streamForPath.set(pathName, SkStream::MakeFromFile(pathName.c_str()));
|
||||
+ }
|
||||
@@ -1108,7 +1109,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
+ SkDEBUGF("Requested font file %s cannot be opened.\n", pathName.c_str());
|
||||
+ continue;
|
||||
+ }
|
||||
+ std::unique_ptr<SkStreamAsset> stream = (*streamPtr)->duplicate();
|
||||
+ stream = (*streamPtr)->duplicate();
|
||||
+ if (!stream) {
|
||||
+ SkDEBUGF("Requested font file %s could not be duplicated.\n", pathName.c_str());
|
||||
+ continue;
|
||||
@@ -1152,7 +1153,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
}
|
||||
|
||||
uint32_t variant = family.fVariant;
|
||||
@@ -161,13 +269,25 @@ public:
|
||||
@@ -161,13 +270,25 @@ public:
|
||||
// The first specified family name overrides the family name found in the font.
|
||||
// TODO: SkTypeface_AndroidSystem::onCreateFamilyNameIterator should return
|
||||
// all of the specified family names in addition to the names found in the font.
|
||||
@@ -1184,7 +1185,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
int weight = fontFile.fWeight != 0 ? fontFile.fWeight : fontStyle.weight();
|
||||
SkFontStyle::Slant slant = fontStyle.slant();
|
||||
switch (fontFile.fStyle) {
|
||||
@@ -178,6 +298,19 @@ public:
|
||||
@@ -178,6 +299,19 @@ public:
|
||||
}
|
||||
fontStyle = SkFontStyle(weight, fontStyle.width(), slant);
|
||||
|
||||
@@ -1204,7 +1205,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
fStyles.push_back(
|
||||
SkTypeface_AndroidSystem::Make(proxy,
|
||||
fontStyle, proxy->isFixedPitch(),
|
||||
@@ -206,15 +339,18 @@ public:
|
||||
@@ -206,15 +340,18 @@ public:
|
||||
return fStyles[index];
|
||||
}
|
||||
|
||||
@@ -1226,7 +1227,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
SkString fFallbackFor;
|
||||
|
||||
friend struct NameToFamily;
|
||||
@@ -235,24 +371,26 @@ struct NameToFamily {
|
||||
@@ -235,24 +372,26 @@ struct NameToFamily {
|
||||
|
||||
class SkFontMgr_Android : public SkFontMgr {
|
||||
public:
|
||||
@@ -1257,7 +1258,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
}
|
||||
this->buildNameToFamilyMap(families, custom ? custom->fIsolated : false);
|
||||
this->findDefaultStyleSet();
|
||||
@@ -310,33 +448,53 @@ protected:
|
||||
@@ -310,33 +449,53 @@ protected:
|
||||
return sset->matchStyle(style);
|
||||
}
|
||||
|
||||
@@ -1326,7 +1327,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
}
|
||||
}
|
||||
return nullptr;
|
||||
@@ -359,7 +517,7 @@ protected:
|
||||
@@ -359,7 +518,7 @@ protected:
|
||||
for (int bcp47Index = bcp47Count; bcp47Index --> 0;) {
|
||||
SkLanguage lang(bcp47[bcp47Index]);
|
||||
while (!lang.getTag().isEmpty()) {
|
||||
@@ -1335,7 +1336,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap,
|
||||
style, SkToBool(elegant),
|
||||
lang.getTag(), character);
|
||||
@@ -370,7 +528,7 @@ protected:
|
||||
@@ -370,7 +529,7 @@ protected:
|
||||
lang = lang.getParent();
|
||||
}
|
||||
}
|
||||
@@ -1344,7 +1345,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap,
|
||||
style, SkToBool(elegant),
|
||||
SkString(), character);
|
||||
@@ -421,6 +579,7 @@ protected:
|
||||
@@ -421,6 +580,7 @@ protected:
|
||||
private:
|
||||
|
||||
std::unique_ptr<SkFontScanner> fScanner;
|
||||
@@ -1352,7 +1353,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
|
||||
TArray<sk_sp<SkFontStyleSet_Android>> fStyleSets;
|
||||
sk_sp<SkFontStyleSet> fDefaultStyleSet;
|
||||
@@ -442,7 +601,7 @@ private:
|
||||
@@ -442,7 +602,7 @@ private:
|
||||
}
|
||||
|
||||
sk_sp<SkFontStyleSet_Android> newSet =
|
||||
@@ -1361,7 +1362,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
if (0 == newSet->count()) {
|
||||
return;
|
||||
}
|
||||
@@ -487,11 +646,11 @@ static char const * const gSystemFontUseStrings[] = {
|
||||
@@ -487,11 +647,11 @@ static char const * const gSystemFontUseStrings[] = {
|
||||
|
||||
} // namespace
|
||||
|
||||
@@ -1376,7 +1377,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
|
||||
if (custom) {
|
||||
SkASSERT(0 <= custom->fSystemFontUse);
|
||||
SkASSERT(custom->fSystemFontUse < std::size(gSystemFontUseStrings));
|
||||
@@ -501,5 +660,5 @@ sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust
|
||||
@@ -501,5 +661,5 @@ sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust
|
||||
custom->fFontsXml,
|
||||
custom->fFallbackFontsXml);
|
||||
}
|
||||
|
||||
@@ -35,11 +35,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../omaha/inline/InlineUpdateController.java | 57 ++++
|
||||
.../safety_hub/SafetyHubFetchService.java | 5 -
|
||||
.../strings/android_chrome_strings.grd | 23 +-
|
||||
.../endpoint_fetcher/endpoint_fetcher.cc | 120 ++++++--
|
||||
.../endpoint_fetcher/endpoint_fetcher.h | 22 ++
|
||||
.../ui/lens/lens_overlay_query_controller.cc | 1 +
|
||||
.../endpoint_fetcher/endpoint_fetcher.cc | 133 ++++++--
|
||||
.../endpoint_fetcher/endpoint_fetcher.h | 24 ++
|
||||
components/manta/base_provider.cc | 1 +
|
||||
.../Bromite-auto-updater.inc | 3 +
|
||||
.../Bromite-auto-updater.inc | 1 +
|
||||
31 files changed, 1223 insertions(+), 95 deletions(-)
|
||||
33 files changed, 1240 insertions(+), 95 deletions(-)
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/CromiteUpdateStatusProvider.java
|
||||
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java
|
||||
create mode 100644 chrome/browser/endpoint_fetcher/BUILD.gn
|
||||
@@ -1718,6 +1720,17 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
||||
<message name="IDS_MENU_NEW_WINDOW" desc="Menu item for opening a new window. [CHAR_LIMIT=27]">
|
||||
New window
|
||||
</message>
|
||||
diff --git a/chrome/browser/ui/lens/lens_overlay_query_controller.cc b/chrome/browser/ui/lens/lens_overlay_query_controller.cc
|
||||
--- a/chrome/browser/ui/lens/lens_overlay_query_controller.cc
|
||||
+++ b/chrome/browser/ui/lens/lens_overlay_query_controller.cc
|
||||
@@ -771,6 +771,7 @@ LensOverlayQueryController::CreateEndpointFetcher(
|
||||
/*post_data=*/request_string,
|
||||
/*headers=*/request_headers,
|
||||
/*cors_exempt_headers=*/cors_exempt_headers, chrome::GetChannel(),
|
||||
+ kTrafficAnnotationTag,
|
||||
/*request_params=*/
|
||||
EndpointFetcher::RequestParams::Builder(http_method,
|
||||
kTrafficAnnotationTag)
|
||||
diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoint_fetcher/endpoint_fetcher.cc
|
||||
--- a/components/endpoint_fetcher/endpoint_fetcher.cc
|
||||
+++ b/components/endpoint_fetcher/endpoint_fetcher.cc
|
||||
@@ -1733,15 +1746,61 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
namespace {
|
||||
const char kContentTypeKey[] = "Content-Type";
|
||||
const char kDeveloperKey[] = "X-Developer-Key";
|
||||
@@ -30,6 +35,7 @@ constexpr base::TimeDelta kDefaultTimeOut = base::Milliseconds(30000);
|
||||
std::string GetHttpMethodString(const HttpMethod& http_method) {
|
||||
switch (http_method) {
|
||||
case HttpMethod::kGet:
|
||||
+ intercept_redirect_(false),
|
||||
return "GET";
|
||||
case HttpMethod::kPost:
|
||||
@@ -35,6 +40,8 @@ std::string GetHttpMethodString(const HttpMethod& http_method) {
|
||||
return "POST";
|
||||
@@ -207,6 +213,7 @@ EndpointFetcher::EndpointFetcher(
|
||||
case HttpMethod::kDelete:
|
||||
return "DELETE";
|
||||
+ case HttpMethod::kHead:
|
||||
+ return "HEAD";
|
||||
default:
|
||||
DCHECK(0) << base::StringPrintf("Unknown HttpMethod %d\n",
|
||||
static_cast<int>(http_method));
|
||||
@@ -49,6 +56,8 @@ HttpMethod GetHttpMethod(const std::string& http_method_string) {
|
||||
return HttpMethod::kPost;
|
||||
} else if (http_method_string == "DELETE") {
|
||||
return HttpMethod::kDelete;
|
||||
+ } else if (http_method_string == "HEAD") {
|
||||
+ return HttpMethod::kHead;
|
||||
}
|
||||
return HttpMethod::kUndefined;
|
||||
}
|
||||
@@ -115,9 +124,11 @@ EndpointFetcher::EndpointFetcher(
|
||||
const std::vector<std::string>& headers,
|
||||
const std::vector<std::string>& cors_exempt_headers,
|
||||
version_info::Channel channel,
|
||||
+ const net::NetworkTrafficAnnotationTag& annotation_tag,
|
||||
const RequestParams request_params)
|
||||
: url_loader_factory_(url_loader_factory),
|
||||
identity_manager_(nullptr),
|
||||
+ intercept_redirect_(false),
|
||||
consent_level_(std::nullopt),
|
||||
sanitize_response_(true),
|
||||
channel_(channel),
|
||||
@@ -137,6 +148,7 @@ EndpointFetcher::EndpointFetcher(
|
||||
const net::NetworkTrafficAnnotationTag& annotation_tag)
|
||||
: url_loader_factory_(url_loader_factory),
|
||||
identity_manager_(nullptr),
|
||||
+ intercept_redirect_(false),
|
||||
consent_level_(std::nullopt),
|
||||
sanitize_response_(false),
|
||||
request_params_(EndpointFetcher::RequestParams::Builder(HttpMethod::kGet,
|
||||
@@ -161,6 +173,7 @@ EndpointFetcher::EndpointFetcher(
|
||||
: oauth_consumer_name_(oauth_consumer_name),
|
||||
url_loader_factory_(url_loader_factory),
|
||||
identity_manager_(identity_manager),
|
||||
+ intercept_redirect_(false),
|
||||
consent_level_(consent_level),
|
||||
sanitize_response_(true),
|
||||
request_params_(
|
||||
@@ -190,6 +203,7 @@ EndpointFetcher::EndpointFetcher(
|
||||
bool is_oauth_fetch)
|
||||
: url_loader_factory_(url_loader_factory),
|
||||
identity_manager_(nullptr),
|
||||
+ intercept_redirect_(false),
|
||||
consent_level_(std::nullopt),
|
||||
sanitize_response_(true),
|
||||
request_params_(
|
||||
@@ -207,6 +221,7 @@ EndpointFetcher::EndpointFetcher(
|
||||
EndpointFetcher::EndpointFetcher(
|
||||
const net::NetworkTrafficAnnotationTag& annotation_tag)
|
||||
: identity_manager_(nullptr),
|
||||
@@ -1749,7 +1808,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
consent_level_(std::nullopt),
|
||||
sanitize_response_(true),
|
||||
request_params_(
|
||||
@@ -215,6 +222,23 @@ EndpointFetcher::EndpointFetcher(
|
||||
@@ -215,6 +230,27 @@ EndpointFetcher::EndpointFetcher(
|
||||
.SetTimeout(kDefaultTimeOut)
|
||||
.Build()) {}
|
||||
|
||||
@@ -1761,19 +1820,23 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
+ int64_t timeout_ms,
|
||||
+ const bool intercept_redirect,
|
||||
+ const net::NetworkTrafficAnnotationTag& annotation_tag)
|
||||
+ : url_(url),
|
||||
+ http_method_(http_method),
|
||||
+ timeout_(base::Milliseconds(timeout_ms)),
|
||||
+ intercept_redirect_(intercept_redirect),
|
||||
+ annotation_tag_(annotation_tag),
|
||||
+ url_loader_factory_(url_loader_factory),
|
||||
+ : url_loader_factory_(url_loader_factory),
|
||||
+ identity_manager_(nullptr),
|
||||
+ sanitize_response_(false) {}
|
||||
+ intercept_redirect_(intercept_redirect),
|
||||
+ consent_level_(std::nullopt),
|
||||
+ sanitize_response_(false),
|
||||
+ request_params_(
|
||||
+ EndpointFetcher::RequestParams::Builder(GetHttpMethod(http_method),
|
||||
+ annotation_tag)
|
||||
+ .SetAuthType(NO_AUTH)
|
||||
+ .SetTimeout(base::Milliseconds(timeout_ms))
|
||||
+ .SetUrl(url)
|
||||
+ .Build()) {}
|
||||
+
|
||||
EndpointFetcher::~EndpointFetcher() = default;
|
||||
|
||||
void EndpointFetcher::Fetch(EndpointFetcherCallback endpoint_fetcher_callback) {
|
||||
@@ -272,12 +296,9 @@ void EndpointFetcher::PerformRequest(
|
||||
@@ -272,12 +308,9 @@ void EndpointFetcher::PerformRequest(
|
||||
auto resource_request = std::make_unique<network::ResourceRequest>();
|
||||
resource_request->method = GetHttpMethodString(request_params_.http_method());
|
||||
resource_request->url = request_params_.url();
|
||||
@@ -1789,7 +1852,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
if (request_params_.http_method() == HttpMethod::kPost) {
|
||||
resource_request->headers.SetHeader(kContentTypeKey,
|
||||
request_params_.content_type());
|
||||
@@ -305,10 +326,27 @@ void EndpointFetcher::PerformRequest(
|
||||
@@ -305,10 +338,26 @@ void EndpointFetcher::PerformRequest(
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@@ -1803,7 +1866,6 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
// callback
|
||||
simple_url_loader_ = network::SimpleURLLoader::Create(
|
||||
std::move(resource_request), request_params_.annotation_tag());
|
||||
+ simple_url_loader_->SetTimeoutDuration(timeout_);
|
||||
+ simple_url_loader_->SetAllowHttpErrorResults(true);
|
||||
+
|
||||
+ if (!response_)
|
||||
@@ -1817,15 +1879,17 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
|
||||
if (request_params_.http_method() == HttpMethod::kPost) {
|
||||
simple_url_loader_->AttachStringForUpload(
|
||||
@@ -320,15 +358,23 @@ void EndpointFetcher::PerformRequest(
|
||||
@@ -320,15 +369,25 @@ void EndpointFetcher::PerformRequest(
|
||||
}
|
||||
simple_url_loader_->SetRetryOptions(GetMaxRetries(),
|
||||
network::SimpleURLLoader::RETRY_ON_5XX);
|
||||
- simple_url_loader_->SetTimeoutDuration(request_params_.timeout());
|
||||
- simple_url_loader_->SetAllowHttpErrorResults(true);
|
||||
- network::SimpleURLLoader::BodyAsStringCallbackDeprecated
|
||||
+ LOG(INFO) << "performing " << http_method_ << " request to " << url_;
|
||||
+ if (base::EqualsCaseInsensitiveASCII(http_method_, "HEAD")) {
|
||||
+ LOG(INFO) << "performing "
|
||||
+ << GetHttpMethodString(request_params_.http_method())
|
||||
+ << " request to " << url_;
|
||||
+ if (request_params_.http_method() == HttpMethod::kHead) {
|
||||
+ endpoint_fetcher_callback_ = std::move(endpoint_fetcher_callback);
|
||||
+
|
||||
+ simple_url_loader_->DownloadHeadersOnly(
|
||||
@@ -1847,7 +1911,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
}
|
||||
|
||||
void EndpointFetcher::OnResponseFetched(
|
||||
@@ -406,21 +452,6 @@ void EndpointFetcher::OnSanitizationResult(
|
||||
@@ -406,21 +465,6 @@ void EndpointFetcher::OnSanitizationResult(
|
||||
std::move(endpoint_fetcher_callback).Run(std::move(response));
|
||||
}
|
||||
|
||||
@@ -1869,7 +1933,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.cc b/components/endpoi
|
||||
int EndpointFetcher::GetMaxRetries() const {
|
||||
if (!request_params_.max_retries.has_value()) {
|
||||
return kNumRetries;
|
||||
@@ -445,3 +476,38 @@ UploadProgressCallback EndpointFetcher::GetUploadProgressCallback() const {
|
||||
@@ -445,3 +489,38 @@ UploadProgressCallback EndpointFetcher::GetUploadProgressCallback() const {
|
||||
std::string EndpointFetcher::GetUrlForTesting() {
|
||||
return request_params_.url().spec();
|
||||
}
|
||||
@@ -1920,7 +1984,15 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
|
||||
|
||||
namespace network {
|
||||
struct ResourceRequest;
|
||||
@@ -76,6 +78,8 @@ enum AuthType {
|
||||
@@ -61,6 +63,7 @@ enum class HttpMethod {
|
||||
kGet = 0,
|
||||
kPost = 1,
|
||||
kDelete = 2,
|
||||
+ kHead = 3,
|
||||
};
|
||||
|
||||
enum AuthType {
|
||||
@@ -76,6 +79,8 @@ enum AuthType {
|
||||
|
||||
struct EndpointResponse {
|
||||
std::string response;
|
||||
@@ -1929,7 +2001,15 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
|
||||
int http_status_code{-1};
|
||||
std::optional<FetchErrorType> error_type;
|
||||
};
|
||||
@@ -304,6 +308,14 @@ class EndpointFetcher {
|
||||
@@ -296,6 +301,7 @@ class EndpointFetcher {
|
||||
const std::vector<std::string>& headers,
|
||||
const std::vector<std::string>& cors_exempt_headers,
|
||||
version_info::Channel channel,
|
||||
+ const net::NetworkTrafficAnnotationTag& annotation_tag,
|
||||
const RequestParams request_params);
|
||||
|
||||
// Constructor if no authentication is needed.
|
||||
@@ -304,6 +310,14 @@ class EndpointFetcher {
|
||||
const GURL& url,
|
||||
const net::NetworkTrafficAnnotationTag& annotation_tag);
|
||||
|
||||
@@ -1944,7 +2024,7 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
|
||||
// Used for tests. Can be used if caller constructs their own
|
||||
// url_loader_factory and identity_manager.
|
||||
EndpointFetcher(
|
||||
@@ -360,6 +372,11 @@ class EndpointFetcher {
|
||||
@@ -360,6 +374,11 @@ class EndpointFetcher {
|
||||
void OnSanitizationResult(std::unique_ptr<EndpointResponse> response,
|
||||
EndpointFetcherCallback endpoint_fetcher_callback,
|
||||
data_decoder::JsonSanitizer::Result result);
|
||||
@@ -1956,16 +2036,22 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
|
||||
|
||||
network::mojom::CredentialsMode GetCredentialsMode() const;
|
||||
int GetMaxRetries() const;
|
||||
@@ -370,6 +387,8 @@ class EndpointFetcher {
|
||||
@@ -370,12 +389,14 @@ class EndpointFetcher {
|
||||
// network::SimpleURLLoader.
|
||||
const std::string oauth_consumer_name_;
|
||||
signin::ScopeSet oauth_scopes_;
|
||||
+ GURL url_;
|
||||
+ const bool intercept_redirect_;
|
||||
|
||||
// Members set in constructor
|
||||
const scoped_refptr<network::SharedURLLoaderFactory> url_loader_factory_;
|
||||
@@ -388,6 +407,9 @@ class EndpointFetcher {
|
||||
// `identity_manager_` can be null if it is not needed for authentication (in
|
||||
// this case, callers should invoke `PerformRequest` directly).
|
||||
const raw_ptr<signin::IdentityManager> identity_manager_;
|
||||
+ const bool intercept_redirect_;
|
||||
// `consent_level_` is used together with `identity_manager_`, so it can be
|
||||
// null if `identity_manager_` is null.
|
||||
const std::optional<signin::ConsentLevel> consent_level_;
|
||||
@@ -388,6 +409,9 @@ class EndpointFetcher {
|
||||
access_token_fetcher_;
|
||||
std::unique_ptr<network::SimpleURLLoader> simple_url_loader_;
|
||||
|
||||
@@ -1975,6 +2061,17 @@ diff --git a/components/endpoint_fetcher/endpoint_fetcher.h b/components/endpoin
|
||||
base::WeakPtrFactory<EndpointFetcher> weak_ptr_factory_{this};
|
||||
};
|
||||
|
||||
diff --git a/components/manta/base_provider.cc b/components/manta/base_provider.cc
|
||||
--- a/components/manta/base_provider.cc
|
||||
+++ b/components/manta/base_provider.cc
|
||||
@@ -160,6 +160,7 @@ std::unique_ptr<EndpointFetcher> BaseProvider::CreateEndpointFetcherForDemoMode(
|
||||
/*cors_exempt_headers=*/std::vector<std::string>(),
|
||||
// ChromeOS always uses the stable channel API key
|
||||
version_info::Channel::STABLE,
|
||||
+ annotation_tag,
|
||||
EndpointFetcher::RequestParams::Builder(kHttpMethod, annotation_tag)
|
||||
.Build());
|
||||
}
|
||||
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Bromite-auto-updater.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Bromite-auto-updater.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
|
||||
@@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../developer_private/developer_private_api.h | 3 +
|
||||
.../developer_private_functions_desktop.cc | 1 +
|
||||
.../developer_private_functions_shared.cc | 7 ++-
|
||||
.../profile_info_generator.cc | 1 +
|
||||
.../profile_info_generator.cc | 3 +
|
||||
.../webstore_private/webstore_private_api.cc | 15 ++++-
|
||||
.../extensions/chrome_extension_system.cc | 1 +
|
||||
.../extensions/cws_info_service_factory.cc | 3 +-
|
||||
@@ -50,7 +50,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
extensions/common/extension_features.cc | 14 +++++
|
||||
extensions/common/extension_features.h | 2 +
|
||||
.../definitions/developer_private.d.ts | 2 +
|
||||
37 files changed, 251 insertions(+), 108 deletions(-)
|
||||
37 files changed, 253 insertions(+), 108 deletions(-)
|
||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Webstore-protection.inc
|
||||
|
||||
diff --git a/chrome/app/extensions_strings.grdp b/chrome/app/extensions_strings.grdp
|
||||
@@ -78,9 +78,9 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_a
|
||||
|
||||
+#include "chrome/browser/about_flags.h"
|
||||
+#include "chrome/browser/browser_process.h"
|
||||
+#include "components/flags_ui/pref_service_flags_storage.h"
|
||||
+#include "components/flags_ui/feature_entry.h"
|
||||
+#include "components/flags_ui/flags_storage.h"
|
||||
+#include "components/webui/flags/pref_service_flags_storage.h"
|
||||
+#include "components/webui/flags/feature_entry.h"
|
||||
+#include "components/webui/flags/flags_storage.h"
|
||||
+
|
||||
namespace extensions {
|
||||
|
||||
@@ -165,11 +165,20 @@ diff --git a/chrome/browser/extensions/api/developer_private/developer_private_f
|
||||
diff --git a/chrome/browser/extensions/api/developer_private/profile_info_generator.cc b/chrome/browser/extensions/api/developer_private/profile_info_generator.cc
|
||||
--- a/chrome/browser/extensions/api/developer_private/profile_info_generator.cc
|
||||
+++ b/chrome/browser/extensions/api/developer_private/profile_info_generator.cc
|
||||
@@ -46,6 +46,7 @@ developer::ProfileInfo CreateProfileInfo(Profile* profile) {
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "build/build_config.h"
|
||||
#include "chrome/browser/prefs/incognito_mode_prefs.h"
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
+#include "chrome/browser/extensions/api/developer_private/developer_private_api.h"
|
||||
#include "chrome/common/pref_names.h"
|
||||
#include "components/policy/core/common/policy_pref_names.h"
|
||||
#include "components/prefs/pref_service.h"
|
||||
@@ -46,6 +47,8 @@ developer::ProfileInfo CreateProfileInfo(Profile* profile) {
|
||||
->DidUserAcknowledgeNoticeGlobally();
|
||||
#endif // !BUILDFLAG(IS_ANDROID)
|
||||
|
||||
+ info->is_extension_autoupdate_enabled = DeveloperPrivateAPI::IsExtensionAutoupdateEnabled();
|
||||
+ info.is_extension_autoupdate_enabled =
|
||||
+ DeveloperPrivateAPI::IsExtensionAutoupdateEnabled();
|
||||
return info;
|
||||
}
|
||||
|
||||
|
||||
@@ -1071,7 +1071,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c
|
||||
+ if (choose_button_) {
|
||||
+ choose_button_->SetEnabledTextColors(std::nullopt);
|
||||
+ if (permission_.setting == CONTENT_SETTING_DEFAULT) {
|
||||
+ choose_button_->SetTextColorId(views::Button::ButtonState::STATE_NORMAL,
|
||||
+ choose_button_->SetTextColor(views::Button::ButtonState::STATE_NORMAL,
|
||||
+ ui::kColorLabelForeground);
|
||||
+ }
|
||||
+ }
|
||||
@@ -1110,7 +1110,7 @@ diff --git a/chrome/browser/ui/views/page_info/permission_toggle_row_view.cc b/c
|
||||
+ }
|
||||
+ choose_button_->SetText(caption);
|
||||
+ if (permission_.setting == CONTENT_SETTING_DEFAULT) {
|
||||
+ choose_button_->SetTextColorId(views::Button::ButtonState::STATE_NORMAL,
|
||||
+ choose_button_->SetTextColor(views::Button::ButtonState::STATE_NORMAL,
|
||||
+ ui::kColorLabelForeground);
|
||||
+ }
|
||||
+ }
|
||||
|
||||
@@ -16,6 +16,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../predictors/autocomplete_action_predictor.cc | 2 ++
|
||||
.../predictors/loading_predictor_config.cc | 4 ++--
|
||||
chrome/browser/predictors/predictors_features.cc | 3 +--
|
||||
.../search_prefetch/field_trial_settings.cc | 4 ++++
|
||||
.../search_prefetch_url_loader_interceptor.cc | 1 +
|
||||
.../chrome_browser_main_extra_parts_profiles.cc | 1 -
|
||||
chrome/browser/safe_browsing/BUILD.gn | 1 -
|
||||
...fication_content_detection_service_factory.cc | 5 +++++
|
||||
@@ -23,11 +25,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../read_anything/read_aloud_app_model.cc | 16 ++++++++++++++--
|
||||
.../read_anything/read_aloud_app_model.h | 9 ++++++++-
|
||||
.../read_anything_app_controller.cc | 10 ++++++++++
|
||||
.../read_anything/read_anything_app_controller.h | 4 ++++
|
||||
.../read_anything/read_anything_app_controller.h | 6 ++++++
|
||||
chrome/utility/BUILD.gn | 2 +-
|
||||
chrome/utility/services.cc | 8 --------
|
||||
.../integrators/autofill_optimization_guide.cc | 5 +++--
|
||||
.../omnibox/browser/autocomplete_controller.cc | 4 ++++
|
||||
.../omnibox/browser/base_search_provider.cc | 4 ++--
|
||||
.../optimization_guide/core/hints_fetcher.cc | 1 +
|
||||
.../optimization_guide/core/hints_manager.cc | 5 +++++
|
||||
.../core/optimization_guide_features.cc | 15 +++++++++------
|
||||
@@ -38,21 +41,23 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../page_content_annotations_model_manager.cc | 1 +
|
||||
.../notification_content_detection/BUILD.gn | 7 +++++++
|
||||
components/safe_browsing/core/common/features.cc | 1 +
|
||||
.../Disable-all-predictors-code.inc | 3 +++
|
||||
.../Disable-all-predictors-code.inc | 2 ++
|
||||
.../Disable-all-predictors-code.inc | 1 +
|
||||
.../Disable-all-predictors-code.inc | 1 +
|
||||
.../features_cc/Disable-all-predictors-code.inc | 3 +++
|
||||
.../features_cc/Disable-all-predictors-code.inc | 1 +
|
||||
.../features_cc/Disable-all-predictors-code.inc | 1 +
|
||||
.../features_cc/Disable-all-predictors-code.inc | 2 ++
|
||||
services/webnn/features.gni | 2 +-
|
||||
.../core/html/parser/html_document_parser.cc | 1 +
|
||||
.../document_speculation_rules.cc | 1 +
|
||||
.../platform/runtime_enabled_features.json5 | 2 +-
|
||||
43 files changed, 114 insertions(+), 45 deletions(-)
|
||||
47 files changed, 123 insertions(+), 47 deletions(-)
|
||||
create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc
|
||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc
|
||||
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc
|
||||
create mode 100644 cromite_flags/components/permissions/features_cc/Disable-all-predictors-code.inc
|
||||
create mode 100644 cromite_flags/net/base/features_cc/Disable-all-predictors-code.inc
|
||||
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-all-predictors-code.inc
|
||||
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-all-predictors-code.inc
|
||||
|
||||
@@ -251,6 +256,28 @@ diff --git a/chrome/browser/predictors/predictors_features.cc b/chrome/browser/p
|
||||
|
||||
} // namespace
|
||||
|
||||
diff --git a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc b/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc
|
||||
--- a/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc
|
||||
+++ b/chrome/browser/preloading/prefetch/search_prefetch/field_trial_settings.cc
|
||||
@@ -146,3 +146,7 @@ const base::FeatureParam<base::TimeDelta>
|
||||
kSuppressesSearchPrefetchOnSlowNetworkThreshold{
|
||||
&kSuppressesSearchPrefetchOnSlowNetwork,
|
||||
"slow_network_threshold_for_search_prefetch", base::Milliseconds(208)};
|
||||
+
|
||||
+SET_CROMITE_FEATURE_DISABLED(kSearchPrefetchServicePrefetching);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kSearchPrefetchWithNoVarySearchDiskCache);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kSearchNavigationPrefetch);
|
||||
diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc
|
||||
--- a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc
|
||||
+++ b/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_url_loader_interceptor.cc
|
||||
@@ -84,6 +84,7 @@ SearchPrefetchURLLoader::RequestHandler
|
||||
SearchPrefetchURLLoaderInterceptor::MaybeCreateLoaderForRequest(
|
||||
const network::ResourceRequest& tentative_resource_request,
|
||||
content::FrameTreeNodeId frame_tree_node_id) {
|
||||
+ if ((true)) return {};
|
||||
// Do not intercept non-main frame navigations.
|
||||
if (!tentative_resource_request.is_outermost_main_frame) {
|
||||
// Use the is_outermost_main_frame flag instead of obtaining the
|
||||
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
|
||||
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
|
||||
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
|
||||
@@ -511,7 +538,17 @@ diff --git a/chrome/renderer/accessibility/read_anything/read_anything_app_contr
|
||||
class ReadAnythingAppControllerTest;
|
||||
class ReadAnythingAppControllerScreen2xDataCollectionModeTest;
|
||||
|
||||
@@ -376,7 +378,9 @@ class ReadAnythingAppController
|
||||
@@ -275,7 +277,9 @@ class ReadAnythingAppController
|
||||
// available.
|
||||
void UpdateDependencyParserModel(base::File model_file);
|
||||
|
||||
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
|
||||
DependencyParserModel& GetDependencyParserModelForTesting();
|
||||
+#endif
|
||||
|
||||
// Called when distillation has completed.
|
||||
void OnAXTreeDistilled(const ui::AXTreeID& tree_id,
|
||||
@@ -376,7 +380,9 @@ class ReadAnythingAppController
|
||||
|
||||
// Helpers for logging UmaHistograms based on times recorded in WebUI.
|
||||
void IncrementMetricCount(const std::string& metric);
|
||||
@@ -616,6 +653,26 @@ diff --git a/components/omnibox/browser/autocomplete_controller.cc b/components/
|
||||
|
||||
// Appends available autocompletion of the given type, subtype, and number to
|
||||
// the existing available autocompletions string, encoding according to the
|
||||
diff --git a/components/omnibox/browser/base_search_provider.cc b/components/omnibox/browser/base_search_provider.cc
|
||||
--- a/components/omnibox/browser/base_search_provider.cc
|
||||
+++ b/components/omnibox/browser/base_search_provider.cc
|
||||
@@ -99,14 +99,14 @@ BaseSearchProvider::BaseSearchProvider(AutocompleteProvider::Type type,
|
||||
bool BaseSearchProvider::ShouldPrefetch(const AutocompleteMatch& match) {
|
||||
// TODO (manukh): `GetAdditionalInfoForDebugging()` shouldn't be used for
|
||||
// non-debugging purposes.
|
||||
- return match.GetAdditionalInfoForDebugging(kShouldPrefetchKey) == kTrue;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
// static
|
||||
bool BaseSearchProvider::ShouldPrerender(const AutocompleteMatch& match) {
|
||||
// TODO (manukh): `GetAdditionalInfoForDebugging()` shouldn't be used for
|
||||
// non-debugging purposes.
|
||||
- return match.GetAdditionalInfoForDebugging(kShouldPrerenderKey) == kTrue;
|
||||
+ return false;
|
||||
}
|
||||
|
||||
// static
|
||||
diff --git a/components/optimization_guide/core/hints_fetcher.cc b/components/optimization_guide/core/hints_fetcher.cc
|
||||
--- a/components/optimization_guide/core/hints_fetcher.cc
|
||||
+++ b/components/optimization_guide/core/hints_fetcher.cc
|
||||
@@ -811,10 +868,9 @@ diff --git a/cromite_flags/chrome/browser/browser_features_cc/Disable-all-predic
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc
|
||||
@@ -0,0 +1,3 @@
|
||||
@@ -0,0 +1,2 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kBookmarkTriggerForPrerender2);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kNewTabPageTriggerForPrerender2);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kSupportSearchSuggestionForPrerender2);
|
||||
diff --git a/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
@@ -835,6 +891,12 @@ new file mode 100644
|
||||
+SET_CROMITE_FEATURE_DISABLED(kPermissionOnDeviceNotificationPredictions);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kPermissionOnDeviceGeolocationPredictions);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kPermissionPredictionsV2);
|
||||
diff --git a/cromite_flags/net/base/features_cc/Disable-all-predictors-code.inc b/cromite_flags/net/base/features_cc/Disable-all-predictors-code.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/net/base/features_cc/Disable-all-predictors-code.inc
|
||||
@@ -0,0 +1 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kHttpCacheNoVarySearch);
|
||||
diff --git a/cromite_flags/services/network/public/cpp/features_cc/Disable-all-predictors-code.inc b/cromite_flags/services/network/public/cpp/features_cc/Disable-all-predictors-code.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
|
||||
@@ -38,8 +38,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../browser/AttributionOsLevelManager.java | 349 +-----------------
|
||||
.../public/browser/content_browser_client.cc | 7 +-
|
||||
.../public/browser/navigation_controller.cc | 1 -
|
||||
.../Disable-conversion-measurement-api.inc | 1 +
|
||||
.../Disable-conversion-measurement-api.inc | 10 +
|
||||
.../Disable-conversion-measurement-api.inc | 2 +
|
||||
.../Disable-conversion-measurement-api.inc | 8 +
|
||||
.../attribution/request_headers_internal.cc | 1 +
|
||||
services/network/network_context.cc | 20 -
|
||||
.../network/public/cpp/attribution_utils.cc | 2 +
|
||||
@@ -47,7 +47,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
third_party/blink/renderer/core/page/page.cc | 2 +-
|
||||
.../platform/runtime_enabled_features.json5 | 20 +-
|
||||
ui/events/android/motion_event_android.cc | 8 +-
|
||||
36 files changed, 101 insertions(+), 430 deletions(-)
|
||||
36 files changed, 100 insertions(+), 430 deletions(-)
|
||||
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc
|
||||
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc
|
||||
|
||||
@@ -986,23 +986,22 @@ diff --git a/cromite_flags/services/network/public/cpp/features_cc/Disable-conve
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc
|
||||
@@ -0,0 +1 @@
|
||||
+// none
|
||||
@@ -0,0 +1,2 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kBrowsingTopics);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kInterestGroupStorage);
|
||||
diff --git a/cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc b/cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc
|
||||
@@ -0,0 +1,10 @@
|
||||
@@ -0,0 +1,8 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kAdAuctionSignals);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kBrowsingTopics);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kBrowsingTopicsDocumentAPI);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kBrowsingTopicsParameters);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kFledge);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kFledgeBiddingAndAuctionServer);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kInterestGroupStorage);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kPrivateAggregationApi);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kBiddingAndScoringDebugReportingAPI);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kAllowURNsInIframes);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kFledgeSampleDebugReports);
|
||||
diff --git a/services/network/attribution/request_headers_internal.cc b/services/network/attribution/request_headers_internal.cc
|
||||
--- a/services/network/attribution/request_headers_internal.cc
|
||||
+++ b/services/network/attribution/request_headers_internal.cc
|
||||
|
||||
@@ -7,17 +7,17 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
chrome/android/java/AndroidManifest.xml | 9 ---------
|
||||
.../password_store_android_backend_bridge_helper_impl.cc | 1 +
|
||||
.../android/password_store_android_local_backend.cc | 6 +++++-
|
||||
.../generated_password_leak_detection_pref.cc | 3 +--
|
||||
.../password_receiver_service_factory.cc | 2 +-
|
||||
.../password_manager/password_sender_service_factory.cc | 2 +-
|
||||
.../affiliations/core/browser/affiliation_backend.cc | 1 +
|
||||
.../core/browser/affiliation_service_impl.cc | 4 ++++
|
||||
components/affiliations/core/browser/facet_manager.cc | 4 ++++
|
||||
.../affiliation/password_affiliation_source_adapter.cc | 4 ++++
|
||||
.../leak_detection/leak_detection_check_factory_impl.cc | 5 +++++
|
||||
.../browser/leak_detection/leak_detection_check_impl.cc | 3 +--
|
||||
.../Disable-privacy-issues-in-password-manager.inc | 1 +
|
||||
12 files changed, 25 insertions(+), 16 deletions(-)
|
||||
12 files changed, 24 insertions(+), 15 deletions(-)
|
||||
create mode 100644 cromite_flags/components/password_manager/core/browser/features/password_features_cc/Disable-privacy-issues-in-password-manager.inc
|
||||
|
||||
diff --git a/chrome/android/java/AndroidManifest.xml b/chrome/android/java/AndroidManifest.xml
|
||||
@@ -50,22 +50,6 @@ diff --git a/chrome/browser/password_manager/android/password_store_android_back
|
||||
base::android::BuildInfo* info = base::android::BuildInfo::GetInstance();
|
||||
int current_gms_core_version;
|
||||
if (!base::StringToInt(info->gms_version_code(), ¤t_gms_core_version)) {
|
||||
diff --git a/chrome/browser/password_manager/android/password_store_android_local_backend.cc b/chrome/browser/password_manager/android/password_store_android_local_backend.cc
|
||||
--- a/chrome/browser/password_manager/android/password_store_android_local_backend.cc
|
||||
+++ b/chrome/browser/password_manager/android/password_store_android_local_backend.cc
|
||||
@@ -29,7 +29,11 @@ PasswordStoreAndroidLocalBackend::PasswordStoreAndroidLocalBackend(
|
||||
PrefService* prefs)
|
||||
: PasswordStoreAndroidBackend(std::move(bridge_helper),
|
||||
std::move(lifecycle_helper),
|
||||
- prefs) {}
|
||||
+ prefs) {
|
||||
+ // This is why we have to explicitly call it here whenever local GMSCore is
|
||||
+ // created.
|
||||
+ if ((true)) password_affiliation_adapter.DisableSource();
|
||||
+}
|
||||
|
||||
PasswordStoreAndroidLocalBackend::~PasswordStoreAndroidLocalBackend() = default;
|
||||
|
||||
diff --git a/chrome/browser/password_manager/generated_password_leak_detection_pref.cc b/chrome/browser/password_manager/generated_password_leak_detection_pref.cc
|
||||
--- a/chrome/browser/password_manager/generated_password_leak_detection_pref.cc
|
||||
+++ b/chrome/browser/password_manager/generated_password_leak_detection_pref.cc
|
||||
@@ -142,6 +126,20 @@ diff --git a/components/affiliations/core/browser/facet_manager.cc b/components/
|
||||
if (IsCachedDataFresh()) {
|
||||
AffiliatedFacetsWithUpdateTime affiliation;
|
||||
if (!backend_->ReadAffiliationsAndBrandingFromDatabase(facet_uri_,
|
||||
diff --git a/components/password_manager/core/browser/affiliation/password_affiliation_source_adapter.cc b/components/password_manager/core/browser/affiliation/password_affiliation_source_adapter.cc
|
||||
--- a/components/password_manager/core/browser/affiliation/password_affiliation_source_adapter.cc
|
||||
+++ b/components/password_manager/core/browser/affiliation/password_affiliation_source_adapter.cc
|
||||
@@ -27,6 +27,10 @@ PasswordAffiliationSourceAdapter::~PasswordAffiliationSourceAdapter() = default;
|
||||
|
||||
void PasswordAffiliationSourceAdapter::GetFacets(
|
||||
AffiliationSource::ResultCallback response_callback) {
|
||||
+ if (((true))) {
|
||||
+ std::move(response_callback).Run({});
|
||||
+ return;
|
||||
+ }
|
||||
on_password_forms_received_callback_ = std::move(response_callback);
|
||||
store_->GetAllLogins(weak_ptr_factory_.GetWeakPtr());
|
||||
}
|
||||
diff --git a/components/password_manager/core/browser/leak_detection/leak_detection_check_factory_impl.cc b/components/password_manager/core/browser/leak_detection/leak_detection_check_factory_impl.cc
|
||||
--- a/components/password_manager/core/browser/leak_detection/leak_detection_check_factory_impl.cc
|
||||
+++ b/components/password_manager/core/browser/leak_detection/leak_detection_check_factory_impl.cc
|
||||
|
||||
@@ -27,11 +27,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../shared_storage_document_service_impl.cc | 9 +++++++++
|
||||
.../features_cc/Disable-privacy-sandbox.inc | 1 +
|
||||
.../Disable-privacy-sandbox.inc | 1 +
|
||||
.../features_cc/Disable-privacy-sandbox.inc | 2 ++
|
||||
.../features_cc/Disable-privacy-sandbox.inc | 1 +
|
||||
.../features_cc/Disable-privacy-sandbox.inc | 1 +
|
||||
third_party/blink/common/features.cc | 1 +
|
||||
19 files changed, 48 insertions(+), 28 deletions(-)
|
||||
20 files changed, 48 insertions(+), 28 deletions(-)
|
||||
create mode 100644 cromite_flags/content/common/features_cc/Disable-privacy-sandbox.inc
|
||||
create mode 100644 cromite_flags/content/public/common/content_features_cc/Disable-privacy-sandbox.inc
|
||||
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-privacy-sandbox.inc
|
||||
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-privacy-sandbox.inc
|
||||
|
||||
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
|
||||
@@ -328,13 +330,18 @@ new file mode 100644
|
||||
+++ b/cromite_flags/content/public/common/content_features_cc/Disable-privacy-sandbox.inc
|
||||
@@ -0,0 +1 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kPrivacySandboxAdsAPIsOverride);
|
||||
diff --git a/cromite_flags/services/network/public/cpp/features_cc/Disable-privacy-sandbox.inc b/cromite_flags/services/network/public/cpp/features_cc/Disable-privacy-sandbox.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/services/network/public/cpp/features_cc/Disable-privacy-sandbox.inc
|
||||
@@ -0,0 +1 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kSharedStorageAPI);
|
||||
diff --git a/cromite_flags/third_party/blink/common/features_cc/Disable-privacy-sandbox.inc b/cromite_flags/third_party/blink/common/features_cc/Disable-privacy-sandbox.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/third_party/blink/common/features_cc/Disable-privacy-sandbox.inc
|
||||
@@ -0,0 +1,2 @@
|
||||
@@ -0,0 +1 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kFencedFrames);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kSharedStorageAPI);
|
||||
diff --git a/third_party/blink/common/features.cc b/third_party/blink/common/features.cc
|
||||
--- a/third_party/blink/common/features.cc
|
||||
+++ b/third_party/blink/common/features.cc
|
||||
|
||||
@@ -11,18 +11,18 @@ Require: Timezone-customization.patch
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
.../renderer/chrome_content_renderer_client.cc | 2 +-
|
||||
.../renderer/content_settings_agent_impl.cc | 9 ++++++++-
|
||||
.../renderer/content_settings_agent_impl.h | 2 ++
|
||||
content/browser/speech/tts_android.cc | 2 +-
|
||||
content/browser/speech/tts_win.cc | 2 +-
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 8 ++++++++
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 2 ++
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 3 +++
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 1 +
|
||||
.../platform/web_content_settings_client.h | 2 ++
|
||||
.../renderer/modules/speech/speech_synthesis.cc | 17 ++++++++++++++---
|
||||
11 files changed, 43 insertions(+), 7 deletions(-)
|
||||
.../renderer/chrome_content_renderer_client.cc | 2 +-
|
||||
.../renderer/content_settings_agent_impl.cc | 9 ++++++++-
|
||||
.../renderer/content_settings_agent_impl.h | 2 ++
|
||||
content/browser/speech/tts_android.cc | 2 +-
|
||||
content/browser/speech/tts_win.cc | 2 +-
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 8 ++++++++
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 2 ++
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 3 +++
|
||||
.../Disable-speechSynthesis-getVoices-API.inc | 1 +
|
||||
.../platform/web_content_settings_client.h | 2 ++
|
||||
.../modules/speech/speech_synthesis.cc | 18 +++++++++++++++---
|
||||
11 files changed, 44 insertions(+), 7 deletions(-)
|
||||
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Disable-speechSynthesis-getVoices-API.inc
|
||||
create mode 100644 cromite_flags/media/base/media_switches_cc/Disable-speechSynthesis-getVoices-API.inc
|
||||
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-speechSynthesis-getVoices-API.inc
|
||||
@@ -151,7 +151,15 @@ diff --git a/third_party/blink/public/platform/web_content_settings_client.h b/t
|
||||
diff --git a/third_party/blink/renderer/modules/speech/speech_synthesis.cc b/third_party/blink/renderer/modules/speech/speech_synthesis.cc
|
||||
--- a/third_party/blink/renderer/modules/speech/speech_synthesis.cc
|
||||
+++ b/third_party/blink/renderer/modules/speech/speech_synthesis.cc
|
||||
@@ -35,6 +35,7 @@
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <tuple>
|
||||
|
||||
#include "build/build_config.h"
|
||||
+#include "third_party/blink/public/common/features.h"
|
||||
#include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h"
|
||||
#include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
|
||||
#include "third_party/blink/public/common/privacy_budget/identifiable_token.h"
|
||||
@@ -35,6 +36,7 @@
|
||||
#include "third_party/blink/public/common/thread_safe_browser_interface_broker_proxy.h"
|
||||
#include "third_party/blink/public/platform/browser_interface_broker_proxy.h"
|
||||
#include "third_party/blink/public/platform/platform.h"
|
||||
@@ -159,7 +167,7 @@ diff --git a/third_party/blink/renderer/modules/speech/speech_synthesis.cc b/thi
|
||||
#include "third_party/blink/renderer/bindings/modules/v8/v8_speech_synthesis_error_event_init.h"
|
||||
#include "third_party/blink/renderer/bindings/modules/v8/v8_speech_synthesis_event_init.h"
|
||||
#include "third_party/blink/renderer/core/dom/document.h"
|
||||
@@ -93,9 +94,19 @@ SpeechSynthesis::SpeechSynthesis(LocalDOMWindow& window)
|
||||
@@ -93,9 +95,19 @@ SpeechSynthesis::SpeechSynthesis(LocalDOMWindow& window)
|
||||
void SpeechSynthesis::OnSetVoiceList(
|
||||
Vector<mojom::blink::SpeechSynthesisVoicePtr> mojom_voices) {
|
||||
voice_list_.clear();
|
||||
|
||||
@@ -6,10 +6,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
chrome/android/java/res/layout/bookmark_search_box_row.xml | 4 ++--
|
||||
.../chrome/browser/bookmarks/BookmarkManagerOpenerImpl.java | 2 +-
|
||||
.../browser/bookmarks/BookmarkSearchBoxRowViewBinder.java | 1 +
|
||||
.../browser/bookmarks/BookmarkSearchBoxRowViewBinder.java | 2 ++
|
||||
.../chromium/chrome/browser/bookmarks/BookmarkUiPrefs.java | 2 +-
|
||||
components/bookmarks/browser/bookmark_node.cc | 3 +--
|
||||
5 files changed, 6 insertions(+), 6 deletions(-)
|
||||
5 files changed, 7 insertions(+), 6 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/res/layout/bookmark_search_box_row.xml b/chrome/android/java/res/layout/bookmark_search_box_row.xml
|
||||
--- a/chrome/android/java/res/layout/bookmark_search_box_row.xml
|
||||
@@ -40,7 +40,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
|
||||
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSearchBoxRowViewBinder.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSearchBoxRowViewBinder.java
|
||||
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSearchBoxRowViewBinder.java
|
||||
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkSearchBoxRowViewBinder.java
|
||||
@@ -33,6 +33,7 @@ class BookmarkSearchBoxRowViewBinder {
|
||||
@@ -5,6 +5,7 @@
|
||||
package org.chromium.chrome.browser.bookmarks;
|
||||
|
||||
import android.view.View;
|
||||
+import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.annotation.StringRes;
|
||||
@@ -33,6 +34,7 @@ class BookmarkSearchBoxRowViewBinder {
|
||||
private void bindInternal(PropertyModel model, View view, PropertyKey key) {
|
||||
BookmarkSearchBoxRow row = (BookmarkSearchBoxRow) view;
|
||||
ChipView shoppingChip = view.findViewById(R.id.shopping_filter_chip);
|
||||
|
||||
@@ -9,10 +9,12 @@ PartitionNelAndReportingByNetworkIsolationKey, kSplitCacheByNavigationInitiator
|
||||
|
||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
---
|
||||
.../browser/net/profile_network_context_service.cc | 2 +-
|
||||
.../Enable-network-isolation-features.inc | 12 ++++++++++++
|
||||
.../Enable-network-isolation-features.inc | 1 +
|
||||
3 files changed, 14 insertions(+), 1 deletion(-)
|
||||
.../browser/net/profile_network_context_service.cc | 2 +-
|
||||
.../Enable-network-isolation-features.inc | 10 ++++++++++
|
||||
.../Enable-network-isolation-features.inc | 1 +
|
||||
net/http/http_cache.cc | 14 +++++++++-----
|
||||
net/http/http_cache.h | 2 +-
|
||||
5 files changed, 22 insertions(+), 7 deletions(-)
|
||||
create mode 100644 cromite_flags/net/base/features_cc/Enable-network-isolation-features.inc
|
||||
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Enable-network-isolation-features.inc
|
||||
|
||||
@@ -32,7 +34,7 @@ diff --git a/cromite_flags/net/base/features_cc/Enable-network-isolation-feature
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/net/base/features_cc/Enable-network-isolation-features.inc
|
||||
@@ -0,0 +1,12 @@
|
||||
@@ -0,0 +1,10 @@
|
||||
+SET_CROMITE_FEATURE_ENABLED(kSplitCodeCacheByNetworkIsolationKey);
|
||||
+SET_CROMITE_FEATURE_ENABLED(kPartitionConnectionsByNetworkIsolationKey);
|
||||
+
|
||||
@@ -40,15 +42,75 @@ new file mode 100644
|
||||
+
|
||||
+// enable http cache partition
|
||||
+SET_CROMITE_FEATURE_ENABLED(kSplitCacheByNetworkIsolationKey);
|
||||
+// but disable cache for cross-site main frame navigation
|
||||
+SET_CROMITE_FEATURE_ENABLED(kSplitCacheByCrossSiteMainFrameNavigationBoolean);
|
||||
+
|
||||
+// most restricted option (ByNavigationInitiator) used
|
||||
+// it generates a cache key isolating all requests per initiator.
|
||||
+// requests with initiators with an opaque origin are not cached
|
||||
+SET_CROMITE_FEATURE_ENABLED(kSplitCacheByNavigationInitiator);
|
||||
diff --git a/cromite_flags/services/network/public/cpp/features_cc/Enable-network-isolation-features.inc b/cromite_flags/services/network/public/cpp/features_cc/Enable-network-isolation-features.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/services/network/public/cpp/features_cc/Enable-network-isolation-features.inc
|
||||
@@ -0,0 +1 @@
|
||||
+SET_CROMITE_FEATURE_ENABLED(kSplitAuthCacheByNetworkIsolationKey);
|
||||
diff --git a/net/http/http_cache.cc b/net/http/http_cache.cc
|
||||
--- a/net/http/http_cache.cc
|
||||
+++ b/net/http/http_cache.cc
|
||||
@@ -633,7 +633,7 @@ bool HttpCache::CanGenerateCacheKeyForRequest(const HttpRequestInfo* request) {
|
||||
|
||||
// static
|
||||
// Generate a key that can be used inside the cache.
|
||||
-std::string HttpCache::GenerateCacheKey(
|
||||
+std::string HttpCache::GenerateCacheKey2(
|
||||
const GURL& url,
|
||||
int load_flags,
|
||||
const NetworkIsolationKey& network_isolation_key,
|
||||
@@ -671,8 +671,8 @@ std::string HttpCache::GenerateCacheKey(
|
||||
const bool is_initiator_cross_site =
|
||||
initiator_site != net::SchemefulSite(url);
|
||||
if (is_initiator_cross_site) {
|
||||
- is_cross_site_main_frame_navigation_prefix =
|
||||
- kCrossSiteMainFrameNavigationPrefix;
|
||||
+ DLOG(INFO) << "---initiator_site cs=" << base::StrCat({"ni_", initiator_site.Serialize(), " "});
|
||||
+ return "";
|
||||
}
|
||||
}
|
||||
isolation_key = base::StrCat(
|
||||
@@ -687,9 +687,11 @@ std::string HttpCache::GenerateCacheKey(
|
||||
// Strip out the reference, username, and password sections of the URL and
|
||||
// concatenate with the credential_key, the post_key, and the network
|
||||
// isolation key if we are splitting the cache.
|
||||
- return base::StringPrintf("%c/%" PRId64 "/%s%s", credential_key,
|
||||
+ auto key = base::StringPrintf("%c/%" PRId64 "/%s%s", credential_key,
|
||||
upload_data_identifier, isolation_key.c_str(),
|
||||
HttpUtil::SpecForRequest(url).c_str());
|
||||
+ DLOG(INFO) << "---key=" << key;
|
||||
+ return key;
|
||||
}
|
||||
|
||||
// static
|
||||
@@ -712,10 +714,12 @@ HttpCache::GenerateCacheKeyForRequestWithAlternateURL(
|
||||
const int64_t upload_data_identifier =
|
||||
request->upload_data_stream ? request->upload_data_stream->identifier()
|
||||
: int64_t(0);
|
||||
- return GenerateCacheKey(
|
||||
+ auto key = GenerateCacheKey2(
|
||||
url, request->load_flags, request->network_isolation_key,
|
||||
upload_data_identifier, request->is_subframe_document_resource,
|
||||
request->is_main_frame_navigation, request->initiator);
|
||||
+ if (key.empty()) return std::nullopt;
|
||||
+ return key;
|
||||
}
|
||||
|
||||
// static
|
||||
diff --git a/net/http/http_cache.h b/net/http/http_cache.h
|
||||
--- a/net/http/http_cache.h
|
||||
+++ b/net/http/http_cache.h
|
||||
@@ -509,7 +509,7 @@ class NET_EXPORT HttpCache : public HttpTransactionFactory {
|
||||
// Generates a cache key given the various pieces used to construct the key.
|
||||
// Must not be called if a corresponding `CanGenerateCacheKeyForRequest`
|
||||
// returns false.
|
||||
- static std::string GenerateCacheKey(
|
||||
+ static std::string GenerateCacheKey2(
|
||||
const GURL& url,
|
||||
int load_flags,
|
||||
const NetworkIsolationKey& network_isolation_key,
|
||||
--
|
||||
|
||||
@@ -12,10 +12,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
chrome/app/settings_strings.grdp | 3 +
|
||||
chrome/app/settings_strings_android.grdp | 260 ++++++++++++++++++
|
||||
chrome/browser/BUILD.gn | 3 +
|
||||
.../chrome_browser_interface_binders.cc | 12 +
|
||||
.../chrome_browser_interface_binders.cc | 3 +
|
||||
.../chrome_browser_interface_binders_webui.cc | 21 ++
|
||||
chrome/browser/resources/BUILD.gn | 6 +
|
||||
chrome/browser/resources/settings/BUILD.gn | 2 +-
|
||||
.../resources/settings/page_visibility.ts | 43 ++-
|
||||
.../resources/settings/page_visibility.ts | 40 ++-
|
||||
.../search_engine_edit_dialog.html | 6 +
|
||||
.../search_engine_edit_dialog.ts | 6 +-
|
||||
.../search_engines_browser_proxy.ts | 8 +-
|
||||
@@ -26,7 +27,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../settings/settings_ui/settings_ui.html | 6 +
|
||||
.../resources/settings_shared/BUILD.gn | 2 +-
|
||||
chrome/browser/search/background/BUILD.gn | 4 +-
|
||||
.../browser/search_engines/android/BUILD.gn | 2 +
|
||||
.../browser/search_engines/android/BUILD.gn | 1 +
|
||||
.../java/res/layout/search_engine_layout.xml | 25 ++
|
||||
.../settings/SearchEngineSettings.java | 21 ++
|
||||
chrome/browser/ui/BUILD.gn | 18 ++
|
||||
@@ -37,7 +38,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../template_url_table_model.cc | 9 +-
|
||||
.../search_engines/template_url_table_model.h | 6 +-
|
||||
.../browser/ui/webui/chrome_web_ui_configs.cc | 8 +
|
||||
chrome/browser/ui/webui/favicon_source.cc | 16 ++
|
||||
chrome/browser/ui/webui/favicon_source.cc | 14 +
|
||||
chrome/browser/ui/webui/favicon_source.h | 2 +
|
||||
.../webui/settings/search_engines_handler.cc | 28 +-
|
||||
.../webui/settings/search_engines_handler.h | 3 +-
|
||||
@@ -69,14 +70,14 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../cr_components/managed_dialog/BUILD.gn | 2 +-
|
||||
.../cr_components/managed_footnote/BUILD.gn | 2 +-
|
||||
.../cr_components/theme_color_picker/BUILD.gn | 2 +-
|
||||
ui/webui/resources/cr_elements/BUILD.gn | 4 +-
|
||||
ui/webui/resources/cr_elements/BUILD.gn | 6 +-
|
||||
.../cr_elements/cr_dialog/cr_dialog.css | 2 +-
|
||||
.../resources/cr_elements/cr_shared_vars.css | 4 +
|
||||
ui/webui/resources/css/BUILD.gn | 2 +-
|
||||
ui/webui/resources/images/BUILD.gn | 2 +-
|
||||
ui/webui/resources/js/BUILD.gn | 2 +-
|
||||
ui/webui/resources/js/load_time_data.ts | 17 +-
|
||||
69 files changed, 1146 insertions(+), 68 deletions(-)
|
||||
70 files changed, 1153 insertions(+), 69 deletions(-)
|
||||
create mode 100644 chrome/app/settings_strings_android.grdp
|
||||
create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml
|
||||
create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc
|
||||
@@ -430,10 +431,37 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
|
||||
diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser/chrome_browser_interface_binders.cc
|
||||
--- a/chrome/browser/chrome_browser_interface_binders.cc
|
||||
+++ b/chrome/browser/chrome_browser_interface_binders.cc
|
||||
@@ -84,6 +84,18 @@
|
||||
@@ -84,6 +84,9 @@
|
||||
#endif
|
||||
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h"
|
||||
+#include "ui/webui/resources/cr_components/customize_color_scheme_mode/customize_color_scheme_mode.mojom.h"
|
||||
+#include "chrome/browser/ui/webui/settings/settings_ui_android.h"
|
||||
#include "chrome/browser/android/dom_distiller/distiller_ui_handle_android.h"
|
||||
#include "chrome/browser/facilitated_payments/payment_link_handler_binder.h"
|
||||
#include "chrome/browser/offline_pages/android/offline_page_auto_fetcher.h"
|
||||
diff --git a/chrome/browser/chrome_browser_interface_binders_webui.cc b/chrome/browser/chrome_browser_interface_binders_webui.cc
|
||||
--- a/chrome/browser/chrome_browser_interface_binders_webui.cc
|
||||
+++ b/chrome/browser/chrome_browser_interface_binders_webui.cc
|
||||
@@ -61,6 +61,12 @@
|
||||
#include "chrome/browser/ui/webui/whats_new/whats_new_ui.h"
|
||||
#endif
|
||||
|
||||
+#if BUILDFLAG(IS_ANDROID)
|
||||
+#include "ui/webui/resources/cr_components/customize_color_scheme_mode/customize_color_scheme_mode.mojom.h"
|
||||
+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h"
|
||||
+#include "chrome/browser/ui/webui/settings/settings_ui.h"
|
||||
+#endif
|
||||
+
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom.h"
|
||||
#include "chrome/browser/ui/webui/feed_internals/feed_internals_ui.h"
|
||||
@@ -460,6 +466,15 @@ void PopulateChromeWebUIFrameBinders(
|
||||
OnDeviceTranslationInternalsUI>(map);
|
||||
#endif
|
||||
|
||||
+#if BUILDFLAG(IS_ANDROID)
|
||||
+ RegisterWebUIControllerInterfaceBinder<
|
||||
+ help_bubble::mojom::HelpBubbleHandlerFactory, settings::SettingsUI>(map);
|
||||
+
|
||||
@@ -442,13 +470,29 @@ diff --git a/chrome/browser/chrome_browser_interface_binders.cc b/chrome/browser
|
||||
+ CustomizeColorSchemeModeHandlerFactory, settings::SettingsUI>(map);
|
||||
+#endif
|
||||
+
|
||||
#if !BUILDFLAG(IS_ANDROID)
|
||||
RegisterWebUIControllerInterfaceBinder<
|
||||
search_engine_choice::mojom::PageHandlerFactory, SearchEngineChoiceUI>(
|
||||
@@ -562,6 +577,9 @@ void PopulateChromeWebUIFrameBinders(
|
||||
RegisterWebUIControllerInterfaceBinder<suggest_internals::mojom::PageHandler,
|
||||
SuggestInternalsUI>(map);
|
||||
|
||||
+#if BUILDFLAG(IS_ANDROID)
|
||||
+#include "ui/webui/resources/cr_components/help_bubble/help_bubble.mojom.h"
|
||||
+#include "ui/webui/resources/cr_components/customize_color_scheme_mode/customize_color_scheme_mode.mojom.h"
|
||||
+#include "chrome/browser/ui/webui/settings/settings_ui_android.h"
|
||||
#include "chrome/browser/android/dom_distiller/distiller_ui_handle_android.h"
|
||||
#include "chrome/browser/facilitated_payments/payment_link_handler_binder.h"
|
||||
#include "chrome/browser/offline_pages/android/offline_page_auto_fetcher.h"
|
||||
+#error "Check this patch"
|
||||
+#endif
|
||||
RegisterWebUIControllerInterfaceBinder<
|
||||
customize_color_scheme_mode::mojom::
|
||||
CustomizeColorSchemeModeHandlerFactory,
|
||||
@@ -582,6 +600,9 @@ void PopulateChromeWebUIFrameBinders(
|
||||
CertificateManagerUI>(map);
|
||||
#endif // BUILDFLAG(CHROME_ROOT_STORE_CERT_MANAGEMENT_UI)
|
||||
|
||||
+#if BUILDFLAG(IS_ANDROID)
|
||||
+#error "Check this patch"
|
||||
+#endif
|
||||
RegisterWebUIControllerInterfaceBinder<
|
||||
help_bubble::mojom::HelpBubbleHandlerFactory, UserEducationInternalsUI,
|
||||
settings::SettingsUI, ReadingListUI, NewTabPageUI, CustomizeChromeUI,
|
||||
diff --git a/chrome/browser/resources/BUILD.gn b/chrome/browser/resources/BUILD.gn
|
||||
--- a/chrome/browser/resources/BUILD.gn
|
||||
+++ b/chrome/browser/resources/BUILD.gn
|
||||
@@ -480,7 +524,7 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc
|
||||
diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/browser/resources/settings/page_visibility.ts
|
||||
--- a/chrome/browser/resources/settings/page_visibility.ts
|
||||
+++ b/chrome/browser/resources/settings/page_visibility.ts
|
||||
@@ -42,8 +42,49 @@ export interface PrivacyPageVisibility {
|
||||
@@ -42,8 +42,46 @@ export interface PrivacyPageVisibility {
|
||||
searchPrediction: boolean;
|
||||
}
|
||||
|
||||
@@ -490,9 +534,6 @@ diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/brows
|
||||
+ chrome.autofillPrivate = {
|
||||
+ isUserEligibleForAutofillImprovements(): Promise<boolean> {
|
||||
+ return Promise.resolve(false);
|
||||
+ },
|
||||
+ hasUserAnnotationsEntries(): Promise<boolean> {
|
||||
+ return Promise.resolve(false);
|
||||
+ }
|
||||
+ };
|
||||
+
|
||||
@@ -776,7 +817,7 @@ diff --git a/chrome/browser/search/background/BUILD.gn b/chrome/browser/search/b
|
||||
diff --git a/chrome/browser/search_engines/android/BUILD.gn b/chrome/browser/search_engines/android/BUILD.gn
|
||||
--- a/chrome/browser/search_engines/android/BUILD.gn
|
||||
+++ b/chrome/browser/search_engines/android/BUILD.gn
|
||||
@@ -80,12 +80,14 @@ android_resources("java_resources") {
|
||||
@@ -80,6 +80,7 @@ android_resources("java_resources") {
|
||||
"java/res/layout/blocking_choice_dialog.xml",
|
||||
"java/res/layout/default_search_engine_dialog_view.xml",
|
||||
"java/res/layout/search_engine_choice_header.xml",
|
||||
@@ -784,13 +825,6 @@ diff --git a/chrome/browser/search_engines/android/BUILD.gn b/chrome/browser/sea
|
||||
"java/res/layout/search_engine_recent_title.xml",
|
||||
"java/res/layout/search_engine_with_logo.xml",
|
||||
"java/res/values/dimens.xml",
|
||||
"java/res/values/ids.xml",
|
||||
]
|
||||
deps = [
|
||||
+ "//chrome/browser/search/background:ntp_background_proto",
|
||||
"//chrome/browser/ui/android/strings:ui_strings_grd",
|
||||
"//components/browser_ui/styles/android:java_resources",
|
||||
"//components/browser_ui/widget/android:java_resources",
|
||||
diff --git a/chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml b/chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
@@ -1108,17 +1142,7 @@ diff --git a/chrome/browser/ui/webui/chrome_web_ui_configs.cc b/chrome/browser/u
|
||||
diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui/favicon_source.cc
|
||||
--- a/chrome/browser/ui/webui/favicon_source.cc
|
||||
+++ b/chrome/browser/ui/webui/favicon_source.cc
|
||||
@@ -13,7 +13,9 @@
|
||||
#include "chrome/browser/favicon/favicon_service_factory.h"
|
||||
#include "chrome/browser/favicon/favicon_utils.h"
|
||||
#include "chrome/browser/favicon/history_ui_favicon_request_handler_factory.h"
|
||||
+#if !BUILDFLAG(IS_ANDROID)
|
||||
#include "chrome/browser/history/top_sites_factory.h"
|
||||
+#endif
|
||||
#include "chrome/browser/profiles/profile.h"
|
||||
#include "chrome/common/url_constants.h"
|
||||
#include "chrome/common/webui_url_constants.h"
|
||||
@@ -22,9 +24,11 @@
|
||||
@@ -22,9 +22,11 @@
|
||||
#include "components/history/core/browser/top_sites.h"
|
||||
#include "content/public/browser/browser_thread.h"
|
||||
#include "content/public/browser/web_contents.h"
|
||||
@@ -1130,7 +1154,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui
|
||||
#include "third_party/skia/include/core/SkBitmap.h"
|
||||
#include "ui/base/resource/resource_bundle.h"
|
||||
#include "ui/base/resource/resource_scale_factor.h"
|
||||
@@ -226,6 +230,7 @@ bool FaviconSource::ShouldServiceRequest(
|
||||
@@ -226,6 +228,7 @@ bool FaviconSource::ShouldServiceRequest(
|
||||
render_process_id);
|
||||
}
|
||||
|
||||
@@ -1138,7 +1162,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui
|
||||
ui::NativeTheme* FaviconSource::GetNativeTheme(
|
||||
const content::WebContents::Getter& wc_getter) {
|
||||
#if BUILDFLAG(IS_ANDROID)
|
||||
@@ -234,6 +239,7 @@ ui::NativeTheme* FaviconSource::GetNativeTheme(
|
||||
@@ -234,6 +237,7 @@ ui::NativeTheme* FaviconSource::GetNativeTheme(
|
||||
return webui::GetNativeThemeDeprecated(wc_getter.Run());
|
||||
#endif
|
||||
}
|
||||
@@ -1146,7 +1170,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui
|
||||
|
||||
void FaviconSource::OnFaviconDataAvailable(
|
||||
content::URLDataSource::GotDataCallback callback,
|
||||
@@ -257,7 +263,11 @@ void FaviconSource::SendDefaultResponse(
|
||||
@@ -257,7 +261,11 @@ void FaviconSource::SendDefaultResponse(
|
||||
parsed.device_scale_factor,
|
||||
parsed.force_light_mode
|
||||
? false
|
||||
@@ -1158,7 +1182,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui
|
||||
return;
|
||||
}
|
||||
int icon_size = std::ceil(parsed.size_in_dip * parsed.device_scale_factor);
|
||||
@@ -277,7 +287,11 @@ void FaviconSource::SendDefaultResponse(
|
||||
@@ -277,7 +285,11 @@ void FaviconSource::SendDefaultResponse(
|
||||
SendDefaultResponse(std::move(callback), 16, 1.0f,
|
||||
force_light_mode
|
||||
? false
|
||||
@@ -1170,7 +1194,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui
|
||||
}
|
||||
|
||||
void FaviconSource::SendDefaultResponse(
|
||||
@@ -287,6 +301,7 @@ void FaviconSource::SendDefaultResponse(
|
||||
@@ -287,6 +299,7 @@ void FaviconSource::SendDefaultResponse(
|
||||
bool dark_mode) {
|
||||
int resource_id;
|
||||
switch (size_in_dip) {
|
||||
@@ -1178,7 +1202,7 @@ diff --git a/chrome/browser/ui/webui/favicon_source.cc b/chrome/browser/ui/webui
|
||||
case 64:
|
||||
resource_id =
|
||||
dark_mode ? IDR_DEFAULT_FAVICON_DARK_64 : IDR_DEFAULT_FAVICON_64;
|
||||
@@ -295,6 +310,7 @@ void FaviconSource::SendDefaultResponse(
|
||||
@@ -295,6 +308,7 @@ void FaviconSource::SendDefaultResponse(
|
||||
resource_id =
|
||||
dark_mode ? IDR_DEFAULT_FAVICON_DARK_32 : IDR_DEFAULT_FAVICON_32;
|
||||
break;
|
||||
@@ -2266,6 +2290,15 @@ diff --git a/ui/webui/resources/cr_elements/BUILD.gn b/ui/webui/resources/cr_ele
|
||||
web_component_files += [ "cr_a11y_announcer/cr_a11y_announcer.ts" ]
|
||||
|
||||
non_web_component_files += [
|
||||
@@ -144,7 +144,7 @@ build_webui("build") {
|
||||
]
|
||||
}
|
||||
|
||||
- if (!is_android && !is_ios) {
|
||||
+ if (!is_ios) {
|
||||
non_web_component_files += [
|
||||
"cr_container_shadow_mixin.ts",
|
||||
"cr_radio_button/cr_radio_button_mixin.ts",
|
||||
@@ -240,7 +240,7 @@ build_webui("build") {
|
||||
"../js:build_ts",
|
||||
"//third_party/lit/v3_0:build_ts",
|
||||
|
||||
@@ -2578,7 +2578,7 @@ new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/components/user_scripts/browser/resources/browser_resources.grd
|
||||
@@ -0,0 +1,14 @@
|
||||
+<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
|
||||
+<grit latest_public_release="0" current_release="1">
|
||||
+ <outputs>
|
||||
+ <output filename="grit/userscripts_browser_resources.h" type="rc_header">
|
||||
+ <emit emit_type='prepend'></emit>
|
||||
@@ -2592,7 +2592,6 @@ new file mode 100644
|
||||
+ </includes>
|
||||
+ </release>
|
||||
+</grit>
|
||||
\ No newline at end of file
|
||||
diff --git a/components/user_scripts/browser/resources/user-script-ui/BUILD.gn b/components/user_scripts/browser/resources/user-script-ui/BUILD.gn
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
@@ -7587,7 +7586,7 @@ new file mode 100755
|
||||
+++ b/components/user_scripts/renderer/resources/user_scripts_renderer_resources.grd
|
||||
@@ -0,0 +1,14 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
|
||||
+<grit latest_public_release="0" current_release="1">
|
||||
+ <outputs>
|
||||
+ <output filename="grit/user_scripts_renderer_resources.h" type="rc_header">
|
||||
+ <emit emit_type='prepend'></emit>
|
||||
|
||||
@@ -9,7 +9,7 @@ suit Cromite logic.
|
||||
.../adblock_chrome_content_browser_client.cc | 6 +
|
||||
.../adblock_chrome_content_browser_client.h | 4 +
|
||||
chrome/browser/adblock/android/BUILD.gn | 2 +-
|
||||
.../adblock/android/adblock_strings.grd | 54 +-
|
||||
.../adblock/android/adblock_strings.grd | 56 +-
|
||||
.../java/res/layout/adblock_custom_item.xml | 14 +-
|
||||
.../layout/adblock_filter_lists_list_item.xml | 15 +
|
||||
...ences.xml => eyeo_adblock_preferences.xml} | 42 +-
|
||||
@@ -80,10 +80,10 @@ suit Cromite logic.
|
||||
.../converter/parser/url_filter_options.cc | 21 +-
|
||||
.../serializer/flatbuffer_serializer.cc | 102 +-
|
||||
components/adblock/core/features.cc | 6 +-
|
||||
.../core/net/adblock_resource_request_impl.cc | 21 +-
|
||||
.../core/net/adblock_resource_request_impl.cc | 26 +-
|
||||
components/adblock/core/resources/.gitignore | 2 +-
|
||||
components/adblock/core/resources/BUILD.gn | 5 +-
|
||||
.../core/resources/adblock_resources.grd | 3 -
|
||||
.../core/resources/adblock_resources.grd | 5 +-
|
||||
.../core/resources/elemhide_for_selector.jst | 4 +-
|
||||
.../adblock/core/resources/elemhideemu.jst | 2 +
|
||||
.../resources/snippets/dist/dependencies.jst | 1690 ++++++
|
||||
@@ -125,7 +125,7 @@ suit Cromite logic.
|
||||
.../renderer/core/exported/web_document.cc | 13 +-
|
||||
.../blink/renderer/core/html/html_element.cc | 8 +-
|
||||
.../definitions/adblock_private.d.ts | 14 +
|
||||
120 files changed, 9154 insertions(+), 610 deletions(-)
|
||||
120 files changed, 9157 insertions(+), 616 deletions(-)
|
||||
rename chrome/browser/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (59%)
|
||||
create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.html
|
||||
create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.ts
|
||||
@@ -226,6 +226,15 @@ diff --git a/chrome/browser/adblock/android/BUILD.gn b/chrome/browser/adblock/an
|
||||
diff --git a/chrome/browser/adblock/android/adblock_strings.grd b/chrome/browser/adblock/android/adblock_strings.grd
|
||||
--- a/chrome/browser/adblock/android/adblock_strings.grd
|
||||
+++ b/chrome/browser/adblock/android/adblock_strings.grd
|
||||
@@ -15,7 +15,7 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
-<grit current_release="1" latest_public_release="0" output_all_resource_defines="false">
|
||||
+<grit current_release="1" latest_public_release="0">
|
||||
<outputs>
|
||||
<output filename="values-af/adblock_strings.xml" lang="af" type="android" />
|
||||
<output filename="values-am/adblock_strings.xml" lang="am" type="android" />
|
||||
@@ -186,10 +186,52 @@
|
||||
<release seq="1">
|
||||
<messages fallback_to_english="true">
|
||||
@@ -4382,6 +4391,19 @@ diff --git a/components/adblock/core/net/adblock_resource_request_impl.cc b/comp
|
||||
auto request = std::make_unique<network::ResourceRequest>();
|
||||
request->url = url_;
|
||||
request->method = MethodToString();
|
||||
@@ -181,11 +166,8 @@ void AdblockResourceRequestImpl::OnDownloadFinished(
|
||||
return;
|
||||
}
|
||||
|
||||
- GURL::Replacements strip_query;
|
||||
- strip_query.ClearQuery();
|
||||
- GURL url = url_.ReplaceComponents(strip_query);
|
||||
response_callback_.Run(
|
||||
- url, std::move(downloaded_file),
|
||||
+ url_, std::move(downloaded_file),
|
||||
loader_->ResponseInfo() ? loader_->ResponseInfo()->headers : nullptr);
|
||||
// response_callback_ may delete this, do not call any member variables now.
|
||||
}
|
||||
diff --git a/components/adblock/core/resources/.gitignore b/components/adblock/core/resources/.gitignore
|
||||
--- a/components/adblock/core/resources/.gitignore
|
||||
+++ b/components/adblock/core/resources/.gitignore
|
||||
@@ -4413,6 +4435,15 @@ diff --git a/components/adblock/core/resources/BUILD.gn b/components/adblock/cor
|
||||
diff --git a/components/adblock/core/resources/adblock_resources.grd b/components/adblock/core/resources/adblock_resources.grd
|
||||
--- a/components/adblock/core/resources/adblock_resources.grd
|
||||
+++ b/components/adblock/core/resources/adblock_resources.grd
|
||||
@@ -15,7 +15,7 @@
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with eyeo Chromium SDK. If not, see <http://www.gnu.org/licenses/>.
|
||||
-->
|
||||
-<grit latest_public_release="0" current_release="1" output_all_resource_defines="false">
|
||||
+<grit latest_public_release="0" current_release="1">
|
||||
<outputs>
|
||||
<output filename="grit/adblock_resources.h" type="rc_header">
|
||||
<emit emit_type="prepend">
|
||||
@@ -30,9 +30,6 @@
|
||||
<include name="IDR_ADBLOCK_ELEMHIDE_EMU_JS" file="elemhideemu.jst" type="BINDATA" />
|
||||
<include name="IDR_ADBLOCK_SNIPPETS_JS" file="${root_gen_dir}/components/adblock/core/resources/snippets.jst" use_base_dir="false" type="BINDATA" compress="gzip" />
|
||||
|
||||
@@ -3,13 +3,13 @@ Date: Tue, 31 Oct 2023 16:20:12 +0000
|
||||
Subject: Keep Manta Service Disabled
|
||||
|
||||
---
|
||||
components/manta/features.cc | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
components/manta/features.cc | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
diff --git a/components/manta/features.cc b/components/manta/features.cc
|
||||
--- a/components/manta/features.cc
|
||||
+++ b/components/manta/features.cc
|
||||
@@ -9,6 +9,7 @@
|
||||
@@ -9,36 +9,43 @@
|
||||
namespace manta::features {
|
||||
|
||||
BASE_FEATURE(kMantaService, "MantaService", base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
@@ -17,7 +17,11 @@ diff --git a/components/manta/features.cc b/components/manta/features.cc
|
||||
|
||||
// Enables Anchovy Prod Server
|
||||
BASE_FEATURE(kAnchovyUseProdServer,
|
||||
@@ -19,6 +20,7 @@ BASE_FEATURE(kAnchovyUseProdServer,
|
||||
"AnchovyUseProdServer",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kAnchovyUseProdServer);
|
||||
|
||||
// Enables Orca Prod Server
|
||||
BASE_FEATURE(kOrcaUseProdServer,
|
||||
"OrcaUseProdServer",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
@@ -25,4 +29,28 @@ diff --git a/components/manta/features.cc b/components/manta/features.cc
|
||||
|
||||
// Enables Scanner Prod Server
|
||||
BASE_FEATURE(kScannerUseProdServer,
|
||||
"ScannerUseProdServer",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kScannerUseProdServer);
|
||||
|
||||
// Enables SeaPen Prod Server
|
||||
BASE_FEATURE(kSeaPenUseProdServer,
|
||||
"SeaPenUseProdServer",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kSeaPenUseProdServer);
|
||||
|
||||
// Enables Mahi Prod Server
|
||||
BASE_FEATURE(kMahiUseProdServer,
|
||||
"MahiUseProdServer",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kMahiUseProdServer);
|
||||
|
||||
// Enables Walrus Prod Server
|
||||
BASE_FEATURE(kWalrusUseProdServer,
|
||||
"WalrusUseProdServer",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT);
|
||||
+SET_CROMITE_FEATURE_DISABLED(kWalrusUseProdServer);
|
||||
|
||||
bool IsMantaServiceEnabled() {
|
||||
return base::FeatureList::IsEnabled(kMantaService);
|
||||
--
|
||||
|
||||
@@ -5,9 +5,22 @@ Subject: Keep empty tabs between sessions
|
||||
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
---
|
||||
.../browser/multiwindow/MultiWindowUtils.java | 2 +-
|
||||
.../browser/tabmodel/TabPersistentStore.java | 15 ---------------
|
||||
1 file changed, 15 deletions(-)
|
||||
2 files changed, 1 insertion(+), 16 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/multiwindow/MultiWindowUtils.java
|
||||
@@ -915,7 +915,7 @@ public class MultiWindowUtils implements ActivityStateListener {
|
||||
for (TabModel model : models) {
|
||||
for (int i = 0; i < model.getCount(); i++) {
|
||||
Tab tab = model.getTabAt(i);
|
||||
- if (!TabPersistentStore.shouldSkipTab(tab)) {
|
||||
+ if ((true)) {
|
||||
totalCount++;
|
||||
}
|
||||
}
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java
|
||||
|
||||
@@ -325,8 +325,8 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
|
||||
public static final WritableObjectPropertyKey<Callback<Integer>> WIDTH_PX_CALLBACK =
|
||||
new WritableObjectPropertyKey<>();
|
||||
|
||||
+ public static final PropertyModel.WritableIntPropertyKey PRIMARY_COLOR =
|
||||
+ new PropertyModel.WritableIntPropertyKey();
|
||||
+ public static final WritableObjectPropertyKey<Integer> PRIMARY_COLOR =
|
||||
+ new WritableObjectPropertyKey<>();
|
||||
+
|
||||
public static final PropertyKey[] ALL_KEYS =
|
||||
new PropertyKey[] {
|
||||
@@ -1311,9 +1311,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.
|
||||
import org.chromium.url.GURL;
|
||||
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -768,11 +769,16 @@ public class NewTabPage
|
||||
import androidx.annotation.NonNull;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
|
||||
@@ -772,11 +773,16 @@ public class NewTabPage
|
||||
final int topControlsDistanceToRest =
|
||||
mBrowserControlsStateProvider.getContentOffset()
|
||||
- mBrowserControlsStateProvider.getTopControlsHeight();
|
||||
@@ -1332,7 +1332,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPage.
|
||||
|
||||
if (topMargin != layoutParams.topMargin || bottomMargin != layoutParams.bottomMargin) {
|
||||
layoutParams.topMargin = topMargin;
|
||||
@@ -788,9 +794,7 @@ public class NewTabPage
|
||||
@@ -792,9 +798,7 @@ public class NewTabPage
|
||||
* strip.
|
||||
*/
|
||||
private int getToolbarExtraYOffset() {
|
||||
|
||||
@@ -606,7 +606,7 @@ diff --git a/third_party/blink/renderer/platform/graphics/static_bitmap_image.cc
|
||||
#include "v8/include/v8.h"
|
||||
|
||||
+#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
|
||||
+#include "third_party/skia/include/private/SkColorData.h"
|
||||
+#include "third_party/skia/src/core/SkColorData.h"
|
||||
+
|
||||
namespace blink {
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../web_package/signed_exchange_loader.h | 2 +
|
||||
.../signed_exchange_prefetch_handler.cc | 2 +-
|
||||
.../signed_exchange_request_handler.cc | 1 +
|
||||
.../Partition-HSTS-cache-by-NAK.inc | 1 +
|
||||
net/http/transport_security_state.cc | 103 ++++++++++++------
|
||||
net/http/transport_security_state.h | 39 ++++---
|
||||
net/quic/crypto/proof_verifier_chromium.cc | 5 +-
|
||||
@@ -22,10 +23,11 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
net/spdy/spdy_session.h | 3 +-
|
||||
.../url_request_context_builder.cc | 14 ---
|
||||
net/url_request/url_request_http_job.cc | 5 +-
|
||||
services/network/network_context.cc | 31 ++++--
|
||||
services/network/network_context.h | 13 ++-
|
||||
.../public/mojom/network_context.mojom | 9 +-
|
||||
21 files changed, 173 insertions(+), 102 deletions(-)
|
||||
services/network/network_context.cc | 37 ++++---
|
||||
services/network/network_context.h | 15 ++-
|
||||
.../public/mojom/network_context.mojom | 10 +-
|
||||
22 files changed, 181 insertions(+), 104 deletions(-)
|
||||
create mode 100644 cromite_flags/net/base/features_cc/Partition-HSTS-cache-by-NAK.inc
|
||||
|
||||
diff --git a/chrome/browser/ssl/https_upgrades_interceptor.cc b/chrome/browser/ssl/https_upgrades_interceptor.cc
|
||||
--- a/chrome/browser/ssl/https_upgrades_interceptor.cc
|
||||
@@ -217,6 +219,12 @@ diff --git a/content/browser/web_package/signed_exchange_request_handler.cc b/co
|
||||
frame_tree_node_id_, accept_langs_,
|
||||
false /* keep_entry_for_prefetch_cache */);
|
||||
|
||||
diff --git a/cromite_flags/net/base/features_cc/Partition-HSTS-cache-by-NAK.inc b/cromite_flags/net/base/features_cc/Partition-HSTS-cache-by-NAK.inc
|
||||
new file mode 100644
|
||||
--- /dev/null
|
||||
+++ b/cromite_flags/net/base/features_cc/Partition-HSTS-cache-by-NAK.inc
|
||||
@@ -0,0 +1 @@
|
||||
+SET_CROMITE_FEATURE_DISABLED(kHstsTopLevelNavigationsOnly);
|
||||
diff --git a/net/http/transport_security_state.cc b/net/http/transport_security_state.cc
|
||||
--- a/net/http/transport_security_state.cc
|
||||
+++ b/net/http/transport_security_state.cc
|
||||
@@ -802,7 +810,32 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
pending_cert_verify->ocsp_result = ocsp_result;
|
||||
pending_cert_verify->sct_list = sct_list;
|
||||
pending_cert_verify->ct_verification_mode = ct_verification_mode;
|
||||
@@ -2121,17 +2123,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin(
|
||||
@@ -2082,20 +2084,22 @@ void NetworkContext::VerifyCertInternal(
|
||||
void NetworkContext::VerifyCert(
|
||||
const scoped_refptr<net::X509Certificate>& certificate,
|
||||
const net::HostPortPair& host_port,
|
||||
+ const net::NetworkAnonymizationKey& network_anonymization_key,
|
||||
const std::string& ocsp_result,
|
||||
const std::string& sct_list,
|
||||
VerifyCertCallback callback) {
|
||||
- VerifyCertInternal(certificate, host_port, ocsp_result, sct_list,
|
||||
+ VerifyCertInternal(certificate, host_port, network_anonymization_key, ocsp_result, sct_list,
|
||||
CTVerificationMode::kTlsCertificate, std::move(callback));
|
||||
}
|
||||
|
||||
void NetworkContext::VerifyCertForSignedExchange(
|
||||
const scoped_refptr<net::X509Certificate>& certificate,
|
||||
const net::HostPortPair& host_port,
|
||||
+ const net::NetworkAnonymizationKey& network_anonymization_key,
|
||||
const std::string& ocsp_result,
|
||||
const std::string& sct_list,
|
||||
VerifyCertCallback callback) {
|
||||
- VerifyCertInternal(certificate, host_port, ocsp_result, sct_list,
|
||||
+ VerifyCertInternal(certificate, host_port, network_anonymization_key, ocsp_result, sct_list,
|
||||
CTVerificationMode::kSignedExchange, std::move(callback));
|
||||
}
|
||||
|
||||
@@ -2121,17 +2125,19 @@ void NetworkContext::SetCorsOriginAccessListsForOrigin(
|
||||
std::move(callback).Run();
|
||||
}
|
||||
|
||||
@@ -825,7 +858,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
bool is_top_level_nav,
|
||||
IsHSTSActiveForHostCallback callback) {
|
||||
net::TransportSecurityState* security_state =
|
||||
@@ -2143,10 +2147,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host,
|
||||
@@ -2143,10 +2149,10 @@ void NetworkContext::IsHSTSActiveForHost(const std::string& host,
|
||||
}
|
||||
|
||||
std::move(callback).Run(
|
||||
@@ -838,7 +871,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
GetHSTSStateCallback callback) {
|
||||
base::Value::Dict result;
|
||||
|
||||
@@ -2184,10 +2188,10 @@ void NetworkContext::GetHSTSState(const std::string& domain,
|
||||
@@ -2184,10 +2190,10 @@ void NetworkContext::GetHSTSState(const std::string& domain,
|
||||
net::TransportSecurityState::STSState dynamic_sts_state;
|
||||
net::TransportSecurityState::PKPState dynamic_pkp_state;
|
||||
bool found_sts_dynamic = transport_security_state->GetDynamicSTSState(
|
||||
@@ -851,7 +884,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
if (found_sts_dynamic) {
|
||||
result.Set("dynamic_upgrade_mode",
|
||||
static_cast<int>(dynamic_sts_state.upgrade_mode));
|
||||
@@ -2225,6 +2229,7 @@ void NetworkContext::GetHSTSState(const std::string& domain,
|
||||
@@ -2225,6 +2231,7 @@ void NetworkContext::GetHSTSState(const std::string& domain,
|
||||
}
|
||||
|
||||
void NetworkContext::DeleteDynamicDataForHost(
|
||||
@@ -859,7 +892,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
const std::string& host,
|
||||
DeleteDynamicDataForHostCallback callback) {
|
||||
net::TransportSecurityState* transport_security_state =
|
||||
@@ -2235,7 +2240,7 @@ void NetworkContext::DeleteDynamicDataForHost(
|
||||
@@ -2235,7 +2242,7 @@ void NetworkContext::DeleteDynamicDataForHost(
|
||||
}
|
||||
|
||||
std::move(callback).Run(
|
||||
@@ -868,7 +901,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
}
|
||||
|
||||
void NetworkContext::EnableStaticKeyPinningForTesting(
|
||||
@@ -2279,7 +2284,7 @@ void NetworkContext::PreconnectSockets(
|
||||
@@ -2279,7 +2286,7 @@ void NetworkContext::PreconnectSockets(
|
||||
DCHECK(!require_network_anonymization_key_ ||
|
||||
!network_anonymization_key.IsEmpty());
|
||||
|
||||
@@ -877,7 +910,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
|
||||
// |PreconnectSockets| may receive arguments from the renderer, which is not
|
||||
// guaranteed to validate them.
|
||||
@@ -3092,7 +3097,9 @@ void NetworkContext::OnConnectionError() {
|
||||
@@ -3092,7 +3099,9 @@ void NetworkContext::OnConnectionError() {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -888,7 +921,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
// TODO(lilyhoughton) This needs to be gotten rid of once explicit
|
||||
// construction with a URLRequestContext is no longer supported.
|
||||
|
||||
@@ -3118,6 +3125,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) {
|
||||
@@ -3118,6 +3127,7 @@ GURL NetworkContext::GetHSTSRedirectForPreconnect(const GURL& original_url) {
|
||||
// top-level navigation so we need to disallow HSTS upgrades for every
|
||||
// preconnect.
|
||||
if (!url_request_context_->transport_security_state()->ShouldUpgradeToSSL(
|
||||
@@ -896,7 +929,7 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
original_url.host(), /*is_top_level_nav=*/false)) {
|
||||
RecordHSTSPreconnectUpgradeReason(
|
||||
HSTSRedirectUpgradeReason::kNotUpgradedNoHSTSPin);
|
||||
@@ -3167,7 +3175,8 @@ void NetworkContext::OnVerifyCertComplete(uint64_t cert_verify_id, int result) {
|
||||
@@ -3167,7 +3177,8 @@ void NetworkContext::OnVerifyCertComplete(uint64_t cert_verify_id, int result) {
|
||||
url_request_context_->transport_security_state()->CheckPublicKeyPins(
|
||||
pending_cert_verify->host_port.host(),
|
||||
pending_cert_verify->result->is_issued_by_known_root,
|
||||
@@ -909,7 +942,14 @@ diff --git a/services/network/network_context.cc b/services/network/network_cont
|
||||
diff --git a/services/network/network_context.h b/services/network/network_context.h
|
||||
--- a/services/network/network_context.h
|
||||
+++ b/services/network/network_context.h
|
||||
@@ -414,19 +414,22 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||
@@ -408,25 +408,29 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||
mojo::PendingReceiver<mojom::HostResolver> receiver) override;
|
||||
void VerifyCert(const scoped_refptr<net::X509Certificate>& certificate,
|
||||
const net::HostPortPair& host_port,
|
||||
+ const net::NetworkAnonymizationKey& network_anonymization_key,
|
||||
const std::string& ocsp_result,
|
||||
const std::string& sct_list,
|
||||
VerifyCertCallback callback) override;
|
||||
void VerifyCertForSignedExchange(
|
||||
const scoped_refptr<net::X509Certificate>& certificate,
|
||||
const net::HostPortPair& host_port,
|
||||
@@ -935,7 +975,7 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
|
||||
const std::string& host,
|
||||
DeleteDynamicDataForHostCallback callback) override;
|
||||
void SetCorsOriginAccessListsForOrigin(
|
||||
@@ -769,7 +772,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||
@@ -769,7 +773,8 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||
mojo::PendingRemote<mojom::CookieAccessObserver> cookie_observer,
|
||||
net::FirstPartySetMetadata first_party_set_metadata);
|
||||
|
||||
@@ -945,7 +985,15 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
|
||||
|
||||
#if BUILDFLAG(IS_P2P_ENABLED)
|
||||
void DestroySocketManager(P2PSocketManager* socket_manager);
|
||||
@@ -975,6 +979,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||
@@ -781,6 +786,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||
void VerifyCertInternal(
|
||||
const scoped_refptr<net::X509Certificate>& certificate,
|
||||
const net::HostPortPair& host_port,
|
||||
+ const net::NetworkAnonymizationKey& network_anonymization_key,
|
||||
const std::string& ocsp_result,
|
||||
const std::string& sct_list,
|
||||
CTVerificationMode ct_verification_mode,
|
||||
@@ -975,6 +981,7 @@ class COMPONENT_EXPORT(NETWORK_SERVICE) NetworkContext
|
||||
VerifyCertCallback callback;
|
||||
scoped_refptr<net::X509Certificate> certificate;
|
||||
net::HostPortPair host_port;
|
||||
@@ -956,7 +1004,15 @@ diff --git a/services/network/network_context.h b/services/network/network_conte
|
||||
diff --git a/services/network/public/mojom/network_context.mojom b/services/network/public/mojom/network_context.mojom
|
||||
--- a/services/network/public/mojom/network_context.mojom
|
||||
+++ b/services/network/public/mojom/network_context.mojom
|
||||
@@ -1530,24 +1530,25 @@ interface NetworkContext {
|
||||
@@ -1522,6 +1522,7 @@ interface NetworkContext {
|
||||
// Checks the given certificate against the CertVerifier and CTVerifier.
|
||||
VerifyCert(X509Certificate certificate,
|
||||
HostPortPair host_port,
|
||||
+ NetworkAnonymizationKey network_anonymization_key,
|
||||
string ocsp_response,
|
||||
string sct_list)
|
||||
=> (int32 error_code, CertVerifyResult cv_result, bool pkp_bypassed);
|
||||
@@ -1530,24 +1531,25 @@ interface NetworkContext {
|
||||
// This implementation is specific for use by Signed Exchange.
|
||||
VerifyCertForSignedExchange(X509Certificate certificate,
|
||||
HostPortPair host_port,
|
||||
@@ -985,7 +1041,7 @@ diff --git a/services/network/public/mojom/network_context.mojom b/services/netw
|
||||
|
||||
// Sets allowed and blocked origins respectively for the URLLoaderFactory
|
||||
// consumers to access beyond the same-origin policy. The list is managed per
|
||||
@@ -1566,7 +1567,7 @@ interface NetworkContext {
|
||||
@@ -1566,7 +1568,7 @@ interface NetworkContext {
|
||||
// Deletes any dynamic data stored for |host| from the transport
|
||||
// security state. Returns true iff an entry was deleted.
|
||||
// See net::TransportSecurityState::DeleteDynamicDataForHost for more detail.
|
||||
|
||||
@@ -108,9 +108,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
third_party/android_deps/BUILD.gn | 704 +-----------------
|
||||
.../preconditions/javatests/BUILD.gn | 1 -
|
||||
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
|
||||
third_party/androidx/customizations.gni | 13 +-
|
||||
third_party/androidx/customizations.gni | 14 +-
|
||||
third_party/cardboard/BUILD.gn | 4 -
|
||||
86 files changed, 126 insertions(+), 2291 deletions(-)
|
||||
86 files changed, 127 insertions(+), 2291 deletions(-)
|
||||
create mode 100644 components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java
|
||||
|
||||
diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
|
||||
@@ -4579,12 +4579,13 @@ diff --git a/third_party/androidx/customizations.gni b/third_party/androidx/cust
|
||||
_androidx_prebuilt(target_name) {
|
||||
forward_variables_from(invoker, "*")
|
||||
target_type = "android_aar_prebuilt"
|
||||
@@ -172,6 +172,17 @@ template("androidx_android_aar_prebuilt") {
|
||||
@@ -172,6 +172,18 @@ template("androidx_android_aar_prebuilt") {
|
||||
}
|
||||
}
|
||||
|
||||
+template("androidx_android_aar_prebuilt") {
|
||||
+ if (target_name == "androidx_credentials_credentials_play_services_auth_java") {
|
||||
+ if (target_name == "androidx_credentials_credentials_play_services_auth_java"
|
||||
+ || target_name == "androidx_credentials_registry_registry_provider_play_services_java") {
|
||||
+ forward_variables_from(invoker, "*")
|
||||
+ not_needed(["deps", "aar_path", "info_path", "enable_bytecode_checks"])
|
||||
+ } else {
|
||||
|
||||
@@ -4,7 +4,7 @@ Subject: Remove support for device memory and cpu recovery
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
.../v8_memory/web_memory_impl.cc | 8 ++++++++
|
||||
.../v8_memory/web_memory_impl.cc | 6 ++++++
|
||||
...ort-for-device-memory-and-cpu-recovery.inc | 3 +++
|
||||
...ort-for-device-memory-and-cpu-recovery.inc | 2 ++
|
||||
.../browser/blob/blob_memory_controller.cc | 20 ++++++++++---------
|
||||
@@ -14,7 +14,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
.../measure_memory_controller.cc | 5 +++++
|
||||
.../blink/renderer/core/timing/memory_info.cc | 14 ++++++++++---
|
||||
.../core/timing/window_performance.cc | 2 +-
|
||||
10 files changed, 68 insertions(+), 18 deletions(-)
|
||||
10 files changed, 66 insertions(+), 18 deletions(-)
|
||||
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Remove-support-for-device-memory-and-cpu-recovery.inc
|
||||
create mode 100644 cromite_flags/third_party/blink/common/features_h/Remove-support-for-device-memory-and-cpu-recovery.inc
|
||||
|
||||
@@ -29,15 +29,13 @@ diff --git a/components/performance_manager/v8_memory/web_memory_impl.cc b/compo
|
||||
|
||||
namespace performance_manager {
|
||||
|
||||
@@ -111,6 +112,13 @@ WebMeasureMemorySecurityChecker::Create() {
|
||||
@@ -111,6 +112,11 @@ WebMeasureMemorySecurityChecker::Create() {
|
||||
|
||||
bool WebMeasureMemorySecurityCheckerImpl::IsMeasureMemoryAllowed(
|
||||
const FrameNode* frame) const {
|
||||
+ if (!base::FeatureList::IsEnabled(
|
||||
+ blink::features::kWebMeasureMemoryViaPerformanceManager)) {
|
||||
+ std::move(bad_message_callback)
|
||||
+ .Run("WebMeasureMemoryViaPerformanceManager feature is disabled");
|
||||
+ return;
|
||||
+ return false;
|
||||
+ }
|
||||
+
|
||||
// TODO(crbug.com/40132061): The frame may have navigated since it sent the
|
||||
|
||||
@@ -11,8 +11,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../SearchActivityLocationBarLayout.java | 8 ---
|
||||
.../tabbed_mode/TabbedRootUiCoordinator.java | 2 +-
|
||||
.../browser/toolbar/ToolbarManager.java | 5 --
|
||||
.../ui/AdaptiveToolbarUiCoordinator.java | 41 ------------
|
||||
.../chrome/browser/ui/RootUiCoordinator.java | 19 ------
|
||||
.../ui/AdaptiveToolbarUiCoordinator.java | 48 --------------
|
||||
.../chrome/browser/ui/RootUiCoordinator.java | 18 -----
|
||||
chrome/browser/ui/android/omnibox/BUILD.gn | 1 -
|
||||
.../chrome/browser/omnibox/LocationBar.java | 6 --
|
||||
.../omnibox/LocationBarCoordinator.java | 13 ----
|
||||
@@ -24,7 +24,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../suggestions/AutocompleteMediator.java | 8 ---
|
||||
.../omnibox/voice/VoiceRecognitionUtil.java | 1 +
|
||||
chrome/browser/ui/android/toolbar/BUILD.gn | 1 -
|
||||
20 files changed, 9 insertions(+), 253 deletions(-)
|
||||
20 files changed, 9 insertions(+), 259 deletions(-)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/BaseCustomTabRootUiCoordinator.java
|
||||
@@ -228,7 +228,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveToolbarUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveToolbarUiCoordinator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveToolbarUiCoordinator.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveToolbarUiCoordinator.java
|
||||
@@ -40,7 +40,6 @@ import org.chromium.chrome.browser.share.ShareButtonController;
|
||||
@@ -26,8 +26,6 @@ import org.chromium.chrome.browser.dom_distiller.ReaderModeToolbarButtonControll
|
||||
import org.chromium.chrome.browser.flags.ChromeFeatureList;
|
||||
import org.chromium.chrome.browser.identity_disc.IdentityDiscController;
|
||||
import org.chromium.chrome.browser.lifecycle.ActivityLifecycleDispatcher;
|
||||
-import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler;
|
||||
-import org.chromium.chrome.browser.omnibox.voice.VoiceRecognitionHandler.VoiceInteractionSource;
|
||||
import org.chromium.chrome.browser.price_insights.PriceInsightsButtonController;
|
||||
import org.chromium.chrome.browser.price_tracking.CurrentTabPriceTrackingStateSupplier;
|
||||
import org.chromium.chrome.browser.price_tracking.PriceTrackingBottomSheetContentCoordinator;
|
||||
@@ -40,7 +38,6 @@ import org.chromium.chrome.browser.share.ShareButtonController;
|
||||
import org.chromium.chrome.browser.share.ShareDelegate;
|
||||
import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
||||
import org.chromium.chrome.browser.toolbar.ButtonDataProvider;
|
||||
@@ -236,7 +245,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveTool
|
||||
import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveButtonActionMenuCoordinator;
|
||||
import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior;
|
||||
import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarButtonController;
|
||||
@@ -68,7 +67,6 @@ public class AdaptiveToolbarUiCoordinator {
|
||||
@@ -68,7 +65,6 @@ public class AdaptiveToolbarUiCoordinator {
|
||||
private CurrentTabPriceTrackingStateSupplier mCurrentTabPriceTrackingStateSupplier;
|
||||
private ContextualPageActionController mContextualPageActionController;
|
||||
private AdaptiveToolbarButtonController mAdaptiveToolbarButtonController;
|
||||
@@ -244,7 +253,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveTool
|
||||
private BottomSheetController mBottomSheetController;
|
||||
private ObservableSupplier<Profile> mProfileSupplier;
|
||||
private Supplier<ScrimManager> mScrimSupplier;
|
||||
@@ -232,45 +230,6 @@ public class AdaptiveToolbarUiCoordinator {
|
||||
@@ -232,45 +228,6 @@ public class AdaptiveToolbarUiCoordinator {
|
||||
mButtonDataProviders = List.of(identityDiscController, adaptiveToolbarButtonController);
|
||||
}
|
||||
|
||||
@@ -290,6 +299,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/AdaptiveTool
|
||||
/**
|
||||
* Returns the list of {@link ButtonDataProvider}. The order in which the providers determines
|
||||
* which one will be shown first.
|
||||
@@ -279,11 +236,6 @@ public class AdaptiveToolbarUiCoordinator {
|
||||
return mButtonDataProviders;
|
||||
}
|
||||
|
||||
- /** Returns {@link VoiceToolbarButtonController} used for voice search button. */
|
||||
- public VoiceToolbarButtonController getVoiceToolbarButtonController() {
|
||||
- return mVoiceToolbarButtonController;
|
||||
- }
|
||||
-
|
||||
/** Destroy internally used objects. */
|
||||
public void destroy() {
|
||||
if (mCurrentTabPriceTrackingStateSupplier != null) {
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordinator.java
|
||||
@@ -301,15 +322,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
|
||||
import org.chromium.chrome.browser.paint_preview.DemoPaintPreview;
|
||||
import org.chromium.chrome.browser.password_manager.ManagePasswordsReferrer;
|
||||
import org.chromium.chrome.browser.password_manager.PasswordManagerLauncher;
|
||||
@@ -130,7 +129,6 @@ import org.chromium.chrome.browser.tabmodel.TabModelSelector;
|
||||
import org.chromium.chrome.browser.theme.TopUiThemeColorProvider;
|
||||
import org.chromium.chrome.browser.toolbar.ToolbarIntentMetadata;
|
||||
import org.chromium.chrome.browser.toolbar.ToolbarManager;
|
||||
-import org.chromium.chrome.browser.toolbar.adaptive.AdaptiveToolbarBehavior;
|
||||
import org.chromium.chrome.browser.toolbar.top.ToolbarActionModeCallback;
|
||||
import org.chromium.chrome.browser.toolbar.top.ToolbarControlContainer;
|
||||
import org.chromium.chrome.browser.ui.appmenu.AppMenuBlocker;
|
||||
@@ -285,7 +283,6 @@ public class RootUiCoordinator
|
||||
@@ -285,7 +284,6 @@ public class RootUiCoordinator
|
||||
private LayoutManagerImpl mLayoutManager;
|
||||
protected OneshotSupplier<ToolbarIntentMetadata> mIntentMetadataOneshotSupplier;
|
||||
protected OneshotSupplierImpl<Boolean> mPromoShownOneshotSupplier = new OneshotSupplierImpl<>();
|
||||
@@ -317,7 +330,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
|
||||
private MediaCaptureOverlayController mCaptureController;
|
||||
private @Nullable ScrollCaptureManager mScrollCaptureManager;
|
||||
protected final ActivityLifecycleDispatcher mActivityLifecycleDispatcher;
|
||||
@@ -612,9 +609,6 @@ public class RootUiCoordinator
|
||||
@@ -612,9 +610,6 @@ public class RootUiCoordinator
|
||||
}
|
||||
|
||||
if (mToolbarManager != null) {
|
||||
@@ -327,7 +340,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ui/RootUiCoordi
|
||||
mToolbarManager.destroy();
|
||||
mToolbarManager = null;
|
||||
}
|
||||
@@ -1488,23 +1482,10 @@ public class RootUiCoordinator
|
||||
@@ -1488,23 +1483,10 @@ public class RootUiCoordinator
|
||||
if (!mSupportsAppMenuSupplier.getAsBoolean()) {
|
||||
mToolbarManager.getToolbar().disableMenuButton();
|
||||
}
|
||||
|
||||
@@ -6,17 +6,17 @@ restore https://chromium-review.googlesource.com/c/chromium/src/+/5554182
|
||||
|
||||
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
|
||||
---
|
||||
.../chrome/browser/bookmarks/BookmarkToolbar.java | 14 ++++++++++++++
|
||||
.../bookmarks/BookmarkToolbarCoordinator.java | 1 +
|
||||
.../browser/bookmarks/BookmarkToolbarMediator.java | 1 +
|
||||
.../bookmarks/BookmarkToolbarProperties.java | 9 +++++++++
|
||||
.../bookmarks/BookmarkToolbarViewBinder.java | 4 ++++
|
||||
5 files changed, 29 insertions(+)
|
||||
.../chrome/browser/bookmarks/BookmarkToolbar.java | 13 +++++++++++++
|
||||
.../bookmarks/BookmarkToolbarCoordinator.java | 1 +
|
||||
.../browser/bookmarks/BookmarkToolbarMediator.java | 1 +
|
||||
.../bookmarks/BookmarkToolbarProperties.java | 9 +++++++++
|
||||
.../bookmarks/BookmarkToolbarViewBinder.java | 4 ++++
|
||||
5 files changed, 28 insertions(+)
|
||||
|
||||
diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||
--- a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||
+++ b/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkToolbar.java
|
||||
@@ -10,10 +10,13 @@ import android.view.MenuItem;
|
||||
@@ -10,10 +10,12 @@ import android.view.MenuItem;
|
||||
import android.view.View.OnClickListener;
|
||||
|
||||
import androidx.annotation.IdRes;
|
||||
@@ -24,13 +24,12 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener;
|
||||
import androidx.core.view.MenuCompat;
|
||||
|
||||
+import org.chromium.chrome.R;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkUiState.BookmarkUiMode;
|
||||
+import org.chromium.components.bookmarks.BookmarkItem;
|
||||
import org.chromium.components.bookmarks.BookmarkId;
|
||||
import org.chromium.components.browser_ui.util.ToolbarUtils;
|
||||
import org.chromium.components.browser_ui.widget.selectable_list.SelectableListToolbar;
|
||||
@@ -29,8 +32,10 @@ import java.util.function.Function;
|
||||
@@ -29,8 +31,10 @@ import java.util.function.Function;
|
||||
*/
|
||||
public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
implements OnMenuItemClickListener, OnClickListener {
|
||||
@@ -41,7 +40,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
private boolean mEditButtonVisible;
|
||||
private boolean mNewFolderButtonVisible;
|
||||
private boolean mNewFolderButtonEnabled;
|
||||
@@ -58,6 +63,11 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -58,6 +62,11 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
setOnMenuItemClickListener(this);
|
||||
}
|
||||
|
||||
@@ -53,7 +52,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
|
||||
void setSelectionDelegate(SelectionDelegate selectionDelegate) {
|
||||
mSelectionDelegate = selectionDelegate;
|
||||
getMenu().setGroupEnabled(R.id.selection_mode_menu_group, true);
|
||||
@@ -161,6 +171,10 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
@@ -161,6 +170,10 @@ public class BookmarkToolbar extends SelectableListToolbar<BookmarkId>
|
||||
getMenu().findItem(id).setChecked(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,12 +15,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../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 | 9 +-
|
||||
.../feedback/ChromeFeedbackCollector.java | 1 +
|
||||
.../feedback/SimplifiedNtpFeedbackSource.java | 38 ++++
|
||||
.../identity_disc/IdentityDiscController.java | 5 +-
|
||||
.../native_page/NativePageFactory.java | 19 +-
|
||||
.../NativePageNavigationDelegateImpl.java | 2 +-
|
||||
.../chrome/browser/ntp/NewTabPage.java | 8 +-
|
||||
.../chrome/browser/ntp/NewTabPageLayout.java | 25 ++-
|
||||
.../SuggestionsNavigationDelegate.java | 17 ++
|
||||
.../SuggestionsNavigationDelegate.java | 27 ++-
|
||||
.../mostvisited/MostVisitedSitesBridge.java | 2 +-
|
||||
.../tile/MostVisitedTilesCoordinator.java | 7 +-
|
||||
.../tile/MostVisitedTilesGridLayout.java | 193 ++++++++++++++++++
|
||||
@@ -33,7 +37,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
.../Restore-Simplified-NTP-launch.inc | 12 ++
|
||||
.../Restore-Simplified-NTP-launch.inc | 5 +
|
||||
.../Restore-Simplified-NTP-launch.inc | 1 +
|
||||
27 files changed, 399 insertions(+), 31 deletions(-)
|
||||
31 files changed, 437 insertions(+), 42 deletions(-)
|
||||
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
|
||||
@@ -253,6 +257,66 @@ diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res
|
||||
<dimen name="tile_layout_no_logo_top_margin">20dp</dimen>
|
||||
<dimen name="mvt_container_lateral_margin">@dimen/signin_promo_lateral_paddings</dimen>
|
||||
<dimen name="mvt_container_top_padding">17dp</dimen>
|
||||
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
|
||||
@@ -2780,7 +2780,8 @@ public class ChromeTabbedActivity extends ChromeActivity implements MismatchedIn
|
||||
getToolbarManager().getTabStripHeightSupplier(),
|
||||
mModuleRegistrySupplier,
|
||||
mEdgeToEdgeControllerSupplier,
|
||||
- getStartupMetricsTracker());
|
||||
+ getStartupMetricsTracker(),
|
||||
+ 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
|
||||
@@ -15,6 +15,7 @@ import org.chromium.base.supplier.OneshotSupplier;
|
||||
import org.chromium.base.supplier.Supplier;
|
||||
import org.chromium.chrome.browser.app.ChromeActivity;
|
||||
import org.chromium.chrome.browser.app.tab_activity_glue.ActivityTabWebContentsDelegateAndroid;
|
||||
+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;
|
||||
@@ -82,6 +83,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
||||
private final OneshotSupplier<ModuleRegistry> mModuleRegistrySupplier;
|
||||
private final ObservableSupplier<EdgeToEdgeController> mEdgeToEdgeControllerSupplier;
|
||||
private final StartupMetricsTracker mStartupMetricsTracker;
|
||||
+ private final ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
||||
|
||||
private NativePageFactory mNativePageFactory;
|
||||
|
||||
@@ -111,7 +113,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
||||
@NonNull ObservableSupplier<Integer> tabStripHeightSupplier,
|
||||
@NonNull OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
||||
@NonNull ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
||||
- StartupMetricsTracker startupMetricsTracker) {
|
||||
+ StartupMetricsTracker startupMetricsTracker,
|
||||
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
||||
mActivity = activity;
|
||||
mAppBrowserControlsVisibilityDelegate = appBrowserControlsVisibilityDelegate;
|
||||
mShareDelegateSupplier = shareDelegateSupplier;
|
||||
@@ -138,6 +141,7 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
||||
mModuleRegistrySupplier = moduleRegistrySupplier;
|
||||
mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier;
|
||||
mStartupMetricsTracker = startupMetricsTracker;
|
||||
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -204,7 +208,8 @@ public class TabbedModeTabDelegateFactory implements TabDelegateFactory {
|
||||
mTabStripHeightSupplier,
|
||||
mModuleRegistrySupplier,
|
||||
mEdgeToEdgeControllerSupplier,
|
||||
- mStartupMetricsTracker);
|
||||
+ mStartupMetricsTracker,
|
||||
+ 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
|
||||
@@ -322,6 +386,93 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/identity_disc/I
|
||||
}
|
||||
|
||||
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
|
||||
@@ -22,6 +22,7 @@ import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor;
|
||||
import org.chromium.chrome.browser.app.ChromeActivity;
|
||||
import org.chromium.chrome.browser.app.download.home.DownloadPage;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkPage;
|
||||
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
|
||||
import org.chromium.chrome.browser.browser_controls.BrowserControlsMarginSupplier;
|
||||
import org.chromium.chrome.browser.browser_controls.BrowserControlsStateProvider;
|
||||
import org.chromium.chrome.browser.fullscreen.BrowserControlsManager;
|
||||
@@ -78,6 +79,7 @@ public class NativePageFactory {
|
||||
private final OneshotSupplier<ModuleRegistry> mModuleRegistrySupplier;
|
||||
private final ObservableSupplier<EdgeToEdgeController> mEdgeToEdgeControllerSupplier;
|
||||
private final StartupMetricsTracker mStartupMetricsTracker;
|
||||
+ private final ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
||||
private NewTabPageUma mNewTabPageUma;
|
||||
|
||||
private NativePageBuilder mNativePageBuilder;
|
||||
@@ -100,7 +102,8 @@ public class NativePageFactory {
|
||||
@NonNull ObservableSupplier<Integer> tabStripHeightSupplier,
|
||||
@NonNull OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
||||
@NonNull ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
||||
- @NonNull StartupMetricsTracker startupMetricsTracker) {
|
||||
+ @NonNull StartupMetricsTracker startupMetricsTracker,
|
||||
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
||||
mActivity = activity;
|
||||
mBottomSheetController = sheetController;
|
||||
mBrowserControlsManager = browserControlsManager;
|
||||
@@ -118,6 +121,7 @@ public class NativePageFactory {
|
||||
mModuleRegistrySupplier = moduleRegistrySupplier;
|
||||
mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier;
|
||||
mStartupMetricsTracker = startupMetricsTracker;
|
||||
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
||||
}
|
||||
|
||||
private NativePageBuilder getBuilder() {
|
||||
@@ -141,7 +145,8 @@ public class NativePageFactory {
|
||||
mTabStripHeightSupplier,
|
||||
mModuleRegistrySupplier,
|
||||
mEdgeToEdgeControllerSupplier,
|
||||
- mStartupMetricsTracker);
|
||||
+ mStartupMetricsTracker,
|
||||
+ mBookmarkManagerOpenerSupplier);
|
||||
}
|
||||
return mNativePageBuilder;
|
||||
}
|
||||
@@ -174,9 +179,10 @@ public class NativePageFactory {
|
||||
private final OneshotSupplier<ModuleRegistry> mModuleRegistrySupplier;
|
||||
private final ObservableSupplier<EdgeToEdgeController> mEdgeToEdgeControllerSupplier;
|
||||
private final StartupMetricsTracker mStartupMetricsTracker;
|
||||
+ private final ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
||||
|
||||
public NativePageBuilder(
|
||||
- Activity activity,
|
||||
+ ChromeActivity activity,
|
||||
Supplier<NewTabPageUma> uma,
|
||||
BottomSheetController sheetController,
|
||||
BrowserControlsManager browserControlsManager,
|
||||
@@ -193,7 +199,8 @@ public class NativePageFactory {
|
||||
ObservableSupplier<Integer> tabStripHeightSupplier,
|
||||
OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
||||
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
||||
- StartupMetricsTracker startupMetricsTracker) {
|
||||
+ StartupMetricsTracker startupMetricsTracker,
|
||||
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
||||
mActivity = activity;
|
||||
mUma = uma;
|
||||
mBottomSheetController = sheetController;
|
||||
@@ -212,6 +219,7 @@ public class NativePageFactory {
|
||||
mModuleRegistrySupplier = moduleRegistrySupplier;
|
||||
mEdgeToEdgeControllerSupplier = edgeToEdgeControllerSupplier;
|
||||
mStartupMetricsTracker = startupMetricsTracker;
|
||||
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
||||
}
|
||||
|
||||
protected NativePage buildNewTabPage(Tab tab, String url) {
|
||||
@@ -245,7 +253,8 @@ public class NativePageFactory {
|
||||
mTabStripHeightSupplier,
|
||||
mModuleRegistrySupplier,
|
||||
mEdgeToEdgeControllerSupplier,
|
||||
- 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
|
||||
@@ -334,6 +485,38 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
|
||||
|
||||
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
|
||||
@@ -117,6 +117,9 @@ import org.chromium.ui.base.DeviceFormFactor;
|
||||
import org.chromium.ui.base.WindowAndroid;
|
||||
import org.chromium.url.GURL;
|
||||
|
||||
+import androidx.annotation.NonNull;
|
||||
+import org.chromium.chrome.browser.bookmarks.BookmarkManagerOpener;
|
||||
+
|
||||
import java.util.List;
|
||||
|
||||
/** Provides functionality when the user interacts with the NTP. */
|
||||
@@ -475,7 +478,8 @@ public class NewTabPage
|
||||
ObservableSupplier<Integer> tabStripHeightSupplier,
|
||||
OneshotSupplier<ModuleRegistry> moduleRegistrySupplier,
|
||||
ObservableSupplier<EdgeToEdgeController> edgeToEdgeControllerSupplier,
|
||||
- StartupMetricsTracker startupMetricsTracker) {
|
||||
+ StartupMetricsTracker startupMetricsTracker,
|
||||
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
||||
mConstructedTimeNs = System.nanoTime();
|
||||
TraceEvent.begin(TAG);
|
||||
|
||||
@@ -499,7 +503,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/NewTabPageLayout.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageLayout.java
|
||||
@@ -414,24 +597,38 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/NewTabPageL
|
||||
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
|
||||
@@ -22,6 +22,11 @@ import org.chromium.ui.base.PageTransition;
|
||||
@@ -22,16 +22,41 @@ 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.ObservableSupplier;
|
||||
+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. */
|
||||
public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateImpl {
|
||||
|
||||
@@ -34,6 +39,18 @@ public class SuggestionsNavigationDelegate extends NativePageNavigationDelegateI
|
||||
+ private final @NonNull ObservableSupplier<BookmarkManagerOpener> mBookmarkManagerOpenerSupplier;
|
||||
+
|
||||
public SuggestionsNavigationDelegate(
|
||||
Activity activity,
|
||||
Profile profile,
|
||||
NativePageHost host,
|
||||
TabModelSelector tabModelSelector,
|
||||
- Tab tab) {
|
||||
+ Tab tab,
|
||||
+ @NonNull ObservableSupplier<BookmarkManagerOpener> bookmarkManagerOpenerSupplier) {
|
||||
super(activity, profile, host, tabModelSelector, tab);
|
||||
}
|
||||
|
||||
+ mBookmarkManagerOpenerSupplier = bookmarkManagerOpenerSupplier;
|
||||
+ }
|
||||
+
|
||||
+ public void navigateToBookmarks() {
|
||||
+ BookmarkUtils.showBookmarkManager(mActivity, mTab.isIncognito());
|
||||
+ mBookmarkManagerOpenerSupplier.get()
|
||||
+ .showBookmarkManager(mActivity, mTab.getProfile());
|
||||
+ }
|
||||
+
|
||||
+ public void navigateToDownloadManager() {
|
||||
@@ -440,11 +637,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/Sug
|
||||
+ otrProfileID = mProfile.getOtrProfileId();
|
||||
+ }
|
||||
+ DownloadUtils.showDownloadManager(mActivity, mTab, otrProfileID, DownloadOpenSource.NEW_TAB_PAGE);
|
||||
+ }
|
||||
+
|
||||
}
|
||||
|
||||
/**
|
||||
* Opens the suggestions page without recording metrics.
|
||||
*
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesBridge.java
|
||||
|
||||
@@ -7,28 +7,23 @@ Voice button and legacy share/voice functionality is not restored.
|
||||
|
||||
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
|
||||
---
|
||||
.../chrome/browser/settings/MainSettings.java | 15 ++-------------
|
||||
.../segmentation_platform_config.cc | 1 +
|
||||
.../adaptive/AdaptiveToolbarButtonController.java | 2 +-
|
||||
.../toolbar/adaptive/AdaptiveToolbarPrefs.java | 2 +-
|
||||
.../adaptive/AdaptiveToolbarStatePredictor.java | 4 ++++
|
||||
...RadioButtonGroupAdaptiveToolbarPreference.java | 11 ++---------
|
||||
...aptive-button-in-top-toolbar-customization.inc | 1 +
|
||||
7 files changed, 12 insertions(+), 24 deletions(-)
|
||||
.../chrome/browser/settings/MainSettings.java | 9 +--------
|
||||
.../segmentation_platform_config.cc | 1 +
|
||||
.../adaptive/AdaptiveToolbarButtonController.java | 2 +-
|
||||
.../toolbar/adaptive/AdaptiveToolbarPrefs.java | 2 +-
|
||||
.../adaptive/AdaptiveToolbarStatePredictor.java | 4 ++++
|
||||
.../RadioButtonGroupAdaptiveToolbarPreference.java | 11 ++---------
|
||||
...e-adaptive-button-in-top-toolbar-customization.inc | 1 +
|
||||
7 files changed, 11 insertions(+), 19 deletions(-)
|
||||
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Restore-adaptive-button-in-top-toolbar-customization.inc
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSettings.java
|
||||
@@ -288,19 +288,8 @@ public class MainSettings extends ChromeBaseSettingsFragment
|
||||
if (!ChromeFeatureList.sAndroidAppearanceSettings.isEnabled()) {
|
||||
removePreferenceIfPresent(PREF_APPEARANCE);
|
||||
|
||||
- // LINT.IfChange(InitPrefToolbarShortcut)
|
||||
- new AdaptiveToolbarStatePredictor(
|
||||
- getContext(),
|
||||
- getProfile(),
|
||||
- /* androidPermissionDelegate= */ null,
|
||||
@@ -293,14 +293,7 @@ public class MainSettings extends ChromeBaseSettingsFragment
|
||||
getContext(),
|
||||
getProfile(),
|
||||
/* androidPermissionDelegate= */ null,
|
||||
- /* behavior= */ null)
|
||||
- .recomputeUiState(
|
||||
- uiState -> {
|
||||
@@ -37,8 +32,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/MainSe
|
||||
- removePreferenceIfPresent(PREF_TOOLBAR_SHORTCUT);
|
||||
- }
|
||||
- });
|
||||
+
|
||||
+ new AdaptiveToolbarStatePredictor(getContext(), getProfile(), null);
|
||||
+ /* behavior= */ null);
|
||||
// LINT.ThenChange(//chrome/android/java/src/org/chromium/chrome/browser/appearance/settings/AppearanceSettingsFragment.java:InitPrefToolbarShortcut)
|
||||
|
||||
// LINT.IfChange(InitPrefUiTheme)
|
||||
|
||||
@@ -61,7 +61,7 @@ diff --git a/android_webview/browser/aw_content_browser_client.cc b/android_webv
|
||||
|
||||
std::string GetProduct() {
|
||||
- return embedder_support::GetProductAndVersion();
|
||||
+ return embedder_support::GetProductAndVersion(UserAgentReductionEnterprisePolicyState::kForceEnabled);
|
||||
+ return embedder_support::GetProductAndVersion(embedder_support::UserAgentReductionEnterprisePolicyState::kForceEnabled);
|
||||
}
|
||||
|
||||
std::string GetUserAgent() {
|
||||
@@ -751,7 +751,7 @@ diff --git a/chrome/browser/android/content/content_utils.cc b/chrome/browser/an
|
||||
blink::UserAgentOverride spoofed_ua;
|
||||
spoofed_ua.ua_string_override = content::BuildUserAgentFromOSAndProduct(
|
||||
- kLinuxInfoStr, embedder_support::GetProductAndVersion());
|
||||
+ kLinuxInfoStr, embedder_support::GetProductAndVersion(UserAgentReductionEnterprisePolicyState::kForceEnabled));
|
||||
+ kLinuxInfoStr, embedder_support::GetProductAndVersion(embedder_support::UserAgentReductionEnterprisePolicyState::kForceEnabled));
|
||||
spoofed_ua.ua_metadata_override = metadata;
|
||||
spoofed_ua.ua_metadata_override->platform = "Linux";
|
||||
spoofed_ua.ua_metadata_override->platform_version =
|
||||
|
||||
@@ -6,9 +6,9 @@ Allows log activation without opening the console window.
|
||||
Log rotation enabled by default.
|
||||
---
|
||||
chrome/common/logging_chrome.cc | 11 ++++++++---
|
||||
chrome/common/logging_chrome.h | 5 ++++-
|
||||
chrome/common/logging_chrome.h | 6 +++++-
|
||||
content/app/content_main.cc | 9 ++++++---
|
||||
3 files changed, 18 insertions(+), 7 deletions(-)
|
||||
3 files changed, 19 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/chrome/common/logging_chrome.cc b/chrome/common/logging_chrome.cc
|
||||
--- a/chrome/common/logging_chrome.cc
|
||||
@@ -63,7 +63,7 @@ diff --git a/chrome/common/logging_chrome.cc b/chrome/common/logging_chrome.cc
|
||||
diff --git a/chrome/common/logging_chrome.h b/chrome/common/logging_chrome.h
|
||||
--- a/chrome/common/logging_chrome.h
|
||||
+++ b/chrome/common/logging_chrome.h
|
||||
@@ -34,9 +34,12 @@ LoggingDestination DetermineLoggingDestination(
|
||||
@@ -34,10 +34,14 @@ LoggingDestination DetermineLoggingDestination(
|
||||
// write new logs to the latest log file. Otherwise, we reuse the existing file
|
||||
// if exists.
|
||||
base::FilePath SetUpLogFile(const base::FilePath& target_path, bool new_log);
|
||||
@@ -74,9 +74,11 @@ diff --git a/chrome/common/logging_chrome.h b/chrome/common/logging_chrome.h
|
||||
bool RotateLogFile(const base::FilePath& target_path);
|
||||
+#endif
|
||||
|
||||
+#if BUILDFLAG(IS_CHROMEOS)
|
||||
#if defined(UNIT_TEST)
|
||||
// Expose the following methods only for tests.
|
||||
@@ -67,7 +70,7 @@ base::FilePath GetLogFileName(const base::CommandLine& command_line);
|
||||
|
||||
@@ -67,7 +71,7 @@ base::FilePath GetLogFileName(const base::CommandLine& command_line);
|
||||
// otherwise.
|
||||
bool DialogsAreSuppressed();
|
||||
|
||||
|
||||
@@ -514,7 +514,7 @@ new file mode 100755
|
||||
+#include "chrome/browser/browser_process.h"
|
||||
+#include "chrome/browser/about_flags.h"
|
||||
+#include "chrome/browser/flags/jni_headers/CromiteNativeUtils_jni.h"
|
||||
+#include "components/flags_ui/pref_service_flags_storage.h"
|
||||
+#include "components/webui/flags/pref_service_flags_storage.h"
|
||||
+
|
||||
+#include "base/android/jni_string.h"
|
||||
+
|
||||
|
||||
Reference in New Issue
Block a user