<!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>[210689] 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/210689">210689</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2017-01-12 16:59:34 -0800 (Thu, 12 Jan 2017)</dd>
</dl>

<h3>Log Message</h3>
<pre>Source/WebCore:
[iOS] HTML form validation popover sometimes does not go away
https://bugs.webkit.org/show_bug.cgi?id=166990
&lt;rdar://problem/29985957&gt;

Reviewed by Tim Horton.

The issue was that [UIViewController presentViewController:] is asynchronous
and that we sometimes tried to call [m_popoverController dismissViewControllerAnimated:]
before presentViewController had completed. This is something that UIKit does
not handle nicely and the popover just stays visible even though we have
asked for the controller to be dismissed and destroyed the ValidationBubble
object.

To address the issue, I made ValidationBubble RefCounted and make sure the
ValidationBubble object stays alive at least until the completion handler for
[UIViewController presentViewController:] has been called. This is done via
protecting the object using a RefPtr&lt;&gt; and capturing it in the lambda.
Because dismissViewControllerAnimated is called in the destructor, it is no
longer possible to call dismissViewControllerAnimated before the call to
presentViewController has completed.

No new tests, no easily testable since the popover was staying visible
after being destroyed (held on by UIKit).

* platform/ValidationBubble.h:
(WebCore::ValidationBubble::create):
* platform/ios/ValidationBubbleIOS.mm:
(WebCore::ValidationBubble::show):

Source/WebKit/mac:
HTML form validation popover sometimes does not go away
https://bugs.webkit.org/show_bug.cgi?id=166990
&lt;rdar://problem/29985957&gt;

Reviewed by Tim Horton.

Update code using ValidationBubble now that it is RefCounted.

* WebView/WebView.mm:
(-[WebView showFormValidationMessage:withAnchorRect:]):

Source/WebKit2:
[iOS] HTML form validation popover sometimes does not go away
https://bugs.webkit.org/show_bug.cgi?id=166990
&lt;rdar://problem/29985957&gt;

Reviewed by Tim Horton.

Update code using ValidationBubble now that it is RefCounted.

* UIProcess/PageClient.h:
* UIProcess/WebPageProxy.h:
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::createValidationBubble):
* UIProcess/mac/PageClientImpl.h:
* UIProcess/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createValidationBubble):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreplatformValidationBubbleh">trunk/Source/WebCore/platform/ValidationBubble.h</a></li>
<li><a href="#trunkSourceWebCoreplatformiosValidationBubbleIOSmm">trunk/Source/WebCore/platform/ios/ValidationBubbleIOS.mm</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewDatah">trunk/Source/WebKit/mac/WebView/WebViewData.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageClienth">trunk/Source/WebKit2/UIProcess/PageClient.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosPageClientImplIOSh">trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessiosPageClientImplIOSmm">trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacPageClientImplh">trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessmacPageClientImplmm">trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebCore/ChangeLog        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -1,3 +1,34 @@
</span><ins>+2017-01-12  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [iOS] HTML form validation popover sometimes does not go away
+        https://bugs.webkit.org/show_bug.cgi?id=166990
+        &lt;rdar://problem/29985957&gt;
+
+        Reviewed by Tim Horton.
+
+        The issue was that [UIViewController presentViewController:] is asynchronous
+        and that we sometimes tried to call [m_popoverController dismissViewControllerAnimated:]
+        before presentViewController had completed. This is something that UIKit does
+        not handle nicely and the popover just stays visible even though we have
+        asked for the controller to be dismissed and destroyed the ValidationBubble
+        object.
+
+        To address the issue, I made ValidationBubble RefCounted and make sure the
+        ValidationBubble object stays alive at least until the completion handler for
+        [UIViewController presentViewController:] has been called. This is done via
+        protecting the object using a RefPtr&lt;&gt; and capturing it in the lambda.
+        Because dismissViewControllerAnimated is called in the destructor, it is no
+        longer possible to call dismissViewControllerAnimated before the call to
+        presentViewController has completed.
+
+        No new tests, no easily testable since the popover was staying visible
+        after being destroyed (held on by UIKit).
+
+        * platform/ValidationBubble.h:
+        (WebCore::ValidationBubble::create):
+        * platform/ios/ValidationBubbleIOS.mm:
+        (WebCore::ValidationBubble::show):
+
</ins><span class="cx"> 2017-01-12  Andreas Kling  &lt;akling@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Purge GraphicsServices font cache on memory warning.
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformValidationBubbleh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ValidationBubble.h (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ValidationBubble.h        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebCore/platform/ValidationBubble.h        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -53,9 +53,13 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-class ValidationBubble {
</del><ins>+class ValidationBubble : public RefCounted&lt;ValidationBubble&gt; {
</ins><span class="cx"> public:
</span><del>-    WEBCORE_EXPORT ValidationBubble(PlatformView*, const String&amp; message);
</del><ins>+    static Ref&lt;ValidationBubble&gt; create(PlatformView* view, const String&amp; message)
+    {
+        return adoptRef(*new ValidationBubble(view, message));
+    }
+
</ins><span class="cx">     WEBCORE_EXPORT ~ValidationBubble();
</span><span class="cx"> 
</span><span class="cx">     const String&amp; message() const { return m_message; }
</span><span class="lines">@@ -68,6 +72,8 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> private:
</span><ins>+    WEBCORE_EXPORT ValidationBubble(PlatformView*, const String&amp; message);
+
</ins><span class="cx">     PlatformView* m_view;
</span><span class="cx">     String m_message;
</span><span class="cx"> #if PLATFORM(MAC)
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformiosValidationBubbleIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/platform/ios/ValidationBubbleIOS.mm (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ios/ValidationBubbleIOS.mm        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebCore/platform/ios/ValidationBubbleIOS.mm        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -129,7 +129,10 @@
</span><span class="cx"> 
</span><span class="cx"> void ValidationBubble::show()
</span><span class="cx"> {
</span><del>-    [m_presentingViewController presentViewController:m_popoverController.get() animated:NO completion:nil];
</del><ins>+    // Protect the validation bubble so it stays alive until it is effectively presented. UIKit does not deal nicely with
+    // dismissing a popover that is being presented.
+    RefPtr&lt;ValidationBubble&gt; protectedThis(this);
+    [m_presentingViewController presentViewController:m_popoverController.get() animated:NO completion:[protectedThis]() { }];
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static UIViewController *fallbackViewController(UIView *view)
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit/mac/ChangeLog        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2017-01-12  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        HTML form validation popover sometimes does not go away
+        https://bugs.webkit.org/show_bug.cgi?id=166990
+        &lt;rdar://problem/29985957&gt;
+
+        Reviewed by Tim Horton.
+
+        Update code using ValidationBubble now that it is RefCounted.
+
+        * WebView/WebView.mm:
+        (-[WebView showFormValidationMessage:withAnchorRect:]):
+
</ins><span class="cx"> 2017-01-10  Ryosuke Niwa  &lt;rniwa@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Remove pointerLockElement from DOMDocumentPrivate.h
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -9309,7 +9309,7 @@
</span><span class="cx"> {
</span><span class="cx">     // FIXME: We should enable this on iOS as well.
</span><span class="cx"> #if PLATFORM(MAC)
</span><del>-    _private-&gt;formValidationBubble = std::make_unique&lt;ValidationBubble&gt;(self, message);
</del><ins>+    _private-&gt;formValidationBubble = ValidationBubble::create(self, message);
</ins><span class="cx">     _private-&gt;formValidationBubble-&gt;showRelativeTo(enclosingIntRect([self _convertRectFromRootView:anchorRect]));
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(message);
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewDatah"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebViewData.h (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebViewData.h        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit/mac/WebView/WebViewData.h        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -207,7 +207,7 @@
</span><span class="cx">     RetainPtr&lt;NSEvent&gt; pressureEvent;
</span><span class="cx"> #endif // PLATFORM(MAC)
</span><span class="cx"> 
</span><del>-    std::unique_ptr&lt;WebCore::ValidationBubble&gt; formValidationBubble;
</del><ins>+    RefPtr&lt;WebCore::ValidationBubble&gt; formValidationBubble;
</ins><span class="cx"> 
</span><span class="cx">     BOOL shouldMaintainInactiveSelection;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit2/ChangeLog        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2017-01-12  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        [iOS] HTML form validation popover sometimes does not go away
+        https://bugs.webkit.org/show_bug.cgi?id=166990
+        &lt;rdar://problem/29985957&gt;
+
+        Reviewed by Tim Horton.
+
+        Update code using ValidationBubble now that it is RefCounted.
+
+        * UIProcess/PageClient.h:
+        * UIProcess/WebPageProxy.h:
+        * UIProcess/ios/PageClientImplIOS.h:
+        * UIProcess/ios/PageClientImplIOS.mm:
+        (WebKit::PageClientImpl::createValidationBubble):
+        * UIProcess/mac/PageClientImpl.h:
+        * UIProcess/mac/PageClientImpl.mm:
+        (WebKit::PageClientImpl::createValidationBubble):
+
</ins><span class="cx"> 2017-01-12  Enrica Casucci  &lt;enrica@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Do not allow selection of editable content when not editing.
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageClient.h (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageClient.h        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit2/UIProcess/PageClient.h        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -228,7 +228,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    virtual std::unique_ptr&lt;WebCore::ValidationBubble&gt; createValidationBubble(const String&amp; message) = 0;
</del><ins>+    virtual Ref&lt;WebCore::ValidationBubble&gt; createValidationBubble(const String&amp; message) = 0;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA)
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -1826,7 +1826,7 @@
</span><span class="cx">     RefPtr&lt;WebColorPicker&gt; m_colorPicker;
</span><span class="cx"> #endif
</span><span class="cx"> #if PLATFORM(COCOA)
</span><del>-    std::unique_ptr&lt;WebCore::ValidationBubble&gt; m_validationBubble;
</del><ins>+    RefPtr&lt;WebCore::ValidationBubble&gt; m_validationBubble;
</ins><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     const uint64_t m_pageID;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosPageClientImplIOSh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.h        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     std::unique_ptr&lt;WebContextMenuProxy&gt; createContextMenuProxy(WebPageProxy&amp;, const ContextMenuContextData&amp;, const UserData&amp;) override;
</span><span class="cx"> #endif
</span><del>-    std::unique_ptr&lt;WebCore::ValidationBubble&gt; createValidationBubble(const String&amp; message) final;
</del><ins>+    Ref&lt;WebCore::ValidationBubble&gt; createValidationBubble(const String&amp; message) final;
</ins><span class="cx"> 
</span><span class="cx">     void setTextIndicator(Ref&lt;WebCore::TextIndicator&gt;, WebCore::TextIndicatorWindowLifetime) override;
</span><span class="cx">     void clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessiosPageClientImplIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit2/UIProcess/ios/PageClientImplIOS.mm        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -744,9 +744,9 @@
</span><span class="cx">     return ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:[m_webView semanticContentAttribute]] == UIUserInterfaceLayoutDirectionLeftToRight) ? WebCore::UserInterfaceLayoutDirection::LTR : WebCore::UserInterfaceLayoutDirection::RTL;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;ValidationBubble&gt; PageClientImpl::createValidationBubble(const String&amp; message)
</del><ins>+Ref&lt;ValidationBubble&gt; PageClientImpl::createValidationBubble(const String&amp; message)
</ins><span class="cx"> {
</span><del>-    return std::make_unique&lt;ValidationBubble&gt;(m_contentView, message);
</del><ins>+    return ValidationBubble::create(m_contentView, message);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebKit
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacPageClientImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.h        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx">     RefPtr&lt;WebColorPicker&gt; createColorPicker(WebPageProxy*, const WebCore::Color&amp; initialColor, const WebCore::IntRect&amp;) override;
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    std::unique_ptr&lt;WebCore::ValidationBubble&gt; createValidationBubble(const String&amp; message) final;
</del><ins>+    Ref&lt;WebCore::ValidationBubble&gt; createValidationBubble(const String&amp; message) final;
</ins><span class="cx"> 
</span><span class="cx">     void setTextIndicator(Ref&lt;WebCore::TextIndicator&gt;, WebCore::TextIndicatorWindowLifetime) override;
</span><span class="cx">     void clearTextIndicator(WebCore::TextIndicatorWindowDismissalAnimation) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessmacPageClientImplmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm (210688 => 210689)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm        2017-01-13 00:47:37 UTC (rev 210688)
+++ trunk/Source/WebKit2/UIProcess/mac/PageClientImpl.mm        2017-01-13 00:59:34 UTC (rev 210689)
</span><span class="lines">@@ -440,9 +440,9 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-std::unique_ptr&lt;ValidationBubble&gt; PageClientImpl::createValidationBubble(const String&amp; message)
</del><ins>+Ref&lt;ValidationBubble&gt; PageClientImpl::createValidationBubble(const String&amp; message)
</ins><span class="cx"> {
</span><del>-    return std::make_unique&lt;ValidationBubble&gt;(m_view, message);
</del><ins>+    return ValidationBubble::create(m_view, message);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void PageClientImpl::setTextIndicator(Ref&lt;TextIndicator&gt; textIndicator, WebCore::TextIndicatorWindowLifetime lifetime)
</span></span></pre>
</div>
</div>

</body>
</html>