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)) |