Пример #1
0
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;
}
Пример #3
0
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;
}
Пример #4
0
NS_IMETHODIMP
EventListenerInfo::GetListenerObject(JSContext* aCx,
                                     JS::MutableHandle<JS::Value> aObject)
{
  Maybe<JSAutoCompartment> ac;
  GetJSVal(aCx, ac, aObject);
  return NS_OK;
}
Пример #5
0
NS_IMETHODIMP
EventListenerInfo::GetListenerObject(JSContext* aCx,
                                     JS::MutableHandle<JS::Value> aObject)
{
  Maybe<JSAutoRealm> ar;
  GetJSVal(aCx, ar, aObject);
  return NS_OK;
}
Пример #6
0
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;
}