From 5b10a10743b8459f64fe83e0ff420f69da79c9a4 Mon Sep 17 00:00:00 2001 From: Yuchen Pei Date: Thu, 28 Jul 2022 15:32:10 +1000 Subject: Moving scripts and utilities into a new utilities dir --- utilities/evaluation test/README | 7 + utilities/evaluation test/index.html | 18 + utilities/evaluation test/test.js | 996 +++++++++++++++++++++++++++++++++++ 3 files changed, 1021 insertions(+) create mode 100644 utilities/evaluation test/README create mode 100644 utilities/evaluation test/index.html create mode 100644 utilities/evaluation test/test.js (limited to 'utilities/evaluation test') diff --git a/utilities/evaluation test/README b/utilities/evaluation test/README new file mode 100644 index 0000000..074a524 --- /dev/null +++ b/utilities/evaluation test/README @@ -0,0 +1,7 @@ +The file test.js is set up to run the same code that the background script uses to evaluate Javascript. + +To use, copy the appropriate functions from main_background.js ("full_evaluate" and anything that it references). Then, build the script with browserify by running: + +browserify test.js -o test_bundle.js + +and load the file "index.js" with a web browser. diff --git a/utilities/evaluation test/index.html b/utilities/evaluation test/index.html new file mode 100644 index 0000000..e352507 --- /dev/null +++ b/utilities/evaluation test/index.html @@ -0,0 +1,18 @@ + + + + + + + +This page allows us to test Acorn and it isn't slow and terrible like websites that do the same thing + +


+ + +
+ +
+

+
+
diff --git a/utilities/evaluation test/test.js b/utilities/evaluation test/test.js
new file mode 100644
index 0000000..d6dbd4a
--- /dev/null
+++ b/utilities/evaluation test/test.js	
@@ -0,0 +1,996 @@
+var acornLoose = require('acorn-loose');
+var acorn = require("acorn");
+
+var fname_data = {
+  "WebGLShader": true,
+  "WebGLShaderPrecisionFormat": true,
+  "WebGLQuery": true,
+  "WebGLRenderbuffer": true,
+  "WebGLSampler": true,
+  "WebGLUniformLocation": true,
+  "WebGLFramebuffer": true,
+  "WebGLProgram": true,
+  "WebGLContextEvent": true,
+  "WebGL2RenderingContext": true,
+  "WebGLTexture": true,
+  "WebGLRenderingContext": true,
+  "WebGLVertexArrayObject": true,
+  "WebGLActiveInfo": true,
+  "WebGLTransformFeedback": true,
+  "WebGLSync": true,
+  "WebGLBuffer": true,
+  "cat_svg": true,
+  "SVGPoint": true,
+  "SVGEllipseElement": true,
+  "SVGRadialGradientElement": true,
+  "SVGComponentTransferFunctionElement": true,
+  "SVGPathSegCurvetoQuadraticAbs": true,
+  "SVGAnimatedNumberList": true,
+  "SVGPathSegCurvetoQuadraticSmoothRel": true,
+  "SVGFEColorMatrixElement": true,
+  "SVGPathSegLinetoHorizontalAbs": true,
+  "SVGLinearGradientElement": true,
+  "SVGStyleElement": true,
+  "SVGPathSegMovetoRel": true,
+  "SVGStopElement": true,
+  "SVGPathSegLinetoRel": true,
+  "SVGFEConvolveMatrixElement": true,
+  "SVGAnimatedAngle": true,
+  "SVGPathSegLinetoAbs": true,
+  "SVGPreserveAspectRatio": true,
+  "SVGFEOffsetElement": true,
+  "SVGFEImageElement": true,
+  "SVGFEDiffuseLightingElement": true,
+  "SVGAnimatedNumber": true,
+  "SVGTextElement": true,
+  "SVGFESpotLightElement": true,
+  "SVGFEMorphologyElement": true,
+  "SVGAngle": true,
+  "SVGScriptElement": true,
+  "SVGFEDropShadowElement": true,
+  "SVGPathSegArcRel": true,
+  "SVGNumber": true,
+  "SVGPathSegLinetoHorizontalRel": true,
+  "SVGFEFuncBElement": true,
+  "SVGClipPathElement": true,
+  "SVGPathSeg": true,
+  "SVGUseElement": true,
+  "SVGPathSegArcAbs": true,
+  "SVGPathSegCurvetoQuadraticSmoothAbs": true,
+  "SVGRect": true,
+  "SVGAnimatedPreserveAspectRatio": true,
+  "SVGImageElement": true,
+  "SVGAnimatedEnumeration": true,
+  "SVGAnimatedLengthList": true,
+  "SVGFEFloodElement": true,
+  "SVGFECompositeElement": true,
+  "SVGAElement": true,
+  "SVGAnimatedBoolean": true,
+  "SVGMaskElement": true,
+  "SVGFilterElement": true,
+  "SVGPathSegLinetoVerticalRel": true,
+  "SVGAnimatedInteger": true,
+  "SVGTSpanElement": true,
+  "SVGMarkerElement": true,
+  "SVGStringList": true,
+  "SVGTransform": true,
+  "SVGTitleElement": true,
+  "SVGFEBlendElement": true,
+  "SVGTextPositioningElement": true,
+  "SVGFEFuncGElement": true,
+  "SVGFEPointLightElement": true,
+  "SVGAnimateElement": true,
+  "SVGPolylineElement": true,
+  "SVGDefsElement": true,
+  "SVGPathSegList": true,
+  "SVGAnimatedTransformList": true,
+  "SVGPathSegClosePath": true,
+  "SVGGradientElement": true,
+  "SVGSwitchElement": true,
+  "SVGViewElement": true,
+  "SVGUnitTypes": true,
+  "SVGPathSegMovetoAbs": true,
+  "SVGSymbolElement": true,
+  "SVGFEFuncAElement": true,
+  "SVGAnimatedString": true,
+  "SVGFEMergeElement": true,
+  "SVGPathSegLinetoVerticalAbs": true,
+  "SVGAnimationElement": true,
+  "SVGPathSegCurvetoCubicAbs": true,
+  "SVGLength": true,
+  "SVGTextPathElement": true,
+  "SVGPolygonElement": true,
+  "SVGAnimatedRect": true,
+  "SVGPathSegCurvetoCubicRel": true,
+  "SVGFEFuncRElement": true,
+  "SVGLengthList": true,
+  "SVGTextContentElement": true,
+  "SVGFETurbulenceElement": true,
+  "SVGMatrix": true,
+  "SVGZoomAndPan": true,
+  "SVGMetadataElement": true,
+  "SVGFEDistantLightElement": true,
+  "SVGAnimateMotionElement": true,
+  "SVGDescElement": true,
+  "SVGPathSegCurvetoCubicSmoothRel": true,
+  "SVGFESpecularLightingElement": true,
+  "SVGFEGaussianBlurElement": true,
+  "SVGFEComponentTransferElement": true,
+  "SVGNumberList": true,
+  "SVGTransformList": true,
+  "SVGForeignObjectElement": true,
+  "SVGRectElement": true,
+  "SVGFEDisplacementMapElement": true,
+  "SVGAnimateTransformElement": true,
+  "SVGAnimatedLength": true,
+  "SVGPointList": true,
+  "SVGPatternElement": true,
+  "SVGPathSegCurvetoCubicSmoothAbs": true,
+  "SVGCircleElement": true,
+  "SVGSetElement": true,
+  "SVGFETileElement": true,
+  "SVGMPathElement": true,
+  "SVGFEMergeNodeElement": true,
+  "SVGPathSegCurvetoQuadraticRel": true,
+  "SVGElement": true,
+  "SVGGraphicsElement": true,
+  "SVGSVGElement": true,
+  "SVGGElement": true,
+  "SVGGeometryElement": true,
+  "SVGPathElement": true,
+  "SVGLineElement": true,
+  "cat_html": true,
+  "HTMLTimeElement": true,
+  "HTMLPictureElement": true,
+  "HTMLMenuItemElement": true,
+  "HTMLFormElement": true,
+  "HTMLOptionElement": true,
+  "HTMLCanvasElement": true,
+  "HTMLTableSectionElement": true,
+  "HTMLSelectElement": true,
+  "HTMLUListElement": true,
+  "HTMLMetaElement": true,
+  "HTMLLinkElement": true,
+  "HTMLBaseElement": true,
+  "HTMLDataListElement": true,
+  "HTMLInputElement": true,
+  "HTMLMeterElement": true,
+  "HTMLSourceElement": true,
+  "HTMLTrackElement": true,
+  "HTMLTableColElement": true,
+  "HTMLFieldSetElement": true,
+  "HTMLDirectoryElement": true,
+  "HTMLTableCellElement": true,
+  "HTMLStyleElement": true,
+  "HTMLAudioElement": true,
+  "HTMLLegendElement": true,
+  "HTMLOListElement": true,
+  "HTMLEmbedElement": true,
+  "HTMLQuoteElement": true,
+  "HTMLMenuElement": true,
+  "HTMLHeadElement": true,
+  "HTMLUnknownElement": true,
+  "HTMLBRElement": true,
+  "HTMLProgressElement": true,
+  "HTMLMediaElement": true,
+  "HTMLFormControlsCollection": true,
+  "HTMLCollection": true,
+  "HTMLLIElement": true,
+  "HTMLDetailsElement": true,
+  "HTMLObjectElement": true,
+  "HTMLHeadingElement": true,
+  "HTMLTableCaptionElement": true,
+  "HTMLPreElement": true,
+  "HTMLAllCollection": true,
+  "HTMLFrameSetElement": true,
+  "HTMLFontElement": true,
+  "HTMLFrameElement": true,
+  "HTMLAnchorElement": true,
+  "HTMLOptGroupElement": true,
+  "HTMLVideoElement": true,
+  "HTMLModElement": true,
+  "HTMLBodyElement": true,
+  "HTMLTableElement": true,
+  "HTMLButtonElement": true,
+  "HTMLTableRowElement": true,
+  "HTMLAreaElement": true,
+  "HTMLDataElement": true,
+  "HTMLParamElement": true,
+  "HTMLLabelElement": true,
+  "HTMLTemplateElement": true,
+  "HTMLOptionsCollection": true,
+  "HTMLIFrameElement": true,
+  "HTMLTitleElement": true,
+  "HTMLMapElement": true,
+  "HTMLOutputElement": true,
+  "HTMLDListElement": true,
+  "HTMLParagraphElement": true,
+  "HTMLHRElement": true,
+  "HTMLImageElement": true,
+  "HTMLDocument": true,
+  "HTMLElement": true,
+  "HTMLScriptElement": true,
+  "HTMLHtmlElement": true,
+  "HTMLTextAreaElement": true,
+  "HTMLDivElement": true,
+  "HTMLSpanElement": true,
+  "cat_css": true,
+  "CSSStyleRule": true,
+  "CSSFontFaceRule": true,
+  "CSSPrimitiveValue": true,
+  "CSSStyleDeclaration": true,
+  "CSSStyleSheet": true,
+  "CSSPageRule": true,
+  "CSSSupportsRule": true,
+  "CSSMozDocumentRule": true,
+  "CSSKeyframeRule": true,
+  "CSSGroupingRule": true,
+  "CSS2Properties": true,
+  "CSSFontFeatureValuesRule": true,
+  "CSSRuleList": true,
+  "CSSPseudoElement": true,
+  "CSSMediaRule": true,
+  "CSSCounterStyleRule": true,
+  "CSSImportRule": true,
+  "CSSTransition": true,
+  "CSSAnimation": true,
+  "CSSValue": true,
+  "CSSNamespaceRule": true,
+  "CSSRule": true,
+  "CSS": true,
+  "CSSKeyframesRule": true,
+  "CSSConditionRule": true,
+  "CSSValueList": true,
+  "cat_event": true,
+  "ondevicemotion": true,
+  "ondeviceorientation": true,
+  "onabsolutedeviceorientation": true,
+  "ondeviceproximity": true,
+  "onuserproximity": true,
+  "ondevicelight": true,
+  "onvrdisplayconnect": true,
+  "onvrdisplaydisconnect": true,
+  "onvrdisplayactivate": true,
+  "onvrdisplaydeactivate": true,
+  "onvrdisplaypresentchange": true,
+  "onabort": true,
+  "onblur": true,
+  "onfocus": true,
+  "onauxclick": true,
+  "oncanplay": true,
+  "oncanplaythrough": true,
+  "onchange": true,
+  "onclick": true,
+  "onclose": true,
+  "oncontextmenu": true,
+  "ondblclick": true,
+  "ondrag": true,
+  "ondragend": true,
+  "ondragenter": true,
+  "ondragexit": true,
+  "ondragleave": true,
+  "ondragover": true,
+  "ondragstart": true,
+  "ondrop": true,
+  "ondurationchange": true,
+  "onemptied": true,
+  "onended": true,
+  "oninput": true,
+  "oninvalid": true,
+  "onkeydown": true,
+  "onkeypress": true,
+  "onkeyup": true,
+  "onload": true,
+  "onloadeddata": true,
+  "onloadedmetadata": true,
+  "onloadend": true,
+  "onloadstart": true,
+  "onmousedown": true,
+  "onmouseenter": true,
+  "onmouseleave": true,
+  "onmousemove": true,
+  "onmouseout": true,
+  "onmouseover": true,
+  "onmouseup": true,
+  "onwheel": true,
+  "onpause": true,
+  "onplay": true,
+  "onplaying": true,
+  "onprogress": true,
+  "onratechange": true,
+  "onreset": true,
+  "onresize": true,
+  "onscroll": true,
+  "onseeked": true,
+  "onseeking": true,
+  "onselect": true,
+  "onshow": true,
+  "onstalled": true,
+  "onsubmit": true,
+  "onsuspend": true,
+  "ontimeupdate": true,
+  "onvolumechange": true,
+  "onwaiting": true,
+  "onselectstart": true,
+  "ontoggle": true,
+  "onpointercancel": true,
+  "onpointerdown": true,
+  "onpointerup": true,
+  "onpointermove": true,
+  "onpointerout": true,
+  "onpointerover": true,
+  "onpointerenter": true,
+  "onpointerleave": true,
+  "ongotpointercapture": true,
+  "onlostpointercapture": true,
+  "onmozfullscreenchange": true,
+  "onmozfullscreenerror": true,
+  "onanimationcancel": true,
+  "onanimationend": true,
+  "onanimationiteration": true,
+  "onanimationstart": true,
+  "ontransitioncancel": true,
+  "ontransitionend": true,
+  "ontransitionrun": true,
+  "ontransitionstart": true,
+  "onwebkitanimationend": true,
+  "onwebkitanimationiteration": true,
+  "onwebkitanimationstart": true,
+  "onwebkittransitionend": true,
+  "onerror": true,
+  "onafterprint": true,
+  "onbeforeprint": true,
+  "onbeforeunload": true,
+  "onhashchange": true,
+  "onlanguagechange": true,
+  "onmessage": true,
+  "onmessageerror": true,
+  "onoffline": true,
+  "ononline": true,
+  "onpagehide": true,
+  "onpageshow": true,
+  "onpopstate": true,
+  "onstorage": true,
+  "onunload": true,
+  "cat_rtc": true,
+  "RTCDTMFSender": true,
+  "RTCStatsReport": true,
+  "RTCTrackEvent": true,
+  "RTCDataChannelEvent": true,
+  "RTCPeerConnectionIceEvent": true,
+  "RTCCertificate": true,
+  "RTCDTMFToneChangeEvent": true,
+  "RTCPeerConnection": true,
+  "RTCIceCandidate": true,
+  "RTCRtpReceiver": true,
+  "RTCRtpSender": true,
+  "RTCSessionDescription": true,
+  "cat_vr": true,
+  "VRStageParameters": true,
+  "VRFrameData": true,
+  "VRDisplay": true,
+  "VRDisplayEvent": true,
+  "VRFieldOfView": true,
+  "VRDisplayCapabilities": true,
+  "VREyeParameters": true,
+  "VRPose": true,
+  "cat_dom": true,
+  "DOMStringMap": true,
+  "DOMRectReadOnly": true,
+  "DOMException": true,
+  "DOMRect": true,
+  "DOMMatrix": true,
+  "DOMMatrixReadOnly": true,
+  "DOMPointReadOnly": true,
+  "DOMPoint": true,
+  "DOMQuad": true,
+  "DOMRequest": true,
+  "DOMParser": true,
+  "DOMTokenList": true,
+  "DOMStringList": true,
+  "DOMImplementation": true,
+  "DOMError": true,
+  "DOMRectList": true,
+  "DOMCursor": true,
+  "cat_idb": true,
+  "IDBFileRequest": true,
+  "IDBTransaction": true,
+  "IDBCursor": true,
+  "IDBFileHandle": true,
+  "IDBMutableFile": true,
+  "IDBKeyRange": true,
+  "IDBVersionChangeEvent": true,
+  "IDBObjectStore": true,
+  "IDBFactory": true,
+  "IDBCursorWithValue": true,
+  "IDBOpenDBRequest": true,
+  "IDBRequest": true,
+  "IDBIndex": true,
+  "IDBDatabase": true,
+  "cat_audio": true,
+  "AudioContext": true,
+  "AudioBuffer": true,
+  "AudioBufferSourceNode": true,
+  "Audio": true,
+  "MediaElementAudioSourceNode": true,
+  "AudioNode": true,
+  "BaseAudioContext": true,
+  "AudioListener": true,
+  "MediaStreamAudioSourceNode": true,
+  "OfflineAudioContext": true,
+  "AudioDestinationNode": true,
+  "AudioParam": true,
+  "MediaStreamAudioDestinationNode": true,
+  "OfflineAudioCompletionEvent": true,
+  "AudioStreamTrack": true,
+  "AudioScheduledSourceNode": true,
+  "AudioProcessingEvent": true,
+  "cat_gamepad": true,
+  "GamepadButton": true,
+  "GamepadHapticActuator": true,
+  "GamepadAxisMoveEvent": true,
+  "GamepadPose": true,
+  "GamepadEvent": true,
+  "Gamepad": true,
+  "GamepadButtonEvent": true,
+  "cat_media": true,
+  "MediaKeys": true,
+  "MediaKeyError": true,
+  "MediaSource": true,
+  "MediaDevices": true,
+  "MediaKeyStatusMap": true,
+  "MediaStreamTrackEvent": true,
+  "MediaRecorder": true,
+  "MediaQueryListEvent": true,
+  "MediaStream": true,
+  "MediaEncryptedEvent": true,
+  "MediaStreamTrack": true,
+  "MediaError": true,
+  "MediaStreamEvent": true,
+  "MediaQueryList": true,
+  "MediaKeySystemAccess": true,
+  "MediaDeviceInfo": true,
+  "MediaKeySession": true,
+  "MediaList": true,
+  "MediaRecorderErrorEvent": true,
+  "MediaKeyMessageEvent": true,
+  "cat_event2": true,
+  "SpeechSynthesisErrorEvent": true,
+  "BeforeUnloadEvent": true,
+  "CustomEvent": true,
+  "PageTransitionEvent": true,
+  "PopupBlockedEvent": true,
+  "CloseEvent": true,
+  "ProgressEvent": true,
+  "MutationEvent": true,
+  "MessageEvent": true,
+  "FocusEvent": true,
+  "TrackEvent": true,
+  "DeviceMotionEvent": true,
+  "TimeEvent": true,
+  "PointerEvent": true,
+  "UserProximityEvent": true,
+  "StorageEvent": true,
+  "DragEvent": true,
+  "MouseScrollEvent": true,
+  "EventSource": true,
+  "PopStateEvent": true,
+  "DeviceProximityEvent": true,
+  "SpeechSynthesisEvent": true,
+  "XMLHttpRequestEventTarget": true,
+  "ClipboardEvent": true,
+  "AnimationPlaybackEvent": true,
+  "DeviceLightEvent": true,
+  "BlobEvent": true,
+  "MouseEvent": true,
+  "WheelEvent": true,
+  "InputEvent": true,
+  "HashChangeEvent": true,
+  "DeviceOrientationEvent": true,
+  "CompositionEvent": true,
+  "KeyEvent": true,
+  "ScrollAreaEvent": true,
+  "KeyboardEvent": true,
+  "TransitionEvent": true,
+  "ErrorEvent": true,
+  "AnimationEvent": true,
+  "FontFaceSetLoadEvent": true,
+  "EventTarget": true,
+  "captureEvents": true,
+  "releaseEvents": true,
+  "Event": true,
+  "UIEvent": true,
+  "cat_other": false,
+  "undefined": false,
+  "Array": false,
+  "Boolean": false,
+  "JSON": false,
+  "Date": false,
+  "Math": false,
+  "Number": false,
+  "String": false,
+  "RegExp": false,
+  "Error": false,
+  "InternalError": false,
+  "EvalError": false,
+  "RangeError": false,
+  "ReferenceError": false,
+  "SyntaxError": false,
+  "TypeError": false,
+  "URIError": false,
+  "ArrayBuffer": true,
+  "Int8Array": true,
+  "Uint8Array": true,
+  "Int16Array": true,
+  "Uint16Array": true,
+  "Int32Array": true,
+  "Uint32Array": true,
+  "Float32Array": true,
+  "Float64Array": true,
+  "Uint8ClampedArray": true,
+  "Proxy": true,
+  "WeakMap": true,
+  "Map": true,
+  "Set": true,
+  "DataView": false,
+  "Symbol": false,
+  "SharedArrayBuffer": true,
+  "Intl": false,
+  "TypedObject": true,
+  "Reflect": true,
+  "SIMD": true,
+  "WeakSet": true,
+  "Atomics": true,
+  "Promise": true,
+  "WebAssembly": true,
+  "NaN": false,
+  "Infinity": false,
+  "isNaN": false,
+  "isFinite": false,
+  "parseFloat": false,
+  "parseInt": false,
+  "escape": false,
+  "unescape": false,
+  "decodeURI": false,
+  "encodeURI": false,
+  "decodeURIComponent": false,
+  "encodeURIComponent": false,
+  "uneval": false,
+  "BatteryManager": true,
+  "CanvasGradient": true,
+  "TextDecoder": true,
+  "Plugin": true,
+  "PushManager": true,
+  "ChannelMergerNode": true,
+  "PerformanceResourceTiming": true,
+  "ServiceWorker": true,
+  "TextTrackCueList": true,
+  "PerformanceEntry": true,
+  "TextTrackList": true,
+  "StyleSheet": true,
+  "PerformanceMeasure": true,
+  "DesktopNotificationCenter": true,
+  "Comment": true,
+  "DelayNode": true,
+  "XPathResult": true,
+  "CDATASection": true,
+  "MessageChannel": true,
+  "BiquadFilterNode": true,
+  "SpeechSynthesisUtterance": true,
+  "Crypto": true,
+  "Navigator": true,
+  "FileList": true,
+  "URLSearchParams": false,
+  "ServiceWorkerContainer": true,
+  "ValidityState": true,
+  "ProcessingInstruction": true,
+  "AbortSignal": true,
+  "FontFace": true,
+  "FileReader": true,
+  "Worker": true,
+  "External": true,
+  "ImageBitmap": true,
+  "TimeRanges": true,
+  "Option": true,
+  "TextTrack": true,
+  "Image": true,
+  "AnimationTimeline": true,
+  "VideoPlaybackQuality": true,
+  "VTTCue": true,
+  "Storage": true,
+  "XPathExpression": true,
+  "CharacterData": false,
+  "TextMetrics": true,
+  "AnimationEffectReadOnly": true,
+  "PerformanceTiming": false,
+  "PerformanceMark": true,
+  "ImageBitmapRenderingContext": true,
+  "Headers": true,
+  "Range": false,
+  "Rect": true,
+  "AnimationEffectTimingReadOnly": true,
+  "KeyframeEffect": true,
+  "Permissions": true,
+  "TextEncoder": true,
+  "ImageData": true,
+  "SpeechSynthesisVoice": true,
+  "StorageManager": true,
+  "TextTrackCue": true,
+  "WebSocket": true,
+  "DocumentType": true,
+  "XPathEvaluator": true,
+  "PerformanceNavigationTiming": true,
+  "IdleDeadline": true,
+  "FileSystem": true,
+  "FileSystemFileEntry": true,
+  "CacheStorage": true,
+  "MimeType": true,
+  "PannerNode": true,
+  "NodeFilter": true,
+  "StereoPannerNode": true,
+  "console": false,
+  "DynamicsCompressorNode": true,
+  "PaintRequest": true,
+  "RGBColor": true,
+  "FontFaceSet": false,
+  "PaintRequestList": true,
+  "FileSystemEntry": true,
+  "XMLDocument": false,
+  "SourceBuffer": false,
+  "Screen": true,
+  "NamedNodeMap": false,
+  "History": true,
+  "Response": true,
+  "AnimationEffectTiming": true,
+  "ServiceWorkerRegistration": true,
+  "CanvasRenderingContext2D": true,
+  "ScriptProcessorNode": true,
+  "FileSystemDirectoryReader": true,
+  "MimeTypeArray": true,
+  "CanvasCaptureMediaStream": true,
+  "Directory": true,
+  "mozRTCPeerConnection": true,
+  "PerformanceObserverEntryList": true,
+  "PushSubscriptionOptions": true,
+  "Text": false,
+  "IntersectionObserverEntry": true,
+  "SubtleCrypto": true,
+  "Animation": true,
+  "DataTransfer": true,
+  "TreeWalker": true,
+  "XMLHttpRequest": true,
+  "LocalMediaStream": true,
+  "ConvolverNode": true,
+  "WaveShaperNode": true,
+  "DataTransferItemList": false,
+  "Request": true,
+  "SourceBufferList": false,
+  "XSLTProcessor": true,
+  "XMLHttpRequestUpload": true,
+  "SharedWorker": true,
+  "Notification": false,
+  "DataTransferItem": true,
+  "AnalyserNode": true,
+  "mozRTCIceCandidate": true,
+  "PerformanceObserver": true,
+  "OfflineResourceList": true,
+  "FileSystemDirectoryEntry": true,
+  "DesktopNotification": false,
+  "DataChannel": true,
+  "IIRFilterNode": true,
+  "ChannelSplitterNode": true,
+  "File": true,
+  "ConstantSourceNode": true,
+  "CryptoKey": true,
+  "GainNode": true,
+  "AbortController": true,
+  "Attr": true,
+  "SpeechSynthesis": true,
+  "PushSubscription": false,
+  "XMLStylesheetProcessingInstruction": false,
+  "NodeIterator": true,
+  "VideoStreamTrack": true,
+  "XMLSerializer": true,
+  "CaretPosition": true,
+  "FormData": true,
+  "CanvasPattern": true,
+  "mozRTCSessionDescription": true,
+  "Path2D": true,
+  "PerformanceNavigation": true,
+  "URL": false,
+  "PluginArray": true,
+  "MutationRecord": true,
+  "WebKitCSSMatrix": true,
+  "PeriodicWave": true,
+  "DocumentFragment": true,
+  "DocumentTimeline": false,
+  "ScreenOrientation": true,
+  "BroadcastChannel": true,
+  "PermissionStatus": true,
+  "IntersectionObserver": true,
+  "Blob": true,
+  "MessagePort": true,
+  "BarProp": true,
+  "OscillatorNode": true,
+  "Cache": true,
+  "RadioNodeList": true,
+  "KeyframeEffectReadOnly": true,
+  "InstallTrigger": true,
+  "Function": false,
+  "Object": false,
+  "eval": true,
+  "Window": false,
+  "close": false,
+  "stop": false,
+  "focus": false,
+  "blur": false,
+  "open": true,
+  "alert": false,
+  "confirm": false,
+  "prompt": false,
+  "print": false,
+  "postMessage": true,
+  "getSelection": true,
+  "getComputedStyle": true,
+  "matchMedia": true,
+  "moveTo": false,
+  "moveBy": false,
+  "resizeTo": false,
+  "resizeBy": false,
+  "scroll": false,
+  "scrollTo": false,
+  "scrollBy": false,
+  "requestAnimationFrame": true,
+  "cancelAnimationFrame": true,
+  "getDefaultComputedStyle": false,
+  "scrollByLines": false,
+  "scrollByPages": false,
+  "sizeToContent": false,
+  "updateCommands": true,
+  "find": false,
+  "dump": true,
+  "setResizable": false,
+  "requestIdleCallback": false,
+  "cancelIdleCallback": false,
+  "btoa": true,
+  "atob": true,
+  "setTimeout": true,
+  "clearTimeout": true,
+  "setInterval": true,
+  "clearInterval": true,
+  "createImageBitmap": true,
+  "fetch": true,
+  "self": true,
+  "name": false,
+  "history": true,
+  "locationbar": true,
+  "menubar": true,
+  "personalbar": true,
+  "scrollbars": true,
+  "statusbar": true,
+  "toolbar": true,
+  "status": true,
+  "closed": true,
+  "frames": true,
+  "length": false,
+  "opener": true,
+  "parent": true,
+  "frameElement": true,
+  "navigator": true,
+  "external": true,
+  "applicationCache": true,
+  "screen": true,
+  "innerWidth": true,
+  "innerHeight": true,
+  "scrollX": true,
+  "pageXOffset": true,
+  "scrollY": true,
+  "pageYOffset": true,
+  "screenX": true,
+  "screenY": true,
+  "outerWidth": true,
+  "outerHeight": true,
+  "performance": true,
+  "mozInnerScreenX": true,
+  "mozInnerScreenY": true,
+  "devicePixelRatio": true,
+  "scrollMaxX": true,
+  "scrollMaxY": true,
+  "fullScreen": false,
+  "mozPaintCount": true,
+  "sidebar": false,
+  "crypto": true,
+  "speechSynthesis": true,
+  "localStorage": true,
+  "origin": true,
+  "isSecureContext": false,
+  "indexedDB": true,
+  "caches": true,
+  "sessionStorage": true,
+  "window": false,
+  "document": true,
+  "location": false,
+  "top": true,
+  "netscape": true,
+  "Node": true,
+  "Document": true,
+  "Performance": false,
+  "startProfiling": true,
+  "stopProfiling": true,
+  "pauseProfilers": true,
+  "resumeProfilers": true,
+  "dumpProfile": true,
+  "getMaxGCPauseSinceClear": true,
+  "clearMaxGCPauseAccumulator": true,
+  "Location": true,
+  "StyleSheetList": false,
+  "Selection": false,
+  "Element": true,
+  "AnonymousContent": false,
+  "MutationObserver": true,
+  "NodeList": true,
+  "StopIteration": true
+};
+
+
+//************************Comes from HTML file index.html's script test.js****************************
+
+/**
+*	If this is true, it evaluates entire scripts instead of returning as soon as it encounters a violation.
+*
+*	Also, it controls whether or not this part of the code logs to the console.
+*
+*/
+var DEBUG = true;
+console.log("DEBUG:" + DEBUG);
+
+function dbg_print(a, b) {
+  if (DEBUG == true) {
+    //console.log(a,b)
+  }
+}
+function full_evaluate(script) {
+  var res = true;
+  if (script === undefined || script == "") {
+    return [true, "Harmless null script"];
+  }
+
+  var ast = acornLoose.parse(script).body[0];
+
+  var flag = false;
+  var amtloops = 0;
+
+  var loopkeys = { "for": true, "if": true, "while": true, "switch": true };
+  var operators = { "||": true, "&&": true, "=": true, "==": true, "++": true, "--": true, "+=": true, "-=": true, "*": true };
+  try {
+    var tokens = acorn.tokenizer(script);
+  } catch (e) {
+    console.warn("Tokenizer could not be initiated (probably invalid code)");
+    return [false, "Tokenizer could not be initiated (probably invalid code)"];
+  }
+  try {
+    var toke = tokens.getToken();
+  } catch (e) {
+    console.warn("couldn't get first token (probably invalid code)");
+    console.warn("Continuing evaluation");
+  }
+
+  /**
+  * Given the end of an identifer token, it tests for bracket suffix notation
+  */
+  function being_called(end) {
+    var i = 0;
+    while (script.charAt(end + i).match(/\s/g) !== null) {
+      i++;
+      if (i >= script.length - 1) {
+        return false;
+      }
+    }
+    if (script.charAt(end + i) == "(") {
+      return true;
+    } else {
+      return false;
+    }
+  }
+  /**
+  * Given the end of an identifer token, it tests for parentheses
+  */
+  function is_bsn(end) {
+    var i = 0;
+    while (script.charAt(end + i).match(/\s/g) !== null) {
+      i++;
+      if (i >= script.length - 1) {
+        return false;
+      }
+    }
+    if (script.charAt(end + i) == "[") {
+      return true;
+    } else {
+      return false;
+    }
+  }
+  var error_count = 0;
+  while (toke.type != acorn.tokTypes.eof) {
+    if (toke.type.keyword !== undefined) {
+      // This type of loop detection ignores functional loop alternatives and ternary operators
+      //dbg_print("Keyword:"+toke.type.keyword);
+      console.log(toke);
+      if (toke.type.keyword == "function") {
+        dbg_print("%c NONTRIVIAL: Function declaration.", "color:red");
+        if (DEBUG == false) {
+          return [false, "NONTRIVIAL: Function declaration."];
+        }
+      }
+
+      if (loopkeys[toke.type.keyword] !== undefined) {
+        amtloops++;
+        if (amtloops > 3) {
+          dbg_print("%c NONTRIVIAL: Too many loops/conditionals.", "color:red");
+          if (DEBUG == false) {
+            return [false, "NONTRIVIAL: Too many loops/conditionals."];
+          }
+        }
+      }
+    } else if (toke.value !== undefined) {
+      var status = fname_data[toke.value];
+      if (status === true) { // is the identifier banned?
+        dbg_print("%c NONTRIVIAL: nontrivial token: '" + toke.value + "'", "color:red");
+        if (DEBUG == false) {
+          return [false, "NONTRIVIAL: nontrivial token: '" + toke.value + "'"];
+        }
+      } else if (status === false) {// is the identifier not banned?
+        // Is there bracket suffix notation?
+        if (operators[toke.value] === undefined) {
+          if (is_bsn(toke.end)) {
+            dbg_print("%c NONTRIVIAL: Bracket suffix notation on variable '" + toke.value + "'", "color:red");
+            if (DEBUG == false) {
+              return [false, "%c NONTRIVIAL: Bracket suffix notation on variable '" + toke.value + "'"];
+            }
+          }
+        }
+      } else if (status === undefined) {// is the identifier user defined?
+        // Are arguments being passed to a user defined variable?
+        if (being_called(toke.end)) {
+          dbg_print("%c NONTRIVIAL: User defined variable '" + toke.value + "' called as function", "color:red");
+          if (DEBUG == false) {
+            return [false, "NONTRIVIAL: User defined variable '" + toke.value + "' called as function"];
+          }
+        }
+        // Is there bracket suffix notation?
+        if (operators[toke.value] === undefined) {
+          if (is_bsn(toke.end)) {
+            dbg_print("%c NONTRIVIAL: Bracket suffix notation on variable '" + toke.value + "'", "color:red");
+            if (DEBUG == false) {
+              return [false, "NONTRIVIAL: Bracket suffix notation on variable '" + toke.value + "'"];
+            }
+          }
+        }
+      } else {
+        dbg_print("trivial token:" + toke.value);
+      }
+    }
+    // If not a keyword or an identifier it's some kind of operator, field parenthesis, brackets
+    try {
+      toke = tokens.getToken();
+    } catch (e) {
+      dbg_print("Denied script because it cannot be parsed.");
+      return [false, "NONTRIVIAL: Cannot be parsed."];
+      console.warn("Continuing evaluation");
+      error_count++;
+    }
+  }
+
+  dbg_print("%cAppears to be trivial.", "color:green;");
+  return [true, "Script appears to be trivial."];
+}
+
+//****************************************************************************************************
+
+window.onload = function() {
+  document.getElementById("parse").addEventListener("click", function() {
+    var script = document.getElementById("input").value;
+    var ast = acornLoose.parse(script).body[0];
+    document.getElementById("output").innerHTML = JSON.stringify(ast, null, '\t'); // Indented with tab
+    document.getElementById("output").innerHTML = full_evaluate(script) + "\n\n" + document.getElementById("output").innerHTML;
+  });
+}
-- 
cgit v1.2.3