<!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>[178949] 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/178949">178949</a></dd>
<dt>Author</dt> <dd>cdumez@apple.com</dd>
<dt>Date</dt> <dd>2015-01-22 14:19:46 -0800 (Thu, 22 Jan 2015)</dd>
</dl>

<h3>Log Message</h3>
<pre>Drop the legacy FeatureCounter class
https://bugs.webkit.org/show_bug.cgi?id=140749

Reviewed by Andreas Kling.

Drop the legacy FeatureCounter class and use DiagnosticLoggingClient
instead.

Source/WebCore:

* CMakeLists.txt:
* Configurations/WebCore.xcconfig:
* WebCore.exp.in:
* WebCore.vcxproj/WebCore.vcxproj:
* WebCore.vcxproj/WebCore.vcxproj.filters:
* WebCore.xcodeproj/project.pbxproj:
* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::parseAttribute):
* loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::willSendRequest):
(WebCore::SubresourceLoader::didReceiveResponse):
* loader/cache/CachedResource.cpp:
(WebCore::CachedResource::mustRevalidateDueToCacheHeaders):
* loader/cache/CachedResourceLoader.cpp:
(WebCore::logMemoryCacheResourceRequest):
(WebCore::CachedResourceLoader::requestResource):
(WebCore::CachedResourceLoader::determineRevalidationPolicy):
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::mustRevalidateIsExpiredKey):
(WebCore::DiagnosticLoggingKeys::playedKey):
(WebCore::DiagnosticLoggingKeys::noCacheKey):
(WebCore::DiagnosticLoggingKeys::noStoreKey):
(WebCore::DiagnosticLoggingKeys::notInMemoryCacheKey):
(WebCore::DiagnosticLoggingKeys::mediaKey):
(WebCore::DiagnosticLoggingKeys::isExpiredKey):
(WebCore::DiagnosticLoggingKeys::loadingKey):
(WebCore::DiagnosticLoggingKeys::inMemoryCacheKey):
(WebCore::DiagnosticLoggingKeys::reasonKey):
(WebCore::DiagnosticLoggingKeys::audioKey):
(WebCore::DiagnosticLoggingKeys::cachedResourceRevalidationKey):
(WebCore::DiagnosticLoggingKeys::resourceRequestKey):
(WebCore::DiagnosticLoggingKeys::revalidatingKey):
(WebCore::DiagnosticLoggingKeys::unusedKey):
(WebCore::DiagnosticLoggingKeys::unusedReasonCredentialSettingsKey):
(WebCore::DiagnosticLoggingKeys::unusedReasonErrorKey):
(WebCore::DiagnosticLoggingKeys::unusedReasonMustRevalidateNoValidatorKey):
(WebCore::DiagnosticLoggingKeys::unusedReasonNoStoreKey):
(WebCore::DiagnosticLoggingKeys::unusedReasonRedirectChainKey):
(WebCore::DiagnosticLoggingKeys::unusedReasonReloadKey):
(WebCore::DiagnosticLoggingKeys::unusedReasonTypeMismatchKey):
(WebCore::DiagnosticLoggingKeys::usedKey):
(WebCore::DiagnosticLoggingKeys::userKey):
(WebCore::DiagnosticLoggingKeys::videoKey):
(WebCore::DiagnosticLoggingKeys::webViewKey):
(WebCore::DiagnosticLoggingKeys::zoomedKey):
* page/DiagnosticLoggingKeys.h:
* page/Settings.in:
* platform/FeatureCounter.cpp: Removed.
* platform/FeatureCounter.h: Removed.
* platform/FeatureCounterKeys.h: Removed.
* platform/ios/FeatureCounter.mm: Removed.

Source/WebKit2:

* Shared/WebPreferencesDefinitions.h:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView initWithFrame:configuration:]):
* UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
(-[WKWebViewConfiguration init]):
(-[WKWebViewConfiguration copyWithZone:]):
(-[WKWebViewConfiguration _featureCounterEnabled]):
(-[WKWebViewConfiguration _setFeatureCounterEnabled:]):
* UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::updatePreferences):
* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::willStartUserTriggeredZooming):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreCMakeListstxt">trunk/Source/WebCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreConfigurationsWebCorexcconfig">trunk/Source/WebCore/Configurations/WebCore.xcconfig</a></li>
<li><a href="#trunkSourceWebCoreWebCoreexpin">trunk/Source/WebCore/WebCore.exp.in</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxproj">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj</a></li>
<li><a href="#trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters">trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters</a></li>
<li><a href="#trunkSourceWebCoreWebCorexcodeprojprojectpbxproj">trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreloaderSubresourceLoadercpp">trunk/Source/WebCore/loader/SubresourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourcecpp">trunk/Source/WebCore/loader/cache/CachedResource.cpp</a></li>
<li><a href="#trunkSourceWebCoreloadercacheCachedResourceLoadercpp">trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDiagnosticLoggingKeyscpp">trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp</a></li>
<li><a href="#trunkSourceWebCorepageDiagnosticLoggingKeysh">trunk/Source/WebCore/page/DiagnosticLoggingKeys.h</a></li>
<li><a href="#trunkSourceWebCorepageSettingsin">trunk/Source/WebCore/page/Settings.in</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2SharedWebPreferencesDefinitionsh">trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewConfigurationmm">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm</a></li>
<li><a href="#trunkSourceWebKit2UIProcessAPICocoaWKWebViewConfigurationPrivateh">trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebPagecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm">trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceWebCoreplatformFeatureCountercpp">trunk/Source/WebCore/platform/FeatureCounter.cpp</a></li>
<li><a href="#trunkSourceWebCoreplatformFeatureCounterh">trunk/Source/WebCore/platform/FeatureCounter.h</a></li>
<li><a href="#trunkSourceWebCoreplatformFeatureCounterKeysh">trunk/Source/WebCore/platform/FeatureCounterKeys.h</a></li>
<li><a href="#trunkSourceWebCoreplatformiosFeatureCountermm">trunk/Source/WebCore/platform/ios/FeatureCounter.mm</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceWebCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/CMakeLists.txt (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/CMakeLists.txt        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/CMakeLists.txt        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1965,7 +1965,6 @@
</span><span class="cx">     platform/DisplaySleepDisabler.cpp
</span><span class="cx">     platform/DragData.cpp
</span><span class="cx">     platform/DragImage.cpp
</span><del>-    platform/FeatureCounter.cpp
</del><span class="cx">     platform/FileChooser.cpp
</span><span class="cx">     platform/FileStream.cpp
</span><span class="cx">     platform/FileSystem.cpp
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/ChangeLog        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1,3 +1,65 @@
</span><ins>+2015-01-22  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Drop the legacy FeatureCounter class
+        https://bugs.webkit.org/show_bug.cgi?id=140749
+
+        Reviewed by Andreas Kling.
+
+        Drop the legacy FeatureCounter class and use DiagnosticLoggingClient
+        instead.
+
+        * CMakeLists.txt:
+        * Configurations/WebCore.xcconfig:
+        * WebCore.exp.in:
+        * WebCore.vcxproj/WebCore.vcxproj:
+        * WebCore.vcxproj/WebCore.vcxproj.filters:
+        * WebCore.xcodeproj/project.pbxproj:
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::parseAttribute):
+        * loader/SubresourceLoader.cpp:
+        (WebCore::SubresourceLoader::willSendRequest):
+        (WebCore::SubresourceLoader::didReceiveResponse):
+        * loader/cache/CachedResource.cpp:
+        (WebCore::CachedResource::mustRevalidateDueToCacheHeaders):
+        * loader/cache/CachedResourceLoader.cpp:
+        (WebCore::logMemoryCacheResourceRequest):
+        (WebCore::CachedResourceLoader::requestResource):
+        (WebCore::CachedResourceLoader::determineRevalidationPolicy):
+        * page/DiagnosticLoggingKeys.cpp:
+        (WebCore::DiagnosticLoggingKeys::mustRevalidateIsExpiredKey):
+        (WebCore::DiagnosticLoggingKeys::playedKey):
+        (WebCore::DiagnosticLoggingKeys::noCacheKey):
+        (WebCore::DiagnosticLoggingKeys::noStoreKey):
+        (WebCore::DiagnosticLoggingKeys::notInMemoryCacheKey):
+        (WebCore::DiagnosticLoggingKeys::mediaKey):
+        (WebCore::DiagnosticLoggingKeys::isExpiredKey):
+        (WebCore::DiagnosticLoggingKeys::loadingKey):
+        (WebCore::DiagnosticLoggingKeys::inMemoryCacheKey):
+        (WebCore::DiagnosticLoggingKeys::reasonKey):
+        (WebCore::DiagnosticLoggingKeys::audioKey):
+        (WebCore::DiagnosticLoggingKeys::cachedResourceRevalidationKey):
+        (WebCore::DiagnosticLoggingKeys::resourceRequestKey):
+        (WebCore::DiagnosticLoggingKeys::revalidatingKey):
+        (WebCore::DiagnosticLoggingKeys::unusedKey):
+        (WebCore::DiagnosticLoggingKeys::unusedReasonCredentialSettingsKey):
+        (WebCore::DiagnosticLoggingKeys::unusedReasonErrorKey):
+        (WebCore::DiagnosticLoggingKeys::unusedReasonMustRevalidateNoValidatorKey):
+        (WebCore::DiagnosticLoggingKeys::unusedReasonNoStoreKey):
+        (WebCore::DiagnosticLoggingKeys::unusedReasonRedirectChainKey):
+        (WebCore::DiagnosticLoggingKeys::unusedReasonReloadKey):
+        (WebCore::DiagnosticLoggingKeys::unusedReasonTypeMismatchKey):
+        (WebCore::DiagnosticLoggingKeys::usedKey):
+        (WebCore::DiagnosticLoggingKeys::userKey):
+        (WebCore::DiagnosticLoggingKeys::videoKey):
+        (WebCore::DiagnosticLoggingKeys::webViewKey):
+        (WebCore::DiagnosticLoggingKeys::zoomedKey):
+        * page/DiagnosticLoggingKeys.h:
+        * page/Settings.in:
+        * platform/FeatureCounter.cpp: Removed.
+        * platform/FeatureCounter.h: Removed.
+        * platform/FeatureCounterKeys.h: Removed.
+        * platform/ios/FeatureCounter.mm: Removed.
+
</ins><span class="cx"> 2015-01-22  Benjamin Poulain  &lt;benjamin@webkit.org&gt;
</span><span class="cx"> 
</span><span class="cx">         When extending the fallback transitions with their closure, we are modifying the Set while iterating it
</span></span></pre></div>
<a id="trunkSourceWebCoreConfigurationsWebCorexcconfig"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Configurations/WebCore.xcconfig (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Configurations/WebCore.xcconfig        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/Configurations/WebCore.xcconfig        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> PRODUCT_NAME = WebCore;
</span><span class="cx"> OTHER_LDFLAGS = $(inherited) $(OTHER_LDFLAGS_PLATFORM);
</span><span class="cx"> OTHER_LDFLAGS_BASE = -lsqlite3 -lobjc -lANGLE;
</span><del>-OTHER_LDFLAGS_BASE_ios = $(OTHER_LDFLAGS_BASE) -framework AppSupport -framework CFNetwork -framework CoreGraphics -framework CoreText -framework Foundation -framework GraphicsServices -framework ImageIO -framework OpenGLES -lMobileGestalt;
</del><ins>+OTHER_LDFLAGS_BASE_ios = $(OTHER_LDFLAGS_BASE) -framework CFNetwork -framework CoreGraphics -framework CoreText -framework Foundation -framework GraphicsServices -framework ImageIO -framework OpenGLES -lMobileGestalt;
</ins><span class="cx"> OTHER_LDFLAGS_PLATFORM[sdk=iphoneos*] = $(OTHER_LDFLAGS_BASE_ios) -framework IOSurface;
</span><span class="cx"> OTHER_LDFLAGS_PLATFORM[sdk=iphonesimulator*] = $(OTHER_LDFLAGS_BASE_ios);
</span><span class="cx"> OTHER_LDFLAGS_PLATFORM[sdk=macosx*] = $(OTHER_LDFLAGS_BASE) -sub_library libobjc -umbrella WebKit -allowable_client WebCoreTestSupport -allowable_client WebKit2 -allowable_client WebKitLegacy -framework ApplicationServices -framework AudioUnit -framework Carbon -framework Cocoa -framework IOSurface -framework OpenGL;
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCoreexpin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.exp.in (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.exp.in        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/WebCore.exp.in        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -387,7 +387,6 @@
</span><span class="cx"> __ZN7WebCore14DocumentLoaderC2ERKNS_15ResourceRequestERKNS_14SubstituteDataE
</span><span class="cx"> __ZN7WebCore14DocumentLoaderD2Ev
</span><span class="cx"> __ZN7WebCore14DocumentWriter11setEncodingERKN3WTF6StringEb
</span><del>-__ZN7WebCore14FeatureCounter12incrementKeyEPNS_4PageEPKc
</del><span class="cx"> __ZN7WebCore14FileIconLoader14notifyFinishedEN3WTF10PassRefPtrINS_4IconEEE
</span><span class="cx"> __ZN7WebCore14FormController22getReferencedFilePathsERKN3WTF6VectorINS1_6StringELm0ENS1_15CrashOnOverflowEEE
</span><span class="cx"> __ZN7WebCore14FrameSelection10setFocusedEb
</span><span class="lines">@@ -943,6 +942,9 @@
</span><span class="cx"> __ZN7WebCore21BlobDataFileReferenceD2Ev
</span><span class="cx"> __ZN7WebCore21CrossThreadCopierBaseILb0ELb0EN3WTF6StringEE4copyERKS2_
</span><span class="cx"> __ZN7WebCore21CrossThreadCopierBaseILb0ELb0ENS_19IDBDatabaseMetadataEE4copyERKS1_
</span><ins>+__ZN7WebCore21DiagnosticLoggingKeys10webViewKeyEv
+__ZN7WebCore21DiagnosticLoggingKeys7userKeyEv
+__ZN7WebCore21DiagnosticLoggingKeys9zoomedKeyEv
</ins><span class="cx"> __ZN7WebCore21DisplayRefreshMonitor46handleDisplayRefreshedNotificationOnMainThreadEPv
</span><span class="cx"> __ZN7WebCore21DisplayRefreshMonitorC2Ej
</span><span class="cx"> __ZN7WebCore21DisplayRefreshMonitorD2Ev
</span><span class="lines">@@ -2163,6 +2165,7 @@
</span><span class="cx"> __ZNK7WebCore9InlineBox14caretMinOffsetEv
</span><span class="cx"> __ZNK7WebCore9InlineBox16baselinePositionENS_12FontBaselineE
</span><span class="cx"> __ZNK7WebCore9InlineBox22canAccommodateEllipsisEbii
</span><ins>+__ZNK7WebCore9MainFrame23diagnosticLoggingClientEv
</ins><span class="cx"> __ZNK7WebCore9PageCache10frameCountEv
</span><span class="cx"> __ZNK7WebCore9RenderBox11clientWidthEv
</span><span class="cx"> __ZNK7WebCore9RenderBox12clientHeightEv
</span></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -7384,7 +7384,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\DisplaySleepDisabler.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\DragData.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\DragImage.cpp&quot; /&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\platform\FeatureCounter.cpp&quot; /&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\platform\FileChooser.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\FileStream.cpp&quot; /&gt;
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\FileSystem.cpp&quot; /&gt;
</span><span class="lines">@@ -19302,7 +19301,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\DragData.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\DragImage.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\EventLoop.h&quot; /&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\platform\FeatureCounter.h&quot; /&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\platform\FileChooser.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\FileMetadata.h&quot; /&gt;
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\FileStream.h&quot; /&gt;
</span><span class="lines">@@ -21323,4 +21321,4 @@
</span><span class="cx">   &lt;ImportGroup Label=&quot;ExtensionTargets&quot;&gt;
</span><span class="cx">     &lt;Import Project=&quot;$(VCTargetsPath)\BuildCustomizations\masm.targets&quot; /&gt;
</span><span class="cx">   &lt;/ImportGroup&gt;
</span><del>-&lt;/Project&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/Project&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreWebCorevcxprojWebCorevcxprojfilters"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/WebCore.vcxproj/WebCore.vcxproj.filters        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1077,9 +1077,6 @@
</span><span class="cx">     &lt;ClCompile Include=&quot;..\platform\DragImage.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><del>-    &lt;ClCompile Include=&quot;..\platform\FeatureCounter.cpp&quot;&gt;
-      &lt;Filter&gt;platform&lt;/Filter&gt;
-    &lt;/ClCompile&gt;
</del><span class="cx">     &lt;ClCompile Include=&quot;..\platform\FileChooser.cpp&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClCompile&gt;
</span><span class="lines">@@ -8052,9 +8049,6 @@
</span><span class="cx">     &lt;ClInclude Include=&quot;..\platform\DragImage.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><del>-    &lt;ClInclude Include=&quot;..\platform\FeatureCounter.h&quot;&gt;
-      &lt;Filter&gt;platform&lt;/Filter&gt;
-    &lt;/ClInclude&gt;
</del><span class="cx">     &lt;ClInclude Include=&quot;..\platform\EventLoop.h&quot;&gt;
</span><span class="cx">       &lt;Filter&gt;platform&lt;/Filter&gt;
</span><span class="cx">     &lt;/ClInclude&gt;
</span><span class="lines">@@ -15302,4 +15296,4 @@
</span><span class="cx">       &lt;Filter&gt;platform\win&lt;/Filter&gt;
</span><span class="cx">     &lt;/MASM&gt;
</span><span class="cx">   &lt;/ItemGroup&gt;
</span><del>-&lt;/Project&gt;
</del><span class="cx">\ No newline at end of file
</span><ins>+&lt;/Project&gt;
</ins></span></pre></div>
<a id="trunkSourceWebCoreWebCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -835,7 +835,6 @@
</span><span class="cx">                 1AB7FC860A8B92EC00D9D37B /* XPathValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC650A8B92EC00D9D37B /* XPathValue.h */; };
</span><span class="cx">                 1AB7FC870A8B92EC00D9D37B /* XPathVariableReference.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AB7FC660A8B92EC00D9D37B /* XPathVariableReference.cpp */; };
</span><span class="cx">                 1AB7FC880A8B92EC00D9D37B /* XPathVariableReference.h in Headers */ = {isa = PBXBuildFile; fileRef = 1AB7FC670A8B92EC00D9D37B /* XPathVariableReference.h */; };
</span><del>-                1ABA34FE1A409FEA005570EA /* FeatureCounterKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = 1ABA34FD1A409FEA005570EA /* FeatureCounterKeys.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 1ABA76C911D20E47004C201C /* ColorData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E406F3FB1198307D009D59D6 /* ColorData.cpp */; };
</span><span class="cx">                 1ABA76CA11D20E50004C201C /* CSSPropertyNames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E41EA038119836DB00710BC5 /* CSSPropertyNames.cpp */; };
</span><span class="cx">                 1ABA76CB11D20E57004C201C /* CSSValueKeywords.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E41EA0391198374900710BC5 /* CSSValueKeywords.cpp */; };
</span><span class="lines">@@ -1642,10 +1641,8 @@
</span><span class="cx">                 45BAC2B01360BBAB005DA258 /* IconURL.h in Headers */ = {isa = PBXBuildFile; fileRef = 45BAC2AF1360BBAB005DA258 /* IconURL.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 45FEA5CF156DDE8C00654101 /* Decimal.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45FEA5CD156DDE8C00654101 /* Decimal.cpp */; };
</span><span class="cx">                 45FEA5D0156DDE8C00654101 /* Decimal.h in Headers */ = {isa = PBXBuildFile; fileRef = 45FEA5CE156DDE8C00654101 /* Decimal.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                467438541A421330000494FB /* FeatureCounter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 467438531A421330000494FB /* FeatureCounter.mm */; };
-                46779CE21A40B97200B6864E /* FeatureCounter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 46779CE01A40B97100B6864E /* FeatureCounter.cpp */; };
-                46779CE31A40B97200B6864E /* FeatureCounter.h in Headers */ = {isa = PBXBuildFile; fileRef = 46779CE11A40B97200B6864E /* FeatureCounter.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 4689F1AF1267BAE100E8D380 /* FileMetadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 4689F1AE1267BAE100E8D380 /* FileMetadata.h */; };
</span><ins>+                46FCB6181A70820E00C5A21E /* DiagnosticLoggingKeys.h in Headers */ = {isa = PBXBuildFile; fileRef = CD37B37515C1A7E1006DC898 /* DiagnosticLoggingKeys.h */; settings = {ATTRIBUTES = (Private, ); }; };
</ins><span class="cx">                 490707E61219C04300D90E51 /* ANGLEWebKitBridge.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */; };
</span><span class="cx">                 490707E71219C04300D90E51 /* ANGLEWebKitBridge.h in Headers */ = {isa = PBXBuildFile; fileRef = 490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */; };
</span><span class="cx">                 49291E4B134172C800E753DE /* ImageRenderingMode.h in Headers */ = {isa = PBXBuildFile; fileRef = 49291E4A134172C800E753DE /* ImageRenderingMode.h */; };
</span><span class="lines">@@ -7833,7 +7830,6 @@
</span><span class="cx">                 1AB7FC650A8B92EC00D9D37B /* XPathValue.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathValue.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AB7FC660A8B92EC00D9D37B /* XPathVariableReference.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = XPathVariableReference.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AB7FC670A8B92EC00D9D37B /* XPathVariableReference.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = XPathVariableReference.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                1ABA34FD1A409FEA005570EA /* FeatureCounterKeys.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeatureCounterKeys.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 1ABA7FFF1897341200DCE9D6 /* VisitedLinkStore.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VisitedLinkStore.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1ABC7108170E5E1B00F9A9D6 /* WorkerNavigatorStorageQuota.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkerNavigatorStorageQuota.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1AC2260A0DB69F190089B669 /* JSDOMApplicationCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSDOMApplicationCache.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -8709,9 +8705,6 @@
</span><span class="cx">                 45BAC2AF1360BBAB005DA258 /* IconURL.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconURL.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 45FEA5CD156DDE8C00654101 /* Decimal.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Decimal.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 45FEA5CE156DDE8C00654101 /* Decimal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Decimal.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                467438531A421330000494FB /* FeatureCounter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = FeatureCounter.mm; path = ios/FeatureCounter.mm; sourceTree = &quot;&lt;group&gt;&quot;; };
-                46779CE01A40B97100B6864E /* FeatureCounter.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FeatureCounter.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                46779CE11A40B97200B6864E /* FeatureCounter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FeatureCounter.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 4689F1AE1267BAE100E8D380 /* FileMetadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = FileMetadata.h; path = platform/FileMetadata.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 490707E41219C04300D90E51 /* ANGLEWebKitBridge.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ANGLEWebKitBridge.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 490707E51219C04300D90E51 /* ANGLEWebKitBridge.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ANGLEWebKitBridge.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -18526,7 +18519,6 @@
</span><span class="cx">                                 3140379A124BEA7F00AF40E4 /* DeviceOrientationClientIOS.mm */,
</span><span class="cx">                                 0FDA7C22188330A900C954B5 /* DragImageIOS.mm */,
</span><span class="cx">                                 26F40D4914904A6300CA67C4 /* EventLoopIOS.mm */,
</span><del>-                                467438531A421330000494FB /* FeatureCounter.mm */,
</del><span class="cx">                                 26C17A3C1491D2D400D12BA2 /* FileSystemIOS.h */,
</span><span class="cx">                                 26C17A3D1491D2D400D12BA2 /* FileSystemIOS.mm */,
</span><span class="cx">                                 265541371489811C000DFC5D /* KeyEventCodesIOS.h */,
</span><span class="lines">@@ -21388,9 +21380,6 @@
</span><span class="cx">                                 A7CFB3CF0B7ED10A0070C32D /* DragImage.cpp */,
</span><span class="cx">                                 A7CFB3D00B7ED10A0070C32D /* DragImage.h */,
</span><span class="cx">                                 1CA19E150DC255CA0065A994 /* EventLoop.h */,
</span><del>-                                1ABA34FD1A409FEA005570EA /* FeatureCounterKeys.h */,
-                                46779CE01A40B97100B6864E /* FeatureCounter.cpp */,
-                                46779CE11A40B97200B6864E /* FeatureCounter.h */,
</del><span class="cx">                                 934FE9E40B5CA539003E4A73 /* FileChooser.cpp */,
</span><span class="cx">                                 066C772A0AB603B700238CC4 /* FileChooser.h */,
</span><span class="cx">                                 2EF1BFE8121C9F4200C27627 /* FileStream.cpp */,
</span><span class="lines">@@ -23643,7 +23632,6 @@
</span><span class="cx">                                 A80E6D040A1989CA007FB8C5 /* Counter.h in Headers */,
</span><span class="cx">                                 BC5EB9790E82069200B25965 /* CounterContent.h in Headers */,
</span><span class="cx">                                 BC5EB9510E82056B00B25965 /* CounterDirectives.h in Headers */,
</span><del>-                                46779CE31A40B97200B6864E /* FeatureCounter.h in Headers */,
</del><span class="cx">                                 9392F14C0AD1861B00691BD4 /* CounterNode.h in Headers */,
</span><span class="cx">                                 D0B0556809C6700100307E43 /* CreateLinkCommand.h in Headers */,
</span><span class="cx">                                 514C766E0CE923A1007EF3CD /* Credential.h in Headers */,
</span><span class="lines">@@ -24399,7 +24387,6 @@
</span><span class="cx">                                 9746AF2714F4DDE6003E7A70 /* GeolocationController.h in Headers */,
</span><span class="cx">                                 9746AF2814F4DDE6003E7A70 /* GeolocationError.h in Headers */,
</span><span class="cx">                                 9746AF2914F4DDE6003E7A70 /* GeolocationPosition.h in Headers */,
</span><del>-                                1ABA34FE1A409FEA005570EA /* FeatureCounterKeys.h in Headers */,
</del><span class="cx">                                 0FB6252F18DE1B1500A07C05 /* GeometryUtilities.h in Headers */,
</span><span class="cx">                                 9746AF2A14F4DDE6003E7A70 /* Geoposition.h in Headers */,
</span><span class="cx">                                 086BBD0F136039C2008B15D8 /* Glyph.h in Headers */,
</span><span class="lines">@@ -25582,6 +25569,7 @@
</span><span class="cx">                                 0885068011DA045B00182B98 /* PaintPhase.h in Headers */,
</span><span class="cx">                                 A80E6CFB0A1989CA007FB8C5 /* Pair.h in Headers */,
</span><span class="cx">                                 FD3160A312B026F700C1A359 /* Panner.h in Headers */,
</span><ins>+                                46FCB6181A70820E00C5A21E /* DiagnosticLoggingKeys.h in Headers */,
</ins><span class="cx">                                 FD31601A12B0267600C1A359 /* PannerNode.h in Headers */,
</span><span class="cx">                                 447958041643B49A001E0A7F /* ParsedContentType.h in Headers */,
</span><span class="cx">                                 BC76AC130DD7AD5C00415F34 /* ParserUtilities.h in Headers */,
</span><span class="lines">@@ -28538,7 +28526,6 @@
</span><span class="cx">                                 77A17AA612F28B2A004E02F6 /* JSOESVertexArrayObject.cpp in Sources */,
</span><span class="cx">                                 FDF6BAF8134A4C9800822920 /* JSOfflineAudioCompletionEvent.cpp in Sources */,
</span><span class="cx">                                 FDA9326616703BA9008982DC /* JSOfflineAudioContext.cpp in Sources */,
</span><del>-                                46779CE21A40B97200B6864E /* FeatureCounter.cpp in Sources */,
</del><span class="cx">                                 FDEA6242152102E200479DF0 /* JSOscillatorNode.cpp in Sources */,
</span><span class="cx">                                 FDBD1DFC167FE27D0051A11E /* JSOscillatorNodeCustom.cpp in Sources */,
</span><span class="cx">                                 1A0D57400A5C7867007EDD4C /* JSOverflowEvent.cpp in Sources */,
</span><span class="lines">@@ -29491,7 +29478,6 @@
</span><span class="cx">                                 CD3A496417A9D01B00274E42 /* SourceBufferList.cpp in Sources */,
</span><span class="cx">                                 CDC8B5AA18047FF10016E685 /* SourceBufferPrivateAVFObjC.mm in Sources */,
</span><span class="cx">                                 84A81F410FC7E02700955300 /* SourceGraphic.cpp in Sources */,
</span><del>-                                467438541A421330000494FB /* FeatureCounter.mm in Sources */,
</del><span class="cx">                                 076306D717E149CF005A7C4E /* SourceInfo.cpp in Sources */,
</span><span class="cx">                                 536D5A25193F40FC00CE4CAB /* SourceSizeList.cpp in Sources */,
</span><span class="cx">                                 2D58D8561A15F65F00A5F726 /* DataDetection.mm in Sources */,
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -45,7 +45,6 @@
</span><span class="cx"> #include &quot;ElementIterator.h&quot;
</span><span class="cx"> #include &quot;EventNames.h&quot;
</span><span class="cx"> #include &quot;ExceptionCodePlaceholder.h&quot;
</span><del>-#include &quot;FeatureCounter.h&quot;
</del><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="cx"> #include &quot;FrameView.h&quot;
</span><span class="lines">@@ -1164,7 +1163,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // Log that we started loading a media element.
</span><del>-    FEATURE_COUNTER_INCREMENT_KEY(document().page(), isVideo() ? FeatureCounterMediaVideoElementLoadingKey : FeatureCounterMediaAudioElementLoadingKey);
</del><ins>+    if (Frame* frame = document().frame())
+        frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithValue(DiagnosticLoggingKeys::mediaKey(), isVideo() ? DiagnosticLoggingKeys::videoKey() : DiagnosticLoggingKeys::audioKey(), DiagnosticLoggingKeys::loadingKey());
+
</ins><span class="cx">     m_firstTimePlaying = true;
</span><span class="cx"> 
</span><span class="cx">     // Set m_currentSrc *before* changing to the cache url, the fact that we are loading from the app
</span><span class="lines">@@ -4549,7 +4550,8 @@
</span><span class="cx"> 
</span><span class="cx">             if (m_firstTimePlaying) {
</span><span class="cx">                 // Log that a media element was played.
</span><del>-                FEATURE_COUNTER_INCREMENT_KEY(document().page(), isVideo() ? FeatureCounterMediaVideoElementPlayedKey : FeatureCounterMediaAudioElementPlayedKey);
</del><ins>+                if (Frame* frame = document().frame())
+                    frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithValue(DiagnosticLoggingKeys::mediaKey(), isVideo() ? DiagnosticLoggingKeys::videoKey() : DiagnosticLoggingKeys::audioKey(), DiagnosticLoggingKeys::playedKey());
</ins><span class="cx">                 m_firstTimePlaying = false;
</span><span class="cx">             }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloaderSubresourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/SubresourceLoader.cpp (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/SubresourceLoader.cpp        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/loader/SubresourceLoader.cpp        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx"> #include &quot;DiagnosticLoggingKeys.h&quot;
</span><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentLoader.h&quot;
</span><del>-#include &quot;FeatureCounter.h&quot;
</del><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><span class="lines">@@ -161,7 +160,8 @@
</span><span class="cx">         if (newRequest.isConditional() &amp;&amp; m_resource-&gt;resourceToRevalidate() &amp;&amp; newRequest.url() != m_resource-&gt;resourceToRevalidate()-&gt;response().url()) {
</span><span class="cx">             newRequest.makeUnconditional();
</span><span class="cx">             memoryCache().revalidationFailed(m_resource);
</span><del>-            FEATURE_COUNTER_INCREMENT_KEY(m_frame ? m_frame-&gt;page() : nullptr, FeatureCounterCachedResourceRevalidationFailureKey);
</del><ins>+            if (m_frame)
+                m_frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithResult(DiagnosticLoggingKeys::cachedResourceRevalidationKey(), emptyString(), DiagnosticLoggingResultFail);
</ins><span class="cx">         }
</span><span class="cx">         
</span><span class="cx">         if (!m_documentLoader-&gt;cachedResourceLoader().canRequest(m_resource-&gt;type(), newRequest.url(), options())) {
</span><span class="lines">@@ -208,14 +208,16 @@
</span><span class="cx">             // Existing resource is ok, just use it updating the expiration time.
</span><span class="cx">             m_resource-&gt;setResponse(response);
</span><span class="cx">             memoryCache().revalidationSucceeded(m_resource, response);
</span><del>-            FEATURE_COUNTER_INCREMENT_KEY(m_frame ? m_frame-&gt;page() : nullptr, FeatureCounterCachedResourceRevalidationSuccessKey);
</del><ins>+            if (m_frame)
+                m_frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithResult(DiagnosticLoggingKeys::cachedResourceRevalidationKey(), emptyString(), DiagnosticLoggingResultPass);
</ins><span class="cx">             if (!reachedTerminalState())
</span><span class="cx">                 ResourceLoader::didReceiveResponse(response);
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         // Did not get 304 response, continue as a regular resource load.
</span><span class="cx">         memoryCache().revalidationFailed(m_resource);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(m_frame ? m_frame-&gt;page() : nullptr, FeatureCounterCachedResourceRevalidationFailureKey);
</del><ins>+        if (m_frame)
+            m_frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithResult(DiagnosticLoggingKeys::cachedResourceRevalidationKey(), emptyString(), DiagnosticLoggingResultFail);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     m_resource-&gt;responseReceived(response);
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourcecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResource.cpp (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResource.cpp        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/loader/cache/CachedResource.cpp        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -29,9 +29,10 @@
</span><span class="cx"> #include &quot;CachedResourceHandle.h&quot;
</span><span class="cx"> #include &quot;CachedResourceLoader.h&quot;
</span><span class="cx"> #include &quot;CrossOriginAccessControl.h&quot;
</span><ins>+#include &quot;DiagnosticLoggingClient.h&quot;
+#include &quot;DiagnosticLoggingKeys.h&quot;
</ins><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentLoader.h&quot;
</span><del>-#include &quot;FeatureCounter.h&quot;
</del><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="cx"> #include &quot;HTTPHeaderNames.h&quot;
</span><span class="lines">@@ -39,6 +40,7 @@
</span><span class="cx"> #include &quot;URL.h&quot;
</span><span class="cx"> #include &quot;LoaderStrategy.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><ins>+#include &quot;MainFrame.h&quot;
</ins><span class="cx"> #include &quot;MemoryCache.h&quot;
</span><span class="cx"> #include &quot;PlatformStrategies.h&quot;
</span><span class="cx"> #include &quot;ResourceHandle.h&quot;
</span><span class="lines">@@ -677,21 +679,27 @@
</span><span class="cx">     return m_response.hasCacheValidatorFields();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline void logResourceRevalidationReason(Frame* frame, const String&amp; reason)
+{
+    if (frame)
+        frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithValue(DiagnosticLoggingKeys::cachedResourceRevalidationKey(), DiagnosticLoggingKeys::reasonKey(), reason);
+}
+
</ins><span class="cx"> bool CachedResource::mustRevalidateDueToCacheHeaders(const CachedResourceLoader&amp; cachedResourceLoader, CachePolicy cachePolicy) const
</span><span class="cx"> {    
</span><span class="cx">     ASSERT(cachePolicy == CachePolicyRevalidate || cachePolicy == CachePolicyCache || cachePolicy == CachePolicyVerify);
</span><span class="cx"> 
</span><span class="cx">     if (cachePolicy == CachePolicyRevalidate) {
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(cachedResourceLoader.frame()-&gt;page(), FeatureCounterCachedResourceRevalidationReasonReloadKey);
</del><ins>+        logResourceRevalidationReason(cachedResourceLoader.frame(), DiagnosticLoggingKeys::reloadKey());
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (m_response.cacheControlContainsNoCache() || m_response.cacheControlContainsNoStore()) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResource %p mustRevalidate because of m_response.cacheControlContainsNoCache() || m_response.cacheControlContainsNoStore()\n&quot;, this);
</span><span class="cx">         if (m_response.cacheControlContainsNoStore())
</span><del>-            FEATURE_COUNTER_INCREMENT_KEY(cachedResourceLoader.frame()-&gt;page(), FeatureCounterCachedResourceRevalidationReasonNoStoreKey);
</del><ins>+            logResourceRevalidationReason(cachedResourceLoader.frame(), DiagnosticLoggingKeys::noStoreKey());
</ins><span class="cx">         else
</span><del>-            FEATURE_COUNTER_INCREMENT_KEY(cachedResourceLoader.frame()-&gt;page(), FeatureCounterCachedResourceRevalidationReasonNoCacheKey);
</del><ins>+            logResourceRevalidationReason(cachedResourceLoader.frame(), DiagnosticLoggingKeys::noCacheKey());
</ins><span class="cx"> 
</span><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="lines">@@ -699,7 +707,7 @@
</span><span class="cx">     if (cachePolicy == CachePolicyCache) {
</span><span class="cx">         if (m_response.cacheControlContainsMustRevalidate() &amp;&amp; isExpired()) {
</span><span class="cx">             LOG(ResourceLoading, &quot;CachedResource %p mustRevalidate because of cachePolicy == CachePolicyCache and m_response.cacheControlContainsMustRevalidate() &amp;&amp; isExpired()\n&quot;, this);
</span><del>-            FEATURE_COUNTER_INCREMENT_KEY(cachedResourceLoader.frame()-&gt;page(), FeatureCounterCachedResourceRevalidationReasonMustRevalidateIsExpiredKey);
</del><ins>+            logResourceRevalidationReason(cachedResourceLoader.frame(), DiagnosticLoggingKeys::mustRevalidateIsExpiredKey());
</ins><span class="cx">             return true;
</span><span class="cx">         }
</span><span class="cx">         return false;
</span><span class="lines">@@ -708,7 +716,7 @@
</span><span class="cx">     // CachePolicyVerify
</span><span class="cx">     if (isExpired()) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResource %p mustRevalidate because of isExpired()\n&quot;, this);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(cachedResourceLoader.frame()-&gt;page(), FeatureCounterCachedResourceRevalidationReasonIsExpiredKey);
</del><ins>+        logResourceRevalidationReason(cachedResourceLoader.frame(), DiagnosticLoggingKeys::isExpiredKey());
</ins><span class="cx">         return true;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCoreloadercacheCachedResourceLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/loader/cache/CachedResourceLoader.cpp        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -40,9 +40,10 @@
</span><span class="cx"> #include &quot;ChromeClient.h&quot;
</span><span class="cx"> #include &quot;ContentSecurityPolicy.h&quot;
</span><span class="cx"> #include &quot;DOMWindow.h&quot;
</span><ins>+#include &quot;DiagnosticLoggingClient.h&quot;
+#include &quot;DiagnosticLoggingKeys.h&quot;
</ins><span class="cx"> #include &quot;Document.h&quot;
</span><span class="cx"> #include &quot;DocumentLoader.h&quot;
</span><del>-#include &quot;FeatureCounter.h&quot;
</del><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;FrameLoader.h&quot;
</span><span class="cx"> #include &quot;FrameLoaderClient.h&quot;
</span><span class="lines">@@ -50,6 +51,7 @@
</span><span class="cx"> #include &quot;HTMLFrameOwnerElement.h&quot;
</span><span class="cx"> #include &quot;LoaderStrategy.h&quot;
</span><span class="cx"> #include &quot;Logging.h&quot;
</span><ins>+#include &quot;MainFrame.h&quot;
</ins><span class="cx"> #include &quot;MemoryCache.h&quot;
</span><span class="cx"> #include &quot;Page.h&quot;
</span><span class="cx"> #include &quot;PingLoader.h&quot;
</span><span class="lines">@@ -435,6 +437,16 @@
</span><span class="cx">     return !newRequest.isNull();
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+static inline void logMemoryCacheResourceRequest(Frame* frame, const String&amp; description, const String&amp; value = String())
+{
+    if (!frame)
+        return;
+    if (value.isNull())
+        frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessage(DiagnosticLoggingKeys::resourceRequestKey(), description);
+    else
+        frame-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithValue(DiagnosticLoggingKeys::resourceRequestKey(), description, value);
+}
+
</ins><span class="cx"> CachedResourceHandle&lt;CachedResource&gt; CachedResourceLoader::requestResource(CachedResource::Type type, CachedResourceRequest&amp; request)
</span><span class="cx"> {
</span><span class="cx">     URL url = request.resourceRequest().url();
</span><span class="lines">@@ -445,10 +457,10 @@
</span><span class="cx">     url = MemoryCache::removeFragmentIdentifierIfNeeded(url);
</span><span class="cx"> 
</span><span class="cx">     if (!url.isValid())
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     if (!canRequest(type, url, request.options(), request.forPreload()))
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(CONTENT_EXTENSIONS)
</span><span class="cx">     if (frame() &amp;&amp; frame()-&gt;page() &amp;&amp; frame()-&gt;page()-&gt;userContentController() &amp;&amp; frame()-&gt;page()-&gt;userContentController()-&gt;contentFilterBlocksURL(url))
</span><span class="lines">@@ -472,8 +484,7 @@
</span><span class="cx"> 
</span><span class="cx">     resource = memoryCache().resourceForRequest(request.resourceRequest(), sessionID());
</span><span class="cx"> 
</span><del>-    Page* page = frame() ? frame()-&gt;page() : nullptr;
-    FEATURE_COUNTER_INCREMENT_KEY(page, resource ? FeatureCounterResourceRequestInMemoryCacheKey : FeatureCounterResourceRequestNotInMemoryCacheKey);
</del><ins>+    logMemoryCacheResourceRequest(frame(), resource ? DiagnosticLoggingKeys::inMemoryCacheKey() : DiagnosticLoggingKeys::notInMemoryCacheKey());
</ins><span class="cx"> 
</span><span class="cx">     const RevalidationPolicy policy = determineRevalidationPolicy(type, request.mutableResourceRequest(), request.forPreload(), resource.get(), request.defer());
</span><span class="cx">     switch (policy) {
</span><span class="lines">@@ -482,24 +493,24 @@
</span><span class="cx">         FALLTHROUGH;
</span><span class="cx">     case Load:
</span><span class="cx">         if (resource)
</span><del>-            FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedKey);
</del><ins>+            logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedKey());
</ins><span class="cx">         resource = loadResource(type, request);
</span><span class="cx">         break;
</span><span class="cx">     case Revalidate:
</span><span class="cx">         if (resource)
</span><del>-            FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheRevalidatingKey);
</del><ins>+            logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::revalidatingKey());
</ins><span class="cx">         resource = revalidateResource(request, resource.get());
</span><span class="cx">         break;
</span><span class="cx">     case Use:
</span><span class="cx">         if (!shouldContinueAfterNotifyingLoadedFromMemoryCache(request, resource.get()))
</span><del>-            return 0;
-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUsedKey);
</del><ins>+            return nullptr;
+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::usedKey());
</ins><span class="cx">         memoryCache().resourceAccessed(resource.get());
</span><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!resource)
</span><del>-        return 0;
</del><ins>+        return nullptr;
</ins><span class="cx"> 
</span><span class="cx">     if (!request.forPreload() || policy != Use)
</span><span class="cx">         resource-&gt;setLoadPriority(request.priority());
</span><span class="lines">@@ -511,7 +522,7 @@
</span><span class="cx">         if (resource-&gt;errorOccurred()) {
</span><span class="cx">             if (resource-&gt;inCache())
</span><span class="cx">                 memoryCache().remove(resource.get());
</span><del>-            return 0;
</del><ins>+            return nullptr;
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -595,12 +606,10 @@
</span><span class="cx">     if (forPreload &amp;&amp; existingResource-&gt;isPreloaded())
</span><span class="cx">         return Use;
</span><span class="cx"> 
</span><del>-    Page* page = frame() ? frame()-&gt;page() : nullptr;
-
</del><span class="cx">     // If the same URL has been loaded as a different type, we need to reload.
</span><span class="cx">     if (existingResource-&gt;type() != type) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResourceLoader::determineRevalidationPolicy reloading due to type mismatch.&quot;);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedReasonTypeMismatchKey);
</del><ins>+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedReasonTypeMismatchKey());
</ins><span class="cx">         return Reload;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -627,7 +636,7 @@
</span><span class="cx">     bool cachePolicyIsHistoryBuffer = cachePolicy(type) == CachePolicyHistoryBuffer;
</span><span class="cx">     if (!existingResource-&gt;redirectChainAllowsReuse(cachePolicyIsHistoryBuffer ? ReuseExpiredRedirection : DoNotReuseExpiredRedirection)) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResourceLoader::determineRevalidationPolicy reloading due to not cached or expired redirections.&quot;);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedReasonRedirectChainKey);
</del><ins>+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedReasonRedirectChainKey());
</ins><span class="cx">         return Reload;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -642,7 +651,7 @@
</span><span class="cx">     // Don't reuse resources with Cache-control: no-store.
</span><span class="cx">     if (existingResource-&gt;response().cacheControlContainsNoStore()) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResourceLoader::determineRevalidationPolicy reloading due to Cache-control: no-store.&quot;);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedReasonNoStoreKey);
</del><ins>+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedReasonNoStoreKey());
</ins><span class="cx">         return Reload;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -654,7 +663,7 @@
</span><span class="cx">     // client's requests are made without CORS and some with.
</span><span class="cx">     if (existingResource-&gt;resourceRequest().allowCookies() != request.allowCookies()) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResourceLoader::determineRevalidationPolicy reloading due to difference in credentials settings.&quot;);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedReasonCredentialSettingsKey);
</del><ins>+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedReasonCredentialSettingsKey());
</ins><span class="cx">         return Reload;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -665,14 +674,14 @@
</span><span class="cx">     // CachePolicyReload always reloads
</span><span class="cx">     if (cachePolicy(type) == CachePolicyReload) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResourceLoader::determineRevalidationPolicy reloading due to CachePolicyReload.&quot;);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedReasonReloadKey);
</del><ins>+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedReasonReloadKey());
</ins><span class="cx">         return Reload;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     // We'll try to reload the resource if it failed last time.
</span><span class="cx">     if (existingResource-&gt;errorOccurred()) {
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResourceLoader::determineRevalidationPolicye reloading due to resource being in the error state&quot;);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedReasonErrorKey);
</del><ins>+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedReasonErrorKey());
</ins><span class="cx">         return Reload;
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -688,7 +697,7 @@
</span><span class="cx">         
</span><span class="cx">         // No, must reload.
</span><span class="cx">         LOG(ResourceLoading, &quot;CachedResourceLoader::determineRevalidationPolicy reloading due to missing cache validators.&quot;);
</span><del>-        FEATURE_COUNTER_INCREMENT_KEY(page, FeatureCounterResourceRequestInMemoryCacheUnusedReasonMustRevalidateNoValidatorKey);
</del><ins>+        logMemoryCacheResourceRequest(frame(), DiagnosticLoggingKeys::inMemoryCacheKey(), DiagnosticLoggingKeys::unusedReasonMustRevalidateNoValidatorKey());
</ins><span class="cx">         return Reload;
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorepageDiagnosticLoggingKeyscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -38,6 +38,11 @@
</span><span class="cx">     return ASCIILiteral(&quot;mediaFailedLoading&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::mustRevalidateIsExpiredKey()
+{
+    return ASCIILiteral(&quot;mustRevalidateIsExpired&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::pluginLoadedKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;pluginLoaded&quot;);
</span><span class="lines">@@ -83,6 +88,11 @@
</span><span class="cx">     return ASCIILiteral(&quot;pageLoaded&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::playedKey()
+{
+    return ASCIILiteral(&quot;played&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::engineFailedToLoadKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;engineFailedToLoad&quot;);
</span><span class="lines">@@ -93,6 +103,21 @@
</span><span class="cx">     return ASCIILiteral(&quot;navigation&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::noCacheKey()
+{
+    return ASCIILiteral(&quot;noCache&quot;);
+}
+
+String DiagnosticLoggingKeys::noStoreKey()
+{
+    return ASCIILiteral(&quot;noStore&quot;);
+}
+
+String DiagnosticLoggingKeys::notInMemoryCacheKey()
+{
+    return ASCIILiteral(&quot;notInMemoryCache&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::pageCacheKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;pageCache&quot;);
</span><span class="lines">@@ -118,16 +143,31 @@
</span><span class="cx">     return ASCIILiteral(&quot;mainResource&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::mediaKey()
+{
+    return ASCIILiteral(&quot;media&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::isErrorPageKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;isErrorPage&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::isExpiredKey()
+{
+    return ASCIILiteral(&quot;isExpired&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::loadedKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;loaded&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::loadingKey()
+{
+    return ASCIILiteral(&quot;loading&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::hasPluginsKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;hasPlugins&quot;);
</span><span class="lines">@@ -143,6 +183,11 @@
</span><span class="cx">     return ASCIILiteral(&quot;image&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::inMemoryCacheKey()
+{
+    return ASCIILiteral(&quot;inMemoryCache&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::hasOpenDatabasesKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;hasOpenDatabases&quot;);
</span><span class="lines">@@ -163,6 +208,11 @@
</span><span class="cx">     return ASCIILiteral(&quot;raw&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::reasonKey()
+{
+    return ASCIILiteral(&quot;reason&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::loadingAPISenseKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;loadingAPISense&quot;);
</span><span class="lines">@@ -183,6 +233,16 @@
</span><span class="cx">     return ASCIILiteral(&quot;applicationCache&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::audioKey()
+{
+    return ASCIILiteral(&quot;audio&quot;);
+}
+
+String DiagnosticLoggingKeys::cachedResourceRevalidationKey()
+{
+    return ASCIILiteral(&quot;cachedResourceRevalidation&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::deniedByClientKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;deniedByClient&quot;);
</span><span class="lines">@@ -213,6 +273,16 @@
</span><span class="cx">     return ASCIILiteral(&quot;resource&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::resourceRequestKey()
+{
+    return ASCIILiteral(&quot;resourceRequest&quot;);
+}
+
+String DiagnosticLoggingKeys::revalidatingKey()
+{
+    return ASCIILiteral(&quot;revalidating&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::reloadFromOriginKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;reloadFromOrigin&quot;);
</span><span class="lines">@@ -238,6 +308,71 @@
</span><span class="cx">     return ASCIILiteral(&quot;svgDocument&quot;);
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+String DiagnosticLoggingKeys::unusedKey()
+{
+    return ASCIILiteral(&quot;unused&quot;);
+}
+
+String DiagnosticLoggingKeys::unusedReasonCredentialSettingsKey()
+{
+    return ASCIILiteral(&quot;unused.reason.credentialSettings&quot;);
+}
+
+String DiagnosticLoggingKeys::unusedReasonErrorKey()
+{
+    return ASCIILiteral(&quot;unused.reason.error&quot;);
+}
+
+String DiagnosticLoggingKeys::unusedReasonMustRevalidateNoValidatorKey()
+{
+    return ASCIILiteral(&quot;unused.reason.mustRevalidateNoValidator&quot;);
+}
+
+String DiagnosticLoggingKeys::unusedReasonNoStoreKey()
+{
+    return ASCIILiteral(&quot;unused.reason.noStore&quot;);
+}
+
+String DiagnosticLoggingKeys::unusedReasonRedirectChainKey()
+{
+    return ASCIILiteral(&quot;unused.reason.redirectChain&quot;);
+}
+
+String DiagnosticLoggingKeys::unusedReasonReloadKey()
+{
+    return ASCIILiteral(&quot;unused.reason.reload&quot;);
+}
+
+String DiagnosticLoggingKeys::unusedReasonTypeMismatchKey()
+{
+    return ASCIILiteral(&quot;unused.reason.typeMismatch&quot;);
+}
+
+String DiagnosticLoggingKeys::usedKey()
+{
+    return ASCIILiteral(&quot;used&quot;);
+}
+
+String DiagnosticLoggingKeys::userKey()
+{
+    return ASCIILiteral(&quot;user&quot;);
+}
+
+String DiagnosticLoggingKeys::videoKey()
+{
+    return ASCIILiteral(&quot;video&quot;);
+}
+
+String DiagnosticLoggingKeys::webViewKey()
+{
+    return ASCIILiteral(&quot;webView&quot;);
+}
+
+String DiagnosticLoggingKeys::zoomedKey()
+{
+    return ASCIILiteral(&quot;zoomed&quot;);
+}
+
</ins><span class="cx"> String DiagnosticLoggingKeys::expiredKey()
</span><span class="cx"> {
</span><span class="cx">     return ASCIILiteral(&quot;expired&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorepageDiagnosticLoggingKeysh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/DiagnosticLoggingKeys.h (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/DiagnosticLoggingKeys.h        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/page/DiagnosticLoggingKeys.h        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -33,6 +33,8 @@
</span><span class="cx"> class DiagnosticLoggingKeys {
</span><span class="cx"> public:
</span><span class="cx">     static String applicationCacheKey();
</span><ins>+    static String audioKey();
+    static String cachedResourceRevalidationKey();
</ins><span class="cx">     static String cannotSuspendActiveDOMObjectsKey();
</span><span class="cx">     static String deniedByClientKey();
</span><span class="cx">     static String deviceMotionKey();
</span><span class="lines">@@ -46,16 +48,24 @@
</span><span class="cx">     static String hasPluginsKey();
</span><span class="cx">     static String httpsNoStoreKey();
</span><span class="cx">     static String imageKey();
</span><ins>+    static String inMemoryCacheKey();
</ins><span class="cx">     static String isErrorPageKey();
</span><ins>+    static String isExpiredKey();
</ins><span class="cx">     static String loadedKey();
</span><ins>+    static String loadingKey();
</ins><span class="cx">     static String loadingAPISenseKey();
</span><span class="cx">     static String mainDocumentErrorKey();
</span><span class="cx">     static String mainResourceKey();
</span><ins>+    static String mediaKey();
</ins><span class="cx">     static String mediaLoadedKey();
</span><span class="cx">     static String mediaLoadingFailedKey();
</span><ins>+    static String mustRevalidateIsExpiredKey();
</ins><span class="cx">     static String navigationKey();
</span><ins>+    static String noCacheKey();
</ins><span class="cx">     static String noCurrentHistoryItemKey();
</span><span class="cx">     static String noDocumentLoaderKey();
</span><ins>+    static String noStoreKey();
+    static String notInMemoryCacheKey();
</ins><span class="cx">     static String otherKey();
</span><span class="cx">     static String pageCacheKey();
</span><span class="cx">     static String pageContainsAtLeastOneMediaEngineKey();
</span><span class="lines">@@ -63,6 +73,7 @@
</span><span class="cx">     static String pageContainsMediaEngineKey();
</span><span class="cx">     static String pageContainsPluginKey();
</span><span class="cx">     static String pageLoadedKey();
</span><ins>+    static String playedKey();
</ins><span class="cx">     static String pluginLoadedKey();
</span><span class="cx">     static String pluginLoadingFailedKey();
</span><span class="cx">     static String prunedDueToCapacityReached();
</span><span class="lines">@@ -70,13 +81,29 @@
</span><span class="cx">     static String prunedDueToProcessSuspended();
</span><span class="cx">     static String quirkRedirectComingKey();
</span><span class="cx">     static String rawKey();
</span><ins>+    static String reasonKey();
</ins><span class="cx">     static String reloadFromOriginKey();
</span><span class="cx">     static String reloadKey();
</span><span class="cx">     static String resourceKey();
</span><ins>+    static String resourceRequestKey();
+    static String revalidatingKey();
</ins><span class="cx">     static String sameLoadKey();
</span><span class="cx">     static String scriptKey();
</span><span class="cx">     static String styleSheetKey();
</span><span class="cx">     static String svgDocumentKey();
</span><ins>+    static String unusedKey();
+    static String unusedReasonCredentialSettingsKey();
+    static String unusedReasonErrorKey();
+    static String unusedReasonMustRevalidateNoValidatorKey();
+    static String unusedReasonNoStoreKey();
+    static String unusedReasonRedirectChainKey();
+    static String unusedReasonReloadKey();
+    static String unusedReasonTypeMismatchKey();
+    static String usedKey();
+    static String userKey();
+    static String videoKey();
+    static String webViewKey();
+    static String zoomedKey();
</ins><span class="cx"> 
</span><span class="cx">     // Success / Failure keys.
</span><span class="cx">     static String successKey();
</span></span></pre></div>
<a id="trunkSourceWebCorepageSettingsin"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/page/Settings.in (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/page/Settings.in        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/page/Settings.in        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -77,7 +77,6 @@
</span><span class="cx"> scriptMarkupEnabled initial=true
</span><span class="cx"> needsSiteSpecificQuirks initial=false
</span><span class="cx"> domTimersThrottlingEnabled initial=true
</span><del>-featureCounterEnabled initial=false
</del><span class="cx"> webArchiveDebugModeEnabled initial=false, conditional=WEB_ARCHIVE
</span><span class="cx"> localFileContentSniffingEnabled initial=false
</span><span class="cx"> offlineWebApplicationCacheEnabled initial=false
</span></span></pre></div>
<a id="trunkSourceWebCoreplatformFeatureCountercpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/FeatureCounter.cpp (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/FeatureCounter.cpp        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/platform/FeatureCounter.cpp        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1,67 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include &quot;config.h&quot;
-#include &quot;FeatureCounter.h&quot;
-
-#include &quot;Page.h&quot;
-#include &quot;Settings.h&quot;
-
-namespace WebCore {
-
-bool FeatureCounter::shouldUseForPage(Page* page)
-{
-    if (!page)
-        return false;
-
-    // Log only if the setting is enabled.
-    if (!page-&gt;settings().featureCounterEnabled())
-        return false;
-
-    // Do not log if this is a private session.
-    if (page-&gt;usesEphemeralSession())
-        return false;
-
-    return true;
-}
-
-#if !PLATFORM(IOS) || !USE(APPLE_INTERNAL_SDK)
-
-void FeatureCounter::incrementKey(Page* page, const char* const key)
-{
-    UNUSED_PARAM(page);
-    ASSERT_UNUSED(key, key);
-}
-
-void FeatureCounter::setKey(Page* page, const char* const key, int64_t value)
-{
-    UNUSED_PARAM(page);
-    ASSERT_UNUSED(key, key);
-    UNUSED_PARAM(value);
-}
-
-#endif
-
-} // namespace WebCore
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformFeatureCounterh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/FeatureCounter.h (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/FeatureCounter.h        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/platform/FeatureCounter.h        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1,49 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FeatureCounter_h
-#define FeatureCounter_h
-
-#include &quot;FeatureCounterKeys.h&quot;
-
-namespace WebCore {
-
-class Page;
-
-class FeatureCounter {
-public:
-    WEBCORE_EXPORT static void incrementKey(Page*, const char* const key);
-    WEBCORE_EXPORT static void setKey(Page*, const char* const key, int64_t value);
-
-private:
-    static bool shouldUseForPage(Page*);
-};
-
-} // namespace WebCore
-
-#define FEATURE_COUNTER_INCREMENT_KEY(page, key)   WebCore::FeatureCounter::incrementKey(page, key)
-#define FEATURE_COUNTER_SET_KEY(page, key, value)  WebCore::FeatureCounter::setKey(page, key, value)
-
-#endif // FeatureCounter_h
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformFeatureCounterKeysh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/FeatureCounterKeys.h (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/FeatureCounterKeys.h        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/platform/FeatureCounterKeys.h        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1,66 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef FeatureCounterKeys_h
-#define FeatureCounterKeys_h
-
-namespace WebCore {
-
-// Cached resources revalidation.
-static const char FeatureCounterCachedResourceRevalidationSuccessKey[] = &quot;com.apple.WebKit.cachedResourceRevalidation.success&quot;;
-static const char FeatureCounterCachedResourceRevalidationFailureKey[] = &quot;com.apple.WebKit.cachedResourceRevalidation.failure&quot;;
-static const char FeatureCounterCachedResourceRevalidationReasonReloadKey[] = &quot;com.apple.WebKit.cachedResourceRevalidation.reason.reload&quot;;
-static const char FeatureCounterCachedResourceRevalidationReasonNoCacheKey[] = &quot;com.apple.WebKit.cachedResourceRevalidation.reason.noCache&quot;;
-static const char FeatureCounterCachedResourceRevalidationReasonNoStoreKey[] = &quot;com.apple.WebKit.cachedResourceRevalidation.reason.noStore&quot;;
-static const char FeatureCounterCachedResourceRevalidationReasonMustRevalidateIsExpiredKey[] = &quot;com.apple.WebKit.cachedResourceRevalidation.reason.mustRevalidateIsExpired&quot;;
-static const char FeatureCounterCachedResourceRevalidationReasonIsExpiredKey[] = &quot;com.apple.WebKit.cachedResourceRevalidation.reason.isExpired&quot;;
-
-// Media playback.
-static const char FeatureCounterMediaVideoElementLoadingKey[] = &quot;com.apple.WebKit.media.video.loading&quot;;
-static const char FeatureCounterMediaAudioElementLoadingKey[] = &quot;com.apple.WebKit.media.audio.loading&quot;;
-static const char FeatureCounterMediaVideoElementPlayedKey[] = &quot;com.apple.WebKit.media.video.played&quot;;
-static const char FeatureCounterMediaAudioElementPlayedKey[] = &quot;com.apple.WebKit.media.audio.played&quot;;
-
-// Memory cache.
-static const char FeatureCounterResourceRequestInMemoryCacheKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache&quot;;
-static const char FeatureCounterResourceRequestNotInMemoryCacheKey[] = &quot;com.apple.WebKit.resourceRequest.notInMemoryCache&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUsedKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.used&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheRevalidatingKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.revalidating&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedReasonNoStoreKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused.reason.noStore&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedReasonTypeMismatchKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused.reason.typeMismatch&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedReasonRedirectChainKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused.reason.redirectChain&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedReasonCredentialSettingsKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused.reason.credentialSettings&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedReasonReloadKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused.reason.reload&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedReasonErrorKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused.reason.error&quot;;
-static const char FeatureCounterResourceRequestInMemoryCacheUnusedReasonMustRevalidateNoValidatorKey[] = &quot;com.apple.WebKit.resourceRequest.inMemoryCache.unused.reason.mustRevalidateNoValidator&quot;;
-
-// WebView user actions.
-static const char FeatureCounterWebViewUserZoomedKey[] = &quot;com.apple.WebKit.webView.user.zoomed&quot;;
-
-} // namespace WebCore
-
-#endif // FeatureCounterKeys_h
-
</del></span></pre></div>
<a id="trunkSourceWebCoreplatformiosFeatureCountermm"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/platform/ios/FeatureCounter.mm (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/platform/ios/FeatureCounter.mm        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebCore/platform/ios/FeatureCounter.mm        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1,58 +0,0 @@
</span><del>-/*
- * Copyright (C) 2014 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer.
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS &quot;AS IS&quot; AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import &quot;config.h&quot;
-#import &quot;FeatureCounter.h&quot;
-
-#if PLATFORM(IOS) &amp;&amp; USE(APPLE_INTERNAL_SDK)
-#import &lt;AppSupport/CPAggregateDictionary.h&gt;
-#include &lt;wtf/RetainPtr.h&gt;
-
-namespace WebCore {
-
-void FeatureCounter::incrementKey(Page* page, const char* const key)
-{
-    ASSERT(key);
-    if (!shouldUseForPage(page))
-        return;
-
-    RetainPtr&lt;NSString&gt; nsKey = adoptNS([[NSString alloc] initWithCharactersNoCopy:reinterpret_cast&lt;unichar*&gt;(const_cast&lt;char*&gt;(key)) length:strlen(key) freeWhenDone:NO]);
-    [[CPAggregateDictionary sharedAggregateDictionary] incrementKey:nsKey.get()];
-}
-
-void FeatureCounter::setKey(Page* page, const char* const key, int64_t value)
-{
-    ASSERT(key);
-    if (!shouldUseForPage(page))
-        return;
-
-    RetainPtr&lt;NSString&gt; nsKey = adoptNS([[NSString alloc] initWithCharactersNoCopy:reinterpret_cast&lt;unichar*&gt;(const_cast&lt;char*&gt;(key)) length:strlen(key) freeWhenDone:NO]);
-    [[CPAggregateDictionary sharedAggregateDictionary] setValue:value forScalarKey:nsKey.get()];
-}
-
-} // namespace WebCore
-
-#endif // PLATFORM(IOS) &amp;&amp; USE(APPLE_INTERNAL_SDK)
-
</del></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebKit2/ChangeLog        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -1,3 +1,27 @@
</span><ins>+2015-01-22  Chris Dumez  &lt;cdumez@apple.com&gt;
+
+        Drop the legacy FeatureCounter class
+        https://bugs.webkit.org/show_bug.cgi?id=140749
+
+        Reviewed by Andreas Kling.
+
+        Drop the legacy FeatureCounter class and use DiagnosticLoggingClient
+        instead.
+
+        * Shared/WebPreferencesDefinitions.h:
+        * UIProcess/API/Cocoa/WKWebView.mm:
+        (-[WKWebView initWithFrame:configuration:]):
+        * UIProcess/API/Cocoa/WKWebViewConfiguration.mm:
+        (-[WKWebViewConfiguration init]):
+        (-[WKWebViewConfiguration copyWithZone:]):
+        (-[WKWebViewConfiguration _featureCounterEnabled]):
+        (-[WKWebViewConfiguration _setFeatureCounterEnabled:]):
+        * UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h:
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::updatePreferences):
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::willStartUserTriggeredZooming):
+
</ins><span class="cx"> 2015-01-22  Beth Dakin  &lt;bdakin@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         ibtoold crash below -[WebView close]
</span></span></pre></div>
<a id="trunkSourceWebKit2SharedWebPreferencesDefinitionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebKit2/Shared/WebPreferencesDefinitions.h        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -120,7 +120,6 @@
</span><span class="cx">     macro(TabsToLinks, tabsToLinks, Bool, bool, DEFAULT_WEBKIT_TABSTOLINKS_ENABLED) \
</span><span class="cx">     macro(DNSPrefetchingEnabled, dnsPrefetchingEnabled, Bool, bool, false) \
</span><span class="cx">     macro(DOMTimersThrottlingEnabled, domTimersThrottlingEnabled, Bool, bool, true) \
</span><del>-    macro(FeatureCounterEnabled, featureCounterEnabled, Bool, bool, false) \
</del><span class="cx">     macro(WebArchiveDebugModeEnabled, webArchiveDebugModeEnabled, Bool, bool, false) \
</span><span class="cx">     macro(LocalFileContentSniffingEnabled, localFileContentSniffingEnabled, Bool, bool, false) \
</span><span class="cx">     macro(UsesPageCache, usesPageCache, Bool, bool, true) \
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebView.mm        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -303,7 +303,6 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::mediaPlaybackAllowsInlineKey(), WebKit::WebPreferencesStore::Value(!![_configuration allowsInlineMediaPlayback]));
</span><span class="cx">     webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::allowsAlternateFullscreenKey(), WebKit::WebPreferencesStore::Value(!![_configuration _allowsAlternateFullscreen]));
</span><del>-    webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::featureCounterEnabledKey(), WebKit::WebPreferencesStore::Value(!![_configuration _featureCounterEnabled]));
</del><span class="cx">     webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::mediaPlaybackRequiresUserGestureKey(), WebKit::WebPreferencesStore::Value(!![_configuration mediaPlaybackRequiresUserAction]));
</span><span class="cx">     webPageConfiguration.preferenceValues.set(WebKit::WebPreferencesKey::mediaPlaybackAllowsAirPlayKey(), WebKit::WebPreferencesStore::Value(!![_configuration mediaPlaybackAllowsAirPlay]));
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewConfigurationmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfiguration.mm        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -93,7 +93,6 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     LazyInitialized&lt;RetainPtr&lt;WKWebViewContentProviderRegistry&gt;&gt; _contentProviderRegistry;
</span><span class="cx">     BOOL _allowsAlternateFullscreen;
</span><del>-    BOOL _featureCounterEnabled;
</del><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -106,7 +105,6 @@
</span><span class="cx">     _mediaPlaybackRequiresUserAction = YES;
</span><span class="cx">     _mediaPlaybackAllowsAirPlay = YES;
</span><span class="cx">     _allowsAlternateFullscreen = YES;
</span><del>-    _featureCounterEnabled = NO;
</del><span class="cx"> #endif
</span><span class="cx">     
</span><span class="cx">     return self;
</span><span class="lines">@@ -138,7 +136,6 @@
</span><span class="cx"> #if PLATFORM(IOS)
</span><span class="cx">     configuration-&gt;_allowsInlineMediaPlayback = self-&gt;_allowsInlineMediaPlayback;
</span><span class="cx">     configuration-&gt;_allowsAlternateFullscreen = self-&gt;_allowsAlternateFullscreen;
</span><del>-    configuration-&gt;_featureCounterEnabled = self-&gt;_featureCounterEnabled;
</del><span class="cx">     configuration-&gt;_mediaPlaybackRequiresUserAction = self-&gt;_mediaPlaybackRequiresUserAction;
</span><span class="cx">     configuration-&gt;_mediaPlaybackAllowsAirPlay = self-&gt;_mediaPlaybackAllowsAirPlay;
</span><span class="cx">     configuration-&gt;_selectionGranularity = self-&gt;_selectionGranularity;
</span><span class="lines">@@ -298,12 +295,11 @@
</span><span class="cx"> 
</span><span class="cx"> - (BOOL)_featureCounterEnabled
</span><span class="cx"> {
</span><del>-    return _featureCounterEnabled;
</del><ins>+    return NO;
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> - (void)_setFeatureCounterEnabled:(BOOL)featureCounterEnabled
</span><span class="cx"> {
</span><del>-    _featureCounterEnabled = featureCounterEnabled;
</del><span class="cx"> }
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2UIProcessAPICocoaWKWebViewConfigurationPrivateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebKit2/UIProcess/API/Cocoa/WKWebViewConfigurationPrivate.h        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -44,6 +44,8 @@
</span><span class="cx"> 
</span><span class="cx"> #if TARGET_OS_IPHONE
</span><span class="cx"> @property (nonatomic, setter=_setAllowsAlternateFullscreen:) BOOL _allowsAlternateFullscreen WK_AVAILABLE(NA, WK_IOS_TBA);
</span><ins>+
+// FIXME: Remove the following property once the client side has been updated.
</ins><span class="cx"> @property (nonatomic, setter=_setFeatureCounterEnabled:) BOOL _featureCounterEnabled WK_AVAILABLE(NA, WK_IOS_TBA);
</span><span class="cx"> #endif
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebPagecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -2720,7 +2720,6 @@
</span><span class="cx">     settings.setForceFTPDirectoryListings(store.getBoolValueForKey(WebPreferencesKey::forceFTPDirectoryListingsKey()));
</span><span class="cx">     settings.setDNSPrefetchingEnabled(store.getBoolValueForKey(WebPreferencesKey::dnsPrefetchingEnabledKey()));
</span><span class="cx">     settings.setDOMTimersThrottlingEnabled(store.getBoolValueForKey(WebPreferencesKey::domTimersThrottlingEnabledKey()));
</span><del>-    settings.setFeatureCounterEnabled(store.getBoolValueForKey(WebPreferencesKey::featureCounterEnabledKey()));
</del><span class="cx"> #if ENABLE(WEB_ARCHIVE)
</span><span class="cx">     settings.setWebArchiveDebugModeEnabled(store.getBoolValueForKey(WebPreferencesKey::webArchiveDebugModeEnabledKey()));
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageiosWebPageIOSmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm (178948 => 178949)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2015-01-22 22:17:32 UTC (rev 178948)
+++ trunk/Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm        2015-01-22 22:19:46 UTC (rev 178949)
</span><span class="lines">@@ -51,10 +51,11 @@
</span><span class="cx"> #import &lt;CoreText/CTFont.h&gt;
</span><span class="cx"> #import &lt;WebCore/Chrome.h&gt;
</span><span class="cx"> #import &lt;WebCore/DNS.h&gt;
</span><ins>+#import &lt;WebCore/DiagnosticLoggingClient.h&gt;
+#import &lt;WebCore/DiagnosticLoggingKeys.h&gt;
</ins><span class="cx"> #import &lt;WebCore/Element.h&gt;
</span><span class="cx"> #import &lt;WebCore/ElementAncestorIterator.h&gt;
</span><span class="cx"> #import &lt;WebCore/EventHandler.h&gt;
</span><del>-#import &lt;WebCore/FeatureCounter.h&gt;
</del><span class="cx"> #import &lt;WebCore/FloatQuad.h&gt;
</span><span class="cx"> #import &lt;WebCore/FocusController.h&gt;
</span><span class="cx"> #import &lt;WebCore/Frame.h&gt;
</span><span class="lines">@@ -2692,7 +2693,7 @@
</span><span class="cx"> 
</span><span class="cx"> void WebPage::willStartUserTriggeredZooming()
</span><span class="cx"> {
</span><del>-    FEATURE_COUNTER_INCREMENT_KEY(m_page.get(), FeatureCounterWebViewUserZoomedKey);
</del><ins>+    m_page-&gt;mainFrame().diagnosticLoggingClient().logDiagnosticMessageWithValue(DiagnosticLoggingKeys::webViewKey(), DiagnosticLoggingKeys::userKey(), DiagnosticLoggingKeys::zoomedKey());
</ins><span class="cx">     m_userHasChangedPageScaleFactor = true;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>