Remove unused/rarely used bindings helpers
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Jan 2017 23:38:47 +0000 (23:38 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Jan 2017 23:38:47 +0000 (23:38 +0000)
https://bugs.webkit.org/show_bug.cgi?id=167648

Patch by Sam Weinig <sam@webkit.org> on 2017-01-31
Reviewed by Anders Carlsson.

* bindings/js/JSDOMBinding.cpp:
* bindings/js/JSDOMBinding.h:
(WebCore::jsString): Deleted.
(WebCore::jsStringOrUndefined): Deleted.
(WebCore::finiteInt32Value): Deleted.
(WebCore::toJS): Deleted.
Remove unused functions. The toJS overrides can be replaced with their
modern JSDOMConvert counterparts.

* bindings/js/JSDOMExceptionHandling.h:
(WebCore::toJS): Deleted.
(WebCore::toJSNewlyCreated): Deleted.
Remove unused functions.

* bindings/js/JSDOMIterator.h:
Add more specific include of JSDOMConvert.h to fix compile.

* bindings/js/JSDOMPromise.cpp:
(WebCore::DeferredPromise::reject):
Create the Symbol directly, instead of using the toJS override.

* bindings/js/JSWorkerCustom.cpp:
(WebCore::constructJSWorker):
Use JSDOMConvert toJS function.

* bindings/js/JSXMLHttpRequestCustom.cpp:
(WebCore::JSXMLHttpRequest::retrieveResponse):
Use JSDOMConvert toJS functions.

* bindings/js/ScriptController.h:
Add missing forward declaration of URL.

* bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::resolve):
Create the Symbol directly, instead of using the toJS override.

* html/HTMLPlugInImageElement.cpp:
(WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):
Use JSDOMConvert toJS functions.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@211454 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/bindings/js/JSDOMBinding.cpp
Source/WebCore/bindings/js/JSDOMBinding.h
Source/WebCore/bindings/js/JSDOMExceptionHandling.h
Source/WebCore/bindings/js/JSDOMIterator.h
Source/WebCore/bindings/js/JSDOMPromise.cpp
Source/WebCore/bindings/js/JSWorkerCustom.cpp
Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp
Source/WebCore/bindings/js/ScriptController.h
Source/WebCore/bindings/js/ScriptModuleLoader.cpp
Source/WebCore/html/HTMLPlugInImageElement.cpp

index 7ad269d..63d1949 100644 (file)
@@ -1,3 +1,50 @@
+2017-01-31  Sam Weinig  <sam@webkit.org>
+
+        Remove unused/rarely used bindings helpers
+        https://bugs.webkit.org/show_bug.cgi?id=167648
+
+        Reviewed by Anders Carlsson.
+
+        * bindings/js/JSDOMBinding.cpp:
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::jsString): Deleted.
+        (WebCore::jsStringOrUndefined): Deleted.
+        (WebCore::finiteInt32Value): Deleted.
+        (WebCore::toJS): Deleted.
+        Remove unused functions. The toJS overrides can be replaced with their
+        modern JSDOMConvert counterparts.
+        
+        * bindings/js/JSDOMExceptionHandling.h:
+        (WebCore::toJS): Deleted.
+        (WebCore::toJSNewlyCreated): Deleted.
+        Remove unused functions.
+
+        * bindings/js/JSDOMIterator.h:
+        Add more specific include of JSDOMConvert.h to fix compile.
+
+        * bindings/js/JSDOMPromise.cpp:
+        (WebCore::DeferredPromise::reject):
+        Create the Symbol directly, instead of using the toJS override.
+
+        * bindings/js/JSWorkerCustom.cpp:
+        (WebCore::constructJSWorker):
+        Use JSDOMConvert toJS function.
+
+        * bindings/js/JSXMLHttpRequestCustom.cpp:
+        (WebCore::JSXMLHttpRequest::retrieveResponse):
+        Use JSDOMConvert toJS functions.
+
+        * bindings/js/ScriptController.h:
+        Add missing forward declaration of URL.
+
+        * bindings/js/ScriptModuleLoader.cpp:
+        (WebCore::ScriptModuleLoader::resolve):
+        Create the Symbol directly, instead of using the toJS override.
+
+        * html/HTMLPlugInImageElement.cpp:
+        (WebCore::HTMLPlugInImageElement::didAddUserAgentShadowRoot):
+        Use JSDOMConvert toJS functions.
+
 2017-01-31  Wenson Hsieh  <wenson_hsieh@apple.com>
 
         WebItemProviderPasteboard should be robust when UIItemProvider fails to initialize an object
index 12a2b95..35ad9d0 100644 (file)
@@ -56,18 +56,6 @@ JSValue jsStringOrUndefined(ExecState* exec, const String& s)
     return jsStringWithCache(exec, s);
 }
 
-JSValue jsString(ExecState* exec, const URL& url)
-{
-    return jsStringWithCache(exec, url.string());
-}
-
-JSValue jsStringOrUndefined(ExecState* exec, const URL& url)
-{
-    if (url.isNull())
-        return jsUndefined();
-    return jsStringWithCache(exec, url.string());
-}
-
 static inline String stringToByteString(ExecState& state, JSC::ThrowScope& scope, String&& string)
 {
     if (!string.containsOnlyLatin1()) {
index 6d5d520..3d4a9cc 100644 (file)
@@ -53,14 +53,9 @@ class JSFunction;
 
 namespace WebCore {
 
-class URL;
-
 void addImpureProperty(const AtomicString&);
 
-JSC::JSValue jsString(JSC::ExecState*, const URL&); // empty if the URL is null
-
 JSC::JSValue jsStringOrUndefined(JSC::ExecState*, const String&); // undefined if the string is null
-JSC::JSValue jsStringOrUndefined(JSC::ExecState*, const URL&); // undefined if the URL is null
 
 // See JavaScriptCore for explanation: Should be used for any string that is already owned by another
 // object, to let the engine know that collecting the JSString wrapper is unlikely to save memory.
@@ -74,8 +69,6 @@ WEBCORE_EXPORT String valueToByteString(JSC::ExecState&, JSC::JSValue);
 WEBCORE_EXPORT String identifierToUSVString(JSC::ExecState&, const JSC::Identifier&);
 WEBCORE_EXPORT String valueToUSVString(JSC::ExecState&, JSC::JSValue);
 
-int32_t finiteInt32Value(JSC::JSValue, JSC::ExecState*, bool& okay);
-
 // The following functions convert values to integers as per the WebIDL specification.
 // The conversion fails if the value cannot be converted to a number or, if EnforceRange is specified,
 // the value is outside the range of the destination integer type.
@@ -114,11 +107,6 @@ JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, JSC::ArrayBuffer&);
 JSC::JSValue toJS(JSC::ExecState*, JSC::JSGlobalObject*, JSC::ArrayBufferView&);
 JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, JSC::ArrayBuffer*);
 JSC::JSValue toJS(JSC::ExecState*, JSC::JSGlobalObject*, JSC::ArrayBufferView*);
-template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, Ref<T>&&);
-template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, RefPtr<T>&&);
-template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Vector<T>&);
-template<typename T> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const Vector<RefPtr<T>>&);
-JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, const JSC::PrivateName&);
 
 RefPtr<JSC::ArrayBufferView> toPossiblySharedArrayBufferView(JSC::VM&, JSC::JSValue);
 RefPtr<JSC::Int8Array> toPossiblySharedInt8Array(JSC::VM&, JSC::JSValue);
@@ -152,13 +140,6 @@ template<JSC::NativeFunction, int length> JSC::EncodedJSValue nonCachingStaticFu
 
 // Inline functions and template definitions.
 
-inline int32_t finiteInt32Value(JSC::JSValue value, JSC::ExecState* exec, bool& okay)
-{
-    double number = value.toNumber(exec);
-    okay = std::isfinite(number);
-    return JSC::toInt32(number);
-}
-
 inline JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, JSC::ArrayBuffer& buffer)
 {
     if (auto result = getCachedWrapper(globalObject->world(), buffer))
index 459450f..0300213 100644 (file)
@@ -87,15 +87,8 @@ JSC::JSValue createDOMException(JSC::ExecState&, Exception&&);
 JSC::JSValue createDOMException(JSC::ExecState*, ExceptionCode, const String&);
 
 // Convert a DOM implementation exception into a JavaScript exception in the execution state.
-void propagateException(JSC::ExecState&, JSC::ThrowScope&, Exception&&);
 WEBCORE_EXPORT void propagateExceptionSlowPath(JSC::ExecState&, JSC::ThrowScope&, Exception&&);
 
-// ExceptionOr handling.
-void propagateException(JSC::ExecState&, JSC::ThrowScope&, ExceptionOr<void>&&);
-template<typename T> JSC::JSValue toJS(JSC::ExecState&, JSDOMGlobalObject&, JSC::ThrowScope&, ExceptionOr<T>&&);
-template<typename T> JSC::JSValue toJSNewlyCreated(JSC::ExecState&, JSDOMGlobalObject&, JSC::ThrowScope&, ExceptionOr<T>&& value);
-
-
 ALWAYS_INLINE void propagateException(JSC::ExecState& state, JSC::ThrowScope& throwScope, Exception&& exception)
 {
     if (throwScope.exception())
@@ -109,22 +102,4 @@ inline void propagateException(JSC::ExecState& state, JSC::ThrowScope& throwScop
         propagateException(state, throwScope, value.releaseException());
 }
 
-template<typename T> inline JSC::JSValue toJS(JSC::ExecState& state, JSDOMGlobalObject& globalObject, JSC::ThrowScope& throwScope, ExceptionOr<T>&& value)
-{
-    if (UNLIKELY(value.hasException())) {
-        propagateException(state, throwScope, value.releaseException());
-        return { };
-    }
-    return toJS(&state, &globalObject, value.releaseReturnValue());
-}
-
-template<typename T> inline JSC::JSValue toJSNewlyCreated(JSC::ExecState& state, JSDOMGlobalObject& globalObject, JSC::ThrowScope& throwScope, ExceptionOr<T>&& value)
-{
-    if (UNLIKELY(value.hasException())) {
-        propagateException(state, throwScope, value.releaseException());
-        return { };
-    }
-    return toJSNewlyCreated(&state, &globalObject, value.releaseReturnValue());
-}
-
 } // namespace WebCore
index 84615c5..101749a 100644 (file)
@@ -26,7 +26,7 @@
 
 #pragma once
 
-#include "JSDOMBinding.h"
+#include "JSDOMConvert.h"
 #include <runtime/IteratorPrototype.h>
 #include <runtime/JSDestructibleObject.h>
 #include <type_traits>
index b00201e..188d20f 100644 (file)
@@ -149,7 +149,7 @@ void DeferredPromise::reject(const JSC::PrivateName& privateName)
     ASSERT(m_globalObject);
     JSC::ExecState* state = m_globalObject->globalExec();
     JSC::JSLockHolder locker(state);
-    reject(*state, toJS(state, m_globalObject.get(), privateName));
+    reject(*state, JSC::Symbol::create(state->vm(), privateName.uid()));
 }
 
 void rejectPromiseWithExceptionIfAny(JSC::ExecState& state, JSDOMGlobalObject& globalObject, JSPromiseDeferred& promiseDeferred)
index e25b35e..7b52659 100644 (file)
@@ -58,7 +58,7 @@ EncodedJSValue JSC_HOST_CALL constructJSWorker(ExecState& state)
     auto& window = asJSDOMWindow(state.lexicalGlobalObject())->wrapped();
 
     ASSERT(window.document());
-    return JSValue::encode(toJSNewlyCreated(state, globalObject, scope, Worker::create(*window.document(), scriptURL, globalObject.runtimeFlags())));
+    return JSValue::encode(toJSNewlyCreated<IDLInterface<Worker>>(state, globalObject, scope, Worker::create(*window.document(), scriptURL, globalObject.runtimeFlags())));
 }
 
 } // namespace WebCore
index 7d1b962..aafe881 100644 (file)
@@ -39,6 +39,7 @@
 #include "HTMLDocument.h"
 #include "InspectorInstrumentation.h"
 #include "JSBlob.h"
+#include "JSDOMConvert.h"
 #include "JSDOMFormData.h"
 #include "JSDOMWindowCustom.h"
 #include "JSDocument.h"
@@ -189,16 +190,16 @@ JSValue JSXMLHttpRequest::retrieveResponse(ExecState& state)
     case XMLHttpRequest::ResponseType::Document: {
         auto document = wrapped().responseXML();
         ASSERT(!document.hasException());
-        value = toJS(&state, globalObject(), document.releaseReturnValue());
+        value = toJS<IDLInterface<Document>>(state, *globalObject(), document.releaseReturnValue());
         break;
     }
 
     case XMLHttpRequest::ResponseType::Blob:
-        value = toJSNewlyCreated(&state, globalObject(), wrapped().createResponseBlob());
+        value = toJSNewlyCreated<IDLInterface<Blob>>(state, *globalObject(), wrapped().createResponseBlob());
         break;
 
     case XMLHttpRequest::ResponseType::Arraybuffer:
-        value = toJS(&state, globalObject(), wrapped().createResponseArrayBuffer());
+        value = toJS<IDLInterface<ArrayBuffer>>(state, *globalObject(), wrapped().createResponseArrayBuffer());
         break;
     }
 
index 93abeee..d5b2b68 100644 (file)
@@ -58,6 +58,7 @@ class HTMLPlugInElement;
 class LoadableModuleScript;
 class ScriptSourceCode;
 class SecurityOrigin;
+class URL;
 class Widget;
 struct ExceptionDetails;
 
index 89acaff..9fd418f 100644 (file)
@@ -90,7 +90,7 @@ JSC::JSInternalPromise* ScriptModuleLoader::resolve(JSC::JSGlobalObject* jsGloba
     // So there is no correct URL to retrieve the module source code. If the module name
     // value is a Symbol, it is used directly as a module key.
     if (moduleNameValue.isSymbol()) {
-        promise->resolve<IDLAny>(toJS(exec, &globalObject, asSymbol(moduleNameValue)->privateName()));
+        promise->resolve<IDLAny>(JSC::Symbol::create(exec->vm(), asSymbol(moduleNameValue)->privateName().uid()));
         return jsPromise.promise();
     }
 
index 02274e3..a8cb8e5 100644 (file)
@@ -356,13 +356,13 @@ void HTMLPlugInImageElement::didAddUserAgentShadowRoot(ShadowRoot* root)
     auto& state = *globalObject.globalExec();
 
     JSC::MarkedArgumentBuffer argList;
-    argList.append(toJS(&state, &globalObject, root));
-    argList.append(jsString(&state, titleText(*page, mimeType)));
-    argList.append(jsString(&state, subtitleText(*page, mimeType)));
+    argList.append(toJS<IDLInterface<ShadowRoot>>(state, globalObject, root));
+    argList.append(toJS<IDLDOMString>(state, titleText(*page, mimeType)));
+    argList.append(toJS<IDLDOMString>(state, subtitleText(*page, mimeType)));
     
     // This parameter determines whether or not the snapshot overlay should always be visible over the plugin snapshot.
     // If no snapshot was found then we want the overlay to be visible.
-    argList.append(JSC::jsBoolean(!m_snapshotImage));
+    argList.append(toJS<IDLBoolean>(!m_snapshotImage));
 
     // It is expected the JS file provides a createOverlay(shadowRoot, title, subtitle) function.
     auto* overlay = globalObject.get(&state, JSC::Identifier::fromString(&state, "createOverlay")).toObject(&state);