| Index: Source/core/page/EventHandler.cpp
 | 
| diff --git a/Source/core/page/EventHandler.cpp b/Source/core/page/EventHandler.cpp
 | 
| index 7a7d9d32f284f16d4cf130e72ac92ab40fd4932d..b8498579ff5fea581e7401d1451f28e2bed79195 100644
 | 
| --- a/Source/core/page/EventHandler.cpp
 | 
| +++ b/Source/core/page/EventHandler.cpp
 | 
| @@ -85,7 +85,6 @@
 | 
|  #include "core/rendering/style/CursorList.h"
 | 
|  #include "core/rendering/style/RenderStyle.h"
 | 
|  #include "core/svg/SVGDocument.h"
 | 
| -#include "core/svg/SVGElementInstance.h"
 | 
|  #include "core/svg/SVGUseElement.h"
 | 
|  #include "platform/PlatformGestureEvent.h"
 | 
|  #include "platform/PlatformKeyboardEvent.h"
 | 
| @@ -259,7 +258,6 @@ void EventHandler::clear()
 | 
|      m_resizeScrollableArea = 0;
 | 
|      m_nodeUnderMouse = nullptr;
 | 
|      m_lastNodeUnderMouse = nullptr;
 | 
| -    m_lastInstanceUnderMouse = nullptr;
 | 
|      m_lastMouseMoveEventSubframe = nullptr;
 | 
|      m_lastScrollbarUnderMouse = nullptr;
 | 
|      m_clickCount = 0;
 | 
| @@ -1802,22 +1800,6 @@ MouseEventWithHitTestResults EventHandler::prepareMouseEvent(const HitTestReques
 | 
|      return m_frame->document()->prepareMouseEvent(request, documentPointForWindowPoint(m_frame, mev.position()), mev);
 | 
|  }
 | 
|  
 | 
| -static inline SVGElementInstance* instanceAssociatedWithShadowTreeElement(Node* referenceNode)
 | 
| -{
 | 
| -    if (!referenceNode || !referenceNode->isSVGElement())
 | 
| -        return 0;
 | 
| -
 | 
| -    ShadowRoot* shadowRoot = referenceNode->containingShadowRoot();
 | 
| -    if (!shadowRoot)
 | 
| -        return 0;
 | 
| -
 | 
| -    Element* shadowTreeParentElement = shadowRoot->host();
 | 
| -    if (!isSVGUseElement(shadowTreeParentElement))
 | 
| -        return 0;
 | 
| -
 | 
| -    return toSVGUseElement(shadowTreeParentElement)->instanceForShadowTreeElement(referenceNode);
 | 
| -}
 | 
| -
 | 
|  void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMouseEvent& mouseEvent, bool fireMouseOverOut)
 | 
|  {
 | 
|      Node* result = targetNode;
 | 
| @@ -1832,37 +1814,6 @@ void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo
 | 
|      }
 | 
|      m_nodeUnderMouse = result;
 | 
|  
 | 
| -    // <use> shadow tree elements may have been recloned, update node under mouse in any case
 | 
| -    if (m_lastInstanceUnderMouse) {
 | 
| -        SVGElement* lastCorrespondingElement = m_lastInstanceUnderMouse->correspondingElement();
 | 
| -        SVGElement* lastCorrespondingUseElement = m_lastInstanceUnderMouse->correspondingUseElement();
 | 
| -
 | 
| -        if (lastCorrespondingElement && lastCorrespondingUseElement) {
 | 
| -            HashSet<SVGElementInstance*> instances = lastCorrespondingElement->instancesForElement();
 | 
| -
 | 
| -            // Locate the recloned shadow tree element for our corresponding instance
 | 
| -            HashSet<SVGElementInstance*>::iterator end = instances.end();
 | 
| -            for (HashSet<SVGElementInstance*>::iterator it = instances.begin(); it != end; ++it) {
 | 
| -                SVGElementInstance* instance = (*it);
 | 
| -                ASSERT(instance->correspondingElement() == lastCorrespondingElement);
 | 
| -
 | 
| -                if (instance == m_lastInstanceUnderMouse)
 | 
| -                    continue;
 | 
| -
 | 
| -                if (instance->correspondingUseElement() != lastCorrespondingUseElement)
 | 
| -                    continue;
 | 
| -
 | 
| -                SVGElement* shadowTreeElement = instance->shadowTreeElement();
 | 
| -                if (!shadowTreeElement->inDocument() || m_lastNodeUnderMouse == shadowTreeElement)
 | 
| -                    continue;
 | 
| -
 | 
| -                m_lastNodeUnderMouse = shadowTreeElement;
 | 
| -                m_lastInstanceUnderMouse = instance;
 | 
| -                break;
 | 
| -            }
 | 
| -        }
 | 
| -    }
 | 
| -
 | 
|      // Fire mouseout/mouseover if the mouse has shifted to a different node.
 | 
|      if (fireMouseOverOut) {
 | 
|          RenderLayer* layerForLastNode = layerForNode(m_lastNodeUnderMouse.get());
 | 
| @@ -1896,7 +1847,6 @@ void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo
 | 
|          if (m_lastNodeUnderMouse && m_lastNodeUnderMouse->document() != m_frame->document()) {
 | 
|              m_lastNodeUnderMouse = nullptr;
 | 
|              m_lastScrollbarUnderMouse = nullptr;
 | 
| -            m_lastInstanceUnderMouse = nullptr;
 | 
|          }
 | 
|  
 | 
|          if (m_lastNodeUnderMouse != m_nodeUnderMouse) {
 | 
| @@ -1908,7 +1858,6 @@ void EventHandler::updateMouseEventTargetNode(Node* targetNode, const PlatformMo
 | 
|                  m_nodeUnderMouse->dispatchMouseEvent(mouseEvent, EventTypeNames::mouseover, 0, m_lastNodeUnderMouse.get());
 | 
|          }
 | 
|          m_lastNodeUnderMouse = m_nodeUnderMouse;
 | 
| -        m_lastInstanceUnderMouse = instanceAssociatedWithShadowTreeElement(m_nodeUnderMouse.get());
 | 
|      }
 | 
|  }
 | 
|  
 | 
| 
 |