blob: 90863e21f1ead236f1be228bddae22e9586153ba [file] [log] [blame]
diff --git a/javascript/atoms/dom.js b/javascript/atoms/dom.js
index 9bd669a05d..569de66f58 100644
--- a/javascript/atoms/dom.js
+++ b/javascript/atoms/dom.js
@@ -587,14 +587,8 @@ bot.dom.isShown = function(elem, opt_ignoreOpacity) {
var parent = bot.dom.getParentNodeInComposedDom(e);
if (bot.dom.IS_SHADOW_DOM_ENABLED && (parent instanceof ShadowRoot)) {
- if (parent.host.shadowRoot !== parent) {
- // There is a younger shadow root, which will take precedence over
- // the shadow this element is in, thus this element won't be
- // displayed.
- return false;
- } else {
- parent = parent.host;
- }
+ // For backward compatibility, treat all shadow roots as shown.
+ return true;
}
if (parent && (parent.nodeType == goog.dom.NodeType.DOCUMENT ||
@@ -602,7 +596,7 @@ bot.dom.isShown = function(elem, opt_ignoreOpacity) {
return true;
}
- return parent && displayed(parent);
+ return !!parent && displayed(parent);
}
return bot.dom.isShown_(elem, !!opt_ignoreOpacity, displayed);
@@ -1262,13 +1256,6 @@ bot.dom.getOpacityNonIE_ = function(elem) {
bot.dom.getParentNodeInComposedDom = function(node) {
var /**@type {Node}*/ parent = node.parentNode;
- // Shadow DOM v1
- if (parent && parent.shadowRoot && node.assignedSlot !== undefined) {
- // Can be null on purpose, meaning it has no parent as
- // it hasn't yet been slotted
- return node.assignedSlot ? node.assignedSlot.parentNode : null;
- }
-
// Shadow DOM V0 (deprecated)
if (node.getDestinationInsertionPoints) {
var destinations = node.getDestinationInsertionPoints();
@@ -1277,6 +1264,13 @@ bot.dom.getParentNodeInComposedDom = function(node) {
}
}
+ // Shadow DOM v1
+ if (parent && parent.shadowRoot && node.assignedSlot !== undefined) {
+ // Can be null on purpose, meaning it has no parent as
+ // it hasn't yet been slotted
+ return node.assignedSlot ? node.assignedSlot.parentNode : null;
+ }
+
return parent;
};
diff --git a/javascript/atoms/mouse.js b/javascript/atoms/mouse.js
index 737ed50f62..1bc9e858f5 100644
--- a/javascript/atoms/mouse.js
+++ b/javascript/atoms/mouse.js
@@ -143,7 +143,7 @@ bot.Mouse.NO_BUTTON_VALUE_INDEX_ = 3;
* click/ mouseup/ mouseout/ mousemove contextmenu
* dblclick mousedown mouseover
* IE_DOC_PRE9 0 0 0 X 1 4 2 X 0 0 0 0 1 4 2 0 X X 0 X
- * WEBKIT/IE9 0 1 2 X 0 1 2 X 0 1 2 0 0 1 2 0 X X 2 X
+ * WEBKIT/IE9 0 1 2 X 0 1 2 X 0 1 2 4 0 1 2 4 X X 2 X
* GECKO 0 1 2 X 0 1 2 X 0 0 0 0 0 0 0 0 X X 2 X
* </pre>
* @private {!Object.<bot.events.EventType, !Array.<?number>>}
@@ -163,8 +163,8 @@ bot.Mouse.MOUSE_BUTTON_VALUE_MAP_ = (function() {
buttonValueMap[bot.events.EventType.CLICK] = [0, 1, 2, null];
buttonValueMap[bot.events.EventType.CONTEXTMENU] = [null, null, 2, null];
buttonValueMap[bot.events.EventType.MOUSEUP] = [0, 1, 2, null];
- buttonValueMap[bot.events.EventType.MOUSEOUT] = [0, 1, 2, 0];
- buttonValueMap[bot.events.EventType.MOUSEMOVE] = [0, 1, 2, 0];
+ buttonValueMap[bot.events.EventType.MOUSEOUT] = [0, 1, 2, 4];
+ buttonValueMap[bot.events.EventType.MOUSEMOVE] = [0, 1, 2, 4];
} else {
buttonValueMap[bot.events.EventType.CLICK] = [0, 1, 2, null];
buttonValueMap[bot.events.EventType.CONTEXTMENU] = [null, null, 2, null];
diff --git a/javascript/chrome-driver/atoms.js b/javascript/chrome-driver/atoms.js
index 5cf4416460..329390cf1f 100644
--- a/javascript/chrome-driver/atoms.js
+++ b/javascript/chrome-driver/atoms.js
@@ -142,6 +142,10 @@ webdriver.chrome.scrollIntoView_ = function(elem, region, center) {
offset = goog.style.getClientPosition(elem);
var windowSize = goog.dom.getDomHelper(elem).getViewportSize();
+ // Chrome uses either doc.documentElement or doc.body, depending on
+ // compatibility settings. For reliability, call scrollHelper on both.
+ // Calling scrollHelper on the wrong object is harmless.
+ scrollHelper(doc.documentElement, windowSize, offset, region, center);
scrollHelper(doc.body, windowSize, offset, region, center);
};
diff --git a/rake-tasks/crazy_fun/mappings/javascript.rb b/rake-tasks/crazy_fun/mappings/javascript.rb
index 1ac2b2066a..dfa11fbbc2 100644
--- a/rake-tasks/crazy_fun/mappings/javascript.rb
+++ b/rake-tasks/crazy_fun/mappings/javascript.rb
@@ -857,6 +857,8 @@ module Javascript
flags.push("--jscomp_error=undefinedVars")
flags.push("--jscomp_error=uselessCode")
flags.push("--jscomp_error=visibility")
+ # Work around https://github.com/google/closure-compiler/issues/1044
+ flags.push("--use_types_for_optimization=false")
expanded_flags = flags.join(" ") <<
" --js='" <<