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