Skip to content

Install private and trusted-tester extensions from the Chrome Web Store - #778

Closed
rajuGT wants to merge 1 commit into
pauljoda:mainfrom
rajuGT:fix/private-web-store-install
Closed

rajuGT wants to merge 1 commit into
pauljoda:mainfrom
rajuGT:fix/private-web-store-install

Conversation

@rajuGT

@rajuGT rajuGT commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

Context

I tried to install a Chrome Web Store extension that's published only to my company's Google Workspace domain. The listing opened, since I'm signed in with an account that can see it, but the install failed with:

Couldn't download this extension from the Chrome Web Store (HTTP 401).

image

This is the problem reported in #263. I used Claude to produce this fix. It would help a lot to have it in a release before Arc's sunset in December; otherwise I'll need another browser for extensions limited to our domain.

What changed

A Chrome Web Store install now retries the package download once with the Space's cookies when Google's update service answers 401 or 403. Without this, a private or trusted-tester item can't be installed, because the service serves it only to an account that can see it. The first request still omits cookies, so a public item is downloaded anonymously as before. This matches how Chromium's extension downloader recovers an authenticated CRX fetch (IterateFetchCredentialsAfterFailure). Cancelling the install review still stops the retry.

The download's network traffic annotation and the engine README describe when cookies are sent.

This touches engine inputs (CrestEngines/Chromium/Overlay), so a maintainer needs to publish a new chromium-engine release with the merge.

Validation

  • Scripts/check-version.sh --fix-commit passed (0.8.114 to 0.8.115, release note private-web-store-extension-install).
  • The Chromium engine was not rebuilt with this change, and installing a private item has not been tried yet.

AI usage

  • AI tools helped produce this change.
  • I ran the crest-contribution skill (.agents/skills/crest-contribution/SKILL.md), followed it, and reviewed every generated line.

Boundaries

  • Space and browsing-profile isolation are preserved.
  • The macOS and mobile platform behavior remains intentionally native.
  • User-visible or architecture-significant changes add an explicit entry to Documentation/ReleaseNotes.json.
  • Every verified fix commit includes its patch bump and passes Scripts/check-version.sh --fix-commit.
  • I have signed off every commit as described in CONTRIBUTING.md.

Summary by CodeRabbit

  • New Features
    • Private and trusted-tester Chrome Web Store extensions can now be installed in a Space signed in to a Google account with access to them.
    • Extension downloads retry once with the Space’s cookies if the initial request is denied.
  • Updates
    • Updated the app version to 0.8.115.

## What changed

A Chrome Web Store install now retries the package download once with the Space's cookies when Google's update service answers 401 or 403. Without this, a private or trusted-tester item can't be installed, because the service serves it only to an account that can see it. The first request still omits cookies, so a public item is downloaded anonymously as before. This matches how Chromium's extension downloader recovers an authenticated CRX fetch (IterateFetchCredentialsAfterFailure). Cancelling the install review still stops the retry.

The download's network traffic annotation and the engine README describe when cookies are sent.

This touches engine inputs (CrestEngines/Chromium/Overlay), so a maintainer needs to publish a new chromium-engine release with the merge.

## Validation

- Scripts/check-version.sh --fix-commit passed (0.8.114 to 0.8.115, release note private-web-store-extension-install).
- The Chromium engine was not rebuilt with this change, and installing a private item has not been tried yet.

## AI usage

- [x] AI tools helped produce this change.
- [x] I ran the `crest-contribution` skill (`.agents/skills/crest-contribution/SKILL.md`), followed it, and reviewed every generated line.

## Boundaries

- [x] Space and browsing-profile isolation are preserved.
- [x] The macOS and mobile platform behavior remains intentionally native.
- [x] User-visible or architecture-significant changes add an explicit entry to `Documentation/ReleaseNotes.json`.
- [x] Every verified fix commit includes its patch bump and passes `Scripts/check-version.sh --fix-commit`.
- [x] I have signed off every commit as described in `CONTRIBUTING.md`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: rajuGT <raju.gt@gojek.com>
@rajuGT
rajuGT requested a review from pauljoda as a code owner October 27, 2026 13:31
@coderabbitai

coderabbitai Bot commented Oct 27, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 0b1974bb-bd86-482f-89c5-8eef3a3c0ab2
Commits

Reviewing files that changed from the base of the PR and between a6f0f0c and 01a228b.

Files selected for processing: 4
  • Config/Version.xcconfig
  • CrestEngines/Chromium/Overlay/chrome/browser/ui/crest/crest_chrome_host.mm
  • CrestEngines/Chromium/README.md
  • Documentation/ReleaseNotes.json

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

Walkthrough

The Web Store package download now uses Google’s update service. It starts without cookies and retries once with Space cookies after HTTP 401 or 403. The change also updates download documentation, release notes, and the marketing version.

Changes: Web Store package download

Layer / File(s) Summary
Package download and retry flow
CrestEngines/Chromium/Overlay/chrome/browser/ui/crest/crest_chrome_host.mm, CrestEngines/Chromium/README.md, Documentation/ReleaseNotes.json, Config/Version.xcconfig
The download requests the package without cookies and retries once with Space cookies after HTTP 401 or 403. Other unsuccessful responses report an error. The README and release note describe the private extension installation flow, and the marketing version changes to 0.8.115.

Priority: Normal

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Bug fix

Sequence Diagram(s)

sequenceDiagram
  participant WebStoreDownload
  participant URLLoaderFactory
  participant GoogleUpdateService
  WebStoreDownload->>URLLoaderFactory: Start anonymous package request
  URLLoaderFactory->>GoogleUpdateService: Request package without cookies
  GoogleUpdateService-->>WebStoreDownload: Return response
  alt HTTP 401 or 403
    WebStoreDownload->>URLLoaderFactory: Retry once with Space cookies
    URLLoaderFactory->>GoogleUpdateService: Request package with cookies
    GoogleUpdateService-->>WebStoreDownload: Return retry response
  end
  URLLoaderFactory-->>WebStoreDownload: Return file or error
Loading
Merge Risk: Minimal · up to 01a22

No concrete merge-blocking issue is established. A private-extension install remains untested, and the Chromium engine release is still needed after merge.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly and concisely describes the main change: support for installing private and trusted-tester extensions from the Chrome Web Store.
Docstring Coverage Passed No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within survi…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

No eligible functions found in the changed files. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 0 functions across 0 files. (4 skipped: 4 unsupported.)

Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

pauljoda added a commit that referenced this pull request Nov 6, 2026
Installing a Chrome Web Store item published only to trusted testers or a
Workspace domain failed with HTTP 401. Crest downloads the package from
Google's update service without cookies, and the service serves such an
item only to an account that can see it. The download now asks once more
with the Space's cookies when the service refuses with 401 or 403, as
Chromium's own extension downloader does. The first request still carries
no cookies, so public items download as before, and the retry goes only to
Google's service over HTTPS. A refusal's body no longer counts toward the
download's progress.

Ported from rajuGT's change in #778 to the current Web Store install code.

Co-authored-by: rajuGT <2203863+rajuGT@users.noreply.github.com>
Signed-off-by: Paul Davis <pauldavis101@gmail.com>
pauljoda added a commit that referenced this pull request Nov 6, 2026
On Chromium, Chrome Web Store extensions published only to trusted
testers or a Workspace domain now install, where they failed with HTTP
401 (0.8.188).

- Crest downloads the package from Google's update service without
  cookies, and the service serves such an item only to an account that
  can see it.
- When the service refuses with 401 or 403, the download now asks once
  more with the Space's cookies, as Chromium's own extension downloader
  does. The first request still carries no cookies, so public items
  download as before, and the retry goes only to Google's service over
  HTTPS.
- A refusal's body no longer counts toward the download's progress.

This ports rajuGT's change in #778 to the current Web Store install
code.

Part of the engine stack #974 to #984, which ships with one engine
published from the top PR.

The engine builds with the change, and a public item still installs in
an isolated review build. The retry was not seen to succeed, for want of
a private item to install. Host apply, version, public-source,
release-note, architecture and license checks and the script tests
pass. CI passes.

Closes #263

Co-authored-by: rajuGT <2203863+rajuGT@users.noreply.github.com>
Signed-off-by: Paul Davis <pauldavis101@gmail.com>
@pauljoda

pauljoda commented Nov 6, 2026

Copy link
Copy Markdown
Owner

Thanks @rajuGT. This landed in #983, ported to the current Chrome Web Store install code, with you credited as a co-author. It ships in 0.8.188 and later. Closing this as superseded by #983.

@pauljoda pauljoda closed this Nov 6, 2026
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