Skip to content

PureHarmonyProject/GeckoDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Firefox Gecko to OpenHarmony ArkUI XComponent Porting Guide Overview This guide provides step-by-step instructions for porting Mozilla Firefox's Gecko engine to OpenHarmony's ArkUI XComponent, bypassing the default web view implementation. OpenHarmony is the open-source foundation that differs from commercial HarmonyOS in APIs, build tools, and licensing. Key Differences: OpenHarmony vs HarmonyOS OpenHarmony Characteristics

Open Source: Full source code available at https://gitee.com/openharmony OHOS APIs: Uses OH_ prefixed APIs instead of Huawei-specific ones Build System: Uses OpenHarmony SDK and toolchain (not DevEco Studio) Target Platforms: ARM64, RISC-V, x86_64 support Licensing: Apache 2.0 license

Prerequisites OpenHarmony Development Environment bash Download OpenHarmony SDK

git clone https://gitee.com/openharmony/build.git
git clone https://gitee.com/openharmony/developtools_hdc.git

Set up environment

export OHOS_SDK_HOME=/path/to/ohos-sdk
export OHOS_NDK_HOME=$OHOS_SDK_HOME/native
export PATH=$PATH:$OHOS_NDK_HOME/llvm/bin

Install OpenHarmony toolchain

./prebuilts/clang/ohos/linux-x86_64/clang-480513/bin/clang --version Required Components

OpenHarmony 4.0+ SDK LLVM/Clang for OpenHarmony Rust toolchain with OpenHarmony targets Python 3.8+ Node.js 16+ (for ArkTS compilation)

Target Setup bash# Add OpenHarmony Rust targets rustup target add aarch64-unknown-linux-ohos rustup target add armv7-unknown-linux-ohos rustup target add x86_64-unknown-linux-ohos

Clone Firefox source

cd firefox

Architecture Overview

OpenHarmony Integration Architecture

┌─────────────────────────────────────────────┐
│          OpenHarmony Application            │
├─────────────────────────────────────────────┤
│     ArkUI Framework (eTS/ArkTS)              │
│  ┌─────────────────────────────────────────┐ │
│  │      XComponent (Native Surface)        │ │
│  │  ┌─────────────────────────────────┐    │ │
│  │  │     OH_NativeXComponent         │    │ │
│  │  │     EGL/OpenGL ES Context       │    │ │
│  │  │     Event Handling Bridge       │    │ │
│  │  └─────────────────────────────────┘    │ │
│  └─────────────────────────────────────────┘ │
├─────────────────────────────────────────────┤
│      Modified Gecko Engine for OHOS          │
│  ┌─────────────────────────────────────────┐ │
│  │  SpiderMonkey JS Engine               │   │
│  │  Servo Layout Engine                  │   │
│  │  WebRender (OpenGL ES Backend)        │   │
│  │  OHOS Platform Abstraction Layer      │   │
│  │  ├─ OHOS File System APIs             │   │
│  │  ├─ OHOS Network APIs                 │   │
│  │  ├─ OHOS Graphics APIs                │   │
│  │  └─ OHOS Memory Management            │   │
│  └─────────────────────────────────────────┘ │
└─────────────────────────────────────────────┘
FirefoxOHOS/
├── entry/                          # Main application module
│   ├── src/
│   │   ├── main/
│   │   │   ├── ets/               # ArkTS source code
│   │   │   │   ├── Application/
│   │   │   │   ├── MainAbility/
│   │   │   │   ├── pages/
│   │   │   │   │   └── Index.ets  # Main page with XComponent
│   │   │   │   └── components/     # Custom components
│   │   │   ├── resources/          # Resource files
│   │   │   ├── cpp/               # Native C++ code
│   │   │   │   ├── gecko_bridge/  # Gecko-OpenHarmony bridge
│   │   │   │   ├── xcomponent_adapter/
│   │   │   │   └── CMakeLists.txt
│   │   │   └── libs/              # Prebuilt libraries
│   │   │       └── gecko/         # Compiled Gecko libraries
│   │   └── ohosTest/              # Test code
│   └── build-profile.json         # Build configuration
├── gecko_port/                    # Gecko porting layer module
│   ├── src/
│   │   └── main/
│   │       ├── cpp/
│   │       │   ├── widget/        # OpenHarmony widget implementation
│   │       │   ├── gfx/           # Graphics integration
│   │       │   ├── netwerk/       # Network stack
│   │       │   └── xpcom/         # XPCOM components
│   │       └── CMakeLists.txt
│   └── build-profile.json
├── webrender_ohos/                # WebRender adaptation module
│   ├── src/
│   │   └── main/
│   │       ├── rust/              # Rust WebRender bindings
│   │       ├── cpp/               # C++ integration layer
│   │       └── CMakeLists.txt
│   └── build-profile.json
├── build/
├── gradle/
├── local.properties
└── settings.gradle               # Module inclusion

About

Development of Firefox on HarmonyOS/OpenHarmony/Oniro

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published