| Index: Source/bindings/core/dart/shared_lib/DartNativeExtensions.cpp
|
| diff --git a/Source/core/svg/SVGPointTearOff.cpp b/Source/bindings/core/dart/shared_lib/DartNativeExtensions.cpp
|
| similarity index 54%
|
| copy from Source/core/svg/SVGPointTearOff.cpp
|
| copy to Source/bindings/core/dart/shared_lib/DartNativeExtensions.cpp
|
| index 706d26dab6c52256d253def792931381f8ebb77b..742722d49681e665f325c38d61ee36a5a12e3b29 100644
|
| --- a/Source/core/svg/SVGPointTearOff.cpp
|
| +++ b/Source/bindings/core/dart/shared_lib/DartNativeExtensions.cpp
|
| @@ -30,46 +30,54 @@
|
|
|
| #include "config.h"
|
|
|
| -#include "core/svg/SVGPointTearOff.h"
|
| +#include "bindings/core/dart/shared_lib/DartNativeExtensions.h"
|
|
|
| -#include "bindings/core/v8/ExceptionState.h"
|
| -#include "core/dom/ExceptionCode.h"
|
| -#include "core/svg/SVGElement.h"
|
| -#include "core/svg/SVGMatrixTearOff.h"
|
| +#include "bindings/core/dart/DartUtilities.h"
|
|
|
| namespace blink {
|
|
|
| -SVGPointTearOff::SVGPointTearOff(PassRefPtrWillBeRawPtr<SVGPoint> target, SVGElement* contextElement, PropertyIsAnimValType propertyIsAnimVal, const QualifiedName& attributeName)
|
| - : SVGPropertyTearOff<SVGPoint>(target, contextElement, propertyIsAnimVal, attributeName)
|
| +#if defined(ENABLE_DART_NATIVE_EXTENSIONS)
|
| +Dart_Handle DartNativeExtensions::loadExtension(const String& url, Dart_Handle parentLibrary)
|
| {
|
| -}
|
| + String userUri = url.substring(String("dart-ext:").length());
|
|
|
| -void SVGPointTearOff::setX(float f, ExceptionState& exceptionState)
|
| -{
|
| - if (isImmutable()) {
|
| - exceptionState.throwDOMException(NoModificationAllowedError, "The attribute is read-only.");
|
| - return;
|
| + String name;
|
| + String path;
|
| + size_t index = userUri.reverseFind('/');
|
| + if (index == kNotFound) {
|
| + name = userUri;
|
| + path = "./";
|
| + } else if (index == userUri.length() - 1) {
|
| + return Dart_NewApiError("Extension name missing.");
|
| + } else {
|
| + name = userUri.substring(index + 1);
|
| + path = userUri.substring(0, index + 1);
|
| }
|
|
|
| - target()->setX(f);
|
| - commitChange();
|
| -}
|
| + void* libraryHandle = 0;
|
| + Dart_Handle result = loadExtensionLibrary(path, name, &libraryHandle);
|
| + if (Dart_IsError(result)) {
|
| + return result;
|
| + }
|
|
|
| -void SVGPointTearOff::setY(float f, ExceptionState& exceptionState)
|
| -{
|
| - if (isImmutable()) {
|
| - exceptionState.throwDOMException(NoModificationAllowedError, "The attribute is read-only.");
|
| - return;
|
| + String initFunctionName = name + "_Init";
|
| +
|
| + typedef Dart_Handle (*InitFunctionType)(Dart_Handle library);
|
| + InitFunctionType fn;
|
| + result = resolveSymbol(libraryHandle, initFunctionName, reinterpret_cast<void**>(&fn));
|
| + if (Dart_IsError(result)) {
|
| + return result;
|
| }
|
|
|
| - target()->setY(f);
|
| - commitChange();
|
| + return (*fn)(parentLibrary);
|
| }
|
| -
|
| -PassRefPtrWillBeRawPtr<SVGPointTearOff> SVGPointTearOff::matrixTransform(PassRefPtrWillBeRawPtr<SVGMatrixTearOff> matrix)
|
| +#else
|
| +Dart_Handle DartNativeExtensions::loadExtension(const String& url, Dart_Handle parentLibrary)
|
| {
|
| - FloatPoint point = target()->matrixTransform(matrix->value());
|
| - return SVGPointTearOff::create(SVGPoint::create(point), 0, PropertyIsNotAnimVal);
|
| + return Dart_NewApiError("Native extensions are not enabled.");
|
| }
|
| +#endif // defined(ENABLE_DART_NATIVE_EXTENSIONS)
|
|
|
| }
|
| +
|
| +
|
|
|