Index: Source/web/InspectorOverlayImpl.cpp |
diff --git a/Source/web/InspectorOverlayImpl.cpp b/Source/web/InspectorOverlayImpl.cpp |
index c77a18048c2519f289e48ddb1b597fd5ab119d1d..7fa68b4ce0ab7e110cec9cb33c280877eae18c71 100644 |
--- a/Source/web/InspectorOverlayImpl.cpp |
+++ b/Source/web/InspectorOverlayImpl.cpp |
@@ -110,12 +110,18 @@ private: |
}; |
-class InspectorOverlayImpl::InspectorOverlayChromeClient final: public EmptyChromeClient { |
+class InspectorOverlayImpl::InspectorOverlayChromeClient final : public EmptyChromeClient { |
public: |
- InspectorOverlayChromeClient(ChromeClient& client, InspectorOverlayImpl& overlay) |
- : m_client(client) |
- , m_overlay(overlay) |
- { } |
+ static PassOwnPtrWillBeRawPtr<InspectorOverlayChromeClient> create(ChromeClient& client, InspectorOverlayImpl& overlay) |
+ { |
+ return adoptPtrWillBeNoop(new InspectorOverlayChromeClient(client, overlay)); |
+ } |
+ |
+ DEFINE_INLINE_VIRTUAL_TRACE() |
+ { |
+ visitor->trace(m_overlay); |
+ EmptyChromeClient::trace(visitor); |
+ } |
void setCursor(const Cursor& cursor) override |
{ |
@@ -129,20 +135,25 @@ public: |
void invalidateRect(const IntRect&) override |
{ |
- m_overlay.invalidate(); |
+ m_overlay->invalidate(); |
} |
void scheduleAnimation() override |
{ |
- if (m_overlay.m_inLayout) |
+ if (m_overlay->m_inLayout) |
return; |
m_client.scheduleAnimation(); |
} |
private: |
+ InspectorOverlayChromeClient(ChromeClient& client, InspectorOverlayImpl& overlay) |
+ : m_client(client) |
+ , m_overlay(&overlay) |
+ { } |
+ |
ChromeClient& m_client; |
haraken
2015/08/14 14:38:41
This needs to be a RawPtrWillBeMember. It is dange
Yuta Kitamura
2015/08/17 08:03:21
Ouch, this was the one I intended to fix, but has
|
- InspectorOverlayImpl& m_overlay; |
+ RawPtrWillBeMember<InspectorOverlayImpl> m_overlay; |
}; |
@@ -177,6 +188,7 @@ DEFINE_TRACE(InspectorOverlayImpl) |
visitor->trace(m_highlightNode); |
visitor->trace(m_eventTargetNode); |
visitor->trace(m_overlayPage); |
+ visitor->trace(m_overlayChromeClient); |
visitor->trace(m_overlayHost); |
visitor->trace(m_listener); |
visitor->trace(m_layoutEditor); |
@@ -384,7 +396,7 @@ Page* InspectorOverlayImpl::overlayPage() |
Page::PageClients pageClients; |
fillWithEmptyClients(pageClients); |
ASSERT(!m_overlayChromeClient); |
- m_overlayChromeClient = adoptPtr(new InspectorOverlayChromeClient(m_webViewImpl->page()->chromeClient(), *this)); |
+ m_overlayChromeClient = InspectorOverlayChromeClient::create(m_webViewImpl->page()->chromeClient(), *this); |
pageClients.chromeClient = m_overlayChromeClient.get(); |
m_overlayPage = adoptPtrWillBeNoop(new Page(pageClients)); |