Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2598)

Unified Diff: Source/web/WebFrame.cpp

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Back out non-Oilpan experiment + tidy up by adding frame() ref accessors Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: Source/web/WebFrame.cpp
diff --git a/Source/web/WebFrame.cpp b/Source/web/WebFrame.cpp
index 7fbdac76057e344dda465878c00fb1a4cde75209..826f69d06bb99574a13a752590594315a9d81917 100644
--- a/Source/web/WebFrame.cpp
+++ b/Source/web/WebFrame.cpp
@@ -8,6 +8,7 @@
#include "core/frame/RemoteFrame.h"
#include "core/html/HTMLFrameOwnerElement.h"
#include "platform/UserGestureIndicator.h"
+#include "platform/heap/Handle.h"
#include "web/OpenedFrameTracker.h"
#include "web/WebLocalFrameImpl.h"
#include "web/WebRemoteFrameImpl.h"
@@ -28,7 +29,7 @@ Frame* toCoreFrame(const WebFrame* frame)
bool WebFrame::swap(WebFrame* frame)
{
using std::swap;
- RefPtr<Frame> oldFrame = toCoreFrame(this);
+ RefPtrWillBeRawPtr<Frame> oldFrame = toCoreFrame(this);
// All child frames must be detached first.
oldFrame->detachChildren();
@@ -230,4 +231,20 @@ WebFrame::~WebFrame()
m_openedFrameTracker.reset(0);
}
+void WebFrame::traceChildren(Visitor* visitor, WebFrame* frame)
haraken 2014/09/22 05:35:23 Just to confirm: We just need to trace children an
sof 2014/09/22 08:26:38 I'd say so, yes - if we assume that the topmost fr
haraken 2014/09/22 08:32:55 Yeah, that's what I wanted to ask :) If this trac
sof 2014/09/22 09:52:51 Hmm. I'm going to try to keep this WebFrame tracin
+{
+#if ENABLE(OILPAN)
+ // Trace the children frames.
+ WebFrame* child = frame ? frame->firstChild() : 0;
+ while (child) {
+ if (child->isWebLocalFrame())
+ visitor->trace(toWebLocalFrameImpl(child));
+ else
+ visitor->trace(toWebRemoteFrameImpl(child));
+
+ child = child->nextSibling();
+ }
+#endif
+}
+
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698