Title: [212994] trunk
Revision
212994
Author
joep...@webkit.org
Date
2017-02-24 23:50:08 -0800 (Fri, 24 Feb 2017)

Log Message

[Resource Timing] Media elements initiated loads should set the initiatorType to their element name (video/audio)
https://bugs.webkit.org/show_bug.cgi?id=168680

Reviewed by Youenn Fablet.

LayoutTests/imported/w3c:

* web-platform-tests/resource-timing/rt-initiatorType-media-expected.txt:
Progression on the initiatorType.

Source/WebCore:

* html/HTMLMediaElement.cpp:
(WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader):
Pass in the element so it may be used as the initiator.

* html/HTMLVideoElement.h:
Export create() for TestWebKitAPI to use.

* loader/MediaResourceLoader.cpp:
(WebCore::MediaResourceLoader::MediaResourceLoader):
(WebCore::MediaResourceLoader::contextDestroyed):
(WebCore::MediaResourceLoader::requestResource):
* loader/MediaResourceLoader.h:
Include the HTMLMediaElement as the initiator.

Tools:

* TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm:
(TestWebKitAPI::WebCoreNSURLSessionTest::SetUp):
Include a dummy HTMLVideoElement.

Modified Paths

Diff

Modified: trunk/LayoutTests/imported/w3c/ChangeLog (212993 => 212994)


--- trunk/LayoutTests/imported/w3c/ChangeLog	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/LayoutTests/imported/w3c/ChangeLog	2017-02-25 07:50:08 UTC (rev 212994)
@@ -1,5 +1,15 @@
 2017-02-24  Joseph Pecoraro  <pecor...@apple.com>
 
+        [Resource Timing] Media elements initiated loads should set the initiatorType to their element name (video/audio)
+        https://bugs.webkit.org/show_bug.cgi?id=168680
+
+        Reviewed by Youenn Fablet.
+
+        * web-platform-tests/resource-timing/rt-initiatorType-media-expected.txt:
+        Progression on the initiatorType.
+
+2017-02-24  Joseph Pecoraro  <pecor...@apple.com>
+
         [Resource Timing] Gather timing information with reliable responseEnd time
         https://bugs.webkit.org/show_bug.cgi?id=168351
 

Modified: trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-media-expected.txt (212993 => 212994)


--- trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-media-expected.txt	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/LayoutTests/imported/w3c/web-platform-tests/resource-timing/rt-initiatorType-media-expected.txt	2017-02-25 07:50:08 UTC (rev 212994)
@@ -1,8 +1,8 @@
 Resource Timing: Element localName initiatorType
 
 
-FAIL Type: video - <video src> assert_equals: initiatorType should be 'video' expected "video" but got "other"
+PASS Type: video - <video src> 
 PASS Timing: video - <video src> 
-FAIL Type: audio - <audio src> assert_equals: name should be the url expected "http://localhost:8800/resource-timing/resources/data.json?audio&0.7734679755996403" but got "http://localhost:8800/resource-timing/resources/data.json?video&0.5872075656484804"
+FAIL Type: audio - <audio src> assert_equals: name should be the url expected "http://localhost:8800/resource-timing/resources/data.json?audio&0.033975899379337426" but got "http://localhost:8800/resource-timing/resources/data.json?video&0.019321360269903165"
 PASS Timing: audio - <audio src> 
 

Modified: trunk/Source/WebCore/ChangeLog (212993 => 212994)


--- trunk/Source/WebCore/ChangeLog	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/Source/WebCore/ChangeLog	2017-02-25 07:50:08 UTC (rev 212994)
@@ -1,5 +1,26 @@
 2017-02-24  Joseph Pecoraro  <pecor...@apple.com>
 
+        [Resource Timing] Media elements initiated loads should set the initiatorType to their element name (video/audio)
+        https://bugs.webkit.org/show_bug.cgi?id=168680
+
+        Reviewed by Youenn Fablet.
+
+        * html/HTMLMediaElement.cpp:
+        (WebCore::HTMLMediaElement::mediaPlayerCreateResourceLoader):
+        Pass in the element so it may be used as the initiator.
+
+        * html/HTMLVideoElement.h:
+        Export create() for TestWebKitAPI to use.
+
+        * loader/MediaResourceLoader.cpp:
+        (WebCore::MediaResourceLoader::MediaResourceLoader):
+        (WebCore::MediaResourceLoader::contextDestroyed):
+        (WebCore::MediaResourceLoader::requestResource):
+        * loader/MediaResourceLoader.h:
+        Include the HTMLMediaElement as the initiator.
+
+2017-02-24  Joseph Pecoraro  <pecor...@apple.com>
+
         [Resource Timing] Gather timing information with reliable responseEnd time
         https://bugs.webkit.org/show_bug.cgi?id=168351
 

Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (212993 => 212994)


--- trunk/Source/WebCore/html/HTMLMediaElement.cpp	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp	2017-02-25 07:50:08 UTC (rev 212994)
@@ -6433,7 +6433,7 @@
 
 RefPtr<PlatformMediaResourceLoader> HTMLMediaElement::mediaPlayerCreateResourceLoader()
 {
-    return adoptRef(*new MediaResourceLoader(document(), crossOrigin()));
+    return adoptRef(*new MediaResourceLoader(document(), *this, crossOrigin()));
 }
 
 bool HTMLMediaElement::mediaPlayerShouldUsePersistentCache() const

Modified: trunk/Source/WebCore/html/HTMLVideoElement.h (212993 => 212994)


--- trunk/Source/WebCore/html/HTMLVideoElement.h	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/Source/WebCore/html/HTMLVideoElement.h	2017-02-25 07:50:08 UTC (rev 212994)
@@ -37,7 +37,7 @@
 
 class HTMLVideoElement final : public HTMLMediaElement {
 public:
-    static Ref<HTMLVideoElement> create(Document&);
+    WEBCORE_EXPORT static Ref<HTMLVideoElement> create(Document&);
     static Ref<HTMLVideoElement> create(const QualifiedName&, Document&, bool createdByParser);
 
     WEBCORE_EXPORT unsigned videoWidth() const;

Modified: trunk/Source/WebCore/loader/MediaResourceLoader.cpp (212993 => 212994)


--- trunk/Source/WebCore/loader/MediaResourceLoader.cpp	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/Source/WebCore/loader/MediaResourceLoader.cpp	2017-02-25 07:50:08 UTC (rev 212994)
@@ -34,14 +34,16 @@
 #include "CachedResourceRequest.h"
 #include "CrossOriginAccessControl.h"
 #include "Document.h"
+#include "HTMLMediaElement.h"
 #include "SecurityOrigin.h"
 #include <wtf/NeverDestroyed.h>
 
 namespace WebCore {
 
-MediaResourceLoader::MediaResourceLoader(Document& document, const String& crossOriginMode)
+MediaResourceLoader::MediaResourceLoader(Document& document, HTMLMediaElement& mediaElement, const String& crossOriginMode)
     : ContextDestructionObserver(&document)
     , m_document(&document)
+    , m_mediaElement(&mediaElement)
     , m_crossOriginMode(crossOriginMode)
 {
 }
@@ -55,6 +57,7 @@
 {
     ContextDestructionObserver::contextDestroyed();
     m_document = nullptr;
+    m_mediaElement = nullptr;
 }
 
 RefPtr<PlatformMediaResource> MediaResourceLoader::requestResource(ResourceRequest&& request, LoadOptions options)
@@ -75,6 +78,7 @@
     // FIXME: Skip Content Security Policy check if the element that initiated this request is in a user-agent shadow tree. See <https://bugs.webkit.org/show_bug.cgi?id=155505>.
     CachedResourceRequest cacheRequest(WTFMove(request), ResourceLoaderOptions(SendCallbacks, DoNotSniffContent, bufferingPolicy, AllowStoredCredentials, ClientCredentialPolicy::MayAskClientForCredentials, FetchOptions::Credentials::Include, DoSecurityCheck, FetchOptions::Mode::NoCors, DoNotIncludeCertificateInfo, ContentSecurityPolicyImposition::DoPolicyCheck, DefersLoadingPolicy::AllowDefersLoading, cachingPolicy));
     cacheRequest.setAsPotentiallyCrossOrigin(m_crossOriginMode, *m_document);
+    cacheRequest.setInitiator(*m_mediaElement);
 
     CachedResourceHandle<CachedRawResource> resource = m_document->cachedResourceLoader().requestMedia(WTFMove(cacheRequest));
     if (!resource)

Modified: trunk/Source/WebCore/loader/MediaResourceLoader.h (212993 => 212994)


--- trunk/Source/WebCore/loader/MediaResourceLoader.h	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/Source/WebCore/loader/MediaResourceLoader.h	2017-02-25 07:50:08 UTC (rev 212994)
@@ -39,11 +39,12 @@
 
 class CachedRawResource;
 class Document;
+class HTMLMediaElement;
 class MediaResource;
 
 class MediaResourceLoader final : public PlatformMediaResourceLoader, public ContextDestructionObserver {
 public:
-    WEBCORE_EXPORT MediaResourceLoader(Document&, const String& crossOriginMode);
+    WEBCORE_EXPORT MediaResourceLoader(Document&, HTMLMediaElement&, const String& crossOriginMode);
     WEBCORE_EXPORT virtual ~MediaResourceLoader();
 
     RefPtr<PlatformMediaResource> requestResource(ResourceRequest&&, LoadOptions) final;
@@ -56,6 +57,7 @@
     void contextDestroyed() override;
 
     Document* m_document;
+    RefPtr<HTMLMediaElement> m_mediaElement;
     String m_crossOriginMode;
     HashSet<MediaResource*> m_resources;
 };

Modified: trunk/Tools/ChangeLog (212993 => 212994)


--- trunk/Tools/ChangeLog	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/Tools/ChangeLog	2017-02-25 07:50:08 UTC (rev 212994)
@@ -1,3 +1,14 @@
+2017-02-24  Joseph Pecoraro  <pecor...@apple.com>
+
+        [Resource Timing] Media elements initiated loads should set the initiatorType to their element name (video/audio)
+        https://bugs.webkit.org/show_bug.cgi?id=168680
+
+        Reviewed by Youenn Fablet.
+
+        * TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm:
+        (TestWebKitAPI::WebCoreNSURLSessionTest::SetUp):
+        Include a dummy HTMLVideoElement.
+
 2017-02-24  Wenson Hsieh  <wenson_hs...@apple.com>
 
         Unreviewed, temporarily disable all data interaction tests.

Modified: trunk/Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm (212993 => 212994)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm	2017-02-25 05:48:51 UTC (rev 212993)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/cocoa/WebCoreNSURLSession.mm	2017-02-25 07:50:08 UTC (rev 212994)
@@ -36,6 +36,7 @@
 #import <WebCore/PageConfiguration.h>
 #import <WebCore/Document.h>
 #import <WebCore/DocumentLoader.h>
+#import <WebCore/HTMLVideoElement.h>
 #import <WebCore/MediaResourceLoader.h>
 #import <WebCore/Settings.h>
 #import <WebCore/SubresourceLoader.h>
@@ -108,6 +109,7 @@
     Frame* frame { nullptr };
     TestNSURLSessionDataDelegate *delegate { nil };
     RefPtr<MediaResourceLoader> loader;
+    RefPtr<HTMLMediaElement> mediaElement;
 
     virtual void SetUp()
     {
@@ -123,7 +125,8 @@
 
         delegate = [[TestNSURLSessionDataDelegate alloc] init];
         frame = [view _mainCoreFrame];
-        loader = adoptRef(new MediaResourceLoader(*frame->document(), emptyString()));
+        mediaElement = HTMLVideoElement::create(*frame->document());
+        loader = adoptRef(new MediaResourceLoader(*frame->document(), *mediaElement.get(), emptyString()));
     }
 
     virtual void TearDown()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to