<!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>[207706] 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/207706">207706</a></dd>
<dt>Author</dt> <dd>barraclough@apple.com</dd>
<dt>Date</dt> <dd>2016-10-21 23:07:20 -0700 (Fri, 21 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>
Source/WebCore:
WebPageProxy should not need PageActivityState
https://bugs.webkit.org/show_bug.cgi?id=163821

Reviewed by Geoff Garen.

The PageActivityState is currently plumbed back from WebCore up to the UI process, to
determine whether to enabled process suppression. However the information it contains
(whether a page load is ongoing, whether audio is playing) is already available via
other means. Remove this use of PageActivityState.

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaState):
    - Fix a bug in how we compute IsPlayingAudio - if the volume of the MediaElement is
      set to zero, then audio is not playing (we were already checking muted).
* page/ChromeClient.h:
    - removed setPageActivityState
* page/Page.cpp:
(WebCore::Page::setPageActivityState): Deleted.
    - setPageActivityState -&gt; pageActivityStateChanged, remove call to ChromeClient
* page/Page.h:
(WebCore::Page::pageActivityStateChanged):
    - setPageActivityState -&gt; pageActivityStateChanged
* page/PageThrottler.cpp:
(WebCore::PageThrottler::setActivityFlag):
    - setPageActivityState -&gt; pageActivityStateChanged

Source/WebKit2:
[MediaStream] Dynamically generate media capture sandbox extensions
https://bugs.webkit.org/show_bug.cgi?id=154861
&lt;rdar://problem/24909411&gt;

Patch by Eric Carlson &lt;eric.carlson@apple.com&gt; on 2016-10-21
Reviewed by Tim Horton.

* Shared/SandboxExtension.h:
(WebKit::SandboxExtension::createHandleForGenericExtension):
* Shared/mac/SandboxExtensionMac.mm:
(WebKit::wkSandboxExtensionType): Add case for generic handle.
(WebKit::SandboxExtension::createHandleForGenericExtension): New.

* UIProcess/UserMediaPermissionRequestManagerProxy.cpp:
(WebKit::UserMediaPermissionRequestManagerProxy::invalidateRequests): Clear the list of extensions granted.
(WebKit::UserMediaPermissionRequestManagerProxy::userMediaAccessWasGranted): Extend the web 
  process sandbox as necessary.
* UIProcess/UserMediaPermissionRequestManagerProxy.h:

* WebProcess/MediaStream/UserMediaPermissionRequestManager.cpp:
(WebKit::UserMediaPermissionRequestManager::~UserMediaPermissionRequestManager): Revoke all
  sandbox extensions.
(WebKit::UserMediaPermissionRequestManager::grantUserMediaDevicesSandboxExtension): Consume
  sandbox extensions.
* WebProcess/MediaStream/UserMediaPermissionRequestManager.h:

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::grantUserMediaDevicesSandboxExtension): Pass-through to user media manager.
* WebProcess/WebPage/WebPage.h:

* WebProcess/WebPage/WebPage.messages.in: Add GrantUserMediaDevicesSandboxExtension.

* WebProcess/com.apple.WebProcess.sb.in: Add rules, defines, and a macro to allow dynamic extensions
  for media capture devices.</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCorepageChromeClienth">trunk/Source/WebCore/page/ChromeClient.h</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="#trunkSourceWebCorepagePageThrottlercpp">trunk/Source/WebCore/page/PageThrottler.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2UIProcessPageLoadStatecpp">trunk/Source/WebKit2/UIProcess/PageLoadState.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxycpp">trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxyh">trunk/Source/WebKit2/UIProcess/WebPageProxy.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessWebPageProxymessagesin">trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClienth">trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPageh">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebCore/ChangeLog        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -1,3 +1,31 @@
</span><ins>+2016-10-21  Gavin Barraclough  &lt;barraclough@apple.com&gt;
+
+        WebPageProxy should not need PageActivityState
+        https://bugs.webkit.org/show_bug.cgi?id=163821
+
+        Reviewed by Geoff Garen.
+
+        The PageActivityState is currently plumbed back from WebCore up to the UI process, to
+        determine whether to enabled process suppression. However the information it contains
+        (whether a page load is ongoing, whether audio is playing) is already available via
+        other means. Remove this use of PageActivityState.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::mediaState):
+            - Fix a bug in how we compute IsPlayingAudio - if the volume of the MediaElement is
+              set to zero, then audio is not playing (we were already checking muted).
+        * page/ChromeClient.h:
+            - removed setPageActivityState
+        * page/Page.cpp:
+        (WebCore::Page::setPageActivityState): Deleted.
+            - setPageActivityState -&gt; pageActivityStateChanged, remove call to ChromeClient
+        * page/Page.h:
+        (WebCore::Page::pageActivityStateChanged):
+            - setPageActivityState -&gt; pageActivityStateChanged
+        * page/PageThrottler.cpp:
+        (WebCore::PageThrottler::setActivityFlag):
+            - setPageActivityState -&gt; pageActivityStateChanged
+
</ins><span class="cx"> 2016-10-21  Chris Dumez  &lt;cdumez@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [Web ID] Overload resolution is wrong if one of the types is a nullable union
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -6991,7 +6991,7 @@
</span><span class="cx">     if (!isPlaying())
</span><span class="cx">         return state;
</span><span class="cx"> 
</span><del>-    if (hasAudio &amp;&amp; !muted())
</del><ins>+    if (hasAudio &amp;&amp; !muted() &amp;&amp; volume())
</ins><span class="cx">         state |= IsPlayingAudio;
</span><span class="cx"> 
</span><span class="cx">     if (hasActiveVideo)
</span></span></pre></div>
<a id="trunkSourceWebCorepageChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/ChromeClient.h (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/ChromeClient.h        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebCore/page/ChromeClient.h        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -432,8 +432,6 @@
</span><span class="cx">     virtual void focusedContentMediaElementDidChange(uint64_t) { }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-    virtual void setPageActivityState(PageActivityState::Flags) { }
-
</del><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx">     virtual bool wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const { return false; }
</span><span class="cx">     virtual bool unwrapCryptoKey(const Vector&lt;uint8_t&gt;&amp;, Vector&lt;uint8_t&gt;&amp;) const { return false; }
</span></span></pre></div>
<a id="trunkSourceWebCorepagePagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.cpp (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.cpp        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebCore/page/Page.cpp        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -1474,12 +1474,6 @@
</span><span class="cx">     return (m_viewState &amp; ViewState::IsVisible) &amp;&amp; (m_viewState &amp; ViewState::WindowIsActive);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void Page::setPageActivityState(PageActivityState::Flags activityState)
-{
-    chrome().client().setPageActivityState(activityState);
-    updateTimerThrottlingState();
-}
-
</del><span class="cx"> void Page::setIsVisible(bool isVisible)
</span><span class="cx"> {
</span><span class="cx">     if (isVisible)
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Page.h (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Page.h        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebCore/page/Page.h        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -336,7 +336,7 @@
</span><span class="cx">     // Notifications when the Page starts and stops being presented via a native window.
</span><span class="cx">     WEBCORE_EXPORT void setViewState(ViewState::Flags);
</span><span class="cx">     bool isVisibleAndActive() const;
</span><del>-    void setPageActivityState(PageActivityState::Flags);
</del><ins>+    void pageActivityStateChanged() { updateTimerThrottlingState(); }
</ins><span class="cx">     WEBCORE_EXPORT void setIsVisible(bool);
</span><span class="cx">     WEBCORE_EXPORT void setIsPrerender();
</span><span class="cx">     bool isVisible() const { return m_viewState &amp; ViewState::IsVisible; }
</span></span></pre></div>
<a id="trunkSourceWebCorepagePageThrottlercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/PageThrottler.cpp (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/PageThrottler.cpp        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebCore/page/PageThrottler.cpp        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx">         return;
</span><span class="cx">     m_activityState = activityState;
</span><span class="cx"> 
</span><del>-    m_page.setPageActivityState(m_activityState);
</del><ins>+    m_page.pageActivityStateChanged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/ChangeLog        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -36,6 +36,45 @@
</span><span class="cx"> 
</span><span class="cx"> 2016-10-21  Gavin Barraclough  &lt;barraclough@apple.com&gt;
</span><span class="cx"> 
</span><ins>+        WebPageProxy should not need PageActivityState
+        https://bugs.webkit.org/show_bug.cgi?id=163821
+
+        Reviewed by Geoff Garen.
+
+        The PageActivityState is currently plumbed back from WebCore up to the UI process, to
+        determine whether to enabled process suppression. However the information it contains
+        (whether a page load is ongoing, whether audio is playing) is already available via
+        other means. Remove this use of PageActivityState.
+
+        * UIProcess/PageLoadState.cpp:
+        (WebKit::PageLoadState::commitChanges):
+            - PageLoadState notifies WebPageProxy when loading state changes.
+        * UIProcess/WebPageProxy.cpp:
+        (WebKit::WebPageProxy::updateThrottleState):
+            - Now relies on info from PageLoadState, setMuted, isPlayingMediaDidChange.
+        (WebKit::WebPageProxy::setMuted):
+        (WebKit::WebPageProxy::isPlayingMediaDidChange):
+            - If audio playback state changes we may need to update the throttle state.
+        (WebKit::WebPageProxy::setPageActivityState): Deleted.
+            - removed PageActivityState from WK2.
+        * UIProcess/WebPageProxy.h:
+        (WebKit::WebPageProxy::isLoadingChanged):
+            - PageLoadState notifies WebPageProxy when loading state changes.
+        * UIProcess/WebPageProxy.messages.in:
+            - removed PageActivityState from WK2.
+        * WebProcess/WebCoreSupport/WebChromeClient.cpp:
+        (WebKit::WebChromeClient::setPageActivityState): Deleted.
+            - removed PageActivityState from WK2.
+        * WebProcess/WebCoreSupport/WebChromeClient.h:
+            - removed PageActivityState from WK2.
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::setPageActivityState): Deleted.
+            - removed PageActivityState from WK2.
+        * WebProcess/WebPage/WebPage.h:
+            - removed PageActivityState from WK2.
+
+2016-10-21  Gavin Barraclough  &lt;barraclough@apple.com&gt;
+
</ins><span class="cx">         WebPage should take UserActivity directly for user input
</span><span class="cx">         https://bugs.webkit.org/show_bug.cgi?id=163813
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessPageLoadStatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/PageLoadState.cpp (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/PageLoadState.cpp        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/UIProcess/PageLoadState.cpp        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -124,6 +124,8 @@
</span><span class="cx"> 
</span><span class="cx">     m_committedState = m_uncommittedState;
</span><span class="cx"> 
</span><ins>+    m_webPageProxy.isLoadingChanged();
+
</ins><span class="cx">     // The &quot;did&quot; ordering is the reverse of the &quot;will&quot;. This is a requirement of Cocoa Key-Value Observing.
</span><span class="cx">     if (certificateInfoChanged)
</span><span class="cx">         callObserverCallback(&amp;Observer::didChangeCertificateInfo);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.cpp        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -1571,12 +1571,6 @@
</span><span class="cx">     m_viewWasEverInWindow |= isNowInWindow;
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPageProxy::setPageActivityState(WebCore::PageActivityState::Flags activityState)
-{
-    m_activityState = activityState;
-    updateThrottleState();
-}
-
</del><span class="cx"> bool WebPageProxy::isAlwaysOnLoggingAllowed() const
</span><span class="cx"> {
</span><span class="cx">     return sessionID().isAlwaysOnLoggingAllowed();
</span><span class="lines">@@ -1593,7 +1587,9 @@
</span><span class="cx">         m_preventProcessSuppressionCount = nullptr;
</span><span class="cx"> 
</span><span class="cx">     // We should suppress if the page is not active, is visually idle, and supression is enabled.
</span><del>-    bool pageShouldBeSuppressed = !m_activityState &amp;&amp; processSuppressionEnabled &amp;&amp; (m_viewState &amp; ViewState::IsVisuallyIdle);
</del><ins>+    bool isLoading = m_pageLoadState.isLoading();
+    bool isPlayingAudio = m_mediaState &amp; MediaProducer::IsPlayingAudio &amp;&amp; !m_muted;
+    bool pageShouldBeSuppressed = !isLoading &amp;&amp; !isPlayingAudio &amp;&amp; processSuppressionEnabled &amp;&amp; (m_viewState &amp; ViewState::IsVisuallyIdle);
</ins><span class="cx">     if (m_pageSuppressed != pageShouldBeSuppressed) {
</span><span class="cx">         m_pageSuppressed = pageShouldBeSuppressed;
</span><span class="cx">         m_process-&gt;send(Messages::WebPage::SetPageSuppressed(m_pageSuppressed), m_pageID);
</span><span class="lines">@@ -4167,6 +4163,8 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     m_process-&gt;send(Messages::WebPage::SetMuted(muted), m_pageID);
</span><ins>+
+    updateThrottleState();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SESSION)
</span><span class="lines">@@ -6353,6 +6351,8 @@
</span><span class="cx">     MediaProducer::MediaStateFlags oldState = m_mediaState;
</span><span class="cx">     m_mediaState = state;
</span><span class="cx"> 
</span><ins>+    updateThrottleState();
+
</ins><span class="cx">     playingMediaMask |= MediaProducer::HasActiveMediaCaptureDevice;
</span><span class="cx">     if ((oldState &amp; playingMediaMask) != (m_mediaState &amp; playingMediaMask))
</span><span class="cx">         m_uiClient-&gt;isPlayingAudioDidChange(*this);
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxyh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.h (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.h        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -1138,6 +1138,8 @@
</span><span class="cx">         
</span><span class="cx">     WeakPtr&lt;WebPageProxy&gt; createWeakPtr() const { return m_weakPtrFactory.createWeakPtr(); }
</span><span class="cx"> 
</span><ins>+    void isLoadingChanged() { updateThrottleState(); }
+
</ins><span class="cx"> private:
</span><span class="cx">     WebPageProxy(PageClient&amp;, WebProcessProxy&amp;, uint64_t pageID, Ref&lt;API::PageConfiguration&gt;&amp;&amp;);
</span><span class="cx">     void platformInitialize();
</span><span class="lines">@@ -1530,7 +1532,6 @@
</span><span class="cx">     void dispatchViewStateChange();
</span><span class="cx">     void viewDidLeaveWindow();
</span><span class="cx">     void viewDidEnterWindow();
</span><del>-    void setPageActivityState(WebCore::PageActivityState::Flags);
</del><span class="cx"> 
</span><span class="cx"> #if PLATFORM(MAC)
</span><span class="cx">     void didPerformImmediateActionHitTest(const WebHitTestResultData&amp;, bool contentPreventsDefault, const UserData&amp;);
</span><span class="lines">@@ -1724,7 +1725,6 @@
</span><span class="cx">     WebCore::PolicyAction m_syncNavigationActionPolicyAction;
</span><span class="cx">     DownloadID m_syncNavigationActionPolicyDownloadID;
</span><span class="cx">     bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false };
</span><del>-    WebCore::PageActivityState::Flags m_activityState { WebCore::PageActivityState::NoFlags };
</del><span class="cx">     bool m_pageSuppressed { false };
</span><span class="cx"> 
</span><span class="cx">     Deque&lt;NativeWebKeyboardEvent&gt; m_keyEventQueue;
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessWebPageProxymessagesin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/UIProcess/WebPageProxy.messages.in        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -408,7 +408,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     DidUpdateViewState()
</span><del>-    SetPageActivityState(int32_t pageActivityState)
</del><span class="cx"> 
</span><span class="cx">     DidSaveToPageCache()
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClientcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.cpp        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -1068,11 +1068,6 @@
</span><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><del>-void WebChromeClient::setPageActivityState(PageActivityState::Flags activityState)
-{
-    m_page-&gt;setPageActivityState(activityState);
-}
-
</del><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><span class="cx"> bool WebChromeClient::wrapCryptoKey(const Vector&lt;uint8_t&gt;&amp; key, Vector&lt;uint8_t&gt;&amp; wrappedKey) const
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebCoreSupportWebChromeClienth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/WebProcess/WebCoreSupport/WebChromeClient.h        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -299,7 +299,6 @@
</span><span class="cx">     bool shouldUseTiledBackingForFrameView(const WebCore::FrameView*) const override;
</span><span class="cx"> 
</span><span class="cx">     void isPlayingMediaDidChange(WebCore::MediaProducer::MediaStateFlags, uint64_t) override;
</span><del>-    void setPageActivityState(WebCore::PageActivityState::Flags) override;
</del><span class="cx"> 
</span><span class="cx"> #if ENABLE(MEDIA_SESSION)
</span><span class="cx">     void hasMediaSessionWithActiveMediaElementsDidChange(bool) override;
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -581,11 +581,6 @@
</span><span class="cx">         setLayerHostingMode(parameters.layerHostingMode);
</span><span class="cx"> }
</span><span class="cx"> 
</span><del>-void WebPage::setPageActivityState(PageActivityState::Flags activityState)
-{
-    send(Messages::WebPageProxy::SetPageActivityState(activityState));
-}
-
</del><span class="cx"> void WebPage::setPageSuppressed(bool pageSuppressed)
</span><span class="cx"> {
</span><span class="cx">     // The UserActivity keeps the processes runnable. So if the page should be suppressed, stop the activity.
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPageh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (207705 => 207706)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2016-10-22 05:27:25 UTC (rev 207705)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h        2016-10-22 06:07:20 UTC (rev 207706)
</span><span class="lines">@@ -924,7 +924,6 @@
</span><span class="cx">     void setMainFrameProgressCompleted(bool completed) { m_mainFrameProgressCompleted = completed; }
</span><span class="cx">     bool shouldDispatchFakeMouseMoveEvents() const { return m_shouldDispatchFakeMouseMoveEvents; }
</span><span class="cx"> 
</span><del>-    void setPageActivityState(WebCore::PageActivityState::Flags);
</del><span class="cx">     void setPageSuppressed(bool);
</span><span class="cx"> 
</span><span class="cx">     void postMessage(const String&amp; messageName, API::Object* messageBody);
</span></span></pre>
</div>
</div>

</body>
</html>