Skip to content

Commit dd13dc5

Browse files
authored
Merge pull request #8302 from brave/ipfs-android-2
Re-land android IPFS gateway support
2 parents 011ac0a + 735d611 commit dd13dc5

28 files changed

+168
-28
lines changed

android/java/org/chromium/chrome/browser/preferences/BravePrefServiceBridge.java

+8
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,13 @@ public void setHTTPSEEnabled(boolean enabled) {
3434
BravePrefServiceBridgeJni.get().setHTTPSEEnabled(enabled);
3535
}
3636

37+
/**
38+
* @param whether the IPFS gateway should be enabled.
39+
*/
40+
public void setIpfsGatewayEnabled(boolean enabled) {
41+
BravePrefServiceBridgeJni.get().setIpfsGatewayEnabled(enabled);
42+
}
43+
3744
/**
3845
* @param whether google login is enabled on third party sites.
3946
*/
@@ -198,6 +205,7 @@ public boolean getP3ANoticeAcknowledged() {
198205
@NativeMethods
199206
interface Natives {
200207
void setHTTPSEEnabled(boolean enabled);
208+
void setIpfsGatewayEnabled(boolean enabled);
201209
void setAdBlockEnabled(boolean enabled);
202210
void setFingerprintingProtectionEnabled(boolean enabled);
203211

android/java/org/chromium/chrome/browser/privacy/settings/BravePrivacySettings.java

+8
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
public class BravePrivacySettings extends PrivacySettings {
3030
private static final String PREF_HTTPSE = "httpse";
31+
private static final String PREF_IPFS_GATEWAY = "ipfs_gateway";
3132
private static final String PREF_AD_BLOCK = "ad_block";
3233
private static final String PREF_FINGERPRINTING_PROTECTION = "fingerprinting_protection";
3334
private static final String PREF_CLOSE_TABS_ON_EXIT = "close_tabs_on_exit";
@@ -50,6 +51,7 @@ public class BravePrivacySettings extends PrivacySettings {
5051
private ChromeSwitchPreference mAutocompleteTopSites;
5152
private ChromeSwitchPreference mAutocompleteBraveSuggestedSites;
5253
private ChromeBaseCheckBoxPreference mHttpsePref;
54+
private ChromeBaseCheckBoxPreference mIpfsGatewayPref;
5355
private ChromeBaseCheckBoxPreference mAdBlockPref;
5456
private ChromeBaseCheckBoxPreference mFingerprintingProtectionPref;
5557
private ChromeBaseCheckBoxPreference mCloseTabsOnExitPref;
@@ -69,6 +71,9 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
6971
mHttpsePref = (ChromeBaseCheckBoxPreference) findPreference(PREF_HTTPSE);
7072
mHttpsePref.setOnPreferenceChangeListener(this);
7173

74+
mIpfsGatewayPref = (ChromeBaseCheckBoxPreference) findPreference(PREF_IPFS_GATEWAY);
75+
mIpfsGatewayPref.setOnPreferenceChangeListener(this);
76+
7277
mAdBlockPref = (ChromeBaseCheckBoxPreference) findPreference(PREF_AD_BLOCK);
7378
mAdBlockPref.setOnPreferenceChangeListener(this);
7479

@@ -119,6 +124,8 @@ public boolean onPreferenceChange(Preference preference, Object newValue) {
119124
String key = preference.getKey();
120125
if (PREF_HTTPSE.equals(key)) {
121126
BravePrefServiceBridge.getInstance().setHTTPSEEnabled((boolean) newValue);
127+
} else if (PREF_IPFS_GATEWAY.equals(key)) {
128+
BravePrefServiceBridge.getInstance().setIpfsGatewayEnabled((boolean) newValue);
122129
} else if (PREF_AD_BLOCK.equals(key)) {
123130
BravePrefServiceBridge.getInstance().setAdBlockEnabled((boolean) newValue);
124131
} else if (PREF_FINGERPRINTING_PROTECTION.equals(key)) {
@@ -173,6 +180,7 @@ private void updatePreferences() {
173180
getPreferenceScreen().removePreference(mSendP3A);
174181
}
175182
mHttpsePref.setOrder(++order);
183+
mIpfsGatewayPref.setOrder(++order);
176184
mAdBlockPref.setOrder(++order);
177185
mFingerprintingProtectionPref.setOrder(++order);
178186
mSearchSuggestions.setOrder(++order);

android/java/res/xml/brave_privacy_preferences.xml

+5
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,11 @@
2121
android:title="@string/httpse_title"
2222
android:summary="@string/httpse_summary"
2323
android:defaultValue="true" />
24+
<org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
25+
android:key="ipfs_gateway"
26+
android:title="@string/ipfs_gateway_title"
27+
android:summary="@string/ipfs_gateway_summary"
28+
android:defaultValue="true" />
2429
<org.chromium.components.browser_ui.settings.ChromeBaseCheckBoxPreference
2530
android:key="ad_block"
2631
android:title="@string/ad_block_title"

browser/BUILD.gn

+11-3
Original file line numberDiff line numberDiff line change
@@ -308,13 +308,21 @@ source_set("browser_process") {
308308
]
309309

310310
deps += [
311-
"//brave/browser/infobars",
312311
"//brave/components/ipfs",
313312
"//brave/components/services/ipfs/public/mojom",
314313
"//components/user_prefs",
315-
"//extensions/browser",
316-
"//extensions/common",
317314
]
315+
316+
if (enable_extensions) {
317+
deps += [
318+
"//extensions/browser",
319+
"//extensions/common",
320+
]
321+
}
322+
323+
if (!is_android) {
324+
deps += [ "//brave/browser/infobars" ]
325+
}
318326
}
319327

320328
if (brave_together_enabled) {

browser/android/preferences/brave_pref_service_bridge.cc

+19-2
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,18 @@
55

66
#include "brave/build/android/jni_headers/BravePrefServiceBridge_jni.h"
77

8-
#include "build/build_config.h"
98
#include "base/android/jni_string.h"
109
#include "brave/common/pref_names.h"
1110
#include "brave/components/brave_perf_predictor/browser/buildflags.h"
1211
#include "brave/components/brave_referrals/common/pref_names.h"
1312
#include "brave/components/brave_rewards/common/pref_names.h"
1413
#include "brave/components/brave_shields/browser/brave_shields_util.h"
1514
#include "brave/components/brave_sync/brave_sync_prefs.h"
15+
#include "brave/components/ipfs/buildflags/buildflags.h"
1616
#include "brave/components/p3a/buildflags.h"
17-
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
17+
#include "build/build_config.h"
1818
#include "chrome/browser/browser_process.h"
19+
#include "chrome/browser/content_settings/host_content_settings_map_factory.h"
1920
#include "chrome/browser/profiles/profile.h"
2021
#include "chrome/browser/profiles/profile_android.h"
2122
#include "chrome/browser/profiles/profile_manager.h"
@@ -30,6 +31,11 @@
3031
#include "brave/components/p3a/pref_names.h"
3132
#endif
3233

34+
#if BUILDFLAG(IPFS_ENABLED)
35+
#include "brave/components/ipfs/ipfs_constants.h"
36+
#include "brave/components/ipfs/pref_names.h"
37+
#endif
38+
3339
using base::android::ConvertUTF8ToJavaString;
3440
using base::android::JavaParamRef;
3541
using base::android::ScopedJavaLocalRef;
@@ -57,6 +63,17 @@ void JNI_BravePrefServiceBridge_SetHTTPSEEnabled(
5763
g_browser_process->local_state());
5864
}
5965

66+
void JNI_BravePrefServiceBridge_SetIpfsGatewayEnabled(JNIEnv* env,
67+
jboolean enabled) {
68+
#if BUILDFLAG(IPFS_ENABLED)
69+
ipfs::IPFSResolveMethodTypes type =
70+
enabled ? ipfs::IPFSResolveMethodTypes::IPFS_ASK
71+
: ipfs::IPFSResolveMethodTypes::IPFS_DISABLED;
72+
GetOriginalProfile()->GetPrefs()->SetInteger(kIPFSResolveMethod,
73+
static_cast<int>(type));
74+
#endif
75+
}
76+
6077
void JNI_BravePrefServiceBridge_SetThirdPartyGoogleLoginEnabled(
6178
JNIEnv* env,
6279
jboolean enabled) {

browser/ipfs/ipfs_service_factory.cc

+6
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,14 @@
1313
#include "chrome/common/channel_info.h"
1414
#include "chrome/common/chrome_paths.h"
1515
#include "components/keyed_service/content/browser_context_dependency_manager.h"
16+
#include "extensions/buildflags/buildflags.h"
17+
18+
#if BUILDFLAG(ENABLE_EXTENSIONS)
1619
#include "extensions/browser/extension_registry_factory.h"
1720
#include "extensions/browser/extension_system.h"
1821
#include "extensions/browser/extension_system_provider.h"
1922
#include "extensions/browser/extensions_browser_client.h"
23+
#endif
2024

2125
namespace ipfs {
2226

@@ -39,9 +43,11 @@ IpfsServiceFactory::IpfsServiceFactory()
3943
: BrowserContextKeyedServiceFactory(
4044
"IpfsService",
4145
BrowserContextDependencyManager::GetInstance()) {
46+
#if BUILDFLAG(ENABLE_EXTENSIONS)
4247
DependsOn(extensions::ExtensionRegistryFactory::GetInstance());
4348
DependsOn(
4449
extensions::ExtensionsBrowserClient::Get()->GetExtensionSystemFactory());
50+
#endif
4551
}
4652

4753
IpfsServiceFactory::~IpfsServiceFactory() {}

browser/ui/android/strings/android_brave_strings.grd

+6
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,12 @@ This file contains all "about" strings. It is set to NOT be translated, in tran
190190
<message name="IDS_HTTPSE_SUMMARY" desc="Summary for HTTPS Everywhere.">
191191
Opens supported sites using HTTPS instead of HTTP when possible
192192
</message>
193+
<message name="IDS_IPFS_GATEWAY_TITLE" desc="Title for IPFS setting.">
194+
IPFS Gateway
195+
</message>
196+
<message name="IDS_IPFS_GATEWAY_SUMMARY" desc="Summary for IPFS gateway setting.">
197+
Allows for navigation to IPFS resources through an IPFS Gateway
198+
</message>
193199
<message name="IDS_AD_BLOCK_TITLE" desc="Title for ad block.">
194200
Ad Block
195201
</message>

browser/ui/webui/brave_webui_source.cc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1070,7 +1070,7 @@ void CustomizeWebUIHTMLSource(const std::string &name,
10701070
{ "walletStatusPending", IDS_BRAVE_REWARDS_INTERNALS_WALLET_STATUS_PENDING }, // NOLINT
10711071
}
10721072
}, {
1073-
#if BUILDFLAG(IPFS_ENABLED)
1073+
#if BUILDFLAG(ENABLE_TOR)
10741074
std::string("tor-internals"), {
10751075
{ "tabGeneralInfo", IDS_TOR_INTERNALS_TAB_GENERAL_INFO },
10761076
{ "tabLogs", IDS_TOR_INTERNALS_TAB_LOGS },

chromium_src/chrome/browser/DEPS

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ include_rules = [
22
"+../../../../chrome/browser",
33
"+../../../../../chrome/browser/android",
44
"+../../../../../../chrome/browser/android/browsing_data",
5+
"+../../../../../../chrome/browser/android/omnibox",
56
"+../../../../../../chrome/browser/android/preferences",
67
"+../../../../../../chrome/browser/android/signin",
78
"+../../../../../chrome/browser/autocomplete",

chromium_src/chrome/browser/about_flags.cc

+2-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ using ntp_background_images::features::kBraveNTPSuperReferralWallpaper;
7878
#define BRAVE_IPFS_FEATURE_ENTRIES \
7979
{"brave-ipfs", \
8080
flag_descriptions::kBraveIpfsName, \
81-
flag_descriptions::kBraveIpfsDescription, kOsDesktop, \
81+
flag_descriptions::kBraveIpfsDescription, \
82+
kOsDesktop | kOsAndroid, \
8283
FEATURE_VALUE_TYPE(ipfs::features::kIpfsFeature)},
8384
#else
8485
#define BRAVE_IPFS_FEATURE_ENTRIES
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/* Copyright (c) 2021 The Brave Authors. All rights reserved.
2+
* This Source Code Form is subject to the terms of the Mozilla Public
3+
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
4+
* You can obtain one at http://mozilla.org/MPL/2.0/. */
5+
6+
#include "brave/browser/autocomplete/brave_autocomplete_scheme_classifier.h"
7+
#include "components/omnibox/browser/autocomplete_classifier.h"
8+
#include "components/omnibox/browser/autocomplete_controller.h"
9+
10+
#define ChromeAutocompleteSchemeClassifier BraveAutocompleteSchemeClassifier
11+
#include "../../../../../../chrome/browser/android/omnibox/autocomplete_controller_android.cc"
12+
#undef ChromeAutocompleteSchemeClassifier

chromium_src/chrome/browser/profiles/profile_io_data.cc

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
bool ProfileIOData::IsHandledProtocol(const std::string& scheme) {
1616
if (scheme == kBraveUIScheme)
1717
return true;
18+
if (scheme == "ipfs" || scheme == "ipns")
19+
return true;
1820
return IsHandledProtocol_ChromiumImpl(scheme);
1921
}
2022

common/BUILD.gn

+3-1
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,10 @@ source_set("common") {
9393
"//brave/components/external_intents/android",
9494
"//brave/components/webcompat_reporter/browser",
9595
"//brave/chromium_src/third_party/blink/renderer/modules:browser_tests",
96-
"//brave/components/ipfs/test:brave_ipfs_browser_tests",
9796
]
97+
if (!is_android && !is_ios) {
98+
visibility += [ "//brave/components/ipfs/test:brave_ipfs_browser_tests" ]
99+
}
98100

99101
# Remove when https://github.com/brave/brave-browser/issues/10653 is resolved
100102
check_includes = false

components/ipfs/BUILD.gn

+3-4
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ source_set("ipfs") {
4444
"//brave/components/resources:static_resources",
4545
"//brave/components/resources:strings",
4646
"//brave/components/services/ipfs/public/mojom",
47+
"//brave/extensions:common",
4748
"//components/component_updater:component_updater",
4849
"//components/infobars/core",
4950
"//components/keyed_service/core",
@@ -54,6 +55,7 @@ source_set("ipfs") {
5455
"//components/version_info",
5556
"//content/public/browser",
5657
"//content/public/common",
58+
"//extensions/buildflags",
5759
"//net",
5860
"//services/network/public/cpp",
5961
"//third_party/re2",
@@ -63,9 +65,6 @@ source_set("ipfs") {
6365
]
6466

6567
if (enable_extensions) {
66-
deps += [
67-
"//extensions/browser",
68-
"//extensions/common",
69-
]
68+
deps += [ "//extensions/browser" ]
7069
}
7170
}

components/ipfs/DEPS

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ include_rules = [
22
"+content/public/browser",
33
"+content/public/common",
44
"+extensions/browser",
5+
"+extensions/buildflags",
56
"+extensions/common",
67
"+third_party/re2",
78
"+services/network/public",

components/ipfs/brave_ipfs_client_updater.h

+5
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,11 @@ static const char kIpfsClientComponentBase64PublicKey[] =
5959
"J9HIuxTzVft5v5Ys0S0Kqorn2xo+lFpVzZT7sV2orDHaLiVB5uqCMWhXehVixfRp"
6060
"BuPGdwSuzJsNkV5aGOObKfoLr1zUgstJYMLB0uWNXTfuKM4EibWUMLMqlCYVzs2R"
6161
"ewIDAQAB";
62+
#elif defined(OS_ANDROID)
63+
// Not used yet
64+
static const char kIpfsClientComponentName[] = "";
65+
static const char kIpfsClientComponentId[] = "";
66+
static const char kIpfsClientComponentBase64PublicKey[] = "";
6267
#endif
6368

6469
class BraveIpfsClientUpdater : public BraveComponent,
+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import("//build/config/features.gni")
22

33
declare_args() {
4-
ipfs_enabled = is_mac || is_linux || is_win
4+
ipfs_enabled = !is_ios
55
}

components/ipfs/ipfs_navigation_throttle.cc

+2-2
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ IpfsNavigationThrottle::MaybeCreateThrottleFor(
7979
const std::string& locale) {
8080
if (!ipfs_service)
8181
return nullptr;
82-
8382
return std::make_unique<IpfsNavigationThrottle>(navigation_handle,
8483
ipfs_service, locale);
8584
}
@@ -107,8 +106,9 @@ IpfsNavigationThrottle::WillStartRequest() {
107106
pref_service_->GetInteger(kIPFSResolveMethod) ==
108107
static_cast<int>(ipfs::IPFSResolveMethodTypes::IPFS_ASK);
109108

110-
if (IsIPFSScheme(url) && should_ask)
109+
if (IsIPFSScheme(url) && should_ask) {
111110
return ShowIPFSOnboardingInterstitial();
111+
}
112112

113113
if (!IsLocalGatewayURL(url)) {
114114
return content::NavigationThrottle::PROCEED;

components/ipfs/ipfs_onboarding_page.cc

+6
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,9 @@ IPFSOnboardingPage::IPFSOnboardingPage(
6464
std::move(controller)),
6565
ipfs_service_(ipfs_service) {
6666
service_observer_.Observe(ipfs_service_);
67+
#if !defined(OS_ANDROID)
6768
theme_observer_.Observe(ui::NativeTheme::GetInstanceForNativeUi());
69+
#endif
6870
}
6971

7072
IPFSOnboardingPage::~IPFSOnboardingPage() = default;
@@ -250,8 +252,12 @@ void IPFSOnboardingPage::PopulateInterstitialStrings(
250252
load_time_data->SetString(
251253
"tryAgainText", l10n_util::GetStringUTF16(IDS_IPFS_ONBOARDING_TRY_AGAIN));
252254

255+
#if !defined(OS_ANDROID)
253256
load_time_data->SetString(
254257
"braveTheme", GetThemeType(ui::NativeTheme::GetInstanceForNativeUi()));
258+
#else
259+
load_time_data->SetString("braveTheme", "light");
260+
#endif
255261
}
256262

257263
int IPFSOnboardingPage::GetHTMLTemplateId() {

components/ipfs/ipfs_p3a.cc

+6
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@
1111
#include "components/prefs/pref_service.h"
1212
#include "components/user_prefs/user_prefs.h"
1313
#include "content/public/browser/browser_context.h"
14+
#include "extensions/buildflags/buildflags.h"
15+
16+
#if BUILDFLAG(ENABLE_EXTENSIONS)
1417
#include "extensions/browser/extension_registry.h"
18+
#endif
1519

1620
namespace ipfs {
1721

@@ -20,11 +24,13 @@ constexpr size_t kP3ATimerInterval = 1;
2024
// IPFS companion installed?
2125
// i) No, ii) Yes
2226
void RecordIPFSCompanionInstalled(content::BrowserContext* context) {
27+
#if BUILDFLAG(ENABLE_EXTENSIONS)
2328
const char ipfs_companion_extension_id[] = "nibjojkomfdiaoajekhjakgkdhaomnch";
2429
auto* registry = extensions::ExtensionRegistry::Get(context);
2530
bool installed =
2631
registry->enabled_extensions().Contains(ipfs_companion_extension_id);
2732
UMA_HISTOGRAM_BOOLEAN("Brave.IPFS.IPFSCompanionInstalled", installed);
33+
#endif
2834
}
2935

3036
int GetIPFSDetectionPromptBucket(PrefService* prefs) {

components/ipfs/resources/onboarding/ipfs_onboarding.html

+2-2
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
</div>
3131
</div>
3232
<div class="nav-wrapper">
33-
<div class="control-box">
33+
<div class="control-box" id="local-node-box">
3434
<div class="button-wrapper">
3535
<button class="button" id="local-node-button">
3636
$i18n{localNodeButton}
@@ -53,7 +53,7 @@
5353
</div>
5454
</div>
5555
</div>
56-
<div class="footer">
56+
<div class="footer" id="footer">
5757
<p class="copy">
5858
$i18nRaw{footerText}
5959
<a id="open-settings"

0 commit comments

Comments
 (0)