WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
166772
Add support for MediaKeys.setServerCertificate()
https://bugs.webkit.org/show_bug.cgi?id=166772
Summary
Add support for MediaKeys.setServerCertificate()
Jer Noble
Reported
2017-01-06 10:24:37 PST
Add support for MediaKeys.setServerCertificate()
Attachments
Patch
(16.09 KB, patch)
2017-01-06 13:16 PST
,
Jer Noble
darin
: review+
buildbot
: commit-queue-
Details
Formatted Diff
Diff
Archive of layout-test-results from ews100 for mac-elcapitan
(938.58 KB, application/zip)
2017-01-06 14:18 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews107 for mac-elcapitan-wk2
(950.19 KB, application/zip)
2017-01-06 14:23 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews115 for mac-elcapitan
(1.60 MB, application/zip)
2017-01-06 14:30 PST
,
Build Bot
no flags
Details
Patch for landing
(18.16 KB, patch)
2017-01-06 15:10 PST
,
Jer Noble
no flags
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Jer Noble
Comment 1
2017-01-06 13:16:35 PST
Created
attachment 298221
[details]
Patch
Darin Adler
Comment 2
2017-01-06 13:27:39 PST
Comment on
attachment 298221
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=298221&action=review
> Source/WebCore/Modules/encryptedmedia/CDM.cpp:629 > + return m_private ? m_private->supportsServerCertificates() : false;
I prefer "a && b" over "a ? b : false".
> Source/WebCore/Modules/encryptedmedia/CDM.h:74 > + bool supportsServerCertificates();
const?
> Source/WebCore/Modules/encryptedmedia/CDMPrivate.h:54 > + virtual bool supportsServerCertificates() = 0;
const?
> Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:79 > + Ref<ArrayBuffer> certificate = ArrayBuffer::create(serverCertificate.data(), serverCertificate.length());
please use auto here
> Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:93 > + promise->resolve<IDLBoolean>(true);
Is this really the right way to resolve a promise with a boolean true? It seems strange that "IDL" is mentioned here.
> Source/WebCore/testing/MockCDMFactory.cpp:138 > + return m_factory ? m_factory->supportsServerCertificates() : false;
Same comment about "&&" as above.
> Source/WebCore/testing/MockCDMFactory.cpp:184 > + static ASCIILiteral validCertificate { "valid" };
An ASCIILiteral is just a pointer. There is no good reason to ever have a global of this type, especially a non-const global.
> Source/WebCore/testing/MockCDMFactory.cpp:185 > + String certificateString(static_cast<const char*>(certificate.data()), certificate.byteLength());
Doesn’t seem smart to convert an array buffer into a string, copying its content, just to compare it with 5 bytes. I think we should write an overload of equalLettersIgnoringASCIICase that takes a pointer and a length, if we don’t already have one, and use that.
> Source/WebCore/testing/MockCDMFactory.cpp:187 > + if (equalIgnoringASCIICase(certificateString, String(validCertificate)))
Even without the issue above, this should be: equalLettersIgnoringASCIICase(certificateString, "valid") Significantly more efficient than equalIgnoringASCIICase when we are comparing with a string that has only appropriate characters in it (such as all letters). No need to create and destroy a String, for example, and we ever have a tighter comparison loop for this case.
Darin Adler
Comment 3
2017-01-06 13:28:20 PST
Comment on
attachment 298221
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=298221&action=review
>> Source/WebCore/testing/MockCDMFactory.cpp:185 >> + String certificateString(static_cast<const char*>(certificate.data()), certificate.byteLength()); > > Doesn’t seem smart to convert an array buffer into a string, copying its content, just to compare it with 5 bytes. I think we should write an overload of equalLettersIgnoringASCIICase that takes a pointer and a length, if we don’t already have one, and use that.
Oh, another idea that would be almost as efficient would be to just use StringView.
Build Bot
Comment 4
2017-01-06 14:18:26 PST
Comment on
attachment 298221
[details]
Patch
Attachment 298221
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.webkit.org/results/2844957
New failing tests: media/encrypted-media/mock-MediaKeys-setServerCertificate.html
Build Bot
Comment 5
2017-01-06 14:18:28 PST
Created
attachment 298225
[details]
Archive of layout-test-results from ews100 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews100 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 6
2017-01-06 14:23:26 PST
Comment on
attachment 298221
[details]
Patch
Attachment 298221
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.webkit.org/results/2844965
New failing tests: media/encrypted-media/mock-MediaKeys-setServerCertificate.html
Build Bot
Comment 7
2017-01-06 14:23:29 PST
Created
attachment 298226
[details]
Archive of layout-test-results from ews107 for mac-elcapitan-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-elcapitan-wk2 Platform: Mac OS X 10.11.6
Build Bot
Comment 8
2017-01-06 14:30:38 PST
Comment on
attachment 298221
[details]
Patch
Attachment 298221
[details]
did not pass mac-debug-ews (mac): Output:
http://webkit-queues.webkit.org/results/2844975
New failing tests: media/encrypted-media/mock-MediaKeys-setServerCertificate.html
Build Bot
Comment 9
2017-01-06 14:30:41 PST
Created
attachment 298227
[details]
Archive of layout-test-results from ews115 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews115 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Jer Noble
Comment 10
2017-01-06 14:46:09 PST
Comment on
attachment 298221
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=298221&action=review
>> Source/WebCore/Modules/encryptedmedia/CDM.cpp:629 >> + return m_private ? m_private->supportsServerCertificates() : false; > > I prefer "a && b" over "a ? b : false".
Ok.
>> Source/WebCore/Modules/encryptedmedia/CDM.h:74 >> + bool supportsServerCertificates(); > > const?
Yes!
>> Source/WebCore/Modules/encryptedmedia/CDMPrivate.h:54 >> + virtual bool supportsServerCertificates() = 0; > > const?
Yes!
>> Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:79 >> + Ref<ArrayBuffer> certificate = ArrayBuffer::create(serverCertificate.data(), serverCertificate.length()); > > please use auto here
Ok.
>> Source/WebCore/Modules/encryptedmedia/MediaKeys.cpp:93 >> + promise->resolve<IDLBoolean>(true); > > Is this really the right way to resolve a promise with a boolean true? It seems strange that "IDL" is mentioned here.
I've found that the Promise template machinery can't infer the type based on just a boolean. This may just be a pattern that's never come up before, since it seems really weird to push a boolean true into a promise, but ¯\_(ツ)_/¯
>> Source/WebCore/testing/MockCDMFactory.cpp:138 >> + return m_factory ? m_factory->supportsServerCertificates() : false; > > Same comment about "&&" as above.
Ok.
>> Source/WebCore/testing/MockCDMFactory.cpp:184 >> + static ASCIILiteral validCertificate { "valid" }; > > An ASCIILiteral is just a pointer. There is no good reason to ever have a global of this type, especially a non-const global.
Ok.
>>> Source/WebCore/testing/MockCDMFactory.cpp:185 >>> + String certificateString(static_cast<const char*>(certificate.data()), certificate.byteLength()); >> >> Doesn’t seem smart to convert an array buffer into a string, copying its content, just to compare it with 5 bytes. I think we should write an overload of equalLettersIgnoringASCIICase that takes a pointer and a length, if we don’t already have one, and use that. > > Oh, another idea that would be almost as efficient would be to just use StringView.
StringView! There's a great idea.
>> Source/WebCore/testing/MockCDMFactory.cpp:187 >> + if (equalIgnoringASCIICase(certificateString, String(validCertificate))) > > Even without the issue above, this should be: > > equalLettersIgnoringASCIICase(certificateString, "valid") > > Significantly more efficient than equalIgnoringASCIICase when we are comparing with a string that has only appropriate characters in it (such as all letters). No need to create and destroy a String, for example, and we ever have a tighter comparison loop for this case.
Will do.
Jer Noble
Comment 11
2017-01-06 15:10:31 PST
Created
attachment 298231
[details]
Patch for landing
WebKit Commit Bot
Comment 12
2017-01-10 09:26:59 PST
Comment on
attachment 298231
[details]
Patch for landing Clearing flags on attachment: 298231 Committed
r210549
: <
http://trac.webkit.org/changeset/210549
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug