Migrate to Manifest V3: Replace blocking web request listeners We are following this migration guide: https://developer.chrome.com/docs/extensions/migrating/blocking-web-requests/ In a nutshell Chrome does not allow request/response manipulation anymore programmatically: You cannot hook up a listener and do whatever you like adhoc. Instead you have to register declarative manipulation rules. This suits us quite well, because we already have declarative rules defined by the user. So we are removing all the listeners and the adhoc manipulation, and instead we are adding conversion logic from our own `Rule` interface to Chrome's `chrome.declarativeNetRequest.Rule`. Then we only have to listen to `chrome.storage` updates and call `updateRules()`, which will do the conversion and make sure that Chrome's rules are in sync with the user's rules. We are also removing default rules being fetched from a URL. Instead we believe that using the default rules that were shipped with the current version of the extension is more robust, and simpler to maintain. Google-Bug-Id: b/287605771 Change-Id: I92548878dd82067ed6e14cf9102d6dc51379c56d
Gerrit FE Dev helper is a Chrome extension that will focus on helping frontend developers on Gerrit development.
As mentioned in readme from polygerrit-ui, we already support to start your local host for developing / debugging / testing, but it has quite a few restrictions:
To solve these pain points, Tao Zhou created this Chrome extension. It proxies all assets requests or any requests to a local HTTP server, and has the ability to inject any plugins exposed by the local HTTP server.
See in release notes and Features below.
The easiest is to install from the Chrome web store here: https://chrome.google.com/webstore/detail/gerrit-fe-dev-helper/jimgomcnodkialnpmienbomamgomglkd.
After you have installed and enabled the extension, you should see something similar to demo.png.
To build from source:
npm install npm run build
Then you should have gerrit_fe_dev_helper.zip that you can test with.
yarn start
Or if you are developing a plugin, serve your plugin via a local HTTP server via any means.
Example:
npx http-server -c-1 --cors
Gerrit dev helper is enabled, and now your Gerrit assets should be loaded from your local HTTP serverThe extension comes with a set of default rules, but you can change the rules by clicking the extension icon again.
The extension supports six different type of rules:
The two options to inject any plugins (injectJsPlugin and injectHtmlPlugin) are meant to help you develop your plugins for your Gerrit sites. As they are served from your local HTTP server, you do not need to deploy them on the target Gerrit server.
Use injectHtmlPlugin rule or use redirect rule if its an existing html plugin.
For single-file js plugins, use injectJsPlugin rule or use redirect if its an exising js plugin.
For multi-file modularized js plugins (you have import / export in source code), you have two options:
injectJsModule, this will load the js with type="module", and due to restriction of type="module", Gerrit won't be able to recognize the plugin without a proper url set when calling Gerrit.install, so you also need to tweak your code to call Gerrit.install(callback, undefined, 'http://localhost:8081/plugins_/checks/gr-checks/gr-checks.js') to let Gerrit treat it as a legit pluginhttp://localhost:8081/plugins_/checks/gr-checks/gr-checks.js with type="module", and then treat it as a html pluginEither way, you need to block the existing plugin if its already on the page.
npm run build.Developer Mode.Load Unpacked.dist directory.As a Google developer you will have to add a key to the manifest.json in the dist/ directory as documented here: http://go/extension-identification#i%E2%80%99m-developing-a-chrome-extension-on-my-computer
This section is for members of Google's developer team only.
manifest.json and package.json.npm run build.Upload dogfood version button.Upload new package button.Please don't hesitate to contact dhruvsri@google.com for support on this extension.