<!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>[173365] trunk/Source/WebCore</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/173365">173365</a></dd>
<dt>Author</dt> <dd>jer.noble@apple.com</dd>
<dt>Date</dt> <dd>2014-09-06 17:19:53 -0700 (Sat, 06 Sep 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>[Fullscreen] Add a site-specific hack to work around &quot;flash on exit&quot; behavior of YouTube.com.
https://bugs.webkit.org/show_bug.cgi?id=136604

Reviewed by Eric Carlson.

YouTube.com will cause a &quot;flash&quot; of the full screen sized &lt;video&gt; element upon exiting full
screen because the &quot;fullscreenchange&quot; event is fired asynchronously after the exit animation
completes. Only YouTube sites and embeds, add a site-specific-quirk which runs the &quot;fullscreenchange&quot;
event synchronously at the end of the exit animation. This causes YouTube's video resizing logic
to run during the period of time where we've disabled screen updates, instead of immediately
after.

* dom/Document.cpp:
(WebCore::Document::webkitDidExitFullScreenForElement):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (173364 => 173365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-09-06 22:53:17 UTC (rev 173364)
+++ trunk/Source/WebCore/ChangeLog        2014-09-07 00:19:53 UTC (rev 173365)
</span><span class="lines">@@ -1,3 +1,20 @@
</span><ins>+2014-09-06  Jer Noble  &lt;jer.noble@apple.com&gt;
+
+        [Fullscreen] Add a site-specific hack to work around &quot;flash on exit&quot; behavior of YouTube.com.
+        https://bugs.webkit.org/show_bug.cgi?id=136604
+
+        Reviewed by Eric Carlson.
+
+        YouTube.com will cause a &quot;flash&quot; of the full screen sized &lt;video&gt; element upon exiting full
+        screen because the &quot;fullscreenchange&quot; event is fired asynchronously after the exit animation
+        completes. Only YouTube sites and embeds, add a site-specific-quirk which runs the &quot;fullscreenchange&quot;
+        event synchronously at the end of the exit animation. This causes YouTube's video resizing logic
+        to run during the period of time where we've disabled screen updates, instead of immediately
+        after.
+
+        * dom/Document.cpp:
+        (WebCore::Document::webkitDidExitFullScreenForElement):
+
</ins><span class="cx"> 2014-09-06  Darin Adler  &lt;darin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Make updates suggested by new version of Xcode
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (173364 => 173365)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2014-09-06 22:53:17 UTC (rev 173364)
+++ trunk/Source/WebCore/dom/Document.cpp        2014-09-07 00:19:53 UTC (rev 173365)
</span><span class="lines">@@ -5418,9 +5418,17 @@
</span><span class="cx">     // the exiting document.
</span><span class="cx">     bool eventTargetQueuesEmpty = m_fullScreenChangeEventTargetQueue.isEmpty() &amp;&amp; m_fullScreenErrorEventTargetQueue.isEmpty();
</span><span class="cx">     Document&amp; exitingDocument = eventTargetQueuesEmpty ? topDocument() : *this;
</span><del>-    exitingDocument.m_fullScreenChangeDelayTimer.startOneShot(0);
</del><ins>+
+    // FIXME(136605): Remove this quirk once YouTube moves to relative widths and heights for
+    // fullscreen mode.
+    String host = url().host();
+    if (settings() &amp;&amp; settings()-&gt;needsSiteSpecificQuirks() &amp;&amp; (host.endsWith(&quot;.youtube.com&quot;, false) || equalIgnoringCase(&quot;youtube.com&quot;, host)))
+        exitingDocument.fullScreenChangeDelayTimerFired(exitingDocument.m_fullScreenChangeDelayTimer);
+    else
+        exitingDocument.m_fullScreenChangeDelayTimer.startOneShot(0);
+
</ins><span class="cx"> }
</span><del>-    
</del><ins>+
</ins><span class="cx"> void Document::setFullScreenRenderer(RenderFullScreen* renderer)
</span><span class="cx"> {
</span><span class="cx">     if (renderer == m_fullScreenRenderer)
</span></span></pre>
</div>
</div>

</body>
</html>