From eac97dc44fc0e84b96c155c2c039c44e4c4f3c9f Mon Sep 17 00:00:00 2001 From: Dmitrii Filippov Date: Tue, 24 Sep 2019 18:05:15 +0200 Subject: [PATCH] Fix: getClassName doesn't work in some cases In Polymer 2, GrStyleObject.getClassName fails if passed element is not inside a ShadowDom. This problem doesn't affect gerrit's sites and appears in tests only. Bug: Issue 10930 Change-Id: Ie1e14557ca9627e03d27bf07bd7528352a930a35 --- .../app/elements/plugins/gr-styles-api/gr-styles-api.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/polygerrit-ui/app/elements/plugins/gr-styles-api/gr-styles-api.js b/polygerrit-ui/app/elements/plugins/gr-styles-api/gr-styles-api.js index 879b3921b9..1de8283439 100644 --- a/polygerrit-ui/app/elements/plugins/gr-styles-api/gr-styles-api.js +++ b/polygerrit-ui/app/elements/plugins/gr-styles-api/gr-styles-api.js @@ -37,8 +37,11 @@ * @return {string} Appropriate class name for the element is returned */ GrStyleObject.prototype.getClassName = function(element) { - const rootNode = Polymer.Settings.useShadow + let rootNode = Polymer.Settings.useShadow ? element.getRootNode() : document.body; + if (rootNode === document) { + rootNode = document.head; + } if (!rootNode.__pg_js_api_style_tags) { rootNode.__pg_js_api_style_tags = {}; }