Skip to content

feat: enable BrowserOS onboarding - #2480

Merged
Nikhil (shadowfax92) merged 1 commit into
mainfrom
feat/enable-browseros-onboarding-patches
Aug 31, 2026
Merged

feat: enable BrowserOS onboarding#2480
Nikhil (shadowfax92) merged 1 commit into
mainfrom
feat/enable-browseros-onboarding-patches

Conversation

@shadowfax92

Copy link
Copy Markdown
Contributor

Summary

  • remove the BrowserOS product exclusion from the existing onboarding eligibility check
  • preserve regular-profile, initial-profile, off-the-record, and completion restrictions
  • refresh the canonical Chromium patch without changing onboarding UI resources or startup plumbing

Design

The existing ProfilePicker launch and onboarding bridge are already product-neutral. This change only allows BrowserOS builds through ShouldShow(); the patch remains owned by the existing onboarding-import feature.

Test plan

  • sfmux pool build -- autoninja -C out/Default_browseros_arm64 chrome
  • extraction verifier: 1/1 byte-match and 1/1 apply-check

@shadowfax92

Copy link
Copy Markdown
Contributor Author

Greptile (@greptileai) review

@shadowfax92

Copy link
Copy Markdown
Contributor Author

Claude (@claude) review

@claude

claude Bot commented Aug 31, 2026

Copy link
Copy Markdown

Claude finished Nikhil (@shadowfax92)'s task in 1m 48s —— View job


Code Review

  • Gather context (PR diff, call sites, related patch files)
  • Review the patch logic
  • Post findings

Summary: This is a small, well-scoped patch that removes the IsBrowserOSProduct() early-return from browseros::onboarding::ShouldShow(), while keeping the regular-profile / initial-profile / off-the-record / already-completed guards intact.

Analysis of the change

Looking at the call site in chrome/browser/ui/startup/startup_browser_creator.cc (StartupBrowserCreator::LaunchBrowser):

if (browseros::IsBrowserOSProduct()) {
  browseros::onboarding::NeutralizeUpstreamFirstRun();
}

if (!command_line.HasSwitch(switches::kNoFirstRun) &&
    browseros::onboarding::ShouldShow(profile)) {
  ...
  ProfilePicker::Show(ProfilePicker::Params::ForFirstRun(...));
  return;
}

Before this patch, ShouldShow() unconditionally returned false whenever IsBrowserOSProduct() was true — meaning the BrowserOS onboarding UI could never actually show on BrowserOS builds, which looks like a self-defeating leftover guard (probably from when the feature was still being staged behind a flag). Removing it is consistent with the call site, which already handles IsBrowserOSProduct()-specific behavior separately (NeutralizeUpstreamFirstRun()), and lets ShouldShow() focus purely on profile-eligibility.

Observations (non-blocking):

  1. No behavior change for non-BrowserOS Chromium builds — the other guards (IsRegularProfile(), IsOffTheRecord(), initial-profile check, kOnboardingCompleted) are untouched, so this is a targeted, low-risk change.
  2. Patch file format — since this file is itself a generated Chromium patch (diff-of-a-diff), the usual concerns (line-count header @@ -0,0 +1,N @@ and blob index hash staying consistent with the body) apply. Worth double-checking the extraction verifier output mentioned in the test plan (1/1 byte-match, 1/1 apply-check) was run against the latest patch bundle, since patch files are easy to get out of sync by hand.
  3. Header comment (browseros_onboarding_prefs.h) already just says "Returns whether onboarding should interrupt startup for profile" — generic enough that no doc update was needed here, good.
  4. No test coverage changes — reasonable given this is a Chromium-side C++ patch rather than TS/JS code with a local test harness for this repo.

Overall this looks correct and matches its stated intent — removing an accidental self-exclusion so BrowserOS onboarding actually surfaces on BrowserOS builds, without touching the rest of the eligibility logic or startup plumbing.

@shadowfax92
Nikhil (shadowfax92) merged commit 990010b into main Aug 31, 2026
4 of 5 checks passed
@greptile-apps

greptile-apps Bot commented Aug 31, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR enables the existing onboarding flow for BrowserOS by removing the product-specific exclusion from ShouldShow(), while retaining profile eligibility and completion checks.

  • Removes the IsBrowserOSProduct() early return and now-unused product header.
  • Preserves regular-profile, initial-profile, off-the-record, and completed-onboarding restrictions.
  • Refreshes the stored Chromium patch representing the onboarding preference implementation.

Confidence Score: 5/5

The PR appears safe to merge because the newly enabled path uses the existing product-neutral onboarding flow and preserves all other eligibility restrictions.

The changed guard removal aligns with the shared onboarding controller, WebUI registration, first-run integration, and universally registered completion preference, with no supported blocking or non-blocking defect remaining.

Important Files Changed

Filename Overview
packages/browseros/chromium_patches/chrome/browser/browseros/onboarding/browseros_onboarding_prefs.cc Removes the BrowserOS product exclusion from the stored Chromium onboarding eligibility implementation; no actionable regression was identified.

Reviews (1): Last reviewed commit: "feat(patches): enable BrowserOS onboardi..." | Re-trigger Greptile

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant