Patches for 140 (final version)

This commit is contained in:
Carmelo Messina
2025-09-04 11:47:44 +02:00
parent d15b126de7
commit acd8cb66d7
33 changed files with 6134 additions and 1019 deletions
@@ -17,7 +17,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../app/bookmarks/BookmarkActivity.java | 31 ++
.../native_page/NativePageFactory.java | 9 +-
chrome/browser/BUILD.gn | 11 +-
.../bookmarks/android/bookmark_bridge.cc | 266 ++++++++++++++++
.../bookmarks/android/bookmark_bridge.cc | 197 ++++++++++++
.../bookmarks/android/bookmark_bridge.h | 30 +-
.../browser/bookmarks/BookmarkBridge.java | 39 +++
.../browser/bookmarks/BookmarkDelegate.java | 10 +
@@ -36,9 +36,10 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/importer/profile_writer.h | 6 +
.../preferences/ChromePreferenceKeys.java | 3 +
.../strings/android_chrome_strings.grd | 18 ++
chrome/common/BUILD.gn | 3 +
chrome/utility/BUILD.gn | 5 +
chrome/utility/BUILD.gn | 7 +
.../importer/bookmarks_file_importer.cc | 4 +
.../headless_select_file_dialog.cc | 4 +
.../content/content_bookmark_parser_utils.cc | 3 +
.../add-bookmark-import-export-actions.inc | 12 +
.../add-bookmark-import-export-actions.inc | 4 +
.../add-bookmark-import-export-actions.inc | 1 +
@@ -50,7 +51,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
ui/shell_dialogs/select_file_dialog_linux.cc | 4 +
ui/shell_dialogs/select_file_dialog_linux.h | 2 +
ui/shell_dialogs/select_file_dialog_win.cc | 5 +
39 files changed, 872 insertions(+), 24 deletions(-)
40 files changed, 809 insertions(+), 24 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-bookmark-import-export-actions.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_h/add-bookmark-import-export-actions.inc
@@ -268,7 +269,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
configs += [
"//build/config/compiler:wexit_time_destructors",
"//build/config:precompiled_headers",
@@ -3697,8 +3706,6 @@ static_library("browser") {
@@ -3704,8 +3713,6 @@ static_library("browser") {
"bookmarks/bookmark_expanded_state_tracker.h",
"bookmarks/bookmark_expanded_state_tracker_factory.cc",
"bookmarks/bookmark_expanded_state_tracker_factory.h",
@@ -280,19 +281,20 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browser/bookmarks/android/bookmark_bridge.cc
--- a/chrome/browser/bookmarks/android/bookmark_bridge.cc
+++ b/chrome/browser/bookmarks/android/bookmark_bridge.cc
@@ -68,6 +68,27 @@
@@ -68,6 +68,28 @@
#include "content/public/browser/web_contents.h"
#include "url/gurl.h"
+#include "base/android/content_uri_utils.h"
+#include "base/android/path_utils.h"
+#include "base/strings/utf_string_conversions.h"
+#include "chrome/utility/importer/bookmark_html_reader.h"
+#include "chrome/browser/bookmarks/bookmark_html_writer.h"
+#include "chrome/browser/importer/profile_writer.h"
+#include "chrome/browser/platform_util.h"
+#include "chrome/browser/ui/chrome_select_file_policy.h"
+#include "components/user_data_importer/common/imported_bookmark_entry.h"
+#include "components/user_data_importer/content/content_bookmark_parser.h"
+#include "components/user_data_importer/content/content_bookmark_parser_utils.h"
+#include "chrome/common/url_constants.h"
+#include "components/favicon_base/favicon_usage_data.h"
+#include "components/search_engines/template_url.h"
@@ -308,65 +310,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
// Must come after all headers that specialize FromJniType() / ToJniType().
#include "chrome/browser/bookmarks/android/jni_headers/BookmarkBridge_jni.h"
@@ -86,6 +107,57 @@ using bookmarks::android::JavaBookmarkIdGetType;
using content::BrowserThread;
using power_bookmarks::PowerBookmarkMeta;
+namespace internal {
+
+// Returns true if |url| has a valid scheme that we allow to import. We
+// filter out the URL with a unsupported scheme.
+bool CanImportURL(const GURL& url) {
+ // The URL is not valid.
+ if (!url.is_valid())
+ return false;
+
+ // Filter out the URLs with unsupported schemes.
+ const char* const kInvalidSchemes[] = {"wyciwyg", "place"};
+ for (size_t i = 0; i < std::size(kInvalidSchemes); ++i) {
+ if (url.SchemeIs(kInvalidSchemes[i]))
+ return false;
+ }
+
+ // Check if |url| is about:blank.
+ if (url == url::kAboutBlankURL)
+ return true;
+
+ // If |url| starts with chrome:// or about:, check if it's one of the URLs
+ // that we support.
+ if (url.SchemeIs(content::kChromeUIScheme) ||
+ url.SchemeIs(url::kAboutScheme)) {
+ if (url.host_piece() == chrome::kChromeUIAboutHost)
+ return true;
+
+ GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string()));
+ const base::span<const base::cstring_view> hosts = chrome::ChromeURLHosts();
+ for (const base::cstring_view host : hosts) {
+ if (fixed_url.DomainIs(host)) {
+ return true;
+ }
+ }
+
+ if (base::Contains(chrome::ChromeDebugURLs(), fixed_url.spec())) {
+ return true;
+ }
+
+ // If url has either chrome:// or about: schemes but wasn't found in the
+ // above lists, it means we don't support it, so we don't allow the user
+ // to import it.
+ return false;
+ }
+
+ // Otherwise, we assume the url has a valid (importable) scheme.
+ return true;
+}
+
+} // internal
+
namespace {
// The key used to connect the instance of the bookmark bridge to the bookmark
// model.
@@ -296,6 +368,10 @@ BookmarkBridge::~BookmarkBridge() {
@@ -296,6 +318,10 @@ BookmarkBridge::~BookmarkBridge() {
partner_bookmarks_shim_observation_.Reset();
bookmark_model_observation_.Reset();
profile_observation_.Reset();
@@ -377,7 +321,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
}
void BookmarkBridge::Destroy(JNIEnv* env) {
@@ -847,6 +923,196 @@ jint BookmarkBridge::GetTotalBookmarkCount(
@@ -847,6 +873,177 @@ jint BookmarkBridge::GetTotalBookmarkCount(
return count;
}
@@ -525,43 +469,24 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+}
+
+void BookmarkBridge::FileSelectedImplOnUIThread(const base::FilePath& path,
+ const std::string& contents) {
+ const std::string& contents) {
+ if (contents.empty())
+ return;
+
+ // the following import logic comes from BookmarksFileImporter class
+ std::vector<user_data_importer::ImportedBookmarkEntry> bookmarks;
+ std::vector<user_data_importer::SearchEngineInfo> search_engines;
+ favicon_base::FaviconUsageDataList favicons;
+
+ bookmark_html_reader::ImportBookmarksFile(
+ base::RepeatingCallback<bool(void)>(),
+ base::BindRepeating(internal::CanImportURL),
+ contents,
+ &bookmarks,
+ &search_engines,
+ &favicons);
+ user_data_importer::BookmarkParser::ParsedBookmarks parsed_bookmarks =
+ user_data_importer::ParseBookmarksUnsafe(contents);
+
+ auto *writer = new ProfileWriter(profile_);
+
+ if (!bookmarks.empty()) {
+ if (!parsed_bookmarks.bookmarks.empty()) {
+ // adding bookmarks will begin extensive changes to the model
+ writer->AddBookmarksWithModel(bookmark_model_, bookmarks, u"Imported");
+ }
+ if (!search_engines.empty()) {
+ TemplateURLService::OwnedTemplateURLVector owned_template_urls;
+ for (const auto& search_engine : search_engines) {
+ std::unique_ptr<TemplateURL> owned_template_url = CreateTemplateURL(
+ search_engine.url, search_engine.keyword, search_engine.display_name);
+ if (owned_template_url)
+ owned_template_urls.push_back(std::move(owned_template_url));
+ }
+ writer->AddKeywords(std::move(owned_template_urls), false);
+ writer->AddBookmarksWithModel(bookmark_model_, parsed_bookmarks.bookmarks, u"Imported");
+ }
+
+ std::stringstream message;
+ message << "Imported " << bookmarks.size() << " bookmarks and " <<
+ search_engines.size() << " search engines from " << path.MaybeAsASCII();
+ message << "Imported " << parsed_bookmarks.bookmarks.size() << " bookmarks " <<
+ " from " << path.MaybeAsASCII();
+ auto result = message.str();
+
+ select_file_dialog_->ShowToast(result);
@@ -987,7 +912,7 @@ diff --git a/chrome/browser/bookmarks/android/java/src/org/chromium/chrome/brows
+ // use the download ui and standard file saving
+ DownloadLocationDialogController controller = new DownloadLocationDialogController() {
+ @Override
+ public void onDownloadLocationDialogComplete(String returnedPath) {}
+ public void onDownloadLocationDialogComplete(String returnedPath, boolean didUserConfirm) {}
+
+ @Override
+ public void onDownloadLocationDialogCanceled() {}
@@ -1435,34 +1360,39 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<message name="IDS_NOTIFICATION_CATEGORY_VR" desc="Label for notifications in VR, within a list of notification categories. [CHAR_LIMIT=32]">
Virtual Reality
</message>
diff --git a/chrome/common/BUILD.gn b/chrome/common/BUILD.gn
--- a/chrome/common/BUILD.gn
+++ b/chrome/common/BUILD.gn
@@ -339,6 +339,9 @@ static_library("common_lib") {
"chrome_descriptors_android.h",
"media/chrome_media_drm_bridge_client.cc",
"media/chrome_media_drm_bridge_client.h",
+ ## Bromite dependencies for bookmark import functionality
+ "//components/user_data_importer/common/imported_bookmark_entry.cc",
+ "//components/user_data_importer/common/imported_bookmark_entry.h",
]
} else {
# Non-Android.
diff --git a/chrome/utility/BUILD.gn b/chrome/utility/BUILD.gn
--- a/chrome/utility/BUILD.gn
+++ b/chrome/utility/BUILD.gn
@@ -222,6 +222,11 @@ static_library("utility") {
@@ -222,6 +222,13 @@ static_library("utility") {
deps += [ "//chrome/services/pdf:lib" ]
}
+ sources += [
+ "importer/bookmark_html_reader.cc",
+ "importer/bookmark_html_reader.h",
+ ]
+ if (is_android) {
+ sources += [
+ "importer/bookmarks_file_importer.cc",
+ "importer/bookmarks_file_importer.h",
+ ]
+ }
+
# NSS decryptor is not needed on ChromeOS.
if (!is_chromeos && use_nss_certs) {
sources += [
diff --git a/chrome/utility/importer/bookmarks_file_importer.cc b/chrome/utility/importer/bookmarks_file_importer.cc
--- a/chrome/utility/importer/bookmarks_file_importer.cc
+++ b/chrome/utility/importer/bookmarks_file_importer.cc
@@ -103,8 +103,12 @@ void BookmarksFileImporter::StartImport(
user_data_importer::ParseBookmarksUnsafe(raw_html);
if (!parsed_bookmarks.bookmarks.empty()) {
+#if BUILDFLAG(IS_ANDROID)
+ std::u16string first_folder_name;
+#else
std::u16string first_folder_name =
bridge_->GetLocalizedString(IDS_BOOKMARK_GROUP);
+#endif
std::erase_if(parsed_bookmarks.bookmarks,
[](user_data_importer::ImportedBookmarkEntry bookmark) {
return !internal::CanImportURL(bookmark.url);
diff --git a/components/headless/select_file_dialog/headless_select_file_dialog.cc b/components/headless/select_file_dialog/headless_select_file_dialog.cc
--- a/components/headless/select_file_dialog/headless_select_file_dialog.cc
+++ b/components/headless/select_file_dialog/headless_select_file_dialog.cc
@@ -1477,6 +1407,29 @@ diff --git a/components/headless/select_file_dialog/headless_select_file_dialog.
SelectFileDialogCallback callback_;
};
diff --git a/components/user_data_importer/content/content_bookmark_parser_utils.cc b/components/user_data_importer/content/content_bookmark_parser_utils.cc
--- a/components/user_data_importer/content/content_bookmark_parser_utils.cc
+++ b/components/user_data_importer/content/content_bookmark_parser_utils.cc
@@ -89,6 +89,7 @@ std::optional<base::Time> GetTimeAttribute(const std::string& attribute_list,
// Given the URL of a page and a favicon data URL, adds an appropriate record
// to the given favicon usage vector.
+[[maybe_unused]]
void DataURLToFaviconUsage(const GURL& link_url,
const GURL& favicon_data,
favicon_base::FaviconUsageDataList* favicons) {
@@ -438,9 +439,11 @@ BookmarkParser::ParsedBookmarks ParseBookmarksUnsafe(
}
parsing_result.bookmarks.push_back(std::move(entry));
+#if !BUILDFLAG(IS_ANDROID)
// Save the favicon. DataURLToFaviconUsage will handle the case where
// there is no favicon.
DataURLToFaviconUsage(url, favicon, &parsing_result.favicons);
+#endif
continue;
}
diff --git a/cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc b/cromite_flags/chrome/browser/about_flags_cc/add-bookmark-import-export-actions.inc
new file mode 100644
--- /dev/null
@@ -14,8 +14,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../java/res/xml/privacy_preferences.xml | 15 ++++++
.../browser/LaunchIntentDispatcher.java | 21 ++++++++
.../CustomTabIntentDataProvider.java | 4 +-
.../customtabs/CustomTabsConnection.java | 1 +
.../CustomTabIntentDataProvider.java | 22 ++++----
.../customtabs/CustomTabsConnection.java | 3 +-
.../IncognitoCustomTabIntentDataProvider.java | 14 +++++
.../privacy/settings/PrivacySettings.java | 51 +++++++++++++++++++
.../flags/android/chrome_feature_list.cc | 2 +-
@@ -25,7 +25,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../OriginVerifier.java | 5 ++
.../core/common/language_experiments.cc | 1 +
.../add-custom-tab-intents-privacy-option.inc | 1 +
13 files changed, 146 insertions(+), 3 deletions(-)
13 files changed, 156 insertions(+), 13 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-custom-tab-intents-privacy-option.grdp
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
@@ -109,6 +109,49 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/LaunchIntentDis
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabIntentDataProvider.java
@@ -233,16 +233,16 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
// Extra whose value is an array of ints that is supplied to
// SyntheticTrialRegistry::RegisterExternalExperiments().
- public static final String EXPERIMENT_IDS =
- "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS";
+ // public static final String EXPERIMENT_IDS =
+ // "org.chromium.chrome.browser.customtabs.AGA_EXPERIMENT_IDS";
// These Extra Intent parameters allow an Intent to enable or disable a set of Features.
// The set of Features that may be enabled or disabled is restricted by the code,
// and initially only two Features may be enabled together, or disabled together.
- public static final String EXPERIMENTS_ENABLE =
- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE";
- public static final String EXPERIMENTS_DISABLE =
- "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE";
+ // public static final String EXPERIMENTS_ENABLE =
+ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_ENABLE";
+ // public static final String EXPERIMENTS_DISABLE =
+ // "org.chromium.chrome.browser.customtabs.EXPERIMENTS_DISABLE";
/**
* Extra that, if set, makes the Custom Tab Activity's height to be x pixels, the Custom Tab
@@ -682,7 +682,7 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
TrustedWebActivityIntentBuilder.EXTRA_SCREEN_ORIENTATION,
ScreenOrientation.DEFAULT));
- mGsaExperimentIds = IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS);
+ mGsaExperimentIds = null; //IntentUtils.safeGetIntArrayExtra(intent, EXPERIMENT_IDS);
mBreakPointDp = getActivityBreakPointFromIntent(intent);
mInitialActivityHeight = getInitialActivityHeightFromIntent(intent);
@@ -695,8 +695,8 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
intent, EXTRA_ACTIVITY_HEIGHT_RESIZE_BEHAVIOR, ACTIVITY_HEIGHT_DEFAULT);
mIsPartialCustomTabFixedHeight = activityHeightResizeBehavior == ACTIVITY_HEIGHT_FIXED;
- mInteractWithBackground = CustomTabsIntent.isBackgroundInteractionEnabled(intent);
- if (IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) {
+ mInteractWithBackground = false; // CustomTabsIntent.isBackgroundInteractionEnabled(intent);
+ if (((false)) && IntentUtils.safeHasExtra(intent, EXTRA_ENABLE_BACKGROUND_INTERACTION)) {
@BackgroundInteractBehavior
int backgroundInteractBehavior =
IntentUtils.safeGetIntExtra(
@@ -1267,7 +1267,9 @@ public class CustomTabIntentDataProvider extends BrowserServicesIntentDataProvid
public @CustomTabProfileType int getCustomTabMode() {
return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito()
@@ -123,6 +166,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/customtabs/CustomTabsConnection.java
@@ -780,7 +780,7 @@ public class CustomTabsConnection {
ThreadUtils.assertOnUiThread();
if (extras == null) return;
int[] experimentIds =
- IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS);
+ null; //IntentUtils.safeGetIntArray(extras, CustomTabIntentDataProvider.EXPERIMENT_IDS);
if (experimentIds == null) return;
// When ids are set through cct, they should not override existing ids.
boolean override = false;
@@ -996,6 +996,7 @@ public class CustomTabsConnection {
PostTask.postTask(
TaskTraits.UI_DEFAULT,
@@ -379,5 +431,5 @@ new file mode 100644
--- /dev/null
+++ b/cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/add-custom-tab-intents-privacy-option.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kCCTIntentFeatureOverrides);
+// explicitly empty
--
@@ -79,8 +79,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../permission_prompt_android.cc | 8 +-
.../permission_prompt_android.h | 3 +-
.../android/permissions_android_strings.grd | 17 ++++
.../geolocation_permission_context_android.cc | 27 ++++--
.../geolocation_permission_context_android.h | 10 ++-
.../geolocation_permission_context_android.cc | 30 +++++--
.../geolocation_permission_context_android.h | 8 ++
.../embedded_permission_prompt_flow_model.cc | 2 +-
.../permissions/permission_context_base.cc | 64 ++++++++++++--
.../permissions/permission_context_base.h | 26 +++++-
@@ -89,7 +89,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/permissions/permission_request.h | 18 +++-
.../permissions/permission_request_manager.cc | 45 ++++++----
.../permissions/permission_request_manager.h | 11 ++-
37 files changed, 506 insertions(+), 73 deletions(-)
37 files changed, 507 insertions(+), 73 deletions(-)
diff --git a/chrome/browser/permissions/last_tab_standing_tracker.cc b/chrome/browser/permissions/last_tab_standing_tracker.cc
--- a/chrome/browser/permissions/last_tab_standing_tracker.cc
@@ -285,8 +285,8 @@ diff --git a/components/browser_ui/site_settings/android/java/src/org/chromium/c
.getDefaultColor());
}
}
+ if (isSessionPermission(contentType)) {
+ switchPreference.setSummary(switchPreference.getSummary() + " " +
+ if (preference instanceof ChromeSwitchPreference && isSessionPermission(contentType)) {
+ ((ChromeSwitchPreference)preference).setSummary(preference.getSummary() + " " +
+ getString(R.string.page_info_android_permission_session_permission));
+ }
}
@@ -852,37 +852,38 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
bool is_default_search =
IsRequestingOriginDSE(request_data.requesting_origin);
if (decision == PermissionDecision::kAllow &&
@@ -210,7 +221,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -209,7 +220,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin,
request_data.embedding_origin,
std::move(callback), false /* persist */,
PermissionDecision::kDeny,
- request_data.prompt_options);
+ request_data.prompt_options, lifetime_option);
- PermissionDecision::kDeny,
+ PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options);
return;
}
@@ -231,7 +242,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -230,7 +241,7 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin,
request_data.embedding_origin,
std::move(callback), false /* persist */,
PermissionDecision::kDeny,
- request_data.prompt_options);
+ request_data.prompt_options, lifetime_option);
- PermissionDecision::kDeny,
+ PermissionDecision::kDeny, lifetime_option,
request_data.prompt_options);
return;
}
@@ -244,13 +255,13 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
@@ -243,14 +254,14 @@ void GeolocationPermissionContextAndroid::NotifyPermissionSet(
base::BindOnce(
&GeolocationPermissionContextAndroid::OnLocationSettingsDialogShown,
weak_factory_.GetWeakPtr(), request_data.requesting_origin,
request_data.embedding_origin, persist, decision,
- request_data.prompt_options));
+ request_data.prompt_options, lifetime_option));
- request_data.embedding_origin, persist, decision,
+ request_data.embedding_origin, persist, decision, lifetime_option,
request_data.prompt_options));
return;
}
FinishNotifyPermissionSet(request_data.id, request_data.requesting_origin,
request_data.embedding_origin, std::move(callback),
- persist, decision, request_data.prompt_options);
+ persist, decision, request_data.prompt_options, lifetime_option);
+ persist, decision, lifetime_option, request_data.prompt_options);
}
content::PermissionResult
@@ -900,25 +901,29 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
requesting_origin, embedding_origin,
std::move(location_settings_dialog_callback_),
- persist, decision, prompt_options);
+ persist, decision, prompt_options, lifetime_option);
+ persist, decision, lifetime_option, prompt_options);
location_settings_dialog_request_id_ =
PermissionRequestID(content::GlobalRenderFrameHostId(0, 0),
@@ -461,7 +472,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
@@ -460,7 +471,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
const GURL& embedding_origin,
BrowserPermissionCallback callback,
bool persist,
PermissionDecision decision,
- std::optional<PromptOptions> prompt_options) {
+ std::optional<PromptOptions> prompt_options, content_settings::mojom::LifetimeMode lifetime_option) {
- PermissionDecision decision,
+ PermissionDecision decision, content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options) {
PermissionRequestData request_data(
this, id,
content::PermissionRequestDescription(
@@ -471,7 +482,7 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
@@ -469,9 +480,10 @@ void GeolocationPermissionContextAndroid::FinishNotifyPermissionSet(
blink::PermissionType::GEOLOCATION)),
requesting_origin, embedding_origin);
request_data.prompt_options = prompt_options.value_or(std::monostate());
GeolocationPermissionContext::NotifyPermissionSet(
- GeolocationPermissionContext::NotifyPermissionSet(
+ GeolocationPermissionContext::NotifyPermissionSetImpl(
request_data,
- std::move(callback), persist, decision, /*is_final_decision=*/true);
+ std::move(callback), persist, decision, /*is_final_decision=*/true, lifetime_option);
+ std::move(callback), persist, decision, /*is_final_decision=*/true,
+ /*use_lifetime_option*/ true, lifetime_option);
}
void GeolocationPermissionContextAndroid::SetLocationSettingsForTesting(
@@ -938,24 +943,22 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
content::PermissionResult UpdatePermissionStatusWithDeviceStatus(
content::WebContents* web_contents,
content::PermissionResult result,
@@ -137,6 +143,7 @@ class GeolocationPermissionContextAndroid
@@ -136,6 +142,7 @@ class GeolocationPermissionContextAndroid
const GURL& embedding_origin,
bool persist,
PermissionDecision decision,
std::optional<PromptOptions> prompt_options,
+ content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options,
LocationSettingsDialogOutcome prompt_outcome);
void FinishNotifyPermissionSet(const PermissionRequestID& id,
@@ -145,7 +152,8 @@ class GeolocationPermissionContextAndroid
@@ -145,6 +152,7 @@ class GeolocationPermissionContextAndroid
BrowserPermissionCallback callback,
bool persist,
PermissionDecision decision,
- std::optional<PromptOptions> prompt_options);
+ std::optional<PromptOptions> prompt_options,
+ content_settings::mojom::LifetimeMode lifetime_option);
+ content_settings::mojom::LifetimeMode lifetime_option,
std::optional<PromptOptions> prompt_options);
std::unique_ptr<LocationSettings> location_settings_;
diff --git a/components/permissions/embedded_permission_prompt_flow_model.cc b/components/permissions/embedded_permission_prompt_flow_model.cc
--- a/components/permissions/embedded_permission_prompt_flow_model.cc
+++ b/components/permissions/embedded_permission_prompt_flow_model.cc
@@ -1069,7 +1072,7 @@ diff --git a/components/permissions/permission_context_base.cc b/components/perm
+}
+
+void PermissionContextBase::UpdateSettingImpl(const PermissionRequestData& request_data,
+ base::Value setting,
+ PermissionSetting setting,
+ bool is_one_time,
+ bool use_lifetime_option,
+ content_settings::mojom::LifetimeMode lifetime_option) {
@@ -1112,7 +1115,7 @@ diff --git a/components/permissions/permission_context_base.h b/components/permi
// Store the decided permission state. Virtual since the permission might be
// stored with different restrictions (for example for desktop notifications).
+ void UpdateSettingImpl(const PermissionRequestData& request_data,
+ base::Value setting,
+ PermissionSetting setting,
+ bool is_one_time,
+ bool use_lifetime_option,
+ content_settings::mojom::LifetimeMode lifetime_option);
@@ -20,7 +20,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
TabUtils.setDrawableAndUpdateImageMatrix(thumbnail, result, thumbnailSize);
} else {
- thumbnail.setImageDrawable(null);
+ TabListFaviconProvider.TabFavicon tabFavicon = model.get(TabProperties.FAVICON);
+ TabFavicon tabFavicon = model.get(TabProperties.FAVICON);
+ if (tabFavicon != null) {
+ thumbnail.setScaleType(ImageView.ScaleType.CENTER);
+ thumbnail.setImageDrawable(
@@ -199,7 +199,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
@@ -6067,6 +6067,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
@@ -6194,6 +6194,14 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
Your <ph name="FQDN">%1$s<ex>www.amazon.com</ex></ph> timer ran out. It'll start again tomorrow.
</message>
+1 -1
View File
@@ -166,7 +166,7 @@ new file mode 100644
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::WEBGL)
+10 -8
View File
@@ -12,9 +12,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../bromite_content_settings/webrtc.inc | 22 +++++
.../bromite_content_settings/WEBRTC.inc | 1 +
.../peer_connection_dependency_factory.cc | 6 ++
.../peerconnection/rtc_rtp_receiver.cc | 10 ++
.../modules/peerconnection/rtc_rtp_sender.cc | 10 ++
7 files changed, 170 insertions(+)
.../peerconnection/rtc_rtp_receiver.cc | 11 +++
.../modules/peerconnection/rtc_rtp_sender.cc | 11 +++
7 files changed, 172 insertions(+)
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteWebRTCContentSetting.java
create mode 100644 components/browser_ui/strings/bromite_content_settings/webrtc.grdp
create mode 100644 components/content_settings/core/browser/bromite_content_settings/webrtc.inc
@@ -164,7 +164,7 @@ new file mode 100644
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::WEBRTC)
@@ -210,16 +210,17 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/peer_connection_d
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
@@ -16,6 +16,8 @@
@@ -16,6 +16,9 @@
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
+#include "third_party/blink/public/platform/web_content_settings_client.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtcp_parameters.h"
@@ -288,6 +290,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
@@ -288,6 +291,14 @@ RTCRtpCapabilities* RTCRtpReceiver::getCapabilities(ScriptState* state,
if (kind != "audio" && kind != "video")
return nullptr;
@@ -237,16 +238,17 @@ diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_sender.cc
@@ -21,6 +21,8 @@
@@ -21,6 +21,9 @@
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/public/platform/modules/webrtc/webrtc_logging.h"
+#include "third_party/blink/public/platform/web_content_settings_client.h"
+#include "third_party/blink/public/web/web_local_frame.h"
+#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/bindings/core/v8/script_promise_resolver.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_encoding_options.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_insertable_streams.h"
@@ -1035,6 +1037,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
@@ -1035,6 +1038,14 @@ RTCRtpCapabilities* RTCRtpSender::getCapabilities(ScriptState* state,
if (kind != "audio" && kind != "video")
return nullptr;
@@ -34,15 +34,15 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
...ndroid-fonts-fingerprinting-mitigation.inc | 5 +
skia/BUILD.gn | 12 +
.../include/ports/SkFontConfigInterface.h | 2 +
.../skia/include/ports/SkFontMgr_android.h | 40 +-
.../skia/include/ports/SkFontMgr_android.h | 42 +-
.../skia/src/ports/SkFontConfigInterface.cpp | 4 +
.../ports/SkFontConfigInterface_direct.cpp | 5 +
.../src/ports/SkFontConfigInterface_direct.h | 1 +
.../skia/src/ports/SkFontMgr_android.cpp | 274 ++-
.../skia/src/ports/SkFontMgr_android.cpp | 279 ++-
.../skia/src/ports/SkFontMgr_android_data.cpp | 1640 +++++++++++++++++
.../src/ports/SkFontMgr_android_parser.cpp | 49 +-
.../skia/src/ports/SkFontMgr_android_parser.h | 5 +-
36 files changed, 2408 insertions(+), 76 deletions(-)
36 files changed, 2415 insertions(+), 76 deletions(-)
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Android-fonts-fingerprinting-mitigation.grdp
create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.cc
create mode 100644 components/component_updater/installer_policies/fonts_pack_component_installer.h
@@ -106,7 +106,7 @@ diff --git a/chrome/android/java/res/xml/developer_preferences.xml b/chrome/andr
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -7944,6 +7944,13 @@ static_library("browser") {
@@ -7951,6 +7951,13 @@ static_library("browser") {
}
}
@@ -884,7 +884,7 @@ diff --git a/third_party/skia/include/ports/SkFontMgr_android.h b/third_party/sk
#include <memory>
@@ -40,9 +45,42 @@ struct SkFontMgr_Android_CustomFonts {
@@ -40,9 +45,44 @@ struct SkFontMgr_Android_CustomFonts {
* system IO resources on initialization.
*/
bool fIsolated;
@@ -925,6 +925,8 @@ diff --git a/third_party/skia/include/ports/SkFontMgr_android.h b/third_party/sk
/** Create a font manager for Android. If 'custom' is NULL, use only system fonts. */
-SK_API sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom,
+SK_API sk_sp<SkFontMgr> SkFontMgr_New_Android(std::unique_ptr<SkFontMgr_Android_CustomFonts> custom);
+
+SK_API sk_sp<SkFontMgr> SkFontMgr_New_Android(std::unique_ptr<SkFontMgr_Android_CustomFonts> custom,
std::unique_ptr<SkFontScanner> scanner);
#endif // SkFontMgr_android_DEFINED
@@ -969,7 +971,15 @@ diff --git a/third_party/skia/src/ports/SkFontConfigInterface_direct.h b/third_p
diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia/src/ports/SkFontMgr_android.cpp
--- a/third_party/skia/src/ports/SkFontMgr_android.cpp
+++ b/third_party/skia/src/ports/SkFontMgr_android.cpp
@@ -27,6 +27,7 @@
@@ -16,6 +16,7 @@
#include "include/core/SkStream.h"
#include "include/core/SkString.h"
#include "include/ports/SkFontMgr_android.h"
+#include "include/ports/SkFontScanner_FreeType.h"
#include "include/private/base/SkFixed.h"
#include "include/private/base/SkTArray.h"
#include "include/private/base/SkTDArray.h"
@@ -27,6 +28,7 @@
#include "src/core/SkTypefaceCache.h"
#include "src/ports/SkFontMgr_android_parser.h"
#include "src/ports/SkTypeface_proxy.h"
@@ -977,7 +987,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
#include <algorithm>
#include <limits>
@@ -36,6 +37,91 @@ using namespace skia_private;
@@ -36,6 +38,91 @@ using namespace skia_private;
class SkData;
namespace {
@@ -1069,7 +1079,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
class SkTypeface_AndroidSystem : public SkTypeface_proxy {
public:
static sk_sp<SkTypeface_AndroidSystem> Make(sk_sp<SkTypeface> realTypeface,
@@ -109,7 +195,8 @@ using StreamForPathCache = skia_private::THashMap<SkString, std::unique_ptr<SkSt
@@ -109,7 +196,8 @@ using StreamForPathCache = skia_private::THashMap<SkString, std::unique_ptr<SkSt
class SkFontStyleSet_Android : public SkFontStyleSet {
public:
explicit SkFontStyleSet_Android(const FontFamily& family, const SkFontScanner* scanner,
@@ -1079,7 +1089,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
const SkString* cannonicalFamilyName = nullptr;
if (!family.fNames.empty()) {
cannonicalFamilyName = &family.fNames[0];
@@ -118,38 +205,60 @@ public:
@@ -118,38 +206,60 @@ public:
// TODO? make this lazy
for (int i = 0; i < family.fFonts.size(); ++i) {
@@ -1163,7 +1173,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
}
uint32_t variant = family.fVariant;
@@ -160,13 +269,25 @@ public:
@@ -160,13 +270,25 @@ public:
// The first specified family name overrides the family name found in the font.
// TODO: SkTypeface_AndroidSystem::onCreateFamilyNameIterator should return
// all of the specified family names in addition to the names found in the font.
@@ -1195,7 +1205,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
int weight = fontFile.fWeight != 0 ? fontFile.fWeight : fontStyle.weight();
SkFontStyle::Slant slant = fontStyle.slant();
switch (fontFile.fStyle) {
@@ -177,6 +298,19 @@ public:
@@ -177,6 +299,19 @@ public:
}
fontStyle = SkFontStyle(weight, fontStyle.width(), slant);
@@ -1215,7 +1225,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
fStyles.push_back(
SkTypeface_AndroidSystem::Make(proxy,
fontStyle, proxy->isFixedPitch(),
@@ -205,15 +339,18 @@ public:
@@ -205,15 +340,18 @@ public:
return fStyles[index];
}
@@ -1237,7 +1247,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
SkString fFallbackFor;
friend struct NameToFamily;
@@ -234,24 +371,26 @@ struct NameToFamily {
@@ -234,24 +372,26 @@ struct NameToFamily {
class SkFontMgr_Android : public SkFontMgr {
public:
@@ -1268,7 +1278,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
}
this->buildNameToFamilyMap(families, custom ? custom->fIsolated : false);
this->findDefaultStyleSet();
@@ -309,33 +448,53 @@ protected:
@@ -309,33 +449,53 @@ protected:
return sset->matchStyle(style);
}
@@ -1337,7 +1347,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
}
}
return nullptr;
@@ -358,7 +517,7 @@ protected:
@@ -358,7 +518,7 @@ protected:
for (int bcp47Index = bcp47Count; bcp47Index --> 0;) {
SkLanguage lang(bcp47[bcp47Index]);
while (!lang.getTag().isEmpty()) {
@@ -1346,7 +1356,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap,
style, SkToBool(elegant),
lang.getTag(), character);
@@ -369,7 +528,7 @@ protected:
@@ -369,7 +529,7 @@ protected:
lang = lang.getParent();
}
}
@@ -1355,7 +1365,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
find_family_style_character(currentFamilyName, fFallbackNameToFamilyMap,
style, SkToBool(elegant),
SkString(), character);
@@ -420,6 +579,7 @@ protected:
@@ -420,6 +580,7 @@ protected:
private:
std::unique_ptr<SkFontScanner> fScanner;
@@ -1363,7 +1373,7 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
TArray<sk_sp<SkFontStyleSet_Android>> fStyleSets;
sk_sp<SkFontStyleSet> fDefaultStyleSet;
@@ -441,7 +601,7 @@ private:
@@ -441,7 +602,7 @@ private:
}
sk_sp<SkFontStyleSet_Android> newSet =
@@ -1372,16 +1382,20 @@ diff --git a/third_party/skia/src/ports/SkFontMgr_android.cpp b/third_party/skia
if (0 == newSet->count()) {
return;
}
@@ -486,7 +646,7 @@ static char const * const gSystemFontUseStrings[] = {
@@ -486,7 +647,11 @@ static char const * const gSystemFontUseStrings[] = {
} // namespace
-sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* custom, std::unique_ptr<SkFontScanner> scanner) {
+sk_sp<SkFontMgr> SkFontMgr_New_Android(std::unique_ptr<SkFontMgr_Android_CustomFonts> custom) {
+ return SkFontMgr_New_Android(std::move(custom), SkFontScanner_Make_FreeType());
+}
+
+sk_sp<SkFontMgr> SkFontMgr_New_Android(std::unique_ptr<SkFontMgr_Android_CustomFonts> custom, std::unique_ptr<SkFontScanner> scanner) {
if (custom) {
SkASSERT(0 <= custom->fSystemFontUse);
SkASSERT(custom->fSystemFontUse < std::size(gSystemFontUseStrings));
@@ -496,5 +656,5 @@ sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust
@@ -496,5 +661,5 @@ sk_sp<SkFontMgr> SkFontMgr_New_Android(const SkFontMgr_Android_CustomFonts* cust
custom->fFontsXml,
custom->fFallbackFontsXml);
}
@@ -15,9 +15,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../modules/webaudio/base_audio_context.cc | 12 ++++++++++++
.../renderer/modules/webaudio/base_audio_context.h | 2 ++
.../modules/webaudio/offline_audio_context.cc | 1 +
.../renderer/modules/webaudio/realtime_analyser.cc | 7 +++++++
.../renderer/modules/webaudio/realtime_analyser.cc | 9 ++++++++-
.../platform/runtime_enabled_features.json5 | 5 ++---
11 files changed, 56 insertions(+), 4 deletions(-)
11 files changed, 57 insertions(+), 5 deletions(-)
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/AudioBuffer-AnalyserNode-fp-mitigations.inc
create mode 100644 cromite_flags/third_party/blink/common/features_h/AudioBuffer-AnalyserNode-fp-mitigations.inc
@@ -196,11 +196,13 @@ diff --git a/third_party/blink/renderer/modules/webaudio/realtime_analyser.cc b/
// Clip to valid range.
UNSAFE_TODO(destination[i]) =
static_cast<unsigned char>(ClampTo(scaled_value, 0, UCHAR_MAX));
@@ -325,6 +331,7 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) {
@@ -324,7 +330,8 @@ void RealtimeAnalyser::ConvertFloatToDb(DOMFloat32Array* destination_array) {
for (unsigned i = 0; i < len; ++i) {
float linear_value = UNSAFE_TODO(source[i]);
double db_mag = audio_utilities::LinearToDecibels(linear_value);
UNSAFE_TODO(destination[i]) = static_cast<float>(db_mag);
+ destination[i] = BaseAudioContext::ShuffleAudioData(destination[i], i);
- UNSAFE_TODO(destination[i]) = static_cast<float>(db_mag);
+ auto v = static_cast<float>(db_mag);
+ UNSAFE_TODO(destination[i]) = BaseAudioContext::ShuffleAudioData(v, i);
}
}
}
@@ -7,45 +7,19 @@ This approach is not comprehensive, see also:
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../execution_context/execution_context.cc | 15 +++++++++
.../execution_context/execution_context.h | 1 +
.../renderer/core/loader/base_fetch_context.h | 1 +
.../core/loader/frame_fetch_context.cc | 20 ++++++++++++
.../core/loader/frame_fetch_context.h | 1 +
.../core/loader/worker_fetch_context.cc | 21 +++++++++++++
.../core/loader/worker_fetch_context.h | 1 +
.../core/workers/installed_scripts_manager.cc | 4 +--
.../core/workers/installed_scripts_manager.cc | 2 +-
.../background_fetch_manager.cc | 31 +++++++++++++++++++
.../websockets/websocket_channel_impl.cc | 5 +++
.../modules/websockets/websocket_common.cc | 30 ++++++++++++++++++
.../modules/websockets/websocket_common.h | 4 +++
12 files changed, 132 insertions(+), 2 deletions(-)
11 files changed, 116 insertions(+), 1 deletion(-)
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.cc b/third_party/blink/renderer/core/execution_context/execution_context.cc
--- a/third_party/blink/renderer/core/execution_context/execution_context.cc
+++ b/third_party/blink/renderer/core/execution_context/execution_context.cc
@@ -710,6 +710,21 @@ void ExecutionContext::WriteIntoTrace(
proto->set_world_type(GetWorldType(*this));
}
+String ExecutionContext::addressSpaceForBindings() const {
+ switch (AddressSpace()) {
+ case network::mojom::IPAddressSpace::kPublic:
+ case network::mojom::IPAddressSpace::kUnknown:
+ return "public";
+
+ case network::mojom::IPAddressSpace::kPrivate:
+ return "private";
+
+ case network::mojom::IPAddressSpace::kLocal:
+ return "local";
+ }
+ NOTREACHED();
+}
+
bool ExecutionContext::CrossOriginIsolatedCapabilityOrDisabledWebSecurity()
const {
return Agent::IsWebSecurityDisabled() || CrossOriginIsolatedCapability();
diff --git a/third_party/blink/renderer/core/execution_context/execution_context.h b/third_party/blink/renderer/core/execution_context/execution_context.h
--- a/third_party/blink/renderer/core/execution_context/execution_context.h
+++ b/third_party/blink/renderer/core/execution_context/execution_context.h
@@ -84,7 +58,7 @@ diff --git a/third_party/blink/renderer/core/loader/frame_fetch_context.cc b/thi
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -133,7 +107,7 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.cc b/th
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -161,12 +135,9 @@ diff --git a/third_party/blink/renderer/core/loader/worker_fetch_context.h b/thi
diff --git a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
--- a/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
+++ b/third_party/blink/renderer/core/workers/installed_scripts_manager.cc
@@ -33,9 +33,9 @@ InstalledScriptsManager::ScriptData::ScriptData(
// place so that this is shareable out of worker code.
response_address_space_ = network::mojom::IPAddressSpace::kPublic;
@@ -35,7 +35,7 @@ InstalledScriptsManager::ScriptData::ScriptData(
if (network_utils::IsReservedIPAddress(script_url_.Host()))
- response_address_space_ = network::mojom::IPAddressSpace::kLocal;
+ response_address_space_ = network::mojom::IPAddressSpace::kPrivate;
response_address_space_ = network::mojom::IPAddressSpace::kLocal;
if (SecurityOrigin::Create(script_url_)->IsLocalhost())
- response_address_space_ = network::mojom::IPAddressSpace::kLoopback;
+ response_address_space_ = network::mojom::IPAddressSpace::kLocal;
@@ -193,7 +164,7 @@ diff --git a/third_party/blink/renderer/modules/background_fetch/background_fetc
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -265,7 +236,7 @@ diff --git a/third_party/blink/renderer/modules/websockets/websocket_common.cc b
+ network::mojom::IPAddressSpace target_space =
+ network::mojom::IPAddressSpace::kPublic;
+ if (network_utils::IsReservedIPAddress(request_url.Host()))
+ target_space = network::mojom::IPAddressSpace::kPrivate;
+ target_space = network::mojom::IPAddressSpace::kLocal;
+ if (SecurityOrigin::Create(request_url)->IsLocalhost())
+ target_space = network::mojom::IPAddressSpace::kLocal;
+
@@ -18,7 +18,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -627,7 +627,7 @@ chrome_java_resources = [
@@ -634,7 +634,7 @@ chrome_java_resources = [
"java/res/xml/manage_sync_preferences.xml",
"java/res/xml/personalize_google_services_preferences.xml",
"java/res/xml/incognito_preferences.xml",
@@ -218,8 +218,8 @@ new file mode 100644
+ app:isPreferenceVisible="false" />
+ <Preference
+ android:key="incognito_tracking_protections"
+ android:title="@string/incognito_tracking_protections_page_title"
+ android:summary="@string/incognito_tracking_protections_page_entrypoint_description"
+ android:title="@string/incognito_tracking_protections_link_row_label"
+ android:summary="@string/incognito_tracking_protections_link_row_sublabel"
+ android:fragment="org.chromium.components.privacy_sandbox.IncognitoTrackingProtectionsFragment"
+ app:isPreferenceVisible="false" />
+ <Preference
+15 -4
View File
@@ -6,12 +6,12 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../src/org/chromium/base/PackageUtils.java | 1 +
.../chrome/browser/IntentHandler.java | 6 ----
.../chrome/browser/share/LensUtils.java | 14 ++-------
.../chromium/chrome/browser/gsa/GSAUtils.java | 29 ++++---------------
.../GoogleBottomBarActionsHandler.java | 19 ++----------
.../chrome/browser/share/LensUtils.java | 14 ++------
.../chromium/chrome/browser/gsa/GSAUtils.java | 34 +++----------------
.../GoogleBottomBarActionsHandler.java | 19 ++---------
.../chrome/browser/pdf/PdfCoordinator.java | 2 +-
.../Disable-GSA-by-default.inc | 1 +
7 files changed, 12 insertions(+), 60 deletions(-)
7 files changed, 12 insertions(+), 65 deletions(-)
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-GSA-by-default.inc
diff --git a/base/android/java/src/org/chromium/base/PackageUtils.java b/base/android/java/src/org/chromium/base/PackageUtils.java
@@ -162,6 +162,17 @@ diff --git a/chrome/browser/gsa/java/src/org/chromium/chrome/browser/gsa/GSAUtil
}
/**
@@ -101,10 +82,5 @@ public class GSAUtils {
* @param packageInfo The package info to set for AGSA.
*/
public static void setAgsaPackageInfoForTesting(@Nullable PackageInfo packageInfo) {
- sPackageInfo = packageInfo;
- ResettersForTesting.register(
- () -> {
- sPackageInfo = null;
- });
}
}
diff --git a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java b/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java
--- a/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java
+++ b/chrome/browser/ui/android/google_bottom_bar/java/src/org/chromium/chrome/browser/ui/google_bottom_bar/GoogleBottomBarActionsHandler.java
+7 -6
View File
@@ -7,22 +7,23 @@ getHighEntropyValues will return only the major version
Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../renderer/core/frame/navigator_ua_data.cc | 16 ++++++++++++++--
1 file changed, 14 insertions(+), 2 deletions(-)
.../renderer/core/frame/navigator_ua_data.cc | 17 +++++++++++++++--
1 file changed, 15 insertions(+), 2 deletions(-)
diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_party/blink/renderer/core/frame/navigator_ua_data.cc
--- a/third_party/blink/renderer/core/frame/navigator_ua_data.cc
+++ b/third_party/blink/renderer/core/frame/navigator_ua_data.cc
@@ -7,6 +7,8 @@
@@ -7,6 +7,9 @@
#include "base/compiler_specific.h"
#include "base/task/single_thread_task_runner.h"
#include "third_party/blink/public/common/features.h"
+#include "base/version.h"
+#include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_metric_builder.h"
#include "third_party/blink/public/common/privacy_budget/identifiability_study_settings.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_surface.h"
@@ -65,6 +67,16 @@ void MaybeRecordMetric(bool record_identifiability,
@@ -65,6 +68,16 @@ void MaybeRecordMetric(bool record_identifiability,
execution_context);
}
@@ -39,7 +40,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_
} // namespace
NavigatorUAData::NavigatorUAData(ExecutionContext* context)
@@ -103,7 +115,7 @@ void NavigatorUAData::SetFullVersionList(
@@ -103,7 +116,7 @@ void NavigatorUAData::SetFullVersionList(
const UserAgentBrandList& full_version_list) {
for (const auto& brand_version : full_version_list) {
AddBrandFullVersion(String::FromUTF8(brand_version.brand),
@@ -48,7 +49,7 @@ diff --git a/third_party/blink/renderer/core/frame/navigator_ua_data.cc b/third_
}
}
@@ -125,7 +137,7 @@ void NavigatorUAData::SetModel(const String& model) {
@@ -125,7 +138,7 @@ void NavigatorUAData::SetModel(const String& model) {
}
void NavigatorUAData::SetUAFullVersion(const String& ua_full_version) {
+118 -8
View File
@@ -6,6 +6,7 @@ Original License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/browser/BUILD.gn | 4 +---
.../background_download_service_factory.cc | 2 +-
.../preloading_model_keyed_service.cc | 3 +++
.../preloading_model_keyed_service_factory.cc | 4 +---
.../optimization_guide/chrome_hints_manager.cc | 1 +
@@ -13,7 +14,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../optimization_guide_keyed_service.cc | 1 -
chrome/browser/permissions/BUILD.gn | 2 --
.../permissions/chrome_permissions_client.cc | 2 --
.../prediction_model_handler_provider.cc | 4 ++--
.../passage_embedder_delegate.cc | 2 ++
.../prediction_model_handler_provider.cc | 9 ++++++---
.../predictors/autocomplete_action_predictor.cc | 2 ++
.../predictors/loading_predictor_config.cc | 4 ++--
chrome/browser/predictors/predictors_features.cc | 3 +--
@@ -24,6 +26,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
...fication_content_detection_service_factory.cc | 6 ++++++
.../ui/autofill/chrome_autofill_client.cc | 15 ---------------
chrome/browser/ui/tab_helpers.cc | 1 -
.../autofill_ml_internals_page_handler.cc | 2 ++
.../autofill_ml_internals_page_handler.h | 3 +++
.../autofill_ml_internals_ui.cc | 3 +++
.../read_anything/read_aloud_app_model.cc | 16 ++++++++++++++--
.../read_anything/read_aloud_app_model.h | 9 ++++++++-
.../read_anything_app_controller.cc | 10 ++++++++++
@@ -37,8 +42,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../prediction_model_download_manager.cc | 6 ++++--
.../delivery/prediction_model_fetcher_impl.cc | 1 +
.../core/hints/hints_fetcher.cc | 1 +
.../core/hints/hints_manager.cc | 1 +
.../core/optimization_guide_features.cc | 14 ++++++++------
.../core/hints/hints_manager.cc | 2 ++
.../core/optimization_guide_features.cc | 12 ++++++------
components/optimization_guide/features.gni | 3 +--
.../core/page_content_annotations_features.cc | 4 ++++
.../page_content_annotations_model_manager.cc | 1 +
@@ -57,7 +62,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../core/html/parser/html_document_parser.cc | 1 +
.../document_speculation_rules.cc | 1 +
.../platform/runtime_enabled_features.json5 | 2 +-
52 files changed, 122 insertions(+), 78 deletions(-)
57 files changed, 136 insertions(+), 80 deletions(-)
create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Disable-all-predictors-code.inc
create mode 100644 cromite_flags/chrome/browser/flags/android/chrome_feature_list_cc/Disable-all-predictors-code.inc
create mode 100644 cromite_flags/chrome/common/chrome_features_cc/Disable-all-predictors-code.inc
@@ -87,6 +92,18 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"//components/safe_browsing/content/browser/password_protection",
"//components/safe_browsing/content/browser/web_ui",
"//components/safe_browsing/content/common/proto:download_file_types_proto",
diff --git a/chrome/browser/download/background_download_service_factory.cc b/chrome/browser/download/background_download_service_factory.cc
--- a/chrome/browser/download/background_download_service_factory.cc
+++ b/chrome/browser/download/background_download_service_factory.cc
@@ -179,7 +179,7 @@ BackgroundDownloadServiceFactory::BuildServiceInstanceFor(
}
#endif // BUILDFLAG(IS_CHROMEOS)
- if (!key->IsOffTheRecord()) {
+ if (((false)) && !key->IsOffTheRecord()) {
clients->insert(std::make_pair(
download::DownloadClient::OPTIMIZATION_GUIDE_PREDICTION_MODELS,
std::make_unique<download::DeferredClientWrapper>(
diff --git a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc
--- a/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc
+++ b/chrome/browser/navigation_predictor/preloading_model_keyed_service.cc
@@ -222,6 +239,23 @@ diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/br
return selectors;
}
diff --git a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc
--- a/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc
+++ b/chrome/browser/permissions/prediction_service/passage_embedder_delegate.cc
@@ -17,11 +17,13 @@ PassageEmbedderDelegate::PassageEmbedderDelegate(Profile* profile)
: profile_(profile) {}
Embedder* PassageEmbedderDelegate::get_passage_embedder() {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
if (auto* prediction_model_handler_provider =
PredictionModelHandlerProviderFactory::GetForBrowserContext(
profile_)) {
return prediction_model_handler_provider->GetPassageEmbedder();
}
+#endif
return nullptr;
}
diff --git a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc
--- a/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc
+++ b/chrome/browser/permissions/prediction_service/prediction_model_handler_provider.cc
@@ -239,6 +273,18 @@ diff --git a/chrome/browser/permissions/prediction_service/prediction_model_hand
#include "components/permissions/prediction_service/prediction_model_handler.h"
#endif // BUILDFLAG(BUILD_WITH_TFLITE_LIB)
@@ -26,7 +26,10 @@ namespace permissions {
PredictionModelHandlerProvider::PredictionModelHandlerProvider(
OptimizationGuideKeyedService* optimization_guide,
passage_embeddings::Embedder* passage_embedder)
- : passage_embedder_(passage_embedder) {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
+ : passage_embedder_(passage_embedder)
+#endif
+ {
VLOG(1) << "[PermissionsAI] PredictionModelHandlerProvider ctor";
// We set up model handlers if necessary in order of preference:
// Aiv4, Aiv3, Aiv1
diff --git a/chrome/browser/predictors/autocomplete_action_predictor.cc b/chrome/browser/predictors/autocomplete_action_predictor.cc
--- a/chrome/browser/predictors/autocomplete_action_predictor.cc
+++ b/chrome/browser/predictors/autocomplete_action_predictor.cc
@@ -303,7 +349,7 @@ diff --git a/chrome/browser/preloading/prefetch/search_prefetch/search_prefetch_
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -1195,7 +1195,6 @@ void ChromeBrowserMainExtraPartsProfiles::
@@ -1196,7 +1196,6 @@ void ChromeBrowserMainExtraPartsProfiles::
base::FeatureList::IsEnabled(
permissions::features::kPermissionOnDeviceGeolocationPredictions) ||
base::FeatureList::IsEnabled(permissions::features::kPermissionsAIv1)) {
@@ -404,6 +450,66 @@ diff --git a/chrome/browser/ui/tab_helpers.cc b/chrome/browser/ui/tab_helpers.cc
OpenerHeuristicService::Get(web_contents->GetBrowserContext());
if (optimization_guide::features::IsOptimizationHintsEnabled()) {
OptimizationGuideWebContentsObserver::CreateForWebContents(web_contents);
diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc
--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc
+++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.cc
@@ -12,9 +12,11 @@ AutofillMlInternalsPageHandlerImpl::AutofillMlInternalsPageHandlerImpl(
mojo::PendingReceiver<autofill_ml_internals::mojom::PageHandler> receiver,
autofill::MLLogRouter* log_router)
: receiver_(this, std::move(receiver)) {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
if (log_router) {
log_router_observation_.Observe(log_router);
}
+#endif
}
void AutofillMlInternalsPageHandlerImpl::SetPage(
diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h
--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h
+++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_page_handler.h
@@ -8,6 +8,7 @@
#include "base/scoped_observation.h"
#include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h"
#include "components/autofill/core/browser/ml_model/logging/ml_log_router.h"
+#include "components/optimization_guide/machine_learning_tflite_buildflags.h"
#include "mojo/public/cpp/bindings/pending_receiver.h"
#include "mojo/public/cpp/bindings/receiver.h"
#include "mojo/public/cpp/bindings/remote.h"
@@ -35,8 +36,10 @@ class AutofillMlInternalsPageHandlerImpl
private:
mojo::Receiver<autofill_ml_internals::mojom::PageHandler> receiver_;
mojo::Remote<autofill_ml_internals::mojom::Page> page_;
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
base::ScopedObservation<autofill::MLLogRouter, autofill::MLLogReceiver>
log_router_observation_{this};
+#endif
};
#endif // CHROME_BROWSER_UI_WEBUI_AUTOFILL_ML_INTERNALS_AUTOFILL_ML_INTERNALS_PAGE_HANDLER_H_
diff --git a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc
--- a/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc
+++ b/chrome/browser/ui/webui/autofill_ml_internals/autofill_ml_internals_ui.cc
@@ -11,6 +11,7 @@
#include "chrome/grit/autofill_ml_internals_resources.h"
#include "chrome/grit/autofill_ml_internals_resources_map.h"
#include "components/autofill/core/browser/ml_model/logging/autofill_ml_internals.mojom.h"
+#include "components/optimization_guide/machine_learning_tflite_buildflags.h"
#include "content/public/browser/web_ui.h"
#include "content/public/browser/web_ui_data_source.h"
#include "ui/webui/webui_util.h"
@@ -29,9 +30,11 @@ AutofillMlInternalsUI::AutofillMlInternalsUI(content::WebUI* web_ui)
void AutofillMlInternalsUI::BindInterface(
mojo::PendingReceiver<autofill_ml_internals::mojom::PageHandler> receiver) {
+#if BUILDFLAG(BUILD_WITH_TFLITE_LIB)
page_handler_ = std::make_unique<AutofillMlInternalsPageHandlerImpl>(
std::move(receiver), autofill::MLLogRouterFactory::GetForProfile(
Profile::FromWebUI(web_ui())));
+#endif
}
WEB_UI_CONTROLLER_TYPE_IMPL(AutofillMlInternalsUI)
diff --git a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc
--- a/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc
+++ b/chrome/renderer/accessibility/read_anything/read_aloud_app_model.cc
@@ -806,6 +912,12 @@ diff --git a/components/optimization_guide/core/hints/hints_manager.cc b/compone
switch (optimization_type_decision) {
case OptimizationTypeDecision::kAllowedByOptimizationFilter:
case OptimizationTypeDecision::kAllowedByHint:
@@ -2040,4 +2041,5 @@ void HintsManager::RemoveFetchedEntriesByHintKeys(
hint_cache_->RemoveHintsForHosts(std::move(on_success), hint_keys);
}
+SET_CROMITE_FEATURE_DISABLED(kHintsBatchUpdateForActiveTabsAndTopHosts);
} // namespace optimization_guide
diff --git a/components/optimization_guide/core/optimization_guide_features.cc b/components/optimization_guide/core/optimization_guide_features.cc
--- a/components/optimization_guide/core/optimization_guide_features.cc
+++ b/components/optimization_guide/core/optimization_guide_features.cc
@@ -831,14 +943,12 @@ diff --git a/components/optimization_guide/core/optimization_guide_features.cc b
}
RequestContextSet GetAllowedContextsForPersonalizedMetadata() {
@@ -692,5 +687,12 @@ bool IsPrivacyGuideAiSettingsEnabled() {
@@ -692,5 +687,10 @@ bool IsPrivacyGuideAiSettingsEnabled() {
return base::FeatureList::IsEnabled(kPrivacyGuideAiSettings);
}
+SET_CROMITE_FEATURE_DISABLED(kOptimizationHints);
+SET_CROMITE_FEATURE_DISABLED(kRemoteOptimizationGuideFetching);
+SET_CROMITE_FEATURE_DISABLED(kOptimizationTargetPrediction);
+SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideModelDownloading);
+SET_CROMITE_FEATURE_DISABLED(kPushNotifications);
+SET_CROMITE_FEATURE_DISABLED(kPreventLongRunningPredictionModels);
+SET_CROMITE_FEATURE_DISABLED(kOptimizationGuideFetchingForSRP);
+14 -14
View File
@@ -32,7 +32,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//chrome/browser/safety_hub/android:java",
"//chrome/browser/screenshot_monitor:java",
"//chrome/browser/search_engines/android:java",
@@ -1128,8 +1127,6 @@ if (_is_default_toolchain) {
@@ -1136,8 +1135,6 @@ if (_is_default_toolchain) {
"//chrome/browser/recent_tabs:junit",
"//chrome/browser/recent_tabs/internal:junit",
"//chrome/browser/safe_browsing/android:junit",
@@ -41,7 +41,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//chrome/browser/search_engines/android:junit",
"//chrome/browser/search_resumption:junit",
"//chrome/browser/serial/android:junit",
@@ -1417,8 +1414,6 @@ if (_is_default_toolchain) {
@@ -1425,8 +1422,6 @@ if (_is_default_toolchain) {
"//chrome/browser/quick_delete:javatests",
"//chrome/browser/renderer_host/android:javatests",
"//chrome/browser/safe_browsing/android:javatests",
@@ -53,7 +53,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
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
@@ -941,7 +941,6 @@ chrome_java_sources = [
@@ -942,7 +942,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingPasswordReuseDialogBridge.java",
"java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingReferringAppBridge.java",
"java/src/org/chromium/chrome/browser/safe_browsing/SafeBrowsingSettingsNavigation.java",
@@ -127,7 +127,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
@@ -32,13 +32,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ChromeTrackingProtectionDeleg
@@ -34,13 +34,6 @@ import org.chromium.chrome.browser.privacy_sandbox.ChromeTrackingProtectionDeleg
import org.chromium.chrome.browser.privacy_sandbox.PrivacySandboxSettingsBaseFragment;
import org.chromium.chrome.browser.privacy_sandbox.TopicsManageFragment;
import org.chromium.chrome.browser.profiles.Profile;
@@ -141,7 +141,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
import org.chromium.chrome.browser.search_engines.settings.SearchEngineSettings;
import org.chromium.chrome.browser.signin.SigninAndHistorySyncActivityLauncherImpl;
import org.chromium.chrome.browser.site_settings.ChromeSiteSettingsDelegate;
@@ -125,18 +118,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -127,18 +120,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
delegate.setSnackbarManagerSupplier(mSnackbarManagerSupplier);
baseSiteSettingsFragment.setSiteSettingsDelegate(delegate);
}
@@ -157,10 +157,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
- PasswordManagerHelper.getForProfile(mProfile),
- new SettingsCustomTabLauncherImpl());
- }
if (fragment instanceof SearchEngineSettings) {
SearchEngineSettings settings = (SearchEngineSettings) fragment;
settings.setDisableAutoSwitchRunnable(
@@ -219,14 +200,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
if (fragment instanceof CredentialEntryFragmentViewBase) {
CredentialEditUiFactory.create((CredentialEntryFragmentViewBase) fragment, mProfile);
}
@@ -224,14 +205,6 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
((AutofillLocalIbanEditor) fragment)
.setModalDialogManagerSupplier(mModalDialogManagerSupplier);
}
@@ -175,7 +175,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Fragme
if (fragment instanceof INeedSnackbarManager) {
((INeedSnackbarManager)fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier);
}
@@ -241,8 +214,5 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -246,8 +219,5 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
if (fragment instanceof ManageSyncSettings) {
((ManageSyncSettings) fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier);
}
@@ -205,10 +205,10 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
import org.chromium.chrome.browser.flags.ChromeFeatureList;
-import org.chromium.chrome.browser.safety_check.SafetyCheckSettingsFragment;
-import org.chromium.chrome.browser.safety_hub.SafetyHubFragment;
import org.chromium.chrome.browser.password_manager.settings.PasswordSettings;
import org.chromium.chrome.browser.sync.settings.GoogleServicesSettings;
import org.chromium.chrome.browser.sync.settings.ManageSyncSettings;
import org.chromium.components.browser_ui.accessibility.AccessibilitySettings;
@@ -46,10 +44,7 @@ public class SettingsNavigationImpl implements SettingsNavigation {
@@ -47,10 +45,7 @@ public class SettingsNavigationImpl implements SettingsNavigation {
ClearBrowsingDataFragment.createFragmentArgs(context.getClass().getName());
break;
case SettingsFragment.SAFETY_CHECK:
@@ -220,7 +220,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
case SettingsFragment.MAIN:
case SettingsFragment.PAYMENT_METHODS:
case SettingsFragment.SITE:
@@ -108,11 +103,7 @@ public class SettingsNavigationImpl implements SettingsNavigation {
@@ -110,11 +105,7 @@ public class SettingsNavigationImpl implements SettingsNavigation {
case SettingsFragment.PAYMENT_METHODS:
return AutofillPaymentMethodsFragment.class;
case SettingsFragment.SAFETY_CHECK:
@@ -236,7 +236,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3451,7 +3451,6 @@ static_library("browser") {
@@ -3458,7 +3458,6 @@ static_library("browser") {
"//chrome/browser/recent_tabs:jni_headers",
"//chrome/browser/regional_capabilities",
"//chrome/browser/safe_browsing/android:safe_browsing_enums",
@@ -168,7 +168,7 @@ diff --git a/chrome/browser/platform_util_android.cc b/chrome/browser/platform_u
+ }
+
+ base::android::ScopedJavaGlobalRef<jstring> obj;
+ obj.Reset(env, return_string);
+ obj.Reset(env, jni_zero::JavaRef<jstring>::CreateLeaky(env, return_string));
+ return ScopedJavaLocalRef<jstring>(obj);
+}
diff --git a/chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/PlatformUtil.java b/chrome/browser/util/android/java/src/org/chromium/chrome/browser/util/PlatformUtil.java
@@ -55,17 +55,16 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/password_manager/settings/PasswordSettings.java
@@ -27,7 +27,9 @@ import androidx.preference.PreferenceCategory;
@@ -27,6 +27,8 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup;
import org.chromium.base.BuildInfo;
+import org.chromium.base.StrictModeContext;
import org.chromium.base.metrics.RecordHistogram;
+import org.chromium.base.supplier.Supplier;
import org.chromium.base.supplier.ObservableSupplier;
import org.chromium.base.supplier.ObservableSupplierImpl;
import org.chromium.build.annotations.Nullable;
@@ -60,6 +62,11 @@ import java.lang.annotation.Retention;
@@ -58,6 +60,11 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.util.Locale;
@@ -77,7 +76,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
/**
* The "Passwords" screen in Settings, which allows the user to enable or disable password saving,
* to view saved passwords (just the username and URL), and to delete saved passwords.
@@ -69,7 +76,7 @@ import java.util.Locale;
@@ -65,7 +72,7 @@ import java.util.Locale;
public class PasswordSettings extends ChromeBaseSettingsFragment
implements PasswordListObserver,
Preference.OnPreferenceClickListener,
@@ -86,7 +85,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
@IntDef({
TrustedVaultBannerState.NOT_SHOWN,
TrustedVaultBannerState.OFFER_OPT_IN,
@@ -99,6 +106,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -95,6 +102,12 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
public static final String PREF_TRUSTED_VAULT_BANNER = "trusted_vault_banner";
public static final String PREF_KEY_MANAGE_ACCOUNT_LINK = "manage_account_link";
@@ -99,7 +98,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
private static final String PREF_KEY_CATEGORY_SAVED_PASSWORDS = "saved_passwords";
private static final String PREF_KEY_CATEGORY_EXCEPTIONS = "exceptions";
private static final String PREF_KEY_SAVED_PASSWORDS_NO_TEXT = "saved_passwords_no_text";
@@ -131,6 +144,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -127,6 +140,8 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
private Preference mLinkPref;
private Menu mMenu;
@@ -108,7 +107,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
private @ManagePasswordsReferrer int mManagePasswordsReferrer;
private final ObservableSupplierImpl<String> mPageTitle = new ObservableSupplierImpl<>();
@@ -315,6 +330,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -321,6 +336,7 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
}
createSavePasswordsSwitch();
@@ -116,7 +115,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
if (shouldShowAutoSigninOption()) {
createAutoSignInCheckbox();
}
@@ -588,6 +604,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
@@ -589,6 +605,71 @@ public class PasswordSettings extends ChromeBaseSettingsFragment
getPrefService().getBoolean(Pref.CREDENTIALS_ENABLE_SERVICE));
}
@@ -23,6 +23,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../search_engines_browser_proxy.ts | 8 +-
.../search_page/search_engines_page.html | 14 +-
.../settings/search_page/search_page.html | 6 +-
.../search_page/search_page_index.html | 5 +
.../browser/resources/settings/settings.gni | 2 +-
.../browser/resources/settings/settings.html | 8 +-
.../settings/settings_ui/settings_ui.html | 6 +
@@ -78,7 +79,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
ui/webui/resources/images/BUILD.gn | 2 +-
ui/webui/resources/js/BUILD.gn | 2 +-
ui/webui/resources/js/load_time_data.ts | 17 +-
71 files changed, 1161 insertions(+), 72 deletions(-)
72 files changed, 1166 insertions(+), 72 deletions(-)
create mode 100644 chrome/app/settings_strings_android.grdp
create mode 100644 chrome/browser/search_engines/android/java/res/layout/search_engine_layout.xml
create mode 100644 chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc
@@ -100,7 +101,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/Settin
import org.chromium.base.IntentUtils;
import org.chromium.chrome.browser.autofill.settings.AutofillPaymentMethodsFragment;
import org.chromium.chrome.browser.autofill.settings.FinancialAccountsManagementFragment;
@@ -30,6 +33,13 @@ public class SettingsNavigationImpl implements SettingsNavigation {
@@ -31,6 +34,13 @@ public class SettingsNavigationImpl implements SettingsNavigation {
/** Instantiated through SettingsNavigationFactory. */
SettingsNavigationImpl() {}
@@ -419,7 +420,7 @@ new file mode 100644
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3691,6 +3691,9 @@ static_library("browser") {
@@ -3698,6 +3698,9 @@ static_library("browser") {
"//components/user_scripts/android",
]
}
@@ -741,6 +742,21 @@ diff --git a/chrome/browser/resources/settings/search_page/search_page.html b/ch
+ style="max-width: calc(100vw)"></cr-link-row>
</div>
</settings-section>
diff --git a/chrome/browser/resources/settings/search_page/search_page_index.html b/chrome/browser/resources/settings/search_page/search_page_index.html
--- a/chrome/browser/resources/settings/search_page/search_page_index.html
+++ b/chrome/browser/resources/settings/search_page/search_page_index.html
@@ -3,6 +3,11 @@
cr-view-manager[show-all] [slot=view][data-parent-view-id] {
display: none;
}
+<if expr="is_android">
+ settings-search-engines-page {
+ width: 90%;
+ }
+</if>
</style>
<cr-view-manager id="viewManager" class="cr-centered-card-container"
diff --git a/chrome/browser/resources/settings/settings.gni b/chrome/browser/resources/settings/settings.gni
--- a/chrome/browser/resources/settings/settings.gni
+++ b/chrome/browser/resources/settings/settings.gni
@@ -1895,8 +1911,8 @@ diff --git a/chrome/chrome_paks.gni b/chrome/chrome_paks.gni
diff --git a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsNavigation.java b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsNavigation.java
--- a/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsNavigation.java
+++ b/components/browser_ui/settings/android/java/src/org/chromium/components/browser_ui/settings/SettingsNavigation.java
@@ -57,6 +57,8 @@ public interface SettingsNavigation {
int NON_CARD_PAYMENT_METHODS = 9;
@@ -60,6 +60,8 @@ public interface SettingsNavigation {
int PASSWORDS = 10;
}
+ void launchUrlInCustomTab(Context context, String url);
@@ -1934,7 +1950,7 @@ diff --git a/components/search_engines/search_engines_switches.cc b/components/s
&kSearchEngineChoiceTriggerReprompt,
/*name=*/"reprompt",
/*default_value=*/kSearchEngineChoiceNoRepromptString};
+SET_CROMITE_FEATURE_DISABLED(kSearchEngineChoiceTrigger);
+SET_CROMITE_FEATURE_DISABLED(kSearchEngineChoiceTriggerReprompt);
#if BUILDFLAG(IS_ANDROID)
COMPONENT_EXPORT(SEARCH_ENGINES_SWITCHES)
@@ -36,7 +36,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/about_flags.cc | 1 +
chrome/browser/prefs/browser_prefs.cc | 4 +
chrome/browser/profiles/BUILD.gn | 3 +
...hrome_browser_main_extra_parts_profiles.cc | 7 +
...hrome_browser_main_extra_parts_profiles.cc | 9 +
chrome/browser/profiles/profile_manager.cc | 11 +
chrome/browser/profiles/renderer_updater.cc | 19 +-
chrome/browser/profiles/renderer_updater.h | 3 +
@@ -45,7 +45,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/common/renderer_configuration.mojom | 1 +
chrome/renderer/BUILD.gn | 6 +
.../chrome_content_renderer_client.cc | 55 ++
.../renderer/chrome_render_thread_observer.cc | 5 +
.../renderer/chrome_render_thread_observer.cc | 7 +
components/components_strings.grd | 1 +
components/user_scripts/README.md | 150 ++++
components/user_scripts/android/BUILD.gn | 103 +++
@@ -68,16 +68,18 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
...Allow-playing-videos-in-background.user.js | 25 +
.../assets/Dont-track-me-Google.user.js | 826 ++++++++++++++++++
.../user_scripts/assets/disable-amp.user.js | 127 +++
components/user_scripts/browser/BUILD.gn | 77 ++
components/user_scripts/browser/BUILD.gn | 79 ++
.../user_scripts/browser/file_task_runner.cc | 40 +
.../user_scripts/browser/file_task_runner.h | 34 +
.../browser/renderer_startup_helper.cc | 102 +++
.../browser/renderer_startup_helper.h | 105 +++
.../browser/resources/browser_resources.grd | 14 +
.../browser/resources/user-script-ui/BUILD.gn | 8 +
.../user-script-ui/user-scripts-ui.html | 14 +
.../user-script-ui/user-scripts-ui.js | 9 +
.../browser/ui/user_scripts_ui.cc | 146 ++++
.../user_scripts/browser/ui/user_scripts_ui.h | 46 +
.../browser/user_script_loader.cc | 723 +++++++++++++++
.../browser/user_script_loader.cc | 726 +++++++++++++++
.../user_scripts/browser/user_script_loader.h | 168 ++++
.../browser/user_script_pref_info.cc | 34 +
.../browser/user_script_pref_info.h | 72 ++
@@ -85,16 +87,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../user_scripts/browser/user_script_prefs.h | 62 ++
.../browser/userscripts_browser_client.cc | 78 ++
.../browser/userscripts_browser_client.h | 62 ++
components/user_scripts/common/BUILD.gn | 48 +
components/user_scripts/common/BUILD.gn | 58 ++
components/user_scripts/common/constants.h | 15 +
components/user_scripts/common/error_utils.cc | 54 ++
components/user_scripts/common/error_utils.h | 22 +
.../common/extension_message_generator.cc | 29 +
.../common/extension_message_generator.h | 11 +
.../user_scripts/common/extension_messages.cc | 40 +
.../user_scripts/common/extension_messages.h | 70 ++
components/user_scripts/common/host_id.cc | 31 +
components/user_scripts/common/host_id.h | 35 +
.../user_scripts/common/mojom/renderer.mojom | 12 +
.../user_scripts/common/script_constants.h | 33 +
components/user_scripts/common/url_pattern.cc | 813 +++++++++++++++++
components/user_scripts/common/url_pattern.h | 306 +++++++
@@ -121,15 +120,15 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../renderer/script_injection_manager.h | 100 +++
.../user_scripts/renderer/script_injector.h | 100 +++
.../user_scripts/renderer/scripts_run_info.cc | 31 +
.../user_scripts/renderer/scripts_run_info.h | 69 ++
.../user_scripts/renderer/scripts_run_info.h | 70 ++
.../renderer/user_script_injector.cc | 227 +++++
.../renderer/user_script_injector.h | 86 ++
.../user_scripts/renderer/user_script_set.cc | 264 ++++++
.../user_scripts/renderer/user_script_set.h | 101 +++
.../renderer/user_script_set_manager.cc | 76 ++
.../renderer/user_script_set_manager.h | 64 ++
.../renderer/user_scripts_dispatcher.cc | 36 +
.../renderer/user_scripts_dispatcher.h | 49 ++
.../renderer/user_script_set_manager.cc | 65 ++
.../renderer/user_script_set_manager.h | 56 ++
.../renderer/user_scripts_dispatcher.cc | 64 ++
.../renderer/user_scripts_dispatcher.h | 67 ++
.../renderer/user_scripts_renderer_client.cc | 108 +++
.../renderer/user_scripts_renderer_client.h | 38 +
.../renderer/web_ui_injection_host.cc | 40 +
@@ -138,7 +137,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../Experimental-user-scripts-support.inc | 13 +
ipc/ipc_message_start.h | 1 +
tools/gritsettings/resource_ids.spec | 6 +
111 files changed, 10379 insertions(+), 3 deletions(-)
110 files changed, 10495 insertions(+), 3 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
@@ -163,6 +162,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
create mode 100755 components/user_scripts/browser/BUILD.gn
create mode 100755 components/user_scripts/browser/file_task_runner.cc
create mode 100755 components/user_scripts/browser/file_task_runner.h
create mode 100644 components/user_scripts/browser/renderer_startup_helper.cc
create mode 100644 components/user_scripts/browser/renderer_startup_helper.h
create mode 100644 components/user_scripts/browser/resources/browser_resources.grd
create mode 100644 components/user_scripts/browser/resources/user-script-ui/BUILD.gn
create mode 100644 components/user_scripts/browser/resources/user-script-ui/user-scripts-ui.html
@@ -181,12 +182,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
create mode 100755 components/user_scripts/common/constants.h
create mode 100755 components/user_scripts/common/error_utils.cc
create mode 100755 components/user_scripts/common/error_utils.h
create mode 100755 components/user_scripts/common/extension_message_generator.cc
create mode 100755 components/user_scripts/common/extension_message_generator.h
create mode 100755 components/user_scripts/common/extension_messages.cc
create mode 100755 components/user_scripts/common/extension_messages.h
create mode 100755 components/user_scripts/common/host_id.cc
create mode 100755 components/user_scripts/common/host_id.h
create mode 100644 components/user_scripts/common/mojom/renderer.mojom
create mode 100755 components/user_scripts/common/script_constants.h
create mode 100755 components/user_scripts/common/url_pattern.cc
create mode 100755 components/user_scripts/common/url_pattern.h
@@ -253,7 +251,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//components/variations:variations_java",
"//components/variations/android:variations_java",
"//components/viz/service:service_java",
@@ -1687,6 +1692,7 @@ if (_is_default_toolchain) {
@@ -1695,6 +1700,7 @@ if (_is_default_toolchain) {
java_group("chrome_public_non_pak_assets") {
deps = [
"//chrome/android/webapk/libs/runtime_library:runtime_library_assets",
@@ -264,7 +262,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -153,6 +153,11 @@ for the previous order (main_preferences_legacy). -->
@@ -154,6 +154,11 @@ for the previous order (main_preferences_legacy). -->
android:key="useragent_settings"
android:order="20"
android:title="@string/prefs_useragent_settings"/>
@@ -340,7 +338,7 @@ diff --git a/chrome/android/java_sources.gni b/chrome/android/java_sources.gni
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3675,6 +3675,13 @@ static_library("browser") {
@@ -3682,6 +3682,13 @@ static_library("browser") {
]
deps += [ "//chrome/android/modules/dev_ui/provider:native" ]
}
@@ -402,23 +400,25 @@ diff --git a/chrome/browser/profiles/BUILD.gn b/chrome/browser/profiles/BUILD.gn
diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
--- a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
+++ b/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
@@ -590,6 +590,10 @@
@@ -590,6 +590,11 @@
#include "chrome/browser/net/nss_service_factory.h"
#endif
+#if BUILDFLAG(IS_ANDROID)
+#include "components/user_scripts/browser/userscripts_browser_client.h"
+#include "components/user_scripts/browser/renderer_startup_helper.h"
+#endif
+
void AddProfilesExtraParts(ChromeBrowserMainParts* main_parts) {
main_parts->AddParts(std::make_unique<ChromeBrowserMainExtraPartsProfiles>());
}
@@ -1430,6 +1434,9 @@ void ChromeBrowserMainExtraPartsProfiles::
@@ -1430,6 +1435,10 @@ void ChromeBrowserMainExtraPartsProfiles::
#endif
WebDataServiceFactory::GetInstance();
webrtc_event_logging::WebRtcEventLogManagerKeyedServiceFactory::GetInstance();
+#if BUILDFLAG(IS_ANDROID)
+ user_scripts::UserScriptsBrowserClient::GetInstance();
+ user_scripts::RendererStartupHelperFactory::GetInstance();
+#endif
}
@@ -685,16 +685,18 @@ diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer
diff --git a/chrome/renderer/chrome_render_thread_observer.cc b/chrome/renderer/chrome_render_thread_observer.cc
--- a/chrome/renderer/chrome_render_thread_observer.cc
+++ b/chrome/renderer/chrome_render_thread_observer.cc
@@ -54,6 +54,8 @@
@@ -54,6 +54,10 @@
#include "third_party/blink/public/web/web_security_policy.h"
#include "third_party/blink/public/web/web_view.h"
+#if BUILDFLAG(IS_ANDROID)
+#include "components/user_scripts/renderer/user_scripts_renderer_client.h"
+#endif
+
#if BUILDFLAG(IS_CHROMEOS)
#include "chrome/renderer/ash_merge_session_loader_throttle.h"
#endif
@@ -220,6 +222,9 @@ void ChromeRenderThreadObserver::SetConfiguration(
@@ -220,6 +224,9 @@ void ChromeRenderThreadObserver::SetConfiguration(
chrome::mojom::DynamicParamsPtr params) {
base::AutoLock lock(dynamic_params_lock_);
dynamic_params_ = std::move(params);
@@ -1716,8 +1718,6 @@ new file mode 100644
+
+package org.chromium.components.user_scripts;
+
+import static org.chromium.components.browser_ui.widget.BrowserUiListMenuUtils.buildMenuListItem;
+
+import android.content.Context;
+import android.content.Intent;
+import android.provider.Browser;
@@ -1738,6 +1738,7 @@ new file mode 100644
+
+import org.chromium.base.ApplicationStatus;
+import org.chromium.base.ContextUtils;
+import org.chromium.components.browser_ui.widget.ListItemBuilder;
+import org.chromium.components.browser_ui.widget.TintedDrawable;
+import org.chromium.components.browser_ui.widget.BrowserUiListMenuUtils;
+import org.chromium.ui.listmenu.BasicListMenu;
@@ -1768,9 +1769,10 @@ new file mode 100644
+
+ ModelList menuItems = new ModelList();
+
+ menuItems.add(buildMenuListItem(R.string.remove, 0, 0, true));
+ menuItems.add(buildMenuListItem(R.string.scripts_view_source, 0, 0,
+ info.ParserError == null || info.ParserError.isEmpty()));
+ menuItems.add(new ListItemBuilder().withTitleRes(R.string.remove).build());
+ menuItems.add(new ListItemBuilder().withTitleRes(R.string.scripts_view_source)
+ .withEnabled(info.ParserError == null || info.ParserError.isEmpty())
+ .build());
+
+ ListMenu.Delegate delegate = (model) -> {
+ int textId = model.get(ListMenuItemProperties.TITLE_ID);
@@ -3448,7 +3450,7 @@ diff --git a/components/user_scripts/browser/BUILD.gn b/components/user_scripts/
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/browser/BUILD.gn
@@ -0,0 +1,77 @@
@@ -0,0 +1,79 @@
+# This file is part of Bromite.
+
+# Bromite is free software: you can redistribute it and/or modify
@@ -3489,6 +3491,8 @@ new file mode 100755
+ "user_script_pref_info.h",
+ "ui/user_scripts_ui.h",
+ "ui/user_scripts_ui.cc",
+ "renderer_startup_helper.h",
+ "renderer_startup_helper.cc",
+ ]
+
+ deps = [
@@ -3610,6 +3614,223 @@ new file mode 100755
+} // namespace extensions
+
+#endif // USERSCRIPTS_BROWSER_FILE_TASK_RUNNER_H_
diff --git a/components/user_scripts/browser/renderer_startup_helper.cc b/components/user_scripts/browser/renderer_startup_helper.cc
new file mode 100644
--- /dev/null
+++ b/components/user_scripts/browser/renderer_startup_helper.cc
@@ -0,0 +1,102 @@
+#include "renderer_startup_helper.h"
+
+#include "chrome/browser/profiles/incognito_helpers.h"
+#include "components/keyed_service/content/browser_context_dependency_manager.h"
+#include "content/public/browser/browser_context.h"
+#include "content/public/browser/render_process_host.h"
+#include "ipc/ipc_channel_proxy.h"
+
+namespace user_scripts {
+
+RendererStartupHelper::RendererStartupHelper(content::BrowserContext* browser_context)
+ : browser_context_(browser_context) {
+ DCHECK(browser_context);
+}
+
+RendererStartupHelper::~RendererStartupHelper() {
+ for (auto& process_entry : process_mojo_map_)
+ process_entry.first->RemoveObserver(this);
+}
+
+void RendererStartupHelper::OnRenderProcessHostCreated(
+ content::RenderProcessHost* host) {
+ InitializeProcess(host);
+}
+
+void RendererStartupHelper::RenderProcessExited(
+ content::RenderProcessHost* host,
+ const content::ChildProcessTerminationInfo& info) {
+ UntrackProcess(host);
+}
+
+void RendererStartupHelper::RenderProcessHostDestroyed(
+ content::RenderProcessHost* host) {
+ UntrackProcess(host);
+}
+
+void RendererStartupHelper::InitializeProcess(
+ content::RenderProcessHost* process) {
+ //mojom::Renderer* renderer =
+ process_mojo_map_.emplace(process, BindNewRendererRemote(process))
+ .first->second.get();
+ process->AddObserver(this);
+}
+
+void RendererStartupHelper::UntrackProcess(
+ content::RenderProcessHost* process) {
+ process->RemoveObserver(this);
+ process_mojo_map_.erase(process);
+}
+
+mojo::PendingAssociatedRemote<mojom::Renderer>
+RendererStartupHelper::BindNewRendererRemote(
+ content::RenderProcessHost* process) {
+ mojo::AssociatedRemote<mojom::Renderer> renderer_interface;
+ process->GetChannel()->GetRemoteAssociatedInterface(&renderer_interface);
+ return renderer_interface.Unbind();
+}
+
+mojom::Renderer* RendererStartupHelper::GetRenderer(
+ content::RenderProcessHost* process) {
+ auto it = process_mojo_map_.find(process);
+ if (it == process_mojo_map_.end()) {
+ return nullptr;
+ }
+ return it->second.get();
+}
+
+// static
+RendererStartupHelper* RendererStartupHelperFactory::GetForBrowserContext(
+ content::BrowserContext* context) {
+ return static_cast<RendererStartupHelper*>(
+ GetInstance()->GetServiceForBrowserContext(context, true));
+}
+
+// static
+RendererStartupHelperFactory* RendererStartupHelperFactory::GetInstance() {
+ return base::Singleton<RendererStartupHelperFactory>::get();
+}
+
+RendererStartupHelperFactory::RendererStartupHelperFactory()
+ : BrowserContextKeyedServiceFactory(
+ "UserScriptRendererStartupHelper",
+ BrowserContextDependencyManager::GetInstance()) {}
+
+RendererStartupHelperFactory::~RendererStartupHelperFactory() = default;
+
+std::unique_ptr<KeyedService>
+RendererStartupHelperFactory::BuildServiceInstanceForBrowserContext(
+ content::BrowserContext* context) const {
+ return std::make_unique<RendererStartupHelper>(context);
+}
+
+content::BrowserContext* RendererStartupHelperFactory::GetBrowserContextToUse(
+ content::BrowserContext* context) const {
+ return GetBrowserContextRedirectedInIncognito(context);
+}
+
+bool RendererStartupHelperFactory::ServiceIsCreatedWithBrowserContext() const {
+ return true;
+}
+
+}
diff --git a/components/user_scripts/browser/renderer_startup_helper.h b/components/user_scripts/browser/renderer_startup_helper.h
new file mode 100644
--- /dev/null
+++ b/components/user_scripts/browser/renderer_startup_helper.h
@@ -0,0 +1,105 @@
+
+#ifndef USERSCRIPTS_BROWSER_RENDERER_STARTUP_HELPER_H_
+#define USERSCRIPTS_BROWSER_RENDERER_STARTUP_HELPER_H_
+
+#include <map>
+#include <optional>
+#include <set>
+
+#include "base/compiler_specific.h"
+#include "base/memory/raw_ptr.h"
+#include "base/memory/singleton.h"
+#include "components/keyed_service/content/browser_context_keyed_service_factory.h"
+#include "components/keyed_service/core/keyed_service.h"
+#include "content/public/browser/render_process_host_creation_observer.h"
+#include "content/public/browser/render_process_host_observer.h"
+#include "components/user_scripts/common/mojom/renderer.mojom.h"
+#include "mojo/public/cpp/bindings/associated_receiver_set.h"
+#include "mojo/public/cpp/bindings/associated_remote.h"
+#include "mojo/public/cpp/bindings/pending_associated_receiver.h"
+#include "mojo/public/cpp/bindings/pending_associated_remote.h"
+
+namespace content {
+class BrowserContext;
+class RenderProcessHost;
+} // namespace content
+
+namespace user_scripts {
+
+class RendererStartupHelper : public KeyedService,
+ public content::RenderProcessHostCreationObserver,
+ public content::RenderProcessHostObserver {
+ public:
+ // This class sends messages to all renderers started for `browser_context`.
+ explicit RendererStartupHelper(content::BrowserContext* browser_context);
+
+ RendererStartupHelper(const RendererStartupHelper&) = delete;
+ RendererStartupHelper& operator=(const RendererStartupHelper&) = delete;
+
+ ~RendererStartupHelper() override;
+
+ // content::RenderProcessHostCreationObserver:
+ void OnRenderProcessHostCreated(
+ content::RenderProcessHost* process_host) override;
+
+ // content::RenderProcessHostObserver:
+ void RenderProcessExited(
+ content::RenderProcessHost* host,
+ const content::ChildProcessTerminationInfo& info) override;
+ void RenderProcessHostDestroyed(content::RenderProcessHost* host) override;
+
+ // Returns mojom::Renderer* corresponding to `process`. This would return
+ // nullptr when it's called before `process` is inserted to
+ // `process_mojo_map_` or after it's deleted. Note that the callers should
+ // pass a valid content::RenderProcessHost*.
+ mojom::Renderer* GetRenderer(content::RenderProcessHost* process);
+
+ private:
+ // Initializes the specified process, informing it of system state and loaded
+ // extensions.
+ void InitializeProcess(content::RenderProcessHost* process);
+
+ // Untracks the given process.
+ void UntrackProcess(content::RenderProcessHost* process);
+
+ mojo::PendingAssociatedRemote<mojom::Renderer> BindNewRendererRemote(
+ content::RenderProcessHost* process);
+
+ raw_ptr<content::BrowserContext> browser_context_; // Not owned.
+
+ // A map of render processes to mojo remotes. Being in this
+ // map means that have had the initial batch of IPC messages
+ // sent, including the set of loaded extensions. Further messages that
+ // activate, load, or unload extensions should not be sent until after this
+ // happens.
+ std::map<content::RenderProcessHost*, mojo::AssociatedRemote<mojom::Renderer>>
+ process_mojo_map_;
+};
+
+class RendererStartupHelperFactory : public BrowserContextKeyedServiceFactory {
+ public:
+ RendererStartupHelperFactory(const RendererStartupHelperFactory&) = delete;
+ RendererStartupHelperFactory& operator=(const RendererStartupHelperFactory&) =
+ delete;
+
+ static RendererStartupHelper* GetForBrowserContext(
+ content::BrowserContext* context);
+ static RendererStartupHelperFactory* GetInstance();
+
+ private:
+ friend struct base::DefaultSingletonTraits<RendererStartupHelperFactory>;
+
+ RendererStartupHelperFactory();
+ ~RendererStartupHelperFactory() override;
+
+ // BrowserContextKeyedServiceFactory implementation:
+ std::unique_ptr<KeyedService> BuildServiceInstanceForBrowserContext(
+ content::BrowserContext* profile) const override;
+ content::BrowserContext* GetBrowserContextToUse(
+ content::BrowserContext* context) const override;
+ bool ServiceIsCreatedWithBrowserContext() const override;
+};
+
+}
+
+#endif
diff --git a/components/user_scripts/browser/resources/browser_resources.grd b/components/user_scripts/browser/resources/browser_resources.grd
new file mode 100644
--- /dev/null
@@ -3881,7 +4102,7 @@ diff --git a/components/user_scripts/browser/user_script_loader.cc b/components/
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/browser/user_script_loader.cc
@@ -0,0 +1,723 @@
@@ -0,0 +1,726 @@
+/*
+ This file is part of Bromite.
+
@@ -3909,6 +4130,7 @@ new file mode 100755
+
+#include "base/memory/writable_shared_memory_region.h"
+#include "base/strings/string_util.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/strcat.h"
+#include "base/files/file.h"
+#include "base/files/file_path.h"
@@ -3939,11 +4161,11 @@ new file mode 100755
+#include "ui/android/window_android.h"
+
+#include "../common/user_scripts_features.h"
+#include "../common/extension_messages.h"
+#include "file_task_runner.h"
+#include "user_script_prefs.h"
+#include "user_script_pref_info.h"
+#include "../common/host_id.h"
+#include "renderer_startup_helper.h"
+
+using content::BrowserThread;
+using content::BrowserContext;
@@ -4391,8 +4613,10 @@ new file mode 100755
+ if (!region_for_process.IsValid())
+ return;
+
+ process->Send(new ExtensionMsg_UpdateUserScripts(
+ std::move(region_for_process)));
+ mojom::Renderer* renderer =
+ RendererStartupHelperFactory::GetForBrowserContext(browser_context())
+ ->GetRenderer(process);
+ renderer->UpdateUserScripts(std::move(region_for_process));
+}
+
+void LoadScriptsOnFileTaskRunner(
@@ -5395,7 +5619,7 @@ diff --git a/components/user_scripts/common/BUILD.gn b/components/user_scripts/c
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/BUILD.gn
@@ -0,0 +1,48 @@
@@ -0,0 +1,58 @@
+# Copyright 2014 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.
@@ -5419,10 +5643,6 @@ new file mode 100755
+ "user_script.h",
+ "view_type.cc",
+ "view_type.h",
+ "extension_messages.cc",
+ "extension_messages.h",
+ "extension_message_generator.cc",
+ "extension_message_generator.h",
+ ]
+
+ configs += [
@@ -5431,6 +5651,7 @@ new file mode 100755
+ ]
+
+ public_deps = [
+ ":mojom",
+ "//content/public/common",
+ "//ipc",
+ "//skia",
@@ -5444,6 +5665,19 @@ new file mode 100755
+ "//crypto",
+ ]
+}
+
+mojom("mojom") {
+ disable_variants = true
+
+ sources = [
+ "mojom/renderer.mojom",
+ ]
+
+ public_deps = [
+ "//mojo/public/mojom/base",
+ "//third_party/blink/public/mojom:mojom_core",
+ ]
+}
diff --git a/components/user_scripts/common/constants.h b/components/user_scripts/common/constants.h
new file mode 100755
--- /dev/null
@@ -5550,176 +5784,6 @@ new file mode 100755
+} // namespace extensions
+
+#endif // USERSCRIPTS_COMMON_ERROR_UTILS_H_
diff --git a/components/user_scripts/common/extension_message_generator.cc b/components/user_scripts/common/extension_message_generator.cc
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/extension_message_generator.cc
@@ -0,0 +1,29 @@
+// Copyright 2014 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.
+
+// Get basic type definitions.
+#define IPC_MESSAGE_IMPL
+#include "components/user_scripts/common/extension_message_generator.h"
+
+// Generate constructors.
+#include "ipc/struct_constructor_macros.h"
+#include "components/user_scripts/common/extension_message_generator.h"
+
+// Generate param traits write methods.
+#include "ipc/param_traits_write_macros.h"
+namespace IPC {
+#include "components/user_scripts/common/extension_message_generator.h"
+} // namespace IPC
+
+// Generate param traits read methods.
+#include "ipc/param_traits_read_macros.h"
+namespace IPC {
+#include "components/user_scripts/common/extension_message_generator.h"
+} // namespace IPC
+
+// Generate param traits log methods.
+#include "ipc/param_traits_log_macros.h"
+namespace IPC {
+#include "components/user_scripts/common/extension_message_generator.h"
+} // namespace IPC
diff --git a/components/user_scripts/common/extension_message_generator.h b/components/user_scripts/common/extension_message_generator.h
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/extension_message_generator.h
@@ -0,0 +1,11 @@
+// Copyright 2014 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.
+
+// Multiply-included file, hence no include guard.
+
+#undef USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
+#include "extension_messages.h"
+#ifndef USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
+#error "Failed to include header extension_messages.h"
+#endif
diff --git a/components/user_scripts/common/extension_messages.cc b/components/user_scripts/common/extension_messages.cc
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/extension_messages.cc
@@ -0,0 +1,40 @@
+// Copyright 2014 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.
+
+#include "extension_messages.h"
+
+#include <stddef.h>
+
+#include <memory>
+#include <utility>
+
+#include "content/public/common/common_param_traits.h"
+
+namespace IPC {
+
+void ParamTraits<HostID>::Write(base::Pickle* m, const param_type& p) {
+ WriteParam(m, p.type());
+ WriteParam(m, p.id());
+}
+
+bool ParamTraits<HostID>::Read(const base::Pickle* m,
+ base::PickleIterator* iter,
+ param_type* r) {
+ HostID::HostType type;
+ std::string id;
+ if (!ReadParam(m, iter, &type))
+ return false;
+ if (!ReadParam(m, iter, &id))
+ return false;
+ *r = HostID(type, id);
+ return true;
+}
+
+void ParamTraits<HostID>::Log(
+ const param_type& p, std::string* l) {
+ LogParam(p.type(), l);
+ LogParam(p.id(), l);
+}
+
+} // namespace IPC
diff --git a/components/user_scripts/common/extension_messages.h b/components/user_scripts/common/extension_messages.h
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/extension_messages.h
@@ -0,0 +1,70 @@
+// Copyright 2014 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.
+
+// IPC messages for extensions.
+
+#ifndef USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
+#define USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
+
+#include <stdint.h>
+
+#include <map>
+#include <memory>
+#include <set>
+#include <string>
+#include <vector>
+
+#include "base/memory/read_only_shared_memory_region.h"
+#include "base/values.h"
+#include "content/public/common/common_param_traits.h"
+#include "constants.h"
+#include "host_id.h"
+#include "ipc/ipc_message_start.h"
+#include "ipc/ipc_message_macros.h"
+#include "url/gurl.h"
+#include "url/origin.h"
+
+#define IPC_MESSAGE_START ExtensionMsgStart
+
+IPC_ENUM_TRAITS_MAX_VALUE(HostID::HostType, HostID::HOST_TYPE_LAST)
+
+// Singly-included section for custom IPC traits.
+#ifndef INTERNAL_USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
+#define INTERNAL_USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
+
+namespace IPC {
+
+template <>
+struct ParamTraits<HostID> {
+ typedef HostID param_type;
+ static void Write(base::Pickle* m, const param_type& p);
+ static bool Read(const base::Pickle* m,
+ base::PickleIterator* iter,
+ param_type* r);
+ static void Log(const param_type& p, std::string* l);
+};
+
+
+} // namespace IPC
+
+#endif // INTERNAL_USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
+
+// Notification that the user scripts have been updated. It has one
+// ReadOnlySharedMemoryRegion argument consisting of the pickled script data.
+// This memory region is valid in the context of the renderer.
+// If |owner| is not empty, then the shared memory handle refers to |owner|'s
+// programmatically-defined scripts. Otherwise, the handle refers to all
+// hosts' statically defined scripts. So far, only extension-hosts support
+// statically defined scripts; WebUI-hosts don't.
+// If |changed_hosts| is not empty, only the host in that set will
+// be updated. Otherwise, all hosts that have scripts in the shared memory
+// region will be updated. Note that the empty set => all hosts case is not
+// supported for per-extension programmatically-defined script regions; in such
+// regions, the owner is expected to list itself as the only changed host.
+// If |whitelisted_only| is true, this process should only run whitelisted
+// scripts and not all user scripts.
+IPC_MESSAGE_CONTROL1(ExtensionMsg_UpdateUserScripts,
+ base::ReadOnlySharedMemoryRegion)
+
+#endif // USERSCRIPTS_COMMON_EXTENSION_MESSAGES_H_
diff --git a/components/user_scripts/common/host_id.cc b/components/user_scripts/common/host_id.cc
new file mode 100755
--- /dev/null
@@ -5796,6 +5860,23 @@ new file mode 100755
+};
+
+#endif // USERSCRIPTS_COMMON_HOST_ID_H_
diff --git a/components/user_scripts/common/mojom/renderer.mojom b/components/user_scripts/common/mojom/renderer.mojom
new file mode 100644
--- /dev/null
+++ b/components/user_scripts/common/mojom/renderer.mojom
@@ -0,0 +1,12 @@
+module user_scripts.mojom;
+
+import "mojo/public/mojom/base/shared_memory.mojom";
+
+interface Renderer {
+
+ // Notifies the renderer that the user scripts have been updated. It has one
+ // ReadOnlySharedMemoryRegion argument consisting of the pickled script data.
+ // This memory region is valid in the context of the renderer.
+ UpdateUserScripts(mojo_base.mojom.ReadOnlySharedMemoryRegion region);
+
+};
diff --git a/components/user_scripts/common/script_constants.h b/components/user_scripts/common/script_constants.h
new file mode 100755
--- /dev/null
@@ -10039,7 +10120,7 @@ new file mode 100755
+ : num_css(0u),
+ num_js(0u),
+ num_blocking_js(0u),
+ routing_id_(render_frame->GetRoutingID()),
+ frame_token_(render_frame->GetWebFrame()->GetLocalFrameToken()),
+ run_location_(location),
+ frame_url_(ScriptContext::GetDocumentLoaderURLForFrame(
+ render_frame->GetWebFrame())) {}
@@ -10055,7 +10136,7 @@ diff --git a/components/user_scripts/renderer/scripts_run_info.h b/components/us
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/renderer/scripts_run_info.h
@@ -0,0 +1,69 @@
@@ -0,0 +1,70 @@
+// Copyright 2014 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.
@@ -10071,6 +10152,7 @@ new file mode 100755
+
+#include "base/timer/elapsed_timer.h"
+#include "../common/user_script.h"
+#include "third_party/blink/public/common/tokens/tokens.h"
+
+namespace content {
+class RenderFrame;
@@ -10110,10 +10192,10 @@ new file mode 100755
+ const base::TimeDelta& elapsed);
+
+ private:
+ // The routinig id to use to notify the browser of any injections. Since the
+ // The frame token to use to notify the browser of any injections. Since the
+ // frame may be deleted in injection, we don't hold on to a reference to it
+ // directly.
+ int routing_id_;
+ blink::LocalFrameToken frame_token_;
+
+ // The run location at which injection is happening.
+ UserScript::RunLocation run_location_;
@@ -10827,13 +10909,12 @@ diff --git a/components/user_scripts/renderer/user_script_set_manager.cc b/compo
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/renderer/user_script_set_manager.cc
@@ -0,0 +1,76 @@
@@ -0,0 +1,65 @@
+#include "user_script_set_manager.h"
+
+#include "base/logging.h"
+#include "content/public/renderer/render_thread.h"
+#include "../common/host_id.h"
+#include "../common/extension_messages.h"
+#include "../common/user_scripts_features.h"
+#include "user_script_set.h"
+
@@ -10854,16 +10935,6 @@ new file mode 100755
+ observers_.RemoveObserver(observer);
+}
+
+bool UserScriptSetManager::OnControlMessageReceived(
+ const IPC::Message& message) {
+ bool handled = true;
+ IPC_BEGIN_MESSAGE_MAP(UserScriptSetManager, message)
+ IPC_MESSAGE_HANDLER(ExtensionMsg_UpdateUserScripts, OnUpdateUserScripts)
+ IPC_MESSAGE_UNHANDLED(handled = false)
+ IPC_END_MESSAGE_MAP()
+ return handled;
+}
+
+void UserScriptSetManager::GetAllInjections(
+ std::vector<std::unique_ptr<ScriptInjection>>* injections,
+ content::RenderFrame* render_frame,
@@ -10908,7 +10979,7 @@ diff --git a/components/user_scripts/renderer/user_script_set_manager.h b/compon
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/renderer/user_script_set_manager.h
@@ -0,0 +1,64 @@
@@ -0,0 +1,56 @@
+#ifndef USERSCRIPTS_RENDER_SET_MANAGER_H_
+#define USERSCRIPTS_RENDER_SET_MANAGER_H_
+
@@ -10949,19 +11020,11 @@ new file mode 100755
+ int tab_id,
+ UserScript::RunLocation run_location);
+
+private:
+#if BUILDFLAG(IS_ANDROID)
+ // content::RenderThreadObserver implementation.
+ bool OnControlMessageReceived(const IPC::Message& message) override;
+#endif
+
+ base::ObserverList<Observer>::Unchecked observers_;
+
+ // Handle the UpdateUserScripts extension message.
+ void OnUpdateUserScripts(base::ReadOnlySharedMemoryRegion shared_memory);
+ //, const HostID& host_id,
+ //const std::set<HostID>& changed_hosts,
+ //bool whitelisted_only);
+
+private:
+ base::ObserverList<Observer>::Unchecked observers_;
+
+ // Scripts statically defined in extension manifests.
+ UserScriptSet static_scripts_;
@@ -10977,7 +11040,7 @@ diff --git a/components/user_scripts/renderer/user_scripts_dispatcher.cc b/compo
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/renderer/user_scripts_dispatcher.cc
@@ -0,0 +1,36 @@
@@ -0,0 +1,64 @@
+#include "user_scripts_dispatcher.h"
+
+#include <stddef.h>
@@ -10993,11 +11056,12 @@ new file mode 100755
+
+// ex ChromeExtensionsDispatcherDelegate
+UserScriptsDispatcher::UserScriptsDispatcher()
+ : user_script_set_manager_observer_(this) {
+ user_script_set_manager_.reset(new UserScriptSetManager());
+ script_injection_manager_.reset(
+ new ScriptInjectionManager(user_script_set_manager_.get()));
+ user_script_set_manager_observer_.Observe(user_script_set_manager_.get());
+ : receiver_(this),
+ user_script_set_manager_observer_(this) {
+ user_script_set_manager_.reset(new UserScriptSetManager());
+ script_injection_manager_.reset(
+ new ScriptInjectionManager(user_script_set_manager_.get()));
+ user_script_set_manager_observer_.Observe(user_script_set_manager_.get());
+}
+
+UserScriptsDispatcher::~UserScriptsDispatcher() {
@@ -11006,6 +11070,11 @@ new file mode 100755
+void UserScriptsDispatcher::OnRenderThreadStarted(content::RenderThread* thread) {
+}
+
+void UserScriptsDispatcher::UpdateUserScripts(
+ base::ReadOnlySharedMemoryRegion shared_memory) {
+ user_script_set_manager_->OnUpdateUserScripts(std::move(shared_memory));
+}
+
+void UserScriptsDispatcher::OnUserScriptsUpdated(const std::set<HostID>& changed_hosts) {
+}
+
@@ -11013,13 +11082,34 @@ new file mode 100755
+ script_injection_manager_->OnRenderFrameCreated(render_frame);
+}
+
+void UserScriptsDispatcher::RegisterMojoInterfaces(
+ blink::AssociatedInterfaceRegistry* associated_interfaces) {
+ // This base::Unretained() is safe, because:
+ // 1) the Dispatcher is a RenderThreadObserver and outlives the RenderThread.
+ // 2) |asscoiated_interfaces| is owned by the RenderThread.
+ // As well the Dispatcher is owned by the
+ // ExtensionsRendererClient, which in turn is a leaky LazyInstance (and thus
+ // never deleted).
+ associated_interfaces->AddInterface<mojom::Renderer>(base::BindRepeating(
+ &UserScriptsDispatcher::OnRendererAssociatedRequest, base::Unretained(this)));
+}
+
+void UserScriptsDispatcher::UnregisterMojoInterfaces(
+ blink::AssociatedInterfaceRegistry* associated_interfaces) {
+ associated_interfaces->RemoveInterface(mojom::Renderer::Name_);
+}
+
+void UserScriptsDispatcher::OnRendererAssociatedRequest(
+ mojo::PendingAssociatedReceiver<mojom::Renderer> receiver) {
+ receiver_.Bind(std::move(receiver));
+}
+
+}
\ No newline at end of file
diff --git a/components/user_scripts/renderer/user_scripts_dispatcher.h b/components/user_scripts/renderer/user_scripts_dispatcher.h
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/renderer/user_scripts_dispatcher.h
@@ -0,0 +1,49 @@
@@ -0,0 +1,67 @@
+#ifndef USERSCRIPTS_RENDER_DISPATCHER_H_
+#define USERSCRIPTS_RENDER_DISPATCHER_H_
+
@@ -11041,10 +11131,14 @@ new file mode 100755
+#include "../common/host_id.h"
+#include "user_script_set_manager.h"
+#include "script_injection.h"
+#include "components/user_scripts/common/mojom/renderer.mojom.h"
+#include "mojo/public/cpp/bindings/associated_receiver.h"
+#include "third_party/blink/public/common/associated_interfaces/associated_interface_registry.h"
+
+namespace user_scripts {
+
+class UserScriptsDispatcher : public content::RenderThreadObserver,
+ public mojom::Renderer,
+ public UserScriptSetManager::Observer {
+
+ public:
@@ -11056,8 +11150,22 @@ new file mode 100755
+ void OnRenderThreadStarted(content::RenderThread* thread);
+ void OnUserScriptsUpdated(const std::set<HostID>& changed_hosts) override;
+ void OnRenderFrameCreated(content::RenderFrame* render_frame);
+ void UpdateUserScripts(base::ReadOnlySharedMemoryRegion shared_memory) override;
+
+ private:
+ // RenderThreadObserver implementation:
+ void RegisterMojoInterfaces(
+ blink::AssociatedInterfaceRegistry* associated_interfaces) override;
+ void UnregisterMojoInterfaces(
+ blink::AssociatedInterfaceRegistry* associated_interfaces) override;
+
+ void OnRendererAssociatedRequest(
+ mojo::PendingAssociatedReceiver<mojom::Renderer> receiver);
+
+ // Extensions renderer receiver. This is an associated receiver because
+ // it is dependent on other messages sent on other associated channels.
+ mojo::AssociatedReceiver<mojom::Renderer> receiver_;
+
+ std::unique_ptr<UserScriptSetManager> user_script_set_manager_;
+
+ std::unique_ptr<ScriptInjectionManager> script_injection_manager_;
+267 -215
View File
@@ -28,14 +28,14 @@ suit Cromite logic.
.../api/settings_private/prefs_util.cc | 14 +
...hrome_browser_main_extra_parts_profiles.cc | 2 -
chrome/browser/resources/settings/BUILD.gn | 2 +
.../settings/adblock_page/adblock_page.html | 212 +
.../settings/adblock_page/adblock_page.ts | 303 +
.../settings/basic_page/basic_page.html | 4 +
.../settings/basic_page/basic_page.ts | 1 +
.../settings/adblock_page/adblock_page.html | 218 +
.../settings/adblock_page/adblock_page.ts | 311 +
.../resources/settings/page_visibility.ts | 1 +
chrome/browser/resources/settings/route.ts | 4 +
chrome/browser/resources/settings/route.ts | 5 +
chrome/browser/resources/settings/router.ts | 1 +
chrome/browser/resources/settings/settings.ts | 1 +
.../settings/settings_main/settings_main.html | 7 +
.../settings/settings_main/settings_main.ts | 1 +
.../settings/settings_menu/settings_menu.html | 5 +
chrome/browser/ui/tab_helpers.cc | 3 +-
.../extensions/api/_permission_features.json | 14 -
@@ -43,11 +43,11 @@ suit Cromite logic.
.../adblock/android/adblock_controller_jni.cc | 79 +-
.../components/adblock/AdblockController.java | 51 +-
components/adblock/content/browser/BUILD.gn | 24 +-
.../content/browser/adblock_blocking_page.cc | 182 +
.../content/browser/adblock_blocking_page.cc | 183 +
.../content/browser/adblock_blocking_page.h | 75 +
.../browser/adblock_content_browser_client.h | 241 +-
.../browser/adblock_internals_page_handler.cc | 9 +-
.../browser/adblock_url_loader_factory.cc | 70 +-
.../browser/adblock_url_loader_factory.cc | 71 +-
.../browser/adblock_webcontents_observer.cc | 62 +-
.../browser/adblock_webcontents_observer.h | 5 +-
.../content/browser/element_hider_impl.cc | 13 +-
@@ -99,7 +99,7 @@ suit Cromite logic.
.../adblock/core/subscription/subscription.cc | 20 +
.../adblock/core/subscription/subscription.h | 3 +
.../subscription_collection_impl.cc | 1 +
.../core/subscription/subscription_config.cc | 40 +-
.../core/subscription/subscription_config.cc | 41 +-
.../core/subscription/subscription_config.h | 6 +-
.../subscription_downloader_impl.cc | 19 +-
.../subscription_persistent_metadata.h | 1 +
@@ -115,6 +115,7 @@ suit Cromite logic.
components/blocked_content/popup_blocker.h | 3 +
.../browser/bromite_content_settings/ads.inc | 3 +
components/error_page_strings.grdp | 16 +
.../resources/interstitial_enterprisewarn.css | 7 +
.../websockets/websocket_connector_impl.cc | 6 +-
.../public/browser/content_browser_client.cc | 4 +-
.../public/browser/content_browser_client.h | 4 +-
@@ -126,7 +127,7 @@ suit Cromite logic.
.../renderer/core/exported/web_document.cc | 13 +-
.../blink/renderer/core/html/html_element.cc | 8 +-
.../definitions/adblock_private.d.ts | 14 +
121 files changed, 9221 insertions(+), 618 deletions(-)
122 files changed, 9249 insertions(+), 618 deletions(-)
rename chrome/browser/adblock/android/java/res/xml/{adblock_preferences.xml => eyeo_adblock_preferences.xml} (59%)
create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.html
create mode 100644 chrome/browser/resources/settings/adblock_page/adblock_page.ts
@@ -155,7 +156,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
<!-- The main_preferences file will be reordered with the upcoming autofill
options. Only the order changes. Each pref should exist here and in the layout
for the previous order (main_preferences_legacy). -->
@@ -98,11 +89,6 @@ for the previous order (main_preferences_legacy). -->
@@ -100,11 +91,6 @@ for the previous order (main_preferences_legacy). -->
android:key="autofill_options"
android:order="16"
android:title="@string/autofill_options_title" />
@@ -167,7 +168,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
<PreferenceCategory
android:key="advanced_section"
@@ -134,6 +120,11 @@ for the previous order (main_preferences_legacy). -->
@@ -136,6 +122,11 @@ for the previous order (main_preferences_legacy). -->
android:key="adblock"
android:order="13"
android:title="@string/prefs_adblock"/>
@@ -1197,7 +1198,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
#include "components/adblock/content/browser/factories/content_security_policy_injector_factory.h"
#include "components/adblock/content/browser/factories/element_hider_factory.h"
#include "components/adblock/content/browser/factories/resource_classification_runner_factory.h"
@@ -946,7 +945,6 @@ void ChromeBrowserMainExtraPartsProfiles::
@@ -947,7 +946,6 @@ void ChromeBrowserMainExtraPartsProfiles::
// Makes manual testing possible.
FakeSmartCardDeviceServiceFactory::GetInstance();
#endif
@@ -1228,7 +1229,7 @@ diff --git a/chrome/browser/resources/settings/adblock_page/adblock_page.html b/
new file mode 100644
--- /dev/null
+++ b/chrome/browser/resources/settings/adblock_page/adblock_page.html
@@ -0,0 +1,212 @@
@@ -0,0 +1,218 @@
+<!--
+ This file is part of Bromite.
+
@@ -1245,8 +1246,7 @@ new file mode 100644
+ You should have received a copy of the GNU General Public License
+ along with Bromite. If not, see <https://www.gnu.org/licenses/>.
+-->
+
+<style include="settings-shared cr-shared-style settings-shared action-link iron-flex">
+<style include="settings-shared cr-shared-style">
+ #languagesCollapse .list-item.selected {
+ min-height: var(--settings-row-two-line-min-height);
+ }
@@ -1255,197 +1255,204 @@ new file mode 100644
+ text-overflow: ellipsis;
+ word-wrap: break-word;
+ }
+ settings-section[section="adblock"] {
+ width: 680px;
+ margin: auto;
+ }
+</style>
+<settings-toggle-button class="hr" pref="{{prefs.adblock.enabled}}"
+ on-change="onAdblockEnabled_"
+ label="Enable Adblock Plus" data-qa="adblock-toogle"
+ sub-label-icon="[[additionalMessageIcon]]"
+ sub-label="[[additionalMessage]]">
+</settings-toggle-button>
+
+<div hidden$="[[!prefs.adblock.enabled.value]]">
+<settings-section page-title="Adblock" section="adblock">
+ <settings-toggle-button class="hr" pref="{{prefs.adblock.enabled}}"
+ on-change="onAdblockEnabled_"
+ label="Enable Adblock Plus" data-qa="adblock-toogle"
+ sub-label-icon="[[additionalMessageIcon]]"
+ sub-label="[[additionalMessage]]">
+ </settings-toggle-button>
+
+ <div class="cr-row first">
+ <div class="flex cr-padded-text">
+ <div>Enable anti-circumvention and snippets</div>
+ <div class="cr-secondary-text">
+ Snippets are pieces of JavaScript code, injected by the Adblock Plus, that execute within the context of a website and combat advanced ads that circumvent ordinary blocking.
+ The functionality is ONLY allowed for the list
+ <a href="https://www.cromite.org/filters/abp-filters-anti-cv.txt">abp-filters-anti-cv.txt</a>
+ which is activated by this setting.
+ <br><a href="https://gitlab.com/eyeo/anti-cv/abp-filters-anti-cv">Open ABP anti-circumvention filter list repo</a>
+ <br><a href="https://developers.eyeo.com/snippets/snippets-overview">Open ABP Snippets Overview</a>
+ </div>
+ </div>
+ <div class="separator"></div>
+ <cr-toggle id="enablePrivilegedFiltersToggle"
+ checked="[[isEnablePrivilegedFiltersToggle_]]"
+ on-change="onEnablePrivilegedFiltersToggle_">
+ </cr-toggle>
+ </div>
+ <div hidden$="[[!prefs.adblock.enabled.value]]">
+
+ <div class="cr-row first">
+ <div class="flex cr-padded-text">
+ </div>
+ <cr-button class="button" on-click="startUpdateCycle">
+ Check for updates now
+ </cr-button>
+ </div>
+
+ <div style="border-top: 1px solid silver">
+ <cr-expand-button class="cr-row first" expanded="{{recommendedSubscriptions}}" data-qa="recommended-subscriptions-menu-item">
+ <div>
+ <div>Built in Subscriptions ([[countEnabled]] selected)</div>
+ <div class="cr-row first">
+ <div class="flex cr-padded-text">
+ <div>Enable anti-circumvention and snippets</div>
+ <div class="cr-secondary-text">
+ Add the languages in which you regularly browse websites in
+ Snippets are pieces of JavaScript code, injected by the Adblock Plus, that execute within the context of a website and combat advanced ads that circumvent ordinary blocking.
+ The functionality is ONLY allowed for the list
+ <a href="https://www.cromite.org/filters/abp-filters-anti-cv.txt">abp-filters-anti-cv.txt</a>
+ which is activated by this setting.
+ <br><a href="https://gitlab.com/eyeo/anti-cv/abp-filters-anti-cv">Open ABP anti-circumvention filter list repo</a>
+ <br><a href="https://developers.eyeo.com/snippets/snippets-overview">Open ABP Snippets Overview</a>
+ </div>
+ </div>
+ </cr-expand-button>
+ <iron-collapse opened="{{recommendedSubscriptions}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="[[subscriptions]]">
+ <div class="list-item">
+ <cr-checkbox id="[[item.url]]" no-set-pref on-change="selectRecommendedSubscription"
+ checked="{{item.enabled}}">
+ </cr-checkbox>
+ <div class="start cr-padded-text">
+ <div data-qa="recommended-subscription-list-item">
+ [[item.title]]
+ </div>
+ <div hidden="[[item.enabled]]">
+ <div><b>Download from:</b> [[item.url]]</div>
+ </div>
+ <div hidden="[[!item.enabled]]" style="margin-left: 20px; margin-top: 5px;">
+ <div><b>URL:</b> [[item.url]]</div>
+ <div><b>Version:</b> [[item.current_version]]</div>
+ <div><b>Status:</b> [[item.installation_state]] ([[item.last_installation_time]])</div>
+ <div><b>Download:</b> [[item.download_success_count]] <b>Errors:</b> [[item.download_error_count]]</div>
+ </div>
+ </div>
+ </div>
+ </template>
+ <div class="separator"></div>
+ <cr-toggle id="enablePrivilegedFiltersToggle"
+ checked="[[isEnablePrivilegedFiltersToggle_]]"
+ on-change="onEnablePrivilegedFiltersToggle_">
+ </cr-toggle>
+ </div>
+
+ <div class="cr-row first">
+ <div class="flex cr-padded-text">
+ </div>
+ </iron-collapse>
+ </div>
+ <div>
+ <cr-expand-button class="cr-row first" expanded="{{allowedDomainsOpened}}" data-qa="allowed-domains-menu-item">
+ <div>
+ Allowed Domains ([[allowedDomainsCount]] added)
+ </div>
+ <div class="cr-secondary-text">
+ Support your favorite websites by adding them to this list. You might see ads on them.
+ </div>
+ </cr-expand-button>
+ <iron-collapse opened="{{allowedDomainsOpened}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="{{allowedDomains}}">
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <div data-qa="allowed-domains-list-item">
+ [[item]]
+ </div>
+ </div>
+ <cr-button class="button" id="[[item]]" on-click="removeAllowedDomain" data-qa="remove-allowed-domains-btn">
+ Remove
+ </cr-button>
+ </div>
+ </template>
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <cr-input slot="inputs" value="{{allowedDomainInput}}" data-qa="allowed-domains-input">
+ <cr-button slot="suffix" class="action-button" id="[[item]]" on-click="addAllowedDomain" data-qa="add-allowed-domains-btn">
+ Add
+ </cr-button>
+ </cr-input>
+ <cr-button class="button" on-click="startUpdateCycle">
+ Check for updates now
+ </cr-button>
+ </div>
+
+ <div style="border-top: 1px solid silver">
+ <cr-expand-button class="cr-row first" expanded="{{recommendedSubscriptions}}" data-qa="recommended-subscriptions-menu-item">
+ <div>
+ <div>Built in Subscriptions ([[countEnabled]] selected)</div>
+ <div class="cr-secondary-text">
+ Add the languages in which you regularly browse websites in
+ </div>
+ </div>
+ </div>
+ </iron-collapse>
+ </div>
+ <div>
+ <cr-expand-button class="cr-row first" expanded="{{customSubscriptionsOpened}}" data-qa="custom-subscriptions-menu-item">
+ <div>
+ Custom Subscriptions ([[customSubscriptions.length]] added)
+ </div>
+ <div class="cr-secondary-text">
+ Add custom filter urls
+ </div>
+ </cr-expand-button>
+ <iron-collapse opened="{{customSubscriptionsOpened}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="{{customSubscriptions}}">
+ <div class="list-item">
+ <div class="start cr-padded-text ad-fixed-width">
+ <div data-qa="custom-subscriptions-list-item">
+ [[item.url]]
+ <div style="margin-left: 20px; margin-top: 5px;">
+ </cr-expand-button>
+ <iron-collapse opened="{{recommendedSubscriptions}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="[[subscriptions]]">
+ <div class="list-item">
+ <cr-checkbox id="[[item.url]]" no-set-pref on-change="selectRecommendedSubscription"
+ checked="{{item.enabled}}">
+ </cr-checkbox>
+ <div class="start cr-padded-text">
+ <div data-qa="recommended-subscription-list-item">
+ [[item.title]]
+ </div>
+ <div hidden="[[item.enabled]]">
+ <div><b>Download from:</b> [[item.url]]</div>
+ </div>
+ <div hidden="[[!item.enabled]]" style="margin-left: 20px; margin-top: 5px;">
+ <div><b>URL:</b> [[item.url]]</div>
+ <div><b>Version:</b> [[item.current_version]]</div>
+ <div><b>Status:</b> [[item.installation_state]] ([[item.last_installation_time]])</div>
+ <div><b>Download:</b> [[item.download_success_count]] <b>Errors:</b> [[item.download_error_count]]</div>
+ </div>
+ </div>
+ </div>
+ <cr-button class="button" id="[[item.url]]"
+ on-click="removeCustomSubscription" data-qa="remove-custom-subscriptions-btn">
+ Remove
+ </cr-button>
+ </div>
+ </template>
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <cr-input slot="inputs" value="{{customSubscriptionInput}}" data-qa="custom-subscriptions-input">
+ <cr-button slot="suffix" class="action-button" id="[[item]]" on-click="addCustomSubscription" data-qa="add-custom-subscription-btn">
+ Add
+ </cr-button>
+ </cr-input>
+ </div>
+ </template>
+ </div>
+ </div>
+ </iron-collapse>
+ </div>
+ <div>
+ <cr-expand-button class="cr-row first" expanded="{{customFiltersOpened}}" data-qa="custom-filters-menu-item">
+ <div>
+ Custom Filters ([[customFilters.length]] added)
+ </div>
+ <div class="cr-secondary-text">
+ Add custom filter commands
+ </div>
+ </cr-expand-button>
+ <iron-collapse opened="{{customFiltersOpened}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="{{customFilters}}">
+ <div class="list-item">
+ <div class="start cr-padded-text ad-fixed-width">
+ <div data-qa="custom-filters-list-item">
+ [[item]]
+ </iron-collapse>
+ </div>
+ <div>
+ <cr-expand-button class="cr-row first" expanded="{{allowedDomainsOpened}}" data-qa="allowed-domains-menu-item">
+ <div>
+ Allowed Domains ([[allowedDomainsCount]] added)
+ </div>
+ <div class="cr-secondary-text">
+ Support your favorite websites by adding them to this list. You might see ads on them.
+ </div>
+ </cr-expand-button>
+ <iron-collapse opened="{{allowedDomainsOpened}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="{{allowedDomains}}">
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <div data-qa="allowed-domains-list-item">
+ [[item]]
+ </div>
+ </div>
+ </div>
+ <cr-button class="button" id="[[item]]" on-click="removeCustomFilter" data-qa="remove-custom-filter-btn">
+ Remove
+ </cr-button>
+ </div>
+ </template>
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <cr-input slot="inputs" value="{{customFilterInput}}" data-qa="custom-filter-input">
+ <cr-button slot="suffix" class="action-button" id="[[item]]" on-click="addCustomFilter" data-qa="add-custom-filter-btn">
+ Add
+ <cr-button class="button" id="[[item]]" on-click="removeAllowedDomain" data-qa="remove-allowed-domains-btn">
+ Remove
+ </cr-button>
+ </cr-input>
+ </div>
+ </template>
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <cr-input slot="inputs" value="{{allowedDomainInput}}" data-qa="allowed-domains-input">
+ <cr-button slot="suffix" class="action-button" id="[[item]]" on-click="addAllowedDomain" data-qa="add-allowed-domains-btn">
+ Add
+ </cr-button>
+ </cr-input>
+ </div>
+ </div>
+ </div>
+ </div>
+ </iron-collapse>
+ </div>
+ </iron-collapse>
+ </div>
+ <div>
+ <cr-expand-button class="cr-row first" expanded="{{customSubscriptionsOpened}}" data-qa="custom-subscriptions-menu-item">
+ <div>
+ Custom Subscriptions ([[customSubscriptions.length]] added)
+ </div>
+ <div class="cr-secondary-text">
+ Add custom filter urls
+ </div>
+ </cr-expand-button>
+ <iron-collapse opened="{{customSubscriptionsOpened}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="{{customSubscriptions}}">
+ <div class="list-item">
+ <div class="start cr-padded-text ad-fixed-width">
+ <div data-qa="custom-subscriptions-list-item">
+ [[item.url]]
+ <div style="margin-left: 20px; margin-top: 5px;">
+ <div><b>Version:</b> [[item.current_version]]</div>
+ <div><b>Status:</b> [[item.installation_state]] ([[item.last_installation_time]])</div>
+ <div><b>Download:</b> [[item.download_success_count]] <b>Errors:</b> [[item.download_error_count]]</div>
+ </div>
+ </div>
+ </div>
+ <cr-button class="button" id="[[item.url]]"
+ on-click="removeCustomSubscription" data-qa="remove-custom-subscriptions-btn">
+ Remove
+ </cr-button>
+ </div>
+ </template>
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <cr-input slot="inputs" value="{{customSubscriptionInput}}" data-qa="custom-subscriptions-input">
+ <cr-button slot="suffix" class="action-button" id="[[item]]" on-click="addCustomSubscription" data-qa="add-custom-subscription-btn">
+ Add
+ </cr-button>
+ </cr-input>
+ </div>
+ </div>
+ </div>
+ </iron-collapse>
+ </div>
+ <div>
+ <cr-expand-button class="cr-row first" expanded="{{customFiltersOpened}}" data-qa="custom-filters-menu-item">
+ <div>
+ Custom Filters ([[customFilters.length]] added)
+ </div>
+ <div class="cr-secondary-text">
+ Add custom filter commands
+ </div>
+ </cr-expand-button>
+ <iron-collapse opened="{{customFiltersOpened}}">
+ <div class="list-frame vertical-list">
+ <template is="dom-repeat" items="{{customFilters}}">
+ <div class="list-item">
+ <div class="start cr-padded-text ad-fixed-width">
+ <div data-qa="custom-filters-list-item">
+ [[item]]
+ </div>
+ </div>
+ <cr-button class="button" id="[[item]]" on-click="removeCustomFilter" data-qa="remove-custom-filter-btn">
+ Remove
+ </cr-button>
+ </div>
+ </template>
+ <div class="list-item">
+ <div class="start cr-padded-text">
+ <cr-input slot="inputs" value="{{customFilterInput}}" data-qa="custom-filter-input">
+ <cr-button slot="suffix" class="action-button" id="[[item]]" on-click="addCustomFilter" data-qa="add-custom-filter-btn">
+ Add
+ </cr-button>
+ </cr-input>
+ </div>
+ </div>
+ </div>
+ </iron-collapse>
+ </div>
+
+</div>
+<cr-toast-manager></cr-toast-manager>
+ </div>
+ <cr-toast-manager></cr-toast-manager>
+</settings-section>
diff --git a/chrome/browser/resources/settings/adblock_page/adblock_page.ts b/chrome/browser/resources/settings/adblock_page/adblock_page.ts
new file mode 100644
--- /dev/null
+++ b/chrome/browser/resources/settings/adblock_page/adblock_page.ts
@@ -0,0 +1,303 @@
@@ -0,0 +1,311 @@
+/*
+ This file is part of Bromite.
+
@@ -1477,6 +1484,8 @@ new file mode 100644
+import {CrCheckboxElement} from 'chrome://resources/cr_elements/cr_checkbox/cr_checkbox.js';
+import {getTemplate} from './adblock_page.html.js';
+import {getToastManager} from 'chrome://resources/cr_elements/cr_toast/cr_toast_manager.js';
+import {getSearchManager} from '../search_settings.js';
+import type {SettingsPlugin} from '../settings_main/settings_plugin.js';
+
+const SettingsAdblockPageElementBase =
+ I18nMixin(PrefsMixin(BaseMixin((PolymerElement))));
@@ -1492,8 +1501,8 @@ new file mode 100644
+ last_installation_time: string;
+}
+
+export class SettingsAdblockPageElement extends
+ SettingsAdblockPageElementBase {
+export class SettingsAdblockPageElement extends SettingsAdblockPageElementBase
+ implements SettingsPlugin {
+ static get is() {
+ return 'settings-adblock-page';
+ }
@@ -1739,6 +1748,12 @@ new file mode 100644
+ toastManager.duration = 5000;
+ toastManager.show("Starting update...");
+ }
+
+ // SettingsPlugin implementation
+ async searchContents(query: string) {
+ const searchRequest = await getSearchManager().search(query, this);
+ return searchRequest.getSearchResult();
+ }
+}
+
+declare global {
@@ -1749,29 +1764,6 @@ new file mode 100644
+
+customElements.define(
+ SettingsAdblockPageElement.is, SettingsAdblockPageElement);
diff --git a/chrome/browser/resources/settings/basic_page/basic_page.html b/chrome/browser/resources/settings/basic_page/basic_page.html
--- a/chrome/browser/resources/settings/basic_page/basic_page.html
+++ b/chrome/browser/resources/settings/basic_page/basic_page.html
@@ -8,4 +8,8 @@
section="privacy">
<settings-privacy-page prefs="{{prefs}}"></settings-privacy-page>
</settings-section>
+ <settings-section page-title="Adblock"
+ section="adblock">
+ <settings-adblock-page prefs="{{prefs}}"></settings-adblock-page>
+ </settings-section>
</div>
diff --git a/chrome/browser/resources/settings/basic_page/basic_page.ts b/chrome/browser/resources/settings/basic_page/basic_page.ts
--- a/chrome/browser/resources/settings/basic_page/basic_page.ts
+++ b/chrome/browser/resources/settings/basic_page/basic_page.ts
@@ -16,6 +16,7 @@ import '../settings_page_styles.css.js';
import {I18nMixin} from 'chrome://resources/cr_elements/i18n_mixin.js';
import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js';
+import '../adblock_page/adblock_page.js';
import {routes} from '../route.js';
import type {Route} from '../router.js';
import {RouteObserverMixin} from '../router.js';
diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/browser/resources/settings/page_visibility.ts
--- a/chrome/browser/resources/settings/page_visibility.ts
+++ b/chrome/browser/resources/settings/page_visibility.ts
@@ -1786,12 +1778,13 @@ diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/brows
diff --git a/chrome/browser/resources/settings/route.ts b/chrome/browser/resources/settings/route.ts
--- a/chrome/browser/resources/settings/route.ts
+++ b/chrome/browser/resources/settings/route.ts
@@ -246,6 +246,10 @@ function createRoutes(): SettingsRoutes {
@@ -246,6 +246,11 @@ function createRoutes(): SettingsRoutes {
r.FONTS.hasMigratedToPlugin = true;
}
+ if (visibility.adblock !== false) {
+ r.ADBLOCK = r.BASIC.createSection('/adblock', 'adblock');
+ r.ADBLOCK.hasMigratedToPlugin = true;
+ }
+
if (visibility.autofill !== false) {
@@ -1819,6 +1812,34 @@ diff --git a/chrome/browser/resources/settings/settings.ts b/chrome/browser/reso
export {PasswordCheckReferrer, PasswordManagerImpl, PasswordManagerPage, PasswordManagerProxy} from './autofill_page/password_manager_proxy.js';
export {BaseMixin} from './base_mixin.js';
export {SettingsBasicPageElement} from './basic_page/basic_page.js';
diff --git a/chrome/browser/resources/settings/settings_main/settings_main.html b/chrome/browser/resources/settings/settings_main/settings_main.html
--- a/chrome/browser/resources/settings/settings_main/settings_main.html
+++ b/chrome/browser/resources/settings/settings_main/settings_main.html
@@ -188,6 +188,13 @@
</div>
</template>
+ <div slot="view" id="adblock">
+ <template is="dom-if" if="[[renderPlugin_(
+ routes_.ADBLOCK, lastRoute_, inSearchMode_)]]">
+ <settings-adblock-page prefs="{{prefs}}"></settings-adblock-page>
+ </template>
+ </div>
+
<if expr="not is_chromeos">
<template is="dom-if" if="[[showPage_(pageVisibility_.system)]]">
<div slot="view" id="system">
diff --git a/chrome/browser/resources/settings/settings_main/settings_main.ts b/chrome/browser/resources/settings/settings_main/settings_main.ts
--- a/chrome/browser/resources/settings/settings_main/settings_main.ts
+++ b/chrome/browser/resources/settings/settings_main/settings_main.ts
@@ -20,6 +20,7 @@ import '../performance_page/performance_page_index.js';
import '../privacy_page/privacy_page_index.js';
import '../reset_page/reset_profile_banner.js';
import '../search_page/search_page_index.js';
+import '../adblock_page/adblock_page.js';
// <if expr="not is_chromeos">
import '../default_browser_page/default_browser_page.js';
diff --git a/chrome/browser/resources/settings/settings_menu/settings_menu.html b/chrome/browser/resources/settings/settings_menu/settings_menu.html
--- a/chrome/browser/resources/settings/settings_menu/settings_menu.html
+++ b/chrome/browser/resources/settings/settings_menu/settings_menu.html
@@ -2215,7 +2236,7 @@ diff --git a/components/adblock/content/browser/adblock_blocking_page.cc b/compo
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_blocking_page.cc
@@ -0,0 +1,182 @@
@@ -0,0 +1,183 @@
+/*
+ This file is part of Cromite.
+
@@ -2240,6 +2261,7 @@ new file mode 100644
+#include "base/i18n/rtl.h"
+#include "base/strings/escape.h"
+#include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/utf_string_conversions.h"
+#include "components/grit/components_resources.h"
+#include "components/security_interstitials/content/security_interstitial_controller_client.h"
@@ -3023,7 +3045,15 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
auto subscription_service = factory_->config_.subscription_service;
factory_->config_.resource_classifier->CheckResponseFilterMatch(
subscription_service->GetCurrentSnapshot(), request_url_,
@@ -661,6 +699,10 @@ void AdblockURLLoaderFactory::InProgressRequest::Start(
@@ -619,6 +657,7 @@ void AdblockURLLoaderFactory::InProgressRequest::Start(
? net::RedirectInfo::FirstPartyURLPolicy::UPDATE_URL_ON_REDIRECT
: net::RedirectInfo::FirstPartyURLPolicy::NEVER_CHANGE_URL,
request.referrer_policy, request.referrer.spec(),
+ request.request_initiator,
kInternalRedirectStatusCode, rewrite.value(),
absl::nullopt /* referrer_policy_header */,
false /* insecure_scheme_was_upgraded */, false /* copy_fragment */,
@@ -661,6 +700,10 @@ void AdblockURLLoaderFactory::InProgressRequest::Start(
VLOG(1) << "[eyeo] Checking filter match for: " << request.url << " ("
<< request.resource_type << ")";
@@ -3034,7 +3064,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
CheckFilterMatch(base::BindOnce(
&InProgressRequest::OnRequestFilterMatchResult,
weak_factory_.GetWeakPtr(), std::move(target_loader), options, request,
@@ -729,10 +771,12 @@ void AdblockURLLoaderFactory::InProgressRequest::ApplyPostBlockingBehavior()
@@ -729,10 +772,12 @@ void AdblockURLLoaderFactory::InProgressRequest::ApplyPostBlockingBehavior()
// some cleanup to preserve good user experience.
if (frame) {
if (is_document_request_) {
@@ -11818,7 +11848,15 @@ diff --git a/components/adblock/core/subscription/subscription_collection_impl.c
diff --git a/components/adblock/core/subscription/subscription_config.cc b/components/adblock/core/subscription/subscription_config.cc
--- a/components/adblock/core/subscription/subscription_config.cc
+++ b/components/adblock/core/subscription/subscription_config.cc
@@ -29,7 +29,7 @@ namespace {
@@ -19,6 +19,7 @@
#include <map>
+#include "base/strings/string_number_conversions.h"
#include "base/strings/string_split.h"
#include "base/strings/string_util.h"
#include "components/adblock/core/common/adblock_constants.h"
@@ -29,7 +30,7 @@ namespace {
int g_port_for_testing = 0;
std::string GetHost() {
@@ -11827,7 +11865,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo
if (!g_port_for_testing) {
return url.spec();
}
@@ -108,7 +108,19 @@ const std::vector<KnownSubscriptionInfo>& config::GetKnownSubscriptions() {
@@ -108,7 +109,19 @@ const std::vector<KnownSubscriptionInfo>& config::GetKnownSubscriptions() {
"EasyList",
{"en"},
SubscriptionUiVisibility::Visible,
@@ -11848,7 +11886,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo
SubscriptionPrivilegedFilterStatus::Forbidden},
{GURL(GetHost() + "abpindo.txt"),
"ABPindo",
@@ -262,17 +274,23 @@ const std::vector<KnownSubscriptionInfo>& config::GetKnownSubscriptions() {
@@ -262,17 +275,23 @@ const std::vector<KnownSubscriptionInfo>& config::GetKnownSubscriptions() {
SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch,
SubscriptionPrivilegedFilterStatus::Forbidden},
{AcceptableAdsUrl(),
@@ -11876,7 +11914,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo
{GURL(GetHost() + "i_dont_care_about_cookies.txt"),
"I don't care about cookies",
{},
@@ -303,13 +321,13 @@ const std::vector<KnownSubscriptionInfo>& config::GetKnownSubscriptions() {
@@ -303,13 +322,13 @@ const std::vector<KnownSubscriptionInfo>& config::GetKnownSubscriptions() {
{},
SubscriptionUiVisibility::Invisible,
SubscriptionFirstRunBehavior::Ignore,
@@ -11892,7 +11930,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo
// You can customize subscriptions available on first run and in settings
// here. Items are displayed in settings in order declared here. See
@@ -346,7 +364,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) {
@@ -346,7 +365,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) {
for (const auto& cur : GetKnownSubscriptions()) {
if (cur.url == url) {
return cur.privileged_status ==
@@ -11901,7 +11939,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.cc b/compo
}
}
@@ -356,9 +374,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) {
@@ -356,9 +375,7 @@ bool config::AllowPrivilegedFilters(const GURL& url) {
const std::vector<PreloadedSubscriptionInfo>&
config::GetPreloadedSubscriptionConfiguration() {
static const std::vector<PreloadedSubscriptionInfo> preloaded_subscriptions =
@@ -12376,6 +12414,20 @@ diff --git a/components/error_page_strings.grdp b/components/error_page_strings.
<message name="IDS_ERRORPAGES_SUMMARY_BLOCKED_BY_SECURITY" desc="Summary in the error page when the request has been blocked because of some security configuration of the site.">
This content is blocked. Contact the site owner to fix the issue.
</message>
diff --git a/components/security_interstitials/core/browser/resources/interstitial_enterprisewarn.css b/components/security_interstitials/core/browser/resources/interstitial_enterprisewarn.css
--- a/components/security_interstitials/core/browser/resources/interstitial_enterprisewarn.css
+++ b/components/security_interstitials/core/browser/resources/interstitial_enterprisewarn.css
@@ -14,3 +14,10 @@
filter: invert(1);
}
}
+
+.enterprise-warn .interstitial-wrapper .nav-wrapper button {
+ float: none !important;
+ width: 100%;
+ margin-bottom: 20px;
+ padding: 14px;
+}
diff --git a/content/browser/websockets/websocket_connector_impl.cc b/content/browser/websockets/websocket_connector_impl.cc
--- a/content/browser/websockets/websocket_connector_impl.cc
+++ b/content/browser/websockets/websocket_connector_impl.cc
@@ -8,13 +8,60 @@ required by the chromium build tools.
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
components/metrics/generate_expired_histograms_array.gni | 7 +++++--
components/variations/field_trial_config/BUILD.gn | 4 +++-
tools/grit/grit_rule.gni | 4 +++-
tools/json_to_struct/json_to_struct.gni | 4 +++-
tools/metrics/generate_allowlist_from_histograms_file.gni | 5 +++--
5 files changed, 17 insertions(+), 7 deletions(-)
build/config/android/internal_rules.gni | 5 ++++-
build/config/python.gni | 7 ++++++-
.../metrics/generate_expired_histograms_array.gni | 7 +++++--
components/variations/field_trial_config/BUILD.gn | 4 +++-
tools/grit/grit_rule.gni | 4 +++-
tools/json_schema_compiler/json_schema_api.gni | 12 +++++++++---
tools/json_to_struct/json_to_struct.gni | 4 +++-
.../generate_allowlist_from_histograms_file.gni | 5 +++--
8 files changed, 36 insertions(+), 12 deletions(-)
diff --git a/build/config/android/internal_rules.gni b/build/config/android/internal_rules.gni
--- a/build/config/android/internal_rules.gni
+++ b/build/config/android/internal_rules.gni
@@ -547,12 +547,15 @@ template("write_build_config") {
} else {
action_with_pydeps(target_name) {
forward_variables_from(invoker, [ "testonly" ])
- script = "//build/android/gyp/write_build_config.py"
+ script = "//build/gn_run_binary.py"
+ original_script = "//build/android/gyp/write_build_config.py"
depfile = "$target_gen_dir/$target_name.d"
inputs = _inputs
outputs = _outputs
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(original_script),
"--output",
rebase_path(invoker.build_config, root_build_dir),
"--depfile",
diff --git a/build/config/python.gni b/build/config/python.gni
--- a/build/config/python.gni
+++ b/build/config/python.gni
@@ -91,6 +91,7 @@ template("action_with_pydeps") {
[
"testonly",
"visibility",
+ "original_script"
])
forward_variables_from(invoker,
"*",
@@ -102,7 +103,11 @@ template("action_with_pydeps") {
# Read and filter out comments.
# Happens every time the template is instantiated, but benchmarking shows no
# perceivable impact on overall 'gn gen' speed.
- _pydeps_file = invoker.script + "deps"
+ if (!defined(original_script)) {
+ _pydeps_file = invoker.script + "deps"
+ } else {
+ _pydeps_file = invoker.original_script + "deps"
+ }
_pydeps_lines =
read_file(_pydeps_file, "list lines") # https://crbug.com/1102058
diff --git a/components/metrics/generate_expired_histograms_array.gni b/components/metrics/generate_expired_histograms_array.gni
--- a/components/metrics/generate_expired_histograms_array.gni
+++ b/components/metrics/generate_expired_histograms_array.gni
@@ -81,6 +128,61 @@ diff --git a/tools/grit/grit_rule.gni b/tools/grit/grit_rule.gni
"-i",
_rebased_source_path,
"build",
diff --git a/tools/json_schema_compiler/json_schema_api.gni b/tools/json_schema_compiler/json_schema_api.gni
--- a/tools/json_schema_compiler/json_schema_api.gni
+++ b/tools/json_schema_compiler/json_schema_api.gni
@@ -112,13 +112,15 @@ template("generated_json_strings") {
action(bundle_generator_schema_name) {
visibility = [ ":$root_target_name" ]
- script = compiler_script
+ script = "//build/gn_run_binary.py"
inputs = compiler_sources + invoker.sources
outputs = [
"$target_gen_dir/generated_schemas.cc",
"$target_gen_dir/generated_schemas.h",
]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(compiler_script),
"--root=" + rebase_path(root_folder, root_build_dir),
"--destdir=$destdir",
"--namespace=$root_namespace",
@@ -227,13 +229,15 @@ template("function_registration") {
action(bundle_generator_registration_name) {
visibility = [ ":$root_target_name" ]
- script = compiler_script
+ script = "//build/gn_run_binary.py"
inputs = compiler_sources + invoker.sources
outputs = [
"$gen_child_dir/generated_api_registration.cc",
"$gen_child_dir/generated_api_registration.h",
]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(compiler_script),
"--root=" + rebase_path(root_folder, root_build_dir),
"--destdir=$destdir",
"--namespace=$root_namespace",
@@ -321,7 +325,7 @@ template("generated_types") {
action_foreach(schema_generator_name) {
visibility = [ ":$root_target_name" ]
- script = compiler_script
+ script = "//build/gn_run_binary.py"
sources = invoker.sources
inputs = compiler_sources
outputs = [
@@ -329,6 +333,8 @@ template("generated_types") {
"$target_gen_dir/{{source_name_part}}.h",
]
args = [
+ rebase_path("//third_party/depot_tools/vpython3"),
+ rebase_path(compiler_script),
"{{source}}",
"--root=" + rebase_path(root_folder, root_build_dir),
"--destdir=$destdir",
diff --git a/tools/json_to_struct/json_to_struct.gni b/tools/json_to_struct/json_to_struct.gni
--- a/tools/json_to_struct/json_to_struct.gni
+++ b/tools/json_to_struct/json_to_struct.gni
@@ -26,6 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../TabListEmptyCoordinator.java | 17 +-
.../tab_management/TabSwitcherPaneBase.java | 9 +
.../browser/feed/FeedSurfaceCoordinator.java | 4 +
.../android/java/res/xml/main_preferences.xml | 3 +-
.../ChromeAccessibilitySettingsDelegate.java | 70 ++++++++
.../HeadlessBrowserControlsStateProvider.java | 5 +
.../compositor/CompositorViewHolder.java | 7 +
@@ -98,7 +99,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/viz/common/features.cc | 2 +
.../render_widget_host_view_android.cc | 3 +
.../Move-navigation-bar-to-bottom.inc | 17 ++
85 files changed, 1059 insertions(+), 77 deletions(-)
86 files changed, 1061 insertions(+), 78 deletions(-)
create mode 100644 chrome/browser/hub/internal/android/java/src/org/chromium/chrome/browser/hub/ReversedLinearLayout.java
create mode 100644 cromite_flags/chrome/browser/about_flags_cc/Move-navigation-bar-to-bottom.inc
@@ -445,7 +446,7 @@ diff --git a/chrome/android/features/tab_ui/java/src/org/chromium/chrome/browser
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ public void writeToParcel(Parcel dest, int flags) {
+ dest.writeParcelable(superState, flags);
+ dest.writeInt(mTopPadding);
+ }
@@ -717,6 +718,19 @@ diff --git a/chrome/android/feed/core/java/src/org/chromium/chrome/browser/feed/
mNtpHeader.setLayoutParams(layoutParams);
}
diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/java/res/xml/main_preferences.xml
--- a/chrome/android/java/res/xml/main_preferences.xml
+++ b/chrome/android/java/res/xml/main_preferences.xml
@@ -48,7 +48,8 @@ for the previous order (main_preferences_legacy). -->
android:fragment="org.chromium.chrome.browser.toolbar.settings.AddressBarSettingsFragment"
android:key="address_bar"
android:order="7"
- android:title="@string/address_bar_settings"/>
+ android:title="@string/address_bar_settings"
+ app:isPreferenceVisible="false"/>
<Preference
android:fragment="org.chromium.chrome.browser.privacy.settings.PrivacySettings"
android:key="privacy"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/accessibility/settings/ChromeAccessibilitySettingsDelegate.java
@@ -1477,7 +1491,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/searchwidget/Se
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/settings/FragmentDependencyProvider.java
@@ -203,6 +203,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
@@ -208,6 +208,11 @@ public class FragmentDependencyProvider extends FragmentManager.FragmentLifecycl
if (fragment instanceof INeedSnackbarManager) {
((INeedSnackbarManager)fragment).setSnackbarManagerSupplier(mSnackbarManagerSupplier);
}
@@ -2612,7 +2626,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
@@ -1442,6 +1442,12 @@ Your Google account may have other forms of browsing history like searches and a
@@ -1563,6 +1563,12 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_FORCE_TABLET_UI_TITLE" desc="Title of the preference that allows the user to update force tablet UI settings.">
Force Tablet Mode
</message>
@@ -10,12 +10,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../renderer_host/render_frame_host_impl.cc | 2 +
.../Partition-blobs-by-top-frame-URL.inc | 1 +
storage/browser/blob/blob_url_store_impl.cc | 57 +++++++++++++++++--
storage/browser/blob/blob_url_store_impl.h | 11 +++-
storage/browser/blob/blob_url_registry.cc | 31 +++++++++-
storage/browser/blob/blob_url_registry.h | 11 +++-
storage/browser/blob/blob_url_store_impl.cc | 62 +++++++++++++++++--
storage/browser/blob/blob_url_store_impl.h | 15 ++++-
storage/browser/blob/features.cc | 1 +
.../public/mojom/blob/blob_url_store.mojom | 8 ++-
.../core/fileapi/public_url_manager.cc | 21 ++++++-
7 files changed, 92 insertions(+), 9 deletions(-)
.../public/mojom/blob/blob_url_store.mojom | 13 +++-
.../core/fileapi/public_url_manager.cc | 33 +++++++++-
9 files changed, 154 insertions(+), 15 deletions(-)
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc
diff --git a/content/browser/renderer_host/render_frame_host_impl.cc b/content/browser/renderer_host/render_frame_host_impl.cc
@@ -36,10 +38,106 @@ new file mode 100644
+++ b/cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_ENABLED(kEnforceNoopenerOnBlobURLNavigation);
diff --git a/storage/browser/blob/blob_url_registry.cc b/storage/browser/blob/blob_url_registry.cc
--- a/storage/browser/blob/blob_url_registry.cc
+++ b/storage/browser/blob/blob_url_registry.cc
@@ -93,13 +93,18 @@ bool BlobUrlRegistry::AddUrlMapping(
mojo::PendingRemote<blink::mojom::Blob> blob,
const blink::StorageKey& storage_key,
const url::Origin& renderer_origin,
- int render_process_host_id) {
+ int render_process_host_id,
+ const base::UnguessableToken& unsafe_agent_cluster_id,
+ const std::optional<net::SchemefulSite>& unsafe_top_level_site) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(!BlobUrlUtils::UrlHasFragment(blob_url));
if (IsUrlMapped(blob_url, storage_key) ==
BlobUrlRegistry::MappingStatus::kIsMapped) {
return false;
}
+ url_to_unsafe_agent_cluster_id_[blob_url] = unsafe_agent_cluster_id;
+ if (unsafe_top_level_site)
+ url_to_unsafe_top_level_site_[blob_url] = *unsafe_top_level_site;
BlobUrlData data;
data.blob = std::move(blob);
data.storage_key = storage_key;
@@ -121,6 +126,8 @@ bool BlobUrlRegistry::RemoveUrlMapping(const GURL& blob_url,
return false;
}
url_to_data_.erase(data_it);
+ url_to_unsafe_agent_cluster_id_.erase(blob_url);
+ url_to_unsafe_top_level_site_.erase(blob_url);
return true;
}
@@ -184,6 +191,28 @@ BlobUrlRegistry::MappingStatus BlobUrlRegistry::IsUrlMapped(
return BlobUrlRegistry::MappingStatus::kNotMappedOther;
}
+std::optional<base::UnguessableToken> BlobUrlRegistry::GetUnsafeAgentClusterID(
+ const GURL& blob_url) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ auto it = url_to_unsafe_agent_cluster_id_.find(blob_url);
+ if (it != url_to_unsafe_agent_cluster_id_.end())
+ return it->second;
+ if (fallback_)
+ return fallback_->GetUnsafeAgentClusterID(blob_url);
+ return std::nullopt;
+}
+
+std::optional<net::SchemefulSite> BlobUrlRegistry::GetUnsafeTopLevelSite(
+ const GURL& blob_url) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ auto it = url_to_unsafe_top_level_site_.find(blob_url);
+ if (it != url_to_unsafe_top_level_site_.end())
+ return it->second;
+ if (fallback_)
+ return fallback_->GetUnsafeTopLevelSite(blob_url);
+ return std::nullopt;
+}
+
mojo::PendingRemote<blink::mojom::Blob> BlobUrlRegistry::GetBlobFromUrl(
const GURL& url) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
diff --git a/storage/browser/blob/blob_url_registry.h b/storage/browser/blob/blob_url_registry.h
--- a/storage/browser/blob/blob_url_registry.h
+++ b/storage/browser/blob/blob_url_registry.h
@@ -97,7 +97,9 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry {
mojo::PendingRemote<blink::mojom::Blob> blob,
const blink::StorageKey& storage_key,
const url::Origin& renderer_origin,
- int render_process_host_id);
+ int render_process_host_id,
+ const base::UnguessableToken& unsafe_agent_cluster_id,
+ const std::optional<net::SchemefulSite>& unsafe_top_level_site);
// Removes the given URL mapping associated with `storage_key`. Returns false
// if the URL wasn't mapped.
@@ -108,6 +110,11 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry {
MappingStatus IsUrlMapped(const GURL& blob_url,
const blink::StorageKey& storage_key) const;
+ std::optional<base::UnguessableToken> GetUnsafeAgentClusterID(
+ const GURL& blob_url) const;
+ std::optional<net::SchemefulSite> GetUnsafeTopLevelSite(
+ const GURL& blob_url) const;
+
// Returns the blob from the given url. Returns a null remote if the mapping
// doesn't exist.
mojo::PendingRemote<blink::mojom::Blob> GetBlobFromUrl(const GURL& url);
@@ -163,6 +170,8 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobUrlRegistry {
};
std::map<GURL, BlobUrlData> url_to_data_;
+ std::map<GURL, base::UnguessableToken> url_to_unsafe_agent_cluster_id_;
+ std::map<GURL, net::SchemefulSite> url_to_unsafe_top_level_site_;
std::map<base::UnguessableToken,
std::pair<GURL, mojo::PendingRemote<blink::mojom::Blob>>>
token_to_url_and_blob_;
diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/blob_url_store_impl.cc
--- a/storage/browser/blob/blob_url_store_impl.cc
+++ b/storage/browser/blob/blob_url_store_impl.cc
@@ -113,6 +113,30 @@ BlobURLStoreImpl::~BlobURLStoreImpl() {
@@ -113,9 +113,35 @@ BlobURLStoreImpl::~BlobURLStoreImpl() {
}
}
@@ -70,7 +168,12 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
void BlobURLStoreImpl::Register(
mojo::PendingRemote<blink::mojom::Blob> blob,
const GURL& url,
@@ -123,6 +147,13 @@ void BlobURLStoreImpl::Register(
+ const base::UnguessableToken& unsafe_agent_cluster_id,
+ const std::optional<net::SchemefulSite>& unsafe_top_level_site,
RegisterCallback callback) {
// TODO(crbug.com/40061399): Generate blob URLs here, rather than
// validating the URLs the renderer process generated.
@@ -123,10 +149,18 @@ void BlobURLStoreImpl::Register(
std::move(callback).Run();
return;
}
@@ -84,7 +187,13 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
if (registry_)
registry_->AddUrlMapping(url, std::move(blob), storage_key_,
@@ -148,7 +179,7 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess(
- renderer_origin_, render_process_host_id_);
+ renderer_origin_, render_process_host_id_,
+ unsafe_agent_cluster_id, unsafe_top_level_site);
urls_.insert(url);
std::move(callback).Run();
}
@@ -148,7 +182,7 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess(
features::kBlockCrossPartitionBlobUrlFetching) &&
!partitioning_disabled_by_policy_;
@@ -93,7 +202,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
has_storage_access_handle &&
mapping_status ==
BlobUrlRegistry::MappingStatus::
@@ -158,7 +189,9 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess(
@@ -158,7 +192,9 @@ bool BlobURLStoreImpl::ShouldPartitionBlobUrlAccess(
void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
const GURL& url,
@@ -104,7 +213,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
if (!registry_) {
BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver));
return;
@@ -181,6 +214,7 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
@@ -181,6 +217,7 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) {
if (ShouldPartitionBlobUrlAccess(has_storage_access_handle,
mapping_status)) {
@@ -112,21 +221,21 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
partitioning_blob_url_closure_.Run(
url, blink::mojom::PartitioningBlobURLInfo::
kBlockedCrossPartitionFetching);
@@ -192,6 +226,13 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
@@ -192,6 +229,13 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
}
}
+ if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) {
+ // LOG(INFO) << "---ResolveAsURLLoaderFactory blocked by IsSamePartition" << url;
+ BlobURLLoaderFactory::Create(mojo::NullRemote(), url, std::move(receiver));
+ std::move(callback).Run(std::nullopt, std::nullopt);
+ //std::move(callback).Run(std::nullopt, std::nullopt);
+ return;
+ }
+ // LOG(INFO) << "---ResolveAsURLLoaderFactory allowed " << url;
BlobURLLoaderFactory::Create(registry_->GetBlobFromUrl(url), url,
std::move(receiver));
}
@@ -199,7 +240,9 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
@@ -199,7 +243,9 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
void BlobURLStoreImpl::ResolveAsBlobURLToken(
const GURL& url,
mojo::PendingReceiver<blink::mojom::BlobURLToken> token,
@@ -137,7 +246,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
// This function is known to be heap allocation heavy and performance
// critical. Extra memory safety checks can introduce regression
// (https://crbug.com/414710225) and these are disabled here.
@@ -216,6 +259,7 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken(
@@ -216,6 +262,7 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken(
registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url),
storage_key_);
if (IsBlobUrlAccessCrossPartitionSameOrigin(mapping_status)) {
@@ -145,13 +254,13 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
if (ShouldPartitionBlobUrlAccess(has_storage_access_handle,
mapping_status)) {
partitioning_blob_url_closure_.Run(
@@ -226,12 +270,17 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken(
@@ -226,12 +273,17 @@ void BlobURLStoreImpl::ResolveAsBlobURLToken(
partitioning_blob_url_closure_.Run(url, std::nullopt);
}
}
+ if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) {
+ // LOG(INFO) << "---ResolveAsBlobURLToken blocked by IsSamePartition" << url;
+ std::move(callback).Run(std::nullopt);
+ //std::move(callback).Run(std::nullopt);
+ return;
+ }
@@ -167,12 +276,20 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/blob_url_store_impl.h
--- a/storage/browser/blob/blob_url_store_impl.h
+++ b/storage/browser/blob/blob_url_store_impl.h
@@ -60,11 +60,15 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl
void ResolveAsURLLoaderFactory(
@@ -55,16 +55,22 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl
void Register(
mojo::PendingRemote<blink::mojom::Blob> blob,
const GURL& url,
mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver)
+ const base::UnguessableToken& unsafe_agent_cluster_id,
+ const std::optional<net::SchemefulSite>& unsafe_top_level_site,
RegisterCallback callback) override;
void Revoke(const GURL& url) override;
void ResolveAsURLLoaderFactory(
const GURL& url,
- mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver)
+ mojo::PendingReceiver<network::mojom::URLLoaderFactory> receiver,
+ const base::UnguessableToken& unsafe_agent_cluster_id,
+ const std::optional<net::SchemefulSite>& unsafe_top_level_site)
override;
void ResolveAsBlobURLToken(
const GURL& url,
@@ -184,7 +301,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.h b/storage/browser/blob/b
private:
// Checks if the passed in url is a valid blob url for this blob url store.
@@ -77,6 +81,11 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl
@@ -77,6 +83,11 @@ class COMPONENT_EXPORT(STORAGE_BROWSER) BlobURLStoreImpl
bool has_storage_access_handle,
BlobUrlRegistry::MappingStatus mapping_status);
@@ -210,7 +327,26 @@ diff --git a/storage/browser/blob/features.cc b/storage/browser/blob/features.cc
diff --git a/third_party/blink/public/mojom/blob/blob_url_store.mojom b/third_party/blink/public/mojom/blob/blob_url_store.mojom
--- a/third_party/blink/public/mojom/blob/blob_url_store.mojom
+++ b/third_party/blink/public/mojom/blob/blob_url_store.mojom
@@ -33,7 +33,9 @@ interface BlobURLStore {
@@ -4,6 +4,7 @@
module blink.mojom;
import "mojo/public/mojom/base/unguessable_token.mojom";
+import "services/network/public/mojom/schemeful_site.mojom";
import "services/network/public/mojom/url_loader_factory.mojom";
import "third_party/blink/public/mojom/blob/blob.mojom";
import "url/mojom/url.mojom";
@@ -19,7 +20,9 @@ interface BlobURLStore {
// new blob: URL rather than letting the caller in the renderer provide one.
[Sync] Register(
pending_remote<blink.mojom.Blob> blob,
- url.mojom.Url url) => ();
+ url.mojom.Url url,
+ mojo_base.mojom.UnguessableToken unsafe_agent_cluster_id,
+ network.mojom.SchemefulSite? unsafe_top_level_site) => ();
// Revokes a public Blob URL.
Revoke(url.mojom.Url url);
@@ -33,7 +36,9 @@ interface BlobURLStore {
// both the blob URL and all other references to the blob have been dropped.
ResolveAsURLLoaderFactory(
url.mojom.Url url,
@@ -221,7 +357,7 @@ diff --git a/third_party/blink/public/mojom/blob/blob_url_store.mojom b/third_pa
// Resolves a public Blob URL into a BlobURLToken. The BlobURLToken can be
// used by the browser process to securely look up the blob a URL used to
@@ -41,7 +43,9 @@ interface BlobURLStore {
@@ -41,7 +46,9 @@ interface BlobURLStore {
// As long as the token is alive, the resolved blob will also be kept alive.
ResolveAsBlobURLToken(url.mojom.Url url,
pending_receiver<BlobURLToken> token,
@@ -257,7 +393,26 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi
} // namespace
PublicURLManager::PublicURLManager(ExecutionContext* execution_context)
@@ -208,7 +223,8 @@ void PublicURLManager::Resolve(
@@ -158,7 +173,17 @@ String PublicURLManager::RegisterURL(URLRegistrable* registrable) {
mojo::PendingReceiver<mojom::blink::Blob> blob_receiver =
blob_remote.InitWithNewPipeAndPassReceiver();
- GetBlobURLStore().Register(std::move(blob_remote), url);
+ std::optional<BlinkSchemefulSite> top_level_site;
+ if (GetExecutionContext()->IsWindow()) {
+ auto* window = To<LocalDOMWindow>(GetExecutionContext());
+ if (window->top() && window->top()->GetFrame()) {
+ top_level_site = BlinkSchemefulSite(window->top()
+ ->GetFrame()
+ ->GetSecurityContext()
+ ->GetSecurityOrigin());
+ }
+ }
+ GetBlobURLStore().Register(std::move(blob_remote), url, GetExecutionContext()->GetAgentClusterID(), top_level_site);
mojo_urls_.insert(url_string);
registrable->CloneMojoBlob(std::move(blob_receiver));
@@ -208,7 +233,8 @@ void PublicURLManager::Resolve(
DCHECK(url.ProtocolIs("blob"));
@@ -267,7 +422,7 @@ diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/thi
}
void PublicURLManager::ResolveAsBlobURLToken(
@@ -221,7 +237,8 @@ void PublicURLManager::ResolveAsBlobURLToken(
@@ -221,7 +247,8 @@ void PublicURLManager::ResolveAsBlobURLToken(
DCHECK(url.ProtocolIs("blob"));
GetBlobURLStore().ResolveAsBlobURLToken(url, std::move(token_receiver),
@@ -211,7 +211,7 @@ new file mode 100644
+ WebsiteSettingsInfo::REQUESTING_ORIGIN_ONLY_SCOPE,
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::INSECURE_PRIVATE_NETWORK)
@@ -90,7 +90,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/omnibox/common/BUILD.gn | 1 -
.../components/omnibox/OmniboxFeatures.java | 8 -
components/signin/public/android/BUILD.gn | 3 -
components/webauthn/android/BUILD.gn | 14 -
components/webauthn/android/BUILD.gn | 18 +-
.../webauthn/AuthenticatorImpl.java | 89 +-
.../webauthn/ConditionalUiState.java | 15 +
.../webauthn/GmsCoreGetCredentialsHelper.java | 78 +-
@@ -112,7 +112,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
third_party/androidx/customizations.gni | 14 +-
third_party/cardboard/BUILD.gn | 4 -
89 files changed, 124 insertions(+), 2595 deletions(-)
88 files changed, 128 insertions(+), 2595 deletions(-)
create mode 100644 components/webauthn/android/java/src/org/chromium/components/webauthn/ConditionalUiState.java
diff --git a/android_webview/expectations/system_webview_bundle.AndroidManifest.expected b/android_webview/expectations/system_webview_bundle.AndroidManifest.expected
@@ -194,7 +194,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//third_party/android_deps:protobuf_lite_runtime_java",
"//third_party/android_media:android_media_java",
"//third_party/android_swipe_refresh:android_swipe_refresh_java",
@@ -1960,7 +1961,6 @@ if (_is_default_toolchain) {
@@ -1968,7 +1969,6 @@ if (_is_default_toolchain) {
]
deps = [
":chrome_java",
@@ -202,7 +202,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//base:base_java",
"//base:base_java_test_support",
"//build/android:build_java",
@@ -2072,7 +2072,6 @@ if (_is_default_toolchain) {
@@ -2080,7 +2080,6 @@ if (_is_default_toolchain) {
# is in a DFM.
android_library("base_module_java") {
sources = [
@@ -210,7 +210,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"java/src/org/chromium/chrome/app/TrichromeZygotePreload.java",
"java/src/org/chromium/chrome/browser/ChromeBackgroundService.java",
"java/src/org/chromium/chrome/browser/DeferredStartupHandler.java",
@@ -2090,8 +2089,6 @@ if (_is_default_toolchain) {
@@ -2098,8 +2097,6 @@ if (_is_default_toolchain) {
"java/src/org/chromium/chrome/browser/base/SplitCompatBackupAgent.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatContentProvider.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatCustomTabsService.java",
@@ -219,7 +219,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"java/src/org/chromium/chrome/browser/base/SplitCompatIntentService.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatJobService.java",
"java/src/org/chromium/chrome/browser/base/SplitCompatMinidumpUploadJobService.java",
@@ -2118,15 +2115,10 @@ if (_is_default_toolchain) {
@@ -2126,15 +2123,10 @@ if (_is_default_toolchain) {
"java/src/org/chromium/chrome/browser/photo_picker/DecoderService.java",
"java/src/org/chromium/chrome/browser/provider/ChromeBrowserProvider.java",
"java/src/org/chromium/chrome/browser/provider/PageContentProvider.java",
@@ -235,7 +235,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//base:base_java",
"//chrome/browser/autofill/android:third_party_provider_java",
"//chrome/browser/download/android:file_provider_java",
@@ -2141,7 +2133,6 @@ if (_is_default_toolchain) {
@@ -2149,7 +2141,6 @@ if (_is_default_toolchain) {
"//components/media_router/browser/android:cast_options_provider_java",
"//components/minidump_uploader:minidump_uploader_java",
"//components/module_installer/android:module_installer_java",
@@ -243,7 +243,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//third_party/androidx:androidx_annotation_annotation_java",
"//third_party/androidx:androidx_collection_collection_java",
"//third_party/jni_zero:jni_zero_java",
@@ -2161,7 +2152,6 @@ if (_is_default_toolchain) {
@@ -2169,7 +2160,6 @@ if (_is_default_toolchain) {
# Deps to pull services into base module.
# TODO(crbug.com/40148088): Consider moving these to the chrome module to
# reduce base dex size.
@@ -262,7 +262,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
"java/src/org/chromium/chrome/browser/ChromeBaseAppCompatActivity.java",
"java/src/org/chromium/chrome/browser/ChromeInactivityTracker.java",
"java/src/org/chromium/chrome/browser/ChromeKeyboardVisibilityDelegate.java",
@@ -949,10 +948,6 @@ chrome_java_sources = [
@@ -950,10 +949,6 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/segmentation_platform/SignalAccumulator.java",
"java/src/org/chromium/chrome/browser/segmentation_platform/TabGroupingActionProvider.java",
"java/src/org/chromium/chrome/browser/selection/ChromeSelectionDropdownMenuDelegate.java",
@@ -591,7 +591,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p
"account_storage_notice:java",
"//base:base_java",
"//build/android:build_java",
@@ -228,7 +226,6 @@ android_library("utils_java") {
@@ -251,7 +249,6 @@ android_library("utils_java") {
deps = [
":java_resources",
@@ -599,7 +599,7 @@ diff --git a/chrome/browser/password_manager/android/BUILD.gn b/chrome/browser/p
"//base:base_java",
"//base:resetters_java",
"//base:tasks_java",
@@ -309,8 +306,6 @@ robolectric_binary("password_manager_junit_tests") {
@@ -332,8 +329,6 @@ robolectric_binary("password_manager_junit_tests") {
":test_support_java",
":unified_password_manager_proto_java",
":utils_java",
@@ -3274,9 +3274,14 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/
"java/src/org/chromium/components/webauthn/FidoIntentSender.java",
"java/src/org/chromium/components/webauthn/GetCredentialResponseCallback.java",
"java/src/org/chromium/components/webauthn/GetMatchingCredentialIdsResponseCallback.java",
@@ -71,10 +65,6 @@ android_library("java") {
@@ -70,11 +64,11 @@ android_library("java") {
"java/src/org/chromium/components/webauthn/cred_man/GpmCredManRequestDecorator.java",
]
+ sources += [
+ "java/src/org/chromium/components/webauthn/ConditionalUiState.java",
+ ]
+
deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
@@ -3285,7 +3290,7 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/
"//base:base_java",
"//base:service_loader_java",
"//base/version_info/android:version_constants_java",
@@ -145,8 +135,6 @@ android_library("test_support_java") {
@@ -145,8 +139,6 @@ android_library("test_support_java") {
source_set("android") {
sources = [
"cred_man_support.h",
@@ -3294,7 +3299,7 @@ diff --git a/components/webauthn/android/BUILD.gn b/components/webauthn/android/
"internal_authenticator_android.cc",
"internal_authenticator_android.h",
"webauthn_browser_bridge.cc",
@@ -218,8 +206,6 @@ robolectric_library("junit") {
@@ -218,8 +210,6 @@ robolectric_library("junit") {
deps = [
":java",
":test_support_java",
+334 -26
View File
@@ -6,10 +6,15 @@ This reverts commit 4d0e4483c5f77c66a8b6193e8a3bec5d0624d6ad.
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
chrome/android/chrome_java_resources.gni | 1 +
chrome/android/chrome_java_resources.gni | 8 +
chrome/android/chrome_java_sources.gni | 2 +
.../ic_most_visited_placeholder.png | Bin 0 -> 1273 bytes
.../ic_most_visited_placeholder.png | Bin 0 -> 718 bytes
.../ic_most_visited_placeholder.png | Bin 0 -> 1519 bytes
.../ic_most_visited_placeholder.png | Bin 0 -> 2335 bytes
.../ic_most_visited_placeholder.png | Bin 0 -> 4034 bytes
.../java/res/layout/mv_tiles_container.xml | 39 +++
.../java/res/layout/mv_tiles_layout.xml | 16 +-
.../java/res/layout/mv_tiles_layout.xml | 11 +-
.../java/res/layout/new_tab_page_layout.xml | 7 +
.../new_tab_page_tile_grid_placeholder.xml | 43 +++
.../android/java/res/layout/ntp_shortcuts.xml | 65 ++++
@@ -28,20 +33,26 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../SuggestionsNavigationDelegate.java | 27 +-
.../tile/MostVisitedTilesCoordinator.java | 6 +-
.../tile/MostVisitedTilesGridLayout.java | 287 ++++++++++++++++++
.../tile/MostVisitedTilesMediator.java | 7 +-
.../tile/TileDragDelegateImpl.java | 6 +-
.../tile/MostVisitedTilesMediator.java | 11 +-
.../tile/TileDragDelegateImpl.java | 16 +-
.../suggestions/tile/TileRenderer.java | 8 +-
.../suggestions/tile/TilesLinearLayout.java | 2 +-
.../engagement/important_sites_util.cc | 2 +-
.../flags/android/chrome_feature_list.cc | 1 +
.../browser/flags/ChromeFeatureList.java | 3 +-
.../client_util/HomeModulesRankingHelper.java | 1 +
.../strings/android_chrome_strings.grd | 6 +
.../history/core/browser/top_sites_impl.h | 2 +-
components/ntp_tiles/custom_links_store.cc | 2 -
.../Restore-Simplified-NTP-launch.inc | 12 +
.../Restore-Simplified-NTP-launch.inc | 5 +
.../Restore-Simplified-NTP-launch.inc | 1 +
35 files changed, 615 insertions(+), 53 deletions(-)
41 files changed, 631 insertions(+), 59 deletions(-)
create mode 100644 chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png
create mode 100644 chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png
create mode 100644 chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png
create mode 100644 chrome/android/java/res/drawable-xxhdpi/ic_most_visited_placeholder.png
create mode 100644 chrome/android/java/res/drawable-xxxhdpi/ic_most_visited_placeholder.png
create mode 100644 chrome/android/java/res/layout/mv_tiles_container.xml
create mode 100644 chrome/android/java/res/layout/new_tab_page_tile_grid_placeholder.xml
create mode 100644 chrome/android/java/res/layout/ntp_shortcuts.xml
@@ -54,8 +65,31 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
diff --git a/chrome/android/chrome_java_resources.gni b/chrome/android/chrome_java_resources.gni
--- a/chrome/android/chrome_java_resources.gni
+++ b/chrome/android/chrome_java_resources.gni
@@ -535,6 +535,7 @@ chrome_java_resources = [
@@ -50,6 +50,11 @@ chrome_java_resources = [
"java/res/drawable-hdpi/ic_exit_to_app_white_24dp.png",
"java/res/drawable-hdpi/ic_file_download_white_24dp.png",
"java/res/drawable-hdpi/ic_link_grey600_36dp.png",
+ "java/res/drawable-hdpi/ic_most_visited_placeholder.png",
+ "java/res/drawable-mdpi/ic_most_visited_placeholder.png",
+ "java/res/drawable-xhdpi/ic_most_visited_placeholder.png",
+ "java/res/drawable-xxhdpi/ic_most_visited_placeholder.png",
+ "java/res/drawable-xxxhdpi/ic_most_visited_placeholder.png",
"java/res/drawable-hdpi/ic_phone_googblue_36dp.png",
"java/res/drawable-hdpi/ic_photo_camera.png",
"java/res/drawable-hdpi/ic_place_googblue_36dp.png",
@@ -524,6 +529,7 @@ chrome_java_resources = [
"java/res/layout/manage_sync_settings_bottom_bar.xml",
"java/res/layout/material_tooltip.xml",
"java/res/layout/multiline_spinner_item.xml",
+ "java/res/layout/mv_tiles_container.xml",
"java/res/layout/mv_tiles_layout.xml",
"java/res/layout/navigation_bubble.xml",
"java/res/layout/navigation_sheet.xml",
@@ -533,8 +539,10 @@ chrome_java_resources = [
"java/res/layout/new_custom_tab_toolbar.xml",
"java/res/layout/new_tab_page_incognito.xml",
"java/res/layout/new_tab_page_layout.xml",
+ "java/res/layout/new_tab_page_tile_grid_placeholder.xml",
"java/res/layout/one_line_list_item.xml",
"java/res/layout/open_full_chrome_history_header.xml",
+ "java/res/layout/ntp_shortcuts.xml",
@@ -73,7 +107,7 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
"java/src/org/chromium/chrome/browser/findinpage/FindToolbar.java",
"java/src/org/chromium/chrome/browser/findinpage/FindToolbarManager.java",
"java/src/org/chromium/chrome/browser/findinpage/FindToolbarObserver.java",
@@ -1012,6 +1013,7 @@ chrome_java_sources = [
@@ -1013,6 +1014,7 @@ chrome_java_sources = [
"java/src/org/chromium/chrome/browser/suggestions/mostvisited/MostVisitedSitesMetadataUtils.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesCoordinator.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesLayout.java",
@@ -81,6 +115,237 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesMediator.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesProperties.java",
"java/src/org/chromium/chrome/browser/suggestions/tile/MostVisitedTilesViewBinder.java",
diff --git a/chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-hdpi/ic_most_visited_placeholder.png
new file mode 100644
index 0000000000000000000000000000000000000000..3d71af1433341fc4552e9b6c7a96cd6911bcffeb
GIT binary patch
literal 1273
zcmV<V1P1$wP)<h;3K|Lk000e1NJLTq00341003491ONa4|6i$m000EQNkl<ZcmdQ{
zu}d6j6n{1;G&vA*xL_kBYjr8sV~bnPTvEtE$P$}07DwP#u(a_01S=uh*$8(<K(bv_
z4y^`nci!*a3VX17kb@vLDU8@8qD1t#%f4@R5;Ixdoo{9xf3MjY_WS0?H*em1zaK>b
zNh8lQSdvZDup|3&{2}(SgPLq&iD!_PG+j2_TbRT$cICf|1G`wpq<f3H4;kQTR9jN}
z_d~QIUFB&Rpl$*8WDO^02)xFM%%M;om9&%E=%XI$+30gpk}i*;Aahv3>ofm9ku}_-
zxFHYVe)7<FQp8kgnA$*T7*kTjyH8fT@*utp&7$Hz=v3BuVzrk##A+{3$U08_eJXC2
zqDHA7i+&y+$~+H}1$a>A<*=FGSS<BZbl`F9nXPevS?4B2fIq&*EDpR~_jsJ5K=B$c
z_%H3b-H8TI7|)w~^Fr|&*#Sec<q>@)V-y2q46i)GTNtA7;7qgN<C$}vVuEuW&zg;c
zGZYTx`|?(|I6{G91`0S*!f(s>!+limmFgReP!}NI;*CD<J&$*Ms)nj;^KI%9__k~t
zx*eS^XS@WcIVtKQoD^y%8QRWW40)f`wxQZxy58yTVyLaUDqAL3trEZ@8BFfVRvUGf
z7rY8ELYD-L;K;Oz3u}PaPkyFL1PUID@$<)(J<|f{l405e_Rbk`uxJ{qeYdjjYNiQe
zvE{t#4S{2n0LYjbAY074sF=x$5&|=kq4Gt+V&+vIq=bM6y?Hk%evG!lEF}n-HCipG
zSXHp73P=o`n@0S6ri5ipZ$71j0Z;W1*UnfLIB6)>PV*Hn@bco2qE+6Ws?RX+@z%8R
zU#AX%dRxX(g)AWJ+RLV?31bBDL=wsJgfX3bd(F5jtG(gK@?-a#&jU}C=wEvE2zAuM
zCc|p4adA9L50kpFZWfAch5~T!ek?j});pV!kfN@iG>=@?i>aiN#gwjJHW#W3O2hGx
zRevkP8TS#YsD^oerD3BT)U`IIC6OIj`JNy0!%}~ctN~~APMt!)GfdNjyl%2$OV*4*
zoQs9*imuHQ|DvqtVj+8gN;Bl|@ML99_nsjv=_Z9Z$OZ%T@G=KWB%6&N<<TUQEsyHz
zP4aAov@Kb_!#U2CZ;;~muQ+!$@FYB0uL#r#JB=Ss%9d<v*neP7O4sg?>^FXF^d*_>
zMxVa@eUjsbETf(zlcgS&vd349>=jCbEA@dzQ@UE9d_&9D9YfZ>bVbt?T7Yv#DHyW$
zO~G%sNha&J+lU4k?OJZu&GHX_{^Z_uvyDJrhnU|CS^GgInh{aKKL#d&s7FM9_)aoe
zZ}^T-*0|rPaQR0L@e);yUxQ>VWQ~Pjw5YQ-g3*)W2_@@G@z_j`VDMu@*23h7**>yY
z3ch`0Va!>OwJ_%5wLF9I!rJmou9+<J0W<mk_U)JkKp+UBs0lEFC9rTd&Jqa)>jEv5
z(=64o$^7JO%)IY9(_gD*dg=iJyOvO=9qbN89nG){UpOKTdmI5{Cos^1qEZlqX2AO%
z@jh!f8Jpnb5J|09UiU7N%E!KZMok3j_4NN-68c{eRYV_+DxxP*1tC|#gg}_YiXE@b
jEHDo)+h=gu{t7N%^^-?s9Fd&I00000NkvXXu0mjfGY4n(
literal 0
HcmV?d00001
diff --git a/chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-mdpi/ic_most_visited_placeholder.png
new file mode 100644
index 0000000000000000000000000000000000000000..f057df12978c838312853d20a9a700a9a2aaf821
GIT binary patch
literal 718
zcmV;<0x|uGP)<h;3K|Lk000e1NJLTq0021v0021%1ONa4CJ{>x0007&Nkl<ZcwWVs
zKWidE7{=cSiJg^=U0RFuUY|M<yYoB5R<yDZ@dMZ--{5Qv1hz>bh}q}4Ua?PMqbOvt
z+xQ;r1%`0(oLzUa&s5s{nA!K=JR|m+l>9pS9C5}a-VoxAOU^h#->*+flCDr@4-4w2
z_5S%c7VM#%2JH+r@B^~tBbt5{<#Ex=i+K5Q5oN!MCLg)|024JiljOn;=Mikp!L-uJ
z$w75;(+US%N8mYblHo4#6ya8A3@^k=!wWRHqEhjM%ecU6Y^dC!>lGxHyaKx1QL({w
z9N-;7Dt;x6!%2xlDni^@;qK4zK;<57IZ0@9PsPLi`ElSg6~W7`oUE5y1XMg9fkr!g
z^{*rq`B!|U;^DvFkcz+n(||@hy*nJGA@{aNYJa@kBgFOBdAOnaElFK|i;B$`c^W1D
zP@E`AnWukCn{t<WKQMW^qkb-fXPi^f6=y=1%DE}{f*O@8uiy^p6}Y0JW{|(BXoypx
zK?O|%R<4hA3+ka|+hw?>el&6Rs2qs6MT&4hWiJ9?L7i4?kYE2}i=9@eSVRF#<+hV^
zkL={QrA|uX*Qp$dBuCm~IimV?L7$4I9nyf3A<?9w|Cd}%f{Y(Vel<E#&ZsCmN1Ak;
z376Dy(Gq!3cF1v&%B3Kndin1`dU+}WLCALzw@4%I5q|$J-!k}?u_E>`Do(_jymX8-
zc^SL<n0!oJeN2sYkK`lO|7kjj<M1(^#Pmz&$d?~fEK-;X%(9*e%<SV5X=a}cCcF&h
z*bJui4DKY^-Mq~G67BSXXq)?GmbYm4UO~o=NcO&uakox2D*Tplx2!!p4qbbA?wv~a
zer(3Bb8>Hebii95S$OMNz91xhCkYTDNcK+h2fYj#{p3=OZvX%Q07*qoM6N<$f{avI
AQ2+n{
literal 0
HcmV?d00001
diff --git a/chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-xhdpi/ic_most_visited_placeholder.png
new file mode 100644
index 0000000000000000000000000000000000000000..12e3d77ef68c092977975d7ac8e777304250b20d
GIT binary patch
literal 1519
zcmV<L1rYj)P)<h;3K|Lk000e1NJLTq0043T0043b1ONa4CDcv!000HHNkl<ZcwX(D
zJx?1=5Xa{U5MCr2A}pmr!h|xw2S7w_k_H5bf{xBWi)bH&Q95LIG$3ju++q-gB@5r}
z&NLAcG)Rb-6j2(26h#U$Ao3LK-kw?DF~)b?ZSH?9ob-d)+1Z)dIq*{1I_l<wG>a>=
zjSTnjgwCi$B|5_s+(Sm&xI(jhkh-&V5H{uC&=@V@K3&qE3ZF~drzIN8zk%S3`Y}Vh
zbVGltd~RqLGt>{k6n{qxboBoic!gILz#h>8e+R))p`K45yBFvh4=INknzR$Fk9Dya
zZw3J1%`C>cSf8DsNz70V5ApgwRAhXjP!BJytwugY#~NOVikRXbwi=)Co)4I!B9%1M
zV?L$c<GVIma0b8K!TX7;?BhmD_3z}LaFu?RgW@-w5%2U@Y#2}PthG%XFErI;0W{$_
zZkDfIJY~b+r*=9iR|fct7K?A8#wxz0Mf~LkrQA-ZPi}_h@WKUnjw#*-9*MVM3eOcL
z{-!z4U6I{E+y!`n^L8tEEV~uw-G5f%b_aMT9Ks(i#7!#>KFNyXrozM@I0Rm3xdGEI
zz^{B1d=?+YuP)H^azpJ+Ca(}_O&F=qvRi4*g_*DEQeiRt;#!AEctK%Otxx>IVl~?^
z@K7Ss0rkKOi+bq5!91+Vro!LT_h%c3my72+fB$T+=0aT0zJ`D(`<k)}(~3WDEh<A@
zO1**rDfNn$l+m(S^+uuG&1VRp@UwD3c58L}qO$uX2&i2D&3qO6CT1MOtY)Y|GTN+z
znR#*mr#xyE?#5Raq%01Ho)m^VG3r4Tw(fr%bRc6|yQA{M6qnHr^*{(jJx&zFD?EtN
zoMWm<2#GN1c#yfuf;br)u0e=IYts5E2=pi?4^!G|4EV})4q`cYTzo{DDj$K6iH}N?
zWy6mr8BgV@A3`XZJ;2jP5|}t6?b?b%2xY~kKf##?v)D3KjPnpu;k-;oKah3DX_;iy
zTuzwW&$*zOzCQ#w7LX|ju`nfTD0)}`d_rc!c^iaSyiI1^`Gf}G6yFvh<f27c_|r<L
zvTXC*nnpGC<yzNJWU1&*8J8B+{up*hwO`UgIpmRm95(`TTo&csi2bsJT4*u>ve4v|
zar?DY2d)Ct3i2sGQ+rrk)lwp~D+1e(ra<yf;+?xrYmw-?DQ&cv0=dy5S}blv`xA``
z>LP$CkN{K^RAXhiOH92Kq!+N5D$5z;zF3h1CPDHK!u9Om2IiNy-BVkQUO-A9zah68
zMVHrQp&qDP7EJ(5f&_4iRo%b`W%|cINI!xDm6GFwK(n&Zz%WQv&6x#U5s*paAd`Y@
z1!(&g(oUELX(z<{wn5fCtX>Zwef(WrR<D5MfO`TmZX9G>nCl+k$t`5D-89HzyMR0a
zIunkz*)&MrEZ%npx6wLY0hk5}AaXq=33+WK<h6kOE6i0o9u_kVlEtLsakdcFWgKLe
z+CrGA!2s(Mkj%5Nt{N!M!a5b8n+8dfGC)^Ht&A~{`cX?AnoWaLhi1>y9|}f2ey2aQ
zM3yO#Dv_0~(^8VAK&q6amRvRjQco_cGJ#3KfGQJc1s?+-wStdUx-$S$E8S^DSW_TX
z5jG&@bp7$5oUS!Sgd0+CjL=(LOn_7^E`e!Q(jO0+l}v9tGrxh*{8muon|k@w-`k#T
zextqlS0<F$uygrk)PTz`CSPNUE~J@owGjV}E{U3S-8Z_pt%PX@b3Mpc@NwNiOh>~M
z%ovLi4LAw^sG6P5Xy{O7|IHwekFw&?Ah2kp+kN|HrffLh2>2{MQZ}3~v)mAkS&Rl|
z27C1Bg&2Jr4Y94E8}NG^u_vxB8Z51{?$ZyA2xkLN84=C~9vTsj(_4+fANHQcq@A#O
zt$49r4tp=QTXCz`PGAz#FFx!&8r!eyA2U9{5PeERU#;q+D8%o66ot6@D2lf$??28P
VYD9idM-c!3002ovPDHLkV1iD~y2t<k
literal 0
HcmV?d00001
diff --git a/chrome/android/java/res/drawable-xxhdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-xxhdpi/ic_most_visited_placeholder.png
new file mode 100644
index 0000000000000000000000000000000000000000..3ce230c9b20b858ed2da0117abc52f15b9b80d5a
GIT binary patch
literal 2335
zcmYjTc{o)28z0LU`!bfYgh*r=vSk}xjD1X$>r#oK$kv^ZxEf=OELW7J>{rTivqTwN
zS!S~)g)mZMY(-=$1}Wor`pxrr?)yCFb3UK<{k-q@J?H#$(%n&xV!{f-AP`8**$HtP
zxYzx<1o;3QVYPk&fp`e+NKbn}0#Q>_lbD#;*Vot5($dt_1jwGA9zgc?_EIR6{{DV4
znG8rE0M5nk?(V|ELcjn7knHH_0FcZ7YXjy0dG0hW?pFb_AAkpleF@9~_<oXG`gPL(
z&*GN2W}pO&1p+7m87}S{xQzhPXf!V8dVuA*?fYH8V{$Y5ge!qAZX=ff?*TZA%elz4
z0k|)@GXeSEWdI56z_kGgEC5v7+uMPBA^Uv-@C_29PovI&c=&kVLWBj(V~)svKfKi6
zFtNf9hT7Fg@1*Yj#J8YNtvdL7Zg#gn{p|K^hE=M%P1B2nefaImWlVxq#0#&H4LMh#
z>_Ei5xl!V2tg(F>Gh8rp`r4w8HtB|ZeA9{L2PqE=Iftz0`wq~bl-1R?^;n>K9k(ua
zoiY1os`+4&NSK9}6bK~n!Wm)X8Ot+7|Cj@HRRVu8LehQx1zkZxu98FM{y{xTl7s+|
zjHt+3^Ps<cO~(b+-bnp}_^Q`8!6`!P@kt!aj^`FW#ERkC*YGoTZ+8AAAGo_4!~D=E
z!NQ$4PZ(Ii7sswGtff#AibyKr?_a+EN{XYT8?jI$qNq;GDBDCrN40dVaq2iNL|<vv
z5{DOU!!RJl1C?;g{`-gGT?|*(=h!xHL)lB^ch4`ss18icb#)z}_E}?(EqaL`I&>h9
z(BMZ>o{SmsgRP-HpU*-k(Z3D9S<BeS_nq`NNBiC3U>2sPqCAkY@avmXQag5-GLTOC
z_%#KM&Rc%HL$E$S7vs=QZHnP{TnLS^@}gk+8@tnZuFR^goT1P;T0ZS+aB(^2GSTVE
zBZIQ@`nj;i92#$q4$tV_6+@&~p40Vt4xjE4c~`L__iuwSoX{xznZiw>2Y;w!!=4C@
z(fBH||B3a7zLHKi#+wZt4jQA~J!gnK(mF`1Y*ItM=Aeo`Y9p(xHD7L-%1tamuj@;Q
zEU=^|Bm9piDdUkYc#S+yhucYsV8mav(mImi-CP=5%>e16eg!8cSMynOt(un*@Mp7N
zG{W0u^|D8-BH^$iIzV{~-OdRNpePzJmlF%_OPGEEr^{QJU?zBvhY5$5``w|utA2k_
za$TFZ7;!<$sK7|*xL$(<nC=k!@1kjnxmE{+VT`W*pvVvs4wCbk58f3h#?Dvo%9C#;
zD<5~GKXyi*B84Y}#NFg0zT;4k3Ly+WUM1BpD5nz!gqZxTF#fF9Fl1}yBZRd$Sk`P|
zPgSJ=fy`ZG@u(=x&$E(stJ0cCK|2`tlhgpkz7|tH<2U$+7REAkS`74Oy&lCw4VS6e
zn5ni$eZy>2*jtu4o~`?Y<i%_g&Zs{Um}4PU$>cqzP!q_@)|rOLv?WqDlN+>q=YOmO
zw^4$-W&-N0X406@8$N@9qS+B&F3G~m?@i_C2h?hdH8U0T6lwxQ(7r3elT5dr;<Hh4
z>55r|ZR32m2{;|9u>pN6hCs-uKvZnWt!Zg$X$NeqVz6n-;iq=TM2sY%aQe<P=^|_f
zVKgfpjk8=hagyOM?gQ@y--<q5<<oI5aw?8r-TtFXZEPhRPJ`7Eb!y<omHpT|6qjXu
zfSJOxQS}lEvU={Bt?!A!+rb87h2Pk2f!XdjReULwE&WL(w0xH?y7%bhUKNOr{Luk+
z4@o&$n5?3EG%i)%vq+MYt-hMgS&{}-xUnIBWi`Ut(xyC4pR7JprR08udh?w2YyG(>
zq`0Dtb*ddax2?7Myj$4LYx8VGhi+TU&CbW&w%Zj&bfV5GQTvKZv(BgBi070mwGu6q
zToYwKimY5dv0=QcYXXa&4A~nnd;ECKA)^uBuNW%g2+A7ABC+T*&9K`%3s%~*A{jZu
zN~H7)z2?+}%Jqste=5eil*nUQ2d!(#3k>$|A-wv{m^tDp(ikXWawb|_O)C<MH`0|6
z+@a5%-$?PTxF+(VWS!BtPJ{)f8huT1yZoM<7PTZ++Z>jBZaDu5wd;4#sz`mSmU(w7
zHO22IBPbwUbC|AZTE!MhEpcTux)PNGvZBa}G587d8}maQXd^bqfVmn+-INi32A+O|
zBcQM(i{@xJ#`-U+_2^Dw{BZD}^x(6st9?GPR5>C8O)G2#*Xr1!qt4>~n4Oky5uU*n
zHruJE@f=LUOLR|eyyCML-3p?JA+R~|VL^?ZCTr*t@}|M&-wkN84x|4`3RoRde0xpb
zW7ttFO5NLh$RsYye{o@|z$&RSFw$sO;NI|t&>b;dIo0meS`EyNS`FA|tMF0Oin~Oy
z_~L^p>d~Tl%2wmC8}g2^boDGP%kMa;mQ@4<-j#oB>FcAsRK2_3q>57YY}eydQuSEt
zvlTb>O8A{WDQ`xwvVNE3e`p{I$!Rw>(JZgHkP!`G*evCw#cb()w?Rloa!~r)4H2WU
zT_4AtwU_Am@eY|5?$sq6J_p%<+l4~~5k=nRy<v2p`xol{cFVeacfUU0o5^E$Xl5o~
zT@T|lmf8z68VJZlk$DlOBTH^gv{OZwZf!4#<x7vwOdJTcfC}k?VE2@_!xdF%d>#Z4
zO^OuA%k%&(3zH(p4h~52B?ens{E*|n{q%klyJ+r&R@_KI6w4B~Rw}V<Ck-yyCOlQJ
zE2!(mOpPXKY_g)UZe(3m$2HcmgW(q;cl3Fa%iram`<|x}6{#~&^$y++&L|`sUL}Ic
zMpMSGhfrNYs3r>Ss(n*2mri~(`|&g^BC15<wexE|8^}@Cum2opdlcfat$))006&7!
APXGV_
literal 0
HcmV?d00001
diff --git a/chrome/android/java/res/drawable-xxxhdpi/ic_most_visited_placeholder.png b/chrome/android/java/res/drawable-xxxhdpi/ic_most_visited_placeholder.png
new file mode 100644
index 0000000000000000000000000000000000000000..14b205657b6b7a46bc64c09f3277daffd5998ef9
GIT binary patch
literal 4034
zcmZ8k2T+q~w54N$poW0-4kk3|(jw9Wh>#H4N(+M01O%zlF(A^F1qB48_bLGd1VV4p
zdvPfW1`rVGg74qWKHtu}Gr4o_Irlr?&7Yaf{i6);Xw!q)z+_}(^g2ilG#ME=#owO`
zlmNq*2)6}_O~cz5O`z=Q>1k<c>Ha71czjJw4Nw9ki2*V|l5pog0boES5C}j803f=$
zx_}Ju07+5-2NDVR1E9UV9cU;nE+(l!1{yj#I!LEpzkUt$03;9q1K0upP)Q}g0MXFU
z0A!M9TU*<2{M!U*CYk)dg8)y8-&c@k1BM})06Y)?1_J0LWfCCa-zrc7nB+#frKzb2
zAc27a9+(P{06?0b)b`tlWcA-CMrr{1LqbA++x|X90;E&FGYOC+(k%c31aSO!2Gsvb
zz>_DbK*LmB(RJYW$a##uV?=gNb#TN0zPK4>^OJV$s~*4ii7<0~7f7&|Y4z;F?H}Yw
zp>CQMaUus-U?(+f>-39OjL3XR{sf(w`7-Al_G8sbpFuwpnHt|>-O`lz0uFhX4JnNz
z)wPq>I)-2LRBS(TX&$nOESy5@G1g<OcpV|!>j8<guii!cW#Hyy-2N?rLNU4VusS@p
zYQS_i)ic!JBSbAd`t`jP+pFJY3&y4S!WP!94jGV<U0l}DP{sIKZ7ob#vk!ji+I3#h
zaQE@?Nx>WHE?92AZ*2VZt-NLJL_71P`8`LT1bq`<ZqFZns?(bT0krU|J^d$$Yxiuw
z^r)QOdws1r@!6r>7qed~+V_Q|Jc5S$=vv!|>_Zt!)-QVP?UK_~eDGCV42;T^SX0py
zP*3dEtUJ$z2d~l*cu9hBl#8;Q66gt?9Vc;(ZJ)aj+?wxX@bFL)9x!JxLGZ4=!D)}?
zTu7p4ckDe56FTB6pvDh>*w$6hM+ezkE0vbZ^S|8HiKL^Y`?eV%x9|#)(bDL!y_mgl
zyfPCzHsrksXAxBvmHaReV{10kRu{8^UYIIyRusN$s;NErwPHhDGOmsmi`rjeQOP3?
zL?UJ;%&Lf+2=0%VT_f8if3x`D4{3VNv)}DLh8yn;AZA88^1Oylv109eZ!C0kEB7m$
zN>%r*%Wzl3^E`uCCQ&~E8DrNuSsJ1Q>J_B^%Da;G;d+>?Z-)0+kB_a)vs_SI#?DCL
zX%Q{+u(U=FzLHz#%cZ&zheFz~CO<Q1-i9f^;;Z1%2tVvZ7TCCnUln1ECCH47K*W>h
z*fnPDVjo@kx)&`m(>Ww4E`<;I0pncd+x|AiNA0xTvceahhYWY-C4T<!TI2cc550L-
z>ul(<$I|=ng<N@YuKJHrZk}*-@fW#$8gHIX?~8`p-t_2#<#LTTPY}rPj3?uX-%NNk
zPi)6`@mh(@BPQ3qYy*)|Gr~mW`nY!u=OK#5H4>QxDT?u2{AFA!*>@^vh5FsHCdb>!
zMn!krpZ`IBEHQB|<uu{dN})(BG{$oarJg@$L%S)7zHK(m?lK*d7&PXVRTROp{`qEn
z#}cRGnq-vokb_xjQ7iU4yF}-u@dPR5N~l4EMl5$iKm{Jf|BkHR`~vFUoQQz=V-eYm
z8|`7KnMU`Vp*o-4vbyvxiT3WjV51Kb7~#%D-J=wBrj)&TN~yCl#k>w~ClD-WX@UfF
z-h~Rg35u4D>KUs;b#|RZjIUd@FI%-_Ic<mtw96Iuo!IyV+G8H7Ljv?BaLm)U`l*XQ
zbfzw35s&Pr37=Om3$1LHVpC9-2>pxBY)RIgsXy0qmI?OLU7zVNNBLDWr@wNuOR42X
z(OR9Rr&UhJ_L!#i@UkDxS=pl8C995Egi|)Ty;(iYaN3f+#OLL@(|7EzGI3W4*I;m1
zb!_qdDsZ4NX0<ihqp*;uP7t=mG(FXC&gC-+)mX?|ZlIO>?02WrQlL;PTXg*5oD%~|
zXo80~uMYl_+2$S{#J)~1@!258u60tXa5{#{A}4#0^6uU{)FXNk6SnM9PY$^oi#q0o
zP?7x`_Gm$u3Us#1WsxM!&LQ`Z%%UE`bE<AwiE||7yD5|$bBFE^wA=)__WG;r(yJnd
z>3TEj@*V1Z9?^{c0>01?bt*2@0ariq?Xo1tiX;=lEaJhlYFhUM+9Z0v%b$$;nx>X`
zrkaxwniiT1NwoyjAMg!vHRVr+-q*p}QHwd7>>ZNx8s?Wc@*}JBu>rF}efZW#G_bj+
z2H$<q>$BwDGb5UB$6CUy!!rN6r6Tsr+3=G-mdMPpJ_*HrJF!pUT5L^R6m67&=Ippa
z;$)8F)Gq2NB4+~S#{>HqY~gNjWUYJQA5nz6EN@>`v&v7dB{6jeE(KkQ^O9Wrj(j47
zgUFkKa0A|=`1op+{4~t|v~rpW{1)~CS3>(zLmgUflbGxQrgrzBfEvQwj#ndMlpkE{
zIbEH69SfcPYm>?$XNUT6HJnZfq57)Y#UW6;ZOzA@q9vZ-Gpwk)M3tUFb`8dX(-O1i
z|7akgW-f*)fcb`hG`Rc&El)k+4W^V3R9#kaxF1apo_l-Y2o_V%+jfE4y0yMcz+;Ra
z<f;{uc8384d&&;UN+9s|oX4w`C_&z#*CU5-&!j6s22hitkN};xMYEis;xt$Q9Kw-P
zN&O8OA_k2UJ5N695CdfxPQx;i`Jm^ucPKpX4xpY<k(1HFFn;qdT8%W9$jEFm2(0yj
z<R90sd2D9ys2mC$-NL2>$$G^<fozVHRZOm-kA@JSYWV6Tr9-ZJks=carso_+)Pu5-
zr{@{c9tzyz#MO{}L>+bNgM!|=Gqn1F3&!5?+!UB_1h3UPm&v;78s=DP59JOo<x_D&
zr9#Q5iwOE4VF57tDoXz14Z&6{*smwsaJ`%g2d&-_!KwNPvgGcFc)+0bBC6y#4m-p8
zm2xT{n4L`+;p1b$XG5h_O7Pn@5d>);L0>H_jW+CdT52n75R?z+XuFKl@)2~%m3SHi
zp82Mmp#PS;1?Avv8g?Jt!uwL~LnCC>sHZ~*+_><k%?;ek9W>0tG>i{yr2*UYG7W2n
z@|hWg?5j|f26Nb+W%6~wVj4x-<Z+UvDm)dz`X{s-*2zX^eH!+!O@)er9_3dLMAtxD
zZtABWR~Q)mgdldE;J#7kO8<U?#`~&+mY{KJ*}>}KMo3|Q@ocA;sepudxpSRaJv{V%
zr&`@emp*7bR_^_liMWo<ysK9nVaio^M;7M^U-XCXjG<fh(JkatoS+zX_lbwoGvY{_
z`G~SlG23xeU4uu{noHq&5SDm5mn`=#1ZX^5A!5b69BHGRk;gTf=BY}t!izXV>DLJu
z#yjQjwz@8}4k}bSE91A~s3!EI-BQwWT|RPx&a+)c<q2&|pcsCRm~iFvj8^%ccKMH;
z0I^~bqaMfs5aZqQv%T~nJbIezL2C*>V+Z$+vEEGK9%BsJg#E#E=HJXgq`nFJu|v|&
z#Q3yQ#L-yKW?SY_m|EHxW8sRm*iEYGo~OL6lU&pf?FcXj=Sx&Kq#p6qKN4*+Vr1zi
zqy;OGz3h$YCm(3x3+uHzXSxE*-}E%KfG(eG*y8V<jq=o4aemIZ?72a0I|rk?{v_6-
zT)HB$-|~P>VZca^oHjMfg=@o9w|v!hg#4PdsABy7hW(Z9L)Ut{qbH@-vduwD@{<*B
ztd9$5xZ5SUq!WjZ50en!R$hvD*pv9rOl#<a%M7~-)$_Kcx31e8ak@W^gZKGYLE0qy
zh_g#%TV6@A)Kz@u;~JhJR>IYgn_b8v2;LMfxw}%B$J?jajrCl4lZ4Z)vYje)*lV3s
zeu%M9r;syBB){9AwTytE{L`cy$>s1oDDOrns3;LeC)<usRZr59MGjjEXFRbn%2>n9
zYi9rFPyXq?F{+9j|1R`-v2rOv)EGN$_^Q~vv`<_3y)ahkPfO?E;X@h2r9k>LzpcFN
zws7OV>p9Ds+%9?B)J*orX0>P5DAXhcyCXbjx#Y|&oI4O>QGao+J|GnQNoI1@Nr9<5
z63f`$T?A`+F8f|}Vz<8%*Plw!6e@cfT1+Qa8JbLoIZK#tX0<ct7Okj=DSn8IFuhyk
zzstsactUM_*P0ieO^@*t!8-nFRm_%+g#3Dd@xo!TOX9^h_xK&phvjS-L`5QJDUOkR
z!IZLA{x&)pDdP@1{6*P!i*}n>na6*ov)#=>R-4WhUil;Bv*^>psx77$+jpIitXyW#
zuc>Eu)k$>5dN{p{ZCC4>D?|lR3N;XOv>phG=2X9A`%oe=7$1yQKWX4h9zL(ph*b%G
z8g-C@Dk-OA9!6=GRi8;12T|7MbI~N+4~;Y$cj}4kRpu_*TbCRq?(!1@ezXSE7?1n8
zb2@sSk$V;2PlN<Y5`BSrq8&<76svCLB0DXk6c7CqXb^{m{0n8bh~xA5i^-hGDo)Dr
zM$7Od;f34H<(YpkPiNzr&4YQ!T424>Z~kY!dYuidSEE@!+{C|s3lc+T9h@tPfA@ip
z@;k>wBc-omtD~hMS6TbjW~rWdHkkD~K=Y&GlHIH37kNgDe5L8tsQn}~tyG`Uq(vvX
zBGhG^=uQ*u&fVE#Bm8a1GYS@DzQ17s@i~U^Uki{S1`$JLp@Cx>{Qk6Bu6!WZxQo7y
z9r<q0Z8+Q06dRI|*bNKW$t?f!S_wklV^_9_+M~6`hIjd52Iu=WOv=A*{_oO?_;<_w
zb@0<PmZ{|2Z75RO_-B$?Jr}drj@U{)=CJ>3Y8<%3cm(BnlJZ_JW@Ss&%>0p-(8^1O
zs|?KZGsiCPB^wojeMT0WH5>QRYS;@hx0;M3%zVvk175RsR=z(7H0^VI@m=I}7E33l
z!0s3ps~}dHxVarCRTLMLLO)l8s9osJ-Fc{DOqT}!zm0z}wMF^gcYy<Y>2zLSoAz=u
zamEDpx!R>$ml=#c`5w$4zql>VU$gqNp(b|Uz4DgTWQ77NqqKI!NpQdN*I13FYtq3R
n+=^1tiHUp8CRSuc2fy~%y~<0yJ--4kXJk5>cQne?Y{LEragr7S
literal 0
HcmV?d00001
diff --git a/chrome/android/java/res/layout/mv_tiles_container.xml b/chrome/android/java/res/layout/mv_tiles_container.xml
new file mode 100644
--- /dev/null
@@ -128,28 +393,22 @@ new file mode 100644
diff --git a/chrome/android/java/res/layout/mv_tiles_layout.xml b/chrome/android/java/res/layout/mv_tiles_layout.xml
--- a/chrome/android/java/res/layout/mv_tiles_layout.xml
+++ b/chrome/android/java/res/layout/mv_tiles_layout.xml
@@ -5,17 +5,9 @@ Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
@@ -13,9 +13,10 @@ found in the LICENSE file.
android:paddingBottom="@dimen/mvt_container_bottom_padding"
android:scrollbars="none">
-<HorizontalScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+<org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/mv_tiles_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:background="@drawable/home_surface_ui_background"
- android:paddingTop="@dimen/mvt_container_top_padding"
- android:paddingBottom="@dimen/mvt_container_bottom_padding"
- android:scrollbars="none">
-
- <org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesLayout
- android:id="@+id/mv_tiles_layout"
- android:layout_width="wrap_content"
- android:layout_height="match_parent"
- android:orientation="horizontal" />
-</HorizontalScrollView>
+<org.chromium.chrome.browser.suggestions.tile.MostVisitedTilesGridLayout
+ xmlns:android="http://schemas.android.com/apk/res/android"
+ android:id="@+id/mv_tiles_layout"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center_horizontal" />
</HorizontalScrollView>
diff --git a/chrome/android/java/res/layout/new_tab_page_layout.xml b/chrome/android/java/res/layout/new_tab_page_layout.xml
--- a/chrome/android/java/res/layout/new_tab_page_layout.xml
+++ b/chrome/android/java/res/layout/new_tab_page_layout.xml
@@ -302,7 +561,7 @@ diff --git a/chrome/android/java/res/values/attrs.xml b/chrome/android/java/res/
diff --git a/chrome/android/java/res/values/dimens.xml b/chrome/android/java/res/values/dimens.xml
--- a/chrome/android/java/res/values/dimens.xml
+++ b/chrome/android/java/res/values/dimens.xml
@@ -122,6 +122,8 @@ found in the LICENSE file.
@@ -128,6 +128,8 @@ found in the LICENSE file.
<dimen name="find_in_page_popup_margin_end">62dp</dimen>
<!-- NTP dimensions -->
@@ -1059,7 +1318,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
TileRenderer renderer,
PropertyModel propertyModel,
boolean isTablet,
@@ -211,7 +211,6 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
@@ -211,15 +211,10 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
@Override
public void onCustomTileCreation(Tile tile) {
@@ -1067,7 +1326,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
}
@Override
@@ -329,7 +328,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
public void onCustomTileNonReorderChange() {
- SuggestionsTileVerticalDivider divider = mMvTilesLayout.getDividerMaybeNull();
- if (divider != null) {
- divider.showThenHide();
- }
}
public void onConfigurationChanged() {
@@ -329,7 +324,5 @@ public class MostVisitedTilesMediator implements TileGroup.Observer {
double firstTileScore = mTileGroup.getSuggestionScore(firstTile.getUrl());
if (firstTileScore < MVT_CUSTOMIZATION_IPH_TILE_SCORE_THRESHOULD) return;
@@ -1096,7 +1363,26 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
mMvTilesLayout = mvTilesLayout;
Resources res = mMvTilesLayout.getResources();
mTileWidthPx = res.getDimensionPixelSize(R.dimen.tile_view_width);
@@ -269,7 +269,7 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate
@@ -225,18 +225,10 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate
@Override
public void showDivider(boolean isAnimated) {
- SuggestionsTileVerticalDivider divider = mMvTilesLayout.getDividerMaybeNull();
- if (divider != null) {
- divider.show(isAnimated);
- }
}
@Override
public void hideDivider(boolean isAnimated) {
- SuggestionsTileVerticalDivider divider = mMvTilesLayout.getDividerMaybeNull();
- if (divider != null) {
- divider.hide(isAnimated);
- }
}
@Override
@@ -269,12 +261,12 @@ class TileDragDelegateImpl implements TileDragDelegate, TileDragSession.Delegate
@Override
public SiteSuggestion getTileViewData(TileView view) {
@@ -1105,6 +1391,12 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/til
}
@Override
public HorizontalScrollView getOuterView() {
- return mMvTilesLayout.getScrollView();
+ return null;
}
List<TileView> getDraggableTileViews() {
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/suggestions/tile/TileRenderer.java
@@ -1210,6 +1502,22 @@ diff --git a/chrome/browser/segmentation_platform/android/java/src/org/chromium/
HomeModulesRankingHelperJni.get()
.getClassificationResult(
profile,
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
@@ -3941,6 +3941,12 @@ To change this setting, <ph name="BEGIN_LINK">BEGIN_LINK</ph>delete the Chrome d
<message name="IDS_RECENT_TABS" desc="Text for button to show 'Recent tabs', i.e. recently closed tabs and tabs that are open on other devices [CHAR_LIMIT=20]">
Recent tabs
</message>
+ <message name="IDS_MOST_VISITED_PLACEHOLDER_TITLE" desc="Header text shown on the new tab page when there are no most visited tiles yet.">
+ Nothing to see here… yet
+ </message>
+ <message name="IDS_MOST_VISITED_PLACEHOLDER_SUMMARY" desc="Explanation text shown on the new tab page when there are no most visited tiles yet.">
+ Your most visited pages will appear here
+ </message>
<message name="IDS_MOST_VISITED_ITEM_REMOVED" desc="Text shown when the user removes one of the most visited websites on the new tab page.">
Item removed
</message>
diff --git a/components/history/core/browser/top_sites_impl.h b/components/history/core/browser/top_sites_impl.h
--- a/components/history/core/browser/top_sites_impl.h
+++ b/components/history/core/browser/top_sites_impl.h
File diff suppressed because it is too large Load Diff
@@ -18,42 +18,41 @@ Original License: BSD-3-Clause - https://spdx.org/licenses/BSD-3-Clause.html
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
...val-of-execution-context-address-space.inc | 2 ++
.../execution_context/execution_context.cc | 9 +++++
.../execution_context/execution_context.cc | 9 +++++++
.../execution_context/execution_context.h | 4 +++
.../core/exported/web_shared_worker_impl.cc | 1 +
.../renderer/core/frame/policy_container.cc | 10 ++++++
.../renderer/core/frame/policy_container.h | 11 ++++++
.../renderer/core/frame/web_frame_test.cc | 34 +++++++++++++++++++
.../renderer/core/frame/policy_container.cc | 10 ++++++++
.../renderer/core/frame/policy_container.h | 11 ++++++++
.../layout_worklet_global_scope_proxy.cc | 1 +
...ed_service_worker_module_script_fetcher.cc | 1 +
.../modulescript/module_script_loader_test.cc | 1 +
.../worker_module_script_fetcher.cc | 3 +-
.../renderer/core/workers/dedicated_worker.cc | 9 +++++
.../renderer/core/workers/dedicated_worker.h | 3 ++
.../workers/dedicated_worker_global_scope.cc | 9 ++++-
.../worker_module_script_fetcher.cc | 3 ++-
.../renderer/core/workers/dedicated_worker.cc | 9 +++++++
.../renderer/core/workers/dedicated_worker.h | 3 +++
.../workers/dedicated_worker_global_scope.cc | 9 ++++++-
.../workers/dedicated_worker_global_scope.h | 1 +
.../workers/global_scope_creation_params.cc | 2 ++
.../workers/global_scope_creation_params.h | 7 ++++
.../core/workers/installed_scripts_manager.cc | 16 +++++++++
.../core/workers/installed_scripts_manager.h | 5 +++
.../workers/global_scope_creation_params.h | 7 ++++++
.../core/workers/installed_scripts_manager.cc | 16 ++++++++++++
.../core/workers/installed_scripts_manager.h | 5 ++++
.../core/workers/main_thread_worklet_test.cc | 1 +
.../workers/shared_worker_global_scope.cc | 7 ++++
.../workers/shared_worker_global_scope.cc | 7 ++++++
.../core/workers/shared_worker_global_scope.h | 1 +
.../threaded_worklet_messaging_proxy.cc | 5 ++-
.../threaded_worklet_messaging_proxy.cc | 5 +++-
.../core/workers/threaded_worklet_test.cc | 1 +
.../workers/worker_classic_script_loader.cc | 5 ++-
.../workers/worker_classic_script_loader.h | 6 ++++
.../workers/worker_classic_script_loader.cc | 5 +++-
.../workers/worker_classic_script_loader.h | 6 +++++
.../core/workers/worker_global_scope.h | 2 ++
.../core/workers/worker_thread_test.cc | 2 ++
.../core/workers/worker_thread_test_helper.h | 6 ++++
.../core/workers/worker_thread_test_helper.h | 6 +++++
.../paint_worklet_global_scope_proxy.cc | 2 +-
.../exported/web_embedded_worker_impl.cc | 4 ++-
.../service_worker_global_scope.cc | 25 +++++++++-----
.../service_worker_global_scope.cc | 25 +++++++++++++------
.../service_worker_global_scope.h | 2 ++
.../audio_worklet_global_scope_test.cc | 1 +
.../webaudio/audio_worklet_thread_test.cc | 1 +
.../worklet/worklet_thread_test_common.cc | 2 +-
36 files changed, 187 insertions(+), 15 deletions(-)
35 files changed, 153 insertions(+), 15 deletions(-)
create mode 100644 cromite_flags/content/public/common/content_features_cc/Revert-removal-of-execution-context-address-space.inc
diff --git a/cromite_flags/content/public/common/content_features_cc/Revert-removal-of-execution-context-address-space.inc b/cromite_flags/content/public/common/content_features_cc/Revert-removal-of-execution-context-address-space.inc
@@ -168,50 +167,6 @@ diff --git a/third_party/blink/renderer/core/frame/policy_container.h b/third_pa
// Append |policies| to the list of Content Security Policy and sync them with
// the PolicyContainerHost.
void AddContentSecurityPolicies(
diff --git a/third_party/blink/renderer/core/frame/web_frame_test.cc b/third_party/blink/renderer/core/frame/web_frame_test.cc
--- a/third_party/blink/renderer/core/frame/web_frame_test.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_test.cc
@@ -8070,6 +8070,40 @@ TEST_F(WebFrameTest, PushStateStartsAndStops) {
EXPECT_EQ(client.StopLoadingCount(), 2);
}
+TEST_F(WebFrameTest, IPAddressSpace) {
+ frame_test_helpers::WebViewHelper web_view_helper;
+ WebViewImpl* web_view =
+ web_view_helper.InitializeAndLoad("data:text/html,ip_address_space");
+
+ network::mojom::IPAddressSpace values[] = {
+ network::mojom::IPAddressSpace::kUnknown,
+ network::mojom::IPAddressSpace::kLocal,
+ network::mojom::IPAddressSpace::kPrivate,
+ network::mojom::IPAddressSpace::kPublic};
+
+ for (auto value : values) {
+ auto params = std::make_unique<WebNavigationParams>();
+ params->url = url_test_helpers::ToKURL("about:blank");
+ params->navigation_timings.navigation_start = base::TimeTicks::Now();
+ params->navigation_timings.fetch_start = base::TimeTicks::Now();
+ params->is_browser_initiated = true;
+ MockPolicyContainerHost mock_policy_container_host;
+ params->policy_container = std::make_unique<WebPolicyContainer>(
+ WebPolicyContainerPolicies(),
+ mock_policy_container_host.BindNewEndpointAndPassDedicatedRemote());
+ params->policy_container->policies.ip_address_space = value;
+ params->sandbox_flags = network::mojom::WebSandboxFlags::kNone;
+ web_view_helper.LocalMainFrame()->CommitNavigation(std::move(params),
+ nullptr);
+ frame_test_helpers::PumpPendingRequestsForFrameToLoad(
+ web_view_helper.LocalMainFrame());
+
+ ExecutionContext* context =
+ web_view->MainFrameImpl()->GetFrame()->DomWindow();
+ EXPECT_EQ(value, context->AddressSpace());
+ }
+}
+
TEST_F(WebFrameTest,
CommitSynchronousNavigationForAboutBlankAndCheckStorageKeyNonce) {
frame_test_helpers::WebViewHelper web_view_helper;
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet_global_scope_proxy.cc
+1 -1
View File
@@ -643,7 +643,7 @@ new file mode 100644
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::TIMEZONE_OVERRIDE)
+5 -4
View File
@@ -29,13 +29,13 @@ Require: Content-settings-infrastructure.patch
.../blink/renderer/core/frame/local_frame.h | 6 +-
.../core/frame/screen_metrics_emulator.cc | 18 +++-
.../core/frame/screen_metrics_emulator.h | 14 +++
.../core/frame/web_frame_widget_impl.cc | 8 ++
.../core/frame/web_frame_widget_impl.cc | 9 ++
.../core/frame/web_remote_frame_impl.cc | 3 +-
.../blink/renderer/core/input/touch.cc | 17 +++-
third_party/blink/renderer/core/page/page.cc | 93 ++++++++++++++++++
third_party/blink/renderer/core/page/page.h | 9 ++
.../renderer/core/style/computed_style.h | 6 ++
26 files changed, 430 insertions(+), 20 deletions(-)
26 files changed, 431 insertions(+), 20 deletions(-)
create mode 100644 components/browser_ui/site_settings/android/java/src/org/chromium/components/browser_ui/site_settings/impl/BromiteViewportContentSetting.java
create mode 100644 components/browser_ui/strings/bromite_content_settings/viewport.grdp
create mode 100644 components/content_settings/core/browser/bromite_content_settings/viewport.inc
@@ -188,7 +188,7 @@ new file mode 100644
+ WebsiteSettingsInfo::TOP_ORIGIN_ONLY_SCOPE,
+ WebsiteSettingsRegistry::ALL_PLATFORMS,
+ ContentSettingsInfo::INHERIT_IN_INCOGNITO,
+ ContentSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+ PermissionSettingsInfo::EXCEPTIONS_ON_SECURE_AND_INSECURE_ORIGINS);
+
+ content_settings::WebsiteSettingsRegistry::GetInstance()
+ ->GetMutable(ContentSettingsType::VIEWPORT)
@@ -662,11 +662,12 @@ diff --git a/third_party/blink/renderer/core/frame/screen_metrics_emulator.h b/t
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
--- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
@@ -1959,6 +1959,14 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing(
@@ -1959,6 +1959,15 @@ void WebFrameWidgetImpl::ApplyVisualPropertiesSizing(
if (DeviceEmulator() && widget_base_ && !widget_base_->WillBeDestroyed()) {
DeviceEmulator()->UpdateVisualProperties(visual_properties);
+ // Shink the view according to browsercontrols
+ auto* device_emulator = DeviceEmulator();
+ size_ = widget_base_->DIPsToCeiledBlinkSpace(
+ device_emulator->ViewWindowSize());
+ View()->ResizeWithBrowserControls(
+3 -6
View File
@@ -19,7 +19,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../ui/webui/policy/policy_ui_handler.cc | 104 ++++++++++++-
.../ui/webui/policy/policy_ui_handler.h | 2 +
.../strings/android/browser_ui_strings.grd | 2 +-
.../commerce/core/commerce_feature_list.cc | 64 ++------
.../commerce/core/commerce_feature_list.cc | 61 +-------
.../core/browser/browser_policy_connector.cc | 3 +
.../common/command_line_policy_provider.cc | 3 +
.../core/common/policy_loader_command_line.cc | 138 ++++++++++++++++--
@@ -39,7 +39,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
extensions/common/extension_features.cc | 1 +
google_apis/gaia/gaia_auth_fetcher.cc | 1 +
net/socket/ssl_client_socket_impl.cc | 3 +
35 files changed, 329 insertions(+), 161 deletions(-)
35 files changed, 326 insertions(+), 161 deletions(-)
diff --git a/base/win/win_util.cc b/base/win/win_util.cc
--- a/base/win/win_util.cc
@@ -636,15 +636,12 @@ diff --git a/components/commerce/core/commerce_feature_list.cc b/components/comm
auto* pattern_from_component =
commerce_heuristics::CommerceHeuristicsData::GetInstance()
.GetNoDiscountMerchantPattern();
@@ -450,4 +401,9 @@ bool IsNoDiscountMerchant(const GURL& url) {
@@ -450,4 +401,6 @@ bool IsNoDiscountMerchant(const GURL& url) {
return RE2::PartialMatch(url.host_piece(), *pattern_from_component);
}
#endif
+
+SET_CROMITE_FEATURE_DISABLED(kShoppingListRegionLaunched);
+
+SET_CROMITE_FEATURE_DISABLED(kEnableDiscountInfoApi);
+SET_CROMITE_FEATURE_DISABLED(kEnableDiscountInfoApiRegionLaunched);
} // namespace commerce
diff --git a/components/policy/core/browser/browser_policy_connector.cc b/components/policy/core/browser/browser_policy_connector.cc
--- a/components/policy/core/browser/browser_policy_connector.cc
@@ -105,7 +105,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//components/android_autofill/browser:java",
"//components/autofill/android:autofill_features_java",
"//components/autofill/android:autofill_java",
@@ -1386,6 +1390,7 @@ if (_is_default_toolchain) {
@@ -1394,6 +1398,7 @@ if (_is_default_toolchain) {
"javatests:chrome_test_java_org.chromium.chrome.browser.toolbar",
"javatests:chrome_test_java_org.chromium.chrome.browser.webapps",
"javatests:chrome_test_java_various",
@@ -113,7 +113,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//chrome/browser/android/browserservices/verification:javatests",
"//chrome/browser/android/httpclient:javatests",
"//chrome/browser/android/metrics:ukm_javatests",
@@ -1456,6 +1461,7 @@ if (_is_default_toolchain) {
@@ -1464,6 +1469,7 @@ if (_is_default_toolchain) {
"//chrome/test/data/translate/",
"//chrome/test/data/webauthn/",
"//chrome/test/media_router/resources/",
@@ -121,7 +121,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
"//components/test/data/autofill/",
"//components/test/data/payments/",
"//content/test/data/browsing_data/",
@@ -3248,6 +3254,12 @@ if (_is_default_toolchain) {
@@ -3256,6 +3262,12 @@ if (_is_default_toolchain) {
sources += [ "java/src/org/chromium/chrome/browser/media/MediaCapturePickerDialogBridge.java" ]
}
@@ -134,7 +134,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
# Used for testing only, should not be shipped to end users.
if (enable_offline_pages_harness) {
sources += [ "java/src/org/chromium/chrome/browser/offlinepages/evaluation/OfflinePageEvaluationBridge.java" ]
@@ -3339,6 +3351,7 @@ if (_is_default_toolchain) {
@@ -3347,6 +3359,7 @@ if (_is_default_toolchain) {
"//chrome/browser/ui/plus_addresses/android:jni_headers",
"//chrome/browser/util:jni_headers",
"//chrome/browser/webauthn/android:jni_headers",
@@ -207,17 +207,17 @@ new file mode 100644
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -3405,6 +3405,10 @@ static_library("browser") {
"touch_to_fill/password_manager/touch_to_fill_controller_webauthn_delegate.h",
@@ -3412,6 +3412,10 @@ static_library("browser") {
]
deps += [ "//chrome/browser/password_entry_edit/android" ]
+ ### Android API module start
+ sources += [ "android/adblock/tab_id_translator_jni.cc" ]
+
+ ### Android API module end
+
deps += [
":delta_file_proto",
":profile_token",
diff --git a/chrome/browser/android/adblock/tab_id_translator_jni.cc b/chrome/browser/android/adblock/tab_id_translator_jni.cc
new file mode 100644
--- /dev/null
@@ -250,8 +250,8 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
if (enable_extensions_core) {
deps += [ "//chrome/browser/ui/android/extensions:java_resources" ]
}
@@ -804,6 +808,10 @@ if (_is_default_toolchain) {
"//url/mojom:url_mojom_origin_java",
@@ -808,6 +812,10 @@ if (_is_default_toolchain) {
"//chrome/browser/password_entry_edit:public_java",
]
+ ### Android UI module start
@@ -274,7 +274,7 @@ diff --git a/chrome/android/java/res/xml/main_preferences.xml b/chrome/android/j
-->
<!-- The main_preferences file will be reordered with the upcoming autofill
@@ -95,6 +98,11 @@ for the previous order (main_preferences_legacy). -->
@@ -97,6 +100,11 @@ for the previous order (main_preferences_legacy). -->
android:key="autofill_options"
android:order="16"
android:title="@string/autofill_options_title" />
@@ -7,7 +7,7 @@ Based on Chromium 133.0.6943.49
Pre-requisites: eyeo Browser Ad filtering Solution: Base Module
---
chrome/app/chrome_main_delegate.cc | 7 +-
chrome/browser/BUILD.gn | 8 +
chrome/browser/BUILD.gn | 7 +
chrome/browser/adblock/README.md | 3 +
.../adblock_chrome_content_browser_client.cc | 27 +
.../adblock_chrome_content_browser_client.h | 31 ++
@@ -58,7 +58,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module
chrome/common/BUILD.gn | 3 +
chrome/test/BUILD.gn | 12 +
chrome/test/base/in_process_browser_test.cc | 24 +-
52 files changed, 3300 insertions(+), 6 deletions(-)
52 files changed, 3299 insertions(+), 6 deletions(-)
create mode 100644 chrome/browser/adblock/README.md
create mode 100644 chrome/browser/adblock/adblock_chrome_content_browser_client.cc
create mode 100644 chrome/browser/adblock/adblock_chrome_content_browser_client.h
@@ -152,15 +152,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"//components/application_locale_storage",
"//components/assist_ranker",
"//components/autofill/content/browser",
@@ -3399,6 +3405,7 @@ static_library("browser") {
"touch_to_fill/password_manager/touch_to_fill_controller_webauthn_delegate.h",
]
+
deps += [
":delta_file_proto",
":profile_token",
@@ -8551,6 +8558,7 @@ static_library("browser_public_dependencies") {
@@ -8558,6 +8564,7 @@ static_library("browser_public_dependencies") {
"//chrome/services/file_util/public/mojom",
"//components/account_id",
"//components/autofill/content/browser",
@@ -3664,7 +3656,7 @@ diff --git a/chrome/browser/profiles/chrome_browser_main_extra_parts_profiles.cc
#include "components/autofill/content/browser/autofill_log_router_factory.h"
#include "components/breadcrumbs/core/breadcrumbs_status.h"
#include "components/captive_portal/core/buildflags.h"
@@ -933,6 +946,15 @@ void ChromeBrowserMainExtraPartsProfiles::
@@ -934,6 +947,15 @@ void ChromeBrowserMainExtraPartsProfiles::
// Makes manual testing possible.
FakeSmartCardDeviceServiceFactory::GetInstance();
#endif