fix patches for v97

This commit is contained in:
Carmelo Messina 2022-01-11 15:30:53 +01:00
parent d17ef02c4d
commit 8d84f23b18
No known key found for this signature in database
GPG key ID: 968894BE688289FD
25 changed files with 864 additions and 92 deletions

View file

@ -620,7 +620,7 @@ diff --git a/chrome/browser/flags/android/chrome_feature_list.cc b/chrome/browse
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
@@ -930,6 +930,19 @@ Your Google account may have other forms of browsing history like searches and a
@@ -933,6 +933,19 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_HISTORY_SUMMARY_SYNCED_NO_LINK" desc="A text for the basic tab explaining browsing history for users with history sync. This version is shown when the link to MyActivity is displayed separately.">
Clears history from all synced devices.
</message>

View file

@ -194,7 +194,7 @@ diff --git a/chrome/browser/tab/java/src/org/chromium/chrome/browser/tab/TabAsso
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
@@ -4622,6 +4622,21 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -4625,6 +4625,21 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_NEAR_OOM_REDUCTION_DECLINE" desc="The text of the button letting the user decline the browser's intervention, so that the page can be reloaded.">
Show original
</message>

View file

@ -97,7 +97,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ChromeLife
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
@@ -3222,6 +3222,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3225,6 +3225,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_MENU_AUTO_DARK_WEB_CONTENTS" desc="Menu item in Chrome's overflow/options menu. When Chrome's browser UI is set to dark theme and this option is checked, sites will have a dark theme automatically applied as well. [CHAR_LIMIT=24]">
Dark theme
</message>

View file

@ -277,7 +277,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/history/History
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
@@ -75,15 +75,15 @@ public class RecentTabsManager implements SignInStateObserver,
@@ -76,15 +76,15 @@ public class RecentTabsManager implements SignInStateObserver,
*/
public RecentTabsManager(
Tab tab, Profile profile, Context context, Runnable showHistoryManager) {
@ -1668,7 +1668,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/
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
@@ -961,6 +961,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -964,6 +964,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_UI_RELAUNCH_NOTICE" desc="Summary for always incognito mode">
Your changes will take effect the next time you relaunch Bromite.
</message>

View file

@ -154,9 +154,9 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
+ // Used to bookmark all tabs in a specific folder, created if not existing
+ public BookmarkId addToTabsCollection(Context context, Tab tab) {
+ BookmarkId parent = getTabsCollectionFolderId();
+ long existingId = getUserBookmarkIdForTab(tab);
+ if (existingId != BookmarkId.INVALID_ID) {
+ BookmarkId existingBookmarkId = new BookmarkId(existingId, BookmarkType.NORMAL);
+ BookmarkId existingId = getUserBookmarkIdForTab(tab);
+ if (existingId != null && existingId.getId() != BookmarkId.INVALID_ID) {
+ BookmarkId existingBookmarkId = new BookmarkId(existingId.getId(), BookmarkType.NORMAL);
+ BookmarkItem existingBookmark = getBookmarkById(existingBookmarkId);
+ if (parent.equals(existingBookmark.getParentId())) {
+ // bookmark already exists in the tabs collection folder
@ -349,7 +349,7 @@ diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browse
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
@@ -3305,6 +3305,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3308,6 +3308,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_MENU_TRACK_PRICES" desc="Menu item for tracking prices on tabs. [CHAR_LIMIT=27]">
Track prices
</message>

View file

@ -101,7 +101,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
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
@@ -1261,6 +1261,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1264,6 +1264,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_SAFE_BROWSING_NO_PROTECTION_CONFIRMATION_DIALOG_CONFIRM" desc="Message for Safe Browsing no protection confirmation button.">
Turn off
</message>

View file

@ -96,7 +96,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
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
@@ -4139,6 +4139,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -4142,6 +4142,12 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_CONTEXTMENU_IMAGE_TITLE" desc="The title of a context menu tab when the item pressed contains more than one type. This indicates that all the actions are related to the image.">
IMAGE
</message>

View file

@ -154,7 +154,7 @@ diff --git a/chrome/browser/preferences/android/java/src/org/chromium/chrome/bro
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
@@ -1010,6 +1010,9 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1013,6 +1013,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_CLEAR_BROWSING_DATA_TAB_PERIOD_HOUR" desc="The option to delete browsing data from the last hour.">
Last hour
</message>

View file

@ -47,7 +47,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
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
@@ -3296,6 +3296,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3299,6 +3299,9 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_MENU_CLOSE_ALL_TABS" desc="Menu item for closing all open tabs. [CHAR_LIMIT=27]">
Close all tabs
</message>

View file

@ -25,7 +25,7 @@ diff --git a/third_party/blink/renderer/modules/battery/battery_manager.cc b/thi
double BatteryManager::dischargingTime() {
- return battery_status_.discharging_time().InSecondsF();
+ return std::numeric_limits<double>::infinity().InSecondsF();
+ return std::numeric_limits<double>::infinity();
}
double BatteryManager::level() {

View file

@ -844,8 +844,8 @@ new file mode 100644
+ << next_check_delay << " seconds. ";
+
+ scheduler_->Schedule(
+ base::TimeDelta::FromSeconds(initial_check_delay),
+ base::TimeDelta::FromSeconds(next_check_delay),
+ base::Seconds(initial_check_delay),
+ base::Seconds(next_check_delay),
+ base::BindRepeating(&AdBlockUpdaterService::OnDemandScheduledUpdate,
+ base::Unretained(this)), base::DoNothing());
+}
@ -866,7 +866,7 @@ new file mode 100644
+ if (!last_update_.is_null()) {
+ base::TimeDelta delta =
+ base::TimeTicks::Now() - last_update_;
+ if (delta < base::TimeDelta::FromSeconds(on_demand_check_delay)) {
+ if (delta < base::Seconds(on_demand_check_delay)) {
+ LOG(INFO) << "AdBlockUpdaterService: update not necessary.";
+ return false;
+ }
@ -933,7 +933,7 @@ new file mode 100644
+ if (!failed) {
+ base::TimeDelta delta =
+ base::Time::Now() - min_last_modified;
+ if (delta < base::TimeDelta::FromSeconds(on_demand_check_delay)) {
+ if (delta < base::Seconds(on_demand_check_delay)) {
+ LOG(INFO) << "AdBlockUpdaterService: update check not yet needed.";
+ is_updating_ = false;
+ return false;

View file

@ -6,22 +6,30 @@ Enable checking for new versions, with notifications and proxy support
---
.../java/templates/BuildConfig.template | 2 +
build/config/android/rules.gni | 3 +
chrome/android/chrome_java_sources.gni | 1 +
chrome/android/chrome_java_sources.gni | 3 +
.../java/res/xml/about_chrome_preferences.xml | 5 +
.../about_settings/AboutChromeSettings.java | 28 ++-
.../chrome/browser/omaha/OmahaBase.java | 47 +++-
.../browser/omaha/UpdateStatusProvider.java | 30 ++-
.../chrome/browser/omaha/UpdateConfigs.java | 30 ++-
.../browser/omaha/UpdateMenuItemHelper.java | 69 +++++-
.../browser/omaha/UpdateStatusProvider.java | 169 ++++++++++++---
.../browser/omaha/VersionNumberGetter.java | 3 +-
.../inline/BromiteInlineUpdateController.java | 204 ++++++++++++++++++
.../omaha/inline/InlineUpdateController.java | 45 ++++
.../inline/InlineUpdateControllerFactory.java | 21 ++
chrome/browser/endpoint_fetcher/BUILD.gn | 2 +
.../endpoint_fetcher/endpoint_fetcher.cc | 129 +++++++++++
.../endpoint_fetcher/endpoint_fetcher.h | 23 +-
.../endpoint_fetcher/EndpointFetcher.java | 11 +
.../EndpointHeaderResponse.java | 31 +++
.../flags/android/chrome_feature_list.cc | 2 +-
.../strings/android_chrome_strings.grd | 8 +-
16 files changed, 504 insertions(+), 25 deletions(-)
.../flags/android/chrome_feature_list.cc | 6 +-
.../flags/android/chrome_feature_list.h | 1 +
.../browser/flags/ChromeFeatureList.java | 1 +
.../strings/android_chrome_strings.grd | 20 +-
22 files changed, 811 insertions(+), 42 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
create mode 100644 chrome/browser/endpoint_fetcher/java/src/org/chromium/chrome/browser/endpoint_fetcher/EndpointHeaderResponse.java
diff --git a/build/android/java/templates/BuildConfig.template b/build/android/java/templates/BuildConfig.template
@ -50,10 +58,12 @@ diff --git a/build/config/android/rules.gni b/build/config/android/rules.gni
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
+++ b/chrome/android/chrome_java_sources.gni
@@ -878,6 +878,7 @@ chrome_java_sources = [
@@ -878,6 +878,9 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java",
"java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java",
"java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java",
+ "java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java",
+ "java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java",
+ "java/src/org/chromium/chrome/browser/omaha/inline/BromiteInlineUpdateController.java",
"java/src/org/chromium/chrome/browser/omaha/VersionNumberGetter.java",
"java/src/org/chromium/chrome/browser/omaha/metrics/HistogramUtils.java",
@ -206,10 +216,211 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/OmahaBase
+ OmahaBase.updateLastPushedTimeStamp(0);
+ }
}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateConfigs.java
@@ -11,6 +11,7 @@ import androidx.annotation.IntDef;
import androidx.annotation.Nullable;
import org.chromium.base.CommandLine;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
import org.chromium.chrome.browser.flags.ChromeSwitches;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState;
import org.chromium.components.variations.VariationsAssociatedData;
@@ -37,10 +38,12 @@ public class UpdateConfigs {
private static final String UPDATE_AVAILABLE_SWITCH_VALUE = "update_available";
private static final String UNSUPPORTED_OS_VERSION_SWITCH_VALUE = "unsupported_os_version";
+ private static final long DEFAULT_UPDATE_NOTIFICATION_INTERVAL = 3 * DateUtils.DAY_IN_MILLIS;
private static final long DEFAULT_UPDATE_ATTRIBUTION_WINDOW_MS = 2 * DateUtils.DAY_IN_MILLIS;
/** Possible update flow configurations. */
- @IntDef({UpdateFlowConfiguration.NEVER_SHOW, UpdateFlowConfiguration.INTENT_ONLY})
+ @IntDef({UpdateFlowConfiguration.NEVER_SHOW, UpdateFlowConfiguration.INTENT_ONLY,
+ UpdateFlowConfiguration.INLINE_ONLY})
@Retention(RetentionPolicy.SOURCE)
public @interface UpdateFlowConfiguration {
/** Turns off all update indicators. */
@@ -50,6 +53,12 @@ public class UpdateConfigs {
* Requires Omaha to say an update is available, and only ever Intents out to Play Store.
*/
int INTENT_ONLY = 2;
+
+ /**
+ * Requires both Omaha and Play Store to say an update is available. Only ever uses the
+ * inline update flow.
+ */
+ int INLINE_ONLY = 3;
}
/**
@@ -124,6 +133,13 @@ public class UpdateConfigs {
return DEFAULT_UPDATE_ATTRIBUTION_WINDOW_MS;
}
+ /**
+ * @return A time interval for scheduling update notification. Unit: mills.
+ */
+ public static long getUpdateNotificationInterval() {
+ return DEFAULT_UPDATE_NOTIFICATION_INTERVAL;
+ }
+
/**
* Gets a String VariationsAssociatedData parameter. Also checks for a command-line switch
* with the same name, for easy local testing.
@@ -139,4 +155,14 @@ public class UpdateConfigs {
}
return value;
}
-}
\ No newline at end of file
+
+ @UpdateFlowConfiguration
+ public static int getConfiguration() {
+ if (!ChromeFeatureList.isEnabled(ChromeFeatureList.INLINE_UPDATE_FLOW)) {
+ // Always use the the old flow if the inline update flow feature is not enabled.
+ return UpdateFlowConfiguration.INLINE_ONLY;
+ }
+
+ return UpdateFlowConfiguration.NEVER_SHOW;
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateMenuItemHelper.java
@@ -22,6 +22,7 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.PostTask;
import org.chromium.base.task.TaskTraits;
import org.chromium.chrome.R;
+import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateInteractionSource;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateState;
import org.chromium.chrome.browser.omaha.UpdateStatusProvider.UpdateStatus;
import org.chromium.chrome.browser.preferences.Pref;
@@ -157,7 +158,7 @@ public class UpdateMenuItemHelper {
try {
UpdateStatusProvider.getInstance().startIntentUpdate(
- activity, false /* newTask */);
+ activity, UpdateInteractionSource.FROM_MENU, false /* newTask */);
recordItemClickedHistogram(ITEM_CLICKED_INTENT_LAUNCHED);
getPrefService().setBoolean(Pref.CLICKED_UPDATE_MENU_ITEM, true);
} catch (ActivityNotFoundException e) {
@@ -165,8 +166,22 @@ public class UpdateMenuItemHelper {
recordItemClickedHistogram(ITEM_CLICKED_INTENT_FAILED);
}
break;
+ case UpdateState.INLINE_UPDATE_AVAILABLE:
+ UpdateStatusProvider.getInstance().startInlineUpdate(
+ UpdateInteractionSource.FROM_MENU, activity);
+ break;
+ case UpdateState.INLINE_UPDATE_READY:
+ UpdateStatusProvider.getInstance().finishInlineUpdate(
+ UpdateInteractionSource.FROM_MENU);
+ break;
+ case UpdateState.INLINE_UPDATE_FAILED:
+ UpdateStatusProvider.getInstance().retryInlineUpdate(
+ UpdateInteractionSource.FROM_MENU, activity);
+ break;
case UpdateState.UNSUPPORTED_OS_VERSION:
// Intentional fall through.
+ case UpdateState.INLINE_UPDATE_DOWNLOADING:
+ // Intentional fall through.
default:
return;
}
@@ -268,6 +283,58 @@ public class UpdateMenuItemHelper {
mMenuUiState.itemState.icon = R.drawable.ic_error_24dp_filled;
mMenuUiState.itemState.enabled = false;
break;
+ case UpdateState.INLINE_UPDATE_AVAILABLE:
+ // The badge is hidden if the update menu item has been clicked until there is an
+ // even newer version of Chrome available.
+ showBadge |= !TextUtils.equals(
+ getPrefService().getString(
+ Pref.LATEST_VERSION_WHEN_CLICKED_UPDATE_MENU_ITEM),
+ mStatus.latestUnsupportedVersion);
+
+ if (showBadge) {
+ mMenuUiState.buttonState = new MenuButtonState();
+ mMenuUiState.buttonState.menuContentDescription =
+ R.string.accessibility_toolbar_btn_menu_update;
+ mMenuUiState.buttonState.darkBadgeIcon = R.drawable.badge_update_dark;
+ mMenuUiState.buttonState.lightBadgeIcon = R.drawable.badge_update_light;
+ }
+
+ mMenuUiState.itemState = new MenuItemState();
+ mMenuUiState.itemState.title = R.string.menu_update;
+ mMenuUiState.itemState.titleColorId = R.color.default_text_color_blue;
+ mMenuUiState.itemState.summary = UpdateConfigs.getCustomSummary();
+ if (TextUtils.isEmpty(mMenuUiState.itemState.summary)) {
+ mMenuUiState.itemState.summary =
+ resources.getString(R.string.menu_update_summary_default);
+ }
+ mMenuUiState.itemState.icon = R.drawable.ic_history_googblue_24dp;
+ mMenuUiState.itemState.iconTintId = R.color.default_icon_color_blue_light;
+ mMenuUiState.itemState.enabled = true;
+ break;
+ case UpdateState.INLINE_UPDATE_DOWNLOADING:
+ mMenuUiState.itemState = new MenuItemState();
+ mMenuUiState.itemState.title = R.string.menu_inline_update_downloading;
+ mMenuUiState.itemState.titleColorId = R.color.default_text_color_secondary;
+ break;
+ case UpdateState.INLINE_UPDATE_READY:
+ mMenuUiState.itemState = new MenuItemState();
+ mMenuUiState.itemState.title = R.string.menu_inline_update_ready;
+ mMenuUiState.itemState.titleColorId = R.color.default_text_color_blue;
+ mMenuUiState.itemState.summary =
+ resources.getString(R.string.menu_inline_update_ready_summary);
+ mMenuUiState.itemState.icon = R.drawable.infobar_chrome;
+ mMenuUiState.itemState.iconTintId = R.color.default_icon_color_blue_light;
+ mMenuUiState.itemState.enabled = true;
+ break;
+ case UpdateState.INLINE_UPDATE_FAILED:
+ mMenuUiState.itemState = new MenuItemState();
+ mMenuUiState.itemState.title = R.string.menu_inline_update_failed;
+ mMenuUiState.itemState.titleColorId = R.color.default_text_color_blue;
+ mMenuUiState.itemState.summary = resources.getString(R.string.try_again);
+ mMenuUiState.itemState.icon = R.drawable.ic_history_googblue_24dp;
+ mMenuUiState.itemState.iconTintId = R.color.default_icon_color_blue_light;
+ mMenuUiState.itemState.enabled = true;
+ break;
case UpdateState.NONE:
// Intentional fall through.
default:
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateStatusProvider.java
@@ -36,6 +36,12 @@ import java.io.File;
@@ -4,6 +4,7 @@
package org.chromium.chrome.browser.omaha;
+import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
@@ -16,7 +17,11 @@ import android.text.TextUtils;
import androidx.annotation.IntDef;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import androidx.annotation.VisibleForTesting;
+import org.chromium.base.ActivityState;
+import org.chromium.base.ApplicationStatus;
+import org.chromium.base.ApplicationStatus.ActivityStateListener;
import org.chromium.base.BuildInfo;
import org.chromium.base.Callback;
import org.chromium.base.ContextUtils;
@@ -26,6 +31,9 @@ import org.chromium.base.metrics.RecordHistogram;
import org.chromium.base.task.AsyncTask;
import org.chromium.base.task.AsyncTask.Status;
import org.chromium.base.task.PostTask;
+import org.chromium.chrome.browser.app.ChromeActivity;
+import org.chromium.chrome.browser.omaha.inline.InlineUpdateController;
+import org.chromium.chrome.browser.omaha.inline.InlineUpdateControllerFactory;
import org.chromium.chrome.browser.omaha.metrics.UpdateSuccessMetrics;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
@@ -36,28 +44,50 @@ import java.io.File;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@ -222,7 +433,230 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/UpdateSta
/**
* Provides the current update state for Chrome. This update state is asynchronously determined and
* can change as Chrome runs.
@@ -287,24 +293,12 @@ public class UpdateStatusProvider {
*
* For manually testing this functionality, see {@link UpdateConfigs}.
*/
-public class UpdateStatusProvider {
+public class UpdateStatusProvider implements ActivityStateListener {
+ /**
+ * Possible sources of user interaction regarding updates.
+ * Treat this as append only as it is used by UMA.
+ */
+ @IntDef({UpdateInteractionSource.FROM_MENU, UpdateInteractionSource.FROM_INFOBAR,
+ UpdateInteractionSource.FROM_NOTIFICATION})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface UpdateInteractionSource {
+ int FROM_MENU = 0;
+ int FROM_INFOBAR = 1;
+ int FROM_NOTIFICATION = 2;
+
+ int NUM_ENTRIES = 3;
+ }
+
/**
* Possible update states.
* Treat this as append only as it is used by UMA.
*/
- @IntDef({UpdateState.NONE, UpdateState.UPDATE_AVAILABLE, UpdateState.UNSUPPORTED_OS_VERSION})
+ @IntDef({UpdateState.NONE, UpdateState.UPDATE_AVAILABLE, UpdateState.UNSUPPORTED_OS_VERSION,
+ UpdateState.INLINE_UPDATE_AVAILABLE, UpdateState.INLINE_UPDATE_DOWNLOADING,
+ UpdateState.INLINE_UPDATE_READY, UpdateState.INLINE_UPDATE_FAILED})
@Retention(RetentionPolicy.SOURCE)
public @interface UpdateState {
int NONE = 0;
int UPDATE_AVAILABLE = 1;
int UNSUPPORTED_OS_VERSION = 2;
- // Inline updates are deprecated.
- // int INLINE_UPDATE_AVAILABLE = 3;
- // int INLINE_UPDATE_DOWNLOADING = 4;
- // int INLINE_UPDATE_READY = 5;
- // int INLINE_UPDATE_FAILED = 6;
+ int INLINE_UPDATE_AVAILABLE = 3;
+ int INLINE_UPDATE_DOWNLOADING = 4;
+ int INLINE_UPDATE_READY = 5;
+ int INLINE_UPDATE_FAILED = 6;
int NUM_ENTRIES = 7;
}
@@ -93,6 +123,12 @@ public class UpdateStatusProvider {
*/
private boolean mIsSimulated;
+ /**
+ * Whether or not we are currently trying to simulate an inline flow. Used to allow
+ * overriding Omaha update state, which usually supersedes inline update states.
+ */
+ private boolean mIsInlineSimulated;
+
public UpdateStatus() {}
UpdateStatus(UpdateStatus other) {
@@ -101,11 +137,13 @@ public class UpdateStatusProvider {
latestVersion = other.latestVersion;
latestUnsupportedVersion = other.latestUnsupportedVersion;
mIsSimulated = other.mIsSimulated;
+ mIsInlineSimulated = other.mIsInlineSimulated;
}
}
private final ObserverList<Callback<UpdateStatus>> mObservers = new ObserverList<>();
+ private final InlineUpdateController mInlineController;
private final UpdateQuery mOmahaQuery;
private final UpdateSuccessMetrics mMetrics;
private @Nullable UpdateStatus mStatus;
@@ -173,19 +211,44 @@ public class UpdateStatusProvider {
pingObservers();
}
+ /**
+ * Starts the inline update process, if possible.
+ * @source The source of the action (the UI that caused it).
+ * @param activity An {@link Activity} that will be used to interact with Play.
+ */
+ public void startInlineUpdate(@UpdateInteractionSource int source, Activity activity) {
+ if (mStatus == null || mStatus.updateState != UpdateState.INLINE_UPDATE_AVAILABLE) return;
+ mInlineController.startUpdate(activity);
+ }
+
+ /**
+ * Retries the inline update process, if possible.
+ * @param activity An {@link Activity} that will be used to interact with Play.
+ */
+ public void retryInlineUpdate(@UpdateInteractionSource int source, Activity activity) {
+ if (mStatus == null || mStatus.updateState != UpdateState.INLINE_UPDATE_AVAILABLE) return;
+ mInlineController.startUpdate(activity);
+ }
+
+ /** Finishes the inline update process, which may involve restarting the app. */
+ public void finishInlineUpdate(@UpdateInteractionSource int source) {
+ if (mStatus == null || mStatus.updateState != UpdateState.INLINE_UPDATE_READY) return;
+ mInlineController.completeUpdate();
+ }
+
/**
* Starts the intent update process, if possible
* @param context An {@link Context} that will be used to fire off the update intent.
+ * @param source The source of the action (the UI that caused it).
* @param newTask Whether or not to make the intent a new task.
* @return Whether or not the update intent was sent and had a valid handler.
*/
- public boolean startIntentUpdate(Context context, boolean newTask) {
+ public boolean startIntentUpdate(
+ Context context, @UpdateInteractionSource int source, boolean newTask) {
if (mStatus == null || mStatus.updateState != UpdateState.UPDATE_AVAILABLE) return false;
if (TextUtils.isEmpty(mStatus.updateUrl)) return false;
try {
- mMetrics.startUpdate();
-
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(mStatus.updateUrl));
if (newTask) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
@@ -196,9 +259,29 @@ public class UpdateStatusProvider {
return true;
}
+ // ApplicationStateListener implementation.
+ @Override
+ public void onActivityStateChange(Activity changedActivity, @ActivityState int newState) {
+ boolean hasActiveActivity = false;
+
+ for (Activity activity : ApplicationStatus.getRunningActivities()) {
+ if (activity == null || !(activity instanceof ChromeActivity)) continue;
+
+ hasActiveActivity |=
+ ApplicationStatus.getStateForActivity(activity) == ActivityState.RESUMED;
+ if (hasActiveActivity) break;
+ }
+
+ mInlineController.setEnabled(hasActiveActivity);
+ }
+
private UpdateStatusProvider() {
+ mInlineController = InlineUpdateControllerFactory.create(this::resolveStatus);
mOmahaQuery = new UpdateQuery(this::resolveStatus);
mMetrics = new UpdateSuccessMetrics();
+
+ // Note that as a singleton this class never unregisters.
+ ApplicationStatus.registerStateListenerForAllActivities(this);
}
private void pingObservers() {
@@ -206,27 +289,59 @@ public class UpdateStatusProvider {
}
private void resolveStatus() {
- if (mOmahaQuery.getStatus() != Status.FINISHED) {
+ if (mOmahaQuery.getStatus() != Status.FINISHED || mInlineController.getStatus() == null) {
return;
}
// We pull the Omaha result once as it will never change.
if (mStatus == null) mStatus = new UpdateStatus(mOmahaQuery.getResult());
- if (!mStatus.mIsSimulated) {
- mStatus.updateState = mOmahaQuery.getResult().updateState;
+ if (mStatus.mIsSimulated) {
+ if (mStatus.mIsInlineSimulated) {
+ @UpdateState
+ int inlineState = mInlineController.getStatus();
+
+ if (inlineState == UpdateState.NONE) {
+ mStatus.updateState = mOmahaQuery.getResult().updateState;
+ } else {
+ mStatus.updateState = inlineState;
+ }
+ }
+ } else {
+ @UpdateState
+ int omahaState = mOmahaQuery.getResult().updateState;
+ @UpdateState
+ int inlineState = mInlineController.getStatus();
+ mStatus.updateState = resolveOmahaAndInlineStatus(
+ UpdateConfigs.getConfiguration(), omahaState, inlineState);
}
if (!mRecordedInitialStatus) {
RecordHistogram.recordEnumeratedHistogram(
"GoogleUpdate.StartUp.State", mStatus.updateState, UpdateState.NUM_ENTRIES);
- mMetrics.analyzeFirstStatus();
mRecordedInitialStatus = true;
}
pingObservers();
}
+ @VisibleForTesting
+ static @UpdateState int resolveOmahaAndInlineStatus(
+ @UpdateConfigs.UpdateFlowConfiguration int configuration, @UpdateState int omahaState,
+ @UpdateState int inlineState) {
+ switch (configuration) {
+ case UpdateConfigs.UpdateFlowConfiguration.NEVER_SHOW:
+ return UpdateState.NONE;
+ case UpdateConfigs.UpdateFlowConfiguration.INLINE_ONLY:
+ if (inlineState == UpdateState.NONE) return omahaState;
+ return inlineState;
+ case UpdateConfigs.UpdateFlowConfiguration.INTENT_ONLY: // Intentional fall through.
+ default:
+ // Fall back to use Omaha only and use the old flow.
+ return omahaState;
+ }
+ }
+
private static final class LazyHolder {
private static final UpdateStatusProvider INSTANCE = new UpdateStatusProvider();
}
@@ -268,6 +383,8 @@ public class UpdateStatusProvider {
status.mIsSimulated = true;
status.updateState = forcedUpdateState;
+ status.mIsInlineSimulated = forcedUpdateState == UpdateState.INLINE_UPDATE_AVAILABLE;
+
// Push custom configurations for certain update states.
switch (forcedUpdateState) {
case UpdateState.UPDATE_AVAILABLE:
@@ -287,24 +404,12 @@ public class UpdateStatusProvider {
private UpdateStatus getRealStatus(Context context) {
UpdateStatus status = new UpdateStatus();
@ -475,6 +909,82 @@ new file mode 100644
+ PostTask.postTask(UiThreadTaskTraits.DEFAULT, mCallback);
+ }
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateController.java
@@ -0,0 +1,45 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.omaha.inline;
+
+import android.app.Activity;
+import android.content.Intent;
+
+import androidx.annotation.Nullable;
+
+import org.chromium.chrome.browser.omaha.UpdateStatusProvider;
+
+/**
+ * Helper for gluing interactions with the Play store's AppUpdateManager with Chrome. This
+ * involves hooking up to Play as a listener for install state changes, should only happen if we are
+ * in the foreground.
+ */
+public interface InlineUpdateController {
+ /**
+ * Enables or disables the controller.
+ * @param enabled true iff the controller should be enabled.
+ */
+ void setEnabled(boolean enabled);
+
+ /**
+ * @return The current state of the inline update process. May be {@code null} if the state
+ * hasn't been determined yet.
+ */
+ @Nullable
+ @UpdateStatusProvider.UpdateState
+ Integer getStatus();
+
+ /**
+ * Starts the update, if possible. This will send an {@link Intent} out to play, which may
+ * cause Chrome to move to the background.
+ * @param activity The {@link Activity} to use to interact with Play.
+ */
+ void startUpdate(Activity activity);
+
+ /**
+ * Completes the Play installation process, if possible. This may cause Chrome to restart.
+ */
+ void completeUpdate();
+}
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/omaha/inline/InlineUpdateControllerFactory.java
@@ -0,0 +1,21 @@
+// Copyright 2019 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+package org.chromium.chrome.browser.omaha.inline;
+
+import org.chromium.base.ContextUtils;
+import org.chromium.chrome.browser.flags.ChromeFeatureList;
+import org.chromium.chrome.browser.omaha.UpdateConfigs;
+
+/**
+ * A factory that creates an {@link InlineUpdateController} instance.
+ */
+public class InlineUpdateControllerFactory {
+ /**
+ * @return A new {@link InlineUpdateController}.
+ */
+ public static InlineUpdateController create(Runnable callback) {
+ return new BromiteInlineUpdateController(callback);
+ }
+}
diff --git a/chrome/browser/endpoint_fetcher/BUILD.gn b/chrome/browser/endpoint_fetcher/BUILD.gn
--- a/chrome/browser/endpoint_fetcher/BUILD.gn
+++ b/chrome/browser/endpoint_fetcher/BUILD.gn
@ -556,7 +1066,7 @@ diff --git a/chrome/browser/endpoint_fetcher/endpoint_fetcher.cc b/chrome/browse
+ simple_url_loader_ = network::SimpleURLLoader::Create(
+ std::move(resource_request), annotation_tag_);
+ simple_url_loader_->SetTimeoutDuration(
+ base::TimeDelta::FromMilliseconds(timeout_ms_));
+ base::Milliseconds(timeout_ms_));
+ simple_url_loader_->SetAllowHttpErrorResults(true);
+
+ if (!response_)
@ -803,19 +1313,52 @@ new file mode 100644
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
@@ -649,7 +649,7 @@ const base::Feature kIncognitoReauthenticationForAndroid{
@@ -246,6 +246,7 @@ const base::Feature* const kFeaturesExposedToJava[] = {
&kImmersiveUiMode,
&kIncognitoReauthenticationForAndroid,
&kIncognitoScreenshot,
+ &kInlineUpdateFlow,
&kInstanceSwitcher,
&kInstantStart,
&kKitKatSupported,
@@ -649,7 +650,10 @@ const base::Feature kIncognitoReauthenticationForAndroid{
"IncognitoReauthenticationForAndroid", base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kIncognitoScreenshot{"IncognitoScreenshot",
- base::FEATURE_DISABLED_BY_DEFAULT};
+ base::FEATURE_ENABLED_BY_DEFAULT};
+
+const base::Feature kInlineUpdateFlow{"InlineUpdateFlow",
+ base::FEATURE_ENABLED_BY_DEFAULT};
const base::Feature kInstantStart{"InstantStart",
base::FEATURE_DISABLED_BY_DEFAULT};
diff --git a/chrome/browser/flags/android/chrome_feature_list.h b/chrome/browser/flags/android/chrome_feature_list.h
--- a/chrome/browser/flags/android/chrome_feature_list.h
+++ b/chrome/browser/flags/android/chrome_feature_list.h
@@ -102,6 +102,7 @@ extern const base::Feature kImmersiveUiMode;
extern const base::Feature kIncognitoReauthenticationForAndroid;
extern const base::Feature kIncognitoScreenshot;
extern const base::Feature kImprovedA2HS;
+extern const base::Feature kInlineUpdateFlow;
extern const base::Feature kInstanceSwitcher;
extern const base::Feature kInstantStart;
extern const base::Feature kKitKatSupported;
diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
--- a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
+++ b/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/ChromeFeatureList.java
@@ -371,6 +371,7 @@ public abstract class ChromeFeatureList {
public static final String INCOGNITO_REAUTHENTICATION_FOR_ANDROID =
"IncognitoReauthenticationForAndroid";
public static final String INCOGNITO_SCREENSHOT = "IncognitoScreenshot";
+ public static final String INLINE_UPDATE_FLOW = "InlineUpdateFlow";
public static final String INSTALLABLE_AMBIENT_BADGE_INFOBAR = "InstallableAmbientBadgeInfoBar";
public static final String INSTANCE_SWITCHER = "InstanceSwitcher";
public static final String INSTANT_START = "InstantStart";
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
@@ -1731,6 +1731,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1734,6 +1734,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_DEPRECATION_WARNING" desc="Warning about Chrome updates no longer being supported">
Chrome updates are no longer supported for this version of Android
</message>
@ -828,7 +1371,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<!-- Account management UI strings. -->
<message name="IDS_ACCOUNT_MANAGEMENT_TITLE" desc="Header title for the account management screen. [CHAR_LIMIT=32]">
@@ -3228,7 +3234,7 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -3231,7 +3237,7 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<!-- Main menu items -->
<message name="IDS_MENU_UPDATE" desc="Menu item for updating chrome. [CHAR_LIMIT=24]">
@ -837,6 +1380,25 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
</message>
<message name="IDS_MENU_UPDATE_SUMMARY_DEFAULT" desc="Summary string for update menu item explaining that a newer version of Chrome is available. [CHAR_LIMIT=30]">
Newer version is available
@@ -3242,6 +3248,18 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
<message name="IDS_MENU_UPDATE_UNSUPPORTED_SUMMARY_DEFAULT" desc="Summary string for update menu item explaining that the Android version on the device is unsupported. [CHAR_LIMIT=30]">
Android version is unsupported
</message>
+ <message name="IDS_MENU_INLINE_UPDATE_DOWNLOADING" desc="Menu item for when Chrome is in the process of updating. [CHAR_LIMIT=24]">
+ Downloading…
+ </message>
+ <message name="IDS_MENU_INLINE_UPDATE_FAILED" desc="Menu item for when Chrome failed to download an update. [CHAR_LIMIT=24]">
+ Couldnt download
+ </message>
+ <message name="IDS_MENU_INLINE_UPDATE_READY" desc="Menu item text that is shown when Chrome has downloaded an update for itself and is ready to be restarted, which will apply the update. [CHAR_LIMIT=24]">
+ Update ready
+ </message>
+ <message name="IDS_MENU_INLINE_UPDATE_READY_SUMMARY" desc="Summary text that is shown when Chrome has downloaded an update for itself and is ready to be restarted, which will apply the update. This lets the user know the update will restart. [CHAR_LIMIT=24]">
+ Restart Bromite
+ </message>
<message name="IDS_MENU_NEW_WINDOW" desc="Menu item for opening a new window. [CHAR_LIMIT=27]">
New window
</message>
--
2.20.1

View file

@ -26,7 +26,7 @@ diff --git a/chrome/android/java/res/xml/accessibility_preferences.xml b/chrome/
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
@@ -1320,6 +1320,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1323,6 +1323,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_PREFS_ACCESSIBILITY" desc="Title of Accessibility settings, which allows the user to change webpage font sizes. [CHAR_LIMIT=32]">
Accessibility
</message>

View file

@ -67,7 +67,7 @@ diff --git a/chrome/browser/attribution_reporting/android/internal/java/src/org/
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
@@ -431,7 +431,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
@@ -432,7 +432,7 @@ const base::Feature kAppMenuMobileSiteOption{"AppMenuMobileSiteOption",
base::FEATURE_DISABLED_BY_DEFAULT};
const base::Feature kAppToWebAttribution{"AppToWebAttribution",

View file

@ -15,7 +15,7 @@ See also: https://github.com/bromite/bromite/issues/547
android_webview/browser/aw_contents.cc | 1 +
chrome/android/BUILD.gn | 1 +
.../settings/PasswordSettings.java | 82 ++++++++++++++++++-
.../chromium/chrome/browser/tab/TabImpl.java | 51 ++++++++++++
.../chromium/chrome/browser/tab/TabImpl.java | 50 +++++++++++
.../browser/tab/TabViewAndroidDelegate.java | 14 ++++
chrome/browser/BUILD.gn | 8 ++
chrome/browser/android/tab_android.cc | 27 ++++++
@ -30,10 +30,10 @@ See also: https://github.com/bromite/bromite/issues/547
.../renderer/password_autofill_agent.cc | 5 +-
.../autofill/core/common/autofill_prefs.cc | 8 ++
.../autofill/core/common/autofill_prefs.h | 2 +
.../embedder_support/view/ContentView.java | 48 +++++++++++
.../embedder_support/view/ContentView.java | 46 +++++++++++
.../chromium/ui/base/ViewAndroidDelegate.java | 8 ++
weblayer/browser/tab_impl.cc | 3 +-
21 files changed, 332 insertions(+), 15 deletions(-)
21 files changed, 329 insertions(+), 15 deletions(-)
diff --git a/android_webview/browser/aw_contents.cc b/android_webview/browser/aw_contents.cc
--- a/android_webview/browser/aw_contents.cc
@ -185,13 +185,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.java
@@ -75,6 +75,18 @@ import org.chromium.url.GURL;
@@ -75,6 +75,17 @@ import org.chromium.url.GURL;
import java.nio.ByteBuffer;
+import android.os.Build;
+import android.util.SparseArray;
+import org.chromium.base.annotations.VerifiesOnO;
+import org.chromium.ui.base.EventOffsetHandler;
+import android.view.ViewStructure;
+import android.view.autofill.AutofillValue;
@ -204,7 +203,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
/**
* Implementation of the interface {@link Tab}. Contains and manages a {@link ContentView}.
* This class is not intended to be extended.
@@ -218,6 +230,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
@@ -218,6 +229,8 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
/** Whether or not the user manually changed the user agent. */
private boolean mUserForcedUserAgent;
@ -213,7 +212,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
/**
* Creates an instance of a {@link TabImpl}.
*
@@ -768,6 +782,11 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
@@ -768,6 +781,11 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
for (TabObserver observer : mObservers) observer.onDestroyed(this);
mObservers.clear();
@ -225,7 +224,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
mUserDataHost.destroy();
mTabViewManager.destroy();
hideNativePage(false, null);
@@ -1359,6 +1378,16 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
@@ -1359,6 +1377,16 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
return tabsPtrArray;
}
@ -242,7 +241,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
/**
* Initializes the {@link WebContents}. Completes the browser content components initialization
* around a native WebContents pointer.
@@ -1408,6 +1437,27 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
@@ -1408,6 +1436,27 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
mDelegateFactory.createContextMenuPopulatorFactory(this), this));
mWebContents.notifyRendererPreferenceUpdate();
@ -270,7 +269,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tab/TabImpl.jav
TabHelpers.initWebContentsHelpers(this);
notifyContentChanged();
} finally {
@@ -1772,5 +1822,6 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
@@ -1772,5 +1821,6 @@ public class TabImpl implements Tab, TabObscuringHandler.Observer {
void setActiveNavigationEntryTitleForUrl(long nativeTabAndroid, String url, String title);
void loadOriginalImage(long nativeTabAndroid);
boolean handleNonNavigationAboutURL(GURL url);
@ -393,7 +392,7 @@ diff --git a/chrome/browser/android/tab_web_contents_delegate_android.cc b/chrom
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
@@ -582,6 +582,12 @@ CHAR_LIMIT guidelines:
@@ -585,6 +585,12 @@ CHAR_LIMIT guidelines:
<message name="IDS_PASSWORD_SETTINGS_SAVE_PASSWORDS" desc="Title for the checkbox toggling whether passwords are saved or not. [CHAR_LIMIT=32]">
Save passwords
</message>
@ -747,12 +746,11 @@ diff --git a/components/autofill/core/common/autofill_prefs.h b/components/autof
diff --git a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
--- a/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
+++ b/components/embedder_support/android/java/src/org/chromium/components/embedder_support/view/ContentView.java
@@ -36,6 +36,12 @@ import org.chromium.content_public.browser.WebContentsAccessibility;
@@ -36,6 +36,11 @@ import org.chromium.content_public.browser.WebContentsAccessibility;
import org.chromium.ui.base.EventForwarder;
import org.chromium.ui.base.EventOffsetHandler;
+import org.chromium.base.Log;
+import org.chromium.base.annotations.VerifiesOnO;
+import android.util.SparseArray;
+import android.view.autofill.AutofillValue;
+import org.chromium.ui.base.ViewAndroidDelegate;
@ -760,7 +758,7 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component
/**
* The containing view for {@link WebContents} that exists in the Android UI hierarchy and exposes
* the various {@link View} functionality to it.
@@ -82,6 +88,8 @@ public class ContentView extends FrameLayout
@@ -82,6 +87,8 @@ public class ContentView extends FrameLayout
*/
public static ContentView createContentView(Context context,
@Nullable EventOffsetHandler eventOffsetHandler, @Nullable WebContents webContents) {
@ -769,7 +767,7 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
return new ContentViewApi23(context, eventOffsetHandler, webContents);
}
@@ -549,4 +557,44 @@ public class ContentView extends FrameLayout
@@ -549,4 +556,43 @@ public class ContentView extends FrameLayout
if (wcax != null) wcax.onProvideVirtualStructure(structure, false);
}
}
@ -777,7 +775,6 @@ diff --git a/components/embedder_support/android/java/src/org/chromium/component
+ /**
+ * API level 26 implementation that includes autofill.
+ */
+ @VerifiesOnO
+ public static class ContentViewWithAutofill extends ContentViewApi23 {
+ private ViewAndroidDelegate viewAndroidDelegate;
+

View file

@ -389,7 +389,7 @@ diff --git a/chrome/browser/flags/android/java/src/org/chromium/chrome/browser/f
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
@@ -4585,6 +4585,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
@@ -4588,6 +4588,19 @@ To change this setting, <ph name="BEGIN_LINK">&lt;resetlink&gt;</ph>reset sync<p
Send text to Your Devices
</message>

View file

@ -93,7 +93,7 @@ See also: components/user_scripts/README.md
.../user_scripts/common/script_constants.h | 33 +
components/user_scripts/common/url_pattern.cc | 803 ++++++++++++++++++
components/user_scripts/common/url_pattern.h | 302 +++++++
.../user_scripts/common/url_pattern_set.cc | 334 ++++++++
.../user_scripts/common/url_pattern_set.cc | 335 ++++++++
.../user_scripts/common/url_pattern_set.h | 161 ++++
components/user_scripts/common/user_script.cc | 317 +++++++
components/user_scripts/common/user_script.h | 403 +++++++++
@ -133,7 +133,7 @@ See also: components/user_scripts/README.md
.../renderer/web_ui_injection_host.h | 28 +
.../strings/userscripts_strings.grdp | 55 ++
tools/gritsettings/resource_ids.spec | 6 +
111 files changed, 9579 insertions(+), 2 deletions(-)
111 files changed, 9580 insertions(+), 2 deletions(-)
create mode 100644 components/user_scripts/README.md
create mode 100755 components/user_scripts/android/BUILD.gn
create mode 100644 components/user_scripts/android/java/res/layout/accept_script_item.xml
@ -2498,7 +2498,7 @@ new file mode 100755
+
+#include "file_task_runner.h"
+
+#include "base/sequenced_task_runner.h"
+#include "base/task/sequenced_task_runner.h"
+#include "base/task/lazy_thread_pool_task_runner.h"
+#include "base/task/task_traits.h"
+
@ -5919,7 +5919,7 @@ diff --git a/components/user_scripts/common/url_pattern_set.cc b/components/user
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/url_pattern_set.cc
@@ -0,0 +1,334 @@
@@ -0,0 +1,335 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
@ -6117,7 +6117,8 @@ new file mode 100755
+ if (origin.is_empty())
+ return false;
+ const url::Origin real_origin = url::Origin::Create(origin);
+ DCHECK(real_origin.IsSameOriginWith(url::Origin::Create(origin.GetOrigin())));
+ DCHECK(real_origin.IsSameOriginWith(url::Origin::Create(
+ origin.DeprecatedGetOriginAsURL())));
+ URLPattern origin_pattern(valid_schemes);
+ // Origin adding could fail if |origin| does not match |valid_schemes|.
+ if (origin_pattern.Parse(origin.spec()) !=
@ -8840,7 +8841,7 @@ new file mode 100755
+ FROM_HERE,
+ base::BindOnce(&ScriptInjectionManager::RFOHelper::RunIdle,
+ weak_factory_.GetWeakPtr()),
+ base::TimeDelta::FromMilliseconds(kScriptIdleTimeoutInMs));
+ base::Milliseconds(kScriptIdleTimeoutInMs));
+
+ ExtensionFrameHelper::Get(render_frame())
+ ->ScheduleAtDocumentIdle(

View file

@ -70,7 +70,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
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
@@ -952,6 +952,13 @@ Privacy Sandbox trials are still in active development and are available in sele
@@ -955,6 +955,13 @@ Privacy Sandbox trials are still in active development and are available in sele
Please verify that this is a valid provider or try again later
</message>

View file

@ -152,7 +152,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting
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
@@ -399,6 +399,10 @@ CHAR_LIMIT guidelines:
@@ -402,6 +402,10 @@ CHAR_LIMIT guidelines:
No statistics or crash reports are sent to Google
</message>

View file

@ -36,10 +36,11 @@ Parts of this patch were developed by csagan5, uazo and others.
.../modules/chrome_feature_modules.gni | 3 -
chrome/browser/BUILD.gn | 2 -
chrome/browser/language/android/BUILD.gn | 2 -
.../language/AppLanguagePromoDialog.java | 17 -
.../language/AppLanguagePromoDialog.java | 23 -
.../AppLanguagePreferenceDelegate.java | 8 -
.../language/settings/LanguageSettings.java | 6 -
.../prefetch/prefetch_service_factory.cc | 16 -
.../browser/password_manager/android/BUILD.gn | 2 -
.../push_messaging_service_factory.cc | 8 +-
chrome/browser/ui/BUILD.gn | 3 -
.../webui/chrome_web_ui_controller_factory.cc | 3 -
@ -92,7 +93,7 @@ Parts of this patch were developed by csagan5, uazo and others.
third_party/android_deps/BUILD.gn | 540 +-----------------
.../preconditions/javatests/BUILD.gn | 1 -
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
71 files changed, 63 insertions(+), 2285 deletions(-)
72 files changed, 63 insertions(+), 2293 deletions(-)
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskGcmTaskService.java
delete mode 100644 components/background_task_scheduler/internal/android/java/src/org/chromium/components/background_task_scheduler/internal/BackgroundTaskSchedulerGcmNetworkManager.java
@ -885,7 +886,20 @@ diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/
diff --git a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
--- a/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
+++ b/chrome/browser/language/android/java/src/org/chromium/chrome/browser/language/AppLanguagePromoDialog.java
@@ -464,23 +464,6 @@ public class AppLanguagePromoDialog {
@@ -451,12 +451,6 @@ public class AppLanguagePromoDialog {
mLoadingModal.set(ModalDialogProperties.CUSTOM_VIEW, customView);
- // Only show the modal if the selected language is not installed.
- if (!LanguageSplitInstaller.getInstance().isLanguageSplitInstalled(
- selectedLanguage.getCode())) {
- mModalDialogManager.showDialog(mLoadingModal, ModalDialogManager.ModalDialogType.APP);
- }
-
boolean isSelectedCurrentUI = AppLocaleUtils.isAppLanguagePref(selectedLanguage.getCode());
if (!isSelectedCurrentUI) {
// Only record isTopLanguage if the app language has changed.
@@ -464,23 +458,6 @@ public class AppLanguagePromoDialog {
}
AndroidLanguageMetricsBridge.reportAppLanguagePromptLanguage(
selectedLanguage.isSystemDefault() ? "" : selectedLanguage.getCode());
@ -983,6 +997,25 @@ diff --git a/chrome/browser/offline_pages/prefetch/prefetch_service_factory.cc b
SwitchToFullBrowserImageFetcher(prefetch_service, profile->GetProfileKey());
}
diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/password_manager/android/BUILD.gn
--- a/chrome/browser/password_manager/android/BUILD.gn
+++ b/chrome/browser/password_manager/android/BUILD.gn
@@ -50,7 +50,6 @@ android_library("java") {
":android_backend_java_enums",
":java_resources",
":settings_interface_java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//chrome/browser/device_reauth/android:java",
"//chrome/browser/flags:java",
@@ -117,7 +116,6 @@ junit_binary("password_manager_junit_tests") {
deps = [
":android_backend_java_enums",
":java",
- "$google_play_services_package:google_play_services_basement_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_junit_test_support",
diff --git a/chrome/browser/push_messaging/push_messaging_service_factory.cc b/chrome/browser/push_messaging/push_messaging_service_factory.cc
--- a/chrome/browser/push_messaging/push_messaging_service_factory.cc
+++ b/chrome/browser/push_messaging/push_messaging_service_factory.cc

View file

@ -34,7 +34,7 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
.../chrome/browser/app/ChromeActivity.java | 75 --------
.../AutofillAssistantPreferenceFragment.java | 12 --
.../bookmarks/BookmarkItemsAdapter.java | 51 +----
.../bookmarks/BookmarkPromoHeader.java | 182 +-----------------
.../bookmarks/BookmarkPromoHeader.java | 181 +-----------------
.../ClearBrowsingDataFragmentBasic.java | 5 +-
.../contextualsearch/ContextualSearchUma.java | 5 -
.../browser/customtabs/CustomTabActivity.java | 3 -
@ -46,7 +46,7 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
.../history/HistoryContentManager.java | 10 +-
.../init/ChromeBrowserInitializer.java | 2 -
.../init/ProcessInitializationHandler.java | 4 -
.../chrome/browser/ntp/RecentTabsManager.java | 73 +------
.../chrome/browser/ntp/RecentTabsManager.java | 72 +------
.../browser/ntp/RecentTabsRowAdapter.java | 6 -
.../browser/omaha/RequestGenerator.java | 3 -
.../PasswordManagerLauncher.java | 15 +-
@ -64,11 +64,16 @@ ld.lld: error: undefined symbol: notifier::NotifierOptions::NotifierOptions()
.../identity_services_provider_android.cc | 9 -
.../services/IdentityServicesProvider.java | 14 --
chrome/browser/sync/sync_service_factory.cc | 12 +-
.../strings/android_chrome_strings.grd | 18 --
...onfirmImportSyncDataDialogCoordinator.java | 6 +-
.../signin/ConfirmSyncDataStateMachine.java | 7 -
.../ui/signin/SignOutDialogFragment.java | 12 --
.../AccountPickerDelegateImpl.java | 18 --
.../ui/signin/fre/SigninFirstRunMediator.java | 24 +--
.../strings/android_chrome_strings.grd | 15 --
.../signin/SystemAccountManagerDelegate.java | 30 +--
.../net/HttpNegotiateAuthenticator.java | 88 +--------
.../chromoting/base/OAuthTokenFetcher.java | 2 -
49 files changed, 48 insertions(+), 1215 deletions(-)
54 files changed, 50 insertions(+), 1275 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
@ -965,7 +970,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/BookmarkPromoHeader.java
@@ -18,42 +18,21 @@ import org.chromium.chrome.R;
@@ -18,42 +18,22 @@ import org.chromium.chrome.R;
import org.chromium.chrome.browser.preferences.ChromePreferenceKeys;
import org.chromium.chrome.browser.preferences.SharedPreferencesManager;
import org.chromium.chrome.browser.profiles.Profile;
@ -978,7 +983,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
-import org.chromium.chrome.browser.sync.SyncService;
-import org.chromium.chrome.browser.ui.signin.PersonalizedSigninPromoView;
-import org.chromium.chrome.browser.ui.signin.SigninPromoController;
-import org.chromium.chrome.browser.ui.signin.SigninPromoController.SyncPromoState;
import org.chromium.chrome.browser.ui.signin.SigninPromoController.SyncPromoState;
-import org.chromium.components.signin.AccountManagerFacade;
-import org.chromium.components.signin.AccountManagerFacadeProvider;
-import org.chromium.components.signin.AccountsChangeObserver;
@ -1009,7 +1014,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
/**
* Initializes the class. Note that this will start listening to signin related events and
@@ -62,42 +41,12 @@ class BookmarkPromoHeader implements SyncService.SyncStateChangedListener, SignI
@@ -62,42 +42,12 @@ class BookmarkPromoHeader implements SyncService.SyncStateChangedListener, SignI
BookmarkPromoHeader(Context context, Runnable promoHeaderChangeAction) {
mContext = context;
mPromoHeaderChangeAction = promoHeaderChangeAction;
@ -1052,7 +1057,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
}
/**
@@ -108,58 +57,11 @@ class BookmarkPromoHeader implements SyncService.SyncStateChangedListener, SignI
@@ -108,58 +58,11 @@ class BookmarkPromoHeader implements SyncService.SyncStateChangedListener, SignI
return mPromoState;
}
@ -1112,7 +1117,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
}
private @SyncPromoState int calculatePromoState() {
@@ -167,90 +69,10 @@ class BookmarkPromoHeader implements SyncService.SyncStateChangedListener, SignI
@@ -167,90 +70,10 @@ class BookmarkPromoHeader implements SyncService.SyncStateChangedListener, SignI
return sPromoStateForTests;
}
@ -1654,7 +1659,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/init/ProcessIni
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsManager.java
@@ -15,18 +15,13 @@ import org.chromium.chrome.browser.invalidation.SessionsInvalidationManager;
@@ -15,17 +15,13 @@ import org.chromium.chrome.browser.invalidation.SessionsInvalidationManager;
import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSession;
import org.chromium.chrome.browser.ntp.ForeignSessionHelper.ForeignSessionTab;
import org.chromium.chrome.browser.profiles.Profile;
@ -1669,11 +1674,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
import org.chromium.chrome.browser.ui.favicon.FaviconHelper.FaviconImageCallback;
import org.chromium.chrome.browser.ui.signin.PersonalizedSigninPromoView;
-import org.chromium.chrome.browser.ui.signin.SigninPromoController;
-import org.chromium.chrome.browser.ui.signin.SigninPromoController.SyncPromoState;
import org.chromium.chrome.browser.ui.signin.SigninPromoController.SyncPromoState;
import org.chromium.components.signin.AccountManagerFacadeProvider;
import org.chromium.components.signin.AccountsChangeObserver;
import org.chromium.components.signin.identitymanager.ConsentLevel;
@@ -40,8 +35,8 @@ import java.util.List;
@@ -40,8 +36,8 @@ import java.util.List;
/**
* Provides the domain logic and data for RecentTabsPage and RecentTabsRowAdapter.
*/
@ -1684,7 +1688,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
/**
* Implement this to receive updates when the page contents change.
*/
@@ -67,15 +62,9 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -67,15 +63,9 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
private List<RecentlyClosedTab> mRecentlyClosedTabs;
private RecentTabsPagePrefs mPrefs;
private RecentlyClosedTabManager mRecentlyClosedTabManager;
@ -1700,7 +1704,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
/**
* Create an RecentTabsManager to be used with RecentTabsPage and RecentTabsRowAdapter.
*
@@ -95,12 +84,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -95,12 +85,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
mRecentlyClosedTabManager = sRecentlyClosedTabManagerForTests != null
? sRecentlyClosedTabManagerForTests
: new RecentlyClosedBridge(profile);
@ -1713,7 +1717,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
mRecentlyClosedTabManager.setTabsUpdatedRunnable(() -> {
updateRecentlyClosedTabs();
@@ -122,14 +105,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -122,14 +106,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
*/
public void destroy() {
mIsDestroyed = true;
@ -1728,7 +1732,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
AccountManagerFacadeProvider.getInstance().removeObserver(this);
mFaviconHelper.destroy();
@@ -158,13 +133,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -158,13 +134,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
}
private void registerObservers() {
@ -1742,7 +1746,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
AccountManagerFacadeProvider.getInstance().addObserver(this);
}
@@ -360,26 +328,7 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -360,26 +329,7 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
}
private @SyncPromoState int calculatePromoState() {
@ -1770,7 +1774,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
}
private void updatePromoState() {
@@ -391,9 +340,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -391,9 +341,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
|| mPromoState == SyncPromoState.PROMO_FOR_SYNC_TURNED_OFF_STATE)
&& (newState == SyncPromoState.PROMO_FOR_SIGNED_IN_STATE
|| newState == SyncPromoState.PROMO_FOR_SIGNED_OUT_STATE);
@ -1780,7 +1784,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
mPromoState = newState;
}
@@ -401,7 +347,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -401,7 +348,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
* Sets up the sync promo view.
*/
void setUpSyncPromoView(PersonalizedSigninPromoView view) {
@ -1788,7 +1792,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ntp/RecentTabsM
}
// SignInStateObserver implementation.
@@ -421,18 +366,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
@@ -421,18 +367,6 @@ public class RecentTabsManager implements SyncService.SyncStateChangedListener,
update();
}
@ -2601,6 +2605,171 @@ diff --git a/chrome/browser/sync/sync_service_factory.cc b/chrome/browser/sync/s
-SyncServiceFactory::GetDefaultFactory() {
- return base::BindRepeating(&BuildSyncService);
-}
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmImportSyncDataDialogCoordinator.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmImportSyncDataDialogCoordinator.java
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmImportSyncDataDialogCoordinator.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmImportSyncDataDialogCoordinator.java
@@ -80,11 +80,7 @@ public class ConfirmImportSyncDataDialogCoordinator {
mKeepSeparateOption =
mConfirmImportSyncDataView.findViewById(R.id.sync_keep_separate_choice);
- boolean isCurrentAccountManaged =
- IdentityServicesProvider.get()
- .getSigninManager(Profile.getLastUsedRegularProfile())
- .getManagementDomain()
- != null;
+ boolean isCurrentAccountManaged = false;
mModel = new PropertyModel.Builder(ModalDialogProperties.ALL_KEYS)
.with(ModalDialogProperties.CANCEL_ON_TOUCH_OUTSIDE, true)
.with(ModalDialogProperties.POSITIVE_BUTTON_TEXT,
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmSyncDataStateMachine.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmSyncDataStateMachine.java
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmSyncDataStateMachine.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/ConfirmSyncDataStateMachine.java
@@ -175,9 +175,6 @@ public class ConfirmSyncDataStateMachine implements ConfirmImportSyncDataDialogC
}
private void requestNewAccountManagementStatus() {
- IdentityServicesProvider.get()
- .getSigninManager(Profile.getLastUsedRegularProfile())
- .isAccountManaged(mNewAccountName, this::setIsNewAccountManaged);
}
private void setIsNewAccountManaged(Boolean isManaged) {
@@ -196,10 +193,6 @@ public class ConfirmSyncDataStateMachine implements ConfirmImportSyncDataDialogC
if (mNewAccountManaged) {
// Show 'logging into managed account' dialog
// This will call back into onConfirm on success.
- mDelegate.showSignInToManagedAccountDialog(this,
- IdentityServicesProvider.get()
- .getSigninManager(Profile.getLastUsedRegularProfile())
- .extractDomainName(mNewAccountName));
} else {
mDelegate.dismissAllDialogs();
progress();
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogFragment.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogFragment.java
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogFragment.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/SignOutDialogFragment.java
@@ -67,12 +67,6 @@ public class SignOutDialogFragment
mGaiaServiceType =
getArguments().getInt(SHOW_GAIA_SERVICE_TYPE_EXTRA, mGaiaServiceType);
}
- String domain = IdentityServicesProvider.get()
- .getSigninManager(Profile.getLastUsedRegularProfile())
- .getManagementDomain();
- if (domain != null) {
- return createDialogForManagedAccount(domain);
- }
return createDialog();
}
@@ -108,12 +102,6 @@ public class SignOutDialogFragment
if (which == AlertDialog.BUTTON_POSITIVE) {
SigninMetricsUtils.logProfileAccountManagementMenu(
ProfileAccountManagementMetrics.SIGNOUT_SIGNOUT, mGaiaServiceType);
- SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(
- Profile.getLastUsedRegularProfile());
- if (signinManager.getManagementDomain() == null) {
- RecordHistogram.recordBooleanHistogram(
- "Signin.UserRequestedWipeDataOnSignout", mWipeUserData.isChecked());
- }
SignOutDialogListener targetFragment = (SignOutDialogListener) getTargetFragment();
targetFragment.onSignOutClicked(mWipeUserData != null && mWipeUserData.isChecked());
}
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/AccountPickerDelegateImpl.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/AccountPickerDelegateImpl.java
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/AccountPickerDelegateImpl.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/account_picker/AccountPickerDelegateImpl.java
@@ -28,7 +28,6 @@ public class AccountPickerDelegateImpl implements AccountPickerDelegate {
private final Tab mCurrentTab;
private final WebSigninBridge.Factory mWebSigninBridgeFactory;
private final String mContinueUrl;
- private final SigninManager mSigninManager;
private final IdentityManager mIdentityManager;
private @Nullable WebSigninBridge mWebSigninBridge;
@@ -43,8 +42,6 @@ public class AccountPickerDelegateImpl implements AccountPickerDelegate {
mCurrentTab = currentTab;
mWebSigninBridgeFactory = webSigninBridgeFactory;
mContinueUrl = continueUrl;
- mSigninManager = IdentityServicesProvider.get().getSigninManager(
- Profile.getLastUsedRegularProfile());
mIdentityManager = IdentityServicesProvider.get().getIdentityManager(
Profile.getLastUsedRegularProfile());
}
@@ -62,27 +59,12 @@ public class AccountPickerDelegateImpl implements AccountPickerDelegate {
// if user retries the sign-in from the error screen, we need to sign out the user
// first before signing in again.
destroyWebSigninBridge();
- // TODO(https://crbug.com/1133752): Revise sign-out reason
- mSigninManager.signOut(SignoutReason.ABORT_SIGNIN);
}
AccountInfoServiceProvider.get().getAccountInfoByEmail(accountEmail).then(accountInfo -> {
mWebSigninBridge =
mWebSigninBridgeFactory.create(Profile.getLastUsedRegularProfile(), accountInfo,
createWebSigninBridgeListener(
mCurrentTab, mContinueUrl, onSignInErrorCallback));
- mSigninManager.signin(AccountUtils.createAccountFromName(accountEmail),
- new SigninManager.SignInCallback() {
- @Override
- public void onSignInComplete() {
- // After the sign-in is finished in Chrome, we still need to wait for
- // WebSigninBridge to be called to redirect to the continue url.
- }
-
- @Override
- public void onSignInAborted() {
- AccountPickerDelegateImpl.this.destroyWebSigninBridge();
- }
- });
});
}
diff --git a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java
--- a/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java
+++ b/chrome/browser/ui/android/signin/java/src/org/chromium/chrome/browser/ui/signin/fre/SigninFirstRunMediator.java
@@ -80,10 +80,7 @@ class SigninFirstRunMediator implements AccountsChangeObserver, ProfileDataCache
void onNativeAndPolicyLoaded(boolean hasPolicies) {
mModel.set(SigninFirstRunProperties.ARE_NATIVE_AND_POLICY_LOADED, true);
mModel.set(SigninFirstRunProperties.FRE_POLICY, hasPolicies ? new FrePolicy() : null);
- final boolean isSigninSupported = ExternalAuthUtils.getInstance().canUseGooglePlayServices()
- && !IdentityServicesProvider.get()
- .getSigninManager(Profile.getLastUsedRegularProfile())
- .isSigninDisabledByPolicy();
+ final boolean isSigninSupported = false;
mModel.set(SigninFirstRunProperties.IS_SIGNIN_SUPPORTED, isSigninSupported);
}
@@ -146,21 +143,6 @@ class SigninFirstRunMediator implements AccountsChangeObserver, ProfileDataCache
mDelegate.acceptTermsOfService();
return;
}
- final SigninManager signinManager = IdentityServicesProvider.get().getSigninManager(
- Profile.getLastUsedRegularProfile());
- signinManager.onFirstRunCheckDone();
- signinManager.signin(
- AccountUtils.createAccountFromName(mSelectedAccountName), new SignInCallback() {
- @Override
- public void onSignInComplete() {
- mDelegate.acceptTermsOfService();
- }
-
- @Override
- public void onSignInAborted() {
- // TODO(crbug/1248090): Handle the sign-in error here
- }
- });
}
/**
@@ -173,10 +155,6 @@ class SigninFirstRunMediator implements AccountsChangeObserver, ProfileDataCache
if (IdentityServicesProvider.get()
.getIdentityManager(Profile.getLastUsedRegularProfile())
.hasPrimaryAccount(ConsentLevel.SIGNIN)) {
- IdentityServicesProvider.get()
- .getSigninManager(Profile.getLastUsedRegularProfile())
- .signOut(SignoutReason.ABORT_SIGNIN, mDelegate::acceptTermsOfService,
- /* forceWipeUserData= */ false);
} else {
mDelegate.acceptTermsOfService();
}
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
@ -2614,13 +2783,10 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<message name="IDS_SIGNIN_PREF_SUMMARY" desc="Summary for the entry in Settings to sign in to Chrome, explaining benefits of signing in.">
Sync and personalize across devices
</message>
@@ -336,21 +333,6 @@ CHAR_LIMIT guidelines:
<message name="IDS_PRELOAD_PAGES_SUMMARY" desc="Summary for a checkbox in Settings that controls pages preloading and informs the user about the data shared by this feature.">
Preloads pages that Chrome thinks you might visit. To do this, Chrome may use cookies, if you allow cookies, and may encrypt and send pages through Google to hide your identity from sites.
@@ -339,18 +336,6 @@ CHAR_LIMIT guidelines:
<message name="IDS_URL_KEYED_ANONYMIZED_DATA_TITLE" desc="Title for a checkbox in Settings that controls non-personalized URL collection and informs the user about the data shared by this feature.">
Make searches and browsing better
</message>
- <message name="IDS_URL_KEYED_ANONYMIZED_DATA_TITLE" desc="Title for a checkbox in Settings that controls non-personalized URL collection and informs the user about the data shared by this feature.">
- Make searches and browsing better
- </message>
- <message name="IDS_URL_KEYED_ANONYMIZED_DATA_SUMMARY" desc="Summary for a checkbox in Settings that controls non-personalized URL collection and informs the user about the data shared by this feature.">
- Sends URLs of pages you visit to Google
- </message>

View file

@ -11,6 +11,7 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
.../feedback/ChromeFeedbackCollector.java | 1 +
.../feedback/SimplifiedNtpFeedbackSource.java | 38 +++++++++++
.../NativePageNavigationDelegateImpl.java | 4 +-
.../chrome/browser/ntp/NewTabPage.java | 2 -
.../chrome/browser/ntp/NewTabPageLayout.java | 30 ++++++++-
.../SuggestionsNavigationDelegate.java | 17 +++++
chrome/browser/about_flags.cc | 3 +
@ -21,7 +22,7 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
.../browser/flags/ChromeFeatureList.java | 1 +
components/ntp_snippets/features.cc | 6 +-
.../variations/fieldtrial_testing_config.json | 18 +++++
17 files changed, 198 insertions(+), 5 deletions(-)
18 files changed, 198 insertions(+), 7 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
@ -203,6 +204,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/native_page/Nat
protected final Activity mActivity;
protected final NativePageHost mHost;
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
@@ -808,8 +808,6 @@ public class NewTabPage implements NativePage, InvalidationAwareThumbnailProvide
@Override
public void destroy() {
assert !mIsDestroyed;
- assert !ViewCompat
- .isAttachedToWindow(getView()) : "Destroy called before removed from window";
if (mIsLoaded && !mTab.isHidden()) recordNTPHidden();
mNewTabPageManager.onDestroy();
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

View file

@ -210,7 +210,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
if (mCategory.showSites(SiteSettingsCategory.Type.SOUND)) {
allowSpecifyingExceptions = true;
+ } else if (mCategory.showSites(SiteSettingsCategory.Type.AUTOPLAY)) {
+ exception = true;
+ allowSpecifyingExceptions = true;
} else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT)) {
allowSpecifyingExceptions = true;
} else if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {

View file

@ -198,11 +198,11 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
if (mRequiresFourStateSetting) {
resource = cookieSettingsExceptionShouldBlock()
@@ -742,6 +744,8 @@ public class SingleCategorySettings extends SiteSettingsPreferenceFragment
exception = true;
allowSpecifyingExceptions = true;
} else if (mCategory.showSites(SiteSettingsCategory.Type.JAVASCRIPT)) {
allowSpecifyingExceptions = true;
+ } else if (mCategory.showSites(SiteSettingsCategory.Type.IMAGES)) {
+ exception = true;
+ allowSpecifyingExceptions = true;
} else if (mCategory.showSites(SiteSettingsCategory.Type.COOKIES)) {
allowSpecifyingExceptions = true;
} else if (mCategory.showSites(SiteSettingsCategory.Type.BACKGROUND_SYNC)

View file

@ -423,7 +423,7 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
browserContextHandle, ContentSettingsType.AUTO_DARK_WEB_CONTENT)) {
allowSpecifyingExceptions = true;
+ } else if (mCategory.showSites(SiteSettingsCategory.Type.TIMEZONE_OVERRIDE)) {
+ exception = true;
+ allowSpecifyingExceptions = true;
}
if (allowSpecifyingExceptions) {
getPreferenceScreen().addPreference(new AddExceptionPreference(getStyledContext(),