Merge "Bump lit to 2.2.3 so it matches gerrit's version."
diff --git a/data/rules.json b/data/rules.json
index bddafdc..a174d28 100644
--- a/data/rules.json
+++ b/data/rules.json
@@ -1,6 +1,18 @@
[
{
"disabled": false,
+ "target": ".*",
+ "operator": "addRespHeader",
+ "destination": "Access-Control-Allow-Origin=*|X-WEBKIT-CSP=*"
+ },
+ {
+ "disabled": false,
+ "target": ".*",
+ "operator": "addRespHeader",
+ "destination": "x-google-cache-control=max-age=0, no-cache, no-store, must-revalidate|Cache-Control=max-age=0, no-cache, no-store, must-revalidate"
+ },
+ {
+ "disabled": false,
"target": ".*play.google.com.*",
"operator": "block",
"destination": ""
diff --git a/package.json b/package.json
index 54d7d58..7d5feca 100644
--- a/package.json
+++ b/package.json
@@ -1,4 +1,5 @@
{
+ "version": "0.0.9",
"name": "gerrit-fe-dev-helper",
"license": "MIT",
"dependencies": {
@@ -13,7 +14,6 @@
"webpack": "^4.41.2",
"webpack-cli": "^3.3.10"
},
- "version": "0.0.1",
"description": "Dev helper for gerrit fe development",
"scripts": {
"assets:html": "cp src/*.html dist",
diff --git a/release-notes.md b/release-notes.md
index 4a17cf3..3b4a9c8 100644
--- a/release-notes.md
+++ b/release-notes.md
@@ -1,3 +1,9 @@
+#### v0.0.9
+
+- Move cors / cache override to rules, so user can disable it from the popup
+- Change header value separator from `,` to `|`, as `,` can be part of the value while `|` is unlikely
+- Fix `onGerritReady` to use tag name instead of id and max at 5s ;)
+
#### v0.0.8
- **BREAKING CHNAGE**: Gerrit is moving to `gr-app.js` only, so `gr-app.html` will no longer exists, we have updated default rules to forward to `gr-app.js` as well, in case you are still using `gr-app.html`, please modify that redirect rule by changing `gr-app.js` to `gr-app.html`
diff --git a/src/background.ts b/src/background.ts
index 420f99f..215fe48 100644
--- a/src/background.ts
+++ b/src/background.ts
@@ -53,32 +53,6 @@
return {responseHeaders: resp.responseHeaders};
}
- let len = resp.responseHeaders.length;
- if (len > 0) {
- while (--len) {
- const header = resp.responseHeaders[len];
- if (header.name.toUpperCase() === 'X-WEBKIT-CSP') {
- header.value = '*';
- break;
- } else if (header.name.toLowerCase() === 'access-control-allow-origin') {
- resp.responseHeaders[len].value = '*';
- break;
- } else if (
- header.name.toLowerCase() === 'cache-control' ||
- header.name.toLowerCase() === 'x-google-cache-control') {
- header.value = 'max-age=0, no-cache, no-store, must-revalidate';
- }
- }
- }
-
- // add cors and cache anyway
- resp.responseHeaders.push(
- {'name': 'Access-Control-Allow-Origin', 'value': '*'});
- resp.responseHeaders.push({
- 'name': 'Cache-Control',
- 'value': 'max-age=0, no-cache, no-store, must-revalidate'
- });
-
const matches = rules.filter(isValidRule)
.filter(
rule => rule.operator === Operator.REMOVE_RESPONSE_HEADER
@@ -95,7 +69,7 @@
&& !rule.disabled
&& new RegExp(rule.target).test(resp.url));
addMatches.forEach(rule => {
- const addedHeaders = rule.destination.split(",")
+ const addedHeaders = rule.destination.split("|")
addedHeaders.forEach(addedHeader => {
const partial = addedHeader.split("=");
if (partial.length === 2) {
diff --git a/src/content_script.ts b/src/content_script.ts
index 7e3071a..19245a7 100644
--- a/src/content_script.ts
+++ b/src/content_script.ts
@@ -14,16 +14,28 @@
// Since content-script can not access window.Gerrit,
// here checks the readiness based on #mainHeader element
+// Wait at most 5s before considering it as loaded.
+const MAX_WAIT_TIME = 5000;
+const getHeaderEl = () => {
+ if (document.querySelector("#app")) {
+ return document.querySelector("#app").shadowRoot.querySelector("#app-element").shadowRoot.querySelector("#mainHeader");
+ } else {
+ return document.querySelector("gr-app").shadowRoot.querySelector("gr-app-element").shadowRoot.querySelector("gr-main-header");
+ }
+}
const onGerritReady = async () => {
let header;
try {
- header = document.querySelector("#app").shadowRoot.querySelector("#app-element").shadowRoot.querySelector("#mainHeader");
+ header = getHeaderEl();
} catch (e) { }
+ let waitTime = 0;
while (!header) {
+ if (waitTime > MAX_WAIT_TIME) break;
+ waitTime += 1000;
await nextTick(1000);
try {
- header = document.querySelector("#app").shadowRoot.querySelector("#app-element").shadowRoot.querySelector("#mainHeader");
+ header = getHeaderEl();
} catch (e) { }
}
return true;
diff --git a/src/manifest.json b/src/manifest.json
index ab7599d..0ce92a0 100644
--- a/src/manifest.json
+++ b/src/manifest.json
@@ -2,7 +2,7 @@
"manifest_version": 2,
"name": "Gerrit FE Dev Helper",
"description": "This extension can help you development on gerrit sites, frontend specifically",
- "version": "0.0.8",
+ "version": "0.0.9",
"browser_action": {
"default_icon": "gray-32.png",
"default_title": "Gerrit FE Dev Helper"
@@ -26,14 +26,11 @@
],
"content_security_policy": "default-src 'none'; script-src 'self'; style-src 'unsafe-inline'; connect-src https://*",
"permissions": [
- "debugger",
"activeTab",
"<all_urls>",
- "notifications",
"storage",
"tabs",
"webRequest",
- "webRequestBlocking",
- "declarativeContent"
+ "webRequestBlocking"
]
}
\ No newline at end of file