<!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>[180801] trunk/Source</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>Make ActiveDOMObject::canSuspend() pure virtual
https://bugs.webkit.org/show_bug.cgi?id=142096
&lt;rdar://problem/19923085&gt;

Reviewed by Andreas Kling.

Make ActiveDOMObject::canSuspend() pure virtual so that people at least
try to provide an implementation for it. The default implementation was
returning false unconditionally and thus was preventing pages from
entering the PageCache.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesbatteryBatteryManagercpp">trunk/Source/WebCore/Modules/battery/BatteryManager.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesbatteryBatteryManagerh">trunk/Source/WebCore/Modules/battery/BatteryManager.h</a></li>
<li><a href="#trunkSourceWebCoreModulesencryptedmediaMediaKeySessioncpp">trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesencryptedmediaMediaKeySessionh">trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h</a></li>
<li><a href="#trunkSourceWebCoreModulesgeolocationGeolocationcpp">trunk/Source/WebCore/Modules/geolocation/Geolocation.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesgeolocationGeolocationh">trunk/Source/WebCore/Modules/geolocation/Geolocation.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBDatabasecpp">trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBDatabaseh">trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBRequestcpp">trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBRequesth">trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactioncpp">trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesindexeddbIDBTransactionh">trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourcecpp">trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceMediaSourceh">trunk/Source/WebCore/Modules/mediasource/MediaSource.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBuffercpp">trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediasourceSourceBufferh">trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamMediaStreamTrackh">trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDTMFSendercpp">trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCDTMFSenderh">trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCPeerConnectioncpp">trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCPeerConnectionh">trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplcpp">trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplh">trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCStatsRequestImplcpp">trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCStatsRequestImplh">trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.h</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCVoidRequestImplcpp">trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesmediastreamRTCVoidRequestImplh">trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h</a></li>
<li><a href="#trunkSourceWebCoreModulesnotificationsNotificationcpp">trunk/Source/WebCore/Modules/notifications/Notification.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesnotificationsNotificationh">trunk/Source/WebCore/Modules/notifications/Notification.h</a></li>
<li><a href="#trunkSourceWebCoreModulesnotificationsNotificationCentercpp">trunk/Source/WebCore/Modules/notifications/NotificationCenter.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesnotificationsNotificationCenterh">trunk/Source/WebCore/Modules/notifications/NotificationCenter.h</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamcpp">trunk/Source/WebCore/Modules/streams/ReadableStream.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulesstreamsReadableStreamh">trunk/Source/WebCore/Modules/streams/ReadableStream.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioContextcpp">trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebaudioAudioContexth">trunk/Source/WebCore/Modules/webaudio/AudioContext.h</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketcpp">trunk/Source/WebCore/Modules/websockets/WebSocket.cpp</a></li>
<li><a href="#trunkSourceWebCoreModuleswebsocketsWebSocketh">trunk/Source/WebCore/Modules/websockets/WebSocket.h</a></li>
<li><a href="#trunkSourceWebCorecssFontLoadercpp">trunk/Source/WebCore/css/FontLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorecssFontLoaderh">trunk/Source/WebCore/css/FontLoader.h</a></li>
<li><a href="#trunkSourceWebCoredomActiveDOMObjecth">trunk/Source/WebCore/dom/ActiveDOMObject.h</a></li>
<li><a href="#trunkSourceWebCoredomDocumentEventQueuecpp">trunk/Source/WebCore/dom/DocumentEventQueue.cpp</a></li>
<li><a href="#trunkSourceWebCorefileapiFileReadercpp">trunk/Source/WebCore/fileapi/FileReader.cpp</a></li>
<li><a href="#trunkSourceWebCorefileapiFileReaderh">trunk/Source/WebCore/fileapi/FileReader.h</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementh">trunk/Source/WebCore/html/HTMLMediaElement.h</a></li>
<li><a href="#trunkSourceWebCorehtmlPublicURLManagercpp">trunk/Source/WebCore/html/PublicURLManager.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlPublicURLManagerh">trunk/Source/WebCore/html/PublicURLManager.h</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextBasecpp">trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlcanvasWebGLRenderingContextBaseh">trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h</a></li>
<li><a href="#trunkSourceWebCorepageDOMTimercpp">trunk/Source/WebCore/page/DOMTimer.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDOMTimerh">trunk/Source/WebCore/page/DOMTimer.h</a></li>
<li><a href="#trunkSourceWebCorepageEventSourcecpp">trunk/Source/WebCore/page/EventSource.cpp</a></li>
<li><a href="#trunkSourceWebCorepageEventSourceh">trunk/Source/WebCore/page/EventSource.h</a></li>
<li><a href="#trunkSourceWebCorepageSuspendableTimerh">trunk/Source/WebCore/page/SuspendableTimer.h</a></li>
<li><a href="#trunkSourceWebCoreworkersAbstractWorkercpp">trunk/Source/WebCore/workers/AbstractWorker.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersAbstractWorkerh">trunk/Source/WebCore/workers/AbstractWorker.h</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkercpp">trunk/Source/WebCore/workers/Worker.cpp</a></li>
<li><a href="#trunkSourceWebCoreworkersWorkerh">trunk/Source/WebCore/workers/Worker.h</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequestcpp">trunk/Source/WebCore/xml/XMLHttpRequest.cpp</a></li>
<li><a href="#trunkSourceWebCorexmlXMLHttpRequesth">trunk/Source/WebCore/xml/XMLHttpRequest.h</a></li>
<li><a href="#trunkSourceWebKitwinWebViewcpp">trunk/Source/WebKit/win/WebView.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/ChangeLog        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -1,3 +1,16 @@
</span><ins>+2015-02-27  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Make ActiveDOMObject::canSuspend() pure virtual
+        https://bugs.webkit.org/show_bug.cgi?id=142096
+        &lt;rdar://problem/19923085&gt;
+
+        Reviewed by Andreas Kling.
+
+        Make ActiveDOMObject::canSuspend() pure virtual so that people at least
+        try to provide an implementation for it. The default implementation was
+        returning false unconditionally and thus was preventing pages from
+        entering the PageCache.
+
</ins><span class="cx"> 2015-02-27  Commit Queue  &lt;commit-queue@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         Unreviewed, rolling out r180203 and r180210.
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesbatteryBatteryManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/battery/BatteryManager.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/battery/BatteryManager.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/battery/BatteryManager.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -88,6 +88,11 @@
</span><span class="cx">     m_batteryStatus = batteryStatus;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool BatteryManager::canSuspend() const
+{
+    return true;
+}
+
</ins><span class="cx"> void BatteryManager::suspend(ReasonForSuspension)
</span><span class="cx"> {
</span><span class="cx">     if (m_batteryController)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesbatteryBatteryManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/battery/BatteryManager.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/battery/BatteryManager.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/battery/BatteryManager.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -58,12 +58,6 @@
</span><span class="cx">     using RefCounted&lt;BatteryManager&gt;::ref;
</span><span class="cx">     using RefCounted&lt;BatteryManager&gt;::deref;
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject implementation.
-    virtual bool canSuspend() const override { return true; }
-    virtual void suspend(ReasonForSuspension) override;
-    virtual void resume() override;
-    virtual void stop() override;
-
</del><span class="cx"> protected:
</span><span class="cx">     virtual EventTargetData* eventTargetData() override { return &amp;m_eventTargetData; }
</span><span class="cx">     virtual EventTargetData&amp; ensureEventTargetData() override { return m_eventTargetData; }
</span><span class="lines">@@ -71,6 +65,12 @@
</span><span class="cx"> private:
</span><span class="cx">     explicit BatteryManager(Navigator*);
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    bool canSuspend() const override;
+    void suspend(ReasonForSuspension) override;
+    void resume() override;
+    void stop() override;
+
</ins><span class="cx">     // EventTarget implementation.
</span><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override { deref(); }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesencryptedmediaMediaKeySessioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -250,6 +250,27 @@
</span><span class="cx">     return pathByAppendingComponent(storageDirectory, origin-&gt;databaseIdentifier());
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool MediaKeySession::hasPendingActivity() const
+{
+    return (m_keys &amp;&amp; !isClosed()) || m_asyncEventQueue.hasPendingEvents();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void MediaKeySession::stop()
+{
+    close();
+}
+
+const char* MediaKeySession::activeDOMObjectName() const
+{
+    return &quot;MediaKeySession&quot;;
+}
+
+bool MediaKeySession::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
+}
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesencryptedmediaMediaKeySessionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/encryptedmedia/MediaKeySession.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -73,10 +73,6 @@
</span><span class="cx"> 
</span><span class="cx">     void enqueueEvent(PassRefPtr&lt;Event&gt;);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual bool hasPendingActivity() const override { return (m_keys &amp;&amp; !isClosed()) || m_asyncEventQueue.hasPendingEvents(); }
-    virtual void stop() override { close(); }
-
</del><span class="cx">     DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeyadded);
</span><span class="cx">     DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeyerror);
</span><span class="cx">     DEFINE_ATTRIBUTE_EVENT_LISTENER(webkitkeymessage);
</span><span class="lines">@@ -84,6 +80,9 @@
</span><span class="cx">     virtual EventTargetInterface eventTargetInterface() const override { return MediaKeySessionEventTargetInterfaceType; }
</span><span class="cx">     virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    bool hasPendingActivity() const override;
+
</ins><span class="cx"> protected:
</span><span class="cx">     MediaKeySession(ScriptExecutionContext*, MediaKeys*, const String&amp; keySystem);
</span><span class="cx">     void keyRequestTimerFired();
</span><span class="lines">@@ -116,7 +115,10 @@
</span><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override { deref(); }
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;MediaKeySession&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    bool canSuspend() const override;
+    const char* activeDOMObjectName() const override;
</ins><span class="cx"> };
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesgeolocationGeolocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/geolocation/Geolocation.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/geolocation/Geolocation.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/geolocation/Geolocation.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -293,6 +293,11 @@
</span><span class="cx">     m_pendingForPermissionNotifiers.clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* Geolocation::activeDOMObjectName() const
+{
+    return &quot;Geolocation&quot;;
+}
+
</ins><span class="cx"> Geoposition* Geolocation::lastPosition()
</span><span class="cx"> {
</span><span class="cx">     Page* page = this-&gt;page();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesgeolocationGeolocationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/geolocation/Geolocation.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/geolocation/Geolocation.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/geolocation/Geolocation.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -57,9 +57,6 @@
</span><span class="cx">     static Ref&lt;Geolocation&gt; create(ScriptExecutionContext*);
</span><span class="cx">     WEBCORE_EXPORT ~Geolocation();
</span><span class="cx"> 
</span><del>-    virtual bool canSuspend() const override;
-    virtual void suspend(ReasonForSuspension) override;
-    virtual void resume() override;
</del><span class="cx">     WEBCORE_EXPORT void resetAllGeolocationPermission();
</span><span class="cx">     Document* document() const;
</span><span class="cx">     WEBCORE_EXPORT Frame* frame() const;
</span><span class="lines">@@ -80,7 +77,11 @@
</span><span class="cx">     Geoposition* lastPosition();
</span><span class="cx"> 
</span><span class="cx">     // ActiveDOMObject
</span><del>-    virtual void stop() override;
</del><ins>+    void stop() override;
+    bool canSuspend() const override;
+    void suspend(ReasonForSuspension) override;
+    void resume() override;
+    const char* activeDOMObjectName() const override;
</ins><span class="cx"> 
</span><span class="cx">     bool isDenied() const { return m_allowGeolocation == No; }
</span><span class="cx"> 
</span><span class="lines">@@ -140,8 +141,6 @@
</span><span class="cx">     bool haveSuitableCachedPosition(PositionOptions*);
</span><span class="cx">     void makeCachedPositionCallbacks();
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;Geolocation&quot;; }
-
</del><span class="cx">     GeoNotifierSet m_oneShots;
</span><span class="cx">     Watchers m_watchers;
</span><span class="cx">     GeoNotifierSet m_pendingForPermissionNotifiers;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -361,6 +361,11 @@
</span><span class="cx">     m_contextStopped = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* IDBDatabase::activeDOMObjectName() const
+{
+    return &quot;IDBDatabase&quot;;
+}
+
</ins><span class="cx"> bool IDBDatabase::canSuspend() const
</span><span class="cx"> {
</span><span class="cx">     return m_isClosed;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBDatabaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBDatabase.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -80,9 +80,6 @@
</span><span class="cx">     virtual void onAbort(int64_t, PassRefPtr&lt;IDBDatabaseError&gt;);
</span><span class="cx">     virtual void onComplete(int64_t);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual bool hasPendingActivity() const override;
-
</del><span class="cx">     // EventTarget
</span><span class="cx">     virtual EventTargetInterface eventTargetInterface() const override final { return IDBDatabaseEventTargetInterfaceType; }
</span><span class="cx">     virtual ScriptExecutionContext* scriptExecutionContext() const override final { return ActiveDOMObject::scriptExecutionContext(); }
</span><span class="lines">@@ -108,12 +105,15 @@
</span><span class="cx">     using RefCounted&lt;IDBDatabase&gt;::ref;
</span><span class="cx">     using RefCounted&lt;IDBDatabase&gt;::deref;
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    bool hasPendingActivity() const override;
+
</ins><span class="cx"> private:
</span><span class="cx">     IDBDatabase(ScriptExecutionContext*, PassRefPtr&lt;IDBDatabaseBackend&gt;, PassRefPtr&lt;IDBDatabaseCallbacks&gt;);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
</del><ins>+    // ActiveDOMObject API.
</ins><span class="cx">     void stop() override;
</span><del>-    const char* activeDOMObjectName() const override { return &quot;IDBDatabase&quot;; }
</del><ins>+    const char* activeDOMObjectName() const override;
</ins><span class="cx">     bool canSuspend() const override;
</span><span class="cx"> 
</span><span class="cx">     // EventTarget
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBRequestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -448,6 +448,11 @@
</span><span class="cx">     return !m_hasPendingActivity;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* IDBRequest::activeDOMObjectName() const
+{
+    return &quot;IDBRequest&quot;;
+}
+
</ins><span class="cx"> EventTargetInterface IDBRequest::eventTargetInterface() const
</span><span class="cx"> {
</span><span class="cx">     return IDBRequestEventTargetInterfaceType;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBRequest.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -93,9 +93,6 @@
</span><span class="cx">     virtual void onSuccess();
</span><span class="cx">     virtual void onSuccess(PassRefPtr&lt;IDBKey&gt;, PassRefPtr&lt;IDBKey&gt; primaryKey, PassRefPtr&lt;SharedBuffer&gt;);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual bool hasPendingActivity() const override;
-
</del><span class="cx">     // EventTarget
</span><span class="cx">     virtual EventTargetInterface eventTargetInterface() const override;
</span><span class="cx">     virtual ScriptExecutionContext* scriptExecutionContext() const override final { return ActiveDOMObject::scriptExecutionContext(); }
</span><span class="lines">@@ -113,6 +110,9 @@
</span><span class="cx"> 
</span><span class="cx">     DOMRequestState* requestState() { return &amp;m_requestState; }
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    bool hasPendingActivity() const override;
+
</ins><span class="cx"> protected:
</span><span class="cx">     IDBRequest(ScriptExecutionContext*, PassRefPtr&lt;IDBAny&gt; source, IDBDatabaseBackend::TaskType, IDBTransaction*);
</span><span class="cx">     void enqueueEvent(PassRefPtr&lt;Event&gt;);
</span><span class="lines">@@ -130,12 +130,12 @@
</span><span class="cx">     bool m_requestAborted; // May be aborted by transaction then receive async onsuccess; ignore vs. assert.
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-    // ActiveDOMObject
</del><ins>+    // ActiveDOMObject API.
</ins><span class="cx">     void stop() override;
</span><del>-    const char* activeDOMObjectName() const override { return &quot;IDBRequest&quot;; }
</del><ins>+    const char* activeDOMObjectName() const override;
</ins><span class="cx">     bool canSuspend() const override;
</span><span class="cx"> 
</span><del>-    // EventTarget
</del><ins>+    // EventTarget API.
</ins><span class="cx">     virtual void refEventTarget() override final { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override final { deref(); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -408,6 +408,11 @@
</span><span class="cx">     abort(IGNORE_EXCEPTION);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* IDBTransaction::activeDOMObjectName() const
+{
+    return &quot;IDBTransaction&quot;;
+}
+
</ins><span class="cx"> void IDBTransaction::enqueueEvent(PassRefPtr&lt;Event&gt; event)
</span><span class="cx"> {
</span><span class="cx">     ASSERT_WITH_MESSAGE(m_state != Finished, &quot;A finished transaction tried to enqueue an event of type %s.&quot;, event-&gt;type().string().utf8().data());
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesindexeddbIDBTransactionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/indexeddb/IDBTransaction.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -111,7 +111,7 @@
</span><span class="cx">     virtual bool dispatchEvent(PassRefPtr&lt;Event&gt;) override;
</span><span class="cx"> 
</span><span class="cx">     // ActiveDOMObject
</span><del>-    virtual bool hasPendingActivity() const override;
</del><ins>+    bool hasPendingActivity() const override;
</ins><span class="cx"> 
</span><span class="cx">     using RefCounted&lt;IDBTransaction&gt;::ref;
</span><span class="cx">     using RefCounted&lt;IDBTransaction&gt;::deref;
</span><span class="lines">@@ -125,12 +125,12 @@
</span><span class="cx">     void registerOpenCursor(IDBCursor*);
</span><span class="cx">     void unregisterOpenCursor(IDBCursor*);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual bool canSuspend() const override;
-    virtual void stop() override;
-    virtual const char* activeDOMObjectName() const override { return &quot;IDBTransaction&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    bool canSuspend() const override;
+    void stop() override;
+    const char* activeDOMObjectName() const override;
</ins><span class="cx"> 
</span><del>-    // EventTarget
</del><ins>+    // EventTarget API.
</ins><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override { deref(); }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -814,6 +814,11 @@
</span><span class="cx">     return isClosed() &amp;&amp; !m_asyncEventQueue.hasPendingEvents();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* MediaSource::activeDOMObjectName() const
+{
+    return &quot;MediaSource&quot;;
+}
+
</ins><span class="cx"> void MediaSource::onReadyStateChange(const AtomicString&amp; oldState, const AtomicString&amp; newState)
</span><span class="cx"> {
</span><span class="cx">     if (isOpen()) {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceMediaSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/MediaSource.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/MediaSource.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediasource/MediaSource.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -99,11 +99,6 @@
</span><span class="cx">     void removeSourceBuffer(SourceBuffer*, ExceptionCode&amp;);
</span><span class="cx">     static bool isTypeSupported(const String&amp; type);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject interface
-    bool hasPendingActivity() const override;
-    void stop() override;
-    bool canSuspend() const override;
-
</del><span class="cx">     // EventTarget interface
</span><span class="cx">     virtual ScriptExecutionContext* scriptExecutionContext() const override final;
</span><span class="cx">     virtual void refEventTarget() override final { ref(); }
</span><span class="lines">@@ -116,10 +111,16 @@
</span><span class="cx">     using RefCounted&lt;MediaSourcePrivateClient&gt;::ref;
</span><span class="cx">     using RefCounted&lt;MediaSourcePrivateClient&gt;::deref;
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    bool hasPendingActivity() const override;
+
</ins><span class="cx"> protected:
</span><span class="cx">     explicit MediaSource(ScriptExecutionContext&amp;);
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;MediaSource&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    bool canSuspend() const override;
+    const char* activeDOMObjectName() const override;
</ins><span class="cx"> 
</span><span class="cx">     void onReadyStateChange(const AtomicString&amp; oldState, const AtomicString&amp; newState);
</span><span class="cx">     Vector&lt;PlatformTimeRanges&gt; activeRanges() const;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBuffercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBuffer.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -515,6 +515,11 @@
</span><span class="cx">     return !hasPendingActivity();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* SourceBuffer::activeDOMObjectName() const
+{
+    return &quot;SourceBuffer&quot;;
+}
+
</ins><span class="cx"> bool SourceBuffer::isRemoved() const
</span><span class="cx"> {
</span><span class="cx">     return !m_source;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediasourceSourceBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediasource/SourceBuffer.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -106,11 +106,6 @@
</span><span class="cx"> 
</span><span class="cx">     bool active() const { return m_active; }
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject interface
-    virtual bool hasPendingActivity() const override;
-    virtual void stop() override;
-    bool canSuspend() const override;
-
</del><span class="cx">     // EventTarget interface
</span><span class="cx">     virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
</span><span class="cx">     virtual EventTargetInterface eventTargetInterface() const override { return SourceBufferEventTargetInterfaceType; }
</span><span class="lines">@@ -129,6 +124,10 @@
</span><span class="cx">     void setShouldGenerateTimestamps(bool flag) { m_shouldGenerateTimestamps = flag; }
</span><span class="cx"> 
</span><span class="cx">     void rangeRemoval(const MediaTime&amp;, const MediaTime&amp;);
</span><ins>+
+    // ActiveDOMObject API.
+    bool hasPendingActivity() const override;
+
</ins><span class="cx"> protected:
</span><span class="cx">     // EventTarget interface
</span><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="lines">@@ -137,7 +136,10 @@
</span><span class="cx"> private:
</span><span class="cx">     SourceBuffer(Ref&lt;SourceBufferPrivate&gt;&amp;&amp;, MediaSource*);
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;SourceBuffer&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     // SourceBufferPrivateClient
</span><span class="cx">     virtual void sourceBufferPrivateDidEndStream(SourceBufferPrivate*, const WTF::AtomicString&amp;) override;
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -288,6 +288,17 @@
</span><span class="cx">     m_privateTrack-&gt;stop(MediaStreamTrackPrivate::StopTrackOnly);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* MediaStreamTrack::activeDOMObjectName() const
+{
+    return &quot;MediaStreamTrack&quot;;
+}
+
+bool MediaStreamTrack::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void MediaStreamTrack::scheduleEventDispatch(PassRefPtr&lt;Event&gt; event)
</span><span class="cx"> {
</span><span class="cx">     {
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamMediaStreamTrackh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/MediaStreamTrack.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -112,14 +112,14 @@
</span><span class="cx">     void setSource(PassRefPtr&lt;MediaStreamSource&gt;);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><del>-
</del><span class="cx">     void configureTrackRendering();
</span><span class="cx">     void trackDidEnd();
</span><span class="cx">     void scheduleEventDispatch(PassRefPtr&lt;Event&gt;);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual void stop() override final;
-    virtual const char* activeDOMObjectName() const override { return &quot;MediaStreamTrack&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override final;
+    const char* activeDOMObjectName() const override final;
+    bool canSuspend() const override final;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget
</span><span class="cx">     virtual void refEventTarget() override final { ref(); }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDTMFSendercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -131,9 +131,20 @@
</span><span class="cx"> void RTCDTMFSender::stop()
</span><span class="cx"> {
</span><span class="cx">     m_stopped = true;
</span><del>-    m_handler-&gt;setClient(0);
</del><ins>+    m_handler-&gt;setClient(nullptr);
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* RTCDTMFSender::activeDOMObjectName() const
+{
+    return &quot;RTCDTMFSender&quot;;
+}
+
+bool RTCDTMFSender::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void RTCDTMFSender::scheduleDispatchEvent(PassRefPtr&lt;Event&gt; event)
</span><span class="cx"> {
</span><span class="cx">     m_scheduledEvents.append(event);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCDTMFSenderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCDTMFSender.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -62,16 +62,16 @@
</span><span class="cx">     virtual EventTargetInterface eventTargetInterface() const override { return RTCDTMFSenderEventTargetInterfaceType; }
</span><span class="cx">     virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual void stop() override;
-
</del><span class="cx">     using RefCounted&lt;RTCDTMFSender&gt;::ref;
</span><span class="cx">     using RefCounted&lt;RTCDTMFSender&gt;::deref;
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     RTCDTMFSender(ScriptExecutionContext*, PassRefPtr&lt;MediaStreamTrack&gt;, std::unique_ptr&lt;RTCDTMFSenderHandler&gt;);
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;RTCDTMFSender&quot;; }
</del><ins>+    // ActiveDOMObject
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     void scheduleDispatchEvent(PassRefPtr&lt;Event&gt;);
</span><span class="cx">     void scheduledEventTimerFired();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -690,6 +690,17 @@
</span><span class="cx">         (*i)-&gt;stop();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* RTCPeerConnection::activeDOMObjectName() const
+{
+    return &quot;RTCPeerConnection&quot;;
+}
+
+bool RTCPeerConnection::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void RTCPeerConnection::didAddOrRemoveTrack()
</span><span class="cx"> {
</span><span class="cx">     negotiationNeeded();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCPeerConnectionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCPeerConnection.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -125,9 +125,6 @@
</span><span class="cx">     virtual EventTargetInterface eventTargetInterface() const override { return RTCPeerConnectionEventTargetInterfaceType; }
</span><span class="cx">     virtual ScriptExecutionContext* scriptExecutionContext() const override { return ActiveDOMObject::scriptExecutionContext(); }
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual void stop() override;
-
</del><span class="cx">     // MediaStream::Observer
</span><span class="cx">     virtual void didAddOrRemoveTrack() override;
</span><span class="cx"> 
</span><span class="lines">@@ -146,7 +143,10 @@
</span><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override { deref(); }
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;RTCPeerConnection&quot;; }
</del><ins>+    // ActiveDOMObject
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     void changeSignalingState(SignalingState);
</span><span class="cx">     void changeIceGatheringState(IceGatheringState);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -84,6 +84,17 @@
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* RTCSessionDescriptionRequestImpl::activeDOMObjectName() const
+{
+    return &quot;RTCSessionDescriptionRequestImpl&quot;;
+}
+
+bool RTCSessionDescriptionRequestImpl::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void RTCSessionDescriptionRequestImpl::clear()
</span><span class="cx"> {
</span><span class="cx">     m_successCallback.clear();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCSessionDescriptionRequestImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCSessionDescriptionRequestImpl.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -51,13 +51,13 @@
</span><span class="cx">     virtual void requestSucceeded(PassRefPtr&lt;RTCSessionDescriptionDescriptor&gt;) override;
</span><span class="cx">     virtual void requestFailed(const String&amp; error) override;
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual void stop() override;
-
</del><span class="cx"> private:
</span><span class="cx">     RTCSessionDescriptionRequestImpl(ScriptExecutionContext*, PassRefPtr&lt;RTCSessionDescriptionCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;);
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;RTCSessionDescriptionRequestImpl&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     void clear();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCStatsRequestImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -91,6 +91,17 @@
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* RTCStatsRequestImpl::activeDOMObjectName() const
+{
+    return &quot;RTCStatsRequestImpl&quot;;
+}
+
+bool RTCStatsRequestImpl::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void RTCStatsRequestImpl::clear()
</span><span class="cx"> {
</span><span class="cx">     m_successCallback.clear();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCStatsRequestImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCStatsRequestImpl.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -51,13 +51,13 @@
</span><span class="cx">     virtual void requestSucceeded(PassRefPtr&lt;RTCStatsResponseBase&gt;) override;
</span><span class="cx">     virtual void requestFailed(const String&amp;) override;
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual void stop() override;
-
</del><span class="cx"> private:
</span><span class="cx">     RTCStatsRequestImpl(ScriptExecutionContext*, PassRefPtr&lt;RTCStatsCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;, PassRefPtr&lt;MediaStreamTrackPrivate&gt;);
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;RTCStatsRequestImpl&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     void clear();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCVoidRequestImplcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -81,6 +81,17 @@
</span><span class="cx">     clear();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* RTCVoidRequestImpl::activeDOMObjectName() const
+{
+    return &quot;RTCVoidRequestImpl&quot;;
+}
+
+bool RTCVoidRequestImpl::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void RTCVoidRequestImpl::clear()
</span><span class="cx"> {
</span><span class="cx">     m_successCallback.clear();
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesmediastreamRTCVoidRequestImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/mediastream/RTCVoidRequestImpl.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -50,16 +50,16 @@
</span><span class="cx">     virtual void requestSucceeded();
</span><span class="cx">     virtual void requestFailed(const String&amp; error);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual void stop() override;
-
</del><span class="cx"> private:
</span><span class="cx">     RTCVoidRequestImpl(ScriptExecutionContext*, PassRefPtr&lt;VoidCallback&gt;, PassRefPtr&lt;RTCPeerConnectionErrorCallback&gt;);
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;RTCVoidRequestImpl&quot;; }
-
</del><span class="cx">     void clear();
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
+
</ins><span class="cx">     RefPtr&lt;VoidCallback&gt; m_successCallback;
</span><span class="cx">     RefPtr&lt;RTCPeerConnectionErrorCallback&gt; m_errorCallback;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnotificationsNotificationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/notifications/Notification.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/notifications/Notification.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/notifications/Notification.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -170,6 +170,17 @@
</span><span class="cx">         m_notificationCenter-&gt;client()-&gt;notificationObjectDestroyed(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* Notification::activeDOMObjectName() const
+{
+    return &quot;Notification&quot;;
+}
+
+bool Notification::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void Notification::finalize()
</span><span class="cx"> {
</span><span class="cx">     if (m_state == Closed)
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnotificationsNotificationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/notifications/Notification.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/notifications/Notification.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/notifications/Notification.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -146,15 +146,15 @@
</span><span class="cx"> 
</span><span class="cx">     void setBody(const String&amp; body) { m_body = body; }
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject interface
-    virtual void contextDestroyed() override;
</del><ins>+    // ActiveDOMObject API.
+    void contextDestroyed() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><del>-    // EventTarget interface
</del><ins>+    // EventTarget API.
</ins><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override { deref(); }
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;Notification&quot;; }
-
</del><span class="cx">     void startLoadingIcon();
</span><span class="cx">     void finishLoadingIcon();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnotificationsNotificationCentercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/notifications/NotificationCenter.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/notifications/NotificationCenter.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/notifications/NotificationCenter.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -102,9 +102,20 @@
</span><span class="cx">         return;
</span><span class="cx">     m_client-&gt;cancelRequestsForPermission(scriptExecutionContext());
</span><span class="cx">     m_client-&gt;clearNotifications(scriptExecutionContext());
</span><del>-    m_client = 0;
</del><ins>+    m_client = nullptr;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* NotificationCenter::activeDOMObjectName() const
+{
+    return &quot;NotificationCenter&quot;;
+}
+
+bool NotificationCenter::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> void NotificationCenter::requestTimedOut(NotificationCenter::NotificationRequestCallback* request)
</span><span class="cx"> {
</span><span class="cx">     m_callbacks.remove(request);
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesnotificationsNotificationCenterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/notifications/NotificationCenter.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/notifications/NotificationCenter.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/notifications/NotificationCenter.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -73,9 +73,10 @@
</span><span class="cx"> private:
</span><span class="cx">     NotificationCenter(ScriptExecutionContext*, NotificationClient*);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual void stop() override;
-    virtual const char* activeDOMObjectName() const override { return &quot;NotificationCenter&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     class NotificationRequestCallback : public RefCounted&lt;NotificationRequestCallback&gt; {
</span><span class="cx">     public:
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ReadableStream.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -90,6 +90,17 @@
</span><span class="cx">     notImplemented();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* ReadableStream::activeDOMObjectName() const
+{
+    return &quot;ReadableStream&quot;;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool ReadableStream::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
+}
+
</ins><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesstreamsReadableStreamh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/streams/ReadableStream.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/streams/ReadableStream.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/streams/ReadableStream.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -58,8 +58,6 @@
</span><span class="cx">     static Ref&lt;ReadableStream&gt; create(ScriptExecutionContext&amp;, Ref&lt;ReadableStreamSource&gt;&amp;&amp;);
</span><span class="cx">     virtual ~ReadableStream();
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;ReadableStream&quot;; }
-
</del><span class="cx">     // JS API implementation.
</span><span class="cx">     String state() const;
</span><span class="cx"> 
</span><span class="lines">@@ -70,6 +68,10 @@
</span><span class="cx"> private:
</span><span class="cx">     ReadableStream(ScriptExecutionContext&amp;, Ref&lt;ReadableStreamSource&gt;&amp;&amp;);
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
+
</ins><span class="cx">     State m_state;
</span><span class="cx">     Ref&lt;ReadableStreamSource&gt; m_source;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioContextcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -313,6 +313,17 @@
</span><span class="cx">     callOnMainThread(stopDispatch, this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+bool AudioContext::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
+const char* AudioContext::activeDOMObjectName() const
+{
+    return &quot;AudioContext&quot;;
+}
+
</ins><span class="cx"> Document* AudioContext::document() const
</span><span class="cx"> {
</span><span class="cx">     ASSERT(m_scriptExecutionContext);
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebaudioAudioContexth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/webaudio/AudioContext.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/webaudio/AudioContext.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/webaudio/AudioContext.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -85,9 +85,6 @@
</span><span class="cx">     
</span><span class="cx">     bool isOfflineContext() { return m_isOfflineContext; }
</span><span class="cx"> 
</span><del>-    // Document notification
-    virtual void stop() override;
-
</del><span class="cx">     Document* document() const; // ASSERTs if document no longer exists.
</span><span class="cx"> 
</span><span class="cx">     AudioDestinationNode* destination() { return m_destinationNode.get(); }
</span><span class="lines">@@ -264,8 +261,6 @@
</span><span class="cx">     static bool isSampleRateRangeGood(float sampleRate);
</span><span class="cx">     
</span><span class="cx"> private:
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;AudioContext&quot;; }
-
</del><span class="cx">     void constructCommon();
</span><span class="cx"> 
</span><span class="cx">     void lazyInitialize();
</span><span class="lines">@@ -296,6 +291,11 @@
</span><span class="cx">     void refNode(AudioNode*);
</span><span class="cx">     void derefNode(AudioNode*);
</span><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    bool canSuspend() const override;
+    const char* activeDOMObjectName() const override;
+
</ins><span class="cx">     // When the context goes away, there might still be some sources which haven't finished playing.
</span><span class="cx">     // Make sure to dereference them here.
</span><span class="cx">     void derefUnfinishedSourceNodes();
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -489,6 +489,11 @@
</span><span class="cx">         ActiveDOMObject::unsetPendingActivity(this);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* WebSocket::activeDOMObjectName() const
+{
+    return &quot;WebSocket&quot;;
+}
+
</ins><span class="cx"> void WebSocket::didConnect()
</span><span class="cx"> {
</span><span class="cx">     LOG(Network, &quot;WebSocket %p didConnect()&quot;, this);
</span></span></pre></div>
<a id="trunkSourceWebCoreModuleswebsocketsWebSocketh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/websockets/WebSocket.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/websockets/WebSocket.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/Modules/websockets/WebSocket.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -113,13 +113,13 @@
</span><span class="cx"> private:
</span><span class="cx">     explicit WebSocket(ScriptExecutionContext&amp;);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject functions.
-    virtual void contextDestroyed() override;
-    virtual bool canSuspend() const override;
-    virtual void suspend(ReasonForSuspension) override;
-    virtual void resume() override;
-    virtual void stop() override;
-    virtual const char* activeDOMObjectName() const override { return &quot;WebSocket&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void contextDestroyed() override;
+    bool canSuspend() const override;
+    void suspend(ReasonForSuspension) override;
+    void resume() override;
+    void stop() override;
+    const char* activeDOMObjectName() const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override { deref(); }
</span></span></pre></div>
<a id="trunkSourceWebCorecssFontLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/FontLoader.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/FontLoader.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/css/FontLoader.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -156,6 +156,16 @@
</span><span class="cx">     loadingDone();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* FontLoader::activeDOMObjectName() const
+{
+    return &quot;FontLoader&quot;;
+}
+
+bool FontLoader::canSuspend() const
+{
+    return !m_numLoadingFromCSS &amp;&amp; !m_numLoadingFromJS;
+}
+
</ins><span class="cx"> void FontLoader::scheduleEvent(PassRefPtr&lt;Event&gt; event)
</span><span class="cx"> {
</span><span class="cx">     m_pendingEvents.append(event);
</span></span></pre></div>
<a id="trunkSourceWebCorecssFontLoaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/FontLoader.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/FontLoader.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/css/FontLoader.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -85,8 +85,6 @@
</span><span class="cx">     void loadError(CSSFontFaceRule*, CSSFontFaceSource*);
</span><span class="cx">     void loadingDone();
</span><span class="cx"> 
</span><del>-    virtual bool canSuspend() const override { return !m_numLoadingFromCSS &amp;&amp; !m_numLoadingFromJS; }
-
</del><span class="cx"> private:
</span><span class="cx">     FontLoader(Document*);
</span><span class="cx"> 
</span><span class="lines">@@ -95,7 +93,9 @@
</span><span class="cx">     virtual EventTargetData* eventTargetData() override;
</span><span class="cx">     virtual EventTargetData&amp; ensureEventTargetData() override;
</span><span class="cx"> 
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;FontLoader&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     void pendingEventsTimerFired() { firePendingEvents(); }
</span><span class="cx">     void scheduleEvent(PassRefPtr&lt;Event&gt;);
</span></span></pre></div>
<a id="trunkSourceWebCoredomActiveDOMObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/ActiveDOMObject.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/ActiveDOMObject.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/dom/ActiveDOMObject.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> 
</span><span class="cx">     // These three functions must not have a side effect of creating or destroying
</span><span class="cx">     // any ActiveDOMObject. That means they must not result in calls to arbitrary JavaScript.
</span><del>-    virtual bool canSuspend() const;
</del><ins>+    virtual bool canSuspend() const = 0; // Returning false in canSuspend() will prevent the page from entering the PageCache.
</ins><span class="cx">     virtual void suspend(ReasonForSuspension);
</span><span class="cx">     virtual void resume();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoredomDocumentEventQueuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/dom/DocumentEventQueue.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/dom/DocumentEventQueue.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/dom/DocumentEventQueue.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -51,6 +51,8 @@
</span><span class="cx">         m_eventQueue.pendingEventTimerFired();
</span><span class="cx">     }
</span><span class="cx"> 
</span><ins>+    const char* activeDOMObjectName() const override { return &quot;DocumentEventQueueTimer&quot;; }
+
</ins><span class="cx">     DocumentEventQueue&amp; m_eventQueue;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiFileReadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/FileReader.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/FileReader.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/fileapi/FileReader.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -71,6 +71,11 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* FileReader::activeDOMObjectName() const
+{
+    return &quot;FileReader&quot;;
+}
+
</ins><span class="cx"> void FileReader::stop()
</span><span class="cx"> {
</span><span class="cx">     terminate();
</span></span></pre></div>
<a id="trunkSourceWebCorefileapiFileReaderh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/fileapi/FileReader.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/fileapi/FileReader.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/fileapi/FileReader.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -102,10 +102,10 @@
</span><span class="cx"> private:
</span><span class="cx">     explicit FileReader(ScriptExecutionContext&amp;);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual const char* activeDOMObjectName() const override { return &quot;FileReader&quot;; }
-    virtual bool canSuspend() const override;
-    virtual void stop() override;
</del><ins>+    // ActiveDOMObject API.
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
+    void stop() override;
</ins><span class="cx"> 
</span><span class="cx">     // EventTarget
</span><span class="cx">     virtual void refEventTarget() override { ref(); }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -4713,6 +4713,11 @@
</span><span class="cx">     return true; 
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* HTMLMediaElement::activeDOMObjectName() const
+{
+    return &quot;HTMLMediaElement&quot;;
+}
+
</ins><span class="cx"> void HTMLMediaElement::stop()
</span><span class="cx"> {
</span><span class="cx">     LOG(Media, &quot;HTMLMediaElement::stop(%p)&quot;, this);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/html/HTMLMediaElement.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -521,12 +521,12 @@
</span><span class="cx">     virtual void didBecomeFullscreenElement() override;
</span><span class="cx">     virtual void willStopBeingFullscreenElement() override;
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject functions.
-    virtual const char* activeDOMObjectName() const override { return &quot;HTMLMediaElement&quot;; }
-    virtual bool canSuspend() const override;
-    virtual void suspend(ReasonForSuspension) override;
-    virtual void resume() override;
-    virtual void stop() override;
</del><ins>+    // ActiveDOMObject API.
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
+    void suspend(ReasonForSuspension) override;
+    void resume() override;
+    void stop() override;
</ins><span class="cx">     
</span><span class="cx">     virtual void mediaVolumeDidChange() override;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlPublicURLManagercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/PublicURLManager.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/PublicURLManager.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/html/PublicURLManager.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -86,4 +86,9 @@
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* PublicURLManager::activeDOMObjectName() const
+{
+    return &quot;PublicURLManager&quot;;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlPublicURLManagerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/PublicURLManager.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/PublicURLManager.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/html/PublicURLManager.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -50,12 +50,11 @@
</span><span class="cx">     void registerURL(SecurityOrigin*, const URL&amp;, URLRegistrable*);
</span><span class="cx">     void revoke(const URL&amp;);
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject interface.
-    virtual void stop() override;
-    virtual bool canSuspend() const override;
-
</del><span class="cx"> private:
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;PublicURLManager&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    bool canSuspend() const override;
+    const char* activeDOMObjectName() const override;
</ins><span class="cx">     
</span><span class="cx">     typedef HashSet&lt;String&gt; URLSet;
</span><span class="cx">     typedef HashMap&lt;URLRegistry*, URLSet &gt; RegistryURLMap;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -3934,6 +3934,17 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* WebGLRenderingContextBase::activeDOMObjectName() const
+{
+    return &quot;WebGLRenderingContext&quot;;
+}
+
+bool WebGLRenderingContextBase::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> WebGLGetInfo WebGLRenderingContextBase::getBooleanParameter(GC3Denum pname)
</span><span class="cx"> {
</span><span class="cx">     GC3Dboolean value = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlcanvasWebGLRenderingContextBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -404,7 +404,8 @@
</span><span class="cx">     // ActiveDOMObject
</span><span class="cx">     virtual bool hasPendingActivity() const override;
</span><span class="cx">     virtual void stop() override;
</span><del>-    virtual const char* activeDOMObjectName() const override { return &quot;WebGLRenderingContext&quot;; }
</del><ins>+    virtual const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     void addSharedObject(WebGLSharedObject*);
</span><span class="cx">     void addContextObject(WebGLContextObject*);
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMTimercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMTimer.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMTimer.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/page/DOMTimer.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -520,4 +520,9 @@
</span><span class="cx">     return fireTime;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* DOMTimer::activeDOMObjectName() const
+{
+    return &quot;DOMTimer&quot;;
+}
+
</ins><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorepageDOMTimerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DOMTimer.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DOMTimer.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/page/DOMTimer.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -79,6 +79,9 @@
</span><span class="cx">         virtual void didStop() override;
</span><span class="cx">         virtual double alignedFireTime(double) const override;
</span><span class="cx"> 
</span><ins>+        // ActiveDOMObject API.
+        const char* activeDOMObjectName() const override;
+
</ins><span class="cx">         enum TimerThrottleState {
</span><span class="cx">             Undetermined,
</span><span class="cx">             ShouldThrottle,
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventSourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventSource.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventSource.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/page/EventSource.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -416,6 +416,17 @@
</span><span class="cx">     close();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* EventSource::activeDOMObjectName() const
+{
+    return &quot;EventSource&quot;;
+}
+
+bool EventSource::canSuspend() const
+{
+    // FIXME: We should try and do better here.
+    return false;
+}
+
</ins><span class="cx"> PassRefPtr&lt;MessageEvent&gt; EventSource::createMessageEvent()
</span><span class="cx"> {
</span><span class="cx">     RefPtr&lt;MessageEvent&gt; event = MessageEvent::create();
</span></span></pre></div>
<a id="trunkSourceWebCorepageEventSourceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/EventSource.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/EventSource.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/page/EventSource.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -91,8 +91,10 @@
</span><span class="cx">     virtual void didFailAccessControlCheck(const ResourceError&amp;) override;
</span><span class="cx">     virtual void didFailRedirectCheck() override;
</span><span class="cx"> 
</span><del>-    virtual void stop() override;
-    virtual const char* activeDOMObjectName() const override { return &quot;EventSource&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    void stop() override;
+    const char* activeDOMObjectName() const override;
+    bool canSuspend() const override;
</ins><span class="cx"> 
</span><span class="cx">     void connect();
</span><span class="cx">     void networkRequestEnded();
</span></span></pre></div>
<a id="trunkSourceWebCorepageSuspendableTimerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/SuspendableTimer.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/SuspendableTimer.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/page/SuspendableTimer.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -57,13 +57,12 @@
</span><span class="cx"> private:
</span><span class="cx">     virtual void fired() override = 0;
</span><span class="cx"> 
</span><del>-    // ActiveDOMObject
-    virtual bool hasPendingActivity() const final override;
-    virtual void stop() final override;
-    virtual bool canSuspend() const final override;
-    virtual void suspend(ReasonForSuspension) final override;
-    virtual void resume() final override;
-    virtual const char* activeDOMObjectName() const override { return &quot;SuspendableTimer&quot;; }
</del><ins>+    // ActiveDOMObject API.
+    bool hasPendingActivity() const override final;
+    void stop() override final;
+    bool canSuspend() const override final;
+    void suspend(ReasonForSuspension) override final;
+    void resume() override final;
</ins><span class="cx"> 
</span><span class="cx">     bool m_suspended;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersAbstractWorkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/AbstractWorker.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/AbstractWorker.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/workers/AbstractWorker.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -44,11 +44,6 @@
</span><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span><del>-AbstractWorker::AbstractWorker(ScriptExecutionContext&amp; context)
-    : ActiveDOMObject(&amp;context)
-{
-}
-
</del><span class="cx"> AbstractWorker::~AbstractWorker()
</span><span class="cx"> {
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersAbstractWorkerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/AbstractWorker.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/AbstractWorker.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/workers/AbstractWorker.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -43,11 +43,8 @@
</span><span class="cx"> 
</span><span class="cx">     class URL;
</span><span class="cx"> 
</span><del>-    class AbstractWorker : public RefCounted&lt;AbstractWorker&gt;, public ActiveDOMObject, public EventTargetWithInlineData {
</del><ins>+    class AbstractWorker : public RefCounted&lt;AbstractWorker&gt;, public EventTargetWithInlineData {
</ins><span class="cx">     public:
</span><del>-        // EventTarget APIs
-        virtual ScriptExecutionContext* scriptExecutionContext() const override final { return ActiveDOMObject::scriptExecutionContext(); }
-
</del><span class="cx">         DEFINE_ATTRIBUTE_EVENT_LISTENER(error);
</span><span class="cx"> 
</span><span class="cx">         using RefCounted&lt;AbstractWorker&gt;::ref;
</span><span class="lines">@@ -56,7 +53,7 @@
</span><span class="cx">         virtual ~AbstractWorker();
</span><span class="cx"> 
</span><span class="cx">     protected:
</span><del>-        explicit AbstractWorker(ScriptExecutionContext&amp;);
</del><ins>+        AbstractWorker() = default;
</ins><span class="cx"> 
</span><span class="cx">         // Helper function that converts a URL to an absolute URL and checks the result for validity.
</span><span class="cx">         URL resolveURL(const String&amp; url, ExceptionCode&amp; ec);
</span><span class="lines">@@ -65,8 +62,6 @@
</span><span class="cx">     private:
</span><span class="cx">         virtual void refEventTarget() override final { ref(); }
</span><span class="cx">         virtual void derefEventTarget() override final { deref(); }
</span><del>-
-        virtual const char* activeDOMObjectName() const override { return &quot;AbstractWorker&quot;; }
</del><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/Worker.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/Worker.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/workers/Worker.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> inline Worker::Worker(ScriptExecutionContext&amp; context)
</span><del>-    : AbstractWorker(context)
</del><ins>+    : ActiveDOMObject(&amp;context)
</ins><span class="cx">     , m_contextProxy(WorkerGlobalScopeProxy::create(this))
</span><span class="cx"> {
</span><span class="cx">     if (!allWorkers) {
</span><span class="lines">@@ -132,6 +132,11 @@
</span><span class="cx">     return false;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* Worker::activeDOMObjectName() const
+{
+    return &quot;Worker&quot;;
+}
+
</ins><span class="cx"> void Worker::stop()
</span><span class="cx"> {
</span><span class="cx">     terminate();
</span></span></pre></div>
<a id="trunkSourceWebCoreworkersWorkerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/workers/Worker.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/workers/Worker.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/workers/Worker.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> 
</span><span class="cx">     typedef int ExceptionCode;
</span><span class="cx"> 
</span><del>-    class Worker final : public AbstractWorker, private WorkerScriptLoaderClient {
</del><ins>+    class Worker final : public AbstractWorker, public ActiveDOMObject, private WorkerScriptLoaderClient {
</ins><span class="cx">     public:
</span><span class="cx">         static PassRefPtr&lt;Worker&gt; create(ScriptExecutionContext&amp;, const String&amp; url, ExceptionCode&amp;);
</span><span class="cx">         virtual ~Worker();
</span><span class="lines">@@ -58,13 +58,15 @@
</span><span class="cx">         void postMessage(PassRefPtr&lt;SerializedScriptValue&gt; message, MessagePort*, ExceptionCode&amp;);
</span><span class="cx"> 
</span><span class="cx">         void terminate();
</span><del>-
-        virtual bool canSuspend() const override;
-        virtual void stop() override;
-        virtual bool hasPendingActivity() const override;
</del><span class="cx">     
</span><span class="cx">         DEFINE_ATTRIBUTE_EVENT_LISTENER(message);
</span><span class="cx"> 
</span><ins>+        // EventTarget API.
+        virtual ScriptExecutionContext* scriptExecutionContext() const override final { return ActiveDOMObject::scriptExecutionContext(); }
+
+        // ActiveDOMObject API.
+        bool hasPendingActivity() const override;
+
</ins><span class="cx">     private:
</span><span class="cx">         explicit Worker(ScriptExecutionContext&amp;);
</span><span class="cx"> 
</span><span class="lines">@@ -74,6 +76,11 @@
</span><span class="cx">         virtual void didReceiveResponse(unsigned long identifier, const ResourceResponse&amp;) override;
</span><span class="cx">         virtual void notifyFinished() override;
</span><span class="cx"> 
</span><ins>+        // ActiveDOMObject API.
+        bool canSuspend() const override;
+        void stop() override;
+        const char* activeDOMObjectName() const override;
+
</ins><span class="cx">         friend void networkStateChanged(bool isOnLine);
</span><span class="cx"> 
</span><span class="cx">         RefPtr&lt;WorkerScriptLoader&gt; m_scriptLoader;
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequestcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -1256,6 +1256,11 @@
</span><span class="cx">     return !m_loader;
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+const char* XMLHttpRequest::activeDOMObjectName() const
+{
+    return &quot;XMLHttpRequest&quot;;
+}
+
</ins><span class="cx"> void XMLHttpRequest::suspend(ReasonForSuspension)
</span><span class="cx"> {
</span><span class="cx">     m_progressEventThrottle.suspend();
</span></span></pre></div>
<a id="trunkSourceWebCorexmlXMLHttpRequesth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/xml/XMLHttpRequest.h (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/xml/XMLHttpRequest.h        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebCore/xml/XMLHttpRequest.h        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -162,12 +162,12 @@
</span><span class="cx">     explicit XMLHttpRequest(ScriptExecutionContext&amp;);
</span><span class="cx"> 
</span><span class="cx">     // ActiveDOMObject
</span><del>-    virtual void contextDestroyed() override;
-    virtual bool canSuspend() const override;
-    virtual void suspend(ReasonForSuspension) override;
-    virtual void resume() override;
-    virtual void stop() override;
-    virtual const char* activeDOMObjectName() const override { return &quot;XMLHttpRequest&quot;; }
</del><ins>+    void contextDestroyed() override;
+    bool canSuspend() const override;
+    void suspend(ReasonForSuspension) override;
+    void resume() override;
+    void stop() override;
+    const char* activeDOMObjectName() const override;
</ins><span class="cx"> 
</span><span class="cx">     virtual void refEventTarget() override { ref(); }
</span><span class="cx">     virtual void derefEventTarget() override { deref(); }
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebView.cpp (180800 => 180801)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebView.cpp        2015-02-28 00:48:02 UTC (rev 180800)
+++ trunk/Source/WebKit/win/WebView.cpp        2015-02-28 01:05:21 UTC (rev 180801)
</span><span class="lines">@@ -1264,15 +1264,20 @@
</span><span class="cx">     ::GetWindowRect(m_viewWindow, rect);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-class WindowCloseTimer : public WebCore::SuspendableTimer {
</del><ins>+class WindowCloseTimer final : public WebCore::SuspendableTimer {
</ins><span class="cx"> public:
</span><span class="cx">     static WindowCloseTimer* create(WebView*);
</span><span class="cx"> 
</span><span class="cx"> private:
</span><span class="cx">     WindowCloseTimer(ScriptExecutionContext&amp;, WebView*);
</span><del>-    virtual void contextDestroyed();
-    virtual void fired();
</del><span class="cx"> 
</span><ins>+    // ActiveDOMObject API.
+    void contextDestroyed() override;
+    const char* activeDOMObjectName() const override { return &quot;WindowCloseTimer&quot;; }
+
+    // SuspendableTimer API.
+    void fired() override;
+
</ins><span class="cx">     WebView* m_webView;
</span><span class="cx"> };
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>