Patches for v134 (changed)

This commit is contained in:
Carmelo Messina
2025-03-03 17:18:52 +01:00
parent c5a85ab067
commit f74f2df981
33 changed files with 1234 additions and 656 deletions
@@ -26,9 +26,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../bookmarks/BookmarkToolbarViewBinder.java | 6 +
.../native_page/NativePageFactory.java | 11 +-
chrome/browser/BUILD.gn | 11 +-
.../bookmarks/android/bookmark_bridge.cc | 277 +++++++++++++++++
.../bookmarks/android/bookmark_bridge.h | 29 +-
.../browser/bookmarks/bookmark_html_writer.cc | 3 +
.../bookmarks/android/bookmark_bridge.cc | 267 ++++++++++++++++
.../bookmarks/android/bookmark_bridge.h | 30 +-
.../dialogs/DownloadLocationCustomView.java | 8 +-
.../DownloadLocationDialogCoordinator.java | 10 +-
.../flags/android/chrome_feature_list.cc | 1 +
@@ -53,7 +52,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
ui/shell_dialogs/select_file_dialog_linux.cc | 4 +
ui/shell_dialogs/select_file_dialog_linux.h | 2 +
ui/shell_dialogs/select_file_dialog_win.cc | 5 +
42 files changed, 900 insertions(+), 30 deletions(-)
41 files changed, 888 insertions(+), 30 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
@@ -871,7 +870,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/android/chrome_jni_headers/BookmarkBridge_jni.h"
@@ -84,12 +106,97 @@ using bookmarks::android::JavaBookmarkIdGetType;
@@ -84,6 +106,57 @@ using bookmarks::android::JavaBookmarkIdGetType;
using content::BrowserThread;
using power_bookmarks::PowerBookmarkMeta;
@@ -910,7 +909,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+ }
+ }
+
+ if (base::Contains(chrome::ChromeDebugURLs(), fixed_url)) {
+ if (base::Contains(chrome::ChromeDebugURLs(), fixed_url.spec())) {
+ return true;
+ }
+
@@ -929,47 +928,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
namespace {
// The key used to connect the instance of the bookmark bridge to the bookmark
// model.
const char kBookmarkBridgeUserDataKey[] = "bookmark_bridge";
// Compares titles of different instance of BookmarkNode.
+class FileBookmarksExportObserver: public BookmarksExportObserver {
+ public:
+ FileBookmarksExportObserver(
+ const JavaParamRef<jobject>& obj,
+ ui::WindowAndroid* window,
+ const std::string& export_path) :
+ obj_(ScopedJavaGlobalRef<jobject>(obj)),
+ window_(window),
+ export_path_(export_path) {}
+
+ void OnExportFinished(Result result) override {
+ if (result == Result::kSuccess) {
+ LOG(INFO) << "Bookmarks exported successfully to " << export_path_;
+ } else if (result == Result::kCouldNotCreateFile) {
+ LOG(ERROR) << "Bookmarks export: could not create file " << export_path_;
+ } else if (result == Result::kCouldNotWriteHeader) {
+ LOG(ERROR) << "Bookmarks export: could not write header";
+ } else if (result == Result::kCouldNotWriteNodes) {
+ LOG(ERROR) << "Bookmarks export: could not write nodes";
+ }
+
+ JNIEnv* env = AttachCurrentThread();
+ Java_BookmarkBridge_bookmarksExported(env, obj_, window_->GetJavaObject(),
+ ConvertUTF8ToJavaString(env, export_path_),
+ result == Result::kSuccess);
+ delete this;
+ }
+
+ private:
+ const ScopedJavaGlobalRef<jobject> obj_;
+ raw_ptr<ui::WindowAndroid> window_;
+ const std::string export_path_;
+};
+
class BookmarkTitleComparer {
public:
explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge,
@@ -231,6 +338,10 @@ BookmarkBridge::~BookmarkBridge() {
@@ -231,6 +304,10 @@ BookmarkBridge::~BookmarkBridge() {
partner_bookmarks_shim_observation_.Reset();
bookmark_model_observation_.Reset();
profile_observation_.Reset();
@@ -980,7 +939,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
}
void BookmarkBridge::Destroy(JNIEnv* env) {
@@ -765,6 +876,172 @@ jint BookmarkBridge::GetTotalBookmarkCount(
@@ -765,6 +842,196 @@ jint BookmarkBridge::GetTotalBookmarkCount(
return count;
}
@@ -1038,8 +997,32 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
+ export_path_ = export_path_.Append(FILE_PATH_LITERAL("bookmarks.html"));
+ }
+
+ observer_ = new FileBookmarksExportObserver(obj, window, export_path_.MaybeAsASCII());
+ bookmark_html_writer::WriteBookmarks(profile_, export_path_, observer_);
+ bookmark_html_writer::WriteBookmarks(profile_, export_path_,
+ base::BindOnce(&BookmarkBridge::ExportBookmarksEnd,
+ weak_ptr_factory_.GetWeakPtr(),
+ base::android::ScopedJavaGlobalRef<jobject>(obj),
+ window));
+}
+
+void BookmarkBridge::ExportBookmarksEnd(const ScopedJavaGlobalRef<jobject>& obj,
+ ui::WindowAndroid* window,
+ bookmark_html_writer::Result result) const
+{
+ auto export_path = export_path_.MaybeAsASCII();
+ if (result == bookmark_html_writer::Result::kSuccess) {
+ LOG(INFO) << "Bookmarks exported successfully to " << export_path;
+ } else if (result == bookmark_html_writer::Result::kCouldNotCreateFile) {
+ LOG(ERROR) << "Bookmarks export: could not create file " << export_path;
+ } else if (result == bookmark_html_writer::Result::kCouldNotWriteHeader) {
+ LOG(ERROR) << "Bookmarks export: could not write header";
+ } else if (result == bookmark_html_writer::Result::kCouldNotWriteNodes) {
+ LOG(ERROR) << "Bookmarks export: could not write nodes";
+ }
+
+ JNIEnv* env = AttachCurrentThread();
+ Java_BookmarkBridge_bookmarksExported(env, obj, window->GetJavaObject(),
+ base::android::ConvertUTF8ToJavaString(env, export_path),
+ result == bookmark_html_writer::Result::kSuccess);
+}
+
+// Attempts to create a TemplateURL from the provided data. |title| is optional.
@@ -1196,7 +1179,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
jboolean IsEditBookmarksEnabled(JNIEnv* env);
void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env);
@@ -93,6 +103,15 @@ class BookmarkBridge : public ProfileObserver,
@@ -93,6 +103,17 @@ class BookmarkBridge : public ProfileObserver,
jlong id,
jint type);
@@ -1208,21 +1191,22 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
+ const base::android::JavaParamRef<jobject>& obj,
+ const base::android::JavaParamRef<jobject>& java_window,
+ const base::android::JavaParamRef<jstring>& j_export_path);
+ void ExportBookmarksEnd(const base::android::ScopedJavaGlobalRef<jobject>& obj,
+ ui::WindowAndroid* window, bookmark_html_writer::Result result) const;
+
void GetAllFoldersWithDepths(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& j_folders_obj,
@@ -362,6 +381,9 @@ class BookmarkBridge : public ProfileObserver,
@@ -362,6 +383,8 @@ class BookmarkBridge : public ProfileObserver,
void CreateOrDestroyAccountReadingListManagerIfNeeded();
const raw_ptr<Profile> profile_; // weak
+ base::FilePath export_path_;
+ raw_ptr<BookmarksExportObserver> observer_; // weak
+
base::android::ScopedJavaGlobalRef<jobject> java_bookmark_model_;
const raw_ptr<bookmarks::BookmarkModel> bookmark_model_; // weak
const raw_ptr<bookmarks::ManagedBookmarkService>
@@ -376,6 +398,7 @@ class BookmarkBridge : public ProfileObserver,
@@ -376,6 +399,7 @@ class BookmarkBridge : public ProfileObserver,
std::unique_ptr<bookmarks::ScopedGroupBookmarkActions>
grouped_bookmark_actions_;
PrefChangeRegistrar pref_change_registrar_;
@@ -1230,7 +1214,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
// Information about the Partner bookmarks (must check for IsLoaded()).
// This is owned by profile.
@@ -407,6 +430,10 @@ class BookmarkBridge : public ProfileObserver,
@@ -407,6 +431,10 @@ class BookmarkBridge : public ProfileObserver,
bool suppress_observer_notifications_ = false;
@@ -1241,19 +1225,6 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
// Weak pointers for creating callbacks that won't call into a destroyed
// object.
base::WeakPtrFactory<BookmarkBridge> weak_ptr_factory_;
diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc
--- a/chrome/browser/bookmarks/bookmark_html_writer.cc
+++ b/chrome/browser/bookmarks/bookmark_html_writer.cc
@@ -36,6 +36,9 @@
#include "base/task/thread_pool.h"
#include "base/time/time.h"
#include "base/values.h"
+#if BUILDFLAG(IS_ANDROID)
+#include "base/android/content_uri_utils.h"
+#endif
#include "chrome/browser/bookmarks/bookmark_model_factory.h"
#include "chrome/browser/favicon/favicon_service_factory.h"
#include "chrome/browser/profiles/profile.h"
diff --git a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
--- a/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
+++ b/chrome/browser/download/android/java/src/org/chromium/chrome/browser/download/dialogs/DownloadLocationCustomView.java
+8 -17
View File
@@ -46,8 +46,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../res/xml/accessibility_preferences.xml | 3 +-
.../accessibility/AccessibilitySettings.java | 6 +-
.../android/java/res/values/attrs.xml | 4 +
.../settings/ChromeSwitchPreference.java | 20 ++
.../components/cached_flags/CachedFlag.java | 9 +-
.../settings/ChromeSwitchPreference.java | 19 ++
.../components/cached_flags/CachedFlag.java | 8 +-
components/components_strings.grd | 1 +
.../content_settings/core/common/features.cc | 1 +
.../placeholder.txt | 1 +
@@ -106,7 +106,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
third_party/blink/public/common/features.h | 1 +
ui/base/ui_base_features.cc | 1 +
ui/base/ui_base_features.h | 1 +
93 files changed, 808 insertions(+), 30 deletions(-)
93 files changed, 806 insertions(+), 30 deletions(-)
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/include_all_directory.java
create mode 100644 chrome/browser/flags/android/java/src/org/chromium/chrome/browser/flags/cromite/java_template/CromiteCachedFlag.java.tmpl
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-cromite-flags-support.grdp
@@ -1037,17 +1037,16 @@ diff --git a/components/browser_ui/settings/android/java/res/values/attrs.xml b/
diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java
--- a/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java
+++ b/components/browser_ui/settings/android/widget/java/src/org/chromium/components/browser_ui/settings/ChromeSwitchPreference.java
@@ -15,6 +15,9 @@ import android.view.accessibility.AccessibilityEvent;
@@ -15,6 +15,8 @@ import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityNodeInfo;
import android.widget.TextView;
+import androidx.annotation.Nullable;
+import android.content.res.TypedArray;
+
import androidx.annotation.ColorInt;
import androidx.annotation.VisibleForTesting;
import androidx.preference.PreferenceViewHolder;
@@ -40,6 +43,11 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat {
@@ -40,6 +42,11 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat {
/** Indicates if the preference uses a custom layout. */
private final boolean mHasCustomLayout;
@@ -1059,7 +1058,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium
// TOOD(crbug.com/1451550): This is an interim solution. In the long-term, we should migrate
// away from a switch with dynamically changing summaries onto a radio group.
/**
@@ -59,6 +67,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat {
@@ -59,6 +66,18 @@ public class ChromeSwitchPreference extends SwitchPreferenceCompat {
mHasCustomLayout = ManagedPreferencesUtils.isCustomLayoutApplied(context, attrs);
mUseSummaryAsTitle = true;
@@ -1081,15 +1080,7 @@ diff --git a/components/browser_ui/settings/android/widget/java/src/org/chromium
diff --git a/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java b/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java
--- a/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java
+++ b/components/cached_flags/android/java/src/org/chromium/components/cached_flags/CachedFlag.java
@@ -5,6 +5,7 @@
package org.chromium.components.cached_flags;
import android.content.SharedPreferences;
+import androidx.annotation.Nullable;
import org.chromium.base.FeatureMap;
import org.chromium.base.FeatureOverrides;
@@ -155,7 +156,7 @@ public class CachedFlag extends Flag {
@@ -155,7 +155,7 @@ public class CachedFlag extends Flag {
editor.putBoolean(getSharedPreferenceKey(), featureValue);
}
@@ -1098,7 +1089,7 @@ diff --git a/components/cached_flags/android/java/src/org/chromium/components/ca
// Create the key only once to avoid String concatenation every flag check.
if (mPreferenceKey == null) {
mPreferenceKey = CachedFlagsSharedPreferences.FLAGS_CACHED.createKey(mFeatureName);
@@ -163,6 +164,12 @@ public class CachedFlag extends Flag {
@@ -163,6 +163,12 @@ public class CachedFlag extends Flag {
return mPreferenceKey;
}
@@ -29,11 +29,11 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn
+ if (skip_clangd_unsupported_options) {
+ cflags -= [
+ "-Wno-thread-safety-reference-return",
+ "-Wno-nontrivial-memcall",
+ ]
+ cflags_cc -= [
+ "-Wno-c++11-narrowing-const-reference",
+ "-Wno-missing-template-arg-list-after-template-kw",
+ "-Wno-dangling-assignment-gsl",
+ ]
+ }
}
@@ -73,6 +73,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/page_info/page_info.h | 1 +
.../permissions/PermissionDialogDelegate.java | 13 +++
.../PermissionDialogModelFactory.java | 82 ++++++++++++++++++-
.../embedded_permission_prompt_android.cc | 3 +-
.../embedded_permission_prompt_android.h | 2 +-
.../permission_dialog_delegate.cc | 24 +++++-
.../permission_dialog_delegate.h | 1 +
.../permission_prompt_android.cc | 8 +-
@@ -80,6 +82,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../android/permissions_android_strings.grd | 17 ++++
.../geolocation_permission_context_android.cc | 34 ++++++--
.../geolocation_permission_context_android.h | 13 ++-
.../embedded_permission_prompt_flow_model.cc | 2 +-
.../permissions/permission_context_base.cc | 52 ++++++++++--
.../permissions/permission_context_base.h | 23 +++++-
components/permissions/permission_prompt.h | 3 +-
@@ -87,7 +90,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/permissions/permission_request.h | 16 +++-
.../permissions/permission_request_manager.cc | 45 ++++++----
.../permissions/permission_request_manager.h | 11 ++-
35 files changed, 489 insertions(+), 68 deletions(-)
38 files changed, 493 insertions(+), 71 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
@@ -685,6 +688,31 @@ diff --git a/components/permissions/android/java/src/org/chromium/components/per
}
public static ModalDialogProperties.ModalDialogButtonSpec[] getButtonSpecs(
diff --git a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc
--- a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc
+++ b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.cc
@@ -105,7 +105,8 @@ void EmbeddedPermissionPromptAndroid::Acknowledge() {
delegate()->FinalizeCurrentRequests();
}
-void EmbeddedPermissionPromptAndroid::AcceptThisTime() {
+void EmbeddedPermissionPromptAndroid::AcceptThisTime(
+ content_settings::mojom::LifetimeMode lifetimeOption) {
prompt_model_->PrecalculateVariantsForMetrics();
prompt_model_->RecordPermissionActionUKM(
permissions::ElementAnchoredBubbleAction::kGrantedOnce);
diff --git a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.h b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.h
--- a/components/permissions/android/permission_prompt/embedded_permission_prompt_android.h
+++ b/components/permissions/android/permission_prompt/embedded_permission_prompt_android.h
@@ -43,7 +43,7 @@ class EmbeddedPermissionPromptAndroid : public PermissionPromptAndroid {
const override;
void Closing() override;
void Accept() override;
- void AcceptThisTime() override;
+ void AcceptThisTime(content_settings::mojom::LifetimeMode lifetimeOption) override;
void Acknowledge() override;
void Deny() override;
void Resumed() override;
diff --git a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
--- a/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
+++ b/components/permissions/android/permission_prompt/permission_dialog_delegate.cc
@@ -941,6 +969,18 @@ diff --git a/components/permissions/contexts/geolocation_permission_context_andr
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
@@ -295,7 +295,7 @@ void EmbeddedPermissionPromptFlowModel::SetDelegateAction(
delegate_->Accept();
break;
case DelegateAction::kAllowThisTime:
- delegate_->AcceptThisTime();
+ delegate_->AcceptThisTime(content_settings::mojom::LifetimeMode::ONLY_THIS_TIME);
break;
case DelegateAction::kDeny:
delegate_->Deny();
diff --git a/components/permissions/permission_context_base.cc b/components/permissions/permission_context_base.cc
--- a/components/permissions/permission_context_base.cc
+++ b/components/permissions/permission_context_base.cc
@@ -7,9 +7,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/android/java/res/menu/main_menu.xml | 7 ++
.../chrome/browser/ChromeTabbedActivity.java | 24 +++++++
.../browser/bookmarks/BookmarkBridge.java | 67 +++++++++++++++++++
.../bookmarks/android/bookmark_bridge.cc | 44 +++++++++++-
.../bookmarks/android/bookmark_bridge.cc | 42 ++++++++++++
.../bookmarks/android/bookmark_bridge.h | 8 +++
.../browser/bookmarks/bookmark_html_writer.cc | 11 ++-
.../browser/bookmarks/bookmark_html_writer.cc | 14 +++-
.../bookmark_merged_surface_service.cc | 3 +
.../permanent_folder_ordering_tracker.cc | 2 +
.../dialogs/DownloadLocationCustomView.java | 4 +-
@@ -29,7 +29,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/bookmarks/browser/bookmark_uuids.h | 1 +
components/bookmarks/browser/model_loader.cc | 8 ++-
.../bookmark_specifics_conversions.cc | 1 +
25 files changed, 249 insertions(+), 14 deletions(-)
25 files changed, 250 insertions(+), 14 deletions(-)
diff --git a/chrome/android/java/res/menu/main_menu.xml b/chrome/android/java/res/menu/main_menu.xml
--- a/chrome/android/java/res/menu/main_menu.xml
@@ -225,16 +225,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/bookmarks/Bookm
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
@@ -187,7 +187,7 @@ class FileBookmarksExportObserver: public BookmarksExportObserver {
JNIEnv* env = AttachCurrentThread();
Java_BookmarkBridge_bookmarksExported(env, obj_, window_->GetJavaObject(),
- ConvertUTF8ToJavaString(env, export_path_),
+ base::android::ConvertUTF8ToJavaString(env, export_path_),
result == Result::kSuccess);
delete this;
}
@@ -360,6 +360,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) {
@@ -326,6 +326,33 @@ jboolean BookmarkBridge::AreAccountBookmarkFoldersActive(JNIEnv* env) {
return bookmark_model_->account_mobile_node() != nullptr;
}
@@ -268,7 +259,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
base::android::ScopedJavaLocalRef<jobject>
BookmarkBridge::GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env,
const GURL& url) {
@@ -472,6 +499,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
@@ -438,6 +465,7 @@ void BookmarkBridge::GetAllFoldersWithDepths(
// Vector to temporarily contain all child bookmarks at same level for sorting
std::vector<const BookmarkNode*> bookmarks = {
bookmark_model_->mobile_node(),
@@ -276,7 +267,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
bookmark_model_->bookmark_bar_node(),
bookmark_model_->other_node(),
};
@@ -565,6 +593,9 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl(
@@ -531,6 +559,9 @@ std::vector<const BookmarkNode*> BookmarkBridge::GetTopLevelFolderIdsImpl(
top_level_folders.push_back(other_node);
}
@@ -286,7 +277,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse
const BookmarkNode* reading_list_node =
local_or_syncable_reading_list_manager_->GetRoot();
if (IsPermanentFolderVisible(ignore_visibility, reading_list_node)) {
@@ -1266,6 +1297,17 @@ void BookmarkBridge::GetBookmarksOfType(
@@ -1256,6 +1287,17 @@ void BookmarkBridge::GetBookmarksOfType(
AddBookmarkNodesToBookmarkIdList(env, j_list, results);
}
@@ -318,7 +309,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
base::android::ScopedJavaLocalRef<jobject>
GetMostRecentlyAddedUserBookmarkIdForUrl(JNIEnv* env, const GURL& url);
const bookmarks::BookmarkNode* GetMostRecentlyAddedUserBookmarkIdForUrlImpl(
@@ -221,6 +225,10 @@ class BookmarkBridge : public ProfileObserver,
@@ -223,6 +227,10 @@ class BookmarkBridge : public ProfileObserver,
const base::android::JavaParamRef<jobject>& j_list,
jint type);
@@ -332,7 +323,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser
diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/bookmarks/bookmark_html_writer.cc
--- a/chrome/browser/bookmarks/bookmark_html_writer.cc
+++ b/chrome/browser/bookmarks/bookmark_html_writer.cc
@@ -176,7 +176,8 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
@@ -173,14 +173,15 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
BookmarkCodec codec;
local_bookmarks_ =
codec.Encode(model->bookmark_bar_node(), model->other_node(),
@@ -342,17 +333,25 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
if (model->account_bookmark_bar_node()) {
CHECK(model->account_other_node());
@@ -217,6 +218,9 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
CHECK(model->account_mobile_node());
account_bookmarks_ = codec.Encode(
model->account_bookmark_bar_node(), model->account_other_node(),
- model->account_mobile_node(), /*sync_metadata_str=*/std::string());
+ model->account_mobile_node(), /*tabs_folder_node*/ nullptr, /*sync_metadata_str=*/std::string());
} else {
CHECK(!model->account_other_node());
CHECK(!model->account_mobile_node());
@@ -214,6 +215,9 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
base::Value::Dict* mobile_folder_value = local_permanent_folders->FindDict(
BookmarkCodec::kMobileBookmarkFolderNameKey);
CHECK(mobile_folder_value);
+ base::Value::Dict* tabs_collection_value =
+ roots->FindDict(BookmarkCodec::kTabsBookmarkFolderNameKey);
+ local_permanent_folders->FindDict(BookmarkCodec::kTabsBookmarkFolderNameKey);
+ CHECK(tabs_collection_value);
base::Value::Dict* account_permanent_folders =
account_bookmarks_.FindDict(BookmarkCodec::kRootsKey);
@@ -292,6 +296,10 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
@@ -289,6 +293,10 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
return bookmark_html_writer::Result::kCouldNotWriteNodes;
}
@@ -363,7 +362,15 @@ diff --git a/chrome/browser/bookmarks/bookmark_html_writer.cc b/chrome/browser/b
DecrementIndent();
if (!Write(kFolderChildrenEnd) || !Write(kNewline)) {
@@ -566,6 +574,7 @@ void BookmarkFaviconFetcher::ExportBookmarks() {
@@ -435,6 +443,7 @@ class Writer : public base::RefCountedThreadSafe<Writer> {
case BookmarkNode::URL:
case BookmarkNode::OTHER_NODE:
case BookmarkNode::MOBILE:
+ case BookmarkNode::TABS_COLLECTION:
NOTREACHED();
}
@@ -563,6 +572,7 @@ void BookmarkFaviconFetcher::ExportBookmarks() {
ExtractUrls(model->bookmark_bar_node());
ExtractUrls(model->other_node());
ExtractUrls(model->mobile_node());
+282 -18
View File
@@ -8,15 +8,24 @@ Add DuckDuckGo Lite
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../search_engine_choice/default_favicon.png | Bin 0 -> 903 bytes
.../search_engine_choice_scaled_resources.grdp | 1 +
.../search_engine_choice_utils.cc | 5 +----
.../search_engines/search_engine_countries-inc.cc | 3 +++
components/search_engines/search_engine_type.h | 5 +++++
.../template_url_prepopulate_data.cc | 1 -
.../template_url_prepopulate_data.h | 7 -------
7 files changed, 10 insertions(+), 12 deletions(-)
.../search_engine_choice/default_favicon.png | Bin 0 -> 903 bytes
...search_engine_choice_scaled_resources.grdp | 1 +
components/search_engines/BUILD.gn | 3 ++
components/search_engines/cromite/BUILD.gn | 12 ++++++
.../cromite/cromite_prepopulated_engines.json | 37 ++++++++++++++++++
.../search_engine_choice_utils.cc | 5 +--
.../search_engine_countries-inc.cc | 2 +
.../search_engines/search_engine_type.h | 5 +++
.../template_url_prepopulate_data.cc | 3 +-
.../template_url_prepopulate_data.h | 7 ----
tools/json_to_struct/json_to_struct.gni | 9 +++++
tools/json_to_struct/json_to_struct.py | 26 ++++++++----
tools/json_to_struct/struct_generator.py | 10 +++--
tools/variations/fieldtrial_to_struct.py | 4 +-
14 files changed, 99 insertions(+), 25 deletions(-)
create mode 100644 components/resources/default_100_percent/search_engine_choice/default_favicon.png
create mode 100644 components/search_engines/cromite/BUILD.gn
create mode 100644 components/search_engines/cromite/cromite_prepopulated_engines.json
diff --git a/components/resources/default_100_percent/search_engine_choice/default_favicon.png b/components/resources/default_100_percent/search_engine_choice/default_favicon.png
new file mode 100644
@@ -56,6 +65,92 @@ diff --git a/components/resources/search_engine_choice_scaled_resources.grdp b/c
<structure type="chrome_scaled_image" name="IDR_AR_YAHOO_COM_PNG" file="search_engine_choice/yahoo_com.png" />
<structure type="chrome_scaled_image" name="IDR_AT_YAHOO_COM_PNG" file="search_engine_choice/yahoo_com.png" />
<structure type="chrome_scaled_image" name="IDR_AU_YAHOO_COM_PNG" file="search_engine_choice/yahoo_com.png" />
diff --git a/components/search_engines/BUILD.gn b/components/search_engines/BUILD.gn
--- a/components/search_engines/BUILD.gn
+++ b/components/search_engines/BUILD.gn
@@ -70,6 +70,7 @@ static_library("search_engines") {
"//third_party/metrics_proto",
"//third_party/omnibox_proto",
"//third_party/search_engines_data:prepopulated_engines",
+ "cromite:cromite_prepopulated_engines",
]
deps = [
@@ -155,6 +156,7 @@ source_set("search_engine_utils") {
":search_engine_type",
"//components/google/core/common",
"//third_party/search_engines_data:prepopulated_engines",
+ "cromite:cromite_prepopulated_engines",
]
deps = [ "//url" ]
@@ -235,6 +237,7 @@ source_set("unit_tests") {
"//testing/gmock",
"//testing/gtest",
"//third_party/search_engines_data:prepopulated_engines",
+ "cromite:cromite_prepopulated_engines",
"//ui/base",
"//url",
]
diff --git a/components/search_engines/cromite/BUILD.gn b/components/search_engines/cromite/BUILD.gn
new file mode 100644
--- /dev/null
+++ b/components/search_engines/cromite/BUILD.gn
@@ -0,0 +1,12 @@
+import("//tools/json_to_struct/json_to_struct.gni")
+
+json_to_struct("cromite_prepopulated_engines") {
+ visibility = [ "//components/search_engines:*" ]
+
+ source = "cromite_prepopulated_engines.json"
+ schema_file = "//third_party/search_engines_data/prepopulated_engines_schema.json"
+ namespace = "TemplateURLPrepopulateData"
+ excludetype = true
+
+ deps = [ "//base" ]
+}
diff --git a/components/search_engines/cromite/cromite_prepopulated_engines.json b/components/search_engines/cromite/cromite_prepopulated_engines.json
new file mode 100644
--- /dev/null
+++ b/components/search_engines/cromite/cromite_prepopulated_engines.json
@@ -0,0 +1,37 @@
+{
+ "additionals_includes": {
+ "third_party/search_engines_data/resources/definitions/prepopulated_engines.h": ""
+ },
+ "elements": {
+ "duckduckgo_light": {
+ "name": "DuckDuckGo Light",
+ "keyword": "duckduckgo.com/lite",
+ "favicon_url": "https://duckduckgo.com/favicon.ico",
+ "search_url": "https://duckduckgo.com/lite/?q={searchTerms}",
+ "suggest_url": "https://duckduckgo.com/ac/?q={searchTerms}&type=list",
+ "type": "SEARCH_ENGINE_DUCKDUCKGOLIGHT",
+ "id": 12
+ },
+
+ "googleen": {
+ "name": "Google in English",
+ "keyword": "googleen",
+ "favicon_url": "https://www.google.com/favicon.ico",
+ "search_url": "{google:baseURL}search?q={searchTerms}&ie={inputEncoding}&hl=en",
+ "suggest_url": "{google:baseSuggestURL}search?client={google:suggestClient}&q={searchTerms}&hl=en",
+ "image_url": "{google:baseURL}searchbyimage/upload?hl=en",
+ "new_tab_url": "{google:baseURL}_/chrome/newtab?hl=en&ie={inputEncoding}",
+ "contextual_search_url": "{google:baseURL}_/contextualsearch?{google:contextualSearchVersion}{google:contextualSearchContextData}&hl=en",
+ "image_url_post_params": "encoded_image={google:imageThumbnail},image_url={google:imageURL},sbisrc={google:imageSearchSource},original_width={google:imageOriginalWidth},original_height={google:imageOriginalHeight}",
+ "alternate_urls": [
+ "{google:baseURL}?hl=en#q={searchTerms}",
+ "{google:baseURL}search?hl=en#q={searchTerms}",
+ "{google:baseURL}webhp?hl=en#q={searchTerms}",
+ "{google:baseURL}s?hl=en#q={searchTerms}",
+ "{google:baseURL}s?hl=en&q={searchTerms}"
+ ],
+ "type": "SEARCH_ENGINE_GOOGLE_EN",
+ "id": 13
+ }
+ }
+}
diff --git a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc
--- a/components/search_engines/search_engine_choice/search_engine_choice_utils.cc
+++ b/components/search_engines/search_engine_choice/search_engine_choice_utils.cc
@@ -74,15 +169,7 @@ diff --git a/components/search_engines/search_engine_choice/search_engine_choice
diff --git a/components/search_engines/search_engine_countries-inc.cc b/components/search_engines/search_engine_countries-inc.cc
--- a/components/search_engines/search_engine_countries-inc.cc
+++ b/components/search_engines/search_engine_countries-inc.cc
@@ -38,6 +38,7 @@ struct EngineAndTier {
// Default (for countries with no better engine set)
constexpr EngineAndTier engines_default[] = {
+ {SearchEngineTier::kTopEngines, &googleen},
{SearchEngineTier::kTopEngines, &google},
{SearchEngineTier::kTopEngines, &bing},
{SearchEngineTier::kTopEngines, &yahoo},
@@ -1452,5 +1453,7 @@ const std::vector<EngineAndTier> GetPrepopulationSetFromCountryID(
@@ -1452,5 +1452,7 @@ const std::vector<EngineAndTier> GetPrepopulationSetFromCountryID(
for (size_t i = 0; i < num_engines; i++) {
t_url.push_back(engines[i]);
}
@@ -112,7 +199,16 @@ diff --git a/components/search_engines/search_engine_type.h b/components/search_
diff --git a/components/search_engines/template_url_prepopulate_data.cc b/components/search_engines/template_url_prepopulate_data.cc
--- a/components/search_engines/template_url_prepopulate_data.cc
+++ b/components/search_engines/template_url_prepopulate_data.cc
@@ -78,7 +78,6 @@ GetPrepopulatedEnginesForEeaRegionCountries(int country_id,
@@ -29,6 +29,8 @@
#include "components/version_info/version_info.h"
#include "third_party/search_engines_data/resources/definitions/prepopulated_engines.h"
+#include "components/search_engines/cromite/cromite_prepopulated_engines.h"
+
namespace TemplateURLPrepopulateData {
// Helpers --------------------------------------------------------------------
@@ -78,7 +80,6 @@ GetPrepopulatedEnginesForEeaRegionCountries(int country_id,
generator.seed(profile_seed);
std::shuffle(t_urls.begin(), t_urls.end(), generator);
@@ -137,4 +233,172 @@ diff --git a/components/search_engines/template_url_prepopulate_data.h b/compone
// The maximum number of prepopulated search engines that can be returned in
// in the rest of the world by `GetPrepopulatedEngines()`.
inline constexpr size_t kMaxRowPrepopulatedEngines = 5;
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
@@ -25,6 +25,11 @@ template("json_to_struct") {
action_name = target_name + "_action"
source_set_name = target_name
+ excludetype = false
+ if (defined(invoker.excludetype)) {
+ excludetype = invoker.excludetype
+ }
+
action(action_name) {
visibility = [ ":$source_set_name" ]
script = "//tools/json_to_struct/json_to_struct.py"
@@ -49,6 +54,10 @@ template("json_to_struct") {
"--namespace=" + invoker.namespace,
"--schema=" + rebase_path(invoker.schema_file, root_build_dir),
]
+
+ if (excludetype) {
+ args += [ "--excludetype=yes" ]
+ }
}
source_set(source_set_name) {
diff --git a/tools/json_to_struct/json_to_struct.py b/tools/json_to_struct/json_to_struct.py
--- a/tools/json_to_struct/json_to_struct.py
+++ b/tools/json_to_struct/json_to_struct.py
@@ -97,7 +97,7 @@ def _GenerateHeaderGuard(h_filename):
return re.sub(u'^_*', '', result) + u'_' # Remove leading underscores.
-def _GenerateH(basepath, fileroot, head, namespace, schema, description):
+def _GenerateH(basepath, fileroot, head, namespace, schema, description, excludetype):
"""Generates the .h file containing the definition of the structure specified
by the schema.
@@ -133,11 +133,15 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description):
f.write(u'#include "%s"\n' % header)
f.write(u'\n')
+ for header in description.get(u'additionals_includes', []):
+ f.write(u'#include "%s"\n' % header)
+ f.write(u'\n')
+
if namespace:
f.write(u'namespace %s {\n' % namespace)
f.write(u'\n')
- f.write(struct_generator.GenerateStruct(
+ f.write(struct_generator.GenerateStruct(excludetype,
schema['type_name'], schema['schema']))
f.write(u'\n')
@@ -162,7 +166,7 @@ def _GenerateH(basepath, fileroot, head, namespace, schema, description):
f.write(u'#endif // %s\n' % header_guard)
-def _GenerateCC(basepath, fileroot, head, namespace, schema, description):
+def _GenerateCC(basepath, fileroot, head, namespace, schema, description, excludetype):
"""Generates the .cc file containing the static initializers for the
of the elements specified in the description.
@@ -191,7 +195,7 @@ def _GenerateCC(basepath, fileroot, head, namespace, schema, description):
f.write(element_generator.GenerateElements(schema['type_name'],
schema['schema'], description))
- if 'generate_array' in description:
+ if excludetype == False and 'generate_array' in description:
f.write(u'\n')
f.write(
u'const %s* const array_%s[] = {\n' %
@@ -283,7 +287,7 @@ def GenerateClass(basepath,
def GenerateStruct(basepath, output_root, namespace, schema, description,
- description_filename, schema_filename, year=None):
+ description_filename, schema_filename, excludetype, year):
"""Generates a C++ struct from a JSON description.
Args:
@@ -302,8 +306,8 @@ def GenerateStruct(basepath, output_root, namespace, schema, description,
"""
year = int(year) if year else datetime.now().year
head = HEAD % (year, schema_filename, description_filename)
- _GenerateH(basepath, output_root, head, namespace, schema, description)
- _GenerateCC(basepath, output_root, head, namespace, schema, description)
+ _GenerateH(basepath, output_root, head, namespace, schema, description, excludetype)
+ _GenerateCC(basepath, output_root, head, namespace, schema, description, excludetype)
if __name__ == '__main__':
parser = optparse.OptionParser(
@@ -318,11 +322,17 @@ if __name__ == '__main__':
parser.add_option('-s', '--schema', help='path to the schema file, '
'mandatory.')
parser.add_option('-o', '--output', help='output filename, ')
+ parser.add_option('-x', '--excludetype', help='exclude type generator, ')
(opts, args) = parser.parse_args()
if not opts.schema:
parser.error('You must specify a --schema.')
+ if not opts.excludetype:
+ opts.excludetype = False
+ else:
+ opts.excludetype = True
+
description_filename = os.path.normpath(args[0])
root, ext = os.path.splitext(description_filename)
shortroot = opts.output if opts.output else os.path.split(root)[1]
@@ -339,4 +349,4 @@ if __name__ == '__main__':
schema = _Load(opts.schema)
description = _Load(description_filename)
GenerateStruct(basepath, output_root, opts.namespace, schema, description,
- description_filename, opts.schema)
+ description_filename, opts.schema, opts.excludetype, datetime.now().year)
diff --git a/tools/json_to_struct/struct_generator.py b/tools/json_to_struct/struct_generator.py
--- a/tools/json_to_struct/struct_generator.py
+++ b/tools/json_to_struct/struct_generator.py
@@ -30,20 +30,24 @@ def GenerateField(field_info):
else:
raise RuntimeError('Unknown field type "%s"' % type)
-def GenerateStruct(type_name, schema):
+def GenerateStruct(excludetype, type_name, schema):
"""Generate a string defining a structure containing the fields specified in
the schema list.
"""
lines = []
+ if excludetype:
+ lines.append('struct %s;' % type_name)
+ return '\n'.join(lines) + '\n'
+
lines.append('struct %s {' % type_name)
for field_info in schema:
if field_info['type'] == 'struct':
- lines.insert(0, GenerateStruct(field_info['type_name'],
+ lines.insert(0, GenerateStruct(excludetype, field_info['type_name'],
field_info['fields']))
elif (field_info['type'] == 'array'
and field_info['contents']['type'] == 'struct'):
contents = field_info['contents']
- lines.insert(0, GenerateStruct(contents['type_name'],
+ lines.insert(0, GenerateStruct(excludetype, contents['type_name'],
contents['fields']))
lines.append(' ' + GenerateField(field_info) + ';')
lines.append('};')
diff --git a/tools/variations/fieldtrial_to_struct.py b/tools/variations/fieldtrial_to_struct.py
--- a/tools/variations/fieldtrial_to_struct.py
+++ b/tools/variations/fieldtrial_to_struct.py
@@ -232,14 +232,14 @@ def main(arguments):
json_to_struct.GenerateStruct(
basepath, output_root, opts.namespace, schema, description,
os.path.split(description_filename)[1], os.path.split(opts.schema)[1],
- opts.year)
+ False, opts.year)
# TODO(peilinwang) filter the schema by platform, form_factor, etc.
if opts.java:
json_to_struct.GenerateClass(basepath, output_root, opts.namespace, schema,
description,
os.path.split(description_filename)[1],
- os.path.split(opts.schema)[1], opts.year)
+ os.path.split(opts.schema)[1], False, opts.year)
if __name__ == '__main__':
--
@@ -5,34 +5,40 @@ Subject: Add setting to clear data on exit
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/android/chrome_java_sources.gni | 1 +
.../java/res/xml/privacy_preferences.xml | 5 ++
.../chrome/browser/ChromeTabbedActivity.java | 7 +-
.../ClearBrowsingDataFragment.java | 12 +++
.../ClearBrowsingDataFragmentAtStart.java | 74 +++++++++++++++++++
.../browsing_data/BrowsingDataBridge.java | 12 +--
.../ClearBrowsingDataFragment.java | 31 ++++++--
.../ClearBrowsingDataFragmentAtStart.java | 79 +++++++++++++++++++
chrome/app/settings_strings.grdp | 10 +++
.../browsing_data/browsing_data_bridge.cc | 17 +++-
.../chrome_browsing_data_lifetime_manager.cc | 22 +++++-
.../chrome_browsing_data_remover_delegate.cc | 15 ++++
.../api/settings_private/prefs_util.cc | 17 +++++
.../api/settings_private/prefs_util.cc | 17 ++++
.../browser/profiles/ProfileManagerUtils.java | 5 ++
.../profiles/android/profile_manager_utils.cc | 5 ++
chrome/browser/profiles/profile_manager.cc | 15 +++-
chrome/browser/profiles/profile_manager.h | 2 +
.../clear_browsing_data_dialog.html | 44 +++++++++++
.../clear_browsing_data_dialog.ts | 2 +
.../strings/android_chrome_strings.grd | 5 +-
.../strings/android_chrome_strings.grd | 3 +
.../Add-setting-to-clear-data-on-exit.grdp | 9 +++
.../settings_localized_strings_provider.cc | 1 +
.../content/browsing_data_helper.cc | 9 ++-
components/browsing_data/core/BUILD.gn | 5 ++
.../core/browsing_data_policies_utils.cc | 20 ++---
.../core/browsing_data_policies_utils.h | 11 +++
.../browsing_data/core/browsing_data_utils.cc | 31 ++++++++
.../core/clear_browsing_data_tab.h | 2 +-
components/browsing_data/core/pref_names.cc | 17 +++++
.../core/clear_browsing_data_tab.h | 3 +-
components/browsing_data/core/pref_names.cc | 17 ++++
components/browsing_data/core/pref_names.h | 10 +++
.../search_engines/template_url_service.cc | 1 +
content/browser/dips/dips_service_impl.cc | 2 +-
content/browser/storage_partition_impl.cc | 1 +
.../public/browser/browsing_data_remover.h | 7 +-
27 files changed, 328 insertions(+), 20 deletions(-)
32 files changed, 386 insertions(+), 33 deletions(-)
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-clear-data-on-exit.grdp
diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni
--- a/chrome/android/chrome_java_sources.gni
@@ -45,6 +51,21 @@ diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java
"java/src/org/chromium/chrome/browser/browsing_data/ConfirmImportantSitesDialogFragment.java",
"java/src/org/chromium/chrome/browser/browsing_data/OtherFormsOfHistoryDialogFragment.java",
"java/src/org/chromium/chrome/browser/browsing_data/UrlFilter.java",
diff --git a/chrome/android/java/res/xml/privacy_preferences.xml b/chrome/android/java/res/xml/privacy_preferences.xml
--- a/chrome/android/java/res/xml/privacy_preferences.xml
+++ b/chrome/android/java/res/xml/privacy_preferences.xml
@@ -19,6 +19,11 @@ found in the LICENSE file.
android:title="@string/clear_browsing_data_title"
android:summary="@string/clear_browsing_data_summary"
android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragment" />
+ <Preference
+ android:key="clear_browsing_data_advanced"
+ android:title="@string/clear_browsing_data_at_start_title"
+ android:summary="@string/clear_browsing_data_at_start_summary"
+ android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragmentAtStart" />
<Preference
android:key="privacy_guide"
app:isPreferenceVisible="false"
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedActivity.java
@@ -69,6 +90,44 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/ChromeTabbedAct
String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
boolean noRestoreState =
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/BrowsingDataBridge.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/BrowsingDataBridge.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/BrowsingDataBridge.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/BrowsingDataBridge.java
@@ -218,8 +218,8 @@ public final class BrowsingDataBridge implements Destroyable {
* BrowsingDataType}).
* @return The state of the corresponding deletion preference.
*/
- public boolean getBrowsingDataDeletionPreference(int dataType) {
- return BrowsingDataBridgeJni.get().getBrowsingDataDeletionPreference(mProfile, dataType);
+ public boolean getBrowsingDataDeletionPreference(int dataType, int clearBrowsingDataTab) {
+ return BrowsingDataBridgeJni.get().getBrowsingDataDeletionPreference(mProfile, dataType, clearBrowsingDataTab);
}
/**
@@ -229,8 +229,8 @@ public final class BrowsingDataBridge implements Destroyable {
* BrowsingDataType}).
* @param value The state to be set.
*/
- public void setBrowsingDataDeletionPreference(int dataType, boolean value) {
- BrowsingDataBridgeJni.get().setBrowsingDataDeletionPreference(mProfile, dataType, value);
+ public void setBrowsingDataDeletionPreference(int dataType, int clearBrowsingDataTab, boolean value) {
+ BrowsingDataBridgeJni.get().setBrowsingDataDeletionPreference(mProfile, dataType, clearBrowsingDataTab, value);
}
/**
@@ -338,10 +338,10 @@ public final class BrowsingDataBridge implements Destroyable {
@JniType("Profile*") Profile profile, @JniType("std::string") String origin);
boolean getBrowsingDataDeletionPreference(
- @JniType("Profile*") Profile profile, int dataType);
+ @JniType("Profile*") Profile profile, int dataType, int clearBrowsingDataTab);
void setBrowsingDataDeletionPreference(
- @JniType("Profile*") Profile profile, int dataType, boolean value);
+ @JniType("Profile*") Profile profile, int dataType, int clearBrowsingDataTab, boolean value);
int getBrowsingDataDeletionTimePeriod(@JniType("Profile*") Profile profile);
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragment.java
@@ -85,7 +144,47 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
return true;
}
@@ -485,6 +491,10 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
@@ -255,7 +261,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
private @TimePeriod int mLastSelectedTimePeriod;
private boolean mShouldShowPostDeleteFeedback;
- private final ObservableSupplierImpl<String> mPageTitle = new ObservableSupplierImpl<>();
+ protected final ObservableSupplierImpl<String> mPageTitle = new ObservableSupplierImpl<>();
/**
* @return All available {@link DialogOption} entries.
@@ -361,7 +367,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
}
/** Called when browsing data is about to be cleared. */
- private void onClearBrowsingData() {
+ protected void onClearBrowsingData() {
RecordUserAction.record("ClearBrowsingData_AdvancedTab");
if (ChromeFeatureList.sClearBrowsingDataAndroidSurvey.isEnabled()) {
@@ -451,6 +457,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
BrowsingDataBridge.getForProfile(getProfile())
.setBrowsingDataDeletionPreference(
ClearBrowsingDataFragment.getDataType(item.getOption()),
+ getClearBrowsingDataTabType(),
item.isSelected());
}
@@ -458,8 +465,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
.setBrowsingDataDeletionTimePeriod(mLastSelectedTimePeriod);
}
+ protected int getClearBrowsingDataTabType() {
+ return ClearBrowsingDataTab.ADVANCED;
+ }
+
/** Returns the list of supported {@link DialogOption}. */
- private List<Integer> getDialogOptions(Bundle fragmentArgs) {
+ protected List<Integer> getDialogOptions(Bundle fragmentArgs) {
String referrer =
fragmentArgs.getString(
ClearBrowsingDataFragment.CLEAR_BROWSING_DATA_REFERRER, null);
@@ -485,6 +496,10 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
DialogOption.CLEAR_SITE_SETTINGS);
}
@@ -96,7 +195,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
/**
* Decides whether a given dialog option should be selected when the dialog is initialized.
*
@@ -561,6 +571,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
@@ -493,7 +508,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
*/
private boolean isOptionSelectedByDefault(@DialogOption int option) {
return BrowsingDataBridge.getForProfile(getProfile())
- .getBrowsingDataDeletionPreference(getDataType(option));
+ .getBrowsingDataDeletionPreference(getDataType(option), getClearBrowsingDataTabType());
}
/**
@@ -561,6 +576,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
* options.
*/
private void onClearButtonClicked() {
@@ -104,7 +212,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
if (shouldShowImportantSitesDialog()) {
showImportantDialogThenClear();
return;
@@ -591,6 +602,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
@@ -591,6 +607,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
Button clearButton = (Button) getView().findViewById(R.id.clear_button);
boolean isEnabled = !getSelectedOptions().isEmpty();
clearButton.setEnabled(isEnabled);
@@ -112,11 +220,33 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/C
}
private int getSpinnerIndex(
@@ -666,7 +683,7 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
.getBoolean(Pref.ALLOW_DELETING_BROWSER_HISTORY)) {
enabled = false;
browsingDataBridge.setBrowsingDataDeletionPreference(
- getDataType(DialogOption.CLEAR_HISTORY), false);
+ getDataType(DialogOption.CLEAR_HISTORY), getClearBrowsingDataTabType(), false);
}
// Disable tabs closure if the user is in multi-window mode.
@@ -696,8 +713,12 @@ public class ClearBrowsingDataFragment extends ChromeBaseSettingsFragment
mSigninManager.addSignInStateObserver(this);
setHasOptionsMenu(true);
+
+ onCustomizePreferences(savedInstanceState, rootKey);
}
+ protected void onCustomizePreferences(Bundle savedInstanceState, String rootKey) {}
+
@Override
public ObservableSupplier<String> getPageTitle() {
return mPageTitle;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/src/org/chromium/chrome/browser/browsing_data/ClearBrowsingDataFragmentAtStart.java
@@ -0,0 +1,74 @@
@@ -0,0 +1,79 @@
+/*
+ This file is part of Bromite.
+
@@ -171,6 +301,11 @@ new file mode 100644
+ }
+
+ @Override
+ protected void onCustomizePreferences(Bundle savedInstanceState, String rootKey) {
+ mPageTitle.set(getString(R.string.clear_browsing_data_at_start_title));
+ }
+
+ @Override
+ protected int getClearBrowsingDataTabType() {
+ return ClearBrowsingDataTab.AT_START;
+ }
@@ -183,7 +318,7 @@ new file mode 100644
+ }
+
+ @Override
+ protected void onClearBrowsingData() {
+ public void onClearBrowsingData() {
+ }
+
+ @Override
@@ -211,6 +346,61 @@ diff --git a/chrome/app/settings_strings.grdp b/chrome/app/settings_strings.grdp
<message name="IDS_SETTINGS_CLEAR_DATA_DESCRIPTION" desc="Description for delete browsing data button in Privacy options. 'History' refers to browsing history. 'Cookies' refers to the technical meaning of a cookie, i.e. data saved by a website on the user's computer, as in when a website saves your preferences.">
Delete history, cookies, cache, and more
</message>
diff --git a/chrome/browser/android/browsing_data/browsing_data_bridge.cc b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
--- a/chrome/browser/android/browsing_data/browsing_data_bridge.cc
+++ b/chrome/browser/android/browsing_data/browsing_data_bridge.cc
@@ -70,6 +70,15 @@ PrefService* GetPrefService(Profile* profile) {
return profile->GetOriginalProfile()->GetPrefs();
}
+browsing_data::ClearBrowsingDataTab ToTabEnum(jint clear_browsing_data_tab) {
+ DCHECK_GE(clear_browsing_data_tab, 0);
+ DCHECK_LE(clear_browsing_data_tab,
+ static_cast<int>(browsing_data::ClearBrowsingDataTab::MAX_VALUE));
+
+ return static_cast<browsing_data::ClearBrowsingDataTab>(
+ clear_browsing_data_tab);
+}
+
void OnBrowsingDataModelBuilt(JNIEnv* env,
const ScopedJavaGlobalRef<jobject>& java_callback,
std::unique_ptr<BrowsingDataModel> model) {
@@ -222,7 +231,8 @@ static void JNI_BrowsingDataBridge_MarkOriginAsImportantForTesting(
static jboolean JNI_BrowsingDataBridge_GetBrowsingDataDeletionPreference(
JNIEnv* env,
Profile* profile,
- jint data_type) {
+ jint data_type,
+ jint clear_browsing_data_tab) {
DCHECK_GE(data_type, 0);
DCHECK_LE(data_type,
static_cast<int>(browsing_data::BrowsingDataType::MAX_VALUE));
@@ -234,7 +244,7 @@ static jboolean JNI_BrowsingDataBridge_GetBrowsingDataDeletionPreference(
std::string pref;
if (!browsing_data::GetDeletionPreferenceFromDataType(
static_cast<browsing_data::BrowsingDataType>(data_type),
- browsing_data::ClearBrowsingDataTab::ADVANCED, &pref)) {
+ ToTabEnum(clear_browsing_data_tab), &pref)) {
return false;
}
@@ -245,6 +255,7 @@ static void JNI_BrowsingDataBridge_SetBrowsingDataDeletionPreference(
JNIEnv* env,
Profile* profile,
jint data_type,
+ jint clear_browsing_data_tab,
jboolean value) {
DCHECK_GE(data_type, 0);
DCHECK_LE(data_type,
@@ -253,7 +264,7 @@ static void JNI_BrowsingDataBridge_SetBrowsingDataDeletionPreference(
std::string pref;
if (!browsing_data::GetDeletionPreferenceFromDataType(
static_cast<browsing_data::BrowsingDataType>(data_type),
- browsing_data::ClearBrowsingDataTab::ADVANCED, &pref)) {
+ ToTabEnum(clear_browsing_data_tab), &pref)) {
return;
}
diff --git a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
--- a/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
+++ b/chrome/browser/browsing_data/chrome_browsing_data_lifetime_manager.cc
@@ -372,7 +562,7 @@ diff --git a/chrome/browser/profiles/profile_manager.cc b/chrome/browser/profile
}
+void ProfileManager::RemoveBrowsingDataAtStart() {
+ base::ranges::for_each(
+ std::ranges::for_each(
+ GetLoadedProfiles(),
+ [](Profile* profile) {
+ auto* browsing_data_lifetime_manager =
@@ -484,15 +674,6 @@ diff --git a/chrome/browser/resources/settings/clear_browsing_data_dialog/clear_
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
@@ -1458,7 +1458,7 @@ For example, some websites may respond to this request by showing you ads that a
Delete browsing data
</message>
<message name="IDS_CLEAR_BROWSING_DATA_SUMMARY" desc="Summary of the settings item that opens the Delete Browsing Data dialog.">
- Delete history, cookies, site data, cache…
+ Delete immediately or choose when to delete browsing data
</message>
<message name="IDS_CLEAR_BROWSING_DATA_HISTORY_DIALOG_TITLE" desc="Title of a dialog that is shown after the deletion of browsing history finished.">
Deleted Chrome data
@@ -1570,6 +1570,9 @@ Your Google account may have other forms of browsing history like searches and a
<message name="IDS_ANDROID_APP_HISTORY_OPEN_FULL_OTHER_FORMS" desc="The informational message at the top of the history page letting users know that app-specific history may be missing some entries, followed by the info on the other forms of browing history.">
Some of your history might not show up here. To see all your Chrome history, open full Chrome history. Also, your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK">&lt;link&gt;</ph>myactivity.google.com<ph name="END_LINK">&lt;/link&gt;</ph>.
@@ -503,6 +684,20 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro
<message name="IDS_ANDROID_HISTORY_OTHER_FORMS_OF_HISTORY" desc="The notification at the top of the history page indicating that deleting Chrome browsing history will not delete other forms of history stored at Google My Activity.">
Your Google Account may have other forms of browsing history at <ph name="BEGIN_LINK">&lt;link&gt;</ph>myactivity.google.com<ph name="END_LINK">&lt;/link&gt;</ph>.
</message>
diff --git a/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-clear-data-on-exit.grdp b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-clear-data-on-exit.grdp
new file mode 100644
--- /dev/null
+++ b/chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Add-setting-to-clear-data-on-exit.grdp
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<grit-part>
+ <message name="IDS_CLEAR_BROWSING_DATA_AT_START_TITLE" desc="Title of the Delete Browsing Data screen at start.">
+ Clear the data at opening
+ </message>
+ <message name="IDS_CLEAR_BROWSING_DATA_AT_START_SUMMARY" desc="Summary of the settings item that opens the Delete Browsing Data dialog.">
+ Choose what to delete when the browser opens
+ </message>
+</grit-part>
diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
--- a/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider.cc
@@ -533,6 +728,28 @@ diff --git a/components/browsing_data/content/browsing_data_helper.cc b/componen
return predicate.Run(url);
}
diff --git a/components/browsing_data/core/BUILD.gn b/components/browsing_data/core/BUILD.gn
--- a/components/browsing_data/core/BUILD.gn
+++ b/components/browsing_data/core/BUILD.gn
@@ -62,6 +62,10 @@ if (is_android) {
visibility = [ ":*" ]
sources = [ "browsing_data_utils.h" ]
}
+ java_cpp_enum("clear_browsing_data_tab_javagen") {
+ visibility = [ ":*" ]
+ sources = [ "clear_browsing_data_tab.h" ]
+ }
java_cpp_enum("cookie_or_cache_deletion_choice_javagen") {
# External code should depend on ":java" instead.
visibility = [ ":*" ]
@@ -71,6 +75,7 @@ if (is_android) {
android_library("java") {
srcjar_deps = [
":browsing_data_utils_javagen",
+ ":clear_browsing_data_tab_javagen",
":cookie_or_cache_deletion_choice_javagen",
]
deps = [ "//third_party/androidx:androidx_annotation_annotation_java" ]
diff --git a/components/browsing_data/core/browsing_data_policies_utils.cc b/components/browsing_data/core/browsing_data_policies_utils.cc
--- a/components/browsing_data/core/browsing_data_policies_utils.cc
+++ b/components/browsing_data/core/browsing_data_policies_utils.cc
@@ -633,11 +850,12 @@ diff --git a/components/browsing_data/core/browsing_data_utils.cc b/components/b
diff --git a/components/browsing_data/core/clear_browsing_data_tab.h b/components/browsing_data/core/clear_browsing_data_tab.h
--- a/components/browsing_data/core/clear_browsing_data_tab.h
+++ b/components/browsing_data/core/clear_browsing_data_tab.h
@@ -13,7 +13,7 @@ namespace browsing_data {
@@ -13,7 +13,8 @@ namespace browsing_data {
// value for dialogs without separate tabs is advanced.
// TODO(dullweber): Maybe rename "ADVANCED" to "DEFAULT" because it is used in
// multiple places without a differentiation between advanced and basic.
-enum class ClearBrowsingDataTab { BASIC, ADVANCED, MAX_VALUE = ADVANCED };
+// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.browsing_data
+enum class ClearBrowsingDataTab { BASIC, ADVANCED, AT_START, MAX_VALUE = AT_START };
} // namespace browsing_data
@@ -10,6 +10,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/network/reporting_service_proxy.cc | 3 +++
.../renderer_host/render_frame_host_impl.cc | 6 ------
.../coop/cross_origin_opener_policy_reporter.cc | 16 +++++++---------
.../dip/document_isolation_policy_reporter.cc | 2 ++
.../web_package/signed_exchange_reporter.cc | 2 ++
...content_switch_dependent_feature_overrides.cc | 1 +
.../Allow-building-without-enable_reporting.inc | 2 ++
@@ -25,7 +26,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../renderer/core/frame/reporting_context.cc | 9 +++++++++
.../renderer/core/frame/reporting_context.h | 7 +++++--
.../renderer/core/frame/reporting_observer.cc | 3 +--
21 files changed, 61 insertions(+), 26 deletions(-)
22 files changed, 63 insertions(+), 26 deletions(-)
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Allow-building-without-enable_reporting.inc
diff --git a/chrome/browser/net/chrome_report_sender.cc b/chrome/browser/net/chrome_report_sender.cc
@@ -215,6 +216,23 @@ diff --git a/content/browser/security/coop/cross_origin_opener_policy_reporter.c
}
} // namespace content
diff --git a/content/browser/security/dip/document_isolation_policy_reporter.cc b/content/browser/security/dip/document_isolation_policy_reporter.cc
--- a/content/browser/security/dip/document_isolation_policy_reporter.cc
+++ b/content/browser/security/dip/document_isolation_policy_reporter.cc
@@ -94,11 +94,13 @@ void DocumentIsolationPolicyReporter::QueueAndNotify(
}
body_to_pass.Set("disposition", disposition);
+#if BUILDFLAG(ENABLE_REPORTING)
if (auto* storage_partition = storage_partition_.get()) {
storage_partition->GetNetworkContext()->QueueReport(
kType, *endpoint, context_url_, reporting_source_,
network_anonymization_key_, std::move(body_to_pass));
}
+#endif
}
}
diff --git a/content/browser/web_package/signed_exchange_reporter.cc b/content/browser/web_package/signed_exchange_reporter.cc
--- a/content/browser/web_package/signed_exchange_reporter.cc
+++ b/content/browser/web_package/signed_exchange_reporter.cc
@@ -17,8 +17,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../core/browser/supervised_user_preferences.cc | 6 +++++-
.../core/browser/supervised_user_service.cc | 5 +----
.../supervised_user/core/browser/supervised_user_utils.cc | 1 +
components/supervised_user/core/common/features.cc | 7 +++++++
14 files changed, 18 insertions(+), 30 deletions(-)
components/supervised_user/core/common/features.cc | 6 ++++++
14 files changed, 17 insertions(+), 30 deletions(-)
diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
--- a/chrome/android/BUILD.gn
@@ -229,12 +229,11 @@ diff --git a/components/supervised_user/core/browser/supervised_user_utils.cc b/
diff --git a/components/supervised_user/core/common/features.cc b/components/supervised_user/core/common/features.cc
--- a/components/supervised_user/core/common/features.cc
+++ b/components/supervised_user/core/common/features.cc
@@ -171,4 +171,11 @@ BASE_FEATURE(kReplaceSupervisionSystemCapabilitiesWithAccountCapabilitiesOnIOS,
@@ -171,4 +171,10 @@ BASE_FEATURE(kReplaceSupervisionSystemCapabilitiesWithAccountCapabilitiesOnIOS,
"ReplaceSupervisionSystemCapabilitiesWithAccountCapabilitiesOnIOS",
base::FEATURE_DISABLED_BY_DEFAULT);
#endif
+
+SET_CROMITE_FEATURE_DISABLED(kKidFriendlyContentFeed);
+SET_CROMITE_FEATURE_DISABLED(kLocalWebApprovals);
+#if BUILDFLAG(IS_MAC) || BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_WIN)
+SET_CROMITE_FEATURE_DISABLED(kEnableExtensionsPermissionsForSupervisedUsersOnDesktop);
@@ -181,7 +181,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/offlinepages/in
+ new WebContentsObserver(webContents) {
+ @Override
+ public void didStartLoading(GURL url) {
+ webContents.removeObserver(this);
+ observe(null);
+ SnackbarManager snackbarManager = mSnackbarManagerSupplier.get();
+ snackbarManager.dismissSnackbars(controller);
+ }
@@ -415,7 +415,7 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
--- a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
+++ b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
@@ -457,6 +457,16 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
@@ -458,6 +458,16 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
return null;
}
@@ -8,10 +8,10 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
chrome/android/chrome_java_resources.gni | 2 +-
.../android/java/res/xml/main_preferences.xml | 4 +-
.../res/xml/privacy_preferences_cromite.xml | 198 ++++++++++++++++++
.../res/xml/privacy_preferences_cromite.xml | 197 ++++++++++++++++++
.../privacy/settings/PrivacySettings.java | 4 +-
.../Cromite-settings-ui.grdp | 15 ++
5 files changed, 218 insertions(+), 5 deletions(-)
5 files changed, 217 insertions(+), 5 deletions(-)
create mode 100644 chrome/android/java/res/xml/privacy_preferences_cromite.xml
create mode 100644 chrome/browser/ui/android/strings/cromite_android_chrome_strings_grd/Cromite-settings-ui.grdp
@@ -52,7 +52,7 @@ diff --git a/chrome/android/java/res/xml/privacy_preferences_cromite.xml b/chrom
new file mode 100644
--- /dev/null
+++ b/chrome/android/java/res/xml/privacy_preferences_cromite.xml
@@ -0,0 +1,198 @@
@@ -0,0 +1,197 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+Copyright 2022 The Chromium Authors
+Use of this source code is governed by a BSD-style license that can be
@@ -68,13 +68,12 @@ new file mode 100644
+ android:key="clear_browsing_data"
+ android:title="@string/clear_browsing_data_title"
+ android:summary="@string/clear_browsing_data_summary"
+ android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataTabsFragment" />
+ android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragment" />
+ <Preference
+ android:key="clear_browsing_data_advanced"
+ android:title="@string/clear_browsing_data_title"
+ android:summary="@string/clear_browsing_data_summary"
+ android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragmentAdvanced"
+ app:isPreferenceVisible="false" />
+ android:title="@string/clear_browsing_data_at_start_title"
+ android:summary="@string/clear_browsing_data_at_start_summary"
+ android:fragment="org.chromium.chrome.browser.browsing_data.ClearBrowsingDataFragmentAtStart" />
+ <org.chromium.components.browser_ui.settings.ChromeSwitchPreference
+ android:key="close_tabs_on_exit"
+ android:title="@string/close_tabs_on_exit_title"
+47 -16
View File
@@ -57,9 +57,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../chromium/product_logo_white.png | Bin 2512 -> 6790 bytes
.../webui/version/resources/about_version.ts | 2 +-
.../resources/about_version_mobile.css | 9 ++
content/child/runtime_features.cc | 23 ++---
content/child/runtime_features.cc | 44 ++++-----
tools/grit/grit/grd_reader.py | 35 +++++++
55 files changed, 188 insertions(+), 118 deletions(-)
55 files changed, 200 insertions(+), 127 deletions(-)
diff --git a/build/BUILD.gn b/build/BUILD.gn
--- a/build/BUILD.gn
@@ -18948,7 +18948,7 @@ diff --git a/components/webui/version/resources/about_version_mobile.css b/compo
diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.cc
--- a/content/child/runtime_features.cc
+++ b/content/child/runtime_features.cc
@@ -564,7 +564,7 @@ void ResolveInvalidConfigurations() {
@@ -564,19 +564,22 @@ void ResolveInvalidConfigurations() {
base::FeatureList::IsEnabled(
features::kPrivacySandboxAdsAPIsM1Override)) &&
!base::FeatureList::IsEnabled(blink::features::kFencedFrames)) {
@@ -18957,7 +18957,13 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "Fenced frames cannot be enabled in this configuration. Use --"
<< switches::kEnableFeatures << "="
<< blink::features::kFencedFrames.name << " instead.";
@@ -574,9 +574,8 @@ void ResolveInvalidConfigurations() {
WebRuntimeFeatures::EnableFencedFrames(false);
}
+ CHECK(!base::FeatureList::IsEnabled(features::kPrivacySandboxAdsAPIsOverride))
+ << "kPrivacySandboxAdsAPIsOverride is enabled!";
+ CHECK(!base::FeatureList::IsEnabled(features::kPrivacySandboxAdsAPIsM1Override))
+ << "kPrivacySandboxAdsAPIsM1Override is enabled!";
if (!base::FeatureList::IsEnabled(blink::features::kFencedFrames) &&
base::FeatureList::IsEnabled(
blink::features::kFencedFramesLocalUnpartitionedDataAccess)) {
@@ -18969,7 +18975,14 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "Fenced frames must be enabled in order to enable local "
"unpartitioned "
<< "data access. Use --" << switches::kEnableFeatures << "="
@@ -589,7 +588,7 @@ void ResolveInvalidConfigurations() {
@@ -584,12 +587,14 @@ void ResolveInvalidConfigurations() {
WebRuntimeFeatures::EnableFeatureFromString(
"FencedFramesLocalUnpartitionedDataAccess", false);
}
+ CHECK(!base::FeatureList::IsEnabled(blink::features::kFencedFrames))
+ << "kFencedFrames is enabled!";
// Topics API cannot be enabled without the support of the browser process.
// The Document API should be additionally gated by the
// `kBrowsingTopicsDocumentAPI` feature.
if (!base::FeatureList::IsEnabled(blink::features::kBrowsingTopics)) {
@@ -18978,16 +18991,21 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "Topics cannot be enabled in this configuration. Use --"
<< switches::kEnableFeatures << "="
<< blink::features::kBrowsingTopics.name << " in addition.";
@@ -599,7 +598,7 @@ void ResolveInvalidConfigurations() {
@@ -597,30 +602,23 @@ void ResolveInvalidConfigurations() {
WebRuntimeFeatures::EnableTopicsDocumentAPI(false);
WebRuntimeFeatures::EnableTopicsImgAPI(false);
} else {
if (!base::FeatureList::IsEnabled(
blink::features::kBrowsingTopicsDocumentAPI)) {
- if (!base::FeatureList::IsEnabled(
- blink::features::kBrowsingTopicsDocumentAPI)) {
- LOG_IF(WARNING, WebRuntimeFeatures::IsTopicsDocumentAPIEnabled())
+ CHECK(!WebRuntimeFeatures::IsTopicsDocumentAPIEnabled())
<< "Topics Document API cannot be enabled in this configuration. Use "
"--"
<< switches::kEnableFeatures << "="
@@ -610,8 +609,8 @@ void ResolveInvalidConfigurations() {
- << "Topics Document API cannot be enabled in this configuration. Use "
- "--"
- << switches::kEnableFeatures << "="
- << blink::features::kBrowsingTopicsDocumentAPI.name
- << " in addition.";
- WebRuntimeFeatures::EnableTopicsDocumentAPI(false);
- }
+ CHECK(false) << "kBrowsingTopics is enabled!";
}
if (!base::FeatureList::IsEnabled(blink::features::kSharedStorageAPI)) {
@@ -18998,7 +19016,10 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
"configuration. Use --"
<< switches::kEnableFeatures << "="
<< blink::features::kSharedStorageAPI.name << " in addition.";
@@ -620,7 +619,7 @@ void ResolveInvalidConfigurations() {
WebRuntimeFeatures::EnableSharedStorageAPI(false);
+ } else {
+ CHECK(false) << "kSharedStorageAPI is enabled!";
}
if (!base::FeatureList::IsEnabled(
attribution_reporting::features::kConversionMeasurement)) {
@@ -19007,8 +19028,12 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "AttributionReporting cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -630,8 +629,7 @@ void ResolveInvalidConfigurations() {
@@ -628,23 +626,25 @@ void ResolveInvalidConfigurations() {
<< " in addition.";
WebRuntimeFeatures::EnableAttributionReporting(false);
}
+ CHECK(!base::FeatureList::IsEnabled(attribution_reporting::features::kConversionMeasurement))
+ << "kConversionMeasurement is enabled!";
if (!base::FeatureList::IsEnabled(blink::features::kInterestGroupStorage)) {
- LOG_IF(WARNING,
@@ -19017,7 +19042,13 @@ diff --git a/content/child/runtime_features.cc b/content/child/runtime_features.
<< "AdInterestGroupAPI cannot be enabled in this "
"configuration. Use --"
<< switches::kEnableFeatures << "="
@@ -643,8 +641,7 @@ void ResolveInvalidConfigurations() {
<< blink::features::kInterestGroupStorage.name << " in addition.";
WebRuntimeFeatures::EnableAdInterestGroupAPI(false);
WebRuntimeFeatures::EnableFledge(false);
+ } else {
+ CHECK(false) << "kInterestGroupStorage is enabled!";
}
// PermissionElement cannot be enabled without the support of the
// browser process.
if (!base::FeatureList::IsEnabled(blink::features::kPermissionElement)) {
@@ -5,15 +5,18 @@ Subject: Disable all predictors code
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
---
chrome/browser/BUILD.gn | 3 ---
chrome/browser/BUILD.gn | 4 +---
.../preloading_model_keyed_service.cc | 3 +++
.../preloading_model_keyed_service_factory.cc | 4 +---
.../optimization_guide/chrome_hints_manager.cc | 1 +
.../model_validator_keyed_service.cc | 6 +++++-
.../optimization_guide_keyed_service.cc | 1 -
chrome/browser/permissions/BUILD.gn | 2 --
.../permissions/chrome_permissions_client.cc | 2 --
.../predictors/autocomplete_action_predictor.cc | 2 ++
.../predictors/loading_predictor_config.cc | 4 ++--
chrome/browser/predictors/predictors_features.cc | 3 +--
.../chrome_browser_main_extra_parts_profiles.cc | 1 -
chrome/browser/safe_browsing/BUILD.gn | 1 -
...fication_content_detection_service_factory.cc | 5 +++++
chrome/browser/ui/tab_helpers.cc | 1 -
@@ -33,6 +36,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
components/optimization_guide/features.gni | 3 +--
.../core/page_content_annotations_features.cc | 4 ++++
.../page_content_annotations_model_manager.cc | 1 +
.../notification_content_detection/BUILD.gn | 7 +++++++
components/safe_browsing/core/common/features.cc | 1 +
.../Disable-all-predictors-code.inc | 3 +++
.../Disable-all-predictors-code.inc | 1 +
@@ -44,7 +48,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 +-
39 files changed, 106 insertions(+), 40 deletions(-)
43 files changed, 114 insertions(+), 45 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
@@ -64,11 +68,12 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
"navigation_predictor/preloading_model_keyed_service.cc",
"navigation_predictor/preloading_model_keyed_service.h",
"navigation_predictor/preloading_model_keyed_service_factory.cc",
@@ -2261,7 +2259,6 @@ static_library("browser") {
@@ -2261,7 +2259,7 @@ static_library("browser") {
"//components/safe_browsing/content/browser",
"//components/safe_browsing/content/browser:client_side_detection",
"//components/safe_browsing/content/browser:safe_browsing_service",
- "//components/safe_browsing/content/browser/notification_content_detection",
+ "//components/safe_browsing/content/browser/notification_content_detection:constants",
"//components/safe_browsing/content/browser/password_protection",
"//components/safe_browsing/content/browser/web_ui",
"//components/safe_browsing/core/browser",
@@ -183,6 +188,30 @@ diff --git a/chrome/browser/optimization_guide/optimization_guide_keyed_service.
}
optimization_guide::OptimizationGuideDecision
diff --git a/chrome/browser/permissions/BUILD.gn b/chrome/browser/permissions/BUILD.gn
--- a/chrome/browser/permissions/BUILD.gn
+++ b/chrome/browser/permissions/BUILD.gn
@@ -41,8 +41,6 @@ source_set("permissions") {
"permission_manager_factory.h",
"permission_revocation_request.cc",
"permission_revocation_request.h",
- "prediction_based_permission_ui_selector.cc",
- "prediction_based_permission_ui_selector.h",
"prediction_model_handler_provider.cc",
"prediction_model_handler_provider.h",
"prediction_service_factory.cc",
diff --git a/chrome/browser/permissions/chrome_permissions_client.cc b/chrome/browser/permissions/chrome_permissions_client.cc
--- a/chrome/browser/permissions/chrome_permissions_client.cc
+++ b/chrome/browser/permissions/chrome_permissions_client.cc
@@ -416,8 +416,6 @@ ChromePermissionsClient::CreatePermissionUiSelectors(
std::make_unique<ContextualNotificationPermissionUiSelector>());
selectors.emplace_back(std::make_unique<PrefBasedQuietPermissionUiSelector>(
Profile::FromBrowserContext(browser_context)));
- selectors.emplace_back(std::make_unique<PredictionBasedPermissionUiSelector>(
- Profile::FromBrowserContext(browser_context)));
return selectors;
}
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
@@ -222,6 +251,17 @@ diff --git a/chrome/browser/predictors/predictors_features.cc b/chrome/browser/p
} // namespace
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
@@ -1134,7 +1134,6 @@ void ChromeBrowserMainExtraPartsProfiles::
base::FeatureList::IsEnabled(
permissions::features::kPermissionOnDeviceGeolocationPredictions) ||
base::FeatureList::IsEnabled(permissions::features::kPermissionsAIv1)) {
- PredictionModelHandlerProviderFactory::GetInstance();
}
PredictionServiceFactory::GetInstance();
predictors::AutocompleteActionPredictorFactory::GetInstance();
diff --git a/chrome/browser/safe_browsing/BUILD.gn b/chrome/browser/safe_browsing/BUILD.gn
--- a/chrome/browser/safe_browsing/BUILD.gn
+++ b/chrome/browser/safe_browsing/BUILD.gn
@@ -739,6 +779,23 @@ diff --git a/components/page_content_annotations/core/page_content_annotations_m
if (page_visibility_model_handler_)
return;
diff --git a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn
--- a/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn
+++ b/components/safe_browsing/content/browser/notification_content_detection/BUILD.gn
@@ -26,6 +26,13 @@ source_set("notification_content_detection") {
]
}
+source_set("constants") {
+ sources = [
+ "notification_content_detection_constants.cc",
+ "notification_content_detection_constants.h",
+ ]
+}
+
source_set("test_utils") {
testonly = true
sources = [
diff --git a/components/safe_browsing/core/common/features.cc b/components/safe_browsing/core/common/features.cc
--- a/components/safe_browsing/core/common/features.cc
+++ b/components/safe_browsing/core/common/features.cc
@@ -26,8 +26,9 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../origin_trials/features.cc | 1 +
.../render_view_context_menu_base.cc | 3 -
.../aggregatable_report_sender.cc | 15 +-
.../attribution_data_host_manager_impl.cc | 2 +
.../attribution_reporting/attribution_host.cc | 1 +
.../attribution_data_host_manager_impl.cc | 8 +-
.../attribution_reporting/attribution_host.cc | 3 +-
.../attribution_manager_impl.cc | 4 -
.../attribution_os_level_manager.cc | 3 +-
.../attribution_report_network_sender.cc | 9 +
.../attribution_storage_sql.cc | 8 +-
@@ -38,7 +39,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../public/browser/content_browser_client.cc | 7 +-
.../public/browser/navigation_controller.cc | 1 -
.../Disable-conversion-measurement-api.inc | 1 +
.../Disable-conversion-measurement-api.inc | 8 +
.../Disable-conversion-measurement-api.inc | 10 +
.../attribution/request_headers_internal.cc | 1 +
services/network/network_context.cc | 20 -
.../network/public/cpp/attribution_utils.cc | 2 +
@@ -46,7 +47,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
third_party/blink/renderer/core/page/page.cc | 2 +-
.../platform/runtime_enabled_features.json5 | 20 +-
ui/events/android/motion_event_android.cc | 8 +-
35 files changed, 97 insertions(+), 420 deletions(-)
36 files changed, 101 insertions(+), 430 deletions(-)
create mode 100644 cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc
@@ -274,7 +275,21 @@ diff --git a/content/browser/aggregation_service/aggregatable_report_sender.cc b
diff --git a/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc b/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc
--- a/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc
+++ b/content/browser/attribution_reporting/attribution_data_host_manager_impl.cc
@@ -1121,6 +1121,8 @@ void AttributionDataHostManagerImpl::ParseHeader(
@@ -758,11 +758,9 @@ class AttributionDataHostManagerImpl::PendingRegistrationData {
headers->GetNormalizedHeader(
attribution_reporting::kAttributionReportingRegisterTriggerHeader);
- std::optional<std::string> os_source_header = headers->GetNormalizedHeader(
- attribution_reporting::kAttributionReportingRegisterOsSourceHeader);
+ std::optional<std::string> os_source_header;
- std::optional<std::string> os_trigger_header = headers->GetNormalizedHeader(
- attribution_reporting::kAttributionReportingRegisterOsTriggerHeader);
+ std::optional<std::string> os_trigger_header;
const bool has_source =
web_source_header.has_value() || os_source_header.has_value();
@@ -1121,6 +1119,8 @@ void AttributionDataHostManagerImpl::ParseHeader(
Registrations& registrations,
HeaderPendingDecode pending_decode,
Registrar registrar) {
@@ -286,7 +301,16 @@ diff --git a/content/browser/attribution_reporting/attribution_data_host_manager
diff --git a/content/browser/attribution_reporting/attribution_host.cc b/content/browser/attribution_reporting/attribution_host.cc
--- a/content/browser/attribution_reporting/attribution_host.cc
+++ b/content/browser/attribution_reporting/attribution_host.cc
@@ -318,6 +318,7 @@ void AttributionHost::NotifyNavigationRegistrationData(
@@ -119,8 +119,6 @@ AttributionHost::AttributionHost(WebContents* web_contents)
attribution_reporting::features::kConversionMeasurement));
#if BUILDFLAG(IS_ANDROID)
- input_event_tracker_android_ =
- std::make_unique<AttributionInputEventTrackerAndroid>(web_contents);
#endif
}
@@ -318,6 +316,7 @@ void AttributionHost::NotifyNavigationRegistrationData(
return;
}
@@ -294,6 +318,21 @@ diff --git a/content/browser/attribution_reporting/attribution_host.cc b/content
auto* attribution_manager =
AttributionManager::FromWebContents(web_contents());
DCHECK(attribution_manager);
diff --git a/content/browser/attribution_reporting/attribution_manager_impl.cc b/content/browser/attribution_reporting/attribution_manager_impl.cc
--- a/content/browser/attribution_reporting/attribution_manager_impl.cc
+++ b/content/browser/attribution_reporting/attribution_manager_impl.cc
@@ -573,11 +573,7 @@ bool IsOperationAllowed(
}
std::unique_ptr<AttributionOsLevelManager> CreateOsLevelManager() {
-#if BUILDFLAG(IS_ANDROID)
- return std::make_unique<AttributionOsLevelManagerAndroid>();
-#else
return std::make_unique<NoOpAttributionOsLevelManager>();
-#endif
}
// Returns new report time if any.
diff --git a/content/browser/attribution_reporting/attribution_os_level_manager.cc b/content/browser/attribution_reporting/attribution_os_level_manager.cc
--- a/content/browser/attribution_reporting/attribution_os_level_manager.cc
+++ b/content/browser/attribution_reporting/attribution_os_level_manager.cc
@@ -948,12 +987,12 @@ new file mode 100644
--- /dev/null
+++ b/cromite_flags/services/network/public/cpp/features_cc/Disable-conversion-measurement-api.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kAttributionReportingCrossAppWeb);
+// none
diff --git a/cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc b/cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc
new file mode 100644
--- /dev/null
+++ b/cromite_flags/third_party/blink/common/features_cc/Disable-conversion-measurement-api.inc
@@ -0,0 +1,8 @@
@@ -0,0 +1,10 @@
+SET_CROMITE_FEATURE_DISABLED(kAdAuctionSignals);
+SET_CROMITE_FEATURE_DISABLED(kBrowsingTopics);
+SET_CROMITE_FEATURE_DISABLED(kBrowsingTopicsDocumentAPI);
@@ -962,6 +1001,8 @@ new file mode 100644
+SET_CROMITE_FEATURE_DISABLED(kFledgeBiddingAndAuctionServer);
+SET_CROMITE_FEATURE_DISABLED(kInterestGroupStorage);
+SET_CROMITE_FEATURE_DISABLED(kPrivateAggregationApi);
+SET_CROMITE_FEATURE_DISABLED(kBiddingAndScoringDebugReportingAPI);
+SET_CROMITE_FEATURE_DISABLED(kAllowURNsInIframes);
diff --git a/services/network/attribution/request_headers_internal.cc b/services/network/attribution/request_headers_internal.cc
--- a/services/network/attribution/request_headers_internal.cc
+++ b/services/network/attribution/request_headers_internal.cc
@@ -9,13 +9,13 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../origin_trials/origin_trial_policy_impl.h | 2 +-
.../renderer_host/navigation_request.cc | 1 -
.../origin_trial_state_host_impl.cc | 19 -------------------
content/renderer/render_frame_impl.cc | 9 ++-------
content/renderer/render_frame_impl.cc | 10 +++-------
.../shell/common/shell_origin_trial_policy.cc | 10 ++++------
.../origin_trials/trial_token_validator.cc | 1 +
.../renderer/core/loader/document_loader.cc | 18 ++----------------
.../blink/renderer/core/loader/http_equiv.cc | 2 +-
.../origin_trials/origin_trial_context.cc | 6 ++++--
11 files changed, 19 insertions(+), 57 deletions(-)
11 files changed, 20 insertions(+), 57 deletions(-)
diff --git a/android_webview/common/aw_content_client.cc b/android_webview/common/aw_content_client.cc
--- a/android_webview/common/aw_content_client.cc
@@ -127,17 +127,18 @@ diff --git a/content/renderer/render_frame_impl.cc b/content/renderer/render_fra
navigation_params->was_discarded = commit_params.was_discarded;
navigation_params->document_ukm_source_id =
commit_params.document_ukm_source_id;
@@ -564,8 +560,7 @@ void FillNavigationParamsRequest(
@@ -564,8 +560,8 @@ void FillNavigationParamsRequest(
navigation_params->had_transient_user_activation =
common_params.has_user_gesture;
- navigation_params->force_enabled_origin_trials = base::ToVector(
- commit_params.force_enabled_origin_trials, &WebString::FromASCII);
+ navigation_params->force_enabled_origin_trials = WebVector<WebString>();
+ std::vector<WebString> force_enabled_origin_trials;
+ navigation_params->force_enabled_origin_trials = force_enabled_origin_trials;
navigation_params->early_hints_preloaded_resources = base::ToVector(
commit_params.early_hints_preloaded_resources, blink::ToWebURL);
@@ -650,7 +645,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
@@ -650,7 +646,7 @@ blink::mojom::CommonNavigationParamsPtr MakeCommonNavigationParams(
info->url_request.HasUserGesture(),
info->url_request.HasTextFragmentToken(),
info->should_check_main_world_content_security_policy,
@@ -15,7 +15,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../chrome_browser_interface_binders.cc | 12 +
chrome/browser/resources/BUILD.gn | 6 +
chrome/browser/resources/settings/BUILD.gn | 2 +-
.../resources/settings/page_visibility.ts | 30 +-
.../resources/settings/page_visibility.ts | 43 ++-
.../search_engine_edit_dialog.html | 6 +
.../search_engine_edit_dialog.ts | 6 +-
.../search_engines_browser_proxy.ts | 8 +-
@@ -42,7 +42,7 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
.../webui/settings/search_engines_handler.cc | 28 +-
.../webui/settings/search_engines_handler.h | 3 +-
.../settings_localized_strings_provider.cc | 8 +
...ings_localized_strings_provider_android.cc | 198 +++++++++++++
...ings_localized_strings_provider_android.cc | 200 ++++++++++++++
...tings_localized_strings_provider_android.h | 19 ++
.../ui/webui/settings/settings_ui_android.cc | 126 +++++++++
.../ui/webui/settings/settings_ui_android.h | 112 ++++++++
@@ -61,7 +61,8 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
third_party/polymer/v3_0/BUILD.gn | 12 +-
ui/base/template_expressions.cc | 21 +-
ui/webui/BUILD.gn | 7 +
ui/webui/resources/BUILD.gn | 20 ++
ui/webui/resources/BUILD.gn | 22 ++
.../cr_components/cr_shortcut_input/BUILD.gn | 2 +-
.../customize_color_scheme_mode/BUILD.gn | 2 +-
.../cr_components/help_bubble/BUILD.gn | 2 +-
.../cr_components/localized_link/BUILD.gn | 2 +-
@@ -75,7 +76,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 +-
68 files changed, 1130 insertions(+), 67 deletions(-)
69 files changed, 1148 insertions(+), 68 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
@@ -416,7 +417,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
@@ -3495,6 +3495,9 @@ static_library("browser") {
@@ -3496,6 +3496,9 @@ static_library("browser") {
"//components/user_scripts/android",
]
}
@@ -486,14 +487,21 @@ diff --git a/chrome/browser/resources/settings/BUILD.gn b/chrome/browser/resourc
diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/browser/resources/settings/page_visibility.ts
--- a/chrome/browser/resources/settings/page_visibility.ts
+++ b/chrome/browser/resources/settings/page_visibility.ts
@@ -43,8 +43,36 @@ export interface PrivacyPageVisibility {
@@ -43,8 +43,49 @@ export interface PrivacyPageVisibility {
searchPrediction: boolean;
}
+const isAndroid = (loadTimeData.getString('chromeAndroid') !== "");
+if (isAndroid) {
+ // @ts-expect-error
+ chrome.autofillPrivate = {};
+ chrome.autofillPrivate = {
+ isUserEligibleForAutofillImprovements(): Promise<boolean> {
+ return Promise.resolve(false);
+ },
+ hasUserAnnotationsEntries(): Promise<boolean> {
+ return Promise.resolve(false);
+ }
+ };
+
+ // @ts-expect-error
+ chrome.languageSettingsPrivate = {};
@@ -512,6 +520,12 @@ diff --git a/chrome/browser/resources/settings/page_visibility.ts b/chrome/brows
+ var obj = {};
+ (obj as any).then = function() {};
+ return obj;
+ },
+ PrefType: {
+ BOOLEAN: 0
+ },
+ getDefaultZoom(): Promise<number> {
+ return Promise.resolve(100);
+ }
+ }
+ // @ts-expect-error
@@ -1362,7 +1376,7 @@ diff --git a/chrome/browser/ui/webui/settings/settings_localized_strings_provide
new file mode 100644
--- /dev/null
+++ b/chrome/browser/ui/webui/settings/settings_localized_strings_provider_android.cc
@@ -0,0 +1,198 @@
@@ -0,0 +1,200 @@
+#include "chrome/browser/ui/webui/settings/settings_localized_strings_provider.h"
+
+#include <string>
@@ -1557,6 +1571,8 @@ new file mode 100644
+ AddSearchInSettingsStrings(html_source);
+ html_source->AddString("check_notfound", "false");
+ html_source->AddInteger("br_cs_count", 0);
+ html_source->AddString("presetZoomFactors",
+ "[0.25,0.3333333333333333,0.5,0.6666666666666666,0.75,0.8,0.9,1.0,1.1,1.25,1.5,1.75,2.0,2.5,3.0,4.0,5.0]");
+ html_source->UseStringsJs();
+}
+
@@ -2139,13 +2155,14 @@ diff --git a/ui/webui/BUILD.gn b/ui/webui/BUILD.gn
diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn
--- a/ui/webui/resources/BUILD.gn
+++ b/ui/webui/resources/BUILD.gn
@@ -50,6 +50,26 @@ generate_grd("build_grd") {
@@ -50,6 +50,28 @@ generate_grd("build_grd") {
"$target_gen_dir/mojo/resources.grdp",
]
+ if (is_android) {
+ public_deps += [
+ "cr_components/customize_color_scheme_mode:build_grdp",
+ "cr_components/cr_shortcut_input:build_grdp",
+ "cr_components/help_bubble:build_grdp",
+ "cr_components/localized_link:build_grdp",
+ "cr_components/managed_dialog:build_grdp",
@@ -2155,6 +2172,7 @@ diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn
+ ]
+ grdp_files += [
+ "$target_gen_dir/cr_components/customize_color_scheme_mode/resources.grdp",
+ "$target_gen_dir/cr_components/cr_shortcut_input/resources.grdp",
+ "$target_gen_dir/cr_components/help_bubble/resources.grdp",
+ "$target_gen_dir/cr_components/localized_link/resources.grdp",
+ "$target_gen_dir/cr_components/managed_dialog/resources.grdp",
@@ -2166,6 +2184,18 @@ diff --git a/ui/webui/resources/BUILD.gn b/ui/webui/resources/BUILD.gn
if (!is_android && !is_ios) {
public_deps += [
"cr_components/app_management:build_grdp",
diff --git a/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn b/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn
--- a/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn
+++ b/ui/webui/resources/cr_components/cr_shortcut_input/BUILD.gn
@@ -4,7 +4,7 @@
import("//ui/webui/resources/tools/build_webui.gni")
-assert(!is_android && !is_ios)
+#assert(!is_android && !is_ios)
build_webui("build") {
grd_prefix = "cr_components_cr_shortcut_input"
diff --git a/ui/webui/resources/cr_components/customize_color_scheme_mode/BUILD.gn b/ui/webui/resources/cr_components/customize_color_scheme_mode/BUILD.gn
--- a/ui/webui/resources/cr_components/customize_color_scheme_mode/BUILD.gn
+++ b/ui/webui/resources/cr_components/customize_color_scheme_mode/BUILD.gn
@@ -95,8 +95,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../user_scripts/common/script_constants.h | 33 +
components/user_scripts/common/url_pattern.cc | 813 ++++++++++++++++++
components/user_scripts/common/url_pattern.h | 306 +++++++
.../user_scripts/common/url_pattern_set.cc | 335 ++++++++
.../user_scripts/common/url_pattern_set.h | 160 ++++
.../user_scripts/common/url_pattern_set.cc | 229 +++++
.../user_scripts/common/url_pattern_set.h | 103 +++
components/user_scripts/common/user_script.cc | 329 +++++++
components/user_scripts/common/user_script.h | 402 +++++++++
.../common/user_scripts_features.cc | 32 +
@@ -135,7 +135,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 +
108 files changed, 9514 insertions(+), 2 deletions(-)
108 files changed, 9351 insertions(+), 2 deletions(-)
create mode 100644 components/user_scripts/README.md
create mode 100755 components/user_scripts/android/BUILD.gn
create mode 100644 components/user_scripts/android/java/res/layout/accept_script_item.xml
@@ -1633,11 +1633,11 @@ new file mode 100644
+
+ @Override
+ public void onBindViewHolder(ViewHolder viewHolder, int i) {
+ ((ScriptInfoRowViewHolder) viewHolder).updateScriptInfo(mElements.get(i));
+ ((ScriptInfoRowViewHolder) viewHolder).updateScriptInfo(mItems.get(i));
+ }
+
+ void setDisplayedScriptInfo(List<ScriptInfo> values) {
+ mElements = new ArrayList<>(values);
+ mItems = new ArrayList<>(values);
+ notifyDataSetChanged();
+ }
+
@@ -5910,7 +5910,7 @@ diff --git a/components/user_scripts/common/url_pattern_set.cc b/components/user
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/url_pattern_set.cc
@@ -0,0 +1,335 @@
@@ -0,0 +1,229 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
@@ -5923,7 +5923,6 @@ new file mode 100755
+#include "base/containers/contains.h"
+#include "base/logging.h"
+#include "base/stl_util.h"
+#include "base/values.h"
+#include "error_utils.h"
+#include "url_pattern.h"
+#include "url/gurl.h"
@@ -5939,111 +5938,6 @@ new file mode 100755
+
+} // namespace
+
+// static
+URLPatternSet URLPatternSet::CreateDifference(const URLPatternSet& set1,
+ const URLPatternSet& set2) {
+ return URLPatternSet(base::STLSetDifference<std::set<URLPattern>>(
+ set1.patterns_, set2.patterns_));
+}
+
+// static
+URLPatternSet URLPatternSet::CreateIntersection(
+ const URLPatternSet& set1,
+ const URLPatternSet& set2,
+ IntersectionBehavior intersection_behavior) {
+ // Note: leverage return value optimization; always return the same object.
+ URLPatternSet result;
+
+ if (intersection_behavior == IntersectionBehavior::kStringComparison) {
+ // String comparison just relies on STL set behavior, which looks at the
+ // string representation.
+ result = URLPatternSet(base::STLSetIntersection<std::set<URLPattern>>(
+ set1.patterns_, set2.patterns_));
+ return result;
+ }
+
+ // Look for a semantic intersection.
+
+ // Step 1: Iterate over each set. Find any patterns that are completely
+ // contained by the other (thus being necessarily present in any intersection)
+ // and add them, collecting the others in a set of unique items.
+ // Note: Use a collection of pointers for the uniques to avoid excessive
+ // copies. Since these are owned by the URLPatternSet passed in, which is
+ // const, this should be safe.
+ std::vector<const URLPattern*> unique_set1;
+ for (const URLPattern& pattern : set1) {
+ if (set2.ContainsPattern(pattern))
+ result.patterns_.insert(pattern);
+ else
+ unique_set1.push_back(&pattern);
+ }
+ std::vector<const URLPattern*> unique_set2;
+ for (const URLPattern& pattern : set2) {
+ if (set1.ContainsPattern(pattern))
+ result.patterns_.insert(pattern);
+ else
+ unique_set2.push_back(&pattern);
+ }
+
+ // If we're just looking for patterns contained by both, we're done.
+ if (intersection_behavior == IntersectionBehavior::kPatternsContainedByBoth)
+ return result;
+
+ DCHECK_EQ(IntersectionBehavior::kDetailed, intersection_behavior);
+
+ // Step 2: Iterate over all the unique patterns and find the intersections
+ // they have with the other patterns.
+ for (const auto* pattern : unique_set1) {
+ for (const auto* pattern2 : unique_set2) {
+ std::optional<URLPattern> intersection =
+ pattern->CreateIntersection(*pattern2);
+ if (intersection)
+ result.patterns_.insert(std::move(*intersection));
+ }
+ }
+
+ return result;
+}
+
+// static
+URLPatternSet URLPatternSet::CreateUnion(const URLPatternSet& set1,
+ const URLPatternSet& set2) {
+ return URLPatternSet(
+ base::STLSetUnion<std::set<URLPattern>>(set1.patterns_, set2.patterns_));
+}
+
+// static
+URLPatternSet URLPatternSet::CreateUnion(
+ const std::vector<URLPatternSet>& sets) {
+ URLPatternSet result;
+ if (sets.empty())
+ return result;
+
+ // N-way union algorithm is basic O(nlog(n)) merge algorithm.
+ //
+ // Do the first merge step into a working set so that we don't mutate any of
+ // the input.
+ // TODO(devlin): Looks like this creates a bunch of copies; we can probably
+ // clean that up.
+ std::vector<URLPatternSet> working;
+ for (size_t i = 0; i < sets.size(); i += 2) {
+ if (i + 1 < sets.size())
+ working.push_back(CreateUnion(sets[i], sets[i + 1]));
+ else
+ working.push_back(sets[i].Clone());
+ }
+
+ for (size_t skip = 1; skip < working.size(); skip *= 2) {
+ for (size_t i = 0; i < (working.size() - skip); i += skip) {
+ URLPatternSet u = CreateUnion(working[i], working[i + skip]);
+ working[i].patterns_.swap(u.patterns_);
+ }
+ }
+
+ result.patterns_.swap(working[0].patterns_);
+ return result;
+}
+
+URLPatternSet::URLPatternSet() = default;
+
+URLPatternSet::URLPatternSet(URLPatternSet&& rhs) = default;
@@ -6250,7 +6144,7 @@ diff --git a/components/user_scripts/common/url_pattern_set.h b/components/user_
new file mode 100755
--- /dev/null
+++ b/components/user_scripts/common/url_pattern_set.h
@@ -0,0 +1,160 @@
@@ -0,0 +1,103 @@
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
@@ -6261,7 +6155,6 @@ new file mode 100755
+#include <stddef.h>
+
+#include <iosfwd>
+#include <memory>
+#include <set>
+
+#include "base/values.h"
@@ -6278,64 +6171,8 @@ new file mode 100755
+// Represents the set of URLs an extension uses for web content.
+class URLPatternSet {
+ public:
+ URLPatternSet(const URLPatternSet&) = delete;
+ URLPatternSet& operator=(const URLPatternSet&) = delete;
+ typedef std::set<URLPattern>::const_iterator const_iterator;
+ typedef std::set<URLPattern>::iterator iterator;
+
+ // Returns |set1| - |set2|.
+ static URLPatternSet CreateDifference(const URLPatternSet& set1,
+ const URLPatternSet& set2);
+
+ enum class IntersectionBehavior {
+ // For the following descriptions, consider the two URLPatternSets:
+ // Set 1: {"https://example.com/*", "https://*.google.com/*", "http://*/*"}
+ // Set 2: {"https://example.com/*", "https://google.com/maps",
+ // "*://chromium.org/*"}
+
+ // Only includes patterns that are exactly in both sets. The intersection of
+ // the two sets above is {"https://example.com/*"}, since that is the only
+ // pattern that appears exactly in each.
+ kStringComparison,
+
+ // Includes patterns that are effectively contained by both sets. The
+ // intersection of the two sets above is
+ // {
+ // "https://example.com/*" (contained exactly by each set)
+ // "https://google.com/maps" (contained exactly by set 2 and a strict
+ // subset of https://*.google.com/* in set 1)
+ // }
+ kPatternsContainedByBoth,
+
+ // Includes patterns that are contained by both sets and creates new
+ // patterns to represent the intersection of any others. The intersection of
+ // the two sets above is
+ // {
+ // "https://example.com/*" (contained exactly by each set)
+ // "https://google.com/maps" (contained exactly by set 2 and a strict
+ // subset of https://*.google.com/* in set 1)
+ // "http://chromium.org/*" (the overlap between "http://*/*" in set 1 and
+ // *://chromium.org/*" in set 2).
+ // }
+ // Note that this is the most computationally expensive - potentially
+ // O(n^2) - since it can require comparing each pattern in one set to every
+ // pattern in the other set.
+ kDetailed,
+ };
+
+ // Returns the intersection of |set1| and |set2| according to
+ // |intersection_behavior|.
+ static URLPatternSet CreateIntersection(
+ const URLPatternSet& set1,
+ const URLPatternSet& set2,
+ IntersectionBehavior intersection_behavior);
+
+ // Returns the union of |set1| and |set2|.
+ static URLPatternSet CreateUnion(const URLPatternSet& set1,
+ const URLPatternSet& set2);
+
+ // Returns the union of all sets in |sets|.
+ static URLPatternSet CreateUnion(const std::vector<URLPatternSet>& sets);
+ using const_iterator = std::set<URLPattern>::const_iterator;
+ using iterator = std::set<URLPattern>::iterator;
+
+ URLPatternSet();
+ URLPatternSet(URLPatternSet&& rhs);
+48 -48
View File
@@ -201,7 +201,7 @@ diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/browser/adblock/adblock_content_browser_client.cc
--- a/chrome/browser/adblock/adblock_content_browser_client.cc
+++ b/chrome/browser/adblock/adblock_content_browser_client.cc
@@ -24,6 +24,8 @@
@@ -23,6 +23,8 @@
#include "chrome/browser/adblock/resource_classification_runner_factory.h"
#include "chrome/browser/adblock/sitekey_storage_factory.h"
#include "chrome/browser/adblock/subscription_service_factory.h"
@@ -210,7 +210,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/browser_navigator_params.h"
#include "components/adblock/content/browser/adblock_url_loader_factory.h"
@@ -41,6 +43,7 @@
@@ -40,6 +42,7 @@
#include "content/public/browser/web_contents.h"
#include "mojo/public/cpp/bindings/self_owned_receiver.h"
#include "services/network/public/mojom/websocket.mojom.h"
@@ -218,7 +218,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
#include "services/service_manager/public/cpp/binder_registry.h"
#include "third_party/blink/public/common/loader/url_loader_throttle.h"
@@ -54,17 +57,41 @@
@@ -53,17 +56,41 @@
namespace {
@@ -242,7 +242,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
+ }
+ // Filtering may be needed if there's at least one enabled
+ // FilteringConfiguration.
+ bool ret = base::ranges::any_of(
+ bool ret = std::ranges::any_of(
+ adblock::SubscriptionServiceFactory::GetForBrowserContext(profile)
+ ->GetInstalledFilteringConfigurations(),
+ &adblock::FilteringConfiguration::IsEnabled);
@@ -266,7 +266,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
}
}
return false;
@@ -79,10 +106,11 @@ class AdblockContextData : public base::SupportsUserData::Data {
@@ -78,10 +105,11 @@ class AdblockContextData : public base::SupportsUserData::Data {
static void StartProxying(
Profile* profile,
@@ -280,7 +280,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
bool use_test_loader) {
const void* const kAdblockContextUserDataKey = &kAdblockContextUserDataKey;
auto* self = static_cast<AdblockContextData*>(
@@ -91,8 +119,6 @@ class AdblockContextData : public base::SupportsUserData::Data {
@@ -90,8 +118,6 @@ class AdblockContextData : public base::SupportsUserData::Data {
self = new AdblockContextData();
profile->SetUserData(kAdblockContextUserDataKey, base::WrapUnique(self));
}
@@ -289,7 +289,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
adblock::AdblockURLLoaderFactoryConfig config{
adblock::SubscriptionServiceFactory::GetForBrowserContext(
browser_context),
@@ -102,28 +128,12 @@ class AdblockContextData : public base::SupportsUserData::Data {
@@ -101,28 +127,12 @@ class AdblockContextData : public base::SupportsUserData::Data {
adblock::SitekeyStorageFactory::GetForBrowserContext(browser_context),
adblock::ContentSecurityPolicyInjectorFactory::GetForBrowserContext(
browser_context)};
@@ -321,7 +321,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
embedder_support::GetUserAgent(),
base::BindOnce(&AdblockContextData::RemoveProxy,
self->weak_factory_.GetWeakPtr()));
@@ -163,47 +173,50 @@ void AdblockContentBrowserClient::ForceAdblockProxyForTesting() {
@@ -162,47 +172,50 @@ void AdblockContentBrowserClient::ForceAdblockProxyForTesting() {
#endif
bool AdblockContentBrowserClient::WillInterceptWebSocket(
@@ -389,7 +389,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
auto* subscription_service =
adblock::SubscriptionServiceFactory::GetForBrowserContext(
browser_context);
@@ -211,33 +224,33 @@ void AdblockContentBrowserClient::CreateWebSocketInternal(
@@ -210,33 +223,33 @@ void AdblockContentBrowserClient::CreateWebSocketInternal(
adblock::ResourceClassificationRunnerFactory::GetForBrowserContext(
browser_context);
classification_runner->CheckRequestFilterMatchForWebSocket(
@@ -431,7 +431,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
std::move(handshake_client));
return;
}
@@ -254,15 +267,134 @@ void AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted(
@@ -253,15 +266,134 @@ void AdblockContentBrowserClient::OnWebSocketFilterCheckCompleted(
VLOG(1) << "[eyeo] Web socket blocked for " << url;
}
@@ -568,7 +568,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
mojo::PendingRemote<network::mojom::TrustedURLLoaderHeaderClient>*
header_client,
bool* bypass_redirect_checks,
@@ -271,30 +403,17 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
@@ -270,30 +402,17 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner) {
// Create Chromium proxy first as WebRequestProxyingURLLoaderFactory logic
// depends on being first proxy
@@ -608,7 +608,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
bool use_test_loader = false;
#ifdef EYEO_INTERCEPT_DEBUG_URL
@@ -309,12 +428,8 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
@@ -308,12 +427,8 @@ bool AdblockContentBrowserClient::WillCreateURLLoaderFactory(
#endif
if (use_adblock_proxy) {
@@ -2660,7 +2660,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
}
} // namespace
@@ -186,8 +186,13 @@ class AdblockURLLoaderFactory::InProgressRequest
@@ -184,8 +184,13 @@ class AdblockURLLoaderFactory::InProgressRequest
void OnRequestError(int error_code);
void CheckFilterMatch(CheckFilterMatchCallback callback);
void ProcessResponseHeaders(
@@ -2674,7 +2674,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
void CheckRewriteFilterMatch(CheckRewriteFilterMatchCallback callback);
void OnRequestUrlClassified(CheckFilterMatchCallback callback,
FilterMatchResult result);
@@ -307,7 +312,9 @@ void AdblockURLLoaderFactory::InProgressRequest::OnReceiveResponse(
@@ -293,7 +298,9 @@ void AdblockURLLoaderFactory::InProgressRequest::OnReceiveResponse(
VLOG(1) << "[eyeo] Sending headers for processing: " << request_url_;
client_receiver_.Pause();
const scoped_refptr<net::HttpResponseHeaders>& headers = head->headers;
@@ -2684,7 +2684,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
headers, base::BindOnce(&InProgressRequest::OnProcessHeadersResult,
weak_factory_.GetWeakPtr(), std::move(head),
std::move(body), std::move(cached_metadata)));
@@ -344,12 +351,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError(
@@ -330,12 +337,6 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestError(
void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
CheckFilterMatchCallback callback) {
@@ -2697,7 +2697,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
auto subscription_service = factory_->config_.subscription_service;
if (is_document_request_) {
auto* host = content::RenderFrameHost::FromID(factory_->host_id_);
@@ -386,9 +387,10 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
@@ -372,9 +373,10 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
FilterMatchResult::kNoRule);
}
} else {
@@ -2710,7 +2710,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
base::BindOnce(
&AdblockURLLoaderFactory::InProgressRequest::OnRequestUrlClassified,
weak_factory_.GetWeakPtr(),
@@ -399,6 +401,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
@@ -385,6 +387,7 @@ void AdblockURLLoaderFactory::InProgressRequest::CheckFilterMatch(
}
void AdblockURLLoaderFactory::InProgressRequest::ProcessResponseHeaders(
@@ -2718,7 +2718,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
const scoped_refptr<net::HttpResponseHeaders>& headers,
ProcessResponseHeadersCallback callback) {
if (!factory_->CheckHostValid()) {
@@ -407,6 +410,36 @@ void AdblockURLLoaderFactory::InProgressRequest::ProcessResponseHeaders(
@@ -393,6 +396,36 @@ void AdblockURLLoaderFactory::InProgressRequest::ProcessResponseHeaders(
return;
}
@@ -2755,7 +2755,7 @@ 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_,
@@ -677,12 +710,13 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult(
@@ -663,12 +696,13 @@ void AdblockURLLoaderFactory::InProgressRequest::OnRequestFilterMatchResult(
AdblockURLLoaderFactory::AdblockURLLoaderFactory(
AdblockURLLoaderFactoryConfig config,
@@ -2771,7 +2771,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
host_id_(host_id),
user_agent_string_(std::move(user_agent_string)),
on_disconnect_(std::move(on_disconnect)) {
@@ -691,10 +725,12 @@ AdblockURLLoaderFactory::AdblockURLLoaderFactory(
@@ -677,10 +711,12 @@ AdblockURLLoaderFactory::AdblockURLLoaderFactory(
DCHECK(config_.element_hider);
DCHECK(config_.sitekey_storage);
DCHECK(config_.csp_injector);
@@ -3685,7 +3685,7 @@ deleted file mode 100644
diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adblock/core/adblock_controller_impl.cc
--- a/components/adblock/core/adblock_controller_impl.cc
+++ b/components/adblock/core/adblock_controller_impl.cc
@@ -103,6 +103,7 @@ bool AdblockControllerImpl::IsAdblockEnabled() const {
@@ -102,6 +102,7 @@ bool AdblockControllerImpl::IsAdblockEnabled() const {
}
void AdblockControllerImpl::SetAcceptableAdsEnabled(bool enabled) {
@@ -3693,7 +3693,7 @@ diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adb
if (enabled) {
InstallSubscription(AcceptableAdsUrl());
} else {
@@ -117,6 +118,7 @@ bool AdblockControllerImpl::IsAcceptableAdsEnabled() const {
@@ -116,6 +117,7 @@ bool AdblockControllerImpl::IsAcceptableAdsEnabled() const {
}
void AdblockControllerImpl::InstallSubscription(const GURL& url) {
@@ -3701,7 +3701,7 @@ diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adb
adblock_filtering_configuration_->AddFilterList(url);
}
@@ -165,10 +167,8 @@ void AdblockControllerImpl::RunFirstRunLogic(PrefService* pref_service) {
@@ -164,10 +166,8 @@ void AdblockControllerImpl::RunFirstRunLogic(PrefService* pref_service) {
common::prefs::kInstallFirstStartSubscriptions)) {
// On first run, install additional subscriptions.
for (const auto& cur : known_subscriptions_) {
@@ -3714,7 +3714,7 @@ diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adb
// Do not install Acceptable Ads on first run because a command line
// switch forbids it. Mostly used for testing.
continue;
@@ -236,7 +236,7 @@ void AdblockControllerImpl::InstallLanguageBasedRecommendedSubscriptions() {
@@ -235,7 +235,7 @@ void AdblockControllerImpl::InstallLanguageBasedRecommendedSubscriptions() {
SubscriptionFirstRunBehavior::SubscribeIfLocaleMatch &&
std::find(subscription.languages.begin(), subscription.languages.end(),
language_) != subscription.languages.end()) {
@@ -4373,7 +4373,7 @@ diff --git a/components/adblock/core/converter/flatbuffer_converter.cc b/compone
diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/adblock/core/converter/parser/metadata.cc
--- a/components/adblock/core/converter/parser/metadata.cc
+++ b/components/adblock/core/converter/parser/metadata.cc
@@ -58,13 +58,6 @@ std::optional<Metadata> Metadata::FromStream(std::istream& filter_stream) {
@@ -57,13 +57,6 @@ std::optional<Metadata> Metadata::FromStream(std::istream& filter_stream) {
if (key == "homepage") {
homepage = value;
} else if (key == "redirect") {
@@ -4387,7 +4387,7 @@ diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/a
} else if (key == "title") {
title = value;
} else if (key == "version") {
@@ -107,6 +100,7 @@ Metadata::~Metadata() = default;
@@ -106,6 +99,7 @@ Metadata::~Metadata() = default;
// static
bool Metadata::IsValidAdblockHeader(const std::string& adblock_header) {
@@ -4395,7 +4395,7 @@ diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/a
static re2::RE2 adblock_header_re("^\\[Adblock.*\\]");
std::string adblock_header_trimmed;
@@ -131,7 +125,7 @@ base::TimeDelta Metadata::ParseExpirationTime(
@@ -130,7 +124,7 @@ base::TimeDelta Metadata::ParseExpirationTime(
if (!re2::RE2::FullMatch(expiration_value, expiration_time_re,
&expiration_time, &expiration_unit)) {
@@ -4947,7 +4947,7 @@ diff --git a/components/adblock/core/subscription/ongoing_subscription_request_i
diff --git a/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc
--- a/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc
+++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc
@@ -62,10 +62,10 @@ class PreloadedSubscriptionProviderImpl::SingleSubscriptionProvider {
@@ -61,10 +61,10 @@ class PreloadedSubscriptionProviderImpl::SingleSubscriptionProvider {
utils::MakeFlatbufferDataFromResourceBundle(
info_.flatbuffer_resource_id),
Subscription::InstallationState::Preloaded, base::Time());
@@ -5007,7 +5007,7 @@ diff --git a/components/adblock/core/subscription/subscription.h b/components/ad
diff --git a/components/adblock/core/subscription/subscription_collection_impl.cc b/components/adblock/core/subscription/subscription_collection_impl.cc
--- a/components/adblock/core/subscription/subscription_collection_impl.cc
+++ b/components/adblock/core/subscription/subscription_collection_impl.cc
@@ -342,6 +342,7 @@ std::set<HeaderFilterData> SubscriptionCollectionImpl::GetHeaderFilters(
@@ -341,6 +341,7 @@ std::set<HeaderFilterData> SubscriptionCollectionImpl::GetHeaderFilters(
ContentType content_type,
FilterCategory category) const {
std::set<HeaderFilterData> filters{};
@@ -5124,7 +5124,7 @@ diff --git a/components/adblock/core/subscription/subscription_config.h b/compon
diff --git a/components/adblock/core/subscription/subscription_downloader_impl.cc b/components/adblock/core/subscription/subscription_downloader_impl.cc
--- a/components/adblock/core/subscription/subscription_downloader_impl.cc
+++ b/components/adblock/core/subscription/subscription_downloader_impl.cc
@@ -55,6 +55,7 @@ GURL AddUrlParameters(const GURL& subscription_url,
@@ -54,6 +54,7 @@ GURL AddUrlParameters(const GURL& subscription_url,
const SubscriptionPersistentMetadata* persistent_metadata,
const utils::AppInfo& client_metadata,
const bool is_disabled) {
@@ -5132,7 +5132,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
const std::string query = base::StrCat(
{"addonName=", "eyeo-chromium-sdk", "&addonVersion=", "1.0",
"&application=", base::EscapeQueryParamValue(client_metadata.name, true),
@@ -115,6 +116,8 @@ void SubscriptionDownloaderImpl::StartDownload(
@@ -114,6 +115,8 @@ void SubscriptionDownloaderImpl::StartDownload(
}
void SubscriptionDownloaderImpl::CancelDownload(const GURL& subscription_url) {
@@ -5141,7 +5141,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
ongoing_downloads_.erase(subscription_url);
}
@@ -139,10 +142,6 @@ void SubscriptionDownloaderImpl::DoHeadRequest(
@@ -138,10 +141,6 @@ void SubscriptionDownloaderImpl::DoHeadRequest(
bool SubscriptionDownloaderImpl::IsUrlAllowed(
const GURL& subscription_url) const {
@@ -5152,7 +5152,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
if (!subscription_url.SchemeIs("https") &&
!subscription_url.SchemeIs("data")) {
return false;
@@ -156,12 +155,14 @@ void SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded(
@@ -155,12 +154,14 @@ void SubscriptionDownloaderImpl::OnHeadersOnlyDownloaded(
scoped_refptr<net::HttpResponseHeaders> headers) {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
DCHECK(ongoing_ping_.has_value());
@@ -5170,7 +5170,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
}
std::move(std::get<HeadRequestCallback>(*ongoing_ping_))
@@ -192,11 +193,11 @@ void SubscriptionDownloaderImpl::OnDownloadFinished(
@@ -191,11 +192,11 @@ void SubscriptionDownloaderImpl::OnDownloadFinished(
persistent_metadata_->IncrementDownloadErrorCount(subscription_url);
if (std::get<RetryPolicy>(download_it->second) ==
RetryPolicy::RetryUntilSucceeded) {
@@ -5184,7 +5184,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
<< subscription_url << ", will abort";
std::move(std::get<DownloadCompletedCallback>(download_it->second))
.Run(nullptr);
@@ -213,8 +214,10 @@ void SubscriptionDownloaderImpl::OnDownloadFinished(
@@ -212,8 +213,10 @@ void SubscriptionDownloaderImpl::OnDownloadFinished(
TRACE_ID_LOCAL(GenerateTraceId(subscription_url)), "url",
subscription_url.spec());
@@ -5196,7 +5196,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
base::BindOnce(&SubscriptionDownloaderImpl::OnConversionFinished,
weak_ptr_factory_.GetWeakPtr(), subscription_url));
}
@@ -228,14 +231,14 @@ void SubscriptionDownloaderImpl::OnConversionFinished(
@@ -227,14 +230,14 @@ void SubscriptionDownloaderImpl::OnConversionFinished(
TRACE_ID_LOCAL(GenerateTraceId(subscription_url)));
const auto download_it = ongoing_downloads_.find(subscription_url);
if (download_it == ongoing_downloads_.end()) {
@@ -5213,7 +5213,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
<< " successfully";
std::move(std::get<DownloadCompletedCallback>(download_it->second))
.Run(std::move(
@@ -278,7 +281,7 @@ void SubscriptionDownloaderImpl::AbortWithWarning(
@@ -277,7 +280,7 @@ void SubscriptionDownloaderImpl::AbortWithWarning(
if (ongoing_download_it == ongoing_downloads_.end()) {
return;
}
@@ -5338,7 +5338,7 @@ diff --git a/components/adblock/core/subscription/subscription_service.h b/compo
diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b/components/adblock/core/subscription/subscription_service_impl.cc
--- a/components/adblock/core/subscription/subscription_service_impl.cc
+++ b/components/adblock/core/subscription/subscription_service_impl.cc
@@ -36,9 +36,23 @@
@@ -35,9 +35,23 @@
#include "components/adblock/core/subscription/filtering_configuration_maintainer.h"
#include "components/adblock/core/subscription/subscription_collection.h"
#include "components/adblock/core/subscription/subscription_service.h"
@@ -5351,7 +5351,7 @@ diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b
+bool IsKnownSubscription(
+ const std::vector<KnownSubscriptionInfo>& known_subscriptions,
+ const GURL& url) {
+ return base::ranges::any_of(known_subscriptions,
+ return std::ranges::any_of(known_subscriptions,
+ [&](const auto& known_subscription) {
+ return known_subscription.url == url;
+ });
@@ -5362,7 +5362,7 @@ diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b
class EmptySubscription : public Subscription {
public:
EmptySubscription(const GURL& url) : url_(url) {}
@@ -133,6 +147,68 @@ void SubscriptionServiceImpl::UninstallFilteringConfiguration(
@@ -132,6 +146,68 @@ void SubscriptionServiceImpl::UninstallFilteringConfiguration(
maintainers_.erase(it);
}
@@ -5402,12 +5402,12 @@ diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b
+ GetCurrentSubscriptions(configuration);
+
+ auto known_subscriptions = adblock::config::GetKnownSubscriptions();
+ selected.erase(base::ranges::remove_if(selected,
+ [&](const auto& subscription) {
+ return IsKnownSubscription(
+ known_subscriptions,
+ subscription->GetSourceUrl());
+ }),
+ selected.erase(std::remove_if(selected.begin(), selected.end(),
+ [&known_subscriptions](const auto& subscription) {
+ return IsKnownSubscription(
+ known_subscriptions,
+ subscription->GetSourceUrl());
+ }),
+ selected.end());
+ return selected;
+}
@@ -5419,7 +5419,7 @@ diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b
+raw_ptr<SubscriptionPersistentMetadata> SubscriptionServiceImpl::GetMetadataFor(
+ raw_ptr<FilteringConfiguration> configuration) {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) {
+ auto it = std::ranges::find_if(maintainers_, [&](const auto& entry) {
+ return entry.first.get() == configuration;
+ });
+ if (it != maintainers_.end() && it->second) {
@@ -5431,7 +5431,7 @@ diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b
std::vector<FilteringConfiguration*>
SubscriptionServiceImpl::GetInstalledFilteringConfigurations() {
std::vector<FilteringConfiguration*> result;
@@ -178,7 +254,7 @@ void SubscriptionServiceImpl::OnEnabledStateChanged(
@@ -177,7 +253,7 @@ void SubscriptionServiceImpl::OnEnabledStateChanged(
});
DCHECK(it != maintainers_.end()) << "Received OnEnabledStateChanged from "
"unregistered FilteringConfiguration";
@@ -7,9 +7,9 @@ License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
chrome/browser/net/profile_network_context_service.cc | 8 ++++++++
.../browser_features_cc/Lock-Profile-Cookie-Database.inc | 7 +++++++
.../browser_features_h/Lock-Profile-Cookie-Database.inc | 5 +++++
services/network/network_context.cc | 4 +++-
services/network/network_context.cc | 2 +-
services/network/public/mojom/network_context.mojom | 8 ++++++++
5 files changed, 31 insertions(+), 1 deletion(-)
5 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 cromite_flags/chrome/browser/browser_features_cc/Lock-Profile-Cookie-Database.inc
create mode 100644 cromite_flags/chrome/browser/browser_features_h/Lock-Profile-Cookie-Database.inc
@@ -56,14 +56,12 @@ new file mode 100644
diff --git a/services/network/network_context.cc b/services/network/network_context.cc
--- a/services/network/network_context.cc
+++ b/services/network/network_context.cc
@@ -3070,7 +3070,9 @@ NetworkContext::MakeSessionCleanupCookieStore() const {
@@ -3070,7 +3070,7 @@ NetworkContext::MakeSessionCleanupCookieStore() const {
#if BUILDFLAG(IS_WIN)
const bool enable_exclusive_access =
- network_service()->exclusive_cookie_database_locking();
+ params_->enable_locking_cookie_database.value_or(
+ base::FeatureList::IsEnabled(
+ features::kEnableLockCookieDatabaseByDefault));
+ params_->enable_locking_cookie_database.value_or(true);
#else
const bool enable_exclusive_access = false;
#endif // BUILDFLAG(IS_WIN)
+116 -53
View File
@@ -26,9 +26,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../TabListEmptyCoordinator.java | 17 +-
.../browser/feed/FeedSurfaceCoordinator.java | 4 +
.../ChromeAccessibilitySettingsDelegate.java | 70 ++++++++
.../chrome/browser/app/ChromeActivity.java | 3 +
.../compositor/CompositorViewHolder.java | 7 +
.../layouts/LayoutManagerChrome.java | 17 +-
.../layouts/LayoutManagerChrome.java | 12 +-
.../layouts/LayoutManagerChromeTablet.java | 4 +-
.../layouts/ToolbarSwipeLayout.java | 14 +-
.../overlays/strip/ScrollDelegate.java | 2 +-
@@ -67,12 +66,14 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
chrome/browser/prefs/browser_prefs.cc | 2 +-
.../chrome/browser/ui/appmenu/AppMenu.java | 40 ++++-
.../ui/appmenu/AppMenuHandlerImpl.java | 10 ++
...mniboxSuggestionsDropdownEmbedderImpl.java | 18 ++
.../suggestions/AutocompleteCoordinator.java | 13 ++
...rredIMEWindowInsetApplicationCallback.java | 7 +
.../omnibox/LocationBarCoordinator.java | 1 +
...mniboxSuggestionsDropdownEmbedderImpl.java | 22 +++
.../suggestions/AutocompleteCoordinator.java | 14 ++
.../suggestions/AutocompleteMediator.java | 6 +-
.../DropdownItemViewInfoListManager.java | 1 +
.../OmniboxSuggestionsDropdown.java | 11 +-
.../OmniboxSuggestionsDropdownEmbedder.java | 4 +
.../OmniboxSuggestionsDropdownEmbedder.java | 6 +
.../base/BaseSuggestionViewBinder.java | 7 +
.../strings/android_chrome_strings.grd | 6 +
chrome/browser/ui/android/toolbar/BUILD.gn | 1 +
@@ -88,11 +89,11 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../top/TopToolbarOverlayProperties.java | 8 +-
.../toolbar/top/TopToolbarSceneLayer.java | 10 +-
.../res/xml/accessibility_preferences.xml | 8 +
.../accessibility/AccessibilitySettings.java | 26 +++
.../accessibility/AccessibilitySettings.java | 27 +++
.../AccessibilitySettingsDelegate.java | 8 +
.../render_widget_host_view_android.cc | 3 +
.../Move-navigation-bar-to-bottom.inc | 17 ++
79 files changed, 1013 insertions(+), 77 deletions(-)
80 files changed, 1021 insertions(+), 77 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
@@ -791,19 +792,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/accessibility/s
@Override
public BrowserContextHandle getBrowserContextHandle() {
return mProfile;
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java
@@ -248,6 +248,9 @@ import org.chromium.webapk.lib.client.WebApkNavigationClient;
import java.util.ArrayList;
import java.util.List;
+import android.widget.ImageView;
+import android.view.ViewGroup.LayoutParams;
+
/**
* A {@link AsyncInitializationActivity} that builds and manages a {@link CompositorViewHolder} and
* associated classes.
diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
--- a/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
+++ b/chrome/android/java/src/org/chromium/chrome/browser/compositor/CompositorViewHolder.java
@@ -839,19 +827,18 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
import java.util.List;
@@ -154,7 +155,10 @@ public class LayoutManagerChrome extends LayoutManagerImpl
@@ -154,7 +155,9 @@ public class LayoutManagerChrome extends LayoutManagerImpl
@Override
public SwipeHandler createToolbarSwipeHandler(boolean supportsSwipeToShowTabSwitcher) {
- return new ToolbarSwipeHandler(supportsSwipeToShowTabSwitcher);
+ boolean move_top_toolbar =
+ ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled();
+ return new ToolbarSwipeHandler(supportsSwipeToShowTabSwitcher && !move_top_toolbar,
+ supportSwipeDown && move_top_toolbar);
+ return new ToolbarSwipeHandler(
+ supportsSwipeToShowTabSwitcher || ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled(),
+ !ChromeFeatureList.sDisableToolbarSwipeUp.isEnabled());
}
@Override
@@ -364,9 +368,11 @@ public class LayoutManagerChrome extends LayoutManagerImpl
@@ -364,9 +367,11 @@ public class LayoutManagerChrome extends LayoutManagerImpl
private static final float SWIPE_RANGE_DEG = 25;
private final boolean mSupportsSwipeToShowTabSwitcher;
@@ -864,24 +851,13 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/compositor/layo
}
@Override
@@ -394,6 +400,10 @@ public class LayoutManagerChrome extends LayoutManagerImpl
mScrollDirection = computeScrollDirection(dx, dy);
if (mScrollDirection == ScrollDirection.UNKNOWN) return;
+ } else if (mSupportSwipeUp
+ && mScrollDirection == ScrollDirection.UP
+ && !ChromeFeatureList.sDisableToolbarSwipeUp.isEnabled()) {
+ showLayout(LayoutType.TAB_SWITCHER, true);
if (mScrollDirection == ScrollDirection.LEFT
|| mScrollDirection == ScrollDirection.RIGHT) {
startShowing(mToolbarSwipeLayout, true);
@@ -473,7 +483,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl
@@ -473,7 +478,8 @@ public class LayoutManagerChrome extends LayoutManagerImpl
return direction == showTabSwitcherScrollDirection
|| direction == ScrollDirection.LEFT
- || direction == ScrollDirection.RIGHT;
+ || direction == ScrollDirection.RIGHT
+ || direction == ScrollDirection.UP;
+ || (direction == ScrollDirection.UP && mSupportSwipeUp);
}
}
@@ -1755,7 +1731,7 @@ diff --git a/chrome/browser/android/compositor/scene_layer/tab_strip_scene_layer
- layer()->SetPosition(gfx::PointF(0, y_offset));
+ if (base::FeatureList::IsEnabled(::features::kMoveTopToolbarToBottom)) {
+ // do not move the whole layer (which also contains the contents) but only the tab strip layer
+ tab_strip_layer_->SetPosition(gfx::PointF(0, y_offset));
+ background_layer_->SetPosition(gfx::PointF(0, y_offset));
+ } else {
+ layer()->SetPosition(gfx::PointF(0, y_offset));
+ }
@@ -2243,6 +2219,53 @@ diff --git a/chrome/browser/ui/android/appmenu/internal/java/src/org/chromium/ch
ContextThemeWrapper wrapper =
new ContextThemeWrapper(mContext, R.style.OverflowMenuThemeOverlay);
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/DeferredIMEWindowInsetApplicationCallback.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/DeferredIMEWindowInsetApplicationCallback.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/DeferredIMEWindowInsetApplicationCallback.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/DeferredIMEWindowInsetApplicationCallback.java
@@ -32,6 +32,7 @@ public class DeferredIMEWindowInsetApplicationCallback
private static final int NO_DEFERRED_KEYBOARD_HEIGHT = -1;
private int mDeferredKeyboardHeight = NO_DEFERRED_KEYBOARD_HEIGHT;
private int mKeyboardHeight;
+ private int mSystemBarInsetsBottom;
private boolean mAnimationInProgress;
private WindowInsetsAnimationCompat mCurrentAnimation;
private InsetObserver mInsetObserver;
@@ -86,6 +87,10 @@ public class DeferredIMEWindowInsetApplicationCallback
return mKeyboardHeight;
}
+ public int getSystemBarInsetsBottom() {
+ return mSystemBarInsetsBottom;
+ }
+
@Override
public void onPrepare(@NonNull WindowInsetsAnimationCompat animation) {
if ((animation.getTypeMask() & WindowInsetsCompat.Type.ime()) == 0) return;
@@ -121,11 +126,13 @@ public class DeferredIMEWindowInsetApplicationCallback
public WindowInsetsCompat onApplyWindowInsets(
@NonNull View view, @NonNull WindowInsetsCompat windowInsetsCompat) {
int newKeyboardHeight = 0;
+ mSystemBarInsetsBottom = 0;
Insets imeInsets = windowInsetsCompat.getInsets(WindowInsetsCompat.Type.ime());
if (imeInsets.bottom > 0) {
Insets systemBarInsets =
windowInsetsCompat.getInsets(WindowInsetsCompat.Type.systemBars());
newKeyboardHeight = imeInsets.bottom - systemBarInsets.bottom;
+ mSystemBarInsetsBottom = systemBarInsets.bottom;
}
// Keyboard going away or the change is not animated; apply immediately.
if (newKeyboardHeight < mKeyboardHeight || !mAnimationInProgress) {
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/LocationBarCoordinator.java
@@ -206,6 +206,7 @@ public class LocationBarCoordinator
uiOverrides.isForcedPhoneStyleOmnibox(),
baseChromeLayout,
deferredIMEWindowInsetApplicationCallback::getCurrentKeyboardHeight,
+ deferredIMEWindowInsetApplicationCallback::getSystemBarInsetsBottom,
bottomWindowPaddingSupplier);
mUrlBar = mLocationBarLayout.findViewById(R.id.url_bar);
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/OmniboxSuggestionsDropdownEmbedderImpl.java
@@ -2262,7 +2285,30 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
import org.chromium.ui.base.DeviceFormFactor;
import org.chromium.ui.base.ViewUtils;
import org.chromium.ui.base.WindowAndroid;
@@ -108,6 +110,11 @@ class OmniboxSuggestionsDropdownEmbedderImpl
@@ -44,6 +46,7 @@ class OmniboxSuggestionsDropdownEmbedderImpl
private final @NonNull View mAlignmentView;
private final boolean mForcePhoneStyleOmnibox;
private final Supplier<Integer> mKeyboardHeightSupplier;
+ private final Supplier<Integer> mSystemBarInsetsBottomSupplier;
private final Supplier<Integer> mBottomWindowPaddingSupplier;
private final @NonNull Context mContext;
// Reusable int array to pass to positioning methods that operate on a two element int array.
@@ -82,12 +85,14 @@ class OmniboxSuggestionsDropdownEmbedderImpl
boolean forcePhoneStyleOmnibox,
@Nullable View baseChromeLayout,
Supplier<Integer> keyboardHeightSupplier,
+ Supplier<Integer> systemBarInsetsBottomSupplier,
Supplier<Integer> bottomWindowPaddingSupplier) {
mWindowAndroid = windowAndroid;
mAnchorView = anchorView;
mAlignmentView = alignmentView;
mForcePhoneStyleOmnibox = forcePhoneStyleOmnibox;
mKeyboardHeightSupplier = keyboardHeightSupplier;
+ mSystemBarInsetsBottomSupplier = systemBarInsetsBottomSupplier;
mBottomWindowPaddingSupplier = bottomWindowPaddingSupplier;
mContext = mAnchorView.getContext();
mContext.registerComponentCallbacks(this);
@@ -108,6 +113,11 @@ class OmniboxSuggestionsDropdownEmbedderImpl
mOmniboxAlignmentSupplier.removeObserver(obs);
}
@@ -2274,7 +2320,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
@Nullable
@Override
public OmniboxAlignment getCurrentAlignment() {
@@ -132,6 +139,9 @@ class OmniboxSuggestionsDropdownEmbedderImpl
@@ -132,6 +142,9 @@ class OmniboxSuggestionsDropdownEmbedderImpl
@Override
public void onDetachedFromWindow() {
@@ -2284,22 +2330,23 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
mAnchorView.removeOnLayoutChangeListener(this);
mAlignmentView.removeOnLayoutChangeListener(this);
mAnchorView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
@@ -218,6 +228,8 @@ class OmniboxSuggestionsDropdownEmbedderImpl
@@ -218,6 +231,9 @@ class OmniboxSuggestionsDropdownEmbedderImpl
ViewUtils.getRelativeLayoutPosition(contentView, mAnchorView, mPositionArray);
int top = mPositionArray[1] + mAnchorView.getMeasuredHeight() - contentView.getPaddingTop();
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled())
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ top -= mPositionArray[1];
+ }
int left;
int width;
int paddingLeft;
@@ -291,6 +303,12 @@ class OmniboxSuggestionsDropdownEmbedderImpl
@@ -291,6 +307,12 @@ class OmniboxSuggestionsDropdownEmbedderImpl
: contentView.getMeasuredHeight() - keyboardHeight;
int height = Math.min(windowSpace, contentSpace) - top;
+ if (ChromeFeatureList.sMoveTopToolbarToBottom.isEnabled()) {
+ ViewCompat.setPaddingRelative(
+ contentView, 0, 0, 0, keyboardHeight);
+ contentView, 0, 0, 0, keyboardHeight + mSystemBarInsetsBottomSupplier.get());
+ top = 0;
+ }
+
@@ -2309,7 +2356,15 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/AutocompleteCoordinator.java
@@ -49,6 +49,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
@@ -10,6 +10,7 @@ import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.NonNull;
import androidx.annotation.ColorInt;
import androidx.annotation.VisibleForTesting;
import androidx.core.view.ViewCompat;
@@ -49,6 +50,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
import org.chromium.ui.modelutil.LazyConstructionPropertyMcp;
import org.chromium.ui.modelutil.MVCListAdapter.ModelList;
import org.chromium.ui.modelutil.PropertyModel;
@@ -2317,7 +2372,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
import java.util.ArrayList;
import java.util.List;
@@ -68,6 +69,7 @@ public class AutocompleteCoordinator
@@ -68,6 +70,7 @@ public class AutocompleteCoordinator
private @Nullable OmniboxSuggestionsDropdown mDropdown;
private ObserverList<OmniboxSuggestionsDropdownScrollListener> mScrollListenerList =
new ObserverList<>();
@@ -2325,7 +2380,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
/** An observer watching for changes to the visual state of the omnibox suggestions. */
public interface OmniboxSuggestionsVisualStateObserver {
@@ -102,6 +104,7 @@ public class AutocompleteCoordinator
@@ -102,6 +105,7 @@ public class AutocompleteCoordinator
Context context = parent.getContext();
ModelList listItems = new ModelList();
@@ -2333,7 +2388,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
PropertyModel listModel =
new PropertyModel.Builder(SuggestionListProperties.ALL_KEYS)
.with(SuggestionListProperties.EMBEDDER, dropdownEmbedder)
@@ -223,6 +226,16 @@ public class AutocompleteCoordinator
@@ -223,6 +227,16 @@ public class AutocompleteCoordinator
dropdown.forcePhoneStyleOmnibox(forcePhoneStyleOmnibox);
dropdown.setAdapter(mAdapter);
@@ -2422,7 +2477,7 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java
--- a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java
+++ b/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/browser/omnibox/suggestions/OmniboxSuggestionsDropdownEmbedder.java
@@ -5,6 +5,7 @@
@@ -5,11 +5,14 @@
package org.chromium.chrome.browser.omnibox.suggestions;
import android.annotation.SuppressLint;
@@ -2430,7 +2485,14 @@ diff --git a/chrome/browser/ui/android/omnibox/java/src/org/chromium/chrome/brow
import org.chromium.base.Callback;
import org.chromium.build.annotations.NullMarked;
@@ -118,6 +119,9 @@ public interface OmniboxSuggestionsDropdownEmbedder {
import org.chromium.build.annotations.Nullable;
+import androidx.annotation.NonNull;
+
import java.util.Objects;
/** Provider of capabilities required to embed the omnibox suggestion list into the UI. */
@@ -118,6 +121,9 @@ public interface OmniboxSuggestionsDropdownEmbedder {
*/
OmniboxAlignment getCurrentAlignment();
@@ -2910,7 +2972,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
Preference captions = findPreference(PREF_CAPTIONS);
captions.setOnPreferenceClickListener(
preference -> {
@@ -187,6 +208,11 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
@@ -187,6 +208,12 @@ public class AccessibilitySettings extends ChromeBaseSettingsFragment
mDelegate.getBrowserContextHandle(), (Integer) newValue);
} else if (PREF_PAGE_ZOOM_ALWAYS_SHOW.equals(preference.getKey())) {
PageZoomUtils.setShouldAlwaysShowZoomMenuItem((Boolean) newValue);
@@ -2919,6 +2981,7 @@ diff --git a/components/browser_ui/accessibility/android/java/src/org/chromium/c
+ mDelegate.requestRestart(getActivity());
+ } else if (PREF_DISABLE_TOOLBAR_SWIPE_UP.equals(preference.getKey())) {
+ mDisableToolbarSwipeUpDelegate.setValue((Boolean) newValue);
+ mDelegate.requestRestart(getActivity());
} else if (PREF_PAGE_ZOOM_INCLUDE_OS_ADJUSTMENT.equals(preference.getKey())) {
// TODO(mschillaci): Implement the override behavior for OS level.
} else if (OmniboxFeatures.KEY_JUMP_START_OMNIBOX.equals(preference.getKey())) {
@@ -6,10 +6,10 @@ and, in windows, hide the presence of the webcam if the user has not given permi
License: GPL-2.0-or-later - https://spdx.org/licenses/GPL-2.0-or-later.html
---
.../core/browser/bromite_content_settings/camera.inc | 8 ++++++++
components/media_device_salt/media_device_salt_service.cc | 3 +++
components/media_device_salt/media_device_salt_service.cc | 2 ++
content/browser/media/media_devices_util.cc | 3 +++
.../browser/renderer_host/media/media_devices_manager.cc | 5 +++++
4 files changed, 19 insertions(+)
4 files changed, 18 insertions(+)
create mode 100644 components/content_settings/core/browser/bromite_content_settings/camera.inc
diff --git a/components/content_settings/core/browser/bromite_content_settings/camera.inc b/components/content_settings/core/browser/bromite_content_settings/camera.inc
@@ -28,12 +28,11 @@ new file mode 100644
diff --git a/components/media_device_salt/media_device_salt_service.cc b/components/media_device_salt/media_device_salt_service.cc
--- a/components/media_device_salt/media_device_salt_service.cc
+++ b/components/media_device_salt/media_device_salt_service.cc
@@ -25,6 +25,9 @@ BASE_FEATURE(kMediaDeviceIdPartitioning,
@@ -25,6 +25,8 @@ BASE_FEATURE(kMediaDeviceIdPartitioning,
"MediaDeviceIdPartitioning",
base::FEATURE_ENABLED_BY_DEFAULT);
+SET_CROMITE_FEATURE_ENABLED(kMediaDeviceIdPartitioning);
+SET_CROMITE_FEATURE_ENABLED(kMediaDeviceIdRandomSaltsPerStorageKey);
+
namespace {
@@ -9,12 +9,12 @@ 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
---
.../Partition-blobs-by-top-frame-URL.inc | 1 +
storage/browser/blob/blob_url_store_impl.cc | 36 ++++++++++++++++++-
storage/browser/blob/blob_url_store_impl.cc | 35 +++++++++++++++++++
storage/browser/blob/blob_url_store_impl.h | 11 ++++++
storage/browser/blob/features.cc | 1 +
.../public/mojom/blob/blob_url_store.mojom | 12 +++++--
.../core/fileapi/public_url_manager.cc | 18 ++++++++++
6 files changed, 75 insertions(+), 4 deletions(-)
6 files changed, 75 insertions(+), 3 deletions(-)
create mode 100644 cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc
diff --git a/cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc b/cromite_flags/third_party/blink/common/features_cc/Partition-blobs-by-top-frame-URL.inc
@@ -47,13 +47,11 @@ 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,12 +137,20 @@ void BlobURLStoreImpl::Revoke(const GURL& url) {
@@ -123,12 +137,18 @@ void BlobURLStoreImpl::Revoke(const GURL& url) {
void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
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,
+ const base::UnguessableToken& unsafe_agent_cluster_id,
+ const std::optional<net::SchemefulSite>& unsafe_top_level_site,
ResolveAsURLLoaderFactoryCallback callback) {
if (!registry_) {
@@ -62,13 +60,13 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
return;
}
+ if (!IsSamePartition(url, unsafe_agent_cluster_id, unsafe_top_level_site)) {
+ std::move(callback).Run(std::nullopt);
+ std::move(callback).Run(std::nullopt, std::nullopt);
+ return;
+ }
if (!registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url),
storage_key_)) {
partitioned_fetch_failure_closure_.Run();
@@ -142,6 +164,12 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
@@ -142,6 +162,12 @@ void BlobURLStoreImpl::ResolveAsURLLoaderFactory(
}
}
@@ -81,7 +79,7 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
BlobURLLoaderFactory::Create(registry_->GetBlobFromUrl(url), url,
std::move(receiver));
// When a fragment URL is present, registry_->GetUnsafeAgentClusterID(url) and
@@ -156,12 +184,18 @@ void BlobURLStoreImpl::ResolveForNavigation(
@@ -156,12 +182,18 @@ void BlobURLStoreImpl::ResolveForNavigation(
const GURL& url,
mojo::PendingReceiver<blink::mojom::BlobURLToken> token,
bool is_top_level_navigation,
@@ -100,12 +98,19 @@ diff --git a/storage/browser/blob/blob_url_store_impl.cc b/storage/browser/blob/
if (!is_top_level_navigation &&
!registry_->IsUrlMapped(BlobUrlUtils::ClearUrlFragment(url),
storage_key_)) {
@@ -192,7 +226,7 @@ void BlobURLStoreImpl::ResolveForWorkerScriptFetch(
@@ -187,12 +219,15 @@ void BlobURLStoreImpl::ResolveForNavigation(
void BlobURLStoreImpl::ResolveForWorkerScriptFetch(
const GURL& url,
mojo::PendingReceiver<blink::mojom::BlobURLToken> token,
+ const base::UnguessableToken& unsafe_agent_cluster_id,
+ const std::optional<net::SchemefulSite>& unsafe_top_level_site,
ResolveForNavigationCallback callback) {
if (!registry_) {
std::move(callback).Run(std::nullopt);
return;
}
- ResolveForNavigation(url, std::move(token), /*is_top_level_navigation=*/false,
+ ResolveForNavigation(url, std::move(token), unsafe_agent_cluster_id, unsafe_top_level_site, /*is_top_level_navigation=*/false,
ResolveForNavigation(url, std::move(token), /*is_top_level_navigation=*/false,
+ unsafe_agent_cluster_id, unsafe_top_level_site,
std::move(callback));
}
@@ -38,6 +38,8 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/gcore/GoogleApiClientHelper.java | 89 +--
.../instantapps/InstantAppsHandler.java | 6 +-
.../settings/PasswordSettings.java | 9 -
chrome/android/javatests/BUILD.gn | 7 -
chrome/android/junit/BUILD.gn | 6 -
chrome/browser/language/android/BUILD.gn | 3 -
.../language/AppLanguagePromoDialog.java | 31 -
.../language/settings/LanguageSettings.java | 6 -
@@ -104,12 +106,12 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
services/BUILD.gn | 9 -
services/device/geolocation/BUILD.gn | 4 -
services/shape_detection/BUILD.gn | 2 -
third_party/android_deps/BUILD.gn | 707 +-----------------
third_party/android_deps/BUILD.gn | 705 +-----------------
.../preconditions/javatests/BUILD.gn | 1 -
.../gms/ChromiumPlayServicesAvailability.java | 10 +-
third_party/androidx/customizations.gni | 13 +-
third_party/cardboard/BUILD.gn | 4 -
85 files changed, 128 insertions(+), 2284 deletions(-)
87 files changed, 128 insertions(+), 2295 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
@@ -730,6 +732,39 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/password_manage
}
}
diff --git a/chrome/android/javatests/BUILD.gn b/chrome/android/javatests/BUILD.gn
--- a/chrome/android/javatests/BUILD.gn
+++ b/chrome/android/javatests/BUILD.gn
@@ -12,13 +12,6 @@ testonly = true
# Partition tests into one target per-package to keep incremental build times down.
chrome_test_java_helper_deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_cast_framework_java",
- "$google_play_services_package:google_play_services_cast_java",
- "$google_play_services_package:google_play_services_gcm_java",
- "$google_play_services_package:google_play_services_iid_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_java_test_support_uncommon",
diff --git a/chrome/android/junit/BUILD.gn b/chrome/android/junit/BUILD.gn
--- a/chrome/android/junit/BUILD.gn
+++ b/chrome/android/junit/BUILD.gn
@@ -35,12 +35,6 @@ shared_library_with_jni("libchrome_junit_tests") {
if (is_android) {
# Partition tests into one target per-package to keep incremental build times down.
chrome_junit_tests_helper_deps = [
- "$google_play_services_package:google_play_services_base_java",
- "$google_play_services_package:google_play_services_basement_java",
- "$google_play_services_package:google_play_services_cast_framework_java",
- "$google_play_services_package:google_play_services_cast_java",
- "$google_play_services_package:google_play_services_gcm_java",
- "$google_play_services_package:google_play_services_tasks_java",
"//base:base_java",
"//base:base_java_test_support",
"//base:base_java_test_support_uncommon",
diff --git a/chrome/browser/language/android/BUILD.gn b/chrome/browser/language/android/BUILD.gn
--- a/chrome/browser/language/android/BUILD.gn
+++ b/chrome/browser/language/android/BUILD.gn
@@ -4136,12 +4171,10 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
if (!defined(guava_android_target)) {
java_prebuilt("com_google_guava_guava_android_java") {
@@ -1079,342 +713,6 @@ if (!limit_android_deps) {
"//third_party/androidx:androidx_test_monitor_java",
]
@@ -1081,340 +715,6 @@ if (!limit_android_deps) {
is_robolectric = true
- }
-
}
- # This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
- if (google_play_services_package == "//third_party/android_deps") {
- android_aar_prebuilt("google_android_datatransport_transport_api_java") {
@@ -4479,7 +4512,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
# This is generated, do not edit. Update BuildConfigGenerator.groovy instead.
java_prebuilt(
"com_google_testparameterinjector_test_parameter_injector_java") {
@@ -1700,7 +998,6 @@ if (!limit_android_deps) {
@@ -1700,7 +1000,6 @@ if (!limit_android_deps) {
]
testonly = true
deps = [
@@ -4487,7 +4520,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
":org_robolectric_pluginapi_java",
":org_robolectric_utils_java",
"//third_party/android_deps:guava_android_java",
@@ -1722,7 +1019,6 @@ if (!limit_android_deps) {
@@ -1722,7 +1021,6 @@ if (!limit_android_deps) {
]
testonly = true
deps = [
@@ -4495,7 +4528,7 @@ diff --git a/third_party/android_deps/BUILD.gn b/third_party/android_deps/BUILD.
":org_robolectric_annotations_java",
":org_robolectric_pluginapi_java",
":org_robolectric_utils_java",
@@ -1792,7 +1088,6 @@ if (!limit_android_deps) {
@@ -1792,7 +1090,6 @@ if (!limit_android_deps) {
]
testonly = true
deps = [
@@ -28,7 +28,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
...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 | 12 ++++++-
.../renderer/core/workers/dedicated_worker.cc | 10 ++++++
.../renderer/core/workers/dedicated_worker.h | 3 ++
.../workers/dedicated_worker_global_scope.cc | 9 ++++-
.../workers/dedicated_worker_global_scope.h | 1 +
@@ -53,7 +53,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../audio_worklet_global_scope_test.cc | 1 +
.../webaudio/audio_worklet_thread_test.cc | 1 +
.../worklet/worklet_thread_test_common.cc | 2 +-
36 files changed, 189 insertions(+), 16 deletions(-)
36 files changed, 188 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
@@ -324,16 +324,14 @@ diff --git a/third_party/blink/renderer/core/workers/dedicated_worker.cc b/third
const String& source_code,
RejectCoepUnsafeNone reject_coep_unsafe_none,
mojo::PendingRemote<mojom::blink::BackForwardCacheControllerHost>
@@ -592,7 +599,8 @@ void DedicatedWorker::ContinueStartInternal(
@@ -591,6 +598,7 @@ void DedicatedWorker::ContinueStartInternal(
CreateGlobalScopeCreationParams(
script_url, referrer_policy,
std::move(response_content_security_policies),
+ response_address_space,
std::move(coep_reporting_observer),
- std::move(dip_reporting_observer)),
+ std::move(dip_reporting_observer),
+ response_address_space),
std::move(dip_reporting_observer)),
std::move(worker_main_script_load_params), options_, script_url,
*outside_fetch_client_settings_object_, v8_stack_trace_id_, source_code,
reject_coep_unsafe_none, token_,
@@ -630,6 +638,7 @@ DedicatedWorker::CreateGlobalScopeCreationParams(
network::mojom::ReferrerPolicy referrer_policy,
Vector<network::mojom::blink::ContentSecurityPolicyPtr>
+11 -3
View File
@@ -33,7 +33,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../settings/PrivacyPreferencesManager.java | 8 +
.../org/chromium/chrome/browser/tab/Tab.java | 2 +
.../browser/tabmodel/TabWindowManager.java | 2 +
.../tabmodel/TabWindowManagerImpl.java | 18 ++
.../tabmodel/TabWindowManagerImpl.java | 19 ++
.../strings/android_chrome_strings.grd | 26 +++
chrome/common/pref_names.h | 8 +
...omiteRequestDesktopSiteContentSetting.java | 76 ++++++++
@@ -46,7 +46,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
.../browser/web_contents/web_contents_impl.cc | 6 +-
.../framehost/NavigationControllerImpl.java | 3 +-
content/renderer/render_thread_impl.cc | 1 -
36 files changed, 798 insertions(+), 16 deletions(-)
36 files changed, 799 insertions(+), 16 deletions(-)
create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml
create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java
@@ -1012,7 +1012,15 @@ diff --git a/chrome/browser/tabmodel/android/java/src/org/chromium/chrome/browse
diff --git a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
--- a/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
+++ b/chrome/browser/tabmodel/internal/android/java/src/org/chromium/chrome/browser/tabmodel/TabWindowManagerImpl.java
@@ -418,6 +418,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
@@ -33,6 +33,7 @@ import org.chromium.ui.modaldialog.ModalDialogManager;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.List;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
@@ -418,6 +419,24 @@ public class TabWindowManagerImpl implements ActivityStateListener, TabWindowMan
return null;
}
+1 -1
View File
@@ -670,7 +670,7 @@ diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/th
+ View()->ResizeWithBrowserControls(
+ size_.value(),
+ widget_base_->DIPsToCeiledBlinkSpace(
+ widget_base_->VisibleViewportSizeInDIPs()),
+ widget_base_->VisibleViewportSize()),
+ visual_properties.browser_controls_params);
return;
}
+4 -3
View File
@@ -9,7 +9,7 @@ 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_sources.gni | 2 +
.../android/java/res/layout/fre_tosanduma.xml | 160 +++++++++
chrome/android/java/res/values/dimens.xml | 10 +
chrome/android/java/res/values/dimens.xml | 11 +
chrome/android/java/res/values/styles.xml | 24 ++
.../DefaultSearchEngineFirstRunFragment.java | 3 -
.../browser/firstrun/FirstRunActivity.java | 23 +-
@@ -21,7 +21,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
...creenSigninAndHistorySyncActivityBase.java | 6 +-
.../browser/locale/LocaleManagerDelegate.java | 5 +-
.../Welcome-screen.grdp | 27 ++
15 files changed, 917 insertions(+), 80 deletions(-)
15 files changed, 918 insertions(+), 80 deletions(-)
create mode 100644 chrome/android/java/res/layout/fre_tosanduma.xml
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/ToSAndUMAFirstRunFragment.java
create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/firstrun/TosAndUmaFragmentView.java
@@ -218,10 +218,11 @@ new file mode 100644
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
@@ -106,6 +106,16 @@ found in the LICENSE file.
@@ -106,6 +106,17 @@ found in the LICENSE file.
<dimen name="fre_loading_spinner_size">48dp</dimen>
<dimen name="fre_policy_privacy_disclaimer_icon_size">18dp</dimen>
<dimen name="fre_policy_privacy_disclaimer_icon_padding">8dp</dimen>
+ <dimen name="fre_tos_image_height">110dp</dimen>
+ <dimen name="fre_image_bottom_margin">36dp</dimen>
+ <dimen name="fre_vertical_spacing">32dp</dimen>
+ <dimen name="fre_content_margin">24dp</dimen>
@@ -19,7 +19,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module
components/adblock/android/BUILD.gn | 99 +++
components/adblock/android/adblock_jni.cc | 176 ++++++
components/adblock/android/adblock_jni.h | 52 ++
.../filtering_configuration_bindings.cc | 295 +++++++++
.../filtering_configuration_bindings.cc | 294 +++++++++
.../filtering_configuration_bindings.h | 68 +++
.../adblock/AdblockContentType.java | 61 ++
.../components/adblock/AdblockController.java | 203 +++++++
@@ -43,9 +43,9 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module
.../adblock/TestPagesSnippetsTestBase.java | 562 ++++++++++++++++++
.../adblock/TestPagesWebsocketTestBase.java | 56 ++
.../adblock/TestVerificationUtils.java | 163 +++++
...source_classification_notifier_bindings.cc | 164 +++++
...source_classification_notifier_bindings.cc | 163 +++++
...esource_classification_notifier_bindings.h | 69 +++
39 files changed, 5008 insertions(+)
39 files changed, 5006 insertions(+)
create mode 100644 chrome/browser/android/adblock/adblock_jni_factory.cc
create mode 100644 chrome/browser/android/adblock/adblock_jni_factory.h
create mode 100644 chrome/browser/android/adblock/filtering_configuration_bindings_factory.cc
@@ -132,7 +132,7 @@ diff --git a/chrome/android/BUILD.gn b/chrome/android/BUILD.gn
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -2560,6 +2560,18 @@ static_library("browser") {
@@ -2561,6 +2561,18 @@ static_library("browser") {
}
if (is_android) {
@@ -1015,7 +1015,7 @@ diff --git a/components/adblock/android/filtering_configuration_bindings.cc b/co
new file mode 100644
--- /dev/null
+++ b/components/adblock/android/filtering_configuration_bindings.cc
@@ -0,0 +1,295 @@
@@ -0,0 +1,294 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -1040,7 +1040,6 @@ new file mode 100644
+
+#include "base/android/jni_array.h"
+#include "base/android/jni_string.h"
+#include "base/ranges/algorithm.h"
+#include "components/adblock/android/java_bindings_getters.h"
+#include "components/adblock/android/jni_headers/FilteringConfiguration_jni.h"
+#include "components/adblock/core/configuration/filtering_configuration.h"
@@ -1110,7 +1109,7 @@ new file mode 100644
+ const std::string& configuration_name) {
+ const auto installed_configurations = GetConfigurations();
+ auto existing_configuration_it =
+ base::ranges::find(installed_configurations, configuration_name,
+ std::ranges::find(installed_configurations, configuration_name,
+ &FilteringConfiguration::GetName);
+ return existing_configuration_it != installed_configurations.end()
+ ? *existing_configuration_it
@@ -1190,7 +1189,7 @@ new file mode 100644
+JNI_FilteringConfiguration_GetConfigurations(JNIEnv* env) {
+ auto& bindings = adblock::GetFilteringConfigurationBindings();
+ std::vector<std::string> configurations;
+ base::ranges::transform(
+ std::ranges::transform(
+ bindings.GetConfigurations(), std::back_inserter(configurations),
+ [](adblock::FilteringConfiguration* fc) { return fc->GetName(); });
+ return base::android::ToJavaArrayOfStrings(env, configurations);
@@ -1244,7 +1243,7 @@ new file mode 100644
+ std::vector<std::string> urls;
+ auto* configuration = GetConfigurationWithName(env, configuration_name);
+ if (configuration) {
+ base::ranges::transform(configuration->GetFilterLists(),
+ std::ranges::transform(configuration->GetFilterLists(),
+ std::back_inserter(urls), &GURL::spec);
+ }
+ return base::android::ToJavaArrayOfStrings(env, urls);
@@ -5097,7 +5096,7 @@ diff --git a/components/adblock/android/resource_classification_notifier_binding
new file mode 100644
--- /dev/null
+++ b/components/adblock/android/resource_classification_notifier_bindings.cc
@@ -0,0 +1,164 @@
@@ -0,0 +1,163 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -5123,7 +5122,6 @@ new file mode 100644
+#include "base/android/jni_android.h"
+#include "base/android/jni_array.h"
+#include "base/android/jni_string.h"
+#include "base/ranges/algorithm.h"
+#include "components/adblock/android/java_bindings_getters.h"
+#include "components/adblock/android/jni_headers/ResourceClassificationNotifier_jni.h"
+#include "components/adblock/content/browser/resource_classification_runner.h"
+78 -104
View File
@@ -20,7 +20,7 @@ Based on Chromium 118.0.5993.48
.../content/browser/adblock_filter_match.h | 30 +
.../adblock_telemetry_service_factory_base.cc | 100 ++
.../adblock_telemetry_service_factory_base.h | 54 +
.../browser/adblock_url_loader_factory.cc | 748 +++++++++
.../browser/adblock_url_loader_factory.cc | 734 +++++++++
.../browser/adblock_url_loader_factory.h | 100 ++
.../adblock_url_loader_factory_for_test.cc | 436 +++++
.../adblock_url_loader_factory_for_test.h | 70 +
@@ -49,7 +49,7 @@ Based on Chromium 118.0.5993.48
.../activeping_telemetry_topic_provider.cc | 285 ++++
.../activeping_telemetry_topic_provider.h | 87 +
components/adblock/core/adblock_controller.h | 64 +
.../adblock/core/adblock_controller_impl.cc | 271 ++++
.../adblock/core/adblock_controller_impl.cc | 270 ++++
.../adblock/core/adblock_controller_impl.h | 95 ++
components/adblock/core/adblock_switches.cc | 26 +
components/adblock/core/adblock_switches.h | 29 +
@@ -90,11 +90,11 @@ Based on Chromium 118.0.5993.48
.../adblock/core/converter/parser/BUILD.gn | 66 +
.../core/converter/parser/content_filter.cc | 68 +
.../core/converter/parser/content_filter.h | 49 +
.../core/converter/parser/domain_option.cc | 114 ++
.../core/converter/parser/domain_option.cc | 111 ++
.../core/converter/parser/domain_option.h | 57 +
.../converter/parser/filter_classifier.cc | 39 +
.../core/converter/parser/filter_classifier.h | 45 +
.../adblock/core/converter/parser/metadata.cc | 145 ++
.../adblock/core/converter/parser/metadata.cc | 144 ++
.../adblock/core/converter/parser/metadata.h | 64 +
.../core/converter/parser/snippet_filter.cc | 62 +
.../core/converter/parser/snippet_filter.h | 46 +
@@ -126,27 +126,27 @@ Based on Chromium 118.0.5993.48
.../filtering_configuration_maintainer_impl.h | 119 ++
.../subscription/installed_subscription.cc | 42 +
.../subscription/installed_subscription.h | 137 ++
.../installed_subscription_impl.cc | 552 +++++++
.../installed_subscription_impl.cc | 551 +++++++
.../installed_subscription_impl.h | 149 ++
.../ongoing_subscription_request.h | 50 +
.../ongoing_subscription_request_impl.cc | 190 +++
.../ongoing_subscription_request_impl.h | 74 +
.../core/subscription/pattern_matcher.cc | 264 +++
.../core/subscription/pattern_matcher.cc | 263 +++
.../core/subscription/pattern_matcher.h | 33 +
.../preloaded_subscription_provider.h | 56 +
.../preloaded_subscription_provider_impl.cc | 120 ++
.../preloaded_subscription_provider_impl.cc | 119 ++
.../preloaded_subscription_provider_impl.h | 50 +
.../core/subscription/regex_matcher.cc | 162 ++
.../adblock/core/subscription/regex_matcher.h | 73 +
.../adblock/core/subscription/subscription.cc | 24 +
.../adblock/core/subscription/subscription.h | 78 +
.../subscription/subscription_collection.h | 97 ++
.../subscription_collection_impl.cc | 353 ++++
.../subscription_collection_impl.cc | 352 ++++
.../subscription_collection_impl.h | 97 ++
.../core/subscription/subscription_config.cc | 338 ++++
.../core/subscription/subscription_config.h | 120 ++
.../subscription/subscription_downloader.h | 66 +
.../subscription_downloader_impl.cc | 288 ++++
.../subscription_downloader_impl.cc | 287 ++++
.../subscription_downloader_impl.h | 102 ++
.../subscription_persistent_metadata.h | 86 +
.../subscription_persistent_metadata_impl.cc | 170 ++
@@ -155,7 +155,7 @@ Based on Chromium 118.0.5993.48
.../subscription_persistent_storage_impl.cc | 229 +++
.../subscription_persistent_storage_impl.h | 80 +
.../core/subscription/subscription_service.h | 87 +
.../subscription/subscription_service_impl.cc | 211 +++
.../subscription/subscription_service_impl.cc | 210 +++
.../subscription/subscription_service_impl.h | 97 ++
.../core/subscription/subscription_updater.h | 35 +
.../subscription/subscription_updater_impl.cc | 65 +
@@ -163,7 +163,7 @@ Based on Chromium 118.0.5993.48
.../subscription/subscription_validator.h | 59 +
.../subscription_validator_impl.cc | 144 ++
.../subscription_validator_impl.h | 53 +
.../subscription/url_keyword_extractor.cc | 67 +
.../subscription/url_keyword_extractor.cc | 66 +
.../core/subscription/url_keyword_extractor.h | 59 +
.../adblock/docs/ad-filtering/README.md | 18 +
.../ad-filtering/element-hiding-sequence.png | Bin 0 -> 177168 bytes
@@ -223,7 +223,7 @@ Based on Chromium 118.0.5993.48
tools/eyeo/generate_modules.sh | 209 +++
tools/eyeo/snippets_deps.py | 61 +
tools/gritsettings/resource_ids.spec | 11 +-
219 files changed, 22049 insertions(+), 4 deletions(-)
219 files changed, 22023 insertions(+), 4 deletions(-)
create mode 100644 components/adblock/CHANGELOG.md
create mode 100644 components/adblock/LICENSE
create mode 100644 components/adblock/README.md
@@ -2512,7 +2512,7 @@ diff --git a/components/adblock/content/browser/adblock_url_loader_factory.cc b/
new file mode 100644
--- /dev/null
+++ b/components/adblock/content/browser/adblock_url_loader_factory.cc
@@ -0,0 +1,748 @@
@@ -0,0 +1,734 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -2650,8 +2650,6 @@ new file mode 100644
+ const std::optional<GURL>& new_url) override;
+ void SetPriority(net::RequestPriority priority,
+ int32_t intra_priority_value) override;
+ void PauseReadingBodyFromNet() override;
+ void ResumeReadingBodyFromNet() override;
+
+ void OnReceiveEarlyHints(
+ ::network::mojom::EarlyHintsPtr early_hints) override;
@@ -2788,18 +2786,6 @@ new file mode 100644
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::PauseReadingBodyFromNet() {
+ if (target_loader_.is_bound()) {
+ target_loader_->PauseReadingBodyFromNet();
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::ResumeReadingBodyFromNet() {
+ if (target_loader_.is_bound()) {
+ target_loader_->ResumeReadingBodyFromNet();
+ }
+}
+
+void AdblockURLLoaderFactory::InProgressRequest::OnReceiveEarlyHints(
+ network::mojom::EarlyHintsPtr early_hints) {
+ target_client_->OnReceiveEarlyHints(std::move(early_hints));
@@ -3548,7 +3534,7 @@ new file mode 100644
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ std::vector<std::string> subscriptions;
+ base::ranges::transform(
+ std::ranges::transform(
+ adblock_configuration->GetFilterLists(),
+ std::back_inserter(subscriptions),
+ [](const auto& subscription) { return subscription.spec(); });
@@ -3593,7 +3579,7 @@ new file mode 100644
+ subscription_service->GetAdblockFilteringConfiguration();
+ DCHECK(adblock_configuration)
+ << "Action called for non existing \"adblock\" configuration";
+ return base::ranges::any_of(
+ return std::ranges::any_of(
+ adblock_configuration->GetFilterLists(),
+ [&](const auto& url) { return url == AcceptableAdsUrl(); });
+}
@@ -4069,7 +4055,7 @@ new file mode 100644
+}
+
+bool AdblockWebContentObserver::IsAdblockEnabled() const {
+ return base::ranges::any_of(
+ return std::ranges::any_of(
+ subscription_service_->GetInstalledFilteringConfigurations(),
+ &adblock::FilteringConfiguration::IsEnabled);
+}
@@ -4685,14 +4671,14 @@ new file mode 100644
+ collection->FindBySpecialFilter(SpecialFilterType::Elemhide, url,
+ frame_hierarchy, sitekey);
+ if (!ehe_allowlisted) {
+ base::ranges::copy(
+ std::ranges::copy(
+ collection->GetElementHideSelectors(url, frame_hierarchy, sitekey),
+ std::back_inserter(stylesheet));
+ base::ranges::copy(collection->GetElementHideEmulationSelectors(url),
+ std::ranges::copy(collection->GetElementHideEmulationSelectors(url),
+ std::back_inserter(elemhide_js));
+ }
+ if (!doc_allowlisted) {
+ base::ranges::for_each(
+ std::ranges::for_each(
+ collection->GenerateSnippets(url, frame_hierarchy),
+ [&snippet_js](auto& item) { snippet_js.Append(std::move(item)); });
+ }
@@ -7105,7 +7091,7 @@ diff --git a/components/adblock/core/adblock_controller_impl.cc b/components/adb
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/adblock_controller_impl.cc
@@ -0,0 +1,271 @@
@@ -0,0 +1,270 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -7134,7 +7120,6 @@ new file mode 100644
+#include "base/command_line.h"
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_util.h"
+#include "base/version.h"
+#include "components/adblock/core/adblock_switches.h"
@@ -7219,7 +7204,7 @@ new file mode 100644
+}
+
+bool AdblockControllerImpl::IsAcceptableAdsEnabled() const {
+ return base::ranges::any_of(
+ return std::ranges::any_of(
+ adblock_filtering_configuration_->GetFilterLists(),
+ [&](const auto& url) { return url == AcceptableAdsUrl(); });
+}
@@ -7356,7 +7341,7 @@ new file mode 100644
+
+ // If there's no language-specific recommended subscription, see if we may
+ // install the default subscription..
+ if (base::ranges::any_of(
+ if (std::ranges::any_of(
+ known_subscriptions_, [&](const KnownSubscriptionInfo& subscription) {
+ return subscription.url == DefaultSubscriptionUrl() &&
+ subscription.first_run !=
@@ -8444,14 +8429,14 @@ new file mode 100644
+ blocking_rewrites.end());
+ // Remove blocking filters overruled by allowing filters.
+ blocking_rewrites_v.erase(
+ base::ranges::remove_if(
+ blocking_rewrites_v,
+ [&allowing_rewrites](const auto blocking_rewrite) {
+ return base::ranges::find_if(
+ allowing_rewrites, [&](const auto& allowing_rewrite) {
+ return blocking_rewrite == allowing_rewrite;
+ }) != allowing_rewrites.end();
+ }),
+ std::remove_if(blocking_rewrites_v.begin(), blocking_rewrites_v.end(),
+ [&allowing_rewrites](const auto blocking_rewrite) {
+ return std::ranges::find_if(
+ allowing_rewrites,
+ [&](const auto& allowing_rewrite) {
+ return blocking_rewrite == allowing_rewrite;
+ }) != allowing_rewrites.end();
+ }),
+ blocking_rewrites_v.end());
+
+ if (blocking_rewrites_v.empty()) {
@@ -10274,7 +10259,7 @@ new file mode 100644
+ const std::string& value) {
+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded().
+ auto* list = configuration.FindList(key);
+ if (base::ranges::find(*list, base::Value(value)) != list->end()) {
+ if (std::ranges::find(*list, base::Value(value)) != list->end()) {
+ // value already exists in the list.
+ return false;
+ }
@@ -10287,7 +10272,7 @@ new file mode 100644
+ const std::string& value) {
+ DCHECK(configuration.FindList(key)); // see SetDefaultValuesIfNeeded().
+ auto* list = configuration.FindList(key);
+ auto it = base::ranges::find(*list, base::Value(value));
+ auto it = std::ranges::find(*list, base::Value(value));
+ if (it == list->end()) {
+ // value was not on the list.
+ return false;
@@ -11172,7 +11157,7 @@ diff --git a/components/adblock/core/converter/parser/domain_option.cc b/compone
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/domain_option.cc
@@ -0,0 +1,114 @@
@@ -0,0 +1,111 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -11193,7 +11178,6 @@ new file mode 100644
+#include "components/adblock/core/converter/parser/content_filter.h"
+
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_split.h"
+#include "base/strings/string_util.h"
+
@@ -11251,22 +11235,20 @@ new file mode 100644
+
+void DomainOption::RemoveDomainsWithNoSubdomain() {
+ exclude_domains_.erase(
+ base::ranges::remove_if(
+ exclude_domains_,
+ [](auto it) { return !HasSubdomainOrLocalhost(it); }),
+ std::remove_if(exclude_domains_.begin(), exclude_domains_.end(),
+ [](auto it) { return !HasSubdomainOrLocalhost(it); }),
+ exclude_domains_.end());
+
+ include_domains_.erase(
+ base::ranges::remove_if(
+ include_domains_,
+ [](auto it) { return !HasSubdomainOrLocalhost(it); }),
+ std::remove_if(include_domains_.begin(), include_domains_.end(),
+ [](auto it) { return !HasSubdomainOrLocalhost(it); }),
+ include_domains_.end());
+}
+
+bool DomainOption::UnrestrictedByDomain() const {
+ return base::ranges::count_if(exclude_domains_, &HasSubdomainOrLocalhost) ==
+ return std::ranges::count_if(exclude_domains_, &HasSubdomainOrLocalhost) ==
+ 0 &&
+ base::ranges::count_if(include_domains_, &HasSubdomainOrLocalhost) ==
+ std::ranges::count_if(include_domains_, &HasSubdomainOrLocalhost) ==
+ 0;
+}
+
@@ -11447,7 +11429,7 @@ diff --git a/components/adblock/core/converter/parser/metadata.cc b/components/a
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/converter/parser/metadata.cc
@@ -0,0 +1,145 @@
@@ -0,0 +1,144 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -11468,7 +11450,6 @@ new file mode 100644
+#include "components/adblock/core/converter/parser/metadata.h"
+
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_number_conversions.h"
+#include "base/strings/string_util.h"
+#include "third_party/re2/src/re2/re2.h"
@@ -11586,7 +11567,7 @@ new file mode 100644
+ << kDefaultExpirationInterval.InDays() << " days.";
+ return kDefaultExpirationInterval;
+ }
+ return base::ranges::clamp(expiration_unit == "h"
+ return std::ranges::clamp(expiration_unit == "h"
+ ? base::Hours(expiration_time)
+ : base::Days(expiration_time),
+ kMinExpirationInterval, kMaxExpirationInterval);
@@ -14423,7 +14404,7 @@ new file mode 100644
+ if (custom_filters_) {
+ state.push_back(custom_filters_);
+ }
+ base::ranges::move(
+ std::ranges::move(
+ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions(),
+ std::back_inserter(state));
+ VLOG(2) << "[eyeo] FilteringConfiguration " << configuration_->GetName()
@@ -14437,17 +14418,17 @@ new file mode 100644
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ // Result will contain the currently installed subscriptions:
+ std::vector<scoped_refptr<Subscription>> result;
+ base::ranges::copy(current_state_, std::back_inserter(result));
+ std::ranges::copy(current_state_, std::back_inserter(result));
+ // And all preloaded subscriptions:
+ auto preloaded_subscriptions =
+ preloaded_subscription_provider_->GetCurrentPreloadedSubscriptions();
+ base::ranges::move(preloaded_subscriptions, std::back_inserter(result));
+ std::ranges::move(preloaded_subscriptions, std::back_inserter(result));
+ // Also, dummy subscriptions that represent ongoing installations (unless
+ // already present, in which case they'd represent updates).
+ base::ranges::copy_if(
+ std::ranges::copy_if(
+ ongoing_installations_, std::back_inserter(result),
+ [&](const auto& ongoing_installation) {
+ return base::ranges::find(result, ongoing_installation->GetSourceUrl(),
+ return std::ranges::find(result, ongoing_installation->GetSourceUrl(),
+ &Subscription::GetSourceUrl) == result.end();
+ });
+ return result;
@@ -14486,15 +14467,15 @@ new file mode 100644
+ DCHECK(IsInitialized());
+ // Subscriptions that are either installed or being installed:
+ auto installed_subscriptions = GetReadySubscriptions();
+ base::ranges::copy(GetPendingSubscriptions(),
+ std::ranges::copy(GetPendingSubscriptions(),
+ std::back_inserter(installed_subscriptions));
+ // Subscriptions that are demanded by the FilteringConfiguration:
+ auto demanded_subscriptions = configuration_->GetFilterLists();
+ base::ranges::sort(installed_subscriptions);
+ base::ranges::sort(demanded_subscriptions);
+ std::ranges::sort(installed_subscriptions);
+ std::ranges::sort(demanded_subscriptions);
+ // Missing subscriptions is the difference between the two:
+ std::vector<GURL> missing_subscriptions;
+ base::ranges::set_difference(demanded_subscriptions, installed_subscriptions,
+ std::ranges::set_difference(demanded_subscriptions, installed_subscriptions,
+ std::back_inserter(missing_subscriptions));
+ for (const auto& url : missing_subscriptions) {
+ DownloadAndInstallSubscription(url);
@@ -14506,18 +14487,18 @@ new file mode 100644
+ DCHECK(IsInitialized());
+ // Subscriptions that are either installed or being installed:
+ auto installed_subscriptions = GetReadySubscriptions();
+ base::ranges::copy(GetPendingSubscriptions(),
+ std::ranges::copy(GetPendingSubscriptions(),
+ std::back_inserter(installed_subscriptions));
+ // Subscriptions that are demanded by the FilteringConfiguration:
+ auto demanded_subscriptions = configuration_->GetFilterLists();
+ base::ranges::sort(installed_subscriptions);
+ base::ranges::sort(demanded_subscriptions);
+ std::ranges::sort(installed_subscriptions);
+ std::ranges::sort(demanded_subscriptions);
+ installed_subscriptions.erase(std::unique(installed_subscriptions.begin(),
+ installed_subscriptions.end()),
+ installed_subscriptions.end());
+ // Unneeded subscriptions is the difference between the two:
+ std::vector<GURL> unneeded_subscriptions;
+ base::ranges::set_difference(installed_subscriptions, demanded_subscriptions,
+ std::ranges::set_difference(installed_subscriptions, demanded_subscriptions,
+ std::back_inserter(unneeded_subscriptions));
+ for (const auto& url : unneeded_subscriptions) {
+ UninstallSubscription(url);
@@ -14596,7 +14577,7 @@ new file mode 100644
+ // of installing an update.
+ const auto& url = subscription->GetSourceUrl();
+ if (persistent_metadata_->IsExpired(url) &&
+ base::ranges::find(ongoing_installations_, url,
+ std::ranges::find(ongoing_installations_, url,
+ &Subscription::GetSourceUrl) ==
+ ongoing_installations_.end()) {
+ VLOG(1) << "[eyeo] Updating expired subscription " << url;
@@ -14614,7 +14595,7 @@ new file mode 100644
+ // downloading it.
+ // This is to support legacy behavior.
+ if (configuration_->GetName() == "adblock" &&
+ base::ranges::none_of(GetCurrentSubscriptions(),
+ std::ranges::none_of(GetCurrentSubscriptions(),
+ [](const auto& subscription) {
+ return subscription->GetSourceUrl() ==
+ AcceptableAdsUrl();
@@ -14629,7 +14610,7 @@ new file mode 100644
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(IsInitialized());
+ const bool is_an_update =
+ base::ranges::any_of(current_state_, [&](const auto candidate) {
+ std::ranges::any_of(current_state_, [&](const auto candidate) {
+ return candidate->GetSourceUrl() == subscription_url;
+ });
+
@@ -14754,7 +14735,7 @@ new file mode 100644
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ DCHECK(IsInitialized());
+ bool subscription_removed = false;
+ auto it = base::ranges::find(current_state_, subscription_url,
+ auto it = std::ranges::find(current_state_, subscription_url,
+ &Subscription::GetSourceUrl);
+ if (it != current_state_.end()) {
+ storage_->RemoveSubscription(*it);
@@ -14762,7 +14743,7 @@ new file mode 100644
+ subscription_removed = true;
+ }
+
+ auto ongoing_installation_it = base::ranges::find(
+ auto ongoing_installation_it = std::ranges::find(
+ ongoing_installations_, subscription_url, &Subscription::GetSourceUrl);
+ if (ongoing_installation_it != ongoing_installations_.end()) {
+ ongoing_installations_.erase(ongoing_installation_it);
@@ -14780,7 +14761,7 @@ new file mode 100644
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+
+ std::vector<std::string> filters = configuration_->GetCustomFilters();
+ base::ranges::transform(configuration_->GetAllowedDomains(),
+ std::ranges::transform(configuration_->GetAllowedDomains(),
+ std::back_inserter(filters),
+ &utils::CreateDomainAllowlistingFilter);
+ for (const auto& filter : filters) {
@@ -14805,7 +14786,7 @@ new file mode 100644
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ std::vector<GURL> result;
+ result.reserve(current_state_.size());
+ base::ranges::transform(current_state_, std::back_inserter(result),
+ std::ranges::transform(current_state_, std::back_inserter(result),
+ &Subscription::GetSourceUrl);
+ return result;
+}
@@ -14815,7 +14796,7 @@ new file mode 100644
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ std::vector<GURL> result;
+ result.reserve(ongoing_installations_.size());
+ base::ranges::transform(ongoing_installations_, std::back_inserter(result),
+ std::ranges::transform(ongoing_installations_, std::back_inserter(result),
+ &Subscription::GetSourceUrl);
+ return result;
+}
@@ -15138,7 +15119,7 @@ diff --git a/components/adblock/core/subscription/installed_subscription_impl.cc
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/installed_subscription_impl.cc
@@ -0,0 +1,552 @@
@@ -0,0 +1,551 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -15164,7 +15145,6 @@ new file mode 100644
+
+#include "absl/types/optional.h"
+#include "base/logging.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_util.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_constants.h"
@@ -15184,7 +15164,7 @@ new file mode 100644
+namespace {
+
+bool NeedsLowercasing(const std::string& input) {
+ return base::ranges::any_of(
+ return std::ranges::any_of(
+ input, [](const char c) { return base::IsAsciiUpper(c); });
+}
+
@@ -16178,7 +16158,7 @@ diff --git a/components/adblock/core/subscription/pattern_matcher.cc b/component
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/pattern_matcher.cc
@@ -0,0 +1,264 @@
@@ -0,0 +1,263 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -16201,7 +16181,6 @@ new file mode 100644
+#include "absl/types/optional.h"
+#include "base/logging.h"
+#include "base/notreached.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_util.h"
+#include "components/adblock/core/common/regex_filter_pattern.h"
+
@@ -16546,7 +16525,7 @@ diff --git a/components/adblock/core/subscription/preloaded_subscription_provide
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/preloaded_subscription_provider_impl.cc
@@ -0,0 +1,120 @@
@@ -0,0 +1,119 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -16569,7 +16548,6 @@ new file mode 100644
+#include "base/functional/bind.h"
+#include "base/logging.h"
+#include "base/memory/scoped_refptr.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/pattern.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_utils.h"
@@ -17185,7 +17163,7 @@ diff --git a/components/adblock/core/subscription/subscription_collection_impl.c
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_collection_impl.cc
@@ -0,0 +1,353 @@
@@ -0,0 +1,352 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -17210,7 +17188,6 @@ new file mode 100644
+#include <string>
+#include <vector>
+
+#include "base/ranges/algorithm.h"
+#include "components/adblock/core/common/adblock_utils.h"
+
+namespace adblock {
@@ -17480,7 +17457,7 @@ new file mode 100644
+
+ // Last chance to avoid blocking: maybe there is a Genericblock filter and
+ // we should re-search for domain-specific filters only?
+ if (base::ranges::any_of(subscriptions_, [&](const auto& sub) {
+ if (std::ranges::any_of(subscriptions_, [&](const auto& sub) {
+ return HasSpecialFilter(sub, SpecialFilterType::Genericblock,
+ request_url, frame_hierarchy, SiteKey());
+ })) {
@@ -18184,7 +18161,7 @@ diff --git a/components/adblock/core/subscription/subscription_downloader_impl.c
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_downloader_impl.cc
@@ -0,0 +1,288 @@
@@ -0,0 +1,287 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -18211,7 +18188,6 @@ new file mode 100644
+
+#include "base/files/file_path.h"
+#include "base/functional/bind.h"
+#include "base/ranges/algorithm.h"
+#include "base/strings/escape.h"
+#include "base/strings/strcat.h"
+#include "base/strings/string_number_conversions.h"
@@ -19393,7 +19369,7 @@ diff --git a/components/adblock/core/subscription/subscription_service_impl.cc b
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/subscription_service_impl.cc
@@ -0,0 +1,211 @@
@@ -0,0 +1,210 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -19423,7 +19399,6 @@ new file mode 100644
+#include "base/memory/scoped_refptr.h"
+#include "base/memory/weak_ptr.h"
+#include "base/parameter_pack.h"
+#include "base/ranges/algorithm.h"
+#include "base/trace_event/common/trace_event_common.h"
+#include "base/trace_event/trace_event.h"
+#include "components/adblock/core/common/adblock_constants.h"
@@ -19473,7 +19448,7 @@ new file mode 100644
+SubscriptionServiceImpl::GetCurrentSubscriptions(
+ FilteringConfiguration* configuration) const {
+ DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) {
+ auto it = std::ranges::find_if(maintainers_, [&](const auto& entry) {
+ return entry.first.get() == configuration;
+ });
+ DCHECK(it != maintainers_.end()) << "Cannot get Subscriptions from an "
@@ -19482,7 +19457,7 @@ new file mode 100644
+ // Configuration is disabled
+ auto urls = it->first->GetFilterLists();
+ std::vector<scoped_refptr<adblock::Subscription>> result;
+ base::ranges::transform(
+ std::ranges::transform(
+ urls, std::back_inserter(result), [](const auto& url) {
+ return base::MakeRefCounted<EmptySubscription>(url);
+ });
@@ -19515,7 +19490,7 @@ new file mode 100644
+ const std::string& configuration_name) {
+ VLOG(1) << "[eyeo] FilteringConfiguration uninstalled: "
+ << configuration_name;
+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) {
+ auto it = std::ranges::find_if(maintainers_, [&](const auto& entry) {
+ return entry.first.get()->GetName() == configuration_name;
+ });
+ if (it == maintainers_.end()) {
@@ -19532,14 +19507,14 @@ new file mode 100644
+std::vector<FilteringConfiguration*>
+SubscriptionServiceImpl::GetInstalledFilteringConfigurations() {
+ std::vector<FilteringConfiguration*> result;
+ base::ranges::transform(maintainers_, std::back_inserter(result),
+ std::ranges::transform(maintainers_, std::back_inserter(result),
+ [](const auto& pair) { return pair.first.get(); });
+ return result;
+}
+
+FilteringConfiguration*
+SubscriptionServiceImpl::GetAdblockFilteringConfiguration() const {
+ const auto it = base::ranges::find_if(maintainers_, [](const auto& pair) {
+ const auto it = std::ranges::find_if(maintainers_, [](const auto& pair) {
+ return pair.first->GetName() == kAdblockFilteringConfigurationName;
+ });
+ DCHECK(it != maintainers_.end());
@@ -19569,7 +19544,7 @@ new file mode 100644
+
+void SubscriptionServiceImpl::OnEnabledStateChanged(
+ FilteringConfiguration* config) {
+ auto it = base::ranges::find_if(maintainers_, [&](const auto& entry) {
+ auto it = std::ranges::find_if(maintainers_, [&](const auto& entry) {
+ return entry.first.get() == config;
+ });
+ DCHECK(it != maintainers_.end()) << "Received OnEnabledStateChanged from "
@@ -20149,7 +20124,7 @@ diff --git a/components/adblock/core/subscription/url_keyword_extractor.cc b/com
new file mode 100644
--- /dev/null
+++ b/components/adblock/core/subscription/url_keyword_extractor.cc
@@ -0,0 +1,67 @@
@@ -0,0 +1,66 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -20172,7 +20147,6 @@ new file mode 100644
+#include <algorithm>
+#include <cctype>
+
+#include "base/ranges/algorithm.h"
+#include "base/strings/string_util.h"
+#include "components/adblock/core/common/keyword_extractor_utils.h"
+
@@ -20210,7 +20184,7 @@ new file mode 100644
+ // null-terminated.
+ // This isn't elegant, but it's a valid workaround for the limitations of
+ // the flatbuffers generated API.
+ base::ranges::replace_if(url_with_nulls_, &IsSeparatorCharacter, '\0');
+ std::ranges::replace_if(url_with_nulls_, &IsSeparatorCharacter, '\0');
+ input_ = url_with_nulls_;
+}
+
@@ -9,7 +9,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module
chrome/app/chrome_main_delegate.cc | 7 +-
chrome/browser/BUILD.gn | 26 ++
chrome/browser/adblock/README.md | 3 +
.../adblock/adblock_content_browser_client.cc | 320 ++++++++++++++++++
.../adblock/adblock_content_browser_client.cc | 319 ++++++++++++++++++
.../adblock/adblock_content_browser_client.h | 101 ++++++
...adblock_content_browser_client_unittest.cc | 203 +++++++++++
.../adblock/adblock_controller_factory.cc | 67 ++++
@@ -54,7 +54,7 @@ Pre-requisites: eyeo Browser Ad filtering Solution: Base Module
chrome/common/BUILD.gn | 3 +
chrome/common/webui_url_constants.cc | 4 +
chrome/common/webui_url_constants.h | 5 +
48 files changed, 2299 insertions(+), 2 deletions(-)
48 files changed, 2298 insertions(+), 2 deletions(-)
create mode 100644 chrome/browser/adblock/README.md
create mode 100644 chrome/browser/adblock/adblock_content_browser_client.cc
create mode 100644 chrome/browser/adblock/adblock_content_browser_client.h
@@ -181,7 +181,7 @@ diff --git a/chrome/browser/adblock/adblock_content_browser_client.cc b/chrome/b
new file mode 100644
--- /dev/null
+++ b/chrome/browser/adblock/adblock_content_browser_client.cc
@@ -0,0 +1,320 @@
@@ -0,0 +1,319 @@
+/*
+ * This file is part of eyeo Chromium SDK,
+ * Copyright (C) 2006-present eyeo GmbH
@@ -202,7 +202,6 @@ new file mode 100644
+#include "chrome/browser/adblock/adblock_content_browser_client.h"
+
+#include "base/containers/unique_ptr_adapters.h"
+#include "base/ranges/algorithm.h"
+#include "chrome/browser/adblock/content_security_policy_injector_factory.h"
+#include "chrome/browser/adblock/element_hider_factory.h"
+#include "chrome/browser/adblock/resource_classification_runner_factory.h"
@@ -535,7 +535,7 @@ new file mode 100644
+ << "adblock_private expects \"adblock\" configuration";
+ return RespondNow(ArgumentList(
+ api::adblock_private::IsAcceptableAdsEnabled::Results::Create(
+ base::ranges::any_of(adblock_configuration->GetFilterLists(),
+ std::ranges::any_of(adblock_configuration->GetFilterLists(),
+ [&](const auto& url) {
+ return url == adblock::AcceptableAdsUrl();
+ }))));
@@ -2209,7 +2209,7 @@ new file mode 100644
+ const auto installed_configurations =
+ subscription_service->GetInstalledFilteringConfigurations();
+ auto configuration_it =
+ base::ranges::find(installed_configurations, config_name,
+ std::ranges::find(installed_configurations, config_name,
+ &adblock::FilteringConfiguration::GetName);
+ return configuration_it != installed_configurations.end() ? *configuration_it
+ : nullptr;
@@ -2560,7 +2560,7 @@ new file mode 100644
+ const auto installed_configurations =
+ subscription_service->GetInstalledFilteringConfigurations();
+ auto configuration_it =
+ base::ranges::find(installed_configurations, params->config_name,
+ std::ranges::find(installed_configurations, params->config_name,
+ &adblock::FilteringConfiguration::GetName);
+ if (configuration_it == installed_configurations.end()) {
+ auto new_filtering_configuration =
@@ -2593,7 +2593,7 @@ new file mode 100644
+ const auto installed_configurations =
+ subscription_service->GetInstalledFilteringConfigurations();
+ auto configuration_it =
+ base::ranges::find(installed_configurations, params->config_name,
+ std::ranges::find(installed_configurations, params->config_name,
+ &adblock::FilteringConfiguration::GetName);
+ if (configuration_it != installed_configurations.end()) {
+ subscription_service->UninstallFilteringConfiguration(
@@ -2616,7 +2616,7 @@ new file mode 100644
+ const auto installed_configurations =
+ subscription_service->GetInstalledFilteringConfigurations();
+ std::vector<std::string> configurations;
+ base::ranges::transform(installed_configurations,
+ std::ranges::transform(installed_configurations,
+ std::back_inserter(configurations),
+ [](adblock::FilteringConfiguration* config) {
+ return config->GetName();
+4 -6
View File
@@ -4,8 +4,8 @@ Subject: kill Auth
License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html
---
.../signin/SystemAccountManagerDelegate.java | 67 ++-----------------
1 file changed, 4 insertions(+), 63 deletions(-)
.../signin/SystemAccountManagerDelegate.java | 65 +------------------
1 file changed, 3 insertions(+), 62 deletions(-)
diff --git a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java b/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
--- a/components/signin/public/android/java/src/org/chromium/components/signin/SystemAccountManagerDelegate.java
@@ -98,11 +98,10 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s
}
// No permission is needed on 23+ and Chrome always has MANAGE_ACCOUNTS permission on lower APIs
@@ -217,15 +165,8 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@@ -218,14 +166,7 @@ public class SystemAccountManagerDelegate implements AccountManagerDelegate {
@Nullable
@Override
- public GaiaId getAccountGaiaId(String accountEmail) {
public GaiaId getAccountGaiaId(String accountEmail) {
- try {
- return new GaiaId(
- GoogleAuthUtil.getAccountId(
@@ -111,7 +110,6 @@ diff --git a/components/signin/public/android/java/src/org/chromium/components/s
- Log.e(TAG, "SystemAccountManagerDelegate.getAccountGaiaId", ex);
- return null;
- }
+ public String getAccountGaiaId(String accountEmail) {
+ return null;
}
@@ -1837,7 +1837,7 @@ new file mode 100644
--- /dev/null
+++ b/cromite_flags/content/public/common/content_features_cc/ungoogled-chromium-no-special-hosts-domains.inc
@@ -0,0 +1 @@
+SET_CROMITE_FEATURE_DISABLED(kFedCmIdpSigninStatusEnabled);
+// none
diff --git a/net/base/url_util.cc b/net/base/url_util.cc
--- a/net/base/url_util.cc
+++ b/net/base/url_util.cc