Bug 166002 - Remove setDOMException and a few custom bindings
Summary: Remove setDOMException and a few custom bindings
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Bindings (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Darin Adler
URL:
Keywords:
Depends on: 166451
Blocks:
  Show dependency treegraph
 
Reported: 2016-12-17 17:00 PST by Darin Adler
Modified: 2017-01-30 16:18 PST (History)
4 users (show)

See Also:


Attachments
Patch (126.66 KB, patch)
2016-12-17 17:30 PST, Darin Adler
no flags Details | Formatted Diff | Diff
Archive of layout-test-results from ews102 for mac-yosemite (1.02 MB, application/zip)
2016-12-17 18:38 PST, Build Bot
no flags Details
Archive of layout-test-results from ews106 for mac-yosemite-wk2 (1.23 MB, application/zip)
2016-12-17 18:44 PST, Build Bot
no flags Details
Archive of layout-test-results from ews117 for mac-yosemite (1.78 MB, application/zip)
2016-12-17 18:46 PST, Build Bot
no flags Details
Archive of layout-test-results from ews124 for ios-simulator-wk2 (deleted)
2016-12-18 02:15 PST, Build Bot
no flags Details
Patch (115.56 KB, patch)
2016-12-25 23:55 PST, Darin Adler
sam: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Darin Adler 2016-12-17 17:00:35 PST
Remove setDOMException and a few custom bindings
Comment 1 Darin Adler 2016-12-17 17:30:37 PST
Created attachment 297418 [details]
Patch
Comment 2 Build Bot 2016-12-17 18:38:47 PST
Comment on attachment 297418 [details]
Patch

Attachment 297418 [details] did not pass mac-ews (mac):
Output: http://webkit-queues.webkit.org/results/2746181

New failing tests:
storage/indexeddb/modern/index-cursor-1.html
storage/indexeddb/modern/index-2-private.html
storage/indexeddb/index-basics-private.html
imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-store.html
storage/indexeddb/modern/index-2.html
storage/indexeddb/modern/index-1-private.html
storage/indexeddb/mozilla/autoincrement-indexes-private.html
storage/indexeddb/mozilla/cursor-update-updates-indexes-private.html
storage/indexeddb/index-duplicate-keypaths-private.html
storage/indexeddb/mozilla/autoincrement-indexes.html
storage/indexeddb/modern/index-3-private.html
storage/indexeddb/index-duplicate-keypaths.html
storage/indexeddb/index-basics-workers.html
storage/indexeddb/index-basics.html
storage/indexeddb/lazy-index-types.html
storage/indexeddb/modern/index-cursor-1-private.html
storage/indexeddb/mozilla/cursor-update-updates-indexes.html
storage/indexeddb/modern/index-1.html
storage/indexeddb/lazy-index-types-private.html
storage/indexeddb/modern/index-3.html
Comment 3 Build Bot 2016-12-17 18:38:50 PST
Created attachment 297419 [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
Comment 4 Build Bot 2016-12-17 18:44:14 PST
Comment on attachment 297418 [details]
Patch

Attachment 297418 [details] did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.webkit.org/results/2746201

New failing tests:
storage/indexeddb/modern/index-cursor-1.html
storage/indexeddb/modern/index-1.html
storage/indexeddb/modern/index-2-private.html
imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-store.html
storage/indexeddb/modern/index-2.html
storage/indexeddb/modern/index-1-private.html
storage/indexeddb/mozilla/autoincrement-indexes-private.html
storage/indexeddb/mozilla/cursor-update-updates-indexes-private.html
storage/indexeddb/index-duplicate-keypaths-private.html
storage/indexeddb/lazy-index-types-private.html
storage/indexeddb/modern/index-3.html
storage/indexeddb/index-duplicate-keypaths.html
storage/indexeddb/index-basics-workers.html
storage/indexeddb/index-basics.html
storage/indexeddb/lazy-index-types.html
storage/indexeddb/modern/index-cursor-1-private.html
storage/indexeddb/mozilla/cursor-update-updates-indexes.html
storage/indexeddb/modern/index-3-private.html
storage/indexeddb/mozilla/autoincrement-indexes.html
storage/indexeddb/index-basics-private.html
Comment 5 Build Bot 2016-12-17 18:44:17 PST
Created attachment 297420 [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
Comment 6 Build Bot 2016-12-17 18:46:40 PST
Comment on attachment 297418 [details]
Patch

Attachment 297418 [details] did not pass mac-debug-ews (mac):
Output: http://webkit-queues.webkit.org/results/2746200

New failing tests:
storage/indexeddb/modern/index-cursor-1.html
storage/indexeddb/modern/index-2-private.html
storage/indexeddb/index-basics-private.html
imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-store.html
storage/indexeddb/modern/index-2.html
storage/indexeddb/modern/index-1-private.html
storage/indexeddb/mozilla/autoincrement-indexes-private.html
storage/indexeddb/mozilla/cursor-update-updates-indexes-private.html
storage/indexeddb/index-duplicate-keypaths-private.html
storage/indexeddb/mozilla/autoincrement-indexes.html
storage/indexeddb/modern/index-3-private.html
storage/indexeddb/index-duplicate-keypaths.html
storage/indexeddb/index-basics-workers.html
storage/indexeddb/index-basics.html
storage/indexeddb/lazy-index-types.html
storage/indexeddb/modern/index-cursor-1-private.html
storage/indexeddb/mozilla/cursor-update-updates-indexes.html
storage/indexeddb/modern/index-1.html
storage/indexeddb/lazy-index-types-private.html
storage/indexeddb/modern/index-3.html
Comment 7 Build Bot 2016-12-17 18:46:44 PST
Created attachment 297421 [details]
Archive of layout-test-results from ews117 for mac-yosemite

The attached test failures were seen while running run-webkit-tests on the mac-debug-ews.
Bot: ews117  Port: mac-yosemite  Platform: Mac OS X 10.10.5
Comment 8 Build Bot 2016-12-18 02:15:46 PST
Comment on attachment 297418 [details]
Patch

Attachment 297418 [details] did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2747877

New failing tests:
imported/w3c/web-platform-tests/IndexedDB/idbobjectstore-rename-store.html
Comment 9 Build Bot 2016-12-18 02:15:50 PST
Created attachment 297433 [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
Comment 10 Darin Adler 2016-12-25 23:55:51 PST
Created attachment 297762 [details]
Patch
Comment 11 Darin Adler 2016-12-26 01:20:54 PST
EWS passing now, so time for review.
Comment 12 Sam Weinig 2016-12-30 08:22:52 PST
Comment on attachment 297762 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=297762&action=review

> Source/WebCore/bindings/js/CallbackFunction.cpp:43
>      JSC::CallData callData;
>      if (getCallData(value, callData) == JSC::CallType::None) {

Can this use JSValue::isFunction() which doesn't require the dummy callData? (Obviously not required for this change).

> Source/WebCore/bindings/js/CallbackFunction.cpp:45
> +        auto& vm = state->vm();
> +        auto scope = DECLARE_THROW_SCOPE(vm);

I haven't decided if it makes sense to put vm in it's own variable if it is used once.  We should define a pattern we like and stick with it, but so far, I think we are a bit inconsistent.

> Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp:137
> +    CryptoOperationData ivData = cryptoOperationDataFromJSValue(state, scope, iv);

auto?

> Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp:274
> +    CryptoOperationData labelData = cryptoOperationDataFromJSValue(state, scope, labelValue);

auto?

> Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.h:45
> +    static CryptoAlgorithmIdentifier getAlgorithmIdentifier(JSC::ExecState&, JSC::ThrowScope&, JSC::JSValue);

Does this really need the get prefix? Can it be something other than 'get' if JSCryptoAlgorithmDictionary::algorithmIdentifier() is too generic. Maybe, algorithmIdentifierFromJSValue to match cryptoOperationDataFromJSValue?

> Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:92
> +static CryptoKeyFormat cryptoKeyFormatFromJSValue(ExecState& state, ThrowScope& scope, JSValue value)
>  {
> -    VM& vm = state.vm();
> -    auto scope = DECLARE_THROW_SCOPE(vm);
> -
>      String keyFormatString = value.toWTFString(&state);
> -    RETURN_IF_EXCEPTION(scope, false);
> +    RETURN_IF_EXCEPTION(scope, { });
> +
>      if (keyFormatString == "raw")
> -        result = CryptoKeyFormat::Raw;
> -    else if (keyFormatString == "pkcs8")
> -        result = CryptoKeyFormat::PKCS8;
> -    else if (keyFormatString == "spki")
> -        result = CryptoKeyFormat::SPKI;
> -    else if (keyFormatString == "jwk")
> -        result = CryptoKeyFormat::JWK;
> -    else {
> -        throwTypeError(&state, scope, ASCIILiteral("Unknown key format"));
> -        return false;
> -    }
> -    return true;
> +        return CryptoKeyFormat::Raw;
> +    if (keyFormatString == "pkcs8")
> +        return CryptoKeyFormat::PKCS8;
> +    if (keyFormatString == "spki")
> +        return CryptoKeyFormat::SPKI;
> +    if (keyFormatString == "jwk")
> +        return CryptoKeyFormat::JWK;
> +
> +    throwTypeError(&state, scope, ASCIILiteral("Unknown key format"));
> +    return { };

Different patch, but this should just be calling convert<IDLEnumeration<KeyFormat>>(...) and adding the KeyFormat idl file.

> Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:100
> +static CryptoKeyUsageBitmap cryptoKeyUsagesFromJSValue(ExecState& state, ThrowScope& scope, JSValue value)
>  {
> -    VM& vm = state.vm();
> -    auto scope = DECLARE_THROW_SCOPE(vm);
> -
>      if (!isJSArray(value)) {
>          throwTypeError(&state, scope);
> -        return false;
> +        return { };
>      }

Seems like this should be generated as well.

> Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:105
> +        String usageString = array->getIndex(&state, i).toWTFString(&state);

auto?
Comment 13 Darin Adler 2016-12-31 01:14:39 PST
Comment on attachment 297762 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=297762&action=review

>> Source/WebCore/bindings/js/CallbackFunction.cpp:43
>>      if (getCallData(value, callData) == JSC::CallType::None) {
> 
> Can this use JSValue::isFunction() which doesn't require the dummy callData? (Obviously not required for this change).

Good question; Iā€™m not sure whether the behavior is any different.

>> Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp:137
>> +    CryptoOperationData ivData = cryptoOperationDataFromJSValue(state, scope, iv);
> 
> auto?

Yes, will do.

>> Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp:274
>> +    CryptoOperationData labelData = cryptoOperationDataFromJSValue(state, scope, labelValue);
> 
> auto?

Will do.

>> Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.h:45
>> +    static CryptoAlgorithmIdentifier getAlgorithmIdentifier(JSC::ExecState&, JSC::ThrowScope&, JSC::JSValue);
> 
> Does this really need the get prefix? Can it be something other than 'get' if JSCryptoAlgorithmDictionary::algorithmIdentifier() is too generic. Maybe, algorithmIdentifierFromJSValue to match cryptoOperationDataFromJSValue?

Sure, we could change the name. I didn't even think about it. I think parseAlgorithmIdentifier is what I will call it.

>> Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:92
>> +    return { };
> 
> Different patch, but this should just be calling convert<IDLEnumeration<KeyFormat>>(...) and adding the KeyFormat idl file.

I see your point.

>> Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:100
>>      }
> 
> Seems like this should be generated as well.

Agreed.

>> Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp:105
>> +        String usageString = array->getIndex(&state, i).toWTFString(&state);
> 
> auto?

Yes, will do.
Comment 14 Darin Adler 2016-12-31 01:58:05 PST
Committed r210217: <http://trac.webkit.org/changeset/210217>
Comment 15 Chris Dumez 2017-01-30 16:18:26 PST
Comment on attachment 297762 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=297762&action=review

> Source/WebCore/bindings/js/JSStorageCustom.cpp:48
> +        return false;

This fixed <rdar://problem/30260068>.