From c220590b7c106fb0d7336962ec072a114ddbe10a Mon Sep 17 00:00:00 2001 From: Jocelyn Liu Date: Sat, 10 Apr 2021 16:48:28 -0700 Subject: [PATCH] Enable support of Unstoppable Domains and ENS via DoH on Android --- android/BUILD.gn | 3 +- android/brave_java_resources.gni | 4 + android/brave_java_sources.gni | 4 + .../settings/ENSSettingsFragment.java | 39 +++++++++ ...ButtonGroupENSResolveMethodPreference.java | 78 ++++++++++++++++++ ...oppableDomainsResolveMethodPreference.java | 80 +++++++++++++++++++ .../UnstoppableDomainsSettingsFragment.java | 41 ++++++++++ .../preferences/BravePrefServiceBridge.java | 22 +++++ ...on_group_ens_resolve_method_preference.xml | 40 ++++++++++ ...able_domains_resolve_method_preference.xml | 40 ++++++++++ .../res/xml/brave_privacy_preferences.xml | 8 ++ android/java/res/xml/ens_preferences.xml | 15 ++++ .../xml/unstoppable_domains_preferences.xml | 15 ++++ .../preferences/brave_pref_service_bridge.cc | 40 ++++++++++ browser/decentralized_dns/test/BUILD.gn | 35 ++++---- .../android/strings/android_brave_strings.grd | 18 +++++ build/commands/lib/config.js | 1 - chromium_src/chrome/browser/about_flags.cc | 5 +- .../buildflags/buildflags.gni | 2 +- components/decentralized_dns/constants.h | 2 + 20 files changed, 471 insertions(+), 21 deletions(-) create mode 100644 android/java/org/chromium/chrome/browser/decentralized_dns/settings/ENSSettingsFragment.java create mode 100644 android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupENSResolveMethodPreference.java create mode 100644 android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupUnstoppableDomainsResolveMethodPreference.java create mode 100644 android/java/org/chromium/chrome/browser/decentralized_dns/settings/UnstoppableDomainsSettingsFragment.java create mode 100644 android/java/res/layout/radio_button_group_ens_resolve_method_preference.xml create mode 100644 android/java/res/layout/radio_button_group_unstoppable_domains_resolve_method_preference.xml create mode 100644 android/java/res/xml/ens_preferences.xml create mode 100644 android/java/res/xml/unstoppable_domains_preferences.xml diff --git a/android/BUILD.gn b/android/BUILD.gn index 03746cdd595c..50e1e1ee1b72 100644 --- a/android/BUILD.gn +++ b/android/BUILD.gn @@ -1,6 +1,6 @@ -import("//build/config/android/rules.gni") import("//brave/components/brave_sync/buildflags/buildflags.gni") import("//brave/components/p3a/buildflags.gni") +import("//build/config/android/rules.gni") declare_args() { brave_android_developer_options_code = "" @@ -9,6 +9,7 @@ declare_args() { java_cpp_enum("brave_android_java_enums_srcjar") { sources = [ "//brave/chromium_src/chrome/browser/notifications/notification_handler.h", + "//brave/components/decentralized_dns/constants.h", ] } diff --git a/android/brave_java_resources.gni b/android/brave_java_resources.gni index a753cc4882bc..8af83021c88f 100644 --- a/android/brave_java_resources.gni +++ b/android/brave_java_resources.gni @@ -728,6 +728,8 @@ brave_java_resources = [ "java/res/layout/ntp_widget_list_item_layout.xml", "java/res/layout/qa_code_check.xml", "java/res/layout/qa_command_line.xml", + "java/res/layout/radio_button_group_ens_resolve_method_preference.xml", + "java/res/layout/radio_button_group_unstoppable_domains_resolve_method_preference.xml", "java/res/layout/report_broken_site_layout.xml", "java/res/layout/toolbar_space.xml", "java/res/layout/top_sites_layout.xml", @@ -770,9 +772,11 @@ brave_java_resources = [ "java/res/xml/closing_all_tabs_closes_brave_preference.xml", "java/res/xml/desktop_mode_preferences.xml", "java/res/xml/developer_preferences.xml", + "java/res/xml/ens_preferences.xml", "java/res/xml/legal_information_preferences.xml", "java/res/xml/play_yt_video_in_browser_preferences.xml", "java/res/xml/qa_preferences.xml", + "java/res/xml/unstoppable_domains_preferences.xml", "java/res/xml/use_custom_tabs_brave_preference.xml", ] diff --git a/android/brave_java_sources.gni b/android/brave_java_sources.gni index 090ce0a96b3e..10ba62604274 100644 --- a/android/brave_java_sources.gni +++ b/android/brave_java_sources.gni @@ -52,6 +52,10 @@ brave_java_sources = [ "../../brave/android/java/org/chromium/chrome/browser/custom_layout/popup_window_tooltip/ArrowColorDrawable.java", "../../brave/android/java/org/chromium/chrome/browser/custom_layout/popup_window_tooltip/PopupWindowTooltip.java", "../../brave/android/java/org/chromium/chrome/browser/custom_layout/popup_window_tooltip/PopupWindowTooltipUtils.java", + "../../brave/android/java/org/chromium/chrome/browser/decentralized_dns/settings/ENSSettingsFragment.java", + "../../brave/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupENSResolveMethodPreference.java", + "../../brave/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupUnstoppableDomainsResolveMethodPreference.java", + "../../brave/android/java/org/chromium/chrome/browser/decentralized_dns/settings/UnstoppableDomainsSettingsFragment.java", "../../brave/android/java/org/chromium/chrome/browser/document/BraveLauncherActivity.java", "../../brave/android/java/org/chromium/chrome/browser/download/BraveMimeUtils.java", "../../brave/android/java/org/chromium/chrome/browser/download/settings/BraveDownloadSettings.java", diff --git a/android/java/org/chromium/chrome/browser/decentralized_dns/settings/ENSSettingsFragment.java b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/ENSSettingsFragment.java new file mode 100644 index 000000000000..13646b30f087 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/ENSSettingsFragment.java @@ -0,0 +1,39 @@ +/* Copyright (c) 2021 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.decentralized_dns.settings; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.preference.PreferenceFragmentCompat; + +import org.chromium.chrome.R; +import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; +import org.chromium.components.browser_ui.settings.SettingsUtils; + +public class ENSSettingsFragment extends PreferenceFragmentCompat { + static final String PREF_ENS_RESOLVE_METHOD = "ens_resolve_method"; + + @Override + public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) { + getActivity().setTitle(R.string.ens_title); + SettingsUtils.addPreferencesFromResource(this, R.xml.ens_preferences); + + RadioButtonGroupENSResolveMethodPreference radioButtonGroupENSResolveMethodPreference = + (RadioButtonGroupENSResolveMethodPreference) findPreference( + PREF_ENS_RESOLVE_METHOD); + + radioButtonGroupENSResolveMethodPreference.initialize( + BravePrefServiceBridge.getInstance().getENSResolveMethod()); + + radioButtonGroupENSResolveMethodPreference.setOnPreferenceChangeListener( + (preference, newValue) -> { + int method = (int) newValue; + BravePrefServiceBridge.getInstance().setENSResolveMethod(method); + return true; + }); + } +} diff --git a/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupENSResolveMethodPreference.java b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupENSResolveMethodPreference.java new file mode 100644 index 000000000000..75ff57f73fa2 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupENSResolveMethodPreference.java @@ -0,0 +1,78 @@ +/* Copyright (c) 2021 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.decentralized_dns.settings; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.RadioGroup; + +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + +import org.chromium.chrome.R; +import org.chromium.chrome.browser.decentralized_dns.ResolveMethodTypes; +import org.chromium.components.browser_ui.widget.RadioButtonWithDescription; +import org.chromium.components.browser_ui.widget.RadioButtonWithDescriptionLayout; + +import java.util.ArrayList; +import java.util.Collections; + +public class RadioButtonGroupENSResolveMethodPreference + extends Preference implements RadioGroup.OnCheckedChangeListener { + static final int OPTIONS_SIZE = ResolveMethodTypes.MAX_VALUE + 1; + + private @ResolveMethodTypes int mSetting; + private RadioButtonWithDescription mSettingRadioButton; + private RadioButtonWithDescriptionLayout mGroup; + private ArrayList mButtons; + + public RadioButtonGroupENSResolveMethodPreference(Context context, AttributeSet attrs) { + super(context, attrs); + setLayoutResource(R.layout.radio_button_group_ens_resolve_method_preference); + + mButtons = new ArrayList<>(Collections.nCopies(OPTIONS_SIZE, null)); + } + + public void initialize(@ResolveMethodTypes int type) { + mSetting = type; + } + + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + + mGroup = (RadioButtonWithDescriptionLayout) holder.findViewById( + R.id.ens_resolve_method_radio_group); + mGroup.setOnCheckedChangeListener(this); + + mButtons.set(ResolveMethodTypes.ASK, + (RadioButtonWithDescription) holder.findViewById( + R.id.ens_resolve_method_ask_radio_button)); + mButtons.set(ResolveMethodTypes.DISABLED, + (RadioButtonWithDescription) holder.findViewById( + R.id.ens_resolve_method_disabled_radio_button)); + mButtons.set(ResolveMethodTypes.DNS_OVER_HTTPS, + (RadioButtonWithDescription) holder.findViewById( + R.id.ens_resolve_method_doh_radio_button)); + + mSettingRadioButton = mButtons.get(mSetting); + mSettingRadioButton.setChecked(true); + } + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + for (int i = 0; i < OPTIONS_SIZE; i++) { + if (mButtons.get(i).isChecked()) { + mSetting = i; + mSettingRadioButton = mButtons.get(i); + break; + } + } + assert mSetting >= 0 && mSetting < OPTIONS_SIZE : "No matching setting found."; + + callChangeListener(mSetting); + } +} diff --git a/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupUnstoppableDomainsResolveMethodPreference.java b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupUnstoppableDomainsResolveMethodPreference.java new file mode 100644 index 000000000000..7310e721916b --- /dev/null +++ b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/RadioButtonGroupUnstoppableDomainsResolveMethodPreference.java @@ -0,0 +1,80 @@ +/* Copyright (c) 2021 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.decentralized_dns.settings; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.RadioGroup; + +import androidx.preference.Preference; +import androidx.preference.PreferenceViewHolder; + +import org.chromium.chrome.R; +import org.chromium.chrome.browser.decentralized_dns.ResolveMethodTypes; +import org.chromium.components.browser_ui.widget.RadioButtonWithDescription; +import org.chromium.components.browser_ui.widget.RadioButtonWithDescriptionLayout; + +import java.util.ArrayList; +import java.util.Collections; + +public class RadioButtonGroupUnstoppableDomainsResolveMethodPreference + extends Preference implements RadioGroup.OnCheckedChangeListener { + static final int OPTIONS_SIZE = ResolveMethodTypes.MAX_VALUE + 1; + + private @ResolveMethodTypes int mSetting; + private RadioButtonWithDescription mSettingRadioButton; + private RadioButtonWithDescriptionLayout mGroup; + private ArrayList mButtons; + + public RadioButtonGroupUnstoppableDomainsResolveMethodPreference( + Context context, AttributeSet attrs) { + super(context, attrs); + setLayoutResource( + R.layout.radio_button_group_unstoppable_domains_resolve_method_preference); + + mButtons = new ArrayList<>(Collections.nCopies(OPTIONS_SIZE, null)); + } + + public void initialize(@ResolveMethodTypes int type) { + mSetting = type; + } + + @Override + public void onBindViewHolder(PreferenceViewHolder holder) { + super.onBindViewHolder(holder); + + mGroup = (RadioButtonWithDescriptionLayout) holder.findViewById( + R.id.unstoppable_domains_resolve_method_radio_group); + mGroup.setOnCheckedChangeListener(this); + + mButtons.set(ResolveMethodTypes.ASK, + (RadioButtonWithDescription) holder.findViewById( + R.id.unstoppable_domains_resolve_method_ask_radio_button)); + mButtons.set(ResolveMethodTypes.DISABLED, + (RadioButtonWithDescription) holder.findViewById( + R.id.unstoppable_domains_resolve_method_disabled_radio_button)); + mButtons.set(ResolveMethodTypes.DNS_OVER_HTTPS, + (RadioButtonWithDescription) holder.findViewById( + R.id.unstoppable_domains_resolve_method_doh_radio_button)); + + mSettingRadioButton = mButtons.get(mSetting); + mSettingRadioButton.setChecked(true); + } + + @Override + public void onCheckedChanged(RadioGroup group, int checkedId) { + for (int i = 0; i < OPTIONS_SIZE; i++) { + if (mButtons.get(i).isChecked()) { + mSetting = i; + mSettingRadioButton = mButtons.get(i); + break; + } + } + assert mSetting >= 0 && mSetting < OPTIONS_SIZE : "No matching setting found."; + + callChangeListener(mSetting); + } +} diff --git a/android/java/org/chromium/chrome/browser/decentralized_dns/settings/UnstoppableDomainsSettingsFragment.java b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/UnstoppableDomainsSettingsFragment.java new file mode 100644 index 000000000000..b11ab1410f98 --- /dev/null +++ b/android/java/org/chromium/chrome/browser/decentralized_dns/settings/UnstoppableDomainsSettingsFragment.java @@ -0,0 +1,41 @@ +/* Copyright (c) 2021 The Brave Authors. All rights reserved. + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.chromium.chrome.browser.decentralized_dns.settings; + +import android.os.Bundle; + +import androidx.annotation.Nullable; +import androidx.preference.PreferenceFragmentCompat; + +import org.chromium.chrome.R; +import org.chromium.chrome.browser.preferences.BravePrefServiceBridge; +import org.chromium.components.browser_ui.settings.SettingsUtils; + +public class UnstoppableDomainsSettingsFragment extends PreferenceFragmentCompat { + static final String PREF_UNSTOPPABLE_DOMAINS_RESOLVE_METHOD = + "unstoppable_domains_resolve_method"; + + @Override + public void onCreatePreferences(@Nullable Bundle savedInstanceState, String rootKey) { + getActivity().setTitle(R.string.unstoppable_domains_title); + SettingsUtils.addPreferencesFromResource(this, R.xml.unstoppable_domains_preferences); + + RadioButtonGroupUnstoppableDomainsResolveMethodPreference + radioButtonGroupUnstoppableDomainsResolveMethodPreference = + (RadioButtonGroupUnstoppableDomainsResolveMethodPreference) findPreference( + PREF_UNSTOPPABLE_DOMAINS_RESOLVE_METHOD); + + radioButtonGroupUnstoppableDomainsResolveMethodPreference.initialize( + BravePrefServiceBridge.getInstance().getUnstoppableDomainsResolveMethod()); + + radioButtonGroupUnstoppableDomainsResolveMethodPreference.setOnPreferenceChangeListener( + (preference, newValue) -> { + int method = (int) newValue; + BravePrefServiceBridge.getInstance().setUnstoppableDomainsResolveMethod(method); + return true; + }); + } +} diff --git a/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java b/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java index 7ef2035ebdcd..feb61643c3e7 100644 --- a/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java +++ b/android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java @@ -209,6 +209,23 @@ public void setWebrtcPolicy(int policy) { public int getWebrtcPolicy() { return BravePrefServiceBridgeJni.get().getWebrtcPolicy(); } + + public void setUnstoppableDomainsResolveMethod(int method) { + BravePrefServiceBridgeJni.get().setUnstoppableDomainsResolveMethod(method); + } + + public int getUnstoppableDomainsResolveMethod() { + return BravePrefServiceBridgeJni.get().getUnstoppableDomainsResolveMethod(); + } + + public void setENSResolveMethod(int method) { + BravePrefServiceBridgeJni.get().setENSResolveMethod(method); + } + + public int getENSResolveMethod() { + return BravePrefServiceBridgeJni.get().getENSResolveMethod(); + } + @NativeMethods interface Natives { void setHTTPSEEnabled(boolean enabled); @@ -264,5 +281,10 @@ interface Natives { void setWebrtcPolicy(int policy); int getWebrtcPolicy(); + + void setUnstoppableDomainsResolveMethod(int method); + void setENSResolveMethod(int method); + int getUnstoppableDomainsResolveMethod(); + int getENSResolveMethod(); } } diff --git a/android/java/res/layout/radio_button_group_ens_resolve_method_preference.xml b/android/java/res/layout/radio_button_group_ens_resolve_method_preference.xml new file mode 100644 index 000000000000..68d830c0a583 --- /dev/null +++ b/android/java/res/layout/radio_button_group_ens_resolve_method_preference.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + diff --git a/android/java/res/layout/radio_button_group_unstoppable_domains_resolve_method_preference.xml b/android/java/res/layout/radio_button_group_unstoppable_domains_resolve_method_preference.xml new file mode 100644 index 000000000000..2a14766fa1f0 --- /dev/null +++ b/android/java/res/layout/radio_button_group_unstoppable_domains_resolve_method_preference.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + diff --git a/android/java/res/xml/brave_privacy_preferences.xml b/android/java/res/xml/brave_privacy_preferences.xml index a18b24b533dc..6d357f5326ac 100644 --- a/android/java/res/xml/brave_privacy_preferences.xml +++ b/android/java/res/xml/brave_privacy_preferences.xml @@ -26,6 +26,14 @@ android:title="@string/ipfs_gateway_title" android:summary="@string/ipfs_gateway_summary" android:defaultValue="true" /> + + + + + + + + + diff --git a/android/java/res/xml/unstoppable_domains_preferences.xml b/android/java/res/xml/unstoppable_domains_preferences.xml new file mode 100644 index 000000000000..ceae87a9e23c --- /dev/null +++ b/android/java/res/xml/unstoppable_domains_preferences.xml @@ -0,0 +1,15 @@ + + + + + + + + diff --git a/browser/android/preferences/brave_pref_service_bridge.cc b/browser/android/preferences/brave_pref_service_bridge.cc index 1677cf7db564..a5e1a38bd3f8 100644 --- a/browser/android/preferences/brave_pref_service_bridge.cc +++ b/browser/android/preferences/brave_pref_service_bridge.cc @@ -12,6 +12,7 @@ #include "brave/components/brave_rewards/common/pref_names.h" #include "brave/components/brave_shields/browser/brave_shields_util.h" #include "brave/components/brave_sync/brave_sync_prefs.h" +#include "brave/components/decentralized_dns/buildflags/buildflags.h" #include "brave/components/ipfs/buildflags/buildflags.h" #include "brave/components/p3a/buildflags.h" #include "build/build_config.h" @@ -39,6 +40,10 @@ #include "brave/components/ipfs/pref_names.h" #endif +#if BUILDFLAG(DECENTRALIZED_DNS_ENABLED) +#include "brave/components/decentralized_dns/pref_names.h" +#endif + using base::android::ConvertUTF8ToJavaString; using base::android::JavaParamRef; using base::android::ScopedJavaLocalRef; @@ -402,5 +407,40 @@ jboolean JNI_BravePrefServiceBridge_GetP3ANoticeAcknowledged(JNIEnv* env) { } #endif // BUILDFLAG(BRAVE_P3A_ENABLED) +void JNI_BravePrefServiceBridge_SetUnstoppableDomainsResolveMethod( + JNIEnv* env, + jint method) { +#if BUILDFLAG(DECENTRALIZED_DNS_ENABLED) + g_browser_process->local_state()->SetInteger( + decentralized_dns::kUnstoppableDomainsResolveMethod, method); +#endif +} + +jint JNI_BravePrefServiceBridge_GetUnstoppableDomainsResolveMethod( + JNIEnv* env) { +#if BUILDFLAG(DECENTRALIZED_DNS_ENABLED) + return g_browser_process->local_state()->GetInteger( + decentralized_dns::kUnstoppableDomainsResolveMethod); +#else + return 0; +#endif +} + +void JNI_BravePrefServiceBridge_SetENSResolveMethod(JNIEnv* env, jint method) { +#if BUILDFLAG(DECENTRALIZED_DNS_ENABLED) + g_browser_process->local_state()->SetInteger( + decentralized_dns::kENSResolveMethod, method); +#endif +} + +jint JNI_BravePrefServiceBridge_GetENSResolveMethod(JNIEnv* env) { +#if BUILDFLAG(DECENTRALIZED_DNS_ENABLED) + return g_browser_process->local_state()->GetInteger( + decentralized_dns::kENSResolveMethod); +#else + return 0; +#endif +} + } // namespace android } // namespace chrome diff --git a/browser/decentralized_dns/test/BUILD.gn b/browser/decentralized_dns/test/BUILD.gn index 1b09e76facb3..abe1fbeb63c9 100644 --- a/browser/decentralized_dns/test/BUILD.gn +++ b/browser/decentralized_dns/test/BUILD.gn @@ -9,22 +9,25 @@ import("//testing/test.gni") source_set("browser_tests") { testonly = true - defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] - sources = [ - "//brave/browser/decentralized_dns/test/decentralized_dns_navigation_throttle_browsertest.cc", - "//brave/browser/decentralized_dns/test/decentralized_dns_service_browsertest.cc", - ] - deps = [ - "//base/test:test_support", - "//brave/components/decentralized_dns", - "//chrome/browser:browser_process", - "//chrome/test:test_support", - "//chrome/test:test_support_ui", - "//components/prefs", - "//components/security_interstitials/content:security_interstitial_page", - "//content/test:test_support", - "//testing/gtest", - ] + if (!is_android) { + defines = [ "HAS_OUT_OF_PROC_TEST_RUNNER" ] + + sources = [ + "//brave/browser/decentralized_dns/test/decentralized_dns_navigation_throttle_browsertest.cc", + "//brave/browser/decentralized_dns/test/decentralized_dns_service_browsertest.cc", + ] + deps = [ + "//base/test:test_support", + "//brave/components/decentralized_dns", + "//chrome/browser:browser_process", + "//chrome/test:test_support", + "//chrome/test:test_support_ui", + "//components/prefs", + "//components/security_interstitials/content:security_interstitial_page", + "//content/test:test_support", + "//testing/gtest", + ] + } # !is_android } # source_set("browser_tests") { source_set("unit_tests") { diff --git a/browser/ui/android/strings/android_brave_strings.grd b/browser/ui/android/strings/android_brave_strings.grd index 5a015621bb46..011b0abbd13d 100644 --- a/browser/ui/android/strings/android_brave_strings.grd +++ b/browser/ui/android/strings/android_brave_strings.grd @@ -196,6 +196,24 @@ This file contains all "about" strings. It is set to NOT be translated, in tran Allows for navigation to IPFS resources through an IPFS Gateway + + Unstoppable Domains + + + Ethereum Name Service + + + Resolve Method + + + Ask + + + Disabled + + + DNS over HTTPS + Ad Block diff --git a/build/commands/lib/config.js b/build/commands/lib/config.js index 959d441b3107..2d951438eba5 100755 --- a/build/commands/lib/config.js +++ b/build/commands/lib/config.js @@ -357,7 +357,6 @@ Config.prototype.buildArgs = function () { // TODO - recheck delete args.enable_nacl delete args.enable_hangout_services_extension - delete args.brave_infura_project_id // Ideally we'd not pass this on Linux CI and then // not have a default value for this. But we'll // eventually want it on Android, so keeping CI diff --git a/chromium_src/chrome/browser/about_flags.cc b/chromium_src/chrome/browser/about_flags.cc index 196cb93e46fd..fbf675617904 100644 --- a/chromium_src/chrome/browser/about_flags.cc +++ b/chromium_src/chrome/browser/about_flags.cc @@ -105,7 +105,8 @@ using ntp_background_images::features::kBraveNTPSuperReferralWallpaper; #define BRAVE_DECENTRALIZED_DNS_FEATURE_ENTRIES \ {"brave-decentralized-dns", \ flag_descriptions::kBraveDecentralizedDnsName, \ - flag_descriptions::kBraveDecentralizedDnsDescription, kOsDesktop, \ + flag_descriptions::kBraveDecentralizedDnsDescription, \ + kOsDesktop | kOsAndroid, \ FEATURE_VALUE_TYPE(decentralized_dns::features::kDecentralizedDns)}, #else #define BRAVE_DECENTRALIZED_DNS_FEATURE_ENTRIES @@ -158,7 +159,7 @@ using ntp_background_images::features::kBraveNTPSuperReferralWallpaper; FEATURE_VALUE_TYPE(net::features::kBraveEphemeralStorage)}, \ {"brave-ephemeral-storage-keep-alive", \ flag_descriptions::kBraveEphemeralStorageKeepAliveName, \ - flag_descriptions::kBraveEphemeralStorageKeepAliveDescription, kOsAll,\ + flag_descriptions::kBraveEphemeralStorageKeepAliveDescription, kOsAll, \ FEATURE_VALUE_TYPE(net::features::kBraveEphemeralStorage)}, \ {"brave-permission-lifetime", \ flag_descriptions::kBravePermissionLifetimeName, \ diff --git a/components/decentralized_dns/buildflags/buildflags.gni b/components/decentralized_dns/buildflags/buildflags.gni index b32adc01b37c..6d1013b2fba0 100644 --- a/components/decentralized_dns/buildflags/buildflags.gni +++ b/components/decentralized_dns/buildflags/buildflags.gni @@ -1,3 +1,3 @@ declare_args() { - decentralized_dns_enabled = is_mac || is_linux || is_win + decentralized_dns_enabled = !is_ios } diff --git a/components/decentralized_dns/constants.h b/components/decentralized_dns/constants.h index 1ff0ead2156e..7e71ce684886 100644 --- a/components/decentralized_dns/constants.h +++ b/components/decentralized_dns/constants.h @@ -8,10 +8,12 @@ namespace decentralized_dns { +// GENERATED_JAVA_ENUM_PACKAGE: org.chromium.chrome.browser.decentralized_dns enum class ResolveMethodTypes { ASK, DISABLED, DNS_OVER_HTTPS, + MAX_VALUE = DNS_OVER_HTTPS, }; } // namespace decentralized_dns