Update handling of shadow dom
1. Instead of refreshing with ?dom=shadow, set window.Polymer before
Polymer is loaded.
2. Show a pink bottom border on the header to indicate when we are using
shadow dom, making it more obvious for testing.
Change-Id: I99130bf162c6301ef612e92f72214243d8a9512e
diff --git a/polygerrit-ui/app/elements/gr-app.html b/polygerrit-ui/app/elements/gr-app.html
index 754ca69d..1f8ae5e 100644
--- a/polygerrit-ui/app/elements/gr-app.html
+++ b/polygerrit-ui/app/elements/gr-app.html
@@ -13,6 +13,14 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+<script>
+ // This must be set prior to loading Polymer for the first time.
+ if (localStorage.getItem('USE_SHADOW_DOM') === 'true') {
+ window.Polymer = {
+ dom: 'shadow',
+ };
+ }
+</script>
<link rel="import" href="../bower_components/polymer/polymer.html">
<link rel="import" href="../bower_components/polymer-resin/standalone/polymer-resin.html">
@@ -67,6 +75,10 @@
footer {
color: var(--primary-text-color);
}
+ gr-main-header.shadow {
+ /* Make it obvious for shadow dom testing */
+ border-bottom: 1px dotted pink;
+ }
gr-main-header {
background-color: var(--header-background-color);
padding: 0 var(--default-horizontal-margin);
@@ -114,7 +126,10 @@
}
</style>
<gr-fixed-panel id="header">
- <gr-main-header id="mainHeader" search-query="{{params.query}}">
+ <gr-main-header
+ id="mainHeader"
+ search-query="{{params.query}}"
+ class$="[[_computeShadowClass(_isShadowDom)]]">
</gr-main-header>
</gr-fixed-panel>
<main>
@@ -160,7 +175,7 @@
<div class="errorMoreInfo">[[_lastError.moreInfo]]</div>
</div>
</main>
- <footer r="contentinfo">
+ <footer r="contentinfo" class$="[[_computeShadowClass(_isShadowDom)]]">
<div>
Powered by <a href="https://www.gerritcodereview.com/" rel="noopener"
target="_blank">Gerrit Code Review</a>
diff --git a/polygerrit-ui/app/elements/gr-app.js b/polygerrit-ui/app/elements/gr-app.js
index d4e1bb1..bd29798 100644
--- a/polygerrit-ui/app/elements/gr-app.js
+++ b/polygerrit-ui/app/elements/gr-app.js
@@ -54,6 +54,7 @@
_lastError: Object,
_lastSearchPage: String,
_path: String,
+ _isShadowDom: Boolean,
},
listeners: {
@@ -75,16 +76,8 @@
'?': '_showKeyboardShortcuts',
},
- created() {
- // If shadow dom cookie is set, reload the page using shadow dom.
- if (util.getCookie('USE_SHADOW_DOM') === 'true') {
- if (!window.location.href.includes('?dom=shadow')) {
- window.location.href = window.location.href + '?dom=shadow';
- }
- }
- },
-
ready() {
+ this._isShadowDom = Polymer.Settings.useShadow;
this.$.router.start();
this.$.restAPI.getAccount().then(account => {
@@ -234,5 +227,9 @@
this.params.justRegistered = false;
this.$.registration.close();
},
+
+ _computeShadowClass(isShadowDom) {
+ return isShadowDom ? 'shadow' : '';
+ },
});
})();