/* * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.flex.compiler.internal.codegen.externals; import java.io.File; import java.io.IOException; import org.apache.flex.compiler.clients.ExternCConfiguration; import org.apache.flex.utils.FilenameNormalization; public class ExternalsTestUtils { public static File TEMP_DIR = new File( FilenameNormalization.normalize("../../target/junit-temp")); // XXX missing.js is a temp location until we can figure out where it should placed in the build public static File MISSING_JS_FILE = FilenameNormalization.normalize(new File( "../../../externs/js/src/main/javascript/missing.js")); // XXX AS3.as is a namespace needed to override toString in some classes public static File AS3_NAMESPACE_FILE; public static File EXTERNAL_JS_DIR; public static File EXTERNAL_JQUERY_DIR; public static File EXTERNAL_JASMINE_DIR; public static File EXTERNAL_NODE_DIR; public static File AS_ROOT_DIR = new File(TEMP_DIR, "externals/as"); public static void init() { File f = new File( "../../../flex-typedefs/js/src/main/javascript/missing.js"); if (!f.exists()) f = new File( "../../../../flex-typedefs/js/src/main/javascript/missing.js"); // XXX missing.js is a temp location until we can figure out where it should placed in the build MISSING_JS_FILE = FilenameNormalization.normalize(f); f = new File( "../../../flex-typedefs/js/src/main/flex/AS3.as"); if (!f.exists()) f = new File( "../../../../flex-typedefs/js/src/main/flex/AS3.as"); // XXX AS3.as is a namespace needed to override toString in some classes AS3_NAMESPACE_FILE = FilenameNormalization.normalize(f); f = new File( "../../../flex-typedefs/js/target/downloads"); if (!f.exists()) f = new File( "../../../../flex-typedefs/js/target/downloads"); EXTERNAL_JS_DIR = FilenameNormalization.normalize(f); f = new File( "../../../flex-typedefs/jquery/target/downloads"); if (!f.exists()) f = new File( "../../../../flex-typedefs/jquery/target/downloads"); EXTERNAL_JQUERY_DIR = FilenameNormalization.normalize(f); f = new File( "../../../flex-typedefs/jasmine/target/downloads"); if (!f.exists()) f = new File( "../../../../flex-typedefs/jasmine/target/downloads"); EXTERNAL_JASMINE_DIR = FilenameNormalization.normalize(f); f = new File( "../../../flex-typedefs/node/target/downloads/closure-compiler-master/contrib/nodejs"); if (!f.exists()) f = new File( "../../../../flex-typedefs/node/target/downloads/closure-compiler-master/contrib/nodejs"); EXTERNAL_NODE_DIR = FilenameNormalization.normalize(f); } public static void addTestExcludesFull(ExternCConfiguration config) { config.addFieldExclude("Window", "focus"); config.addClassExclude("controlRange"); config.addExclude("Array", "toSource"); config.addExclude("Date", "valueOf"); config.addExclude("String", "valueOf"); // SVG config.addExclude("SVGStylable", "className"); config.addExclude("SVGStylable", "style"); config.addExclude("SVGLocatable", "farthestViewportElement"); config.addExclude("SVGLocatable", "nearestViewportElement"); // jQuery XXX (these will need to be defined in some config when we get external libs // working correctly with EXTERNC) config.addClassToFunction("$"); config.addExclude("jQuery", "is"); config.addExclude("jQuery", "promise"); config.addExclude("jQuery", "getJSON"); config.addExclude("jQuery", "ajax"); config.addExclude("jQuery", "when"); config.addExclude("jQuery", "post"); config.addExclude("jQuery", "getScript"); config.addExclude("jQuery", "Callbacks"); config.addClassExclude("Deferred"); config.addClassExclude("jQuery.deferred"); config.addClassExclude("jQuery.Event"); config.addClassExclude("jQuery.Deferred"); config.addClassExclude("$.Event"); config.addClassExclude("$.Deferred"); config.addClassExclude("$.deferred"); } public static void addTestExternalsFull(ExternCConfiguration config) throws IOException { String coreRoot = ExternalsTestUtils.EXTERNAL_JS_DIR.getAbsolutePath(); config.addExternal(ExternalsTestUtils.MISSING_JS_FILE); config.addExternal(coreRoot + "/es3.js"); config.addExternal(coreRoot + "/es5.js"); config.addExternal(coreRoot + "/es6.js"); config.addExternal(coreRoot + "/es6_collections.js"); config.addExternal(coreRoot + "/browser/w3c_anim_timing.js"); config.addExternal(coreRoot + "/browser/w3c_audio.js"); config.addExternal(coreRoot + "/browser/w3c_batterystatus.js"); config.addExternal(coreRoot + "/browser/w3c_css.js"); config.addExternal(coreRoot + "/browser/w3c_css3d.js"); config.addExternal(coreRoot + "/browser/w3c_device_sensor_event.js"); config.addExternal(coreRoot + "/browser/w3c_dom1.js"); config.addExternal(coreRoot + "/browser/w3c_dom2.js"); config.addExternal(coreRoot + "/browser/w3c_dom3.js"); //config.addExternal(coreRoot + "/browser/w3c_dom4.js"); config.addExternal(coreRoot + "/browser/w3c_elementtraversal.js"); config.addExternal(coreRoot + "/browser/w3c_event.js"); config.addExternal(coreRoot + "/browser/w3c_event3.js"); config.addExternal(coreRoot + "/browser/w3c_gamepad.js"); config.addExternal(coreRoot + "/browser/w3c_geolocation.js"); config.addExternal(coreRoot + "/browser/w3c_indexeddb.js"); config.addExternal(coreRoot + "/browser/w3c_midi.js"); config.addExternal(coreRoot + "/browser/w3c_navigation_timing.js"); config.addExternal(coreRoot + "/browser/w3c_permissions.js"); config.addExternal(coreRoot + "/browser/w3c_pointer_events.js"); config.addExternal(coreRoot + "/browser/w3c_range.js"); config.addExternal(coreRoot + "/browser/w3c_requestidlecallback.js"); config.addExternal(coreRoot + "/browser/w3c_rtc.js"); config.addExternal(coreRoot + "/browser/w3c_screen_orientation.js"); config.addExternal(coreRoot + "/browser/w3c_selectors.js"); //config.addExternal(coreRoot + "/browser/w3c_serviceworker.js"); config.addExternal(coreRoot + "/browser/w3c_touch_event.js"); //config.addExternal(coreRoot + "/browser/w3c_webcrypto.js"); config.addExternal(coreRoot + "/browser/w3c_xml.js"); config.addExternal(coreRoot + "/browser/whatwg_encoding.js"); config.addExternal(coreRoot + "/browser/chrome.js"); //config.addExternal(coreRoot + "/browser/fetchapi.js"); config.addExternal(coreRoot + "/browser/fileapi.js"); config.addExternal(coreRoot + "/browser/flash.js"); config.addExternal(coreRoot + "/browser/gecko_css.js"); config.addExternal(coreRoot + "/browser/gecko_dom.js"); config.addExternal(coreRoot + "/browser/gecko_event.js"); config.addExternal(coreRoot + "/browser/gecko_xml.js"); config.addExternal(coreRoot + "/browser/html5.js"); config.addExternal(coreRoot + "/browser/ie_css.js"); config.addExternal(coreRoot + "/browser/ie_dom.js"); config.addExternal(coreRoot + "/browser/ie_event.js"); config.addExternal(coreRoot + "/browser/ie_vml.js"); config.addExternal(coreRoot + "/browser/intl.js"); config.addExternal(coreRoot + "/browser/iphone.js"); config.addExternal(coreRoot + "/browser/mediasource.js"); config.addExternal(coreRoot + "/browser/page_visibility.js"); config.addExternal(coreRoot + "/browser/streamsapi.js"); config.addExternal(coreRoot + "/browser/url.js"); config.addExternal(coreRoot + "/browser/v8.js"); config.addExternal(coreRoot + "/browser/webgl.js"); config.addExternal(coreRoot + "/browser/webkit_css.js"); config.addExternal(coreRoot + "/browser/webkit_dom.js"); config.addExternal(coreRoot + "/browser/webkit_event.js"); //config.addExternal(coreRoot + "/browser/webkit_notifications.js"); config.addExternal(coreRoot + "/browser/webkit_usercontent.js"); config.addExternal(coreRoot + "/browser/webstorage.js"); config.addExternal(coreRoot + "/browser/window.js"); config.addExternal(coreRoot + "/svg.js"); } }