Release 88.0.4324.187
This commit is contained in:
parent
9fcce580ab
commit
d70bd10285
18 changed files with 598 additions and 138 deletions
10
CHANGELOG.md
10
CHANGELOG.md
|
@ -1,15 +1,21 @@
|
|||
# 88.0.4324.187
|
||||
* fix exit menu item not working in tablet mode
|
||||
* add menu item to bookmark all tabs (fixes https://github.com/bromite/bromite/issues/570)
|
||||
* enable app overflow menu icons by default
|
||||
* UI for adblock filters (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/811)
|
||||
* dropped patch to not permit user-installed certificates
|
||||
* ignore enterprise policies for secure DNS (fixes https://github.com/bromite/bromite/issues/832)
|
||||
|
||||
# 88.0.4324.185
|
||||
* fix favicons fallback search (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/788)
|
||||
* fix potential DIAL crash when network state changes (thanks to @Ahrotahn)
|
||||
* fix crash when opening links in incognito-only mode (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/899)
|
||||
* disallow empty custom user agent (thanks to @uazo)
|
||||
* dropped patch to not permit user-installed certificates
|
||||
|
||||
# 88.0.4324.149
|
||||
* fix proxy PAC URL option not working (fixes https://github.com/bromite/bromite/issues/908)
|
||||
* store proxy configuration in LocalState instead of Profile (thanks to @uazo)
|
||||
* fix toggle for reversing the meaning of bypass rules (thanks to @uazo, fixes https://github.com/bromite/bromite/issues/884)
|
||||
* ignore managed state and policies for secure DNS (fixes https://github.com/bromite/bromite/issues/832)
|
||||
* do not permit user-installed certificates
|
||||
|
||||
# 88.0.4324.141
|
||||
|
|
|
@ -1 +1 @@
|
|||
88.0.4324.185
|
||||
88.0.4324.187
|
||||
|
|
|
@ -154,7 +154,8 @@ Enable-network-isolation-features.patch
|
|||
Disable-unified-autoplay-feature.patch
|
||||
Revert-flags-remove-num-raster-threads.patch
|
||||
webview-Hard-no-to-persistent-histograms.patch
|
||||
Ignore-managed-state-and-policies-for-secure-DNS.patch
|
||||
Do-not-permit-user-installed-certificates.patch
|
||||
Ignore-enterprise-policies-for-secure-DNS.patch
|
||||
Fix-favicons-fallback-search.patch
|
||||
Enable-app-overflow-menu-icons-by-default.patch
|
||||
Add-menu-item-to-bookmark-all-tabs.patch
|
||||
Automated-domain-substitution.patch
|
||||
|
|
|
@ -141,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
|||
import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
|
||||
import org.chromium.chrome.browser.IntentHandler.TabOpenType;
|
||||
import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
|
||||
@@ -1601,8 +1602,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
@@ -1602,8 +1603,9 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
Bundle savedInstanceState = getSavedInstanceState();
|
||||
|
||||
// We determine the model as soon as possible so every systems get initialized coherently.
|
||||
|
|
|
@ -6,10 +6,11 @@ Corrected Exit functionality
|
|||
---
|
||||
chrome/android/java/res/menu/main_menu.xml | 4 ++++
|
||||
chrome/android/java/res/menu/main_menu_regroup.xml | 3 +++
|
||||
.../org/chromium/chrome/browser/ChromeTabbedActivity.java | 3 +++
|
||||
.../src/org/chromium/chrome/browser/app/ChromeActivity.java | 6 ++++++
|
||||
.../chrome/browser/init/ChromeLifetimeController.java | 6 +++++-
|
||||
.../browser/ui/android/strings/android_chrome_strings.grd | 3 +++
|
||||
5 files changed, 21 insertions(+), 1 deletion(-)
|
||||
6 files changed, 24 insertions(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
|
@ -45,6 +46,26 @@ diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android
|
|||
</group>
|
||||
|
||||
<!-- Items shown only in the tab switcher -->
|
||||
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
|
||||
@@ -53,6 +53,7 @@ import org.chromium.chrome.browser.IntentHandler.IntentHandlerDelegate;
|
||||
import org.chromium.chrome.browser.IntentHandler.TabOpenType;
|
||||
import org.chromium.chrome.browser.accessibility_tab_switcher.OverviewListLayout;
|
||||
import org.chromium.chrome.browser.app.ChromeActivity;
|
||||
+import org.chromium.chrome.browser.ApplicationLifetime;
|
||||
import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
|
||||
import org.chromium.chrome.browser.app.tabmodel.ChromeNextTabPolicySupplier;
|
||||
import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
|
||||
@@ -1785,6 +1786,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
} else if (id == R.id.close_tab) {
|
||||
getCurrentTabModel().closeTab(currentTab, true, false, true);
|
||||
RecordUserAction.record("MobileTabClosed");
|
||||
+ } else if (id == R.id.exit_id) {
|
||||
+ ApplicationLifetime.terminate(false);
|
||||
} else if (id == R.id.close_all_tabs_menu_id) {
|
||||
// Close both incognito and normal tabs
|
||||
getTabModelSelector().closeAllTabs();
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
|
|
|
@ -28,9 +28,9 @@ diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descripti
|
|||
const char kEnableAudioFocusEnforcementDescription[] =
|
||||
"Enables enforcement of a single media session having audio focus at "
|
||||
"any one time. Requires #enable-media-session-service to be enabled too.";
|
||||
+const char kDisableWebGLName[] = "Disable all versions of WebGL";
|
||||
+const char kDisableWebGLName[] = "WebGL";
|
||||
+
|
||||
+const char kDisableWebGLDescription[] = "Disable all versions of WebGL";
|
||||
+const char kDisableWebGLDescription[] = "Enable or disable all versions of WebGL";
|
||||
+
|
||||
|
||||
const char kEnableAutofillAccountWalletStorageName[] =
|
||||
|
|
|
@ -163,7 +163,7 @@ diff --git a/chrome/browser/prefs/browser_prefs.cc b/chrome/browser/prefs/browse
|
|||
#include "chrome/browser/android/bookmarks/partner_bookmarks_shim.h"
|
||||
#include "chrome/browser/android/explore_sites/history_statistics_reporter.h"
|
||||
#include "chrome/browser/android/ntp/recent_tabs_page_prefs.h"
|
||||
@@ -907,6 +909,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
|
||||
@@ -908,6 +910,7 @@ void RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry,
|
||||
variations::VariationsService::RegisterProfilePrefs(registry);
|
||||
video_tutorials::RegisterPrefs(registry);
|
||||
feed::prefs::RegisterFeedSharedProfilePrefs(registry);
|
||||
|
@ -190,7 +190,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
||||
--- a/chrome/common/pref_names.cc
|
||||
+++ b/chrome/common/pref_names.cc
|
||||
@@ -3119,4 +3119,9 @@ const char kSecurityTokenSessionNotificationSeconds[] =
|
||||
@@ -3116,4 +3116,9 @@ const char kSecurityTokenSessionNotificationSeconds[] =
|
||||
"security_token_session_notification_seconds";
|
||||
#endif // defined(OS_CHROMEOS)
|
||||
|
||||
|
@ -203,7 +203,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
|||
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
||||
--- a/chrome/common/pref_names.h
|
||||
+++ b/chrome/common/pref_names.h
|
||||
@@ -1093,6 +1093,10 @@ extern const char kSecurityTokenSessionBehavior[];
|
||||
@@ -1092,6 +1092,10 @@ extern const char kSecurityTokenSessionBehavior[];
|
||||
extern const char kSecurityTokenSessionNotificationSeconds[];
|
||||
#endif
|
||||
|
||||
|
|
483
build/patches/Add-menu-item-to-bookmark-all-tabs.patch
Normal file
483
build/patches/Add-menu-item-to-bookmark-all-tabs.patch
Normal file
|
@ -0,0 +1,483 @@
|
|||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 18 Feb 2021 21:22:52 +0100
|
||||
Subject: Add menu item to bookmark all tabs
|
||||
|
||||
---
|
||||
chrome/android/java/res/menu/main_menu.xml | 6 ++
|
||||
.../java/res/menu/main_menu_regroup.xml | 3 +
|
||||
.../chrome/browser/ChromeTabbedActivity.java | 23 +++++++
|
||||
.../browser/bookmarks/BookmarkBridge.java | 62 +++++++++++++++++++
|
||||
.../browser/bookmarks/BookmarkUtils.java | 4 ++
|
||||
.../android/bookmarks/bookmark_bridge.cc | 17 +++++
|
||||
.../android/bookmarks/bookmark_bridge.h | 4 ++
|
||||
.../bookmarks/chrome_bookmark_client.cc | 2 +
|
||||
.../strings/android_chrome_strings.grd | 3 +
|
||||
components/bookmark_bar_strings.grdp | 6 ++
|
||||
.../browser/bookmark_load_details.cc | 4 ++
|
||||
.../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 | 13 ++++
|
||||
components/bookmarks/browser/bookmark_node.h | 5 ++
|
||||
16 files changed, 163 insertions(+), 1 deletion(-)
|
||||
|
||||
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
|
||||
+++ b/chrome/android/java/res/menu/main_menu.xml
|
||||
@@ -119,6 +119,9 @@
|
||||
android:icon="@drawable/vr_headset" />
|
||||
<item android:id="@+id/managed_by_menu_id"
|
||||
android:title="@string/managed" />
|
||||
+ <item android:id="@+id/bookmark_all_tabs_menu_id"
|
||||
+ android:title="@string/menu_bookmark_all_tabs"
|
||||
+ android:icon="@drawable/ic_folder_blue_24dp" />
|
||||
<item android:id="@+id/exit_id"
|
||||
android:title="@string/menu_exit" />
|
||||
</group>
|
||||
@@ -155,6 +158,9 @@
|
||||
<item android:id="@id/preferences_id"
|
||||
android:title="@string/menu_settings"
|
||||
android:icon="@drawable/settings_cog" />
|
||||
+ <item android:id="@+id/bookmark_all_tabs_menu_id"
|
||||
+ android:title="@string/menu_bookmark_all_tabs"
|
||||
+ android:icon="@drawable/ic_folder_blue_24dp" />
|
||||
<item android:id="@+id/exit_id"
|
||||
android:title="@string/menu_exit" />
|
||||
</group>
|
||||
diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android/java/res/menu/main_menu_regroup.xml
|
||||
--- a/chrome/android/java/res/menu/main_menu_regroup.xml
|
||||
+++ b/chrome/android/java/res/menu/main_menu_regroup.xml
|
||||
@@ -184,6 +184,9 @@
|
||||
android:icon="@drawable/vr_headset" />
|
||||
<item android:id="@+id/managed_by_menu_id"
|
||||
android:title="@string/managed" />
|
||||
+ <item android:id="@+id/bookmark_all_tabs_menu_id"
|
||||
+ android:title="@string/menu_bookmark_all_tabs"
|
||||
+ android:icon="@drawable/ic_folder_blue_24dp" />
|
||||
<item android:id="@+id/exit_id"
|
||||
android:title="@string/menu_exit"
|
||||
android:icon="@drawable/ic_exit_to_app_white_24dp"/>
|
||||
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
|
||||
@@ -58,6 +58,8 @@ import org.chromium.chrome.browser.ApplicationLifetime;
|
||||
import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
|
||||
import org.chromium.chrome.browser.app.tabmodel.ChromeNextTabPolicySupplier;
|
||||
import org.chromium.chrome.browser.app.tabmodel.TabWindowManagerSingleton;
|
||||
+import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
|
||||
+import org.chromium.chrome.browser.bookmarks.BookmarkModel;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkUtils;
|
||||
import org.chromium.chrome.browser.compositor.CompositorViewHolder;
|
||||
import org.chromium.chrome.browser.compositor.bottombar.ephemeraltab.EphemeralTabCoordinator;
|
||||
@@ -1796,6 +1798,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
// Close both incognito and normal tabs
|
||||
getTabModelSelector().closeAllTabs();
|
||||
RecordUserAction.record("MobileMenuCloseAllTabs");
|
||||
+ } else if (id == R.id.bookmark_all_tabs_menu_id) {
|
||||
+ bookmarkAllTabs();
|
||||
} else if (id == R.id.close_all_incognito_tabs_menu_id) {
|
||||
// Close only incognito tabs
|
||||
getTabModelSelector().getModel(true).closeAllTabs();
|
||||
@@ -1832,6 +1836,25 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
mTabModalHandler.onOmniboxFocusChanged(hasFocus);
|
||||
}
|
||||
|
||||
+ private void bookmarkAllTabs() {
|
||||
+ TabModel tabModel = getTabModelSelector().getCurrentModel();
|
||||
+ int count = tabModel.getCount();
|
||||
+ Log.i(TAG, "bookmarkAllTabs(): %d tabs to bookmark", count);
|
||||
+ if (count == 0) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ final BookmarkBridge bridge = mBookmarkBridgeSupplier.get();
|
||||
+ for (int i = 0; i < tabModel.getCount(); i++) {
|
||||
+ Tab tab = tabModel.getTabAt(i);
|
||||
+ if (tab.isNativePage()) {
|
||||
+ continue;
|
||||
+ }
|
||||
+ bridge.addToTabsCollection(this, tab);
|
||||
+ }
|
||||
+ bridge.finishedAddingToTabsCollection(this, getSnackbarManager());
|
||||
+ }
|
||||
+
|
||||
private void recordLauncherShortcutAction(boolean isIncognito) {
|
||||
if (isIncognito) {
|
||||
RecordUserAction.record("Android.LauncherShortcut.NewIncognitoTab");
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkBridge.java
|
||||
@@ -4,6 +4,7 @@
|
||||
|
||||
package org.chromium.chrome.browser.bookmarks;
|
||||
|
||||
+import android.app.Activity;
|
||||
import android.content.Intent;
|
||||
import android.content.Context;
|
||||
import android.content.pm.PackageManager;
|
||||
@@ -18,6 +19,7 @@ import androidx.annotation.Nullable;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
import org.chromium.base.ContextUtils;
|
||||
+import org.chromium.base.Log;
|
||||
import org.chromium.base.ObserverList;
|
||||
import org.chromium.base.ThreadUtils;
|
||||
import org.chromium.base.annotations.CalledByNative;
|
||||
@@ -26,6 +28,10 @@ import org.chromium.base.metrics.RecordHistogram;
|
||||
import org.chromium.chrome.browser.partnerbookmarks.PartnerBookmarksShim;
|
||||
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.BookmarkType;
|
||||
import org.chromium.components.url_formatter.SchemeDisplay;
|
||||
@@ -45,6 +51,7 @@ import java.util.List;
|
||||
* bookmark model stored in native.
|
||||
*/
|
||||
public class BookmarkBridge {
|
||||
+ private static final String TAG = "BookmarkBridge";
|
||||
private final Profile mProfile;
|
||||
private boolean mIsDoingExtensiveChanges;
|
||||
private long mNativeBookmarkBridge;
|
||||
@@ -526,6 +533,16 @@ public class BookmarkBridge {
|
||||
mNativeBookmarkBridge, BookmarkBridge.this);
|
||||
}
|
||||
|
||||
+ /**
|
||||
+ * @return The BookmarkId for the Tabs collecction folder node
|
||||
+ */
|
||||
+ public BookmarkId getTabsCollectionFolderId() {
|
||||
+ ThreadUtils.assertOnUiThread();
|
||||
+ assert mIsNativeBookmarkModelLoaded;
|
||||
+ return BookmarkBridgeJni.get().getTabsCollectionFolderId(
|
||||
+ mNativeBookmarkBridge, BookmarkBridge.this);
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* @return Id representing the special "other" folder from bookmark model.
|
||||
*/
|
||||
@@ -895,6 +912,50 @@ public class BookmarkBridge {
|
||||
mNativeBookmarkBridge, BookmarkBridge.this, title, url);
|
||||
}
|
||||
|
||||
+ // Used to bookmark all tabs in a specific folder, created if not existing
|
||||
+ public BookmarkId addToTabsCollection(Context context, Tab tab) {
|
||||
+ BookmarkId parent = getMobileFolderId();
|
||||
+ long existingId = getUserBookmarkIdForTab(tab);
|
||||
+ if (existingId != BookmarkId.INVALID_ID) {
|
||||
+ BookmarkId existingBookmarkId = new BookmarkId(existingId, BookmarkType.NORMAL);
|
||||
+ BookmarkItem existingBookmark = getBookmarkById(existingBookmarkId);
|
||||
+ if (parent.equals(existingBookmark.getParentId())) {
|
||||
+ // bookmark already exists in the tabs collection folder
|
||||
+ return existingBookmarkId;
|
||||
+ }
|
||||
+ }
|
||||
+ BookmarkId bookmarkId =
|
||||
+ addBookmark(parent, getChildCount(parent), tab.getTitle(), tab.getUrl().getSpec());
|
||||
+
|
||||
+ if (bookmarkId == null) {
|
||||
+ Log.e(TAG,
|
||||
+ "Failed to add bookmarks: parentTypeAndId %s", parent);
|
||||
+ }
|
||||
+ return bookmarkId;
|
||||
+ }
|
||||
+
|
||||
+ public void finishedAddingToTabsCollection(Activity activity, SnackbarManager snackbarManager) {
|
||||
+ BookmarkId parent = getMobileFolderId();
|
||||
+
|
||||
+ 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));
|
||||
+// snackbar.setSingleLine(false).setAction(activity.getString(R.string.bookmark_item_edit), null);
|
||||
+ snackbarManager.showSnackbar(snackbar);
|
||||
+ }
|
||||
+
|
||||
/**
|
||||
* @param url The URL of the reading list item.
|
||||
* @return The reading list item with the URL, or null if no such reading list item.
|
||||
@@ -1127,6 +1188,7 @@ public class BookmarkBridge {
|
||||
void getAllFoldersWithDepths(long nativeBookmarkBridge, BookmarkBridge caller,
|
||||
List<BookmarkId> folderList, List<Integer> depthList);
|
||||
BookmarkId getRootFolderId(long nativeBookmarkBridge, BookmarkBridge caller);
|
||||
+ BookmarkId getTabsCollectionFolderId(long nativeBookmarkBridge, BookmarkBridge caller);
|
||||
BookmarkId getMobileFolderId(long nativeBookmarkBridge, BookmarkBridge caller);
|
||||
BookmarkId getOtherFolderId(long nativeBookmarkBridge, BookmarkBridge caller);
|
||||
BookmarkId getDesktopFolderId(long nativeBookmarkBridge, BookmarkBridge caller);
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkUtils.java
|
||||
@@ -439,6 +439,7 @@ public class BookmarkUtils {
|
||||
List<BookmarkId> topLevelFolders = new ArrayList<>();
|
||||
BookmarkId desktopNodeId = bookmarkModel.getDesktopFolderId();
|
||||
BookmarkId mobileNodeId = bookmarkModel.getMobileFolderId();
|
||||
+ BookmarkId tabsCollectionNodeId = bookmarkModel.getTabsCollectionFolderId();
|
||||
BookmarkId othersNodeId = bookmarkModel.getOtherFolderId();
|
||||
|
||||
List<BookmarkId> specialFoldersIds =
|
||||
@@ -464,6 +465,9 @@ public class BookmarkUtils {
|
||||
if (bookmarkModel.isFolderVisible(mobileNodeId)) {
|
||||
topLevelFolders.add(mobileNodeId);
|
||||
}
|
||||
+ if (bookmarkModel.isFolderVisible(tabsCollectionNodeId)) {
|
||||
+ topLevelFolders.add(tabsCollectionNodeId);
|
||||
+ }
|
||||
if (bookmarkModel.isFolderVisible(desktopNodeId)) {
|
||||
topLevelFolders.add(desktopNodeId);
|
||||
}
|
||||
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.cc b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
--- a/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.cc
|
||||
@@ -388,6 +388,11 @@ void BookmarkBridge::GetTopLevelFolderIDs(
|
||||
top_level_folders.push_back(node.get());
|
||||
}
|
||||
|
||||
+ for (const auto& node : bookmark_model_->tabs_collection_node()->children()) {
|
||||
+ if (node->is_folder())
|
||||
+ top_level_folders.push_back(node.get());
|
||||
+ }
|
||||
+
|
||||
for (const auto& node : bookmark_model_->bookmark_bar_node()->children()) {
|
||||
if (node->is_folder())
|
||||
top_level_folders.push_back(node.get());
|
||||
@@ -426,6 +431,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
|
||||
// Vector to temporarily contain all child bookmarks at same level for sorting
|
||||
std::vector<const BookmarkNode*> bookmarks = {
|
||||
bookmark_model_->mobile_node(),
|
||||
+ bookmark_model_->tabs_collection_node(),
|
||||
bookmark_model_->bookmark_bar_node(),
|
||||
bookmark_model_->other_node(),
|
||||
};
|
||||
@@ -480,6 +486,17 @@ ScopedJavaLocalRef<jobject> BookmarkBridge::GetMobileFolderId(
|
||||
return folder_id_obj;
|
||||
}
|
||||
|
||||
+ScopedJavaLocalRef<jobject> BookmarkBridge::GetTabsCollectionFolderId(
|
||||
+ JNIEnv* env,
|
||||
+ const JavaParamRef<jobject>& obj) {
|
||||
+ DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
||||
+ const BookmarkNode* tabs_collection_node = bookmark_model_->tabs_collection_node();
|
||||
+ ScopedJavaLocalRef<jobject> folder_id_obj =
|
||||
+ JavaBookmarkIdCreateBookmarkId(
|
||||
+ env, tabs_collection_node->id(), GetBookmarkType(tabs_collection_node));
|
||||
+ return folder_id_obj;
|
||||
+}
|
||||
+
|
||||
ScopedJavaLocalRef<jobject> BookmarkBridge::GetOtherFolderId(
|
||||
JNIEnv* env,
|
||||
const JavaParamRef<jobject>& obj) {
|
||||
diff --git a/chrome/browser/android/bookmarks/bookmark_bridge.h b/chrome/browser/android/bookmarks/bookmark_bridge.h
|
||||
--- a/chrome/browser/android/bookmarks/bookmark_bridge.h
|
||||
+++ b/chrome/browser/android/bookmarks/bookmark_bridge.h
|
||||
@@ -107,6 +107,10 @@ class BookmarkBridge : public bookmarks::BaseBookmarkModelObserver,
|
||||
JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj);
|
||||
|
||||
+ base::android::ScopedJavaLocalRef<jobject> GetTabsCollectionFolderId(
|
||||
+ JNIEnv* env,
|
||||
+ const base::android::JavaParamRef<jobject>& obj);
|
||||
+
|
||||
base::android::ScopedJavaLocalRef<jobject> GetOtherFolderId(
|
||||
JNIEnv* env,
|
||||
const base::android::JavaParamRef<jobject>& obj);
|
||||
diff --git a/chrome/browser/bookmarks/chrome_bookmark_client.cc b/chrome/browser/bookmarks/chrome_bookmark_client.cc
|
||||
--- a/chrome/browser/bookmarks/chrome_bookmark_client.cc
|
||||
+++ b/chrome/browser/bookmarks/chrome_bookmark_client.cc
|
||||
@@ -105,6 +105,8 @@ bool ChromeBookmarkClient::IsPermanentNodeVisibleWhenEmpty(
|
||||
return !is_mobile;
|
||||
case bookmarks::BookmarkNode::MOBILE:
|
||||
return is_mobile;
|
||||
+ case bookmarks::BookmarkNode::TABS_COLLECTION:
|
||||
+ return is_mobile;
|
||||
}
|
||||
|
||||
return false;
|
||||
diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
--- a/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
+++ b/chrome/browser/ui/android/strings/android_chrome_strings.grd
|
||||
@@ -2987,6 +2987,9 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
|
||||
<message name="IDS_MENU_TRACK_PRICES" desc="Menu item for tracking prices on tabs. [CHAR-LIMIT=27]">
|
||||
Track prices
|
||||
</message>
|
||||
+ <message name="IDS_MENU_BOOKMARK_ALL_TABS" desc="Menu item to bookmark all tabs. [CHAR-LIMIT=27]">
|
||||
+ Bookmark all tabs
|
||||
+ </message>
|
||||
<message name="IDS_MENU_GET_IMAGE_DESCRIPTIONS" desc="Menu item to start getting alt text accessibility image labels/descriptions [CHAR-LIMIT=27]">
|
||||
Get image descriptions
|
||||
</message>
|
||||
diff --git a/components/bookmark_bar_strings.grdp b/components/bookmark_bar_strings.grdp
|
||||
--- a/components/bookmark_bar_strings.grdp
|
||||
+++ b/components/bookmark_bar_strings.grdp
|
||||
@@ -20,6 +20,9 @@
|
||||
<message name="IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME" desc="Name shown in the tree for the mobile bookmarks folder">
|
||||
Mobile bookmarks
|
||||
</message>
|
||||
+ <message name="IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME" desc="Name shown in the tree for the tabs collection bookmarks folder">
|
||||
+ Tabs collection
|
||||
+ </message>
|
||||
<message name="IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME" desc="Name shown in the tree for the other bookmarks folder">
|
||||
Other bookmarks
|
||||
</message>
|
||||
@@ -34,6 +37,9 @@
|
||||
<message name="IDS_BOOKMARK_BAR_MOBILE_FOLDER_NAME" desc="In Title Case: Name shown in the tree for the mobile bookmarks folder">
|
||||
Mobile Bookmarks
|
||||
</message>
|
||||
+ <message name="IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME" desc="Name shown in the tree for the tabs collection bookmarks folder">
|
||||
+ Tabs Collection
|
||||
+ </message>
|
||||
<message name="IDS_BOOKMARK_BAR_OTHER_FOLDER_NAME" desc="In Title Case: Name shown in the tree for the other bookmarks folder">
|
||||
Other Bookmarks
|
||||
</message>
|
||||
diff --git a/components/bookmarks/browser/bookmark_load_details.cc b/components/bookmarks/browser/bookmark_load_details.cc
|
||||
--- a/components/bookmarks/browser/bookmark_load_details.cc
|
||||
+++ b/components/bookmarks/browser/bookmark_load_details.cc
|
||||
@@ -34,6 +34,10 @@ BookmarkLoadDetails::BookmarkLoadDetails(BookmarkClient* client)
|
||||
root_node_->Add(BookmarkPermanentNode::CreateMobileBookmarks(
|
||||
max_id_++,
|
||||
client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::MOBILE))));
|
||||
+ tabs_collection_folder_node_ = static_cast<BookmarkPermanentNode*>(
|
||||
+ root_node_->Add(BookmarkPermanentNode::CreateTabsCollectionBookmarks(
|
||||
+ max_id_++,
|
||||
+ client->IsPermanentNodeVisibleWhenEmpty(BookmarkNode::TABS_COLLECTION))));
|
||||
}
|
||||
|
||||
BookmarkLoadDetails::~BookmarkLoadDetails() = default;
|
||||
diff --git a/components/bookmarks/browser/bookmark_load_details.h b/components/bookmarks/browser/bookmark_load_details.h
|
||||
--- a/components/bookmarks/browser/bookmark_load_details.h
|
||||
+++ b/components/bookmarks/browser/bookmark_load_details.h
|
||||
@@ -42,6 +42,7 @@ class BookmarkLoadDetails {
|
||||
BookmarkPermanentNode* bb_node() { return bb_node_; }
|
||||
BookmarkPermanentNode* mobile_folder_node() { return mobile_folder_node_; }
|
||||
BookmarkPermanentNode* other_folder_node() { return other_folder_node_; }
|
||||
+ BookmarkPermanentNode* tabs_collection_folder_node() { return tabs_collection_folder_node_; }
|
||||
|
||||
TitledUrlIndex* index() { return index_.get(); }
|
||||
std::unique_ptr<TitledUrlIndex> owned_index() { return std::move(index_); }
|
||||
@@ -96,6 +97,7 @@ class BookmarkLoadDetails {
|
||||
BookmarkPermanentNode* bb_node_ = nullptr;
|
||||
BookmarkPermanentNode* other_folder_node_ = nullptr;
|
||||
BookmarkPermanentNode* mobile_folder_node_ = nullptr;
|
||||
+ BookmarkPermanentNode* tabs_collection_folder_node_ = nullptr;
|
||||
LoadManagedNodeCallback load_managed_node_callback_;
|
||||
std::unique_ptr<TitledUrlIndex> index_;
|
||||
BookmarkNode::MetaInfoMap model_meta_info_map_;
|
||||
diff --git a/components/bookmarks/browser/bookmark_model.cc b/components/bookmarks/browser/bookmark_model.cc
|
||||
--- a/components/bookmarks/browser/bookmark_model.cc
|
||||
+++ b/components/bookmarks/browser/bookmark_model.cc
|
||||
@@ -559,7 +559,7 @@ bool BookmarkModel::HasBookmarks() {
|
||||
bool BookmarkModel::HasNoUserCreatedBookmarksOrFolders() {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
return bookmark_bar_node_->children().empty() &&
|
||||
- other_node_->children().empty() && mobile_node_->children().empty();
|
||||
+ other_node_->children().empty() && mobile_node_->children().empty() && tabs_collection_node_->children().empty();
|
||||
}
|
||||
|
||||
bool BookmarkModel::IsBookmarked(const GURL& url) {
|
||||
@@ -800,6 +800,7 @@ void BookmarkModel::DoneLoading(std::unique_ptr<BookmarkLoadDetails> details) {
|
||||
bookmark_bar_node_ = details->bb_node();
|
||||
other_node_ = details->other_folder_node();
|
||||
mobile_node_ = details->mobile_folder_node();
|
||||
+ tabs_collection_node_ = details->tabs_collection_folder_node();
|
||||
|
||||
titled_url_index_->SetNodeSorter(
|
||||
std::make_unique<TypedCountSorter>(client_.get()));
|
||||
diff --git a/components/bookmarks/browser/bookmark_model.h b/components/bookmarks/browser/bookmark_model.h
|
||||
--- a/components/bookmarks/browser/bookmark_model.h
|
||||
+++ b/components/bookmarks/browser/bookmark_model.h
|
||||
@@ -116,6 +116,12 @@ class BookmarkModel : public BookmarkUndoProvider,
|
||||
return mobile_node_;
|
||||
}
|
||||
|
||||
+ // Returns the 'mobile' node. This is NULL until loaded.
|
||||
+ const BookmarkNode* tabs_collection_node() const {
|
||||
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
+ return tabs_collection_node_;
|
||||
+ }
|
||||
+
|
||||
bool is_root_node(const BookmarkNode* node) const {
|
||||
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
|
||||
return node == root_;
|
||||
@@ -389,6 +395,7 @@ class BookmarkModel : public BookmarkUndoProvider,
|
||||
BookmarkPermanentNode* bookmark_bar_node_ = nullptr;
|
||||
BookmarkPermanentNode* other_node_ = nullptr;
|
||||
BookmarkPermanentNode* mobile_node_ = nullptr;
|
||||
+ BookmarkPermanentNode* tabs_collection_node_ = nullptr;
|
||||
|
||||
// The maximum ID assigned to the bookmark nodes in the model.
|
||||
int64_t next_node_id_ = 1;
|
||||
diff --git a/components/bookmarks/browser/bookmark_node.cc b/components/bookmarks/browser/bookmark_node.cc
|
||||
--- a/components/bookmarks/browser/bookmark_node.cc
|
||||
+++ b/components/bookmarks/browser/bookmark_node.cc
|
||||
@@ -40,6 +40,8 @@ const char BookmarkNode::kOtherBookmarksNodeGuid[] =
|
||||
"00000000-0000-4000-a000-000000000003";
|
||||
const char BookmarkNode::kMobileBookmarksNodeGuid[] =
|
||||
"00000000-0000-4000-a000-000000000004";
|
||||
+const char BookmarkNode::kTabsCollectionBookmarksNodeGuid[] =
|
||||
+ "00000000-0000-4000-a000-000000000006";
|
||||
const char BookmarkNode::kManagedNodeGuid[] =
|
||||
"00000000-0000-4000-a000-000000000005";
|
||||
|
||||
@@ -198,6 +200,17 @@ BookmarkPermanentNode::CreateMobileBookmarks(int64_t id,
|
||||
visible_when_empty));
|
||||
}
|
||||
|
||||
+// static
|
||||
+std::unique_ptr<BookmarkPermanentNode>
|
||||
+BookmarkPermanentNode::CreateTabsCollectionBookmarks(int64_t id,
|
||||
+ bool visible_when_empty) {
|
||||
+ // base::WrapUnique() used because the constructor is private.
|
||||
+ return base::WrapUnique(new BookmarkPermanentNode(
|
||||
+ id, TABS_COLLECTION, kTabsCollectionBookmarksNodeGuid,
|
||||
+ l10n_util::GetStringUTF16(IDS_BOOKMARK_BAR_TABS_COLLECTION_FOLDER_NAME),
|
||||
+ visible_when_empty));
|
||||
+}
|
||||
+
|
||||
BookmarkPermanentNode::BookmarkPermanentNode(int64_t id,
|
||||
Type type,
|
||||
const std::string& guid,
|
||||
diff --git a/components/bookmarks/browser/bookmark_node.h b/components/bookmarks/browser/bookmark_node.h
|
||||
--- a/components/bookmarks/browser/bookmark_node.h
|
||||
+++ b/components/bookmarks/browser/bookmark_node.h
|
||||
@@ -35,6 +35,7 @@ class BookmarkNode : public ui::TreeNode<BookmarkNode>, public TitledUrlNode {
|
||||
FOLDER,
|
||||
BOOKMARK_BAR,
|
||||
OTHER_NODE,
|
||||
+ TABS_COLLECTION,
|
||||
MOBILE
|
||||
};
|
||||
|
||||
@@ -50,6 +51,7 @@ class BookmarkNode : public ui::TreeNode<BookmarkNode>, public TitledUrlNode {
|
||||
static const char kBookmarkBarNodeGuid[];
|
||||
static const char kOtherBookmarksNodeGuid[];
|
||||
static const char kMobileBookmarksNodeGuid[];
|
||||
+ static const char kTabsCollectionBookmarksNodeGuid[];
|
||||
static const char kManagedNodeGuid[];
|
||||
|
||||
// Creates a new node with |id|, |guid| and |url|.
|
||||
@@ -241,6 +243,9 @@ class BookmarkPermanentNode : public BookmarkNode {
|
||||
static std::unique_ptr<BookmarkPermanentNode> CreateMobileBookmarks(
|
||||
int64_t id,
|
||||
bool visible_when_empty);
|
||||
+ static std::unique_ptr<BookmarkPermanentNode> CreateTabsCollectionBookmarks(
|
||||
+ int64_t id,
|
||||
+ bool visible_when_empty);
|
||||
|
||||
// Constructor is private to disallow the construction of permanent nodes
|
||||
// other than the well-known ones, see factory methods.
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -54,7 +54,7 @@ diff --git a/chrome/android/java/res/menu/main_menu_regroup.xml b/chrome/android
|
|||
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
|
||||
@@ -1811,6 +1811,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
@@ -1814,6 +1814,8 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
NewTabPageUma.recordAction(NewTabPageUma.ACTION_OPENED_DOWNLOADS_MANAGER);
|
||||
}
|
||||
RecordUserAction.record("MobileMenuDownloadManager");
|
||||
|
@ -66,7 +66,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
|
|||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
@@ -2054,6 +2054,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
@@ -2075,6 +2075,8 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
} catch (ActivityNotFoundException e) {
|
||||
Toast.makeText(context, R.string.open_webapk_failed, Toast.LENGTH_SHORT).show();
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/androi
|
|||
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
|
||||
@@ -1077,8 +1077,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
@@ -1078,8 +1078,10 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
boolean hadCipherData =
|
||||
CipherFactory.getInstance().restoreFromBundle(getSavedInstanceState());
|
||||
|
||||
|
|
|
@ -3054,7 +3054,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeStringCon
|
|||
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
|
||||
@@ -192,7 +192,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
@@ -195,7 +195,7 @@ public class ChromeTabbedActivity extends ChromeActivity<ChromeActivityComponent
|
||||
implements ChromeAccessibilityUtil.Observer {
|
||||
private static final String TAG = "ChromeTabbedActivity";
|
||||
|
||||
|
@ -4103,7 +4103,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
</message>
|
||||
<message name="IDS_HID_CHOOSER_PROMPT_EXTENSION_NAME" desc="The label that is used to introduce Human Interface Device (HID) chooser details to the user in a popup when it is from a Chrome extension.">
|
||||
"<ph name="CHROME_EXTENSION_NAME">$1<ex>Chrome Extension Name</ex></ph>" wants to connect to a HID device
|
||||
@@ -10350,7 +10350,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -10386,7 +10386,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
<if expr="is_android">
|
||||
<message name="IDS_SECURITY_KEY_ATTESTATION_INFOBAR_QUESTION" desc="An infobar prompt shown to a user when a website wants to see information that identifies the user's Security Key, such as make and model number. The 'make' of a device is the brand name of the manufacturer, e.g. Yubikey is a make of Security Key. The 'model' of a device is the specific product, e.g. Yubikey Neo is a model of Security Key.">
|
||||
<ph name="URL">
|
||||
|
@ -4112,7 +4112,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
</ph> wants to see the make and model of your Security Key
|
||||
</message>
|
||||
</if>
|
||||
@@ -10525,13 +10525,13 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -10561,13 +10561,13 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
<!-- Web-modal dialog shown during Web Authenticaton API requests. -->
|
||||
<if expr="is_win or is_macosx or desktop_linux or chromeos">
|
||||
<message name="IDS_WEBAUTHN_GENERIC_TITLE" desc="Title of most dialogs shown while the user is authenticating on a web site using a security key.">
|
||||
|
@ -4128,7 +4128,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
</message>
|
||||
<message name="IDS_WEBAUTHN_TRANSPORT_SELECTION_DESCRIPTION" desc="Description in the dialog instructing the user to choose how they want to connect their security key with their computer, e.g. USB or Bluetooth.">
|
||||
Pick an option
|
||||
@@ -10711,7 +10711,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -10747,7 +10747,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
</message>
|
||||
|
||||
<!-- WebAuthn account selection for resident keys -->
|
||||
|
@ -4137,7 +4137,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
Select an account to sign in
|
||||
</message>
|
||||
<message name="IDS_WEBAUTHN_UNKNOWN_ACCOUNT" desc="Label shown to the user on the list of account names if the account stored does not have a name associated to it.">
|
||||
@@ -10724,7 +10724,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -10760,7 +10760,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
Your security key can't be used with this site
|
||||
</message>
|
||||
<message name="IDS_WEBAUTHN_ERROR_MISSING_CAPABILITY_DESC" desc="The description on a dialog informing the user that the security key (an external physical device for user authentication) that they selected does not support some capability that the site requested.">
|
||||
|
@ -4146,7 +4146,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
</message>
|
||||
<message name="IDS_WEBAUTHN_STORAGE_FULL_DESC" desc="The description on a dialog informing the user that the security key (an external physical device for user authentication) that they selected does not have enough storage capacity to create the requested account.">
|
||||
Your security key does not have enough space for any more accounts.
|
||||
@@ -10733,7 +10733,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -10769,7 +10769,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
Allow this site to see your security key?
|
||||
</message>
|
||||
<message name="IDS_WEBAUTHN_REQUEST_ATTESTATION_PERMISSION_DESC" desc="The description on a dialog informing the user that the website wants to see information that identifies the user's Security Key, such as make and model number. The 'make' of a device is the brand name of the manufacturer, e.g. Yubikey is a make of Security Key. The 'model' of a device is the specific product, e.g. Yubikey Neo is a model of Security Key.">
|
||||
|
@ -4155,7 +4155,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
</message>
|
||||
<message name="IDS_WEBAUTHN_ALLOW_ATTESTATION" desc="Label on button to allow a website to see information that identifies the user's Security Key, such as make and model number. The 'make' of a device is the brand name of the manufacturer, e.g. Yubikey is a make of Security Key. The 'model' of a device is the specific product, e.g. Yubikey Neo is a model of Security Key.">
|
||||
Allow
|
||||
@@ -10920,7 +10920,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -10956,7 +10956,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
|
||||
<!-- App uninstall prompt for Google -->
|
||||
<message name="IDS_APP_UNINSTALL_PROMPT_REMOVE_DATA_CHECKBOX_FOR_GOOGLE" desc="Checkbox text to ask the user whether they want to remove associated data at uninstall time for Google hostnames. Only used when uninstalling an app associated with a Google hostname.">
|
||||
|
@ -4164,7 +4164,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
</message>
|
||||
|
||||
<message name="IDS_APP_UNINSTALL_PROMPT_LEARN_MORE" desc="The label that the user can click to learn more about removing associated data at uninstall time.">
|
||||
@@ -11009,7 +11009,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -11045,7 +11045,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
<message name="IDS_MAC_SYSTEM_INFOBAR_LINK_URL_ARM"
|
||||
desc="Mac system-specific infobar link for Arm64-on-Arm64."
|
||||
translateable="false">
|
||||
|
@ -4173,7 +4173,7 @@ diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources
|
|||
</message>
|
||||
<message name="IDS_MAC_SYSTEM_INFOBAR_LINK_TEXT_ROSETTA"
|
||||
desc="Mac system-specific infobar link text for Intel-on-Arm64."
|
||||
@@ -11019,7 +11019,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
@@ -11055,7 +11055,7 @@ Please help our engineers fix this problem. Tell us what happened right before y
|
||||
<message name="IDS_MAC_SYSTEM_INFOBAR_LINK_URL_ROSETTA"
|
||||
desc="Mac system-specific infobar link for Intel-on-Arm64."
|
||||
translateable="false">
|
||||
|
@ -8234,7 +8234,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||
</message>
|
||||
<message name="IDS_PAGE_INFO_CONNECTION_PAINT_PREVIEW" desc="Message to display in the page info bubble when viewing a preview of a page.">
|
||||
You are viewing a preview of this page
|
||||
@@ -3572,7 +3572,7 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
|
||||
@@ -3575,7 +3575,7 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
|
||||
|
||||
<!-- WebUsb Picker UI strings -->
|
||||
<message name="IDS_USB_CHOOSER_DIALOG_PROMPT" desc="The text that is used to introduce the USB chooser dialog to the user.">
|
||||
|
@ -8243,7 +8243,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||
</message>
|
||||
<message name="IDS_USB_CHOOSER_DIALOG_NO_DEVICES_FOUND_PROMPT" desc="The label shown to the user to inform them that no USB devices were found matching the requirements that the application provided.">
|
||||
No compatible devices found
|
||||
@@ -3611,7 +3611,7 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
|
||||
@@ -3614,7 +3614,7 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
|
||||
Running in Chrome
|
||||
</message>
|
||||
<message name="IDS_TWA_RUNNING_IN_CHROME_V2" desc="Updated message on a snackbar indicating that the current Activity may use Chrome data (the rest of the app may not be).">
|
||||
|
@ -8252,7 +8252,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||
</message>
|
||||
<message name="IDS_GOT_IT" desc="Button for the user to accept a disclosure/message">
|
||||
Got it
|
||||
@@ -3866,7 +3866,7 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
|
||||
@@ -3869,7 +3869,7 @@ Data from your Incognito session will only be cleared from Chrome when you <ph n
|
||||
Sending to <ph name="device_name">%1$s<ex>Tanya's Pixel 2</ex></ph>...
|
||||
</message>
|
||||
<message name="IDS_SEND_TAB_TO_SELF_NOTIFICATION_CONTEXT_TEXT" desc="Text displayed as the second line of a notification indicating the domain and the device the tab is shared from.">
|
||||
|
|
|
@ -2504,3 +2504,4 @@ diff --git a/content/browser/renderer_host/navigation_throttle_runner.cc b/conte
|
|||
NavigationThrottle* NavigationThrottleRunner::GetDeferringThrottle() const {
|
||||
--
|
||||
2.17.1
|
||||
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
From: Artem Borisov <dedsa2002@gmail.com>
|
||||
Date: Wed, 3 Feb 2021 12:49:05 +0000
|
||||
Subject: Do not permit user-installed certificates
|
||||
|
||||
Current Android policy allows user-installed certificates usage only if that
|
||||
specific certificate is permitted by the specific application in its network
|
||||
security configuration.
|
||||
Default Chromium configuration though allows all user-installed certificates,
|
||||
potentially making it easier to let in the malicious traffic.
|
||||
This patch disallows user certificates by default.
|
||||
---
|
||||
chrome/android/java/res_base/xml/network_security_config.xml | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/android/java/res_base/xml/network_security_config.xml b/chrome/android/java/res_base/xml/network_security_config.xml
|
||||
--- a/chrome/android/java/res_base/xml/network_security_config.xml
|
||||
+++ b/chrome/android/java/res_base/xml/network_security_config.xml
|
||||
@@ -11,7 +11,6 @@
|
||||
See https://crbug.com/827265. See also MediaPlayerRenderer. -->
|
||||
<base-config cleartextTrafficPermitted="true">
|
||||
<trust-anchors>
|
||||
- <certificates src="user"/>
|
||||
<certificates src="system"/>
|
||||
</trust-anchors>
|
||||
</base-config>
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Thu, 18 Feb 2021 22:10:11 +0100
|
||||
Subject: Enable app overflow menu icons by default
|
||||
|
||||
---
|
||||
chrome/browser/flags/android/chrome_feature_list.cc | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browser/flags/android/chrome_feature_list.cc
|
||||
--- a/chrome/browser/flags/android/chrome_feature_list.cc
|
||||
+++ b/chrome/browser/flags/android/chrome_feature_list.cc
|
||||
@@ -640,7 +640,7 @@ const base::Feature kTabToGTSAnimation{"TabToGTSAnimation",
|
||||
base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kTabbedAppOverflowMenuIcons{
|
||||
- "TabbedAppOverflowMenuIcons", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
+ "TabbedAppOverflowMenuIcons", base::FEATURE_ENABLED_BY_DEFAULT};
|
||||
|
||||
const base::Feature kTabbedAppOverflowMenuRegroup{
|
||||
"TabbedAppOverflowMenuRegroup", base::FEATURE_DISABLED_BY_DEFAULT};
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 26 Jan 2021 00:21:51 +0100
|
||||
Subject: Ignore enterprise policies for secure DNS
|
||||
|
||||
---
|
||||
.../org/chromium/chrome/browser/policy/EnterpriseInfo.java | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/policy/EnterpriseInfo.java b/chrome/android/java/src/org/chromium/chrome/browser/policy/EnterpriseInfo.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/policy/EnterpriseInfo.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/policy/EnterpriseInfo.java
|
||||
@@ -90,6 +90,10 @@ public class EnterpriseInfo {
|
||||
ThreadUtils.assertOnUiThread();
|
||||
assert callback != null;
|
||||
|
||||
+ if (true) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
// If there is already a cached result post a task to return it.
|
||||
if (mOwnedState != null) {
|
||||
mHandler.post(() -> callback.onResult(mOwnedState));
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -1,72 +0,0 @@
|
|||
From: csagan5 <32685696+csagan5@users.noreply.github.com>
|
||||
Date: Tue, 26 Jan 2021 00:21:51 +0100
|
||||
Subject: Ignore managed state and policies for secure DNS
|
||||
|
||||
---
|
||||
chrome/browser/net/secure_dns_policy_handler.cc | 3 +++
|
||||
chrome/browser/net/stub_resolver_config_reader.cc | 3 +--
|
||||
chrome/browser/privacy/secure_dns_bridge.cc | 9 ++-------
|
||||
3 files changed, 6 insertions(+), 9 deletions(-)
|
||||
|
||||
diff --git a/chrome/browser/net/secure_dns_policy_handler.cc b/chrome/browser/net/secure_dns_policy_handler.cc
|
||||
--- a/chrome/browser/net/secure_dns_policy_handler.cc
|
||||
+++ b/chrome/browser/net/secure_dns_policy_handler.cc
|
||||
@@ -28,6 +28,8 @@ SecureDnsPolicyHandler::~SecureDnsPolicyHandler() {}
|
||||
|
||||
bool SecureDnsPolicyHandler::CheckPolicySettings(const PolicyMap& policies,
|
||||
PolicyErrorMap* errors) {
|
||||
+ return false;
|
||||
+#if 0
|
||||
bool mode_is_applicable = true;
|
||||
bool templates_is_applicable = true;
|
||||
|
||||
@@ -84,6 +86,7 @@ bool SecureDnsPolicyHandler::CheckPolicySettings(const PolicyMap& policies,
|
||||
}
|
||||
|
||||
return mode_is_applicable || templates_is_applicable;
|
||||
+#endif
|
||||
}
|
||||
|
||||
void SecureDnsPolicyHandler::ApplyPolicySettings(const PolicyMap& policies,
|
||||
diff --git a/chrome/browser/net/stub_resolver_config_reader.cc b/chrome/browser/net/stub_resolver_config_reader.cc
|
||||
--- a/chrome/browser/net/stub_resolver_config_reader.cc
|
||||
+++ b/chrome/browser/net/stub_resolver_config_reader.cc
|
||||
@@ -269,8 +269,7 @@ SecureDnsConfig StubResolverConfigReader::GetAndUpdateConfiguration(
|
||||
SecureDnsModeDetailsForHistogram mode_details;
|
||||
SecureDnsConfig::ManagementMode forced_management_mode =
|
||||
SecureDnsConfig::ManagementMode::kNoOverride;
|
||||
- bool is_managed =
|
||||
- local_state_->FindPreference(prefs::kDnsOverHttpsMode)->IsManaged();
|
||||
+ bool is_managed = false;
|
||||
if (!is_managed && ShouldDisableDohForManaged()) {
|
||||
secure_dns_mode = net::SecureDnsMode::kOff;
|
||||
forced_management_mode = SecureDnsConfig::ManagementMode::kDisabledManaged;
|
||||
diff --git a/chrome/browser/privacy/secure_dns_bridge.cc b/chrome/browser/privacy/secure_dns_bridge.cc
|
||||
--- a/chrome/browser/privacy/secure_dns_bridge.cc
|
||||
+++ b/chrome/browser/privacy/secure_dns_bridge.cc
|
||||
@@ -86,8 +86,7 @@ static void JNI_SecureDnsBridge_SetMode(JNIEnv* env, jint mode) {
|
||||
}
|
||||
|
||||
static jboolean JNI_SecureDnsBridge_IsModeManaged(JNIEnv* env) {
|
||||
- PrefService* local_state = g_browser_process->local_state();
|
||||
- return local_state->IsManagedPreference(prefs::kDnsOverHttpsMode);
|
||||
+ return false;
|
||||
}
|
||||
|
||||
static ScopedJavaLocalRef<jobjectArray> JNI_SecureDnsBridge_GetProviders(
|
||||
@@ -131,11 +130,7 @@ static jboolean JNI_SecureDnsBridge_SetTemplates(
|
||||
}
|
||||
|
||||
static jint JNI_SecureDnsBridge_GetManagementMode(JNIEnv* env) {
|
||||
- return static_cast<int>(
|
||||
- SystemNetworkContextManager::GetStubResolverConfigReader()
|
||||
- ->GetSecureDnsConfiguration(
|
||||
- true /* force_check_parental_controls_for_automatic_mode */)
|
||||
- .management_mode());
|
||||
+ return static_cast<int>(SecureDnsConfig::ManagementMode::kNoOverride);
|
||||
}
|
||||
|
||||
static void JNI_SecureDnsBridge_UpdateDropdownHistograms(
|
||||
--
|
||||
2.17.1
|
||||
|
|
@ -9,8 +9,8 @@ Subject: Remove blocklisted URLs upon bookmark creation
|
|||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
@@ -135,6 +135,8 @@ import org.chromium.chrome.browser.settings.SettingsLauncher;
|
||||
import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
|
||||
@@ -141,6 +141,8 @@ import org.chromium.chrome.browser.settings.SettingsLauncherImpl;
|
||||
import org.chromium.chrome.browser.settings.AdBlockPreferences;
|
||||
import org.chromium.chrome.browser.share.ShareDelegate;
|
||||
import org.chromium.chrome.browser.share.ShareDelegateImpl;
|
||||
+import org.chromium.chrome.browser.suggestions.SuggestionsDependencyFactory;
|
||||
|
@ -18,7 +18,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||
import org.chromium.chrome.browser.tab.AccessibilityVisibilityHandler;
|
||||
import org.chromium.chrome.browser.tab.Tab;
|
||||
import org.chromium.chrome.browser.tab.TabHidingType;
|
||||
@@ -205,6 +207,8 @@ import org.chromium.ui.widget.Toast;
|
||||
@@ -212,6 +214,8 @@ import org.chromium.ui.widget.Toast;
|
||||
import org.chromium.url.Origin;
|
||||
import org.chromium.webapk.lib.client.WebApkNavigationClient;
|
||||
|
||||
|
@ -27,7 +27,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.function.Consumer;
|
||||
@@ -249,6 +253,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
@@ -256,6 +260,7 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
|
||||
private UmaSessionStats mUmaSessionStats;
|
||||
private ContextReporter mContextReporter;
|
||||
|
@ -35,7 +35,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||
|
||||
private boolean mPartnerBrowserRefreshNeeded;
|
||||
|
||||
@@ -1234,6 +1239,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
@@ -1255,6 +1260,11 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
mCompositorViewHolder = null;
|
||||
}
|
||||
|
||||
|
@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||
onDestroyInternal();
|
||||
|
||||
if (mDidAddPolicyChangeListener) {
|
||||
@@ -1470,6 +1480,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
@@ -1491,6 +1501,13 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
|
||||
// Defense in depth against the UI being erroneously enabled.
|
||||
BookmarkBridge bridge = mBookmarkBridgeSupplier.get();
|
||||
|
|
|
@ -254,7 +254,7 @@ new file mode 100644
|
|||
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
|
||||
@@ -69,6 +69,7 @@ import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
|
||||
@@ -73,6 +73,7 @@ import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl;
|
||||
import org.chromium.chrome.browser.app.flags.ChromeCachedFlags;
|
||||
import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFactory;
|
||||
import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton;
|
||||
|
@ -262,7 +262,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem;
|
||||
import org.chromium.chrome.browser.bookmarks.BookmarkModel;
|
||||
@@ -206,6 +207,13 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
|
||||
@@ -213,6 +214,13 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
|
||||
import org.chromium.ui.widget.Toast;
|
||||
import org.chromium.url.Origin;
|
||||
import org.chromium.webapk.lib.client.WebApkNavigationClient;
|
||||
|
@ -276,7 +276,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv
|
|||
|
||||
import org.chromium.url.GURL;
|
||||
|
||||
@@ -2074,11 +2082,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
@@ -2095,11 +2103,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent>
|
||||
} else if (id == R.id.view_source_id) {
|
||||
currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString()));
|
||||
} else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) {
|
||||
|
@ -1081,7 +1081,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
|
|||
diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
||||
--- a/chrome/common/pref_names.cc
|
||||
+++ b/chrome/common/pref_names.cc
|
||||
@@ -3124,4 +3124,17 @@ const char kIncognitoTabHistoryEnabled[] =
|
||||
@@ -3121,4 +3121,17 @@ const char kIncognitoTabHistoryEnabled[] =
|
||||
"incognito_tab_history_enabled";
|
||||
#endif
|
||||
|
||||
|
@ -1102,7 +1102,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc
|
|||
diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h
|
||||
--- a/chrome/common/pref_names.h
|
||||
+++ b/chrome/common/pref_names.h
|
||||
@@ -1097,6 +1097,14 @@ extern const char kSecurityTokenSessionNotificationSeconds[];
|
||||
@@ -1096,6 +1096,14 @@ extern const char kSecurityTokenSessionNotificationSeconds[];
|
||||
extern const char kIncognitoTabHistoryEnabled[];
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue