Index: Source/core/frame/DOMWindow.cpp |
diff --git a/Source/core/frame/DOMWindow.cpp b/Source/core/frame/DOMWindow.cpp |
index 10606a074f8f36bb6f5dd7b735ef1a6dfd0ad80a..f3e31d86f9d3f1287acf41a3ac2d7d922bc955d9 100644 |
--- a/Source/core/frame/DOMWindow.cpp |
+++ b/Source/core/frame/DOMWindow.cpp |
@@ -8,11 +8,23 @@ |
#include "core/dom/SecurityContext.h" |
#include "core/frame/Frame.h" |
#include "core/frame/FrameClient.h" |
+#include "core/frame/Location.h" |
#include "platform/weborigin/KURL.h" |
#include "platform/weborigin/SecurityOrigin.h" |
namespace blink { |
+DOMWindow::~DOMWindow() |
+{ |
+} |
+ |
+Location* DOMWindow::location() const |
+{ |
+ if (!m_location) |
+ m_location = Location::create(frame()); |
+ return m_location.get(); |
+} |
+ |
bool DOMWindow::closed() const |
{ |
return !frame() || !frame()->host(); |
@@ -92,4 +104,20 @@ bool DOMWindow::isInsecureScriptAccess(DOMWindow& callingWindow, const String& u |
return true; |
} |
+void DOMWindow::resetLocation() |
+{ |
+ // Location needs to be reset manually because it doesn't inherit from DOMWindowProperty. |
+ // DOMWindowProperty is local-only, and Location needs to support remote windows, too. |
+ if (m_location) { |
+ m_location->reset(); |
+ m_location = nullptr; |
+ } |
+} |
+ |
+void DOMWindow::trace(Visitor* visitor) |
+{ |
+ visitor->trace(m_location); |
+ EventTargetWithInlineData::trace(visitor); |
+} |
+ |
} // namespace blink |