Title: [236941] trunk
Revision
236941
Author
jer.no...@apple.com
Date
2018-10-08 14:12:12 -0700 (Mon, 08 Oct 2018)

Log Message

ISOTrackEncryptionBox returns incorrect defaultKeyID
https://bugs.webkit.org/show_bug.cgi?id=190368

Reviewed by Eric Carlson.

Source/WebCore:

Test: TestWebKitAPI.ISOBox.ISOProtectionSchemeInfoBox

ISOTrackEncryptionBox::parse() increments the data offset by an incorrect amount.

Drive-by fix: add EXPORT macros to all the ISO box classes so that tests can be written in TestWebKitAPI.

* WebCore.xcodeproj/project.pbxproj:
* platform/graphics/iso/ISOBox.h:
* platform/graphics/iso/ISOOriginalFormatBox.h:
* platform/graphics/iso/ISOProtectionSchemeInfoBox.h:
* platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
* platform/graphics/iso/ISOSchemeInformationBox.h:
* platform/graphics/iso/ISOSchemeTypeBox.h:
* platform/graphics/iso/ISOTrackEncryptionBox.cpp:
(WebCore::ISOTrackEncryptionBox::parse):
* platform/graphics/iso/ISOTrackEncryptionBox.h:

Tools:

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebCore/ISOBox.cpp: Added.
(TestWebKitAPI::TEST):

Modified Paths

Added Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (236940 => 236941)


--- trunk/Source/WebCore/ChangeLog	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/ChangeLog	2018-10-08 21:12:12 UTC (rev 236941)
@@ -1,3 +1,27 @@
+2018-10-08  Jer Noble  <jer.no...@apple.com>
+
+        ISOTrackEncryptionBox returns incorrect defaultKeyID
+        https://bugs.webkit.org/show_bug.cgi?id=190368
+
+        Reviewed by Eric Carlson.
+
+        Test: TestWebKitAPI.ISOBox.ISOProtectionSchemeInfoBox
+
+        ISOTrackEncryptionBox::parse() increments the data offset by an incorrect amount.
+
+        Drive-by fix: add EXPORT macros to all the ISO box classes so that tests can be written in TestWebKitAPI.
+
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/graphics/iso/ISOBox.h:
+        * platform/graphics/iso/ISOOriginalFormatBox.h:
+        * platform/graphics/iso/ISOProtectionSchemeInfoBox.h:
+        * platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h:
+        * platform/graphics/iso/ISOSchemeInformationBox.h:
+        * platform/graphics/iso/ISOSchemeTypeBox.h:
+        * platform/graphics/iso/ISOTrackEncryptionBox.cpp:
+        (WebCore::ISOTrackEncryptionBox::parse):
+        * platform/graphics/iso/ISOTrackEncryptionBox.h:
+
 2018-10-08  Antti Koivisto  <an...@apple.com>
 
         Move SystemFontDatabase to a file of its own

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (236940 => 236941)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2018-10-08 21:12:12 UTC (rev 236941)
@@ -4011,6 +4011,13 @@
 		CD5896E21CD2B15100B3BCC8 /* WebPlaybackControlsManager.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5896E01CD2B15100B3BCC8 /* WebPlaybackControlsManager.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		CD5D27781E8318E000D80A3D /* WebCoreDecompressionSession.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5D27761E8318E000D80A3D /* WebCoreDecompressionSession.h */; };
 		CD5E5B5F1A15CE54000C609E /* PageConfiguration.h in Headers */ = {isa = PBXBuildFile; fileRef = CD5E5B5E1A15CE54000C609E /* PageConfiguration.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD5FF4972162E2B7004BD86F /* ISOTrackEncryptionBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD871C661FB52B6800F0B965 /* ISOTrackEncryptionBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD5FF4992162E2BE004BD86F /* ISOBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD871C621FB52B6500F0B965 /* ISOBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD5FF49A2162E4A6004BD86F /* ISOSchemeInformationBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD871C641FB52B6700F0B965 /* ISOSchemeInformationBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD5FF49B2162E4B7004BD86F /* ISOSchemeTypeBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD871C5C1FB52B6300F0B965 /* ISOSchemeTypeBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD5FF49C2162E4CF004BD86F /* ISOProtectionSystemSpecificHeaderBox.h in Headers */ = {isa = PBXBuildFile; fileRef = 12F75A9A86EA03DAF24B7971 /* ISOProtectionSystemSpecificHeaderBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD5FF49D2162E4DB004BD86F /* ISOProtectionSchemeInfoBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD871C601FB52B6500F0B965 /* ISOProtectionSchemeInfoBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
+		CD5FF49E2162E4E8004BD86F /* ISOOriginalFormatBox.h in Headers */ = {isa = PBXBuildFile; fileRef = CD871C671FB52B6800F0B965 /* ISOOriginalFormatBox.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		CD61FE681794AADB004101EB /* MediaSourceRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = B1A942E215B5CE2200D525D1 /* MediaSourceRegistry.h */; };
 		CD62FB961AF018E70012ED7D /* GenericTaskQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = CD62FB941AF018E70012ED7D /* GenericTaskQueue.h */; settings = {ATTRIBUTES = (Private, ); }; };
 		CD641EB31818F5ED00EE4C41 /* MediaSourcePrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CD641EB11818F5ED00EE4C41 /* MediaSourcePrivate.h */; };
@@ -28580,6 +28587,13 @@
 				11310CF120BA4A1B0065A8D0 /* Invalidation.h in Headers */,
 				2D0B4AAB18DA1CCD00434DE1 /* IOSurface.h in Headers */,
 				1C21E57D183ED1FF001C289D /* IOSurfacePool.h in Headers */,
+				CD5FF4992162E2BE004BD86F /* ISOBox.h in Headers */,
+				CD5FF49E2162E4E8004BD86F /* ISOOriginalFormatBox.h in Headers */,
+				CD5FF49D2162E4DB004BD86F /* ISOProtectionSchemeInfoBox.h in Headers */,
+				CD5FF49C2162E4CF004BD86F /* ISOProtectionSystemSpecificHeaderBox.h in Headers */,
+				CD5FF49A2162E4A6004BD86F /* ISOSchemeInformationBox.h in Headers */,
+				CD5FF49B2162E4B7004BD86F /* ISOSchemeTypeBox.h in Headers */,
+				CD5FF4972162E2B7004BD86F /* ISOTrackEncryptionBox.h in Headers */,
 				71247E381FEA5F86008C08CE /* IterationCompositeOperation.h in Headers */,
 				7C30D9841F815AEC00268356 /* JSAbortController.h in Headers */,
 				7C30D9861F815AEC00268356 /* JSAbortSignal.h in Headers */,

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOBox.h (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOBox.h	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOBox.h	2018-10-08 21:12:12 UTC (rev 236941)
@@ -35,7 +35,7 @@
 
 namespace WebCore {
 
-class ISOBox {
+class WEBCORE_EXPORT ISOBox {
 public:
     virtual ~ISOBox() = default;
 
@@ -75,7 +75,7 @@
     Vector<uint8_t> m_extendedType;
 };
 
-class ISOFullBox : public ISOBox {
+class WEBCORE_EXPORT ISOFullBox : public ISOBox {
 public:
     uint8_t version() const { return m_version; }
     uint32_t flags() const { return m_flags; }

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOOriginalFormatBox.h (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOOriginalFormatBox.h	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOOriginalFormatBox.h	2018-10-08 21:12:12 UTC (rev 236941)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class ISOOriginalFormatBox : public ISOBox {
+class WEBCORE_EXPORT ISOOriginalFormatBox : public ISOBox {
 public:
     static FourCC boxTypeName() { return "frma"; }
 

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOProtectionSchemeInfoBox.h (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOProtectionSchemeInfoBox.h	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOProtectionSchemeInfoBox.h	2018-10-08 21:12:12 UTC (rev 236941)
@@ -32,10 +32,11 @@
 class ISOSchemeTypeBox;
 class ISOSchemeInformationBox;
 
-class ISOProtectionSchemeInfoBox : public ISOFullBox {
+class WEBCORE_EXPORT ISOProtectionSchemeInfoBox : public ISOFullBox {
 public:
     static FourCC boxTypeName() { return "sinf"; }
 
+    const ISOOriginalFormatBox& originalFormatBox() const { return m_originalFormatBox; }
     const ISOSchemeTypeBox* schemeTypeBox() const { return m_schemeTypeBox.get(); }
     const ISOSchemeInformationBox* schemeInformationBox() const { return m_schemeInformationBox.get(); }
 

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOProtectionSystemSpecificHeaderBox.h	2018-10-08 21:12:12 UTC (rev 236941)
@@ -31,7 +31,7 @@
 
 namespace WebCore {
 
-class ISOProtectionSystemSpecificHeaderBox : public ISOFullBox {
+class WEBCORE_EXPORT ISOProtectionSystemSpecificHeaderBox : public ISOFullBox {
 public:
     using KeyID = Vector<uint8_t>;
     static FourCC boxTypeName() { return "pssh"; }

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOSchemeInformationBox.h (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOSchemeInformationBox.h	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOSchemeInformationBox.h	2018-10-08 21:12:12 UTC (rev 236941)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class ISOSchemeInformationBox : public ISOBox {
+class WEBCORE_EXPORT ISOSchemeInformationBox : public ISOBox {
 public:
     static FourCC boxTypeName() { return "schi"; }
 

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOSchemeTypeBox.h (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOSchemeTypeBox.h	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOSchemeTypeBox.h	2018-10-08 21:12:12 UTC (rev 236941)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class ISOSchemeTypeBox : public ISOFullBox {
+class WEBCORE_EXPORT ISOSchemeTypeBox : public ISOFullBox {
 public:
     static FourCC boxTypeName() { return "schm"; }
 

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOTrackEncryptionBox.cpp (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOTrackEncryptionBox.cpp	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOTrackEncryptionBox.cpp	2018-10-08 21:12:12 UTC (rev 236941)
@@ -39,11 +39,11 @@
         return false;
 
     // unsigned int(8) reserved = 0;
-    offset += 2;
+    offset += 1;
 
     if (!m_version) {
         // unsigned int(8) reserved = 0;
-        offset += 2;
+        offset += 1;
     } else {
         int8_t cryptAndSkip = 0;
         if (!checkedRead<int8_t>(cryptAndSkip, view, offset, BigEndian))

Modified: trunk/Source/WebCore/platform/graphics/iso/ISOTrackEncryptionBox.h (236940 => 236941)


--- trunk/Source/WebCore/platform/graphics/iso/ISOTrackEncryptionBox.h	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Source/WebCore/platform/graphics/iso/ISOTrackEncryptionBox.h	2018-10-08 21:12:12 UTC (rev 236941)
@@ -29,7 +29,7 @@
 
 namespace WebCore {
 
-class ISOTrackEncryptionBox : public ISOFullBox {
+class WEBCORE_EXPORT ISOTrackEncryptionBox : public ISOFullBox {
 public:
     static FourCC boxTypeName() { return "tenc"; }
 

Modified: trunk/Tools/ChangeLog (236940 => 236941)


--- trunk/Tools/ChangeLog	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Tools/ChangeLog	2018-10-08 21:12:12 UTC (rev 236941)
@@ -1,3 +1,14 @@
+2018-10-08  Jer Noble  <jer.no...@apple.com>
+
+        ISOTrackEncryptionBox returns incorrect defaultKeyID
+        https://bugs.webkit.org/show_bug.cgi?id=190368
+
+        Reviewed by Eric Carlson.
+
+        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+        * TestWebKitAPI/Tests/WebCore/ISOBox.cpp: Added.
+        (TestWebKitAPI::TEST):
+
 2018-10-08  Alex Christensen  <achristen...@webkit.org>
 
         Remove WKBundleFileHandleRef

Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (236940 => 236941)


--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2018-10-08 21:10:47 UTC (rev 236940)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2018-10-08 21:12:12 UTC (rev 236941)
@@ -728,6 +728,7 @@
 		CD57779D211CE91F001B371E /* video-with-audio-and-web-audio.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD57779B211CE6CE001B371E /* video-with-audio-and-web-audio.html */; };
 		CD59F53419E9110D00CF1835 /* file-with-mse.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD59F53219E910AA00CF1835 /* file-with-mse.html */; };
 		CD59F53519E9110D00CF1835 /* test-mse.mp4 in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD59F53319E910BC00CF1835 /* test-mse.mp4 */; };
+		CD5FF49F2162E943004BD86F /* ISOBox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5FF4962162E27E004BD86F /* ISOBox.cpp */; };
 		CD758A6F20572EA00071834A /* video-with-paused-audio-and-playing-muted.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD758A6E20572D540071834A /* video-with-paused-audio-and-playing-muted.html */; };
 		CD78E11D1DB7EA660014A2DE /* FullscreenDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = CD78E11A1DB7EA360014A2DE /* FullscreenDelegate.mm */; };
 		CD78E11E1DB7EE2A0014A2DE /* FullscreenDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = CD78E11B1DB7EA360014A2DE /* FullscreenDelegate.html */; };
@@ -1959,6 +1960,7 @@
 		CD57779B211CE6CE001B371E /* video-with-audio-and-web-audio.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "video-with-audio-and-web-audio.html"; sourceTree = "<group>"; };
 		CD59F53219E910AA00CF1835 /* file-with-mse.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "file-with-mse.html"; sourceTree = "<group>"; };
 		CD59F53319E910BC00CF1835 /* test-mse.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "test-mse.mp4"; sourceTree = "<group>"; };
+		CD5FF4962162E27E004BD86F /* ISOBox.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ISOBox.cpp; sourceTree = "<group>"; };
 		CD758A6E20572D540071834A /* video-with-paused-audio-and-playing-muted.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "video-with-paused-audio-and-playing-muted.html"; sourceTree = "<group>"; };
 		CD773F711C5057DB0002257C /* FeatureDefines.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = FeatureDefines.xcconfig; sourceTree = "<group>"; };
 		CD78E11A1DB7EA360014A2DE /* FullscreenDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FullscreenDelegate.mm; sourceTree = "<group>"; };
@@ -2536,6 +2538,7 @@
 				7A909A731D877475007E10F8 /* IntPoint.cpp */,
 				7A909A741D877475007E10F8 /* IntRect.cpp */,
 				7A909A751D877475007E10F8 /* IntSize.cpp */,
+				CD5FF4962162E27E004BD86F /* ISOBox.cpp */,
 				14464012167A8305000BD218 /* LayoutUnit.cpp */,
 				076E507E1F45031E006E9F5A /* Logging.cpp */,
 				CE1866471F72E8F100A0CAB6 /* MarkedText.cpp */,
@@ -3863,6 +3866,7 @@
 				7A909A821D877480007E10F8 /* IntRect.cpp in Sources */,
 				7A909A831D877480007E10F8 /* IntSize.cpp in Sources */,
 				5C0BF8931DD599BD00B00328 /* IsNavigationActionTrusted.mm in Sources */,
+				CD5FF49F2162E943004BD86F /* ISOBox.cpp in Sources */,
 				5C69BDD51F82A7EF000F4F4B /* _javascript_DuringNavigation.mm in Sources */,
 				7CCE7EAD1A411A3400447C4C /* _javascript_Test.cpp in Sources */,
 				7CCE7EA51A411A0800447C4C /* _javascript_TestMac.mm in Sources */,

Added: trunk/Tools/TestWebKitAPI/Tests/WebCore/ISOBox.cpp (0 => 236941)


--- trunk/Tools/TestWebKitAPI/Tests/WebCore/ISOBox.cpp	                        (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebCore/ISOBox.cpp	2018-10-08 21:12:12 UTC (rev 236941)
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 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 INC. AND ITS CONTRIBUTORS ``AS IS''
+ * 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 INC. 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 "config.h"
+
+#include "Test.h"
+#include <_javascript_Core/DataView.h>
+#include <WebCore/ISOProtectionSchemeInfoBox.h>
+#include <WebCore/ISOSchemeInformationBox.h>
+#include <WebCore/ISOSchemeTypeBox.h>
+#include <WebCore/ISOTrackEncryptionBox.h>
+#include <wtf/text/Base64.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+static const char* base64EncodedSinfWithKeyID3 = "AAAAYXNpbmYAAAAMZnJtYW1wNGEAAAAUc2NobQAAAABjYmNzAAEAAAAAADlzY2hpAAAAMXRlbmMBAAAAAAABAAAAAAAAAAAAAAAAAAAAAAMQ1fvWuC7ZPk75iuQJMe4ztw==";
+
+TEST(ISOBox, ISOProtectionSchemeInfoBox)
+{
+    Vector<uint8_t> sinfArray;
+    ASSERT_TRUE(base64Decode(StringView(base64EncodedSinfWithKeyID3), sinfArray));
+    ASSERT_EQ(93UL, sinfArray.size());
+
+    auto view = JSC::DataView::create(ArrayBuffer::create(sinfArray.data(), sinfArray.size()), 0, sinfArray.size());
+
+    ISOProtectionSchemeInfoBox sinfBox;
+    ASSERT_TRUE(sinfBox.read(view));
+    ASSERT_EQ(FourCC('mp4a'), sinfBox.originalFormatBox().dataFormat());
+
+    auto* schemeTypeBox = sinfBox.schemeTypeBox();
+    ASSERT_NOT_NULL(schemeTypeBox);
+    ASSERT_EQ(FourCC('cbcs'), schemeTypeBox->schemeType());
+    ASSERT_EQ(1U, schemeTypeBox->schemeVersion());
+
+    auto* schemeInformationBox = sinfBox.schemeInformationBox();
+    ASSERT_NOT_NULL(schemeInformationBox);
+
+    auto* trackEncryptionBox = downcast<ISOTrackEncryptionBox>(schemeInformationBox->schemeSpecificData());
+    ASSERT_NOT_NULL(trackEncryptionBox);
+    ASSERT_FALSE(trackEncryptionBox->defaultCryptByteBlock());
+    ASSERT_FALSE(trackEncryptionBox->defaultSkipByteBlock());
+    ASSERT_EQ(1, trackEncryptionBox->defaultIsProtected());
+    ASSERT_EQ(0, trackEncryptionBox->defaultPerSampleIVSize());
+
+    Vector<uint8_t> defaultKeyID = {0, 0, 0, 0, 0, 0, 0, 3};
+    ASSERT_EQ(defaultKeyID, trackEncryptionBox->defaultKID());
+
+    Vector<uint8_t> defaultIV = {0xD5, 0xFB, 0xD6, 0xB8, 0x2E, 0xD9, 0x3E, 0x4E, 0xF9, 0x8A, 0xE4, 0x09, 0x31, 0xEE, 0x33, 0xB7};
+    ASSERT_EQ(defaultIV, trackEncryptionBox->defaultConstantIV());
+}
+
+}
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to