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

Unified Diff: Source/web/WebViewImpl.h

Issue 517043003: Move Frame to the Oilpan heap. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Add LocalFrame::detachView() + more Oilpan frame finalization comments 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/WebViewImpl.h
diff --git a/Source/web/WebViewImpl.h b/Source/web/WebViewImpl.h
index aa402ad54de27914f62986ff15f22e0e353923d5..71272e54d76310e25203690795a4f35337c048bf 100644
--- a/Source/web/WebViewImpl.h
+++ b/Source/web/WebViewImpl.h
@@ -35,6 +35,7 @@
#include "platform/geometry/IntPoint.h"
#include "platform/geometry/IntRect.h"
#include "platform/graphics/GraphicsLayer.h"
+#include "platform/heap/Handle.h"
#include "public/platform/WebGestureCurveTarget.h"
#include "public/platform/WebLayer.h"
#include "public/platform/WebPoint.h"
@@ -73,6 +74,7 @@ class UserGestureToken;
class WebActiveGestureAnimation;
class WebDevToolsAgentPrivate;
class WebLocalFrameImpl;
+class WebRemoteFrameImpl;
class WebImage;
class WebPagePopupImpl;
class WebPlugin;
@@ -492,6 +494,11 @@ public:
bool matchesHeuristicsForGpuRasterizationForTesting() const { return m_matchesHeuristicsForGpuRasterization; }
+#if ENABLE(OILPAN)
+ void clearMainFrame(WebLocalFrameImpl*);
+ void clearMainFrame(WebRemoteFrameImpl*);
+#endif
+
private:
void setTopControlsContentOffset(float);
@@ -605,6 +612,18 @@ private:
OwnPtrWillBePersistent<Page> m_page;
+#if ENABLE(OILPAN)
+ // With Oilpan, the WebViewImpl object keeps a strong reference to one kind of main
+ // frame, so as to keep it alive until the view lets it go.
+ //
+ // In the non-Oilpan case, the ref-counted frame is instead created and returned with
+ // a ref count that must be balanced by eventually calling close() on the
+ // Web*FrameImpl object. That close() call is also assumed for Oilpan, but we need
+ // to keep the object alive until that time. Hence these mutually-exclusive Persistent<>s.
+ Persistent<WebLocalFrameImpl> m_localMainFrame;
+ Persistent<WebRemoteFrameImpl> m_remoteMainFrame;
+#endif
+
// An object that can be used to manipulate m_page->settings() without linking
// against WebCore. This is lazily allocated the first time GetWebSettings()
// is called.
@@ -712,7 +731,7 @@ private:
int m_flingModifier;
bool m_flingSourceDevice;
Vector<OwnPtr<LinkHighlight> > m_linkHighlights;
- OwnPtr<FullscreenController> m_fullscreenController;
+ OwnPtrWillBePersistent<FullscreenController> m_fullscreenController;
bool m_showFPSCounter;
bool m_showPaintRects;

Powered by Google App Engine
This is Rietveld 408576698