diff --git a/js/src/xpconnect/loader/mozJSComponentLoader.cpp b/js/src/xpconnect/loader/mozJSComponentLoader.cpp index dbf9e373ce4d..4ee94c919c39 100644 --- a/js/src/xpconnect/loader/mozJSComponentLoader.cpp +++ b/js/src/xpconnect/loader/mozJSComponentLoader.cpp @@ -1025,6 +1025,29 @@ mozJSComponentLoader::GlobalForLocation(const char *aLocation, goto out; } + nsCOMPtr locationHolder; + rv = xpc->WrapNative(cx, global, localFile, + NS_GET_IID(nsILocalFile), + getter_AddRefs(locationHolder)); + if (NS_FAILED(rv)) { + global = nsnull; + goto out; + } + + JSObject *locationObj; + rv = locationHolder->GetJSObject(&locationObj); + if (NS_FAILED(rv)) { + global = nsnull; + goto out; + } + + if (!JS_DefineProperty(cx, global, "__LOCATION__", + OBJECT_TO_JSVAL(locationObj), NULL, + NULL, 0)) { + global = nsnull; + goto out; + } + script = JS_CompileFileHandleForPrincipals(cx, global, nativePath.get(), fileHandle, jsPrincipals);