Loading build/patches/Add-a-proxy-configuration-page.patch +9 −13 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/java/res/values/values.xml | 3 + .../java/res/xml/privacy_preferences.xml | 4 + .../privacy/settings/PrivacySettings.java | 1 + .../chrome_autocomplete_provider_client.cc | 2 + .../chrome_autocomplete_provider_client.cc | 1 + chrome/browser/browser_resources.grd | 3 + .../extensions/api/proxy/proxy_api_helpers.cc | 2 +- chrome/browser/net/proxy_service_factory.cc | 24 +- Loading @@ -30,7 +30,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/resources/proxy_config.js | 278 +++++++++++++ chrome/browser/ui/BUILD.gn | 2 + .../webui/chrome_web_ui_controller_factory.cc | 3 + chrome/browser/ui/webui/proxy_config_ui.cc | 392 ++++++++++++++++++ chrome/browser/ui/webui/proxy_config_ui.cc | 389 ++++++++++++++++++ chrome/browser/ui/webui/proxy_config_ui.h | 31 ++ chrome/common/webui_url_constants.cc | 2 + chrome/common/webui_url_constants.h | 2 + Loading @@ -40,7 +40,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../proxy_config/proxy_policy_handler.cc | 2 +- net/proxy_resolution/proxy_config.cc | 51 ++- net/proxy_resolution/proxy_config.h | 3 + 25 files changed, 977 insertions(+), 17 deletions(-) 25 files changed, 973 insertions(+), 17 deletions(-) create mode 100644 chrome/browser/resources/proxy_config.css create mode 100644 chrome/browser/resources/proxy_config.html create mode 100644 chrome/browser/resources/proxy_config.js Loading Loading @@ -88,12 +88,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc @@ -319,6 +319,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { @@ -319,6 +319,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back(chrome::kChromeUISettingsURL16); #endif builtins_to_provide.push_back(chrome::kChromeUIVersionURL16); + builtins_to_provide.push_back( + base::ASCIIToUTF16(chrome::kChromeUIProxyConfigURL)); + builtins_to_provide.push_back(chrome::kChromeUIProxyConfigURL16); return builtins_to_provide; } Loading Loading @@ -694,7 +693,7 @@ diff --git a/chrome/browser/ui/webui/proxy_config_ui.cc b/chrome/browser/ui/webu new file mode 100644 --- /dev/null +++ b/chrome/browser/ui/webui/proxy_config_ui.cc @@ -0,0 +1,392 @@ @@ -0,0 +1,389 @@ +/* + This file is part of Bromite. + Loading Loading @@ -756,7 +755,6 @@ new file mode 100644 +// this class's public methods are expected to run on the UI thread. +class ProxyConfigMessageHandler + : public WebUIMessageHandler, + public base::SupportsWeakPtr<ProxyConfigMessageHandler>, + public net::ProxyConfigService::Observer { + public: + ProxyConfigMessageHandler(const ProxyConfigMessageHandler&) = delete; Loading Loading @@ -794,12 +792,10 @@ new file mode 100644 + + void apply(const net::ProxyConfig& config); + + base::WeakPtrFactory<ProxyConfigMessageHandler> weak_ptr_factory_; + base::WeakPtrFactory<ProxyConfigMessageHandler> weak_ptr_factory_{this}; +}; + +ProxyConfigMessageHandler::ProxyConfigMessageHandler(Profile *profile) + : + weak_ptr_factory_(this) { +ProxyConfigMessageHandler::ProxyConfigMessageHandler(Profile *profile) { + + // used to set new configuration preferences + pref_service_ = g_browser_process->local_state(); Loading Loading @@ -1149,7 +1145,7 @@ diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_const inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/"; inline constexpr char kChromeUINewTabHost[] = "newtab"; +inline constexpr char kChromeUIProxyConfigURL[] = "chrome://proxy/"; +inline constexpr char16_t kChromeUIProxyConfigURL16[] = u"chrome://proxy/"; +inline constexpr char kChromeUIProxyConfigHost[] = "proxy"; inline constexpr char kChromeUINewTabPageHost[] = "new-tab-page"; inline constexpr char kChromeUINewTabPageThirdPartyHost[] = Loading build/patches/Add-an-always-incognito-mode.patch +22 −15 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tabmodel/TabModelSelectorImpl.java | 3 + .../browser/tabmodel/TabPersistentStore.java | 9 + .../browser/toolbar/ToolbarManager.java | 3 +- .../webapps/WebappIntentDataProvider.java | 14 ++ .../webapps/WebappIntentDataProvider.java | 15 ++ .../browser/android/historical_tab_saver.cc | 24 ++- .../chrome_autocomplete_provider_client.cc | 9 + .../chrome_autocomplete_provider_client.h | 1 + Loading Loading @@ -85,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + net/base/file_stream_context.cc | 2 +- 66 files changed, 780 insertions(+), 102 deletions(-) 66 files changed, 781 insertions(+), 102 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java Loading Loading @@ -493,7 +493,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust + @Override + public @CustomTabProfileType int getCustomTabMode() { + return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); + return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() + ? CustomTabProfileType.INCOGNITO + : CustomTabProfileType.REGULAR; + } Loading Loading @@ -1136,17 +1136,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java @@ -33,6 +33,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; @@ -33,6 +33,8 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.ui.util.ColorUtils; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** Stores info about a web app. */ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider { private final Drawable mCloseButtonIcon; @@ -45,6 +48,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider @@ -45,6 +47,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider private final ColorProviderImpl mColorProvider; private final ColorProviderImpl mDarkColorProvider; Loading @@ -1155,7 +1154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI /** Returns the toolbar color to use if a custom color is not specified by the webapp. */ public static int getDefaultToolbarColor() { return Color.WHITE; @@ -80,6 +85,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider @@ -80,6 +84,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider mWebappExtras = webappExtras; mWebApkExtras = webApkExtras; mActivityType = (webApkExtras != null) ? ActivityType.WEB_APK : ActivityType.WEBAPP; Loading @@ -1166,13 +1165,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI } @Override @@ -175,6 +184,11 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider @@ -175,6 +183,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider return mWebApkExtras; } + @Override + public boolean isIncognito() { + return mIsIncognito; + public @CustomTabProfileType int getCustomTabMode() { + return mIsIncognito + ? CustomTabProfileType.INCOGNITO + : CustomTabProfileType.REGULAR; + } + @Override Loading Loading @@ -1849,7 +1850,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** @@ -195,9 +199,10 @@ public interface NativePage { @@ -195,7 +199,8 @@ public interface NativePage { * @return Type of the native page defined in {@link NativePageType}. */ private static @NativePageType int nativePageType( Loading @@ -1857,11 +1858,17 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ + GURL url, NativePage candidatePage, boolean isIncognito, boolean hasPdfDownload, + boolean isAlwaysIncognito) { if (hasPdfDownload) { - // For navigation with associated pdf download (e.g. open a pdf link), pdf page should + // For navigation with associated pdf download (e.g. open a pdf link, isAlwaysIncognito), pdf page should // For navigation with associated pdf download (e.g. open a pdf link), pdf page should // be created. // Unlike other native pages, each pdf page could be different. We need to compare // the entire url instead of the host to determine if the pdf candidate page could @@ -213,7 +218,7 @@ public interface NativePage { // created after the pdf document is re-downloaded in other parts of the code. return NativePageType.NONE; } else { - return chromePageType(url, candidatePage, isIncognito); + return chromePageType(url, candidatePage, isIncognito, isAlwaysIncognito); } } @@ -225,7 +230,7 @@ public interface NativePage { * which do not have chrome or chrome-native scheme. */ Loading build/patches/Add-bookmark-import-export-actions.patch +24 −30 Original line number Diff line number Diff line Loading @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../menu/bookmark_toolbar_menu_improved.xml | 14 + .../browser/TabbedModeTabDelegateFactory.java | 5 +- .../app/bookmarks/BookmarkActivity.java | 32 ++ .../browser/bookmarks/BookmarkBridge.java | 285 +++++++++++++++++ .../browser/bookmarks/BookmarkBridge.java | 285 ++++++++++++++++++ .../browser/bookmarks/BookmarkDelegate.java | 10 + .../bookmarks/BookmarkManagerCoordinator.java | 9 + .../bookmarks/BookmarkManagerMediator.java | 23 ++ Loading @@ -26,8 +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 | 287 ++++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../bookmarks/android/bookmark_bridge.cc | 282 +++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 29 +- .../browser/bookmarks/bookmark_html_writer.cc | 11 + .../dialogs/DownloadLocationCustomView.java | 8 +- .../DownloadLocationDialogCoordinator.java | 10 +- Loading @@ -53,7 +53,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, 919 insertions(+), 30 deletions(-) 42 files changed, 913 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 Loading Loading @@ -878,7 +878,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" @@ -77,12 +99,96 @@ using bookmarks::android::JavaBookmarkIdGetType; @@ -77,12 +99,97 @@ using bookmarks::android::JavaBookmarkIdGetType; using content::BrowserThread; using power_bookmarks::PowerBookmarkMeta; Loading Loading @@ -910,13 +910,14 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return true; + + GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string())); + for (size_t i = 0; i < chrome::kNumberOfChromeHostURLs; ++i) { + if (fixed_url.DomainIs(chrome::kChromeHostURLs[i])) + const base::span<const base::cstring_view> hosts = chrome::ChromeURLHosts(); + for (const base::cstring_view host : hosts) { + if (fixed_url.DomainIs(host)) { + return true; + } + } + + for (size_t i = 0; i < chrome::kNumberOfChromeDebugURLs; ++i) { + if (fixed_url == chrome::kChromeDebugURLs[i]) + if (base::Contains(chrome::ChromeDebugURLs(), fixed_url)) { + return true; + } + Loading Loading @@ -975,7 +976,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse class BookmarkTitleComparer { public: explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge, @@ -223,6 +329,10 @@ BookmarkBridge::~BookmarkBridge() { @@ -223,6 +330,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); Loading @@ -986,7 +987,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv* env) { @@ -762,6 +872,183 @@ jint BookmarkBridge::GetTotalBookmarkCount( @@ -762,6 +873,177 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } Loading @@ -1007,10 +1008,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + ui::SelectFileDialog::FileTypeInfo file_type_info; + + const std::vector<std::u16string> v_accept_types = { u"text/html" }; + + // Android needs the original MIME types and an additional capture value. + std::pair<std::vector<std::u16string>, bool> accept_types = + std::make_pair(v_accept_types, /* use_media_capture */ false); + select_file_dialog_->SetAcceptTypes(v_accept_types); + + select_file_dialog_->SelectFile( + ui::SelectFileDialog::SELECT_OPEN_FILE, Loading @@ -1019,8 +1017,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + &file_type_info, + 0, + base::FilePath::StringType(), + window, + &accept_types + window + ); +} + Loading Loading @@ -1068,8 +1065,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return std::make_unique<TemplateURL>(data); +} + +void BookmarkBridge::FileSelected(const ui::SelectedFileInfo& file, int index, + void* params) { +void BookmarkBridge::FileSelected(const ui::SelectedFileInfo& file, int index) { + base::FilePath path = file.path(); + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()}, Loading Loading @@ -1164,8 +1160,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + LOG(INFO) << result; +} + +void BookmarkBridge::FileSelectionCanceled(void* params) { +} +void BookmarkBridge::FileSelectionCanceled() {} + void BookmarkBridge::SetBookmarkTitle(JNIEnv* env, jlong id, Loading Loading @@ -1201,20 +1196,19 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser public: // All of the injected pointers must be non-null and must outlive `this`. BookmarkBridge(Profile* profile, @@ -81,6 +86,12 @@ class BookmarkBridge : public ProfileObserver, @@ -81,6 +86,11 @@ class BookmarkBridge : public ProfileObserver, bool IsDoingExtensiveChanges(JNIEnv* env); + // SelectFileDialog::Listener implementation. + void FileSelected(const ui::SelectedFileInfo& file, + int index, + void* params) override; + void FileSelectionCanceled(void* params) override; + int index) override; + void FileSelectionCanceled() override; + jboolean IsEditBookmarksEnabled(JNIEnv* env); void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env); @@ -93,6 +104,15 @@ class BookmarkBridge : public ProfileObserver, @@ -93,6 +103,15 @@ class BookmarkBridge : public ProfileObserver, jlong id, jint type); Loading @@ -1230,7 +1224,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser void GetAllFoldersWithDepths( JNIEnv* env, const base::android::JavaParamRef<jobject>& j_folders_obj, @@ -363,6 +383,9 @@ class BookmarkBridge : public ProfileObserver, @@ -363,6 +382,9 @@ class BookmarkBridge : public ProfileObserver, void CreateOrDestroyAccountReadingListManagerIfNeeded(); const raw_ptr<Profile> profile_; // weak Loading @@ -1240,7 +1234,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaGlobalRef<jobject> java_bookmark_model_; const raw_ptr<bookmarks::BookmarkModel> bookmark_model_; // weak const raw_ptr<bookmarks::ManagedBookmarkService> @@ -377,6 +400,7 @@ class BookmarkBridge : public ProfileObserver, @@ -377,6 +399,7 @@ class BookmarkBridge : public ProfileObserver, std::unique_ptr<bookmarks::ScopedGroupBookmarkActions> grouped_bookmark_actions_; PrefChangeRegistrar pref_change_registrar_; Loading @@ -1248,7 +1242,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. @@ -408,6 +432,10 @@ class BookmarkBridge : public ProfileObserver, @@ -408,6 +431,10 @@ class BookmarkBridge : public ProfileObserver, bool suppress_observer_notifications_ = false; Loading build/patches/Add-cromite-flags-support.patch +3 −3 Original line number Diff line number Diff line Loading @@ -993,10 +993,10 @@ new file mode 100644 diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_state.cc --- a/components/flags_ui/flags_state.cc +++ b/components/flags_ui/flags_state.cc @@ -361,6 +361,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( @@ -360,6 +360,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); CHECK(entry_it != name_to_switch_map.end(), base::NotFatalUntil::M130); + if (entry_it == name_to_switch_map.end()) { + // check if is a cromite feature + std::string::size_type pos = entry_name.find('@'); Loading @@ -1012,9 +1012,9 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat + } + NOTREACHED_NORETURN(); + } CHECK(entry_it != name_to_switch_map.end(), base::NotFatalUntil::M130); const SwitchEntry& entry = entry_it->second; if (!entry.switch_name.empty()) @@ -677,6 +692,27 @@ void FlagsState::GetFlagFeatureEntries( data.Set("links", std::move(links)); } Loading build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch +4 −3 Original line number Diff line number Diff line Loading @@ -7,9 +7,9 @@ Allows build with clangd by suppressing unsupported parameters 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 --- build/config/compiler/BUILD.gn | 10 +++++++++- build/config/compiler/BUILD.gn | 11 ++++++++++- build_overrides/build.gni | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn --- a/build/config/compiler/BUILD.gn Loading @@ -22,7 +22,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn cflags_cc += [ # TODO(crbug.com/328490295): Fix and re-enable for C flags. "-Wenum-compare-conditional", @@ -1965,6 +1964,15 @@ config("default_warnings") { @@ -1965,6 +1964,16 @@ config("default_warnings") { # TODO(crbug.com/344680447): Fix and re-enable. cflags_cc += [ "-Wno-missing-template-arg-list-after-template-kw" ] } Loading @@ -33,6 +33,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn + ] + cflags_cc -= [ + "-Wno-c++11-narrowing-const-reference", + "-Wno-missing-template-arg-list-after-template-kw", + ] + } } Loading Loading
build/patches/Add-a-proxy-configuration-page.patch +9 −13 Original line number Diff line number Diff line Loading @@ -18,7 +18,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/android/java/res/values/values.xml | 3 + .../java/res/xml/privacy_preferences.xml | 4 + .../privacy/settings/PrivacySettings.java | 1 + .../chrome_autocomplete_provider_client.cc | 2 + .../chrome_autocomplete_provider_client.cc | 1 + chrome/browser/browser_resources.grd | 3 + .../extensions/api/proxy/proxy_api_helpers.cc | 2 +- chrome/browser/net/proxy_service_factory.cc | 24 +- Loading @@ -30,7 +30,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html chrome/browser/resources/proxy_config.js | 278 +++++++++++++ chrome/browser/ui/BUILD.gn | 2 + .../webui/chrome_web_ui_controller_factory.cc | 3 + chrome/browser/ui/webui/proxy_config_ui.cc | 392 ++++++++++++++++++ chrome/browser/ui/webui/proxy_config_ui.cc | 389 ++++++++++++++++++ chrome/browser/ui/webui/proxy_config_ui.h | 31 ++ chrome/common/webui_url_constants.cc | 2 + chrome/common/webui_url_constants.h | 2 + Loading @@ -40,7 +40,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../proxy_config/proxy_policy_handler.cc | 2 +- net/proxy_resolution/proxy_config.cc | 51 ++- net/proxy_resolution/proxy_config.h | 3 + 25 files changed, 977 insertions(+), 17 deletions(-) 25 files changed, 973 insertions(+), 17 deletions(-) create mode 100644 chrome/browser/resources/proxy_config.css create mode 100644 chrome/browser/resources/proxy_config.html create mode 100644 chrome/browser/resources/proxy_config.js Loading Loading @@ -88,12 +88,11 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/privacy/setting diff --git a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc --- a/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc +++ b/chrome/browser/autocomplete/chrome_autocomplete_provider_client.cc @@ -319,6 +319,8 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { @@ -319,6 +319,7 @@ ChromeAutocompleteProviderClient::GetBuiltinsToProvideAsUserTypes() { builtins_to_provide.push_back(chrome::kChromeUISettingsURL16); #endif builtins_to_provide.push_back(chrome::kChromeUIVersionURL16); + builtins_to_provide.push_back( + base::ASCIIToUTF16(chrome::kChromeUIProxyConfigURL)); + builtins_to_provide.push_back(chrome::kChromeUIProxyConfigURL16); return builtins_to_provide; } Loading Loading @@ -694,7 +693,7 @@ diff --git a/chrome/browser/ui/webui/proxy_config_ui.cc b/chrome/browser/ui/webu new file mode 100644 --- /dev/null +++ b/chrome/browser/ui/webui/proxy_config_ui.cc @@ -0,0 +1,392 @@ @@ -0,0 +1,389 @@ +/* + This file is part of Bromite. + Loading Loading @@ -756,7 +755,6 @@ new file mode 100644 +// this class's public methods are expected to run on the UI thread. +class ProxyConfigMessageHandler + : public WebUIMessageHandler, + public base::SupportsWeakPtr<ProxyConfigMessageHandler>, + public net::ProxyConfigService::Observer { + public: + ProxyConfigMessageHandler(const ProxyConfigMessageHandler&) = delete; Loading Loading @@ -794,12 +792,10 @@ new file mode 100644 + + void apply(const net::ProxyConfig& config); + + base::WeakPtrFactory<ProxyConfigMessageHandler> weak_ptr_factory_; + base::WeakPtrFactory<ProxyConfigMessageHandler> weak_ptr_factory_{this}; +}; + +ProxyConfigMessageHandler::ProxyConfigMessageHandler(Profile *profile) + : + weak_ptr_factory_(this) { +ProxyConfigMessageHandler::ProxyConfigMessageHandler(Profile *profile) { + + // used to set new configuration preferences + pref_service_ = g_browser_process->local_state(); Loading Loading @@ -1149,7 +1145,7 @@ diff --git a/chrome/common/webui_url_constants.h b/chrome/common/webui_url_const inline constexpr char kChromeUINetInternalsHost[] = "net-internals"; inline constexpr char kChromeUINetInternalsURL[] = "chrome://net-internals/"; inline constexpr char kChromeUINewTabHost[] = "newtab"; +inline constexpr char kChromeUIProxyConfigURL[] = "chrome://proxy/"; +inline constexpr char16_t kChromeUIProxyConfigURL16[] = u"chrome://proxy/"; +inline constexpr char kChromeUIProxyConfigHost[] = "proxy"; inline constexpr char kChromeUINewTabPageHost[] = "new-tab-page"; inline constexpr char kChromeUINewTabPageThirdPartyHost[] = Loading
build/patches/Add-an-always-incognito-mode.patch +22 −15 Original line number Diff line number Diff line Loading @@ -47,7 +47,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../tabmodel/TabModelSelectorImpl.java | 3 + .../browser/tabmodel/TabPersistentStore.java | 9 + .../browser/toolbar/ToolbarManager.java | 3 +- .../webapps/WebappIntentDataProvider.java | 14 ++ .../webapps/WebappIntentDataProvider.java | 15 ++ .../browser/android/historical_tab_saver.cc | 24 ++- .../chrome_autocomplete_provider_client.cc | 9 + .../chrome_autocomplete_provider_client.h | 1 + Loading Loading @@ -85,7 +85,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../add-an-always-incognito-mode.inc | 3 + .../add-an-always-incognito-mode.inc | 1 + net/base/file_stream_context.cc | 2 +- 66 files changed, 780 insertions(+), 102 deletions(-) 66 files changed, 781 insertions(+), 102 deletions(-) create mode 100644 chrome/android/java/res/xml/incognito_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/privacy/settings/IncognitoSettings.java Loading Loading @@ -493,7 +493,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/customtabs/Cust + @Override + public @CustomTabProfileType int getCustomTabMode() { + return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito(); + return AlwaysIncognitoLinkInterceptor.isAlwaysIncognito() + ? CustomTabProfileType.INCOGNITO + : CustomTabProfileType.REGULAR; + } Loading Loading @@ -1136,17 +1136,16 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/toolbar/Toolbar diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java --- a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappIntentDataProvider.java @@ -33,6 +33,9 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; @@ -33,6 +33,8 @@ import org.chromium.components.browser_ui.widget.TintedDrawable; import org.chromium.device.mojom.ScreenOrientationLockType; import org.chromium.ui.util.ColorUtils; +import org.chromium.base.ContextUtils; +import org.chromium.chrome.browser.AlwaysIncognitoLinkInterceptor; + /** Stores info about a web app. */ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider { private final Drawable mCloseButtonIcon; @@ -45,6 +48,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider @@ -45,6 +47,8 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider private final ColorProviderImpl mColorProvider; private final ColorProviderImpl mDarkColorProvider; Loading @@ -1155,7 +1154,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI /** Returns the toolbar color to use if a custom color is not specified by the webapp. */ public static int getDefaultToolbarColor() { return Color.WHITE; @@ -80,6 +85,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider @@ -80,6 +84,10 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider mWebappExtras = webappExtras; mWebApkExtras = webApkExtras; mActivityType = (webApkExtras != null) ? ActivityType.WEB_APK : ActivityType.WEBAPP; Loading @@ -1166,13 +1165,15 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/webapps/WebappI } @Override @@ -175,6 +184,11 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider @@ -175,6 +183,13 @@ public class WebappIntentDataProvider extends BrowserServicesIntentDataProvider return mWebApkExtras; } + @Override + public boolean isIncognito() { + return mIsIncognito; + public @CustomTabProfileType int getCustomTabMode() { + return mIsIncognito + ? CustomTabProfileType.INCOGNITO + : CustomTabProfileType.REGULAR; + } + @Override Loading Loading @@ -1849,7 +1850,7 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ } /** @@ -195,9 +199,10 @@ public interface NativePage { @@ -195,7 +199,8 @@ public interface NativePage { * @return Type of the native page defined in {@link NativePageType}. */ private static @NativePageType int nativePageType( Loading @@ -1857,11 +1858,17 @@ diff --git a/chrome/browser/ui/android/native_page/java/src/org/chromium/chrome/ + GURL url, NativePage candidatePage, boolean isIncognito, boolean hasPdfDownload, + boolean isAlwaysIncognito) { if (hasPdfDownload) { - // For navigation with associated pdf download (e.g. open a pdf link), pdf page should + // For navigation with associated pdf download (e.g. open a pdf link, isAlwaysIncognito), pdf page should // For navigation with associated pdf download (e.g. open a pdf link), pdf page should // be created. // Unlike other native pages, each pdf page could be different. We need to compare // the entire url instead of the host to determine if the pdf candidate page could @@ -213,7 +218,7 @@ public interface NativePage { // created after the pdf document is re-downloaded in other parts of the code. return NativePageType.NONE; } else { - return chromePageType(url, candidatePage, isIncognito); + return chromePageType(url, candidatePage, isIncognito, isAlwaysIncognito); } } @@ -225,7 +230,7 @@ public interface NativePage { * which do not have chrome or chrome-native scheme. */ Loading
build/patches/Add-bookmark-import-export-actions.patch +24 −30 Original line number Diff line number Diff line Loading @@ -15,7 +15,7 @@ License: GPL-3.0-only - https://spdx.org/licenses/GPL-3.0-only.html .../menu/bookmark_toolbar_menu_improved.xml | 14 + .../browser/TabbedModeTabDelegateFactory.java | 5 +- .../app/bookmarks/BookmarkActivity.java | 32 ++ .../browser/bookmarks/BookmarkBridge.java | 285 +++++++++++++++++ .../browser/bookmarks/BookmarkBridge.java | 285 ++++++++++++++++++ .../browser/bookmarks/BookmarkDelegate.java | 10 + .../bookmarks/BookmarkManagerCoordinator.java | 9 + .../bookmarks/BookmarkManagerMediator.java | 23 ++ Loading @@ -26,8 +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 | 287 ++++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 30 +- .../bookmarks/android/bookmark_bridge.cc | 282 +++++++++++++++++ .../bookmarks/android/bookmark_bridge.h | 29 +- .../browser/bookmarks/bookmark_html_writer.cc | 11 + .../dialogs/DownloadLocationCustomView.java | 8 +- .../DownloadLocationDialogCoordinator.java | 10 +- Loading @@ -53,7 +53,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, 919 insertions(+), 30 deletions(-) 42 files changed, 913 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 Loading Loading @@ -878,7 +878,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" @@ -77,12 +99,96 @@ using bookmarks::android::JavaBookmarkIdGetType; @@ -77,12 +99,97 @@ using bookmarks::android::JavaBookmarkIdGetType; using content::BrowserThread; using power_bookmarks::PowerBookmarkMeta; Loading Loading @@ -910,13 +910,14 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return true; + + GURL fixed_url(url_formatter::FixupURL(url.spec(), std::string())); + for (size_t i = 0; i < chrome::kNumberOfChromeHostURLs; ++i) { + if (fixed_url.DomainIs(chrome::kChromeHostURLs[i])) + const base::span<const base::cstring_view> hosts = chrome::ChromeURLHosts(); + for (const base::cstring_view host : hosts) { + if (fixed_url.DomainIs(host)) { + return true; + } + } + + for (size_t i = 0; i < chrome::kNumberOfChromeDebugURLs; ++i) { + if (fixed_url == chrome::kChromeDebugURLs[i]) + if (base::Contains(chrome::ChromeDebugURLs(), fixed_url)) { + return true; + } + Loading Loading @@ -975,7 +976,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse class BookmarkTitleComparer { public: explicit BookmarkTitleComparer(BookmarkBridge* bookmark_bridge, @@ -223,6 +329,10 @@ BookmarkBridge::~BookmarkBridge() { @@ -223,6 +330,10 @@ BookmarkBridge::~BookmarkBridge() { partner_bookmarks_shim_observation_.Reset(); bookmark_model_observation_.Reset(); profile_observation_.Reset(); Loading @@ -986,7 +987,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse } void BookmarkBridge::Destroy(JNIEnv* env) { @@ -762,6 +872,183 @@ jint BookmarkBridge::GetTotalBookmarkCount( @@ -762,6 +873,177 @@ jint BookmarkBridge::GetTotalBookmarkCount( return count; } Loading @@ -1007,10 +1008,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + ui::SelectFileDialog::FileTypeInfo file_type_info; + + const std::vector<std::u16string> v_accept_types = { u"text/html" }; + + // Android needs the original MIME types and an additional capture value. + std::pair<std::vector<std::u16string>, bool> accept_types = + std::make_pair(v_accept_types, /* use_media_capture */ false); + select_file_dialog_->SetAcceptTypes(v_accept_types); + + select_file_dialog_->SelectFile( + ui::SelectFileDialog::SELECT_OPEN_FILE, Loading @@ -1019,8 +1017,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + &file_type_info, + 0, + base::FilePath::StringType(), + window, + &accept_types + window + ); +} + Loading Loading @@ -1068,8 +1065,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + return std::make_unique<TemplateURL>(data); +} + +void BookmarkBridge::FileSelected(const ui::SelectedFileInfo& file, int index, + void* params) { +void BookmarkBridge::FileSelected(const ui::SelectedFileInfo& file, int index) { + base::FilePath path = file.path(); + base::ThreadPool::PostTaskAndReplyWithResult( + FROM_HERE, {base::TaskPriority::BEST_EFFORT, base::MayBlock()}, Loading Loading @@ -1164,8 +1160,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.cc b/chrome/browse + LOG(INFO) << result; +} + +void BookmarkBridge::FileSelectionCanceled(void* params) { +} +void BookmarkBridge::FileSelectionCanceled() {} + void BookmarkBridge::SetBookmarkTitle(JNIEnv* env, jlong id, Loading Loading @@ -1201,20 +1196,19 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser public: // All of the injected pointers must be non-null and must outlive `this`. BookmarkBridge(Profile* profile, @@ -81,6 +86,12 @@ class BookmarkBridge : public ProfileObserver, @@ -81,6 +86,11 @@ class BookmarkBridge : public ProfileObserver, bool IsDoingExtensiveChanges(JNIEnv* env); + // SelectFileDialog::Listener implementation. + void FileSelected(const ui::SelectedFileInfo& file, + int index, + void* params) override; + void FileSelectionCanceled(void* params) override; + int index) override; + void FileSelectionCanceled() override; + jboolean IsEditBookmarksEnabled(JNIEnv* env); void LoadEmptyPartnerBookmarkShimForTesting(JNIEnv* env); @@ -93,6 +104,15 @@ class BookmarkBridge : public ProfileObserver, @@ -93,6 +103,15 @@ class BookmarkBridge : public ProfileObserver, jlong id, jint type); Loading @@ -1230,7 +1224,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser void GetAllFoldersWithDepths( JNIEnv* env, const base::android::JavaParamRef<jobject>& j_folders_obj, @@ -363,6 +383,9 @@ class BookmarkBridge : public ProfileObserver, @@ -363,6 +382,9 @@ class BookmarkBridge : public ProfileObserver, void CreateOrDestroyAccountReadingListManagerIfNeeded(); const raw_ptr<Profile> profile_; // weak Loading @@ -1240,7 +1234,7 @@ diff --git a/chrome/browser/bookmarks/android/bookmark_bridge.h b/chrome/browser base::android::ScopedJavaGlobalRef<jobject> java_bookmark_model_; const raw_ptr<bookmarks::BookmarkModel> bookmark_model_; // weak const raw_ptr<bookmarks::ManagedBookmarkService> @@ -377,6 +400,7 @@ class BookmarkBridge : public ProfileObserver, @@ -377,6 +399,7 @@ class BookmarkBridge : public ProfileObserver, std::unique_ptr<bookmarks::ScopedGroupBookmarkActions> grouped_bookmark_actions_; PrefChangeRegistrar pref_change_registrar_; Loading @@ -1248,7 +1242,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. @@ -408,6 +432,10 @@ class BookmarkBridge : public ProfileObserver, @@ -408,6 +431,10 @@ class BookmarkBridge : public ProfileObserver, bool suppress_observer_notifications_ = false; Loading
build/patches/Add-cromite-flags-support.patch +3 −3 Original line number Diff line number Diff line Loading @@ -993,10 +993,10 @@ new file mode 100644 diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_state.cc --- a/components/flags_ui/flags_state.cc +++ b/components/flags_ui/flags_state.cc @@ -361,6 +361,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( @@ -360,6 +360,21 @@ void FlagsState::GetSwitchesAndFeaturesFromFlags( for (const std::string& entry_name : enabled_entries) { const auto& entry_it = name_to_switch_map.find(entry_name); CHECK(entry_it != name_to_switch_map.end(), base::NotFatalUntil::M130); + if (entry_it == name_to_switch_map.end()) { + // check if is a cromite feature + std::string::size_type pos = entry_name.find('@'); Loading @@ -1012,9 +1012,9 @@ diff --git a/components/flags_ui/flags_state.cc b/components/flags_ui/flags_stat + } + NOTREACHED_NORETURN(); + } CHECK(entry_it != name_to_switch_map.end(), base::NotFatalUntil::M130); const SwitchEntry& entry = entry_it->second; if (!entry.switch_name.empty()) @@ -677,6 +692,27 @@ void FlagsState::GetFlagFeatureEntries( data.Set("links", std::move(links)); } Loading
build/patches/Add-kill-switch-for-unsupported-clangd-flags.patch +4 −3 Original line number Diff line number Diff line Loading @@ -7,9 +7,9 @@ Allows build with clangd by suppressing unsupported parameters 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 --- build/config/compiler/BUILD.gn | 10 +++++++++- build/config/compiler/BUILD.gn | 11 ++++++++++- build_overrides/build.gni | 3 +++ 2 files changed, 12 insertions(+), 1 deletion(-) 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn --- a/build/config/compiler/BUILD.gn Loading @@ -22,7 +22,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn cflags_cc += [ # TODO(crbug.com/328490295): Fix and re-enable for C flags. "-Wenum-compare-conditional", @@ -1965,6 +1964,15 @@ config("default_warnings") { @@ -1965,6 +1964,16 @@ config("default_warnings") { # TODO(crbug.com/344680447): Fix and re-enable. cflags_cc += [ "-Wno-missing-template-arg-list-after-template-kw" ] } Loading @@ -33,6 +33,7 @@ diff --git a/build/config/compiler/BUILD.gn b/build/config/compiler/BUILD.gn + ] + cflags_cc -= [ + "-Wno-c++11-narrowing-const-reference", + "-Wno-missing-template-arg-list-after-template-kw", + ] + } } Loading