<!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>[174278] 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/174278">174278</a></dd>
<dt>Author</dt> <dd>bdakin@apple.com</dd>
<dt>Date</dt> <dd>2014-10-03 13:08:32 -0700 (Fri, 03 Oct 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>Unreviewed, rolling out <a href="http://trac.webkit.org/projects/webkit/changeset/174270">r174270</a>.
https://bugs.webkit.org/show_bug.cgi?id=137397

crashes on the bots (Requested by dethbakin on #webkit).

Reverted changeset:

&quot;EventSender dispatches should be per-Document&quot;
https://bugs.webkit.org/show_bug.cgi?id=136051
http://trac.webkit.org/changeset/174270

Patch by Commit Queue &lt;commit-queue@webkit.org&gt; on 2014-10-03</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCoredomDOMAllInOnecpp">trunk/Source/WebCore/dom/DOMAllInOne.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumentcpp">trunk/Source/WebCore/dom/Document.cpp</a></li>
<li><a href="#trunkSourceWebCoredomDocumenth">trunk/Source/WebCore/dom/Document.h</a></li>
<li><a href="#trunkSourceWebCoredomEventSenderh">trunk/Source/WebCore/dom/EventSender.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementcpp">trunk/Source/WebCore/html/HTMLLinkElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLLinkElementh">trunk/Source/WebCore/html/HTMLLinkElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLStyleElementcpp">trunk/Source/WebCore/html/HTMLStyleElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLStyleElementh">trunk/Source/WebCore/html/HTMLStyleElement.h</a></li>
<li><a href="#trunkSourceWebCoreloaderImageLoadercpp">trunk/Source/WebCore/loader/ImageLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderImageLoaderh">trunk/Source/WebCore/loader/ImageLoader.h</a></li>
<li><a href="#trunkSourceWebCorexmlparserXMLDocumentParsercpp">trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoredomSharedEventSenderscpp">trunk/Source/WebCore/dom/SharedEventSenders.cpp</a></li>
<li><a href="#trunkSourceWebCoredomSharedEventSendersh">trunk/Source/WebCore/dom/SharedEventSenders.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/CMakeLists.txt        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -1437,7 +1437,6 @@
</span><span class="cx">     dom/SecurityContext.cpp
</span><span class="cx">     dom/SelectorQuery.cpp
</span><span class="cx">     dom/ShadowRoot.cpp
</span><del>-    dom/SharedEventSenders.cpp
</del><span class="cx">     dom/SpaceSplitString.cpp
</span><span class="cx">     dom/StaticNodeList.cpp
</span><span class="cx">     dom/StringCallback.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/ChangeLog        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2014-10-03  Commit Queue  &lt;commit-queue@webkit.org&gt;
+
+        Unreviewed, rolling out r174270.
+        https://bugs.webkit.org/show_bug.cgi?id=137397
+
+        crashes on the bots (Requested by dethbakin on #webkit).
+
+        Reverted changeset:
+
+        &quot;EventSender dispatches should be per-Document&quot;
+        https://bugs.webkit.org/show_bug.cgi?id=136051
+        http://trac.webkit.org/changeset/174270
+
</ins><span class="cx"> 2014-10-03  Jer Noble  &lt;jer.noble@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [iOS] Back-to-back fullscreen videos result in incorrectly sized videos
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -13778,20 +13778,6 @@
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\dom\SharedEventSenders.cpp&quot;&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='DebugSuffix|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-      &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Production|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\dom\SpaceSplitString.cpp&quot;&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|Win32'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="cx">       &lt;ExcludedFromBuild Condition=&quot;'$(Configuration)|$(Platform)'=='Debug|x64'&quot;&gt;true&lt;/ExcludedFromBuild&gt;
</span><span class="lines">@@ -20597,7 +20583,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\SecurityContext.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\SelectorQuery.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\SimulatedClickOptions.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\dom\SharedEventSenders.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\dom\SpaceSplitString.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\StaticHashSetNodeList.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\StaticNodeList.h&quot; /&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -3354,9 +3354,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\dom\SelectorQuery.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;dom&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\dom\SharedEventSenders.cpp&quot;&gt;
-      &lt;Filter&gt;dom&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\dom\SpaceSplitString.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;dom&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -10455,9 +10452,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\dom\SelectorQuery.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;dom&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\dom\SharedEventSenders.h&quot;&gt;
-      &lt;Filter&gt;dom&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\dom\SimulatedClickOptions.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;dom&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -5517,9 +5517,6 @@
</span><span class="cx">                 C3CF17A615B0063F00276D39 /* IdTargetObserverRegistry.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C3CF17A215B0063F00276D39 /* IdTargetObserverRegistry.cpp */; };
</span><span class="cx">                 C3CF17A715B0063F00276D39 /* IdTargetObserverRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = C3CF17A315B0063F00276D39 /* IdTargetObserverRegistry.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 C400D10918F1C8F60090D863 /* EventLoopInput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C400D10818F1C8F60090D863 /* EventLoopInput.cpp */; };
</span><del>-                C49474A119A2847C009B3DE8 /* SharedEventSenders.h in Headers */ = {isa = PBXBuildFile; fileRef = C49474A019A2847C009B3DE8 /* SharedEventSenders.h */; };
-                C49474A819A2D612009B3DE8 /* EventSender.h in Headers */ = {isa = PBXBuildFile; fileRef = CE5CB1B314EDAB6F00BB2795 /* EventSender.h */; };
-                C49474AA19A2E2E5009B3DE8 /* SharedEventSenders.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C49474A919A2E2E5009B3DE8 /* SharedEventSenders.cpp */; };
</del><span class="cx">                 C4CD629A18383766007EBAF1 /* FrameSnapshotting.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C4CD629818383766007EBAF1 /* FrameSnapshotting.cpp */; };
</span><span class="cx">                 C4CD629B18383766007EBAF1 /* FrameSnapshotting.h in Headers */ = {isa = PBXBuildFile; fileRef = C4CD629918383766007EBAF1 /* FrameSnapshotting.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 C50B561612119D23008B46E0 /* GroupSettings.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C50B561412119D23008B46E0 /* GroupSettings.cpp */; };
</span><span class="lines">@@ -12938,8 +12935,6 @@
</span><span class="cx">                 C3CF17A315B0063F00276D39 /* IdTargetObserverRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IdTargetObserverRegistry.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C3E61C653A64807A83E76FB8 /* MathMLMencloseElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MathMLMencloseElement.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C400D10818F1C8F60090D863 /* EventLoopInput.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventLoopInput.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                C49474A019A2847C009B3DE8 /* SharedEventSenders.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedEventSenders.h; sourceTree = &quot;&lt;group&gt;&quot;; };
-                C49474A919A2E2E5009B3DE8 /* SharedEventSenders.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedEventSenders.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 C4CD629818383766007EBAF1 /* FrameSnapshotting.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameSnapshotting.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C4CD629918383766007EBAF1 /* FrameSnapshotting.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FrameSnapshotting.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 C50B561412119D23008B46E0 /* GroupSettings.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GroupSettings.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -22797,8 +22792,6 @@
</span><span class="cx">                                 E45322AA140CE267005A0F92 /* SelectorQuery.h */,
</span><span class="cx">                                 A6D169611346B49B000EB770 /* ShadowRoot.cpp */,
</span><span class="cx">                                 A6D169631346B4C1000EB770 /* ShadowRoot.h */,
</span><del>-                                C49474A919A2E2E5009B3DE8 /* SharedEventSenders.cpp */,
-                                C49474A019A2847C009B3DE8 /* SharedEventSenders.h */,
</del><span class="cx">                                 31741AAB16635E45008A5B7E /* SimulatedClickOptions.h */,
</span><span class="cx">                                 D01A27AB10C9BFD800026A42 /* SpaceSplitString.cpp */,
</span><span class="cx">                                 D01A27AC10C9BFD800026A42 /* SpaceSplitString.h */,
</span><span class="lines">@@ -23393,7 +23386,6 @@
</span><span class="cx">                                 070363E0181A1CDC00C074A5 /* AVAudioCaptureSource.h in Headers */,
</span><span class="cx">                                 070363E2181A1CDC00C074A5 /* AVCaptureDeviceManager.h in Headers */,
</span><span class="cx">                                 070363E4181A1CDC00C074A5 /* AVMediaCaptureSource.h in Headers */,
</span><del>-                                C49474A819A2D612009B3DE8 /* EventSender.h in Headers */,
</del><span class="cx">                                 CD336F6217F9F64700DDDCD0 /* AVTrackPrivateAVFObjCImpl.h in Headers */,
</span><span class="cx">                                 070363E6181A1CDC00C074A5 /* AVVideoCaptureSource.h in Headers */,
</span><span class="cx">                                 29A812380FBB9C1D00510293 /* AXObjectCache.h in Headers */,
</span><span class="lines">@@ -26433,7 +26425,6 @@
</span><span class="cx">                                 85031B4F0A44EFC700F992E0 /* UIEventWithKeyState.h in Headers */,
</span><span class="cx">                                 AA4739D21757AFEC00E76767 /* UIRequestEvent.h in Headers */,
</span><span class="cx">                                 9B2D8A7914997CCF00ECEF3E /* UndoStep.h in Headers */,
</span><del>-                                C49474A119A2847C009B3DE8 /* SharedEventSenders.h in Headers */,
</del><span class="cx">                                 A863E2011343412000274926 /* UnicodeBidi.h in Headers */,
</span><span class="cx">                                 E4AFCFA50DAF29A300F5F55C /* UnitBezier.h in Headers */,
</span><span class="cx">                                 D086FE9809D53AAB005BC74D /* UnlinkCommand.h in Headers */,
</span><span class="lines">@@ -28100,7 +28091,6 @@
</span><span class="cx">                                 8931DE5B14C44C44000DC9D2 /* JSBlobCustom.cpp in Sources */,
</span><span class="cx">                                 1449E287107D4DB400B5793F /* JSCallbackData.cpp in Sources */,
</span><span class="cx">                                 65DF323909D1DE65000BE325 /* JSCanvasGradient.cpp in Sources */,
</span><del>-                                C49474AA19A2E2E5009B3DE8 /* SharedEventSenders.cpp in Sources */,
</del><span class="cx">                                 65DF323B09D1DE65000BE325 /* JSCanvasPattern.cpp in Sources */,
</span><span class="cx">                                 49EED1421051969400099FAB /* JSCanvasRenderingContext.cpp in Sources */,
</span><span class="cx">                                 49EED1441051969400099FAB /* JSCanvasRenderingContext2D.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCoredomDOMAllInOnecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DOMAllInOne.cpp (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DOMAllInOne.cpp        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/dom/DOMAllInOne.cpp        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -124,7 +124,6 @@
</span><span class="cx"> #include &quot;SecurityContext.cpp&quot;
</span><span class="cx"> #include &quot;SelectorQuery.cpp&quot;
</span><span class="cx"> #include &quot;ShadowRoot.cpp&quot;
</span><del>-#include &quot;SharedEventSenders.cpp&quot;
</del><span class="cx"> #include &quot;SpaceSplitString.cpp&quot;
</span><span class="cx"> #include &quot;StaticNodeList.cpp&quot;
</span><span class="cx"> #include &quot;StyledElement.cpp&quot;
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.cpp (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.cpp        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/dom/Document.cpp        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -138,7 +138,6 @@
</span><span class="cx"> #include &quot;SelectorQuery.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><span class="cx"> #include &quot;ShadowRoot.h&quot;
</span><del>-#include &quot;SharedEventSenders.h&quot;
</del><span class="cx"> #include &quot;StyleProperties.h&quot;
</span><span class="cx"> #include &quot;StyleResolver.h&quot;
</span><span class="cx"> #include &quot;StyleSheetContents.h&quot;
</span><span class="lines">@@ -472,7 +471,6 @@
</span><span class="cx">     , m_sawElementsInKnownNamespaces(false)
</span><span class="cx">     , m_isSrcdocDocument(false)
</span><span class="cx">     , m_eventQueue(*this)
</span><del>-    , m_sharedEventSenders(std::make_unique&lt;SharedEventSenders&gt;())
</del><span class="cx">     , m_weakFactory(this)
</span><span class="cx"> #if ENABLE(FULLSCREEN_API)
</span><span class="cx">     , m_areKeysEnabledInFullScreen(0)
</span><span class="lines">@@ -2424,19 +2422,21 @@
</span><span class="cx">     //  -When any new HTMLLinkElement is inserted into the document
</span><span class="cx">     // But those add a dynamic component to the favicon that has UI 
</span><span class="cx">     // ramifications, and we need to decide what is the Right Thing To Do(tm)
</span><del>-    Frame* frame = this-&gt;frame();
-    if (frame) {
-        frame-&gt;loader().icon().startLoader();
-        frame-&gt;animation().startAnimationsIfNotSuspended(this);
</del><ins>+    Frame* f = frame();
+    if (f) {
+        f-&gt;loader().icon().startLoader();
+        f-&gt;animation().startAnimationsIfNotSuspended(this);
+
+        // FIXME: We shouldn't be dispatching pending events globally on all Documents here.
+        // For now, only do this when there is a Frame, otherwise this could cause JS reentrancy
+        // below SVG font parsing, for example. &lt;https://webkit.org/b/136269&gt;
+        ImageLoader::dispatchPendingBeforeLoadEvents();
+        ImageLoader::dispatchPendingLoadEvents();
+        ImageLoader::dispatchPendingErrorEvents();
+        HTMLLinkElement::dispatchPendingLoadEvents();
+        HTMLStyleElement::dispatchPendingLoadEvents();
</ins><span class="cx">     }
</span><span class="cx"> 
</span><del>-    sharedEventSenders().imageBeforeloadEventSender().dispatchPendingEvents();
-    sharedEventSenders().imageLoadEventSender().dispatchPendingEvents();
-    sharedEventSenders().imageErrorEventSender().dispatchPendingEvents();
-
-    sharedEventSenders().linkLoadEventSender().dispatchPendingEvents();
-    sharedEventSenders().styleLoadEventSender().dispatchPendingEvents();
-
</del><span class="cx">     // To align the HTML load event and the SVGLoad event for the outermost &lt;svg&gt; element, fire it from
</span><span class="cx">     // here, instead of doing it from SVGElement::finishedParsingChildren (if externalResourcesRequired=&quot;false&quot;,
</span><span class="cx">     // which is the default, for ='true' its fired at a later time, once all external resources finished loading).
</span><span class="lines">@@ -2447,15 +2447,15 @@
</span><span class="cx">     enqueuePageshowEvent(PageshowEventNotPersisted);
</span><span class="cx">     enqueuePopstateEvent(m_pendingStateObject ? m_pendingStateObject.release() : SerializedScriptValue::nullValue());
</span><span class="cx">     
</span><del>-    if (frame)
-        frame-&gt;loader().handledOnloadEvents();
</del><ins>+    if (f)
+        f-&gt;loader().handledOnloadEvents();
</ins><span class="cx"> #ifdef INSTRUMENT_LAYOUT_SCHEDULING
</span><span class="cx">     if (!ownerElement())
</span><span class="cx">         printf(&quot;onload fired at %lld\n&quot;, elapsedTime().count());
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     // An event handler may have removed the frame
</span><del>-    if (!this-&gt;frame()) {
</del><ins>+    if (!frame()) {
</ins><span class="cx">         m_processingLoadEvent = false;
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="lines">@@ -2464,7 +2464,7 @@
</span><span class="cx">     // fires. This will improve onload scores, and other browsers do it.
</span><span class="cx">     // If they wanna cheat, we can too. -dwh
</span><span class="cx"> 
</span><del>-    if (this-&gt;frame()-&gt;navigationScheduler().locationChangePending() &amp;&amp; elapsedTime() &lt; settings()-&gt;layoutInterval()) {
</del><ins>+    if (frame()-&gt;navigationScheduler().locationChangePending() &amp;&amp; elapsedTime() &lt; settings()-&gt;layoutInterval()) {
</ins><span class="cx">         // Just bail out. Before or during the onload we were shifted to another page.
</span><span class="cx">         // The old i-Bench suite does this. When this happens don't bother painting or laying out.        
</span><span class="cx">         m_processingLoadEvent = false;
</span><span class="lines">@@ -2472,7 +2472,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    this-&gt;frame()-&gt;loader().checkCallImplicitClose();
</del><ins>+    frame()-&gt;loader().checkCallImplicitClose();
</ins><span class="cx">     
</span><span class="cx">     // We used to force a synchronous display and flush here.  This really isn't
</span><span class="cx">     // necessary and can in fact be actively harmful if pages are loading at a rate of &gt; 60fps
</span><span class="lines">@@ -2489,7 +2489,7 @@
</span><span class="cx">     m_processingLoadEvent = false;
</span><span class="cx"> 
</span><span class="cx"> #if PLATFORM(COCOA) || PLATFORM(WIN) || PLATFORM(GTK) || PLATFORM(EFL)
</span><del>-    if (frame &amp;&amp; hasLivingRenderTree() &amp;&amp; AXObjectCache::accessibilityEnabled()) {
</del><ins>+    if (f &amp;&amp; hasLivingRenderTree() &amp;&amp; AXObjectCache::accessibilityEnabled()) {
</ins><span class="cx">         // The AX cache may have been cleared at this point, but we need to make sure it contains an
</span><span class="cx">         // AX object to send the notification to. getOrCreate will make sure that an valid AX object
</span><span class="cx">         // exists in the cache (we ignore the return value because we don't need it here). This is 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/Document.h (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/Document.h        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/dom/Document.h        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -144,7 +144,6 @@
</span><span class="cx"> class SerializedScriptValue;
</span><span class="cx"> class SegmentedString;
</span><span class="cx"> class Settings;
</span><del>-class SharedEventSenders;
</del><span class="cx"> class StyleResolver;
</span><span class="cx"> class StyleSheet;
</span><span class="cx"> class StyleSheetContents;
</span><span class="lines">@@ -1120,8 +1119,6 @@
</span><span class="cx">     void enqueuePopstateEvent(PassRefPtr&lt;SerializedScriptValue&gt; stateObject);
</span><span class="cx">     virtual DocumentEventQueue&amp; eventQueue() const override { return m_eventQueue; }
</span><span class="cx"> 
</span><del>-    SharedEventSenders&amp; sharedEventSenders() const { return *m_sharedEventSenders; }
-
</del><span class="cx">     WEBCORE_EXPORT void addMediaCanStartListener(MediaCanStartListener*);
</span><span class="cx">     WEBCORE_EXPORT void removeMediaCanStartListener(MediaCanStartListener*);
</span><span class="cx">     MediaCanStartListener* takeAnyMediaCanStartListener();
</span><span class="lines">@@ -1579,8 +1576,6 @@
</span><span class="cx">     RenderPtr&lt;RenderView&gt; m_renderView;
</span><span class="cx">     mutable DocumentEventQueue m_eventQueue;
</span><span class="cx"> 
</span><del>-    const std::unique_ptr&lt;SharedEventSenders&gt; m_sharedEventSenders;
-
</del><span class="cx">     WeakPtrFactory&lt;Document&gt; m_weakFactory;
</span><span class="cx"> 
</span><span class="cx">     HashSet&lt;MediaCanStartListener*&gt; m_mediaCanStartListeners;
</span></span></pre></div>
<a id="trunkSourceWebCoredomEventSenderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/EventSender.h (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/EventSender.h        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/dom/EventSender.h        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -1,6 +1,5 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Apple Inc. All rights reserved.
</span><del>- * Copyright (C) 2014 University of Washington. All rights reserved.
</del><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -32,15 +31,10 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-template &lt;typename T&gt;
-class EventSender {
</del><ins>+template&lt;typename T&gt; class EventSender {
</ins><span class="cx">     WTF_MAKE_NONCOPYABLE(EventSender); WTF_MAKE_FAST_ALLOCATED;
</span><span class="cx"> public:
</span><del>-    EventSender(const AtomicString&amp; eventType)
-        : m_eventType(eventType)
-        , m_timer(this, &amp;EventSender::timerFired)
-    {
-    }
</del><ins>+    explicit EventSender(const AtomicString&amp; eventType);
</ins><span class="cx"> 
</span><span class="cx">     const AtomicString&amp; eventType() const { return m_eventType; }
</span><span class="cx">     void dispatchEventSoon(T&amp;);
</span><span class="lines">@@ -48,9 +42,9 @@
</span><span class="cx">     void dispatchPendingEvents();
</span><span class="cx"> 
</span><span class="cx"> #ifndef NDEBUG
</span><del>-    bool hasPendingEvents(T&amp; client) const
</del><ins>+    bool hasPendingEvents(T&amp; sender) const
</ins><span class="cx">     {
</span><del>-        return m_dispatchSoonList.find(&amp;client) != notFound || m_dispatchingList.find(&amp;client) != notFound;
</del><ins>+        return m_dispatchSoonList.find(&amp;sender) != notFound || m_dispatchingList.find(&amp;sender) != notFound;
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="lines">@@ -63,31 +57,34 @@
</span><span class="cx">     Vector&lt;T*&gt; m_dispatchingList;
</span><span class="cx"> };
</span><span class="cx"> 
</span><del>-template &lt;typename T&gt;
-void EventSender&lt;T&gt;::dispatchEventSoon(T&amp; client)
</del><ins>+template&lt;typename T&gt; EventSender&lt;T&gt;::EventSender(const AtomicString&amp; eventType)
+    : m_eventType(eventType)
+    , m_timer(this, &amp;EventSender::timerFired)
</ins><span class="cx"> {
</span><del>-    m_dispatchSoonList.append(&amp;client);
</del><ins>+}
+
+template&lt;typename T&gt; void EventSender&lt;T&gt;::dispatchEventSoon(T&amp; sender)
+{
+    m_dispatchSoonList.append(&amp;sender);
</ins><span class="cx">     if (!m_timer.isActive())
</span><span class="cx">         m_timer.startOneShot(0);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-template&lt;typename T&gt;
-void EventSender&lt;T&gt;::cancelEvent(T&amp; client)
</del><ins>+template&lt;typename T&gt; void EventSender&lt;T&gt;::cancelEvent(T&amp; sender)
</ins><span class="cx"> {
</span><del>-    // Remove instances of this client from both lists.
</del><ins>+    // Remove instances of this sender from both lists.
</ins><span class="cx">     // Use loops because we allow multiple instances to get into the lists.
</span><span class="cx">     for (auto&amp; event : m_dispatchSoonList) {
</span><del>-        if (event == &amp;client)
</del><ins>+        if (event == &amp;sender)
</ins><span class="cx">             event = nullptr;
</span><span class="cx">     }
</span><span class="cx">     for (auto&amp; event : m_dispatchingList) {
</span><del>-        if (event == &amp;client)
</del><ins>+        if (event == &amp;sender)
</ins><span class="cx">             event = nullptr;
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-template&lt;typename T&gt;
-void EventSender&lt;T&gt;::dispatchPendingEvents()
</del><ins>+template&lt;typename T&gt; void EventSender&lt;T&gt;::dispatchPendingEvents()
</ins><span class="cx"> {
</span><span class="cx">     // Need to avoid re-entering this function; if new dispatches are
</span><span class="cx">     // scheduled before the parent finishes processing the list, they
</span><span class="lines">@@ -97,11 +94,13 @@
</span><span class="cx"> 
</span><span class="cx">     m_timer.stop();
</span><span class="cx"> 
</span><ins>+    m_dispatchSoonList.checkConsistency();
+
</ins><span class="cx">     m_dispatchingList.swap(m_dispatchSoonList);
</span><span class="cx">     for (auto&amp; event : m_dispatchingList) {
</span><del>-        if (T* client = event) {
</del><ins>+        if (T* sender = event) {
</ins><span class="cx">             event = nullptr;
</span><del>-            client-&gt;dispatchPendingEvent(*this);
</del><ins>+            sender-&gt;dispatchPendingEvent(this);
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx">     m_dispatchingList.clear();
</span></span></pre></div>
<a id="trunkSourceWebCoredomSharedEventSenderscpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/dom/SharedEventSenders.cpp (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SharedEventSenders.cpp        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/dom/SharedEventSenders.cpp        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -1,75 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 University of Washington. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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 APPLE INC. AND ITS CONTRIBUTORS ``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 APPLE INC. OR ITS 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;SharedEventSenders.h&quot;
-
-#include &quot;HTMLLinkElement.h&quot;
-#include &quot;HTMLStyleElement.h&quot;
-#include &quot;ImageLoader.h&quot;
-
-namespace WebCore {
-
-EventSender&lt;HTMLLinkElement&gt;&amp; SharedEventSenders::linkLoadEventSender()
-{
-    if (!m_linkLoadEventSender)
-        m_linkLoadEventSender = std::make_unique&lt;EventSender&lt;HTMLLinkElement&gt;&gt;(eventNames().loadEvent);
-
-    return *m_linkLoadEventSender;
-}
-
-EventSender&lt;HTMLStyleElement&gt;&amp; SharedEventSenders::styleLoadEventSender()
-{
-    if (!m_styleLoadEventSender)
-        m_styleLoadEventSender = std::make_unique&lt;EventSender&lt;HTMLStyleElement&gt;&gt;(eventNames().loadEvent);
-
-    return *m_styleLoadEventSender;
-}
-
-EventSender&lt;ImageLoader&gt;&amp; SharedEventSenders::imageBeforeloadEventSender()
-{
-    if (!m_imageBeforeloadEventSender)
-        m_imageBeforeloadEventSender = std::make_unique&lt;EventSender&lt;ImageLoader&gt;&gt;(eventNames().beforeloadEvent);
-
-    return *m_imageBeforeloadEventSender;
-}
-
-EventSender&lt;ImageLoader&gt;&amp; SharedEventSenders::imageLoadEventSender()
-{
-    if (!m_imageLoadEventSender)
-        m_imageLoadEventSender = std::make_unique&lt;EventSender&lt;ImageLoader&gt;&gt;(eventNames().loadEvent);
-
-    return *m_imageLoadEventSender;
-}
-
-EventSender&lt;ImageLoader&gt;&amp; SharedEventSenders::imageErrorEventSender()
-{
-    if (!m_imageErrorEventSender)
-        m_imageErrorEventSender = std::make_unique&lt;EventSender&lt;ImageLoader&gt;&gt;(eventNames().errorEvent);
-
-    return *m_imageErrorEventSender;
-}
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCoredomSharedEventSendersh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/dom/SharedEventSenders.h (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/SharedEventSenders.h        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/dom/SharedEventSenders.h        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -1,58 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 University of Washington. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. 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 APPLE INC. AND ITS CONTRIBUTORS ``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 APPLE INC. OR ITS 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 SharedEventSenders_h
-#define SharedEventSenders_h
-
-#include &quot;EventNames.h&quot;
-#include &quot;EventSender.h&quot;
-
-namespace WebCore {
-
-class HTMLLinkElement;
-class HTMLStyleElement;
-class ImageLoader;
-
-class SharedEventSenders {
-    WTF_MAKE_NONCOPYABLE(SharedEventSenders); WTF_MAKE_FAST_ALLOCATED;
-public:
-    explicit SharedEventSenders() { }
-
-    EventSender&lt;HTMLLinkElement&gt;&amp; linkLoadEventSender();
-    EventSender&lt;HTMLStyleElement&gt;&amp; styleLoadEventSender();
-    EventSender&lt;ImageLoader&gt;&amp; imageBeforeloadEventSender();
-    EventSender&lt;ImageLoader&gt;&amp; imageLoadEventSender();
-    EventSender&lt;ImageLoader&gt;&amp; imageErrorEventSender();
-private:
-    std::unique_ptr&lt;EventSender&lt;HTMLLinkElement&gt;&gt; m_linkLoadEventSender;
-    std::unique_ptr&lt;EventSender&lt;HTMLStyleElement&gt;&gt; m_styleLoadEventSender;
-    std::unique_ptr&lt;EventSender&lt;ImageLoader&gt;&gt; m_imageBeforeloadEventSender;
-    std::unique_ptr&lt;EventSender&lt;ImageLoader&gt;&gt; m_imageLoadEventSender;
-    std::unique_ptr&lt;EventSender&lt;ImageLoader&gt;&gt; m_imageErrorEventSender;
-};
-
-} // namespace WebCore
-
-#endif // SharedEventSenders_h
</del></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.cpp (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.cpp        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/html/HTMLLinkElement.cpp        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentStyleSheetCollection.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><ins>+#include &quot;EventSender.h&quot;
</ins><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="lines">@@ -46,7 +47,6 @@
</span><span class="cx"> #include &quot;RenderStyle.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><span class="cx"> #include &quot;Settings.h&quot;
</span><del>-#include &quot;SharedEventSenders.h&quot;
</del><span class="cx"> #include &quot;StyleInheritedData.h&quot;
</span><span class="cx"> #include &quot;StyleResolveForDocument.h&quot;
</span><span class="cx"> #include &quot;StyleSheetContents.h&quot;
</span><span class="lines">@@ -57,6 +57,12 @@
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><ins>+static LinkEventSender&amp; linkLoadEventSender()
+{
+    DEPRECATED_DEFINE_STATIC_LOCAL(LinkEventSender, sharedLoadEventSender, (eventNames().loadEvent));
+    return sharedLoadEventSender;
+}
+
</ins><span class="cx"> inline HTMLLinkElement::HTMLLinkElement(const QualifiedName&amp; tagName, Document&amp; document, bool createdByParser)
</span><span class="cx">     : HTMLElement(tagName, document)
</span><span class="cx">     , m_linkLoader(this)
</span><span class="lines">@@ -88,7 +94,7 @@
</span><span class="cx">     if (inDocument())
</span><span class="cx">         document().styleSheetCollection().removeStyleSheetCandidateNode(*this);
</span><span class="cx"> 
</span><del>-    document().sharedEventSenders().linkLoadEventSender().cancelEvent(*this);
</del><ins>+    linkLoadEventSender().cancelEvent(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void HTMLLinkElement::setDisabledState(bool disabled)
</span><span class="lines">@@ -355,10 +361,14 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLLinkElement::dispatchPendingEvent(EventSender&lt;HTMLLinkElement&gt;&amp; eventSender)
</del><ins>+void HTMLLinkElement::dispatchPendingLoadEvents()
</ins><span class="cx"> {
</span><del>-    ASSERT_UNUSED(eventSender, &amp;eventSender == &amp;document().sharedEventSenders().linkLoadEventSender());
</del><ins>+    linkLoadEventSender().dispatchPendingEvents();
+}
</ins><span class="cx"> 
</span><ins>+void HTMLLinkElement::dispatchPendingEvent(LinkEventSender* eventSender)
+{
+    ASSERT_UNUSED(eventSender, eventSender == &amp;linkLoadEventSender());
</ins><span class="cx">     if (m_loadedSheet)
</span><span class="cx">         linkLoaded();
</span><span class="cx">     else
</span><span class="lines">@@ -370,7 +380,7 @@
</span><span class="cx">     if (m_firedLoad)
</span><span class="cx">         return;
</span><span class="cx">     m_loadedSheet = !errorOccurred;
</span><del>-    document().sharedEventSenders().linkLoadEventSender().dispatchEventSoon(*this);
</del><ins>+    linkLoadEventSender().dispatchEventSoon(*this);
</ins><span class="cx">     m_firedLoad = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLLinkElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLLinkElement.h (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLLinkElement.h        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/html/HTMLLinkElement.h        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -40,6 +40,7 @@
</span><span class="cx"> class URL;
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename T&gt; class EventSender;
</span><ins>+typedef EventSender&lt;HTMLLinkElement&gt; LinkEventSender;
</ins><span class="cx"> 
</span><span class="cx"> class HTMLLinkElement final : public HTMLElement, public CachedStyleSheetClient, public LinkLoaderClient {
</span><span class="cx"> public:
</span><span class="lines">@@ -67,7 +68,8 @@
</span><span class="cx">     void setSizes(const String&amp;);
</span><span class="cx">     DOMSettableTokenList* sizes() const;
</span><span class="cx"> 
</span><del>-    void dispatchPendingEvent(EventSender&lt;HTMLLinkElement&gt;&amp;);
</del><ins>+    void dispatchPendingEvent(LinkEventSender*);
+    static void dispatchPendingLoadEvents();
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     virtual void parseAttribute(const QualifiedName&amp;, const AtomicString&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLStyleElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLStyleElement.cpp (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLStyleElement.cpp        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/html/HTMLStyleElement.cpp        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -27,18 +27,23 @@
</span><span class="cx"> #include &quot;Attribute.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><ins>+#include &quot;EventSender.h&quot;
</ins><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;MediaList.h&quot;
</span><span class="cx"> #include &quot;RuntimeEnabledFeatures.h&quot;
</span><span class="cx"> #include &quot;ScriptableDocumentParser.h&quot;
</span><span class="cx"> #include &quot;ShadowRoot.h&quot;
</span><del>-#include &quot;SharedEventSenders.h&quot;
</del><span class="cx"> #include &quot;StyleSheetContents.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><span class="cx"> using namespace HTMLNames;
</span><span class="cx"> 
</span><ins>+static StyleEventSender&amp; styleLoadEventSender()
+{
+    DEPRECATED_DEFINE_STATIC_LOCAL(StyleEventSender, sharedLoadEventSender, (eventNames().loadEvent));
+    return sharedLoadEventSender;
+}
</ins><span class="cx"> 
</span><span class="cx"> inline HTMLStyleElement::HTMLStyleElement(const QualifiedName&amp; tagName, Document&amp; document, bool createdByParser)
</span><span class="cx">     : HTMLElement(tagName, document)
</span><span class="lines">@@ -55,7 +60,7 @@
</span><span class="cx">     // Therefore we can't ASSERT(m_scopedStyleRegistrationState == NotRegistered).
</span><span class="cx">     m_styleSheetOwner.clearDocumentData(document(), *this);
</span><span class="cx"> 
</span><del>-    document().sharedEventSenders().styleLoadEventSender().cancelEvent(*this);
</del><ins>+    styleLoadEventSender().cancelEvent(*this);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> PassRefPtr&lt;HTMLStyleElement&gt; HTMLStyleElement::create(const QualifiedName&amp; tagName, Document&amp; document, bool createdByParser)
</span><span class="lines">@@ -109,10 +114,14 @@
</span><span class="cx">     m_styleSheetOwner.childrenChanged(*this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void HTMLStyleElement::dispatchPendingEvent(EventSender&lt;HTMLStyleElement&gt;&amp; eventSender)
</del><ins>+void HTMLStyleElement::dispatchPendingLoadEvents()
</ins><span class="cx"> {
</span><del>-    ASSERT_UNUSED(eventSender, &amp;eventSender == &amp;document().sharedEventSenders().styleLoadEventSender());
</del><ins>+    styleLoadEventSender().dispatchPendingEvents();
+}
</ins><span class="cx"> 
</span><ins>+void HTMLStyleElement::dispatchPendingEvent(StyleEventSender* eventSender)
+{
+    ASSERT_UNUSED(eventSender, eventSender == &amp;styleLoadEventSender());
</ins><span class="cx">     if (m_loadedSheet)
</span><span class="cx">         dispatchEvent(Event::create(eventNames().loadEvent, false, false));
</span><span class="cx">     else
</span><span class="lines">@@ -124,7 +133,7 @@
</span><span class="cx">     if (m_firedLoad)
</span><span class="cx">         return;
</span><span class="cx">     m_loadedSheet = !errorOccurred;
</span><del>-    document().sharedEventSenders().styleLoadEventSender().dispatchEventSoon(*this);
</del><ins>+    styleLoadEventSender().dispatchEventSoon(*this);
</ins><span class="cx">     m_firedLoad = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLStyleElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLStyleElement.h (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLStyleElement.h        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/html/HTMLStyleElement.h        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -32,6 +32,7 @@
</span><span class="cx"> class StyleSheet;
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename T&gt; class EventSender;
</span><ins>+typedef EventSender&lt;HTMLStyleElement&gt; StyleEventSender;
</ins><span class="cx"> 
</span><span class="cx"> class HTMLStyleElement final : public HTMLElement {
</span><span class="cx"> public:
</span><span class="lines">@@ -43,7 +44,8 @@
</span><span class="cx">     bool disabled() const;
</span><span class="cx">     void setDisabled(bool);
</span><span class="cx"> 
</span><del>-    void dispatchPendingEvent(EventSender&lt;HTMLStyleElement&gt;&amp;);
</del><ins>+    void dispatchPendingEvent(StyleEventSender*);
+    static void dispatchPendingLoadEvents();
</ins><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     HTMLStyleElement(const QualifiedName&amp;, Document&amp;, bool createdByParser);
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderImageLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ImageLoader.cpp (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ImageLoader.cpp        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/loader/ImageLoader.cpp        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -29,6 +29,7 @@
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;Element.h&quot;
</span><span class="cx"> #include &quot;Event.h&quot;
</span><ins>+#include &quot;EventSender.h&quot;
</ins><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;HTMLNames.h&quot;
</span><span class="cx"> #include &quot;HTMLObjectElement.h&quot;
</span><span class="lines">@@ -37,7 +38,6 @@
</span><span class="cx"> #include &quot;RenderImage.h&quot;
</span><span class="cx"> #include &quot;RenderSVGImage.h&quot;
</span><span class="cx"> #include &quot;SecurityOrigin.h&quot;
</span><del>-#include &quot;SharedEventSenders.h&quot;
</del><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(VIDEO)
</span><span class="lines">@@ -63,19 +63,22 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-EventSender&lt;ImageLoader&gt;&amp; ImageLoader::beforeLoadEventSender() const
</del><ins>+static ImageEventSender&amp; beforeLoadEventSender()
</ins><span class="cx"> {
</span><del>-    return m_element.document().sharedEventSenders().imageBeforeloadEventSender();
</del><ins>+    static NeverDestroyed&lt;ImageEventSender&gt; sender(eventNames().beforeloadEvent);
+    return sender;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EventSender&lt;ImageLoader&gt;&amp; ImageLoader::loadEventSender() const
</del><ins>+static ImageEventSender&amp; loadEventSender()
</ins><span class="cx"> {
</span><del>-    return m_element.document().sharedEventSenders().imageLoadEventSender();
</del><ins>+    static NeverDestroyed&lt;ImageEventSender&gt; sender(eventNames().loadEvent);
+    return sender;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><del>-EventSender&lt;ImageLoader&gt;&amp; ImageLoader::errorEventSender() const
</del><ins>+static ImageEventSender&amp; errorEventSender()
</ins><span class="cx"> {
</span><del>-    return m_element.document().sharedEventSenders().imageErrorEventSender();
</del><ins>+    static NeverDestroyed&lt;ImageEventSender&gt; sender(eventNames().errorEvent);
+    return sender;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> static inline bool pageIsBeingDismissed(Document&amp; document)
</span><span class="lines">@@ -376,10 +379,10 @@
</span><span class="cx">     element().deref();
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void ImageLoader::dispatchPendingEvent(EventSender&lt;ImageLoader&gt;&amp; eventSender)
</del><ins>+void ImageLoader::dispatchPendingEvent(ImageEventSender* eventSender)
</ins><span class="cx"> {
</span><del>-    ASSERT(&amp;eventSender == &amp;beforeLoadEventSender() || &amp;eventSender == &amp;loadEventSender() || &amp;eventSender == &amp;errorEventSender());
-    const AtomicString&amp; eventType = eventSender.eventType();
</del><ins>+    ASSERT(eventSender == &amp;beforeLoadEventSender() || eventSender == &amp;loadEventSender() || eventSender == &amp;errorEventSender());
+    const AtomicString&amp; eventType = eventSender-&gt;eventType();
</ins><span class="cx">     if (eventType == eventNames().beforeloadEvent)
</span><span class="cx">         dispatchPendingBeforeLoadEvent();
</span><span class="cx">     if (eventType == eventNames().loadEvent)
</span><span class="lines">@@ -445,6 +448,21 @@
</span><span class="cx">     updatedHasPendingEvent();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void ImageLoader::dispatchPendingBeforeLoadEvents()
+{
+    beforeLoadEventSender().dispatchPendingEvents();
+}
+
+void ImageLoader::dispatchPendingLoadEvents()
+{
+    loadEventSender().dispatchPendingEvents();
+}
+
+void ImageLoader::dispatchPendingErrorEvents()
+{
+    errorEventSender().dispatchPendingEvents();
+}
+
</ins><span class="cx"> void ImageLoader::elementDidMoveToNewDocument()
</span><span class="cx"> {
</span><span class="cx">     clearFailedLoadURL();
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderImageLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/ImageLoader.h (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/ImageLoader.h        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/loader/ImageLoader.h        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -35,6 +35,7 @@
</span><span class="cx"> class RenderImageResource;
</span><span class="cx"> 
</span><span class="cx"> template&lt;typename T&gt; class EventSender;
</span><ins>+typedef EventSender&lt;ImageLoader&gt; ImageEventSender;
</ins><span class="cx"> 
</span><span class="cx"> class ImageLoader : public CachedImageClient {
</span><span class="cx">     WTF_MAKE_FAST_ALLOCATED;
</span><span class="lines">@@ -64,11 +65,11 @@
</span><span class="cx">     bool hasPendingBeforeLoadEvent() const { return m_hasPendingBeforeLoadEvent; }
</span><span class="cx">     bool hasPendingActivity() const { return m_hasPendingLoadEvent || m_hasPendingErrorEvent; }
</span><span class="cx"> 
</span><del>-    void dispatchPendingEvent(EventSender&lt;ImageLoader&gt;&amp;);
</del><ins>+    void dispatchPendingEvent(ImageEventSender*);
</ins><span class="cx"> 
</span><del>-    EventSender&lt;ImageLoader&gt;&amp; beforeLoadEventSender() const;
-    EventSender&lt;ImageLoader&gt;&amp; loadEventSender() const;
-    EventSender&lt;ImageLoader&gt;&amp; errorEventSender() const;
</del><ins>+    static void dispatchPendingBeforeLoadEvents();
+    static void dispatchPendingLoadEvents();
+    static void dispatchPendingErrorEvents();
</ins><span class="cx"> 
</span><span class="cx"> protected:
</span><span class="cx">     explicit ImageLoader(Element&amp;);
</span></span></pre></div>
<a id="trunkSourceWebCorexmlparserXMLDocumentParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp (174277 => 174278)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp        2014-10-03 20:07:01 UTC (rev 174277)
+++ trunk/Source/WebCore/xml/parser/XMLDocumentParser.cpp        2014-10-03 20:08:32 UTC (rev 174278)
</span><span class="lines">@@ -120,6 +120,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     doWrite(source.toString());
</span><ins>+
+    // After parsing, go ahead and dispatch image beforeload events.
+    ImageLoader::dispatchPendingBeforeLoadEvents();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> void XMLDocumentParser::handleError(XMLErrors::ErrorType type, const char* m, TextPosition position)
</span></span></pre>
</div>
</div>

</body>
</html>