1*3ac0a46fSAndroid Build Coastguard Worker// Copyright 2020 The PDFium Authors 2*3ac0a46fSAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be 3*3ac0a46fSAndroid Build Coastguard Worker// found in the LICENSE file. 4*3ac0a46fSAndroid Build Coastguard Worker 5*3ac0a46fSAndroid Build Coastguard Workerfunction testLegalConstructor(name, allowed) { 6*3ac0a46fSAndroid Build Coastguard Worker const constructorString = name + ".constructor"; 7*3ac0a46fSAndroid Build Coastguard Worker var constructor; 8*3ac0a46fSAndroid Build Coastguard Worker try { 9*3ac0a46fSAndroid Build Coastguard Worker constructor = eval(constructorString); 10*3ac0a46fSAndroid Build Coastguard Worker } catch (e) { 11*3ac0a46fSAndroid Build Coastguard Worker app.alert("FAIL: No such " + constructorString); 12*3ac0a46fSAndroid Build Coastguard Worker return; 13*3ac0a46fSAndroid Build Coastguard Worker } 14*3ac0a46fSAndroid Build Coastguard Worker try { 15*3ac0a46fSAndroid Build Coastguard Worker constructor(); 16*3ac0a46fSAndroid Build Coastguard Worker app.alert("FAIL: " + constructorString + "(): returned"); 17*3ac0a46fSAndroid Build Coastguard Worker } catch (e) { 18*3ac0a46fSAndroid Build Coastguard Worker app.alert("PASS: " + constructorString + "(): " + e); 19*3ac0a46fSAndroid Build Coastguard Worker } 20*3ac0a46fSAndroid Build Coastguard Worker try { 21*3ac0a46fSAndroid Build Coastguard Worker var thing = new constructor; 22*3ac0a46fSAndroid Build Coastguard Worker app.alert("PASS: new " + constructorString + ": " + thing); 23*3ac0a46fSAndroid Build Coastguard Worker } catch (e) { 24*3ac0a46fSAndroid Build Coastguard Worker app.alert("FAIL: new " + constructorString + ": " + e); 25*3ac0a46fSAndroid Build Coastguard Worker } 26*3ac0a46fSAndroid Build Coastguard Worker} 27*3ac0a46fSAndroid Build Coastguard Worker 28*3ac0a46fSAndroid Build Coastguard Workerfunction testIllegalConstructor(name, allowed) { 29*3ac0a46fSAndroid Build Coastguard Worker const constructorString = name + ".constructor"; 30*3ac0a46fSAndroid Build Coastguard Worker var constructor; 31*3ac0a46fSAndroid Build Coastguard Worker try { 32*3ac0a46fSAndroid Build Coastguard Worker constructor = eval(constructorString); 33*3ac0a46fSAndroid Build Coastguard Worker } catch (e) { 34*3ac0a46fSAndroid Build Coastguard Worker app.alert("FAIL: No such " + constructorString); 35*3ac0a46fSAndroid Build Coastguard Worker return; 36*3ac0a46fSAndroid Build Coastguard Worker } 37*3ac0a46fSAndroid Build Coastguard Worker try { 38*3ac0a46fSAndroid Build Coastguard Worker constructor(); 39*3ac0a46fSAndroid Build Coastguard Worker app.alert("FAIL: " + constructorString + "(): returned"); 40*3ac0a46fSAndroid Build Coastguard Worker } catch (e) { 41*3ac0a46fSAndroid Build Coastguard Worker app.alert("PASS: " + constructorString + "(): " + e); 42*3ac0a46fSAndroid Build Coastguard Worker } 43*3ac0a46fSAndroid Build Coastguard Worker try { 44*3ac0a46fSAndroid Build Coastguard Worker new constructor; 45*3ac0a46fSAndroid Build Coastguard Worker app.alert("FAIL: new " + constructorString + ": returned"); 46*3ac0a46fSAndroid Build Coastguard Worker } catch (e) { 47*3ac0a46fSAndroid Build Coastguard Worker app.alert("PASS: new " + constructorString + ": " + e); 48*3ac0a46fSAndroid Build Coastguard Worker } 49*3ac0a46fSAndroid Build Coastguard Worker} 50