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..7cd02f0507 100644
--- a/javascript/chrome-driver/atoms.js
+++ b/javascript/chrome-driver/atoms.js
@@ -142,7 +142,12 @@ webdriver.chrome.scrollIntoView_ = function(elem, region, center) {
 
   offset = goog.style.getClientPosition(elem);
   var windowSize = goog.dom.getDomHelper(elem).getViewportSize();
-  scrollHelper(doc.body, windowSize, offset, region, center);
+  // 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);
+  if (doc.body)
+    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='" <<
