WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
165367
[WebIDL] Add support for converting dictionaries to JS
https://bugs.webkit.org/show_bug.cgi?id=165367
Summary
[WebIDL] Add support for converting dictionaries to JS
Sam Weinig
Reported
2016-12-03 21:02:06 PST
[WebIDL] Add support for converting dictionaries to JS
Attachments
Patch
(44.19 KB, patch)
2016-12-03 21:04 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(46.98 KB, patch)
2016-12-04 07:46 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(52.05 KB, patch)
2016-12-04 08:21 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(52.46 KB, patch)
2016-12-04 10:13 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(54.27 KB, patch)
2016-12-04 10:43 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(55.44 KB, patch)
2016-12-04 12:05 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(55.44 KB, patch)
2016-12-04 12:08 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews102 for mac-yosemite
(999.05 KB, application/zip)
2016-12-04 13:16 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews106 for mac-yosemite-wk2
(1003.15 KB, application/zip)
2016-12-04 13:21 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews125 for ios-simulator-wk2
(
deleted
)
2016-12-04 13:30 PST
,
Build Bot
no flags
Details
Patch
(96.46 KB, patch)
2016-12-04 15:38 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(69.57 KB, patch)
2016-12-04 15:45 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(70.20 KB, patch)
2016-12-04 16:44 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(74.82 KB, patch)
2016-12-04 17:24 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(139.50 KB, patch)
2016-12-05 15:20 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews102 for mac-yosemite
(1.07 MB, application/zip)
2016-12-05 16:28 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews104 for mac-yosemite-wk2
(1.13 MB, application/zip)
2016-12-05 16:32 PST
,
Build Bot
no flags
Details
Archive of layout-test-results from ews124 for ios-simulator-wk2
(9.10 MB, application/zip)
2016-12-05 16:46 PST
,
Build Bot
no flags
Details
Patch
(135.48 KB, patch)
2016-12-05 16:51 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(135.50 KB, patch)
2016-12-05 16:53 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Patch
(136.00 KB, patch)
2016-12-05 23:07 PST
,
Sam Weinig
no flags
Details
Formatted Diff
Diff
Show Obsolete
(20)
View All
Add attachment
proposed patch, testcase, etc.
Sam Weinig
Comment 1
2016-12-03 21:04:05 PST
Created
attachment 296079
[details]
Patch
Sam Weinig
Comment 2
2016-12-04 07:46:54 PST
Created
attachment 296085
[details]
Patch
Sam Weinig
Comment 3
2016-12-04 08:21:19 PST
Created
attachment 296086
[details]
Patch
Sam Weinig
Comment 4
2016-12-04 10:13:45 PST
Created
attachment 296088
[details]
Patch
Sam Weinig
Comment 5
2016-12-04 10:43:46 PST
Created
attachment 296089
[details]
Patch
Sam Weinig
Comment 6
2016-12-04 12:05:50 PST
Created
attachment 296095
[details]
Patch
Sam Weinig
Comment 7
2016-12-04 12:08:19 PST
Created
attachment 296096
[details]
Patch
Build Bot
Comment 8
2016-12-04 13:16:03 PST
Comment on
attachment 296096
[details]
Patch
Attachment 296096
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.webkit.org/results/2622463
New failing tests: crypto/webkitSubtle/rsassa-pkcs1-v1_5-generate-key-with-leading-zeroes-in-exponent.html crypto/webkitSubtle/rsassa-pkcs1-v1_5-generate-key.html crypto/webkitSubtle/rsa-oaep-key-manipulation.html crypto/workers/subtle/rsa-generate-key.html crypto/subtle/rsa-oaep-generate-key.html crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html crypto/webkitSubtle/rsa-oaep-generate-non-extractable-key.html crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html
Build Bot
Comment 9
2016-12-04 13:16:07 PST
Created
attachment 296098
[details]
Archive of layout-test-results from ews102 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 10
2016-12-04 13:21:37 PST
Comment on
attachment 296096
[details]
Patch
Attachment 296096
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.webkit.org/results/2622473
New failing tests: crypto/webkitSubtle/rsassa-pkcs1-v1_5-generate-key-with-leading-zeroes-in-exponent.html crypto/webkitSubtle/rsassa-pkcs1-v1_5-generate-key.html crypto/webkitSubtle/rsa-oaep-key-manipulation.html crypto/workers/subtle/rsa-generate-key.html crypto/subtle/rsa-oaep-generate-key.html crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html crypto/webkitSubtle/rsa-oaep-generate-non-extractable-key.html crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html
Build Bot
Comment 11
2016-12-04 13:21:40 PST
Created
attachment 296099
[details]
Archive of layout-test-results from ews106 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Build Bot
Comment 12
2016-12-04 13:30:37 PST
Comment on
attachment 296096
[details]
Patch
Attachment 296096
[details]
did not pass ios-sim-ews (ios-simulator-wk2): Output:
http://webkit-queues.webkit.org/results/2622475
New failing tests: crypto/webkitSubtle/rsassa-pkcs1-v1_5-generate-key-with-leading-zeroes-in-exponent.html crypto/webkitSubtle/rsassa-pkcs1-v1_5-generate-key.html crypto/webkitSubtle/rsa-oaep-key-manipulation.html crypto/workers/subtle/rsa-generate-key.html crypto/subtle/rsa-oaep-generate-key.html crypto/subtle/rsaes-pkcs1-v1_5-generate-key.html crypto/webkitSubtle/rsa-oaep-generate-non-extractable-key.html crypto/subtle/rsaes-pkcs1-v1_5-generate-key-extractable.html crypto/subtle/rsassa-pkcs1-v1_5-generate-key.html
Build Bot
Comment 13
2016-12-04 13:30:41 PST
Created
attachment 296101
[details]
Archive of layout-test-results from ews125 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews125 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Sam Weinig
Comment 14
2016-12-04 15:38:40 PST
Created
attachment 296108
[details]
Patch
Sam Weinig
Comment 15
2016-12-04 15:45:00 PST
Created
attachment 296109
[details]
Patch
Sam Weinig
Comment 16
2016-12-04 15:45:27 PST
The content of
attachment 296101
[details]
has been deleted by Sam Weinig <
sam@webkit.org
> without providing any reason. The token used to delete this attachment was generated at 2016-12-04 15:45:25 PST.
Sam Weinig
Comment 17
2016-12-04 16:44:12 PST
Created
attachment 296111
[details]
Patch
WebKit Commit Bot
Comment 18
2016-12-04 16:45:15 PST
Attachment 296111
[details]
did not pass style-queue: ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:62: Line contains only semicolon. If this should be an empty statement, use { } instead. [whitespace/semicolon] [5] Total errors found: 1 in 50 files If any of these errors are false positives, please file a bug against check-webkit-style.
Sam Weinig
Comment 19
2016-12-04 17:24:54 PST
Created
attachment 296113
[details]
Patch
WebKit Commit Bot
Comment 20
2016-12-04 17:26:45 PST
Attachment 296113
[details]
did not pass style-queue: ERROR: Source/WebCore/bindings/js/JSDOMPromise.h:62: Line contains only semicolon. If this should be an empty statement, use { } instead. [whitespace/semicolon] [5] Total errors found: 1 in 52 files If any of these errors are false positives, please file a bug against check-webkit-style.
Darin Adler
Comment 21
2016-12-05 09:28:59 PST
Comment on
attachment 296113
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=296113&action=review
Not compiling yet on GTK/EFL, maybe because of missing include of JSDOMConvert.h somewhere? r=me assuming you get it to compile there
> Source/WebCore/bindings/generic/IDLTypes.h:43 > +template<typename Value> class DOMPromise;
I suggest omitting the identifier "Value" here.
> Source/WebCore/bindings/js/JSDOMPromise.h:63 > +#if ENABLE(SUBTLE_CRYPTO) > + || std::is_same<DOMClass, CryptoKeyPair>::value; > +#else > + ; > +#endif
I’d put the semicolon outside the #if/#endif
> Source/WebCore/bindings/js/JSDOMPromise.h:366 > +#if ENABLE(SUBTLE_CRYPTO)
I’d put a blank line after this rather than having the #if/endif in the same paragraph as the code inside.
> Source/WebCore/bindings/js/JSDOMPromise.h:368 > +template<> > +inline void DeferredPromise::resolve(const CryptoKeyPair& result)
I’d merge this onto a single line.
> Source/WebCore/bindings/js/JSDOMPromise.h:374 > + JSC::ExecState* exec = m_globalObject->globalExec();
I’d write: auto& state = *m_globalObject->globalExec();
> Source/WebCore/bindings/js/JSDOMPromise.h:376 > + resolve(*exec, toJS<IDLDictionary<CryptoKeyPair>>(*exec, *m_globalObject.get(), result));
Does *m_globalObject, need the ".get()"?
> Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1211 > + if ($dictionary->extendedAttributes->{JSGenerateToJSObject}) { > + $result .= "template<> JSC::JSObject* convertDictionaryToJS(JSC::ExecState&, JSDOMGlobalObject&, const ${className}&);\n\n"; > + }
Later I’d like us to make this be automatic based on the use of this dictionary as a return value rather than based on an extended attribute. We could still keep the extended attribute if it was needed, say, for custom bindings.
> Source/WebCore/crypto/algorithms/CryptoAlgorithmAES_CBC.cpp:106 > + callback(KeyOrKeyPair(result));
Can this use { } syntax instead of ()? Can we save a little churn by using WTFMove(result)? Same questions for all the other cases below.
> Source/WebCore/crypto/algorithms/CryptoAlgorithmRSA_OAEP.cpp:244 > + capturedCallback(KeyOrKeyPair(WTFMove(pair)));
Can we use { } syntax here instead of ()?
> Source/WebCore/crypto/mac/CryptoKeyRSAMac.cpp:275 > + CryptoKeyPair pair { WTFMove(publicKey), WTFMove(privateKey) }; > + (*localCallback)(WTFMove(pair));
Would read better as a one-liner, I think. (*localCallback)(CryptoKeyPair { WTFMove(publicKey), WTFMove(privateKey) });
> Source/WebCore/html/HTMLMediaElement.h:90 > +template<typename Value> class DOMPromise;
I would omit the identifier Value here.
Sam Weinig
Comment 22
2016-12-05 15:20:48 PST
Created
attachment 296200
[details]
Patch
WebKit Commit Bot
Comment 23
2016-12-05 15:23:40 PST
Attachment 296200
[details]
did not pass style-queue: ERROR: Source/WebCore/bindings/js/JSDOMPromise.cpp:140: Code inside a namespace should not be indented. [whitespace/indent] [4] Total errors found: 1 in 75 files If any of these errors are false positives, please file a bug against check-webkit-style.
Build Bot
Comment 24
2016-12-05 16:28:34 PST
Comment on
attachment 296200
[details]
Patch
Attachment 296200
[details]
did not pass mac-ews (mac): Output:
http://webkit-queues.webkit.org/results/2629564
New failing tests: imported/w3c/web-platform-tests/fetch/api/request/request-init-002.html imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html webaudio/audiocontext-state.html imported/w3c/web-platform-tests/fetch/api/response/response-init-002.html
Build Bot
Comment 25
2016-12-05 16:28:38 PST
Created
attachment 296213
[details]
Archive of layout-test-results from ews102 for mac-yosemite The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-yosemite Platform: Mac OS X 10.10.5
Build Bot
Comment 26
2016-12-05 16:32:36 PST
Comment on
attachment 296200
[details]
Patch
Attachment 296200
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
http://webkit-queues.webkit.org/results/2629573
New failing tests: imported/w3c/web-platform-tests/fetch/api/request/request-init-002.html imported/w3c/web-platform-tests/fetch/api/response/response-init-002.html imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html webaudio/audiocontext-state.html imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html
Build Bot
Comment 27
2016-12-05 16:32:40 PST
Created
attachment 296214
[details]
Archive of layout-test-results from ews104 for mac-yosemite-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews104 Port: mac-yosemite-wk2 Platform: Mac OS X 10.10.5
Build Bot
Comment 28
2016-12-05 16:46:06 PST
Comment on
attachment 296200
[details]
Patch
Attachment 296200
[details]
did not pass ios-sim-ews (ios-simulator-wk2): Output:
http://webkit-queues.webkit.org/results/2629629
New failing tests: imported/w3c/web-platform-tests/fetch/api/request/request-init-002.html imported/w3c/web-platform-tests/fetch/api/response/response-consume-empty.html imported/w3c/web-platform-tests/fetch/api/request/request-consume-empty.html imported/w3c/web-platform-tests/fetch/api/response/response-init-002.html
Build Bot
Comment 29
2016-12-05 16:46:11 PST
Created
attachment 296218
[details]
Archive of layout-test-results from ews124 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews124 Port: ios-simulator-wk2 Platform: Mac OS X 10.11.6
Sam Weinig
Comment 30
2016-12-05 16:51:40 PST
Created
attachment 296219
[details]
Patch
Sam Weinig
Comment 31
2016-12-05 16:53:15 PST
Created
attachment 296220
[details]
Patch
Sam Weinig
Comment 32
2016-12-05 23:07:07 PST
Created
attachment 296277
[details]
Patch
WebKit Commit Bot
Comment 33
2016-12-05 23:59:30 PST
Comment on
attachment 296277
[details]
Patch Clearing flags on attachment: 296277 Committed
r209390
: <
http://trac.webkit.org/changeset/209390
>
WebKit Commit Bot
Comment 34
2016-12-05 23:59:37 PST
All reviewed patches have been landed. Closing bug.
Jiewen Tan
Comment 35
2016-12-07 11:40:59 PST
***
Bug 163711
has been marked as a duplicate of this bug. ***
Jiewen Tan
Comment 36
2016-12-07 11:41:27 PST
***
Bug 164868
has been marked as a duplicate of this bug. ***
Darin Adler
Comment 37
2016-12-10 17:28:16 PST
Comment on
attachment 296277
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=296277&action=review
> Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:1359 > + $result .= " if (dictionary.${key}) {\n"; > + $result .= " auto ${key}Value = toJS<$IDLType>(state, globalObject, dictionary.${key});\n"; > + $result .= " result->putDirect(vm, JSC::Identifier::fromString(&vm, \"${key}\"), ${key}Value);\n"; > + $result .= " }\n";
While working on
bug 165736
I realized that this works for optional values represented by data members of type RefPtr<>, but doesn’t work with data members of the type std::optional<> or WTF::String. My patch attached to that bug makes it work for those additional types but does not deploy a clean strategy to work across all types.
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