8000 feat: Initial spatial control and aggressive feature stripping by westbrookbr · Pull Request #1881 · Igalia/wolvic · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

feat: Initial spatial control and aggressive feature stripping #1881

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

westbrookbr
Copy link

Project Goal: Transform Wolvic into a spatial multi-viewer for video content, optimized for minimal resource consumption and device heat.

Current Task: Establish core spatial control over a single existing browser tab/window and aggressively strip browser features.

Changes Implemented:

  1. Spatial Control Foundation (C++):

    • Added debugWidgetHandle and debugWidgetTransform to
      BrowserWorld to allow overriding a specific widget's transform.
    • Hardcoded debugWidgetHandle to 0 for initial testing.
    • Modified BrowserWorld::LayoutWidget to apply this debug
      transform, bypassing normal layout calculations for the targeted widget.
    • Implemented a programmatic X-axis oscillation animation for the
      debug widget's transform, primarily in BrowserWorld::TickImmersive.
  2. Aggressive Feature Stripping - Phase 1 (UI & High-Level Java Logic):

    • In VRBrowserActivity.java:
      • Disabled instantiation and usage of major UI components:
        NavigationBarWidget, TrayWidget, and TabsBar.
      • Updated addWidgets to only include essential widgets:
        RootWidget, KeyboardWidget (retained for potential future basic
        URL input), and WebXRInterstitialWidget (for core WebXR).
      • Added null checks for remaining Java-level code paths that might
        reference the stripped UI components.
    • Ensured new windows/sessions default to a blank page (see item 4).
  3. Aggressive Feature Stripping - Phase 2 (Backend Services & AndroidManifest):

    • In app/src/main/AndroidManifest.xml:
      • Commented out CrashReporterService and FileProvider.
      • Removed permissions: ACCESS_COARSE_LOCATION,
        ACCESS_FINE_LOCATION, REQUEST_INSTALL_PACKAGES, and the
        app-specific crash receiver permission.
    • In VRBrowserApplication.java:
      • Commented out the initialization of backend services/managers:
        Places (bookmarks/history), Services (dependent on Places),
        LoginStorage, Accounts, DownloadsManager, and Addons.
  4. Refined Initial Window Setup:

    • Analyzed Windows.java, Session.java, and SessionStore.java to
      understand initial window and URL loading mechanisms.
    • Modified Session.getHomeUri() in Session.java to ensure that
      newly created non-private sessions default to loading "about:blank",
      providing a clean and minimal initial page. This works in conjunction
      with WindowWidget.loadHome() which also points to this.

The application is expected to launch with a significantly reduced UI, displaying a single animated window with about:blank. The next steps involve building, testing these changes on a device, and addressing any runtime issues or crashes that may arise from the stripping process.

Project Goal: Transform Wolvic into a spatial multi-viewer for video content,
optimized for minimal resource consumption and device heat.

Current Task: Establish core spatial control over a single existing browser
tab/window and aggressively strip browser features.

Changes Implemented:

1.  Spatial Control Foundation (C++):
    *   Added `debugWidgetHandle` and `debugWidgetTransform` to
        `BrowserWorld` to allow overriding a specific widget's transform.
    *   Hardcoded `debugWidgetHandle` to `0` for initial testing.
    *   Modified `BrowserWorld::LayoutWidget` to apply this debug
        transform, bypassing normal layout calculations for the targeted widget.
    *   Implemented a programmatic X-axis oscillation animation for the
        debug widget's transform, primarily in `BrowserWorld::TickImmersive`.

2.  Aggressive Feature Stripping - Phase 1 (UI & High-Level Java Logic):
    *   In `VRBrowserActivity.java`:
        *   Disabled instantiation and usage of major UI components:
          `NavigationBarWidget`, `TrayWidget`, and `TabsBar`.
        *   Updated `addWidgets` to only include essential widgets:
          `RootWidget`, `KeyboardWidget` (retained for potential future basic
          URL input), and `WebXRInterstitialWidget` (for core WebXR).
        *   Added null checks for remaining Java-level code paths that might
          reference the stripped UI components.
    *   Ensured new windows/sessions default to a blank page (see item 4).

3.  Aggressive Feature Stripping - Phase 2 (Backend Services & AndroidManifest):
    *   In `app/src/main/AndroidManifest.xml`:
        *   Commented out `CrashReporterService` and `FileProvider`.
        *   Removed permissions: `ACCESS_COARSE_LOCATION`,
          `ACCESS_FINE_LOCATION`, `REQUEST_INSTALL_PACKAGES`, and the
          app-specific crash receiver permission.
    *   In `VRBrowserApplication.java`:
        *   Commented out the initialization of backend services/managers:
          `Places` (bookmarks/history), `Services` (dependent on Places),
          `LoginStorage`, `Accounts`, `DownloadsManager`, and `Addons`.

4.  Refined Initial Window Setup:
    *   Analyzed `Windows.java`, `Session.java`, and `SessionStore.java` to
      understand initial window and URL loading mechanisms.
    *   Modified `Session.getHomeUri()` in `Session.java` to ensure that
      newly created non-private sessions default to loading `"about:blank"`,
      providing a clean and minimal initial page. This works in conjunction
      with `WindowWidget.loadHome()` which also points to this.

The application is expected to launch with a significantly reduced UI,
displaying a single animated window with `about:blank`.
The next steps involve building, testing these changes on a device, and
addressing any runtime issues or crashes that may arise from the
stripping process.
@svillar
Copy link
Member
svillar commented Jul 4, 2025

Hi @westbrookbr, thanks for your contributions. I wonder what's your plan for this change. We are definitely not going to upstream those changes that remove most of the UI from Wolvic, so I wonder what you had in mind.

If you need just a browser window have you evaluated the option of using Wolvic in kiosk mode?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants
0