<!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>[169201] branches/safari-537.77-branch/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/169201">169201</a></dd>
<dt>Author</dt> <dd>lforschler@apple.com</dd>
<dt>Date</dt> <dd>2014-05-22 08:46:51 -0700 (Thu, 22 May 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Merged <a href="http://trac.webkit.org/projects/webkit/changeset/155315">r155315</a>.  </pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#branchessafari53777branchSourceWebCoreCMakeListstxt">branches/safari-537.77-branch/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#branchessafari53777branchSourceWebCoreChangeLog">branches/safari-537.77-branch/Source/WebCore/ChangeLog</a></li>
<li><a href="#branchessafari53777branchSourceWebCoreGNUmakefilelistam">branches/safari-537.77-branch/Source/WebCore/GNUmakefile.list.am</a></li>
<li><a href="#branchessafari53777branchSourceWebCoreTargetpri">branches/safari-537.77-branch/Source/WebCore/Target.pri</a></li>
<li><a href="#branchessafari53777branchSourceWebCoreWebCorevcxprojWebCorevcxproj">branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#branchessafari53777branchSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#branchessafari53777branchSourceWebCoreWebCorexcodeprojprojectpbxproj">branches/safari-537.77-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#branchessafari53777branchSourceWebCorepageFrameViewcpp">branches/safari-537.77-branch/Source/WebCore/page/FrameView.cpp</a></li>
<li><a href="#branchessafari53777branchSourceWebCorepageFrameViewh">branches/safari-537.77-branch/Source/WebCore/page/FrameView.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#branchessafari53777branchSourceWebCorepageFrameActionSchedulercpp">branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.cpp</a></li>
<li><a href="#branchessafari53777branchSourceWebCorepageFrameActionSchedulerh">branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="branchessafari53777branchSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/CMakeLists.txt (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/CMakeLists.txt        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/CMakeLists.txt        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -1738,7 +1738,6 @@
</span><span class="cx">     page/FeatureObserver.cpp
</span><span class="cx">     page/FocusController.cpp
</span><span class="cx">     page/Frame.cpp
</span><del>-    page/FrameActionScheduler.cpp
</del><span class="cx">     page/FrameDestructionObserver.cpp
</span><span class="cx">     page/FrameTree.cpp
</span><span class="cx">     page/FrameView.cpp
</span></span></pre></div>
<a id="branchessafari53777branchSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/ChangeLog (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/ChangeLog        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/ChangeLog        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -1,3 +1,43 @@
</span><ins>+2014-05-22  Lucas Forschler  &lt;lforschler@apple.com&gt;
+
+        Merge r155315
+
+    2013-09-08  Andreas Kling  &lt;akling@apple.com&gt;
+
+            FrameView::scheduleEvent() is over-engineered.
+            &lt;https://webkit.org/b/121004&gt;
+
+            Reviewed by Antti Koivisto.
+
+            Remove gratuitous FrameActionScheduler class that was really only being used
+            to defer the occassional &quot;overflowchanged&quot; event until layout had finished.
+
+            * CMakeLists.txt:
+            * GNUmakefile.list.am:
+            * Target.pri:
+            * WebCore.vcxproj/WebCore.vcxproj:
+            * WebCore.vcxproj/WebCore.vcxproj.filters:
+            * WebCore.xcodeproj/project.pbxproj:
+            * page/FrameActionScheduler.cpp:
+            * page/FrameActionScheduler.h:
+
+                Removed FrameActionScheduler.
+
+            * page/FrameView.h:
+            * page/FrameView.cpp:
+            (WebCore::FrameView::FrameView):
+            (WebCore::FrameView::~FrameView):
+            (WebCore::FrameView::layout):
+            (WebCore::FrameView::ScheduledEvent::ScheduledEvent):
+            (WebCore::FrameView::scheduleEvent):
+            (WebCore::FrameView::pauseScheduledEvents):
+            (WebCore::FrameView::resumeScheduledEvents):
+            (WebCore::FrameView::performPostLayoutTasks):
+            (WebCore::FrameView::updateOverflowStatus):
+
+                Replaced it with a Vector&lt;ScheduledEvent&gt; and a suppression counter.
+                A ScheduledEvent is just a { Node, Event } pair.
+
</ins><span class="cx"> 2014-05-19  Lucas Forschler  &lt;lforschler@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         erge r169098
</span></span></pre></div>
<a id="branchessafari53777branchSourceWebCoreGNUmakefilelistam"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/GNUmakefile.list.am (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/GNUmakefile.list.am        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/GNUmakefile.list.am        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -4217,8 +4217,6 @@
</span><span class="cx">         Source/WebCore/page/FocusDirection.h \
</span><span class="cx">         Source/WebCore/page/Frame.cpp \
</span><span class="cx">         Source/WebCore/page/Frame.h \
</span><del>-        Source/WebCore/page/FrameActionScheduler.cpp \
-        Source/WebCore/page/FrameActionScheduler.h \
</del><span class="cx">         Source/WebCore/page/FrameDestructionObserver.cpp \
</span><span class="cx">         Source/WebCore/page/FrameDestructionObserver.h \
</span><span class="cx">         Source/WebCore/page/FrameTree.cpp \
</span></span></pre></div>
<a id="branchessafari53777branchSourceWebCoreTargetpri"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/Target.pri (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/Target.pri        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/Target.pri        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -916,7 +916,6 @@
</span><span class="cx">     page/FeatureObserver.cpp \
</span><span class="cx">     page/FocusController.cpp \
</span><span class="cx">     page/Frame.cpp \
</span><del>-    page/FrameActionScheduler.cpp \
</del><span class="cx">     page/FrameDestructionObserver.cpp \
</span><span class="cx">     page/FrameTree.cpp \
</span><span class="cx">     page/FrameView.cpp \
</span></span></pre></div>
<a id="branchessafari53777branchSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -6784,7 +6784,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\page\FeatureObserver.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\page\FocusController.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\page\Frame.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\page\FrameActionScheduler.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\page\FrameDestructionObserver.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\page\FrameTree.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\page\FrameView.cpp&quot; /&gt;
</span><span class="lines">@@ -18606,7 +18605,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\page\FocusController.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\page\FocusDirection.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\page\Frame.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\page\FrameActionScheduler.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\page\FrameDestructionObserver.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\page\FrameTree.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\page\FrameView.h&quot; /&gt;
</span><span class="lines">@@ -20929,4 +20927,4 @@
</span><span class="cx">   &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
</span><span class="cx">     &lt;Import Project=&quot;$(VCTargetsPath)\BuildCustomizations\masm.targets&quot; /&gt;
</span><span class="cx">   &lt;/ImportGroup&gt;
</span><del>-&lt;/Project&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/Project&gt;
</ins></span></pre></div>
<a id="branchessafari53777branchSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -759,9 +759,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\page\Frame.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;page&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\page\FrameActionScheduler.cpp&quot;&gt;
-      &lt;Filter&gt;page&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\page\FrameDestructionObserver.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;page&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -7446,9 +7443,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\page\Frame.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;page&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\page\FrameActionScheduler.h&quot;&gt;
-      &lt;Filter&gt;page&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\page\FrameDestructionObserver.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;page&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -15238,4 +15232,4 @@
</span><span class="cx">       &lt;Filter&gt;plugins\win&lt;/Filter&gt;
</span><span class="cx">     &lt;/MASM&gt;
</span><span class="cx">   &lt;/ItemGroup&gt;
</span><del>-&lt;/Project&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/Project&gt;
</ins></span></pre></div>
<a id="branchessafari53777branchSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -3431,8 +3431,6 @@
</span><span class="cx">                 A7A78CD51532BA62006C21E4 /* ContainerNodeAlgorithms.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7A78CD41532BA62006C21E4 /* ContainerNodeAlgorithms.cpp */; };
</span><span class="cx">                 A7AD2F870EC89D07008AB002 /* LinkHash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7AD2F850EC89D07008AB002 /* LinkHash.cpp */; };
</span><span class="cx">                 A7AD2F880EC89D07008AB002 /* LinkHash.h in Headers */ = {isa = PBXBuildFile; fileRef = A7AD2F860EC89D07008AB002 /* LinkHash.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                A7B070D2130A409C00A3763C /* FrameActionScheduler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7B070D0130A409C00A3763C /* FrameActionScheduler.cpp */; };
-                A7B070D3130A409C00A3763C /* FrameActionScheduler.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B070D1130A409C00A3763C /* FrameActionScheduler.h */; };
</del><span class="cx">                 A7B6E69F0B291A9600D0529F /* DragData.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B6E69D0B291A9600D0529F /* DragData.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 A7B761A1161EE526002083D3 /* StyleScopeResolver.h in Headers */ = {isa = PBXBuildFile; fileRef = A7B7619F161EE526002083D3 /* StyleScopeResolver.h */; };
</span><span class="cx">                 A7BBE26611AFB3F20005EA03 /* JSHTMLMeterElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7BBE26411AFB3F20005EA03 /* JSHTMLMeterElement.cpp */; };
</span><span class="lines">@@ -9886,8 +9884,6 @@
</span><span class="cx">                 A7A78CD41532BA62006C21E4 /* ContainerNodeAlgorithms.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContainerNodeAlgorithms.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A7AD2F850EC89D07008AB002 /* LinkHash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LinkHash.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A7AD2F860EC89D07008AB002 /* LinkHash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LinkHash.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                A7B070D0130A409C00A3763C /* FrameActionScheduler.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameActionScheduler.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                A7B070D1130A409C00A3763C /* FrameActionScheduler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameActionScheduler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 A7B4EA6814C9348400C8F5BF /* JSMallocStatistics.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSMallocStatistics.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A7B4EA6914C9348400C8F5BF /* JSMallocStatistics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSMallocStatistics.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 A7B4EA7814C9348400C8F5BF /* JSInternalSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSInternalSettings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -14720,8 +14716,6 @@
</span><span class="cx">                                 062287830B4DB322000C34DF /* FocusDirection.h */,
</span><span class="cx">                                 65BF02290974816300C43196 /* Frame.cpp */,
</span><span class="cx">                                 65BF022A0974816300C43196 /* Frame.h */,
</span><del>-                                A7B070D0130A409C00A3763C /* FrameActionScheduler.cpp */,
-                                A7B070D1130A409C00A3763C /* FrameActionScheduler.h */,
</del><span class="cx">                                 974A862014B7ADBB003FDC76 /* FrameDestructionObserver.cpp */,
</span><span class="cx">                                 974A862114B7ADBB003FDC76 /* FrameDestructionObserver.h */,
</span><span class="cx">                                 65A21482097A3F5300B9050A /* FrameTree.cpp */,
</span><span class="lines">@@ -21837,7 +21831,6 @@
</span><span class="cx">                                 41885B9311B6FDA6003383BB /* FormSubmission.h in Headers */,
</span><span class="cx">                                 A853123D11D0471B00D4D077 /* FragmentScriptingPermission.h in Headers */,
</span><span class="cx">                                 65BF022F0974816300C43196 /* Frame.h in Headers */,
</span><del>-                                A7B070D3130A409C00A3763C /* FrameActionScheduler.h in Headers */,
</del><span class="cx">                                 974A862314B7ADBB003FDC76 /* FrameDestructionObserver.h in Headers */,
</span><span class="cx">                                 656D373C0ADBA5DE00A4554D /* FrameLoader.h in Headers */,
</span><span class="cx">                                 656D373E0ADBA5DE00A4554D /* FrameLoaderClient.h in Headers */,
</span><span class="lines">@@ -25028,7 +25021,6 @@
</span><span class="cx">                                 656D373B0ADBA5DE00A4554D /* FormState.cpp in Sources */,
</span><span class="cx">                                 41885B9411B6FDA6003383BB /* FormSubmission.cpp in Sources */,
</span><span class="cx">                                 65BF022E0974816300C43196 /* Frame.cpp in Sources */,
</span><del>-                                A7B070D2130A409C00A3763C /* FrameActionScheduler.cpp in Sources */,
</del><span class="cx">                                 974A862214B7ADBB003FDC76 /* FrameDestructionObserver.cpp in Sources */,
</span><span class="cx">                                 932E16090AF578340025F408 /* FrameLoader.cpp in Sources */,
</span><span class="cx">                                 D000EBA211BDAFD400C47726 /* FrameLoaderStateMachine.cpp in Sources */,
</span></span></pre></div>
<a id="branchessafari53777branchSourceWebCorepageFrameActionSchedulercpp"></a>
<div class="delfile"><h4>Deleted: branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.cpp (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.cpp        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.cpp        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -1,111 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;FrameActionScheduler.h&quot;
-
-#include &quot;Event.h&quot;
-#include &quot;ExceptionCodePlaceholder.h&quot;
-#include &quot;Node.h&quot;
-#include &lt;wtf/Vector.h&gt;
-
-namespace WebCore {
-
-class EventFrameAction : public FrameAction {
-public:
-    EventFrameAction(PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;Node&gt; target)
-        : m_event(event)
-        , m_eventTarget(target)
-    {
-    }
-
-    virtual void fire()
-    {
-        // Only dispatch events to nodes that are in the document
-        if (m_eventTarget-&gt;inDocument())
-            m_eventTarget-&gt;dispatchEvent(m_event, IGNORE_EXCEPTION);
-    }
-
-private:
-    RefPtr&lt;Event&gt; m_event;
-    RefPtr&lt;Node&gt; m_eventTarget;
-};
-
-FrameActionScheduler::FrameActionScheduler()
-    : m_enqueueActions(0)
-{
-}
-
-FrameActionScheduler::~FrameActionScheduler()
-{
-    clear();
-}
-
-bool FrameActionScheduler::isEmpty() const
-{
-    return m_scheduledActions.isEmpty();
-}
-
-void FrameActionScheduler::clear()
-{
-    m_scheduledActions.clear();
-    m_enqueueActions = 0;
-}
-
-void FrameActionScheduler::pause()
-{
-    ASSERT(isEmpty() || m_enqueueActions);
-    m_enqueueActions++;
-}
-
-void FrameActionScheduler::resume()
-{
-    m_enqueueActions--;
-    if (!m_enqueueActions)
-        dispatch();
-    ASSERT(isEmpty() || m_enqueueActions);
-}
-
-void FrameActionScheduler::dispatch()
-{
-    Vector&lt; OwnPtr&lt;FrameAction&gt; &gt; snapshot;
-    m_scheduledActions.swap(snapshot);
-    
-    for (Vector&lt; OwnPtr&lt;FrameAction&gt; &gt;::iterator i = snapshot.begin(); i != snapshot.end(); ++i)
-        (*i)-&gt;fire();
-}
-
-void FrameActionScheduler::scheduleAction(PassOwnPtr&lt;FrameAction&gt; action)
-{
-    m_scheduledActions.append(action);
-}
-
-void FrameActionScheduler::scheduleEvent(PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;Node&gt; eventTarget)
-{
-    scheduleAction(adoptPtr(new EventFrameAction(event, eventTarget)));
-}
-
-
-} // namespace WebCore
</del></span></pre></div>
<a id="branchessafari53777branchSourceWebCorepageFrameActionSchedulerh"></a>
<div class="delfile"><h4>Deleted: branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.h (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.h        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/page/FrameActionScheduler.h        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -1,73 +0,0 @@
</span><del>-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FrameActionScheduler_h
-#define FrameActionScheduler_h
-
-#include &lt;wtf/FastAllocBase.h&gt;
-#include &lt;wtf/Noncopyable.h&gt;
-#include &lt;wtf/OwnPtr.h&gt;
-#include &lt;wtf/PassOwnPtr.h&gt;
-#include &lt;wtf/Vector.h&gt;
-
-namespace WebCore {
-
-class Node;
-class Event;
-
-class FrameAction {
-    WTF_MAKE_FAST_ALLOCATED;
-    WTF_MAKE_NONCOPYABLE(FrameAction);
-public:
-    FrameAction() {}
-    virtual ~FrameAction() {}
-    virtual void fire() = 0;
-};
-
-class FrameActionScheduler {
-    WTF_MAKE_FAST_ALLOCATED;
-public:
-    FrameActionScheduler();
-    ~FrameActionScheduler();
-
-    bool isEmpty() const;
-    bool isScheduled() const { return 0 &lt; m_enqueueActions; }
-    void clear();
-    void pause();
-    void resume();
-
-    void scheduleAction(PassOwnPtr&lt;FrameAction&gt;);
-    void scheduleEvent(PassRefPtr&lt;Event&gt;, PassRefPtr&lt;Node&gt;);
-
-private:
-    void dispatch();
-
-    unsigned m_enqueueActions;
-    Vector&lt; OwnPtr&lt;FrameAction&gt; &gt; m_scheduledActions;
-};
-
-} // namespace WebCore
-
-#endif // FrameActionScheduler_h
</del></span></pre></div>
<a id="branchessafari53777branchSourceWebCorepageFrameViewcpp"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/page/FrameView.cpp (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/page/FrameView.cpp        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/page/FrameView.cpp        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> #include &quot;FontCache.h&quot;
</span><span class="cx"> #include &quot;FontLoader.h&quot;
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><del>-#include &quot;FrameActionScheduler.h&quot;
</del><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="cx"> #include &quot;FrameSelection.h&quot;
</span><span class="lines">@@ -179,7 +178,6 @@
</span><span class="cx">     , m_isTransparent(false)
</span><span class="cx">     , m_baseBackgroundColor(Color::white)
</span><span class="cx">     , m_mediaType(&quot;screen&quot;)
</span><del>-    , m_actionScheduler(adoptPtr(new FrameActionScheduler))
</del><span class="cx">     , m_overflowStatusDirty(true)
</span><span class="cx">     , m_viewportRenderer(0)
</span><span class="cx">     , m_wasScrolledByUser(false)
</span><span class="lines">@@ -204,6 +202,7 @@
</span><span class="cx"> #endif
</span><span class="cx">     , m_visualUpdatesAllowedByClient(true)
</span><span class="cx">     , m_scrollPinningBehavior(DoNotPin)
</span><ins>+    , m_scheduledEventSuppressionCount(0)
</ins><span class="cx"> {
</span><span class="cx">     init();
</span><span class="cx"> 
</span><span class="lines">@@ -240,7 +239,8 @@
</span><span class="cx"> {
</span><span class="cx">     if (m_postLayoutTasksTimer.isActive()) {
</span><span class="cx">         m_postLayoutTasksTimer.stop();
</span><del>-        m_actionScheduler-&gt;clear();
</del><ins>+        m_scheduledEventSuppressionCount = 0;
+        m_scheduledEvents.clear();
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     removeFromAXObjectCache();
</span><span class="lines">@@ -254,7 +254,7 @@
</span><span class="cx">     setHasVerticalScrollbar(false);
</span><span class="cx">     
</span><span class="cx">     ASSERT(!m_scrollCorner);
</span><del>-    ASSERT(m_actionScheduler-&gt;isEmpty());
</del><ins>+    ASSERT(m_scheduledEvents.isEmpty());
</ins><span class="cx"> 
</span><span class="cx">     if (m_frame) {
</span><span class="cx">         ASSERT(m_frame-&gt;view() != this || !m_frame-&gt;contentRenderer());
</span><span class="lines">@@ -1293,7 +1293,7 @@
</span><span class="cx"> 
</span><span class="cx">         layer = root-&gt;enclosingLayer();
</span><span class="cx"> 
</span><del>-        m_actionScheduler-&gt;pause();
</del><ins>+        pauseScheduledEvents();
</ins><span class="cx"> 
</span><span class="cx">         {
</span><span class="cx">             bool disableLayoutState = false;
</span><span class="lines">@@ -1361,7 +1361,9 @@
</span><span class="cx">         updateOverflowStatus(layoutWidth() &lt; contentsWidth(),
</span><span class="cx">                              layoutHeight() &lt; contentsHeight());
</span><span class="cx"> 
</span><del>-    if (!m_postLayoutTasksTimer.isActive()) {
</del><ins>+    if (m_postLayoutTasksTimer.isActive())
+        resumeScheduledEvents();
+    else {
</ins><span class="cx">         if (!m_inSynchronousPostLayout) {
</span><span class="cx">             if (inChildFrameLayoutWithFrameFlattening) {
</span><span class="cx">                 if (RenderView* renderView = this-&gt;renderView())
</span><span class="lines">@@ -1381,12 +1383,10 @@
</span><span class="cx">             // we call it through the timer here.
</span><span class="cx">             m_postLayoutTasksTimer.startOneShot(0);
</span><span class="cx">             if (needsLayout()) {
</span><del>-                m_actionScheduler-&gt;pause();
</del><ins>+                pauseScheduledEvents();
</ins><span class="cx">                 layout();
</span><span class="cx">             }
</span><span class="cx">         }
</span><del>-    } else {
-        m_actionScheduler-&gt;resume();
</del><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     InspectorInstrumentation::didLayout(cookie, root);
</span><span class="lines">@@ -2602,19 +2602,40 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+struct FrameView::ScheduledEvent {
+    ScheduledEvent(PassRefPtr&lt;Event&gt; e, PassRefPtr&lt;Node&gt; t) : event(e), target(t) { }
+    RefPtr&lt;Event&gt; event;
+    RefPtr&lt;Node&gt; target;
+};
+
</ins><span class="cx"> void FrameView::scheduleEvent(PassRefPtr&lt;Event&gt; event, PassRefPtr&lt;Node&gt; eventTarget)
</span><span class="cx"> {
</span><del>-    m_actionScheduler-&gt;scheduleEvent(event, eventTarget);
</del><ins>+    if (!m_scheduledEventSuppressionCount) {
+        eventTarget-&gt;dispatchEvent(event, IGNORE_EXCEPTION);
+        return;
+    }
+    m_scheduledEvents.append(ScheduledEvent(event, eventTarget));
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameView::pauseScheduledEvents()
</span><span class="cx"> {
</span><del>-    m_actionScheduler-&gt;pause();
</del><ins>+    ++m_scheduledEventSuppressionCount;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameView::resumeScheduledEvents()
</span><span class="cx"> {
</span><del>-    m_actionScheduler-&gt;resume();
</del><ins>+    ASSERT(m_scheduledEventSuppressionCount);
+    --m_scheduledEventSuppressionCount;
+    if (m_scheduledEventSuppressionCount)
+        return;
+
+    Vector&lt;ScheduledEvent&gt; eventsToDispatch = std::move(m_scheduledEvents);
+    for (auto it = eventsToDispatch.begin(), end = eventsToDispatch.end(); it != end; ++it) {
+        ScheduledEvent&amp; scheduledEvent = *it;
+        if (!scheduledEvent.target-&gt;inDocument())
+            continue;
+        scheduledEvent.target-&gt;dispatchEvent(scheduledEvent.event.release(), IGNORE_EXCEPTION);
+    }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void FrameView::scrollToAnchor()
</span><span class="lines">@@ -2810,7 +2831,7 @@
</span><span class="cx"> 
</span><span class="cx">     scrollToAnchor();
</span><span class="cx"> 
</span><del>-    m_actionScheduler-&gt;resume();
</del><ins>+    resumeScheduledEvents();
</ins><span class="cx"> 
</span><span class="cx">     sendResizeEventIfNeeded();
</span><span class="cx"> }
</span><span class="lines">@@ -3002,7 +3023,7 @@
</span><span class="cx">         m_horizontalOverflow = horizontalOverflow;
</span><span class="cx">         m_verticalOverflow = verticalOverflow;
</span><span class="cx">         
</span><del>-        m_actionScheduler-&gt;scheduleEvent(OverflowEvent::create(horizontalOverflowChanged, horizontalOverflow,
</del><ins>+        scheduleEvent(OverflowEvent::create(horizontalOverflowChanged, horizontalOverflow,
</ins><span class="cx">             verticalOverflowChanged, verticalOverflow),
</span><span class="cx">             m_viewportRenderer-&gt;node());
</span><span class="cx">     }
</span></span></pre></div>
<a id="branchessafari53777branchSourceWebCorepageFrameViewh"></a>
<div class="modfile"><h4>Modified: branches/safari-537.77-branch/Source/WebCore/page/FrameView.h (169200 => 169201)</h4>
<pre class="diff"><span>
<span class="info">--- branches/safari-537.77-branch/Source/WebCore/page/FrameView.h        2014-05-22 14:57:59 UTC (rev 169200)
+++ branches/safari-537.77-branch/Source/WebCore/page/FrameView.h        2014-05-22 15:46:51 UTC (rev 169201)
</span><span class="lines">@@ -42,7 +42,6 @@
</span><span class="cx"> class Element;
</span><span class="cx"> class Event;
</span><span class="cx"> class FloatSize;
</span><del>-class FrameActionScheduler;
</del><span class="cx"> class KURL;
</span><span class="cx"> class Node;
</span><span class="cx"> class Page;
</span><span class="lines">@@ -583,8 +582,6 @@
</span><span class="cx">     String m_mediaType;
</span><span class="cx">     String m_mediaTypeWhenNotPrinting;
</span><span class="cx"> 
</span><del>-    OwnPtr&lt;FrameActionScheduler&gt; m_actionScheduler;
-
</del><span class="cx">     bool m_overflowStatusDirty;
</span><span class="cx">     bool m_horizontalOverflow;
</span><span class="cx">     bool m_verticalOverflow;    
</span><span class="lines">@@ -666,6 +663,11 @@
</span><span class="cx">     bool m_visualUpdatesAllowedByClient;
</span><span class="cx">     
</span><span class="cx">     ScrollPinningBehavior m_scrollPinningBehavior;
</span><ins>+
+    unsigned m_scheduledEventSuppressionCount;
+
+    struct ScheduledEvent;
+    Vector&lt;ScheduledEvent&gt; m_scheduledEvents;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> inline void FrameView::incrementVisuallyNonEmptyCharacterCount(unsigned count)
</span></span></pre>
</div>
</div>

</body>
</html>