test/script/basic/JDK-8067136.js

Sun, 08 Nov 2015 10:25:46 -0800

author
asaha
date
Sun, 08 Nov 2015 10:25:46 -0800
changeset 1687
6abfa80b9ef2
parent 1120
abee60d8d469
permissions
-rw-r--r--

Added tag jdk8u66-b18 for changeset 39bfb9eb75dc

     1 /*
     2  * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     8  *
     9  * This code is distributed in the hope that it will be useful, but WITHOUT
    10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
    11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
    12  * version 2 for more details (a copy is included in the LICENSE file that
    13  * accompanied this code).
    14  *
    15  * You should have received a copy of the GNU General Public License version
    16  * 2 along with this work; if not, write to the Free Software Foundation,
    17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
    18  *
    19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
    20  * or visit www.oracle.com if you need additional information or have any
    21  * questions.
    22  */
    24 /**
    25  * JDK-8067136: BrowserJSObjectLinker does not handle call on JSObjects
    26  *
    27  * @test
    28  * @option -scripting
    29  * @run
    30  */
    32 // call on netscape.javascript.JSObject
    34 function main() {
    35     var JSObject;
    36     try {
    37         JSObject = Java.type("netscape.javascript.JSObject");
    38     } catch (e) {
    39         if (e instanceof java.lang.ClassNotFoundException) {
    40             // pass vacuously by emitting the .EXPECTED file content
    41             var str = readFully(__DIR__ + "JDK-8067136.js.EXPECTED");
    42             print(str.substring(0, str.length - 1));
    43             return;
    44         } else{
    45             fail("unexpected exception for JSObject", e);
    46         }
    47     }
    48     test(JSObject);
    49 }
    51 function test(JSObject) {
    52     var obj = new (Java.extend(JSObject))() {
    53         getMember: function(name) {
    54             if (name == "func") {
    55                 return new (Java.extend(JSObject)) {
    56                     call: function(n) {
    57                         print("func called");
    58                     }
    59                 }
    60             }
    61             return name.toUpperCase();
    62         },
    64     };
    66     obj.func();
    67 }
    69 main();

mercurial