Skip to content

Commit

Permalink
Protoc version
Browse files Browse the repository at this point in the history
really needs to be the same
as libprotobuf

Fixes #127
  • Loading branch information
John-LittleBearLabs committed Dec 12, 2024
1 parent 68df7af commit e79e54f
Show file tree
Hide file tree
Showing 65 changed files with 1,306 additions and 236 deletions.
20 changes: 20 additions & 0 deletions .github/doc.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash -ex

export here="$(dirname "${0}")"
source "${here}/ubuntu-deps.env"
sudo apt install doxygen

echo Configure
mkdir -p build
cmake \
-G Ninja \
-S ipfs_chromium \
-B build \
-D USE_DOXYGEN=TRUE \
-D CMAKE_BUILD_TYPE=Debug
cmake --build build --config Debug --target doc
find ./ -iname index.html
ls -lrth build/
ls -lrth build/doc/
ls -lrth build/doc/html
mv -v ipfs_chromium/.git .
33 changes: 33 additions & 0 deletions .github/ubuntu-deps.env
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash -ex

echo Install dependencies
sudo apt-get update
sudo apt-get install --yes \
cmake \
ninja-build \
graphviz \
valgrind \
pipx

for pl in lib{capture-tiny,datetime}-perl
do
sudo apt-get install "${pl}"
done

wget https://github.com/linux-test-project/lcov/releases/download/v2.1/lcov-2.1.tar.gz
tar xzvf lcov-2.1.tar.gz
export PATH="${PWD}/lcov-2.1/bin:${PATH}"
hash -r

pipx ensurepath
pipx install conan
npm install -g @marp-team/marp-cli

set +x
echo Show versions:
for p in g++ gcc clang{++,} lcov conan
do
which "${p}"
"${p}" --version
done
set -x
35 changes: 3 additions & 32 deletions .github/ut.sh
Original file line number Diff line number Diff line change
@@ -1,37 +1,7 @@
#!/bin/bash -ex

echo Install dependencies
sudo apt-get update
sudo apt-get install --yes \
cmake \
ninja-build \
doxygen \
graphviz \
valgrind \
pipx

for pl in lib{capture-tiny,datetime}-perl
do
sudo apt-get install "${pl}"
done

wget https://github.com/linux-test-project/lcov/releases/download/v2.1/lcov-2.1.tar.gz
tar xzvf lcov-2.1.tar.gz
export PATH="${PWD}/lcov-2.1/bin:${PATH}"
hash -r

pipx ensurepath
pipx install conan
npm install -g @marp-team/marp-cli

set +x
echo Show versions:
for p in g++ gcc clang{++,} lcov conan
do
which "${p}"
"${p}" --version
done
set -x
export here="$(dirname "${0}")"
source "${here}/ubuntu-deps.env"

conan profile detect

Expand All @@ -41,6 +11,7 @@ echo Configure
-G Ninja \
-S ipfs_chromium \
-B build \
-D USE_DOXYGEN=FALSE \
-D CMAKE_BUILD_TYPE=Debug

echo Run Tests
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/library.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,7 @@ jobs:
with:
files: build/library/cov.info
- name: Run Doxygen
run: |
cmake --build build --config Debug --target doc
ls -lrth build/doc/html
mv -v ipfs_chromium/.git .
run: ./ipfs_chromium/.github/doc.sh
- name: UpDoc
uses: JamesIves/github-pages-deploy-action@v4
with:
Expand Down
27 changes: 27 additions & 0 deletions chromium_edits/132.0.6793.2/chrome/browser/BUILD.gn.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
diff --git a/chrome/browser/BUILD.gn b/chrome/browser/BUILD.gn
index 2b2aa6fb4fecd..0e867518ca157 100644
--- a/chrome/browser/BUILD.gn
+++ b/chrome/browser/BUILD.gn
@@ -41,6 +41,7 @@ import("//sandbox/features.gni")
import("//services/screen_ai/buildflags/features.gni")
import("//testing/libfuzzer/fuzzer_test.gni")
import("//third_party/blink/public/public_features.gni")
+import("//third_party/ipfs_client/args.gni")
import("//third_party/protobuf/proto_library.gni")
import("//third_party/webrtc/webrtc.gni")
import("//third_party/widevine/cdm/widevine.gni")
@@ -2501,6 +2502,14 @@ static_library("browser") {
"//ui/webui",
]

+ if (enable_ipfs) {
+ sources += [
+ "ipfs_extra_parts.cc",
+ "ipfs_extra_parts.h",
+ ]
+ deps += [ "//components/ipfs" ]
+ }
+
# Platforms that have a network diagnostics dialog. All others fall through
# to the stub which is not implemented.
if (is_chromeos_ash) {
38 changes: 38 additions & 0 deletions chromium_edits/132.0.6793.2/chrome/browser/about_flags.cc.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
diff --git a/chrome/browser/about_flags.cc b/chrome/browser/about_flags.cc
index 5ef365b3168b8..e0f702b0ca356 100644
--- a/chrome/browser/about_flags.cc
+++ b/chrome/browser/about_flags.cc
@@ -230,6 +230,7 @@
#include "third_party/blink/public/common/features_generated.h"
#include "third_party/blink/public/common/forcedark/forcedark_switches.h"
#include "third_party/blink/public/common/switches.h"
+#include "third_party/ipfs_client/ipfs_buildflags.h"
#include "ui/accessibility/accessibility_features.h"
#include "ui/accessibility/accessibility_switches.h"
#include "ui/base/ozone_buildflags.h"
@@ -331,6 +332,10 @@
#include "extensions/common/switches.h"
#endif // BUILDFLAG(ENABLE_EXTENSIONS)

+#if BUILDFLAG(ENABLE_IPFS)
+#include "components/ipfs/ipfs_features.h"
+#endif
+
#if BUILDFLAG(ENABLE_PDF)
#include "pdf/pdf_features.h"
#endif
@@ -9696,6 +9701,14 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kOmitCorsClientCertDescription, kOsAll,
FEATURE_VALUE_TYPE(network::features::kOmitCorsClientCert)},

+#if BUILDFLAG(ENABLE_IPFS)
+ {"enable-ipfs",
+ flag_descriptions::kEnableIpfsName,
+ flag_descriptions::kEnableIpfsDescription,
+ kOsMac | kOsWin | kOsLinux,//TODO: These are the only variants currently getting built, but that is not likely to remain the case
+ FEATURE_VALUE_TYPE(ipfs::kEnableIpfs)},
+#endif
+
{"use-idna2008-non-transitional",
flag_descriptions::kUseIDNA2008NonTransitionalName,
flag_descriptions::kUseIDNA2008NonTransitionalDescription, kOsAll,
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
diff --git a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
index 9f234a2a7d41d..a9378ca80dc1e 100644
--- a/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
+++ b/chrome/browser/autocomplete/chrome_autocomplete_scheme_classifier.cc
@@ -13,6 +13,7 @@
#include "chrome/browser/profiles/profile_io_data.h"
#include "components/custom_handlers/protocol_handler_registry.h"
#include "content/public/common/url_constants.h"
+#include "third_party/ipfs_client/ipfs_buildflags.h"
#include "url/url_util.h"

#if BUILDFLAG(IS_ANDROID)
@@ -20,6 +21,11 @@
#include "chrome/browser/ui/android/omnibox/jni_headers/ChromeAutocompleteSchemeClassifier_jni.h"
#endif

+#if BUILDFLAG(ENABLE_IPFS)
+#include "components/ipfs/ipfs_features.h"
+#endif
+
+
#if BUILDFLAG(IS_ANDROID)
static jlong
JNI_ChromeAutocompleteSchemeClassifier_CreateAutocompleteClassifier(
@@ -53,12 +59,20 @@ ChromeAutocompleteSchemeClassifier::GetInputTypeForScheme(
if (scheme.empty()) {
return metrics::OmniboxInputType::EMPTY;
}
- if (base::IsStringASCII(scheme) &&
- (ProfileIOData::IsHandledProtocol(scheme) ||
- base::EqualsCaseInsensitiveASCII(scheme, content::kViewSourceScheme) ||
- base::EqualsCaseInsensitiveASCII(scheme, url::kJavaScriptScheme) ||
- base::EqualsCaseInsensitiveASCII(scheme, url::kDataScheme))) {
- return metrics::OmniboxInputType::URL;
+ if (base::IsStringASCII(scheme)) {
+ if (ProfileIOData::IsHandledProtocol(scheme) ||
+ base::EqualsCaseInsensitiveASCII(scheme, content::kViewSourceScheme) ||
+ base::EqualsCaseInsensitiveASCII(scheme, url::kJavaScriptScheme) ||
+ base::EqualsCaseInsensitiveASCII(scheme, url::kDataScheme)) {
+ return metrics::OmniboxInputType::URL;
+ }
+#if BUILDFLAG(ENABLE_IPFS)
+ if (base::FeatureList::IsEnabled(ipfs::kEnableIpfs) &&
+ (base::EqualsCaseInsensitiveASCII(scheme, "ipfs") || base::EqualsCaseInsensitiveASCII(scheme, "ipns"))
+ ) {
+ return metrics::OmniboxInputType::URL;
+ }
+#endif
}

// Also check for schemes registered via registerProtocolHandler(), which
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 8fc1b3226cba5..666fcca93a8c6 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -406,6 +406,7 @@
#include "third_party/blink/public/mojom/browsing_topics/browsing_topics.mojom.h"
#include "third_party/blink/public/mojom/use_counter/metrics/web_feature.mojom.h"
#include "third_party/blink/public/public_buildflags.h"
+#include "third_party/ipfs_client/ipfs_buildflags.h"
#include "third_party/widevine/cdm/buildflags.h"
#include "ui/base/clipboard/clipboard_format_type.h"
#include "ui/base/l10n/l10n_util.h"
@@ -533,6 +534,13 @@
#include "chrome/browser/chrome_browser_main_posix.h"
#endif

+#if BUILDFLAG(ENABLE_IPFS)
+#include "chrome/browser/ipfs_extra_parts.h"
+#include "components/ipfs/interceptor.h"
+#include "components/ipfs/ipfs_features.h"
+#include "components/ipfs/url_loader_factory.h"
+#endif
+
#if !BUILDFLAG(IS_ANDROID)
#include "chrome/browser/digital_credentials/digital_identity_provider_desktop.h"
#include "chrome/browser/preloading/preview/preview_navigation_throttle.h"
@@ -1864,6 +1872,11 @@ ChromeContentBrowserClient::CreateBrowserMainParts(bool is_integration_test) {
main_parts->AddParts(
std::make_unique<ChromeBrowserMainExtraPartsNaclDeprecation>());

+#if BUILDFLAG(ENABLE_IPFS)
+ if (base::FeatureList::IsEnabled(ipfs::kEnableIpfs)) {
+ main_parts->AddParts(std::make_unique<IpfsExtraParts>());
+ }
+#endif
return main_parts;
}

@@ -6564,12 +6577,29 @@ void ChromeContentBrowserClient::
const std::optional<url::Origin>& request_initiator_origin,
NonNetworkURLLoaderFactoryMap* factories) {
#if BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(ENABLE_EXTENSIONS) || \
- !BUILDFLAG(IS_ANDROID)
+ !BUILDFLAG(IS_ANDROID) || BUILDFLAG(ENABLE_IPFS)
content::RenderFrameHost* frame_host =
RenderFrameHost::FromID(render_process_id, render_frame_id);
WebContents* web_contents = WebContents::FromRenderFrameHost(frame_host);
#endif // BUILDFLAG(IS_CHROMEOS_ASH) || BUILDFLAG(ENABLE_EXTENSIONS) || \
// !BUILDFLAG(IS_ANDROID)
+#if BUILDFLAG(ENABLE_IPFS)
+ if (!web_contents) {
+ VLOG(2) << "No web contents, can't register url loader factory.";
+ } else if (base::FeatureList::IsEnabled(ipfs::kEnableIpfs)) {
+ network::mojom::URLLoaderFactory* default_factory = g_browser_process->system_network_context_manager()->GetURLLoaderFactory();
+ auto* context = web_contents->GetBrowserContext();
+ ipfs::IpfsURLLoaderFactory::Create(
+ factories,
+ context,
+ default_factory,
+ GetSystemNetworkContext(),
+ Profile::FromBrowserContext(context)->GetPrefs()
+ );
+ } else {
+ LOG(INFO) << "IPFS disabled.";
+ }
+#endif // BUILDFLAG(ENABLE_IPFS)

#if BUILDFLAG(IS_CHROMEOS_ASH)
if (web_contents) {
@@ -6717,6 +6747,11 @@ ChromeContentBrowserClient::WillCreateURLLoaderRequestInterceptors(
scoped_refptr<base::SequencedTaskRunner> navigation_response_task_runner) {
std::vector<std::unique_ptr<content::URLLoaderRequestInterceptor>>
interceptors;
+#if BUILDFLAG(ENABLE_IPFS)
+ if (base::FeatureList::IsEnabled(ipfs::kEnableIpfs)) {
+ interceptors.push_back(std::make_unique<ipfs::Interceptor>(g_browser_process->system_network_context_manager()->GetURLLoaderFactory(), GetSystemNetworkContext()));
+ }
+#endif
#if BUILDFLAG(ENABLE_OFFLINE_PAGES)
interceptors.push_back(
std::make_unique<offline_pages::OfflinePageURLLoaderRequestInterceptor>(
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
diff --git a/chrome/browser/flag-metadata.json b/chrome/browser/flag-metadata.json
index 8369b5a06300c..6681b627dfcbb 100644
--- a/chrome/browser/flag-metadata.json
+++ b/chrome/browser/flag-metadata.json
@@ -3347,6 +3347,11 @@
"owners": [ "[email protected]", "[email protected]" ],
"expiry_milestone": 140
},
+ {
+ "name": "enable-ipfs",
+ "owners": [ "//components/ipfs/OWNERS" ],
+ "expiry_milestone": 150
+ },
{
"name": "enable-isolated-sandboxed-iframes",
"owners": [ "[email protected]", "[email protected]", "[email protected]" ],
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
diff --git a/chrome/browser/flag_descriptions.cc b/chrome/browser/flag_descriptions.cc
index edd80ce3ecee7..a94e7fd1e567a 100644
--- a/chrome/browser/flag_descriptions.cc
+++ b/chrome/browser/flag_descriptions.cc
@@ -350,6 +350,11 @@ const char kEnableBookmarksSelectedTypeOnSigninForTestingDescription[] =
"sync-enable-bookmarks-in-transport-mode. Enables the bookmarks "
"UserSelectableType upon sign-in";

+#if BUILDFLAG(ENABLE_IPFS)
+extern const char kEnableIpfsName[] = "Enable IPFS";
+extern const char kEnableIpfsDescription[] = "Enable ipfs:// and ipns:// URLs";
+#endif
+
const char kPreloadingOnPerformancePageName[] =
"Preloading Settings on Performance Page";
const char kPreloadingOnPerformancePageDescription[] =
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
diff --git a/chrome/browser/flag_descriptions.h b/chrome/browser/flag_descriptions.h
index 796ba6ab735d9..c93a4dfd92b95 100644
--- a/chrome/browser/flag_descriptions.h
+++ b/chrome/browser/flag_descriptions.h
@@ -25,6 +25,7 @@
#include "printing/buildflags/buildflags.h"
#include "skia/buildflags.h"
#include "third_party/blink/public/common/buildflags.h"
+#include "third_party/ipfs_client/ipfs_buildflags.h"

// This file declares strings used in chrome://flags. These messages are not
// translated, because instead of end-users they target Chromium developers and
@@ -212,6 +213,11 @@ extern const char kEnableBenchmarkingChoiceMatchFieldTrialTestingConfig[];
extern const char kEnableBookmarksSelectedTypeOnSigninForTestingName[];
extern const char kEnableBookmarksSelectedTypeOnSigninForTestingDescription[];

+#if BUILDFLAG(ENABLE_IPFS)
+extern const char kEnableIpfsName[];
+extern const char kEnableIpfsDescription[];
+#endif
+
extern const char kFontationsFontBackendName[];
extern const char kFontationsFontBackendDescription[];

10 changes: 10 additions & 0 deletions chromium_edits/132.0.6793.2/chrome/browser/ipfs_extra_parts.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#include "ipfs_extra_parts.h"

#include "profiles/profile.h"

#include <components/ipfs/inter_request_state.h>

void IpfsExtraParts::PostProfileInit(Profile* profile, bool /* is_initial_profile */ ) {
DCHECK(profile);
ipfs::InterRequestState::CreateForBrowserContext(profile, profile->GetPrefs());
}
10 changes: 10 additions & 0 deletions chromium_edits/132.0.6793.2/chrome/browser/ipfs_extra_parts.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#ifndef IPFS_EXTRA_PART_H_
#define IPFS_EXTRA_PART_H_

#include <chrome/browser/chrome_browser_main_extra_parts.h>

class IpfsExtraParts : public ChromeBrowserMainExtraParts {
void PostProfileInit(Profile* profile, bool is_initial_profile) override;
};

#endif // IPFS_EXTRA_PART_H_
Loading

0 comments on commit e79e54f

Please sign in to comment.