| Index: Source/bindings/core/dart/DartNativeUtilities.cpp
|
| diff --git a/Source/bindings/core/dart/DartNativeUtilities.cpp b/Source/bindings/core/dart/DartNativeUtilities.cpp
|
| index ca1d153bed8e22458cbb08edd9a8a157f4510bbe..42aa1358781000d43af287bc0df452228cfa50df 100644
|
| --- a/Source/bindings/core/dart/DartNativeUtilities.cpp
|
| +++ b/Source/bindings/core/dart/DartNativeUtilities.cpp
|
| @@ -155,6 +155,36 @@ fail:
|
| ASSERT_NOT_REACHED();
|
| }
|
|
|
| +void resolveUri(Dart_NativeArguments args)
|
| +{
|
| + Dart_Handle exception = 0;
|
| + {
|
| + DartDOMData* domData = static_cast<DartDOMData*>(Dart_GetNativeIsolateData(args));
|
| + RefPtr<blink::DartApplicationLoader> loader = domData->applicationLoader();
|
| +
|
| + DartStringAdapter uri = DartUtilities::dartToString(args, 0, exception);
|
| + if (exception)
|
| + goto fail;
|
| + String uriString = (String)uri;
|
| +
|
| + String resolvedUrl = DartApplicationLoader::resolveUrl(loader->scriptUrl(), uriString, loader->packageRoot());
|
| +
|
| + Dart_Handle constructorArg = DartUtilities::stringToDartString(resolvedUrl);
|
| +
|
| + Dart_Handle coreLib = Dart_LookupLibrary(Dart_NewStringFromCString("dart:core"));
|
| + Dart_Handle uriClass = Dart_GetType(coreLib, Dart_NewStringFromCString("Uri"), 0, 0);
|
| + Dart_Handle ret = Dart_New(uriClass, Dart_NewStringFromCString("file"), 1, &constructorArg);
|
| +
|
| + Dart_SetReturnValue(args, ret);
|
| +
|
| + return;
|
| + }
|
| +
|
| +fail:
|
| + Dart_ThrowException(exception);
|
| + ASSERT_NOT_REACHED();
|
| +}
|
| +
|
| class SpawnDomFunctionTask : public ExecutionContextTask {
|
| public:
|
| SpawnDomFunctionTask(const char* libraryUrl, const char* functionName, Dart_Port replyTo, DartDOMData* parentDOMData)
|
| @@ -261,6 +291,7 @@ static DartNativeEntry nativeEntries[] = {
|
| { DartNativeUtilitiesInternal::forwardingPrint, 1, "Utils_forwardingPrint" },
|
| { DartNativeUtilitiesInternal::getNewIsolateId, 0, "Utils_getNewIsolateId" },
|
| { DartNativeUtilitiesInternal::spawnDomUri, 1, "Utils_spawnDomUri" },
|
| + { DartNativeUtilitiesInternal::resolveUri, 1, "Utils_resolvePackageUri" },
|
| { 0, 0, 0 },
|
| };
|
|
|
|
|