<!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>[167523] 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/167523">167523</a></dd>
<dt>Author</dt> <dd>slewis@apple.com</dd>
<dt>Date</dt> <dd>2014-04-18 17:44:50 -0700 (Fri, 18 Apr 2014)</dd>
</dl>

<h3>Log Message</h3>
<pre>We shouldn’t create page throttlers for other pages than WebKit2 pages.

Source/WebCore:
Part of &lt;rdar://problem/16473045&gt; Visibility state counters are often incorrect
https://bugs.webkit.org/show_bug.cgi?id=131696

Reviewed by Gavin Barraclough.

No new test since not web exposed.

Page throttlers were being created for SVG images and other page instances that
were not accurately tracking the states that enable and disable page throttling.
Make the throttler an unique ptr and only initialize it for WebKit2.

This also fixes an inefficiency where we would throttle a new page on creation because
we assumed it was visible even if that was not the case.

* WebCore.exp.in:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute): Check page throttler exists.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::started): ditto
* page/Page.cpp:
(WebCore::Page::Page): Don’t automatically create page throttler.
(WebCore::Page::createPageThrottler): Create page throttler.
(WebCore::Page::setViewState): Check page throttler exists.
* page/Page.h:
(WebCore::Page::pageThrottler): Make the page throttler a unique ptr.
* page/PageThrottler.h:
* page/Settings.cpp:
(WebCore::Settings::setHiddenPageDOMTimerThrottlingEnabled): Check page throttler exists.

Source/WebKit2:
Part of &lt;rdar://problem/16473045&gt; Visibility state counters are often incorrect.
https://bugs.webkit.org/show_bug.cgi?id=131696

Reviewed by Gavin Barraclough.

Page throttlers were being created for SVG images and other page instances that
were not accurately tracking the states that enable and disable page throttling.
Make the throttler an unique ptr and only initialize it for WebKit2.

This also fixes  an inefficiency where we would throttle a new page on creation because
we assumed it was visible even if that was not the case.

* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: Check page throttler exists.
(WebKit::NPRuntimeObjectMap::evaluate):
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::WebPage): Initialize page throttler for WebKit2 views.
(WebKit::WebPage::mouseEvent): Check page throttler exists.
(WebKit::WebPage::wheelEvent): ditto
(WebKit::WebPage::keyEvent): ditto</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderFrameLoadercpp">trunk/Source/WebCore/loader/FrameLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePagecpp">trunk/Source/WebCore/page/Page.cpp</a></li>
<li><a href="#trunkSourceWebCorepagePageh">trunk/Source/WebCore/page/Page.h</a></li>
<li><a href="#trunkSourceWebCorepagePageThrottlerh">trunk/Source/WebCore/page/PageThrottler.h</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeNPRuntimeObjectMapcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebCore/ChangeLog        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -1,5 +1,37 @@
</span><span class="cx"> 2014-04-18  Stephanie Lewis  &lt;slewis@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        We shouldn’t create page throttlers for other pages than WebKit2 pages.
+        Part of &lt;rdar://problem/16473045&gt; Visibility state counters are often incorrect
+        https://bugs.webkit.org/show_bug.cgi?id=131696
+
+        Reviewed by Gavin Barraclough.
+
+        No new test since not web exposed.
+
+        Page throttlers were being created for SVG images and other page instances that
+        were not accurately tracking the states that enable and disable page throttling.
+        Make the throttler an unique ptr and only initialize it for WebKit2.
+
+        This also fixes an inefficiency where we would throttle a new page on creation because 
+        we assumed it was visible even if that was not the case.
+
+        * WebCore.exp.in:
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::parseAttribute): Check page throttler exists.
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::started): ditto
+        * page/Page.cpp:
+        (WebCore::Page::Page): Don’t automatically create page throttler.
+        (WebCore::Page::createPageThrottler): Create page throttler.
+        (WebCore::Page::setViewState): Check page throttler exists.
+        * page/Page.h:
+        (WebCore::Page::pageThrottler): Make the page throttler a unique ptr.
+        * page/PageThrottler.h:
+        * page/Settings.cpp: 
+        (WebCore::Settings::setHiddenPageDOMTimerThrottlingEnabled): Check page throttler exists.
+
+2014-04-18  Stephanie Lewis  &lt;slewis@apple.com&gt;
+
</ins><span class="cx">         Move DOM throttling out of the page throttler
</span><span class="cx">         &lt;rdar://problem/16473004&gt;
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=131697
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebCore/WebCore.exp.in        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -1059,6 +1059,7 @@
</span><span class="cx"> __ZN7WebCore4Page18setPageScaleFactorEfRKNS_8IntPointE
</span><span class="cx"> __ZN7WebCore4Page18setTopContentInsetEf
</span><span class="cx"> __ZN7WebCore4Page19addLayoutMilestonesEj
</span><ins>+__ZN7WebCore4Page19createPageThrottlerEv
</ins><span class="cx"> __ZN7WebCore4Page20scrollingCoordinatorEv
</span><span class="cx"> __ZN7WebCore4Page20setDeviceScaleFactorEf
</span><span class="cx"> __ZN7WebCore4Page20unmarkAllTextMatchesEv
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -4477,8 +4477,8 @@
</span><span class="cx"> 
</span><span class="cx">         if (hasMediaControls())
</span><span class="cx">             mediaControls()-&gt;playbackStarted();
</span><del>-        if (document().page())
-            m_activityToken = document().page()-&gt;pageThrottler().mediaActivityToken();
</del><ins>+        if (document().page() &amp;&amp; document().page()-&gt;pageThrottler())
+            m_activityToken = document().page()-&gt;pageThrottler()-&gt;mediaActivityToken();
</ins><span class="cx"> 
</span><span class="cx">         startPlaybackProgressTimer();
</span><span class="cx">         m_playing = true;
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderFrameLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/FrameLoader.cpp        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -1145,8 +1145,8 @@
</span><span class="cx"> 
</span><span class="cx"> void FrameLoader::started()
</span><span class="cx"> {
</span><del>-    if (m_frame.page())
-        m_activityAssertion = m_frame.page()-&gt;pageThrottler().pageLoadActivityToken();
</del><ins>+    if (m_frame.page() &amp;&amp; m_frame.page()-&gt;pageThrottler())
+        m_activityAssertion = m_frame.page()-&gt;pageThrottler()-&gt;pageLoadActivityToken();
</ins><span class="cx">     for (Frame* frame = &amp;m_frame; frame; frame = frame-&gt;tree().parent())
</span><span class="cx">         frame-&gt;loader().m_isComplete = false;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.cpp (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.cpp        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebCore/page/Page.cpp        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -188,7 +188,6 @@
</span><span class="cx"> #endif
</span><span class="cx">     , m_alternativeTextClient(pageClients.alternativeTextClient)
</span><span class="cx">     , m_scriptedAnimationsSuspended(false)
</span><del>-    , m_pageThrottler(*this, PageInitialViewState)
</del><span class="cx">     , m_console(std::make_unique&lt;PageConsole&gt;(*this))
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span><span class="cx">     , m_inspectorDebuggable(std::make_unique&lt;PageDebuggable&gt;(*this))
</span><span class="lines">@@ -1161,6 +1160,12 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+void Page::createPageThrottler()
+{
+    ASSERT(!m_pageThrottler);
+    m_pageThrottler = std::make_unique&lt;PageThrottler&gt;(*this, m_viewState);
+}
+
</ins><span class="cx"> void Page::setViewState(ViewState::Flags viewState)
</span><span class="cx"> {
</span><span class="cx">     ViewState::Flags changed = m_viewState ^ viewState;
</span><span class="lines">@@ -1169,7 +1174,8 @@
</span><span class="cx"> 
</span><span class="cx">     m_viewState = viewState;
</span><span class="cx">     m_focusController-&gt;setViewState(viewState);
</span><del>-    m_pageThrottler.setViewState(viewState);
</del><ins>+    if (m_pageThrottler)
+        m_pageThrottler-&gt;setViewState(viewState);
</ins><span class="cx"> 
</span><span class="cx">     if (changed &amp; ViewState::IsVisible)
</span><span class="cx">         setIsVisibleInternal(viewState &amp; ViewState::IsVisible);
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.h (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.h        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebCore/page/Page.h        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -394,7 +394,8 @@
</span><span class="cx">     void sawMediaEngine(const String&amp; engineName);
</span><span class="cx">     void resetSeenMediaEngines();
</span><span class="cx"> 
</span><del>-    PageThrottler&amp; pageThrottler() { return m_pageThrottler; }
</del><ins>+    PageThrottler* pageThrottler() { return m_pageThrottler.get(); }
+    void createPageThrottler();
</ins><span class="cx"> 
</span><span class="cx">     PageConsole&amp; console() { return *m_console; }
</span><span class="cx"> 
</span><span class="lines">@@ -556,7 +557,7 @@
</span><span class="cx">     AlternativeTextClient* m_alternativeTextClient;
</span><span class="cx"> 
</span><span class="cx">     bool m_scriptedAnimationsSuspended;
</span><del>-    PageThrottler m_pageThrottler;
</del><ins>+    std::unique_ptr&lt;PageThrottler&gt; m_pageThrottler;
</ins><span class="cx">     const std::unique_ptr&lt;PageConsole&gt; m_console;
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(REMOTE_INSPECTOR)
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageThrottlerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageThrottler.h (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageThrottler.h        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebCore/page/PageThrottler.h        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -41,6 +41,7 @@
</span><span class="cx"> class PageActivityAssertionToken;
</span><span class="cx"> 
</span><span class="cx"> class PageThrottler {
</span><ins>+    WTF_MAKE_FAST_ALLOCATED;
</ins><span class="cx"> public:
</span><span class="cx">     PageThrottler(Page&amp;, ViewState::Flags);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebKit2/ChangeLog        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -1,3 +1,26 @@
</span><ins>+2014-04-18  Stephanie Lewis  &lt;slewis@apple.com&gt;
+
+        We shouldn’t create page throttlers for other pages than WebKit2 pages.
+        Part of &lt;rdar://problem/16473045&gt; Visibility state counters are often incorrect.
+        https://bugs.webkit.org/show_bug.cgi?id=131696
+
+        Reviewed by Gavin Barraclough.
+
+        Page throttlers were being created for SVG images and other page instances that
+        were not accurately tracking the states that enable and disable page throttling.
+        Make the throttler an unique ptr and only initialize it for WebKit2.
+
+        This also fixes  an inefficiency where we would throttle a new page on creation because 
+        we assumed it was visible even if that was not the case.
+
+        * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp: Check page throttler exists.
+        (WebKit::NPRuntimeObjectMap::evaluate):
+        * WebProcess/WebPage/WebPage.cpp: 
+        (WebKit::WebPage::WebPage): Initialize page throttler for WebKit2 views.
+        (WebKit::WebPage::mouseEvent): Check page throttler exists.
+        (WebKit::WebPage::wheelEvent): ditto
+        (WebKit::WebPage::keyEvent): ditto
+
</ins><span class="cx"> 2014-04-18  Anders Carlsson  &lt;andersca@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         Don't allow app sandboxed apps without the network client entitlement to launch the network process
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeNPRuntimeObjectMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -193,8 +193,8 @@
</span><span class="cx"> #if PLATFORM(COCOA)
</span><span class="cx">     if (m_pluginView &amp;&amp; !m_pluginView-&gt;isBeingDestroyed()) {
</span><span class="cx">         if (Page* page = m_pluginView-&gt;frame()-&gt;page()) {
</span><del>-            if (m_pluginView-&gt;audioHardwareActivity() != WebCore::AudioHardwareActivityType::IsInactive)
-                page-&gt;pageThrottler().pluginDidEvaluateWhileAudioIsPlaying();
</del><ins>+            if (m_pluginView-&gt;audioHardwareActivity() != WebCore::AudioHardwareActivityType::IsInactive &amp;&amp; page-&gt;pageThrottler())
+                page-&gt;pageThrottler()-&gt;pluginDidEvaluateWhileAudioIsPlaying();
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (167522 => 167523)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-04-19 00:44:47 UTC (rev 167522)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2014-04-19 00:44:50 UTC (rev 167523)
</span><span class="lines">@@ -395,6 +395,7 @@
</span><span class="cx">     m_page-&gt;setViewState(m_viewState);
</span><span class="cx">     if (!isVisible())
</span><span class="cx">         m_page-&gt;setIsPrerender();
</span><ins>+    m_page-&gt;createPageThrottler();
</ins><span class="cx"> 
</span><span class="cx">     updateIsInWindow(true);
</span><span class="cx"> 
</span><span class="lines">@@ -1746,7 +1747,8 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::mouseEvent(const WebMouseEvent&amp; mouseEvent)
</span><span class="cx"> {
</span><del>-    m_page-&gt;pageThrottler().didReceiveUserInput();
</del><ins>+    ASSERT(m_page-&gt;pageThrottler());
+    m_page-&gt;pageThrottler()-&gt;didReceiveUserInput();
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx">     // Don't try to handle any pending mouse events if a context menu is showing.
</span><span class="lines">@@ -1814,7 +1816,8 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::wheelEvent(const WebWheelEvent&amp; wheelEvent)
</span><span class="cx"> {
</span><del>-    m_page-&gt;pageThrottler().didReceiveUserInput();
</del><ins>+    ASSERT(m_page-&gt;pageThrottler());
+    m_page-&gt;pageThrottler()-&gt;didReceiveUserInput();
</ins><span class="cx"> 
</span><span class="cx">     bool handled = false;
</span><span class="cx"> 
</span><span class="lines">@@ -1845,7 +1848,8 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::keyEvent(const WebKeyboardEvent&amp; keyboardEvent)
</span><span class="cx"> {
</span><del>-    m_page-&gt;pageThrottler().didReceiveUserInput();
</del><ins>+    ASSERT(m_page-&gt;pageThrottler());
+    m_page-&gt;pageThrottler()-&gt;didReceiveUserInput();
</ins><span class="cx"> 
</span><span class="cx">     bool handled = false;
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>