Exemple #1
0
 public static void init(Context cx, Scriptable scope, boolean sealed) {
   JavaAdapter obj = new JavaAdapter();
   IdFunctionObject ctor =
       new IdFunctionObject(obj, FTAG, Id_JavaAdapter, "JavaAdapter", 1, scope);
   ctor.markAsConstructor(null);
   if (sealed) {
     ctor.sealObject();
   }
   ctor.exportAsScopeProperty();
 }
Exemple #2
0
  static void init(Scriptable scope, boolean sealed) {
    NativeWith obj = new NativeWith();

    obj.setParentScope(scope);
    obj.setPrototype(ScriptableObject.getObjectPrototype(scope));

    IdFunctionObject ctor = new IdFunctionObject(obj, FTAG, Id_constructor, "With", 0, scope);
    ctor.markAsConstructor(obj);
    if (sealed) {
      ctor.sealObject();
    }
    ctor.exportAsScopeProperty();
  }
 final IdFunctionObject createPrecachedConstructor() {
   if (constructorId != 0) throw new IllegalStateException();
   constructorId = obj.findPrototypeId("constructor");
   if (constructorId == 0) {
     throw new IllegalStateException("No id for constructor property");
   }
   obj.initPrototypeId(constructorId);
   if (constructor == null) {
     throw new IllegalStateException(
         obj.getClass().getName()
             + ".initPrototypeId() did not "
             + "initialize id="
             + constructorId);
   }
   constructor.initFunction(obj.getClassName(), ScriptableObject.getTopLevelScope(obj));
   constructor.markAsConstructor(obj);
   return constructor;
 }
Exemple #4
0
  public static void init(Context cx, Scriptable scope, boolean sealed) {
    NativeGlobal obj = new NativeGlobal();

    for (int id = 1; id <= LAST_SCOPE_FUNCTION_ID; ++id) {
      String name;
      int arity = 1;
      switch (id) {
        case Id_decodeURI:
          name = "decodeURI";
          break;
        case Id_decodeURIComponent:
          name = "decodeURIComponent";
          break;
        case Id_encodeURI:
          name = "encodeURI";
          break;
        case Id_encodeURIComponent:
          name = "encodeURIComponent";
          break;
        case Id_escape:
          name = "escape";
          break;
        case Id_eval:
          name = "eval";
          break;
        case Id_isFinite:
          name = "isFinite";
          break;
        case Id_isNaN:
          name = "isNaN";
          break;
        case Id_isXMLName:
          name = "isXMLName";
          break;
        case Id_parseFloat:
          name = "parseFloat";
          break;
        case Id_parseInt:
          name = "parseInt";
          arity = 2;
          break;
        case Id_unescape:
          name = "unescape";
          break;
        case Id_uneval:
          name = "uneval";
          break;
        default:
          throw Kit.codeBug();
      }
      IdFunctionObject f = new IdFunctionObject(obj, FTAG, id, name, arity, scope);
      if (sealed) {
        f.sealObject();
      }
      f.exportAsScopeProperty();
    }

    ScriptableObject.defineProperty(scope, "NaN", ScriptRuntime.NaNobj, ScriptableObject.DONTENUM);
    ScriptableObject.defineProperty(
        scope,
        "Infinity",
        ScriptRuntime.wrapNumber(Double.POSITIVE_INFINITY),
        ScriptableObject.DONTENUM);
    ScriptableObject.defineProperty(
        scope, "undefined", Undefined.instance, ScriptableObject.DONTENUM);

    String[] errorMethods =
        Kit.semicolonSplit(
            ""
                + "ConversionError;"
                + "EvalError;"
                + "RangeError;"
                + "ReferenceError;"
                + "SyntaxError;"
                + "TypeError;"
                + "URIError;"
                + "InternalError;"
                + "JavaException;");

    /*
        Each error constructor gets its own Error object as a prototype,
        with the 'name' property set to the name of the error.
    */
    for (int i = 0; i < errorMethods.length; i++) {
      String name = errorMethods[i];
      Scriptable errorProto = ScriptRuntime.newObject(cx, scope, "Error", ScriptRuntime.emptyArgs);
      errorProto.put("name", errorProto, name);
      if (sealed) {
        if (errorProto instanceof ScriptableObject) {
          ((ScriptableObject) errorProto).sealObject();
        }
      }
      IdFunctionObject ctor = new IdFunctionObject(obj, FTAG, Id_new_CommonError, name, 1, scope);
      ctor.markAsConstructor(errorProto);
      if (sealed) {
        ctor.sealObject();
      }
      ctor.exportAsScopeProperty();
    }
  }