Title: [131779] trunk/Source/WebCore
Revision
131779
Author
jer.no...@apple.com
Date
2012-10-18 11:12:57 -0700 (Thu, 18 Oct 2012)

Log Message

Add diagnostic logging to track per-page media engine usage.
https://bugs.webkit.org/show_bug.cgi?id=99615
<rdar://problem/12476473>

Reviewed by Eric Carlson.

Add diagnostic logging triggered only once-per-page and once-per-page-per-engine.

* html/HTMLMediaElement.cpp:
(WebCore::logMediaLoadRequest): Encapsulate diagnostic logging into single static method.
(WebCore::HTMLMediaElement::mediaLoadingFailed): Call logMediaLoadRequest.
(WebCore::HTMLMediaElement::setReadyState): Ditto.
* loader/FrameLoader.cpp:
(WebCore::FrameLoader::dispatchDidCommitLoad): Reset the set of seen media engines.

Add new methods to Page to track per-page media engine diagnostic info, similar to plugin diagnostic info.
* page/Page.cpp:
(WebCore::Page::hasSeenAnyMediaEngine):
(WebCore::Page::hasSeenMediaEngine):
(WebCore::Page::sawMediaEngine):
(WebCore::Page::resetSeenMediaEngines):
* page/Page.h:

Add new static logging key definitions:
* page/DiagnosticLoggingKeys.cpp:
(WebCore::DiagnosticLoggingKeys::pageContainsMediaEngineKey):
(WebCore::DiagnosticLoggingKeys::pageContainsAtLeastOneMediaEngineKey):
* page/DiagnosticLoggingKeys.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (131778 => 131779)


--- trunk/Source/WebCore/ChangeLog	2012-10-18 18:09:05 UTC (rev 131778)
+++ trunk/Source/WebCore/ChangeLog	2012-10-18 18:12:57 UTC (rev 131779)
@@ -1,3 +1,34 @@
+2012-10-18  Jer Noble  <jer.no...@apple.com>
+
+        Add diagnostic logging to track per-page media engine usage.
+        https://bugs.webkit.org/show_bug.cgi?id=99615
+        <rdar://problem/12476473>
+
+        Reviewed by Eric Carlson.
+
+        Add diagnostic logging triggered only once-per-page and once-per-page-per-engine.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::logMediaLoadRequest): Encapsulate diagnostic logging into single static method.
+        (WebCore::HTMLMediaElement::mediaLoadingFailed): Call logMediaLoadRequest.
+        (WebCore::HTMLMediaElement::setReadyState): Ditto.
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::dispatchDidCommitLoad): Reset the set of seen media engines.
+
+        Add new methods to Page to track per-page media engine diagnostic info, similar to plugin diagnostic info.
+        * page/Page.cpp:
+        (WebCore::Page::hasSeenAnyMediaEngine):
+        (WebCore::Page::hasSeenMediaEngine):
+        (WebCore::Page::sawMediaEngine):
+        (WebCore::Page::resetSeenMediaEngines):
+        * page/Page.h:
+
+        Add new static logging key definitions:
+        * page/DiagnosticLoggingKeys.cpp:
+        (WebCore::DiagnosticLoggingKeys::pageContainsMediaEngineKey):
+        (WebCore::DiagnosticLoggingKeys::pageContainsAtLeastOneMediaEngineKey):
+        * page/DiagnosticLoggingKeys.h:
+
 2012-10-18  Michael Saboff  <msab...@apple.com>
 
         Add 8-bit path to RenderBlock::handleTrailingSpaces()

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (131778 => 131779)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2012-10-18 18:09:05 UTC (rev 131778)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2012-10-18 18:12:57 UTC (rev 131779)
@@ -1516,6 +1516,29 @@
     endProcessingMediaPlayerCallback();
 }
 
+static void logMediaLoadRequest(Page* page, const String& mediaEngine, const String& errorMessage, bool succeeded)
+{
+    if (!page || !page->settings()->diagnosticLoggingEnabled())
+        return;
+
+    ChromeClient* client = page->chrome()->client();
+
+    if (!succeeded) {
+        client->logDiagnosticMessage(DiagnosticLoggingKeys::mediaLoadingFailedKey(), errorMessage, DiagnosticLoggingKeys::failKey());
+        return;
+    }
+
+    client->logDiagnosticMessage(DiagnosticLoggingKeys::mediaLoadedKey(), mediaEngine, DiagnosticLoggingKeys::noopKey());
+
+    if (!page->hasSeenAnyMediaEngine())
+        client->logDiagnosticMessage(DiagnosticLoggingKeys::pageContainsAtLeastOneMediaEngineKey(), emptyString(), DiagnosticLoggingKeys::noopKey());
+
+    if (!page->hasSeenMediaEngine(mediaEngine))
+        client->logDiagnosticMessage(DiagnosticLoggingKeys::pageContainsMediaEngineKey(), mediaEngine, DiagnosticLoggingKeys::noopKey());
+
+    page->sawMediaEngine(mediaEngine);
+}
+
 static String stringForNetworkState(MediaPlayer::NetworkState state)
 {
     switch (state) {
@@ -1567,8 +1590,7 @@
         mediaControls()->reportedError();
     }
 
-    if (document()->page() && document()->page()->settings()->diagnosticLoggingEnabled())
-        document()->page()->chrome()->client()->logDiagnosticMessage(DiagnosticLoggingKeys::mediaLoadingFailedKey(), stringForNetworkState(error), DiagnosticLoggingKeys::failKey());
+    logMediaLoadRequest(document()->page(), String(), stringForNetworkState(error), false);
 }
 
 void HTMLMediaElement::setNetworkState(MediaPlayer::NetworkState state)
@@ -1698,8 +1720,7 @@
         if (renderer())
             renderer()->updateFromElement();
 
-        if (document()->page() && document()->page()->settings()->diagnosticLoggingEnabled())
-            document()->page()->chrome()->client()->logDiagnosticMessage(DiagnosticLoggingKeys::mediaLoadedKey(), m_player->engineDescription(), DiagnosticLoggingKeys::noopKey());
+        logMediaLoadRequest(document()->page(), m_player->engineDescription(), String(), true);
     }
 
     bool shouldUpdateDisplayState = false;

Modified: trunk/Source/WebCore/loader/FrameLoader.cpp (131778 => 131779)


--- trunk/Source/WebCore/loader/FrameLoader.cpp	2012-10-18 18:09:05 UTC (rev 131778)
+++ trunk/Source/WebCore/loader/FrameLoader.cpp	2012-10-18 18:12:57 UTC (rev 131779)
@@ -3192,8 +3192,10 @@
 
     m_client->dispatchDidCommitLoad();
 
-    if (isLoadingMainFrame())
+    if (isLoadingMainFrame()) {
         m_frame->page()->resetSeenPlugins();
+        m_frame->page()->resetSeenMediaEngines();
+    }
 
     InspectorInstrumentation::didCommitLoad(m_frame, m_documentLoader.get());
 }

Modified: trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp (131778 => 131779)


--- trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp	2012-10-18 18:09:05 UTC (rev 131778)
+++ trunk/Source/WebCore/page/DiagnosticLoggingKeys.cpp	2012-10-18 18:12:57 UTC (rev 131779)
@@ -64,6 +64,18 @@
     return key;
 }
 
+const String& DiagnosticLoggingKeys::pageContainsMediaEngineKey()
+{
+    DEFINE_STATIC_LOCAL(const String, key, (ASCIILiteral("pageContainsMediaEngine")));
+    return key;
+}
+
+const String& DiagnosticLoggingKeys::pageContainsAtLeastOneMediaEngineKey()
+{
+    DEFINE_STATIC_LOCAL(const String, key, (ASCIILiteral("pageContainsAtLeastOneMediaEngine")));
+    return key;
+}
+
 const String& DiagnosticLoggingKeys::passKey()
 {
     DEFINE_STATIC_LOCAL(const String, key, (ASCIILiteral("pass")));

Modified: trunk/Source/WebCore/page/DiagnosticLoggingKeys.h (131778 => 131779)


--- trunk/Source/WebCore/page/DiagnosticLoggingKeys.h	2012-10-18 18:09:05 UTC (rev 131778)
+++ trunk/Source/WebCore/page/DiagnosticLoggingKeys.h	2012-10-18 18:12:57 UTC (rev 131779)
@@ -39,7 +39,9 @@
     static const String& pluginLoadingFailedKey();
     static const String& pageContainsPluginKey();
     static const String& pageContainsAtLeastOnePluginKey();
-    
+    static const String& pageContainsMediaEngineKey();
+    static const String& pageContainsAtLeastOneMediaEngineKey();
+
     // Success keys
     static const String& passKey();
     static const String& failKey();

Modified: trunk/Source/WebCore/page/Page.cpp (131778 => 131779)


--- trunk/Source/WebCore/page/Page.cpp	2012-10-18 18:09:05 UTC (rev 131778)
+++ trunk/Source/WebCore/page/Page.cpp	2012-10-18 18:12:57 UTC (rev 131779)
@@ -1260,6 +1260,26 @@
     m_seenPlugins.clear();
 }
 
+bool Page::hasSeenAnyMediaEngine() const
+{
+    return !m_seenMediaEngines.isEmpty();
+}
+
+bool Page::hasSeenMediaEngine(const String& engineDescription) const
+{
+    return m_seenMediaEngines.contains(engineDescription);
+}
+
+void Page::sawMediaEngine(const String& engineDescription)
+{
+    m_seenMediaEngines.add(engineDescription);
+}
+
+void Page::resetSeenMediaEngines()
+{
+    m_seenMediaEngines.clear();
+}
+
 void Page::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
 {
     MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::Page);

Modified: trunk/Source/WebCore/page/Page.h (131778 => 131779)


--- trunk/Source/WebCore/page/Page.h	2012-10-18 18:09:05 UTC (rev 131778)
+++ trunk/Source/WebCore/page/Page.h	2012-10-18 18:12:57 UTC (rev 131779)
@@ -352,6 +352,11 @@
         void sawPlugin(const String& serviceType);
         void resetSeenPlugins();
 
+        bool hasSeenMediaEngine(const String& engineName) const;
+        bool hasSeenAnyMediaEngine() const;
+        void sawMediaEngine(const String& engineName);
+        void resetSeenMediaEngines();
+
         void reportMemoryUsage(MemoryObjectInfo*) const;
 
     private:
@@ -473,6 +478,7 @@
         bool m_scriptedAnimationsSuspended;
 
         HashSet<String> m_seenPlugins;
+        HashSet<String> m_seenMediaEngines;
     };
 
 } // namespace WebCore
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to