| Index: Source/core/frame/LocalFrame.cpp
 | 
| diff --git a/Source/core/frame/LocalFrame.cpp b/Source/core/frame/LocalFrame.cpp
 | 
| index d7362b387583bdce737827918f1543e45b9ab428..cf3618a1065afb3094fbac4d99fa8a67ed0ce02c 100644
 | 
| --- a/Source/core/frame/LocalFrame.cpp
 | 
| +++ b/Source/core/frame/LocalFrame.cpp
 | 
| @@ -30,6 +30,7 @@
 | 
|  #include "config.h"
 | 
|  #include "core/frame/LocalFrame.h"
 | 
|  
 | 
| +#include "bindings/core/dart/DartController.h"
 | 
|  #include "bindings/core/v8/ScriptController.h"
 | 
|  #include "core/dom/DocumentType.h"
 | 
|  #include "core/editing/Editor.h"
 | 
| @@ -366,6 +367,7 @@ void LocalFrame::willDetachFrameHost()
 | 
|      if (page() && page()->focusController().focusedFrame() == this)
 | 
|          page()->focusController().setFocusedFrame(nullptr);
 | 
|      script().clearScriptObjects();
 | 
| +    dart().clearScriptObjects();
 | 
|  
 | 
|      if (page() && page()->scrollingCoordinator() && m_view)
 | 
|          page()->scrollingCoordinator()->willDestroyScrollableArea(m_view.get());
 | 
| @@ -389,8 +391,10 @@ void LocalFrame::setDOMWindow(PassRefPtrWillBeRawPtr<LocalDOMWindow> domWindow)
 | 
|      //    explicitly notified that this frame is going away.
 | 
|      if (m_domWindow && host())
 | 
|          host()->consoleMessageStorage().frameWindowDiscarded(m_domWindow.get());
 | 
| -    if (domWindow)
 | 
| +    if (domWindow) {
 | 
|          script().clearWindowProxy();
 | 
| +        dart().clearWindowShell();
 | 
| +    }
 | 
|  
 | 
|      if (m_domWindow)
 | 
|          m_domWindow->reset();
 | 
| @@ -832,6 +836,7 @@ inline LocalFrame::LocalFrame(FrameLoaderClient* client, FrameHost* host, FrameO
 | 
|      , m_loader(this)
 | 
|      , m_navigationScheduler(this)
 | 
|      , m_script(ScriptController::create(this))
 | 
| +    , m_dart(adoptPtr(new DartController(this)))
 | 
|      , m_editor(Editor::create(*this))
 | 
|      , m_spellChecker(SpellChecker::create(*this))
 | 
|      , m_selection(FrameSelection::create(this))
 | 
| 
 |