NS_IMETHODIMP nsEventListenerInfo::GetDebugObject(nsISupports** aRetVal) { *aRetVal = nsnull; #ifdef MOZ_JSDEBUGGER nsresult rv = NS_OK; jsval v = JSVAL_NULL; nsAutoGCRoot root(&v, &rv); NS_ENSURE_SUCCESS(rv, rv); if (GetJSVal(&v)) { nsCOMPtr<jsdIDebuggerService> jsd = do_GetService("@mozilla.org/js/jsd/debugger-service;1", &rv); NS_ENSURE_SUCCESS(rv, NS_OK); PRBool isOn = PR_FALSE; jsd->GetIsOn(&isOn); NS_ENSURE_TRUE(isOn, NS_OK); nsCOMPtr<jsdIValue> jsdValue; jsd->WrapJSValue(v, getter_AddRefs(jsdValue)); *aRetVal = jsdValue.forget().get(); return NS_OK; } #endif return NS_OK; }
NS_IMETHODIMP nsEventListenerInfo::ToSource(nsAString& aResult) { aResult.SetIsVoid(true); nsCOMPtr<nsIThreadJSContextStack> stack = nsContentUtils::ThreadJSContextStack(); if (stack) { JSContext* cx = stack->GetSafeJSContext(); if (cx && NS_SUCCEEDED(stack->Push(cx))) { { // Extra block to finish the auto request before calling pop JSAutoRequest ar(cx); mozilla::Maybe<JSAutoCompartment> ac; jsval v = JSVAL_NULL; if (GetJSVal(cx, ac, &v)) { JSString* str = JS_ValueToSource(cx, v); if (str) { nsDependentJSString depStr; if (depStr.init(cx, str)) { aResult.Assign(depStr); } } } } stack->Pop(&cx); } } return NS_OK; }
NS_IMETHODIMP nsEventListenerInfo::ToSource(nsAString& aResult) { aResult.SetIsVoid(PR_TRUE); nsresult rv; jsval v = JSVAL_NULL; nsAutoGCRoot root(&v, &rv); NS_ENSURE_SUCCESS(rv, rv); if (GetJSVal(&v)) { nsCOMPtr<nsIThreadJSContextStack> stack = nsContentUtils::ThreadJSContextStack(); if (stack) { JSContext* cx = nsnull; stack->GetSafeJSContext(&cx); if (cx && NS_SUCCEEDED(stack->Push(cx))) { JSAutoRequest ar(cx); JSString* str = JS_ValueToSource(cx, v); if (str) { aResult.Assign(nsDependentJSString(str)); } stack->Pop(&cx); } } } return NS_OK; }
NS_IMETHODIMP EventListenerInfo::GetListenerObject(JSContext* aCx, JS::MutableHandle<JS::Value> aObject) { Maybe<JSAutoCompartment> ac; GetJSVal(aCx, ac, aObject); return NS_OK; }
NS_IMETHODIMP EventListenerInfo::GetListenerObject(JSContext* aCx, JS::MutableHandle<JS::Value> aObject) { Maybe<JSAutoRealm> ar; GetJSVal(aCx, ar, aObject); return NS_OK; }
NS_IMETHODIMP EventListenerInfo::ToSource(nsAString& aResult) { aResult.SetIsVoid(true); AutoSafeJSContext cx; Maybe<JSAutoCompartment> ac; JS::Rooted<JS::Value> v(cx); if (GetJSVal(cx, ac, &v)) { JSString* str = JS_ValueToSource(cx, v); if (str) { nsAutoJSString autoStr; if (autoStr.init(cx, str)) { aResult.Assign(autoStr); } } } return NS_OK; }
NS_IMETHODIMP nsEventListenerInfo::GetDebugObject(nsISupports** aRetVal) { *aRetVal = nullptr; #ifdef MOZ_JSDEBUGGER nsresult rv = NS_OK; nsCOMPtr<jsdIDebuggerService> jsd = do_GetService("@mozilla.org/js/jsd/debugger-service;1", &rv); NS_ENSURE_SUCCESS(rv, NS_OK); bool isOn = false; jsd->GetIsOn(&isOn); NS_ENSURE_TRUE(isOn, NS_OK); nsCOMPtr<nsIThreadJSContextStack> stack = nsContentUtils::ThreadJSContextStack(); if (stack) { JSContext* cx = stack->GetSafeJSContext(); if (cx && NS_SUCCEEDED(stack->Push(cx))) { { // Extra block to finish the auto request before calling pop JSAutoRequest ar(cx); mozilla::Maybe<JSAutoCompartment> ac; jsval v = JSVAL_NULL; if (GetJSVal(cx, ac, &v)) { nsCOMPtr<jsdIValue> jsdValue; rv = jsd->WrapValue(v, getter_AddRefs(jsdValue)); NS_ENSURE_SUCCESS(rv, rv); jsdValue.forget(aRetVal); } } stack->Pop(&cx); } } #endif return NS_OK; }