<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[201224] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/201224">201224</a></dd>
<dt>Author</dt> <dd>commit-queue@webkit.org</dd>
<dt>Date</dt> <dd>2016-05-20 14:17:35 -0700 (Fri, 20 May 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>Remove unnecessary PageOverlay client function pageOverlayDestroyed
https://bugs.webkit.org/show_bug.cgi?id=157388
&lt;rdar://problem/25471523&gt;

Patch by John Wilander &lt;wilander@apple.com&gt; on 2016-05-20
Reviewed by Tim Horton.

Remove dead PageOverlay code. Almost all of these overrides were empty and
never called. In the case of WebPageOverlay it was never called but had a
function body, causing confusion. There was a fear of dangling pointers in
WebPageOverlay's static hash map between PageOverlays and WebPageOverlays.
Only WebPageOverlay's constructor creates its PageOverlay object and adds it
to the hash map. Its client object is kept in a unique pointer member which
is automatically deleted when the WebPageOverlay object itself is deleted.
This explains why PageOverlayClientImpl::pageOverlayDestroyed in
WKBundlePageOverlay can safely be removed. Finally, WebPageOverlay's
destructor clears the hash map entry for its PageOverlay object. Thus, there
is no need to call WebPageOverlay::pageOverlayDestroyed nor a need for
WebPageOverlay's destructor to call pageOverlayDestroyed on its client.

No new tests. I tried to come up with a WebKit API test for this but I
wasn't able to test presence/absence of WebPageOverlay's map entries since
the map is not exposed.

Source/WebCore:

* page/DebugPageOverlays.cpp:
(WebCore::RegionOverlay::pageOverlayDestroyed): Deleted.
* page/PageOverlay.h:
(WebCore::PageOverlay::Client::pageOverlayDestroyed): Deleted.
* page/ResourceUsageOverlay.h:
(WebCore::ResourceUsageOverlay::pageOverlayDestroyed): Deleted.
* page/mac/ServicesOverlayController.h:
* page/mac/ServicesOverlayController.mm:
(WebCore::ServicesOverlayController::pageOverlayDestroyed): Deleted.
* testing/MockPageOverlayClient.cpp:
* testing/MockPageOverlayClient.h:
(WebCore::MockPageOverlayClient::pageOverlayDestroyed): Deleted.

Source/WebKit2:

* WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
(WebKit::PageOverlayClientImpl::pageOverlayDestroyed): Deleted.
* WebProcess/Plugins/PDF/PDFPlugin.h:
* WebProcess/Plugins/PDF/PDFPlugin.mm:
(WebKit::PDFPlugin::HUD::pageOverlayDestroyed): Deleted.
* WebProcess/WebCoreSupport/WebInspectorClient.cpp:
* WebProcess/WebCoreSupport/WebInspectorClient.h:
(WebKit::WebInspectorClient::pageOverlayDestroyed): Deleted.
* WebProcess/WebPage/FindController.cpp:
* WebProcess/WebPage/FindController.h:
(WebKit::FindController::pageOverlayDestroyed): Deleted.
* WebProcess/WebPage/WebPageOverlay.cpp:
* WebProcess/WebPage/WebPageOverlay.h:
(WebKit::WebPageOverlay::pageOverlayDestroyed): Deleted.
* WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h:
(WebKit::FindIndicatorOverlayClientIOS::pageOverlayDestroyed): Deleted.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorepageDebugPageOverlayscpp">trunk/Source/WebCore/page/DebugPageOverlays.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageOverlayh">trunk/Source/WebCore/page/PageOverlay.h</a></li>
<li><a href="#trunkSourceWebCorepageResourceUsageOverlayh">trunk/Source/WebCore/page/ResourceUsageOverlay.h</a></li>
<li><a href="#trunkSourceWebCorepagemacServicesOverlayControllerh">trunk/Source/WebCore/page/mac/ServicesOverlayController.h</a></li>
<li><a href="#trunkSourceWebCorepagemacServicesOverlayControllermm">trunk/Source/WebCore/page/mac/ServicesOverlayController.mm</a></li>
<li><a href="#trunkSourceWebCoretestingMockPageOverlayClientcpp">trunk/Source/WebCore/testing/MockPageOverlayClient.cpp</a></li>
<li><a href="#trunkSourceWebCoretestingMockPageOverlayClienth">trunk/Source/WebCore/testing/MockPageOverlayClient.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePageOverlaycpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginh">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsPDFPDFPluginmm">trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageFindControllercpp">trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageFindControllerh">trunk/Source/WebKit2/WebProcess/WebPage/FindController.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageOverlaycpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageOverlayh">trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosFindIndicatorOverlayClientIOSh">trunk/Source/WebKit2/WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/ChangeLog        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2016-05-20  John Wilander  &lt;wilander@apple.com&gt;
+
+        Remove unnecessary PageOverlay client function pageOverlayDestroyed
+        https://bugs.webkit.org/show_bug.cgi?id=157388
+        &lt;rdar://problem/25471523&gt;
+
+        Reviewed by Tim Horton.
+
+        Remove dead PageOverlay code. Almost all of these overrides were empty and
+        never called. In the case of WebPageOverlay it was never called but had a
+        function body, causing confusion. There was a fear of dangling pointers in
+        WebPageOverlay's static hash map between PageOverlays and WebPageOverlays.
+        Only WebPageOverlay's constructor creates its PageOverlay object and adds it
+        to the hash map. Its client object is kept in a unique pointer member which
+        is automatically deleted when the WebPageOverlay object itself is deleted.
+        This explains why PageOverlayClientImpl::pageOverlayDestroyed in
+        WKBundlePageOverlay can safely be removed. Finally, WebPageOverlay's
+        destructor clears the hash map entry for its PageOverlay object. Thus, there
+        is no need to call WebPageOverlay::pageOverlayDestroyed nor a need for
+        WebPageOverlay's destructor to call pageOverlayDestroyed on its client.
+
+        No new tests. I tried to come up with a WebKit API test for this but I
+        wasn't able to test presence/absence of WebPageOverlay's map entries since
+        the map is not exposed.
+
+        * page/DebugPageOverlays.cpp:
+        (WebCore::RegionOverlay::pageOverlayDestroyed): Deleted.
+        * page/PageOverlay.h:
+        (WebCore::PageOverlay::Client::pageOverlayDestroyed): Deleted.
+        * page/ResourceUsageOverlay.h:
+        (WebCore::ResourceUsageOverlay::pageOverlayDestroyed): Deleted.
+        * page/mac/ServicesOverlayController.h:
+        * page/mac/ServicesOverlayController.mm:
+        (WebCore::ServicesOverlayController::pageOverlayDestroyed): Deleted.
+        * testing/MockPageOverlayClient.cpp:
+        * testing/MockPageOverlayClient.h:
+        (WebCore::MockPageOverlayClient::pageOverlayDestroyed): Deleted.
+
</ins><span class="cx"> 2016-05-20  Alex Christensen  &lt;achristensen@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Fix null dereferencing in CSSAnimationTriggerScrollValue::equals
</span></span></pre></div>
<a id="trunkSourceWebCorepageDebugPageOverlayscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DebugPageOverlays.cpp (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DebugPageOverlays.cpp        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/page/DebugPageOverlays.cpp        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -54,7 +54,6 @@
</span><span class="cx">     RegionOverlay(MainFrame&amp;, Color);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void pageOverlayDestroyed(PageOverlay&amp;) final;
</del><span class="cx">     void willMoveToPage(PageOverlay&amp;, Page*) final;
</span><span class="cx">     void didMoveToPage(PageOverlay&amp;, Page*) final;
</span><span class="cx">     void drawRect(PageOverlay&amp;, GraphicsContext&amp;, const IntRect&amp; dirtyRect) final;
</span><span class="lines">@@ -166,10 +165,6 @@
</span><span class="cx">         m_frame.pageOverlayController().uninstallPageOverlay(m_overlay.get(), PageOverlay::FadeMode::DoNotFade);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void RegionOverlay::pageOverlayDestroyed(PageOverlay&amp;)
-{
-}
-
</del><span class="cx"> void RegionOverlay::willMoveToPage(PageOverlay&amp;, Page* page)
</span><span class="cx"> {
</span><span class="cx">     if (!page)
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageOverlayh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageOverlay.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageOverlay.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/page/PageOverlay.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -52,7 +52,6 @@
</span><span class="cx">         virtual ~Client() { }
</span><span class="cx">     
</span><span class="cx">     public:
</span><del>-        virtual void pageOverlayDestroyed(PageOverlay&amp;) = 0;
</del><span class="cx">         virtual void willMoveToPage(PageOverlay&amp;, Page*) = 0;
</span><span class="cx">         virtual void didMoveToPage(PageOverlay&amp;, Page*) = 0;
</span><span class="cx">         virtual void drawRect(PageOverlay&amp;, GraphicsContext&amp;, const IntRect&amp; dirtyRect) = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorepageResourceUsageOverlayh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ResourceUsageOverlay.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ResourceUsageOverlay.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/page/ResourceUsageOverlay.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -62,7 +62,6 @@
</span><span class="cx">     static const int normalHeight = 160;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void pageOverlayDestroyed(PageOverlay&amp;) override { }
</del><span class="cx">     void willMoveToPage(PageOverlay&amp;, Page*) override { }
</span><span class="cx">     void didMoveToPage(PageOverlay&amp;, Page*) override { }
</span><span class="cx">     void drawRect(PageOverlay&amp;, GraphicsContext&amp;, const IntRect&amp;) override { }
</span></span></pre></div>
<a id="trunkSourceWebCorepagemacServicesOverlayControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/mac/ServicesOverlayController.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/mac/ServicesOverlayController.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/page/mac/ServicesOverlayController.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -97,7 +97,6 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     // PageOverlay::Client
</span><del>-    void pageOverlayDestroyed(PageOverlay&amp;) override;
</del><span class="cx">     void willMoveToPage(PageOverlay&amp;, Page*) override;
</span><span class="cx">     void didMoveToPage(PageOverlay&amp;, Page*) override;
</span><span class="cx">     void drawRect(PageOverlay&amp;, GraphicsContext&amp;, const IntRect&amp; dirtyRect) override;
</span></span></pre></div>
<a id="trunkSourceWebCorepagemacServicesOverlayControllermm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/mac/ServicesOverlayController.mm (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/mac/ServicesOverlayController.mm        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/page/mac/ServicesOverlayController.mm        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -221,13 +221,6 @@
</span><span class="cx">         highlight-&gt;invalidate();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ServicesOverlayController::pageOverlayDestroyed(PageOverlay&amp;)
-{
-    // Before the overlay is destroyed, it should have moved out of the Page,
-    // at which point we already cleared our back pointer.
-    ASSERT(!m_servicesOverlay);
-}
-
</del><span class="cx"> void ServicesOverlayController::willMoveToPage(PageOverlay&amp;, Page* page)
</span><span class="cx"> {
</span><span class="cx">     if (page)
</span></span></pre></div>
<a id="trunkSourceWebCoretestingMockPageOverlayClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/MockPageOverlayClient.cpp (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/MockPageOverlayClient.cpp        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/testing/MockPageOverlayClient.cpp        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -73,19 +73,6 @@
</span><span class="cx">     return &quot;View-relative:\n&quot; + mainFrame.pageOverlayController().viewOverlayRootLayer().layerTreeAsText(LayerTreeAsTextIncludePageOverlayLayers) + &quot;\n\nDocument-relative:\n&quot; + mainFrame.pageOverlayController().documentOverlayRootLayer().layerTreeAsText(LayerTreeAsTextIncludePageOverlayLayers);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void MockPageOverlayClient::pageOverlayDestroyed(PageOverlay&amp; overlay)
-{
-    // FIXME: This is dead code, nothing ever calls this function. It's not clear to me what the intention was,
-    // since MockPageOverlayClient has references to MockPageOverlays, not to PageOverlays.
-    // Also, iterating over a set while modifying it is not good.
-    for (auto&amp; mockOverlay : m_overlays) {
-        if (mockOverlay-&gt;overlay() == &amp;overlay) {
-            m_overlays.remove(mockOverlay);
-            return;
-        }
-    }
-}
-
</del><span class="cx"> void MockPageOverlayClient::willMoveToPage(PageOverlay&amp;, Page*)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoretestingMockPageOverlayClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/testing/MockPageOverlayClient.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/testing/MockPageOverlayClient.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebCore/testing/MockPageOverlayClient.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -49,7 +49,6 @@
</span><span class="cx">     virtual ~MockPageOverlayClient() { }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void pageOverlayDestroyed(PageOverlay&amp;) override;
</del><span class="cx">     void willMoveToPage(PageOverlay&amp;, Page*) override;
</span><span class="cx">     void didMoveToPage(PageOverlay&amp;, Page*) override;
</span><span class="cx">     void drawRect(PageOverlay&amp;, GraphicsContext&amp;, const IntRect&amp; dirtyRect) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/ChangeLog        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -1,3 +1,45 @@
</span><ins>+2016-05-20  John Wilander  &lt;wilander@apple.com&gt;
+
+        Remove unnecessary PageOverlay client function pageOverlayDestroyed
+        https://bugs.webkit.org/show_bug.cgi?id=157388
+        &lt;rdar://problem/25471523&gt;
+
+        Reviewed by Tim Horton.
+
+        Remove dead PageOverlay code. Almost all of these overrides were empty and
+        never called. In the case of WebPageOverlay it was never called but had a
+        function body, causing confusion. There was a fear of dangling pointers in
+        WebPageOverlay's static hash map between PageOverlays and WebPageOverlays.
+        Only WebPageOverlay's constructor creates its PageOverlay object and adds it
+        to the hash map. Its client object is kept in a unique pointer member which
+        is automatically deleted when the WebPageOverlay object itself is deleted.
+        This explains why PageOverlayClientImpl::pageOverlayDestroyed in
+        WKBundlePageOverlay can safely be removed. Finally, WebPageOverlay's
+        destructor clears the hash map entry for its PageOverlay object. Thus, there
+        is no need to call WebPageOverlay::pageOverlayDestroyed nor a need for
+        WebPageOverlay's destructor to call pageOverlayDestroyed on its client.
+
+        No new tests. I tried to come up with a WebKit API test for this but I
+        wasn't able to test presence/absence of WebPageOverlay's map entries since
+        the map is not exposed.
+
+        * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp:
+        (WebKit::PageOverlayClientImpl::pageOverlayDestroyed): Deleted.
+        * WebProcess/Plugins/PDF/PDFPlugin.h:
+        * WebProcess/Plugins/PDF/PDFPlugin.mm:
+        (WebKit::PDFPlugin::HUD::pageOverlayDestroyed): Deleted.
+        * WebProcess/WebCoreSupport/WebInspectorClient.cpp:
+        * WebProcess/WebCoreSupport/WebInspectorClient.h:
+        (WebKit::WebInspectorClient::pageOverlayDestroyed): Deleted.
+        * WebProcess/WebPage/FindController.cpp:
+        * WebProcess/WebPage/FindController.h:
+        (WebKit::FindController::pageOverlayDestroyed): Deleted.
+        * WebProcess/WebPage/WebPageOverlay.cpp:
+        * WebProcess/WebPage/WebPageOverlay.h:
+        (WebKit::WebPageOverlay::pageOverlayDestroyed): Deleted.
+        * WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h:
+        (WebKit::FindIndicatorOverlayClientIOS::pageOverlayDestroyed): Deleted.
+
</ins><span class="cx"> 2016-05-19  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Improve compile-time assertions in is&lt;&gt;() / downcast&lt;&gt;()
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleAPIcWKBundlePageOverlaycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -70,11 +70,6 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     // WebPageOverlay::Client.
</span><del>-    void pageOverlayDestroyed(WebPageOverlay&amp;) override
-    {
-        delete this;
-    }
-
</del><span class="cx">     void willMoveToPage(WebPageOverlay&amp; pageOverlay, WebPage* page) override
</span><span class="cx">     {
</span><span class="cx">         if (!m_client.willMoveToPage)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -262,7 +262,6 @@
</span><span class="cx">         void setVisible(bool, AnimateVisibilityTransition);
</span><span class="cx"> 
</span><span class="cx">     private:
</span><del>-        void pageOverlayDestroyed(WebCore::PageOverlay&amp;) override;
</del><span class="cx">         void willMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override;
</span><span class="cx">         void didMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override;
</span><span class="cx">         void drawRect(WebCore::PageOverlay&amp;, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp; dirtyRect) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsPDFPDFPluginmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/Plugins/PDF/PDFPlugin.mm        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -1648,10 +1648,6 @@
</span><span class="cx">     mainFrame.pageOverlayController().uninstallPageOverlay(m_overlay.ptr(), PageOverlay::FadeMode::DoNotFade);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void PDFPlugin::HUD::pageOverlayDestroyed(PageOverlay&amp;)
-{
-}
-
</del><span class="cx"> void PDFPlugin::HUD::willMoveToPage(PageOverlay&amp;, Page* page)
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.cpp        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -198,10 +198,6 @@
</span><span class="cx">         m_page-&gt;inspector()-&gt;elementSelectionChanged(active);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebInspectorClient::pageOverlayDestroyed(PageOverlay&amp;)
-{
-}
-
</del><span class="cx"> void WebInspectorClient::willMoveToPage(PageOverlay&amp;, Page* page)
</span><span class="cx"> {
</span><span class="cx">     if (page)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebInspectorClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebInspectorClient.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -72,7 +72,6 @@
</span><span class="cx">     void showPaintRect(const WebCore::FloatRect&amp;) override;
</span><span class="cx"> 
</span><span class="cx">     // PageOverlay::Client
</span><del>-    void pageOverlayDestroyed(WebCore::PageOverlay&amp;) override;
</del><span class="cx">     void willMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override;
</span><span class="cx">     void didMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override;
</span><span class="cx">     void drawRect(WebCore::PageOverlay&amp;, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageFindControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/WebPage/FindController.cpp        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -423,10 +423,6 @@
</span><span class="cx">     return rects;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void FindController::pageOverlayDestroyed(PageOverlay&amp;)
-{
-}
-
</del><span class="cx"> void FindController::willMoveToPage(PageOverlay&amp;, Page* page)
</span><span class="cx"> {
</span><span class="cx">     if (page)
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageFindControllerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/FindController.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/FindController.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/WebPage/FindController.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -73,7 +73,6 @@
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     // PageOverlay::Client.
</span><del>-    virtual void pageOverlayDestroyed(WebCore::PageOverlay&amp;);
</del><span class="cx">     virtual void willMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*);
</span><span class="cx">     virtual void didMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*);
</span><span class="cx">     virtual bool mouseEvent(WebCore::PageOverlay&amp;, const WebCore::PlatformMouseEvent&amp;);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageOverlaycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.cpp (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.cpp        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.cpp        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -84,16 +84,6 @@
</span><span class="cx">     m_overlay-&gt;clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageOverlay::pageOverlayDestroyed(PageOverlay&amp;)
-{
-    if (m_overlay) {
-        overlayMap().remove(m_overlay.get());
-        m_overlay = nullptr;
-    }
-
-    m_client-&gt;pageOverlayDestroyed(*this);
-}
-
</del><span class="cx"> void WebPageOverlay::willMoveToPage(PageOverlay&amp;, Page* page)
</span><span class="cx"> {
</span><span class="cx">     m_client-&gt;willMoveToPage(*this, page ? WebPage::fromCorePage(page) : nullptr);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageOverlayh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPageOverlay.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -47,7 +47,6 @@
</span><span class="cx">     public:
</span><span class="cx">         virtual ~Client() { }
</span><span class="cx"> 
</span><del>-        virtual void pageOverlayDestroyed(WebPageOverlay&amp;) = 0;
</del><span class="cx">         virtual void willMoveToPage(WebPageOverlay&amp;, WebPage*) = 0;
</span><span class="cx">         virtual void didMoveToPage(WebPageOverlay&amp;, WebPage*) = 0;
</span><span class="cx">         virtual void drawRect(WebPageOverlay&amp;, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp; dirtyRect) = 0;
</span><span class="lines">@@ -89,7 +88,6 @@
</span><span class="cx">     WebPageOverlay(std::unique_ptr&lt;Client&gt;, WebCore::PageOverlay::OverlayType);
</span><span class="cx"> 
</span><span class="cx">     // WebCore::PageOverlay::Client
</span><del>-    void pageOverlayDestroyed(WebCore::PageOverlay&amp;) override;
</del><span class="cx">     void willMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override;
</span><span class="cx">     void didMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override;
</span><span class="cx">     void drawRect(WebCore::PageOverlay&amp;, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp; dirtyRect) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosFindIndicatorOverlayClientIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h (201223 => 201224)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h        2016-05-20 20:43:39 UTC (rev 201223)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/FindIndicatorOverlayClientIOS.h        2016-05-20 21:17:35 UTC (rev 201224)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    void pageOverlayDestroyed(WebCore::PageOverlay&amp;) override { }
</del><span class="cx">     void willMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override { }
</span><span class="cx">     void didMoveToPage(WebCore::PageOverlay&amp;, WebCore::Page*) override { }
</span><span class="cx">     void drawRect(WebCore::PageOverlay&amp;, WebCore::GraphicsContext&amp;, const WebCore::IntRect&amp; dirtyRect) override;
</span></span></pre>
</div>
</div>

</body>
</html>