You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/04/26 05:39:48 UTC
[27/27] git commit: [flex-sdk] [refs/heads/FDBWorkers] - fdb with
worker support
fdb with worker support
Project: http://git-wip-us.apache.org/repos/asf/flex-sdk/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-sdk/commit/a3765ae5
Tree: http://git-wip-us.apache.org/repos/asf/flex-sdk/tree/a3765ae5
Diff: http://git-wip-us.apache.org/repos/asf/flex-sdk/diff/a3765ae5
Branch: refs/heads/FDBWorkers
Commit: a3765ae5a162db391722b0c05aa2576191980fb2
Parents: 4a13999
Author: Alex Harui <ah...@apache.org>
Authored: Fri Apr 25 20:38:22 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Fri Apr 25 20:38:22 2014 -0700
----------------------------------------------------------------------
.gitignore | 2 +
modules/fdbworkers/build.properties | 56 +
modules/fdbworkers/build.xml | 64 +
modules/fdbworkers/jburg-gen.xml | 58 +
.../src/flash/tools/ActionLocation.java | 53 +
.../src/flash/tools/SwfActionContainer.java | 295 +
.../src/flash/tools/debugger/AIRLaunchInfo.java | 123 +
.../AlreadyActiveApplicationException.java | 47 +
.../src/flash/tools/debugger/Bootstrap.java | 53 +
.../src/flash/tools/debugger/Browser.java | 82 +
.../tools/debugger/CommandLineException.java | 79 +
.../flash/tools/debugger/DebuggerLocalizer.java | 102 +
.../debugger/DefaultDebuggerCallbacks.java | 431 +
.../src/flash/tools/debugger/Frame.java | 122 +
.../tools/debugger/IDebuggerCallbacks.java | 150 +
.../tools/debugger/ILaunchNotification.java | 39 +
.../src/flash/tools/debugger/ILauncher.java | 49 +
.../src/flash/tools/debugger/IProgress.java | 36 +
.../tools/debugger/InProgressException.java | 28 +
.../src/flash/tools/debugger/Isolate.java | 40 +
.../flash/tools/debugger/IsolateController.java | 184 +
.../flash/tools/debugger/IsolateSession.java | 177 +
.../src/flash/tools/debugger/Location.java | 41 +
.../tools/debugger/NoResponseException.java | 61 +
.../tools/debugger/NotConnectedException.java | 33 +
.../tools/debugger/NotSupportedException.java | 39 +
.../tools/debugger/NotSuspendedException.java | 33 +
.../src/flash/tools/debugger/Player.java | 82 +
.../tools/debugger/PlayerDebugException.java | 30 +
.../src/flash/tools/debugger/Session.java | 604 ++
.../flash/tools/debugger/SessionManager.java | 390 +
.../flash/tools/debugger/SessionManager2.java | 184 +
.../src/flash/tools/debugger/SourceFile.java | 124 +
.../src/flash/tools/debugger/SourceLocator.java | 51 +
.../src/flash/tools/debugger/SuspendReason.java | 48 +
.../tools/debugger/SuspendedException.java | 33 +
.../src/flash/tools/debugger/SwfInfo.java | 110 +
.../src/flash/tools/debugger/Value.java | 255 +
.../flash/tools/debugger/ValueAttribute.java | 42 +
.../src/flash/tools/debugger/Variable.java | 169 +
.../flash/tools/debugger/VariableAttribute.java | 168 +
.../src/flash/tools/debugger/VariableType.java | 34 +
.../flash/tools/debugger/VersionException.java | 34 +
.../src/flash/tools/debugger/Watch.java | 52 +
.../src/flash/tools/debugger/WatchKind.java | 33 +
.../tools/debugger/concrete/AIRPlayer.java | 64 +
.../tools/debugger/concrete/AbstractPlayer.java | 55 +
.../tools/debugger/concrete/ActiveXPlayer.java | 39 +
.../flash/tools/debugger/concrete/BinaryOp.java | 47 +
.../flash/tools/debugger/concrete/DBrowser.java | 65 +
.../flash/tools/debugger/concrete/DIsolate.java | 49 +
.../tools/debugger/concrete/DLocation.java | 73 +
.../flash/tools/debugger/concrete/DManager.java | 2583 ++++++
.../flash/tools/debugger/concrete/DMessage.java | 1016 +++
.../tools/debugger/concrete/DMessageCache.java | 110 +
.../debugger/concrete/DMessageCounter.java | 208 +
.../flash/tools/debugger/concrete/DModule.java | 832 ++
.../tools/debugger/concrete/DProtocol.java | 495 ++
.../debugger/concrete/DProtocolNotifierIF.java | 34 +
.../tools/debugger/concrete/DStackContext.java | 176 +
.../tools/debugger/concrete/DSuspendInfo.java | 57 +
.../flash/tools/debugger/concrete/DSwfInfo.java | 323 +
.../flash/tools/debugger/concrete/DValue.java | 534 ++
.../tools/debugger/concrete/DVariable.java | 517 ++
.../flash/tools/debugger/concrete/DWatch.java | 50 +
.../debugger/concrete/GetVariableFlag.java | 63 +
.../debugger/concrete/IsolatePlayerSession.java | 221 +
.../concrete/LineFunctionContainer.java | 162 +
.../debugger/concrete/NetscapePluginPlayer.java | 42 +
.../tools/debugger/concrete/PlayerSession.java | 3069 +++++++
.../concrete/PlayerSessionIsolateStatus.java | 25 +
.../debugger/concrete/PlayerSessionManager.java | 1211 +++
.../debugger/concrete/ProcessListener.java | 206 +
.../tools/debugger/concrete/ScriptText.java | 158 +
.../debugger/concrete/StandalonePlayer.java | 42 +
.../tools/debugger/concrete/StreamListener.java | 71 +
.../concrete/appleScriptCloseCaminoWindow.txt | 60 +
.../concrete/appleScriptCloseSafariWindow.txt | 54 +
.../appleScriptGetDefaultBrowserName.txt | 34 +
.../tools/debugger/concrete/djapi_da.properties | 26 +
.../tools/debugger/concrete/djapi_de.properties | 26 +
.../tools/debugger/concrete/djapi_en.properties | 26 +
.../tools/debugger/concrete/djapi_es.properties | 26 +
.../tools/debugger/concrete/djapi_fi.properties | 26 +
.../tools/debugger/concrete/djapi_fr.properties | 26 +
.../tools/debugger/concrete/djapi_it.properties | 26 +
.../tools/debugger/concrete/djapi_ja.properties | 26 +
.../tools/debugger/concrete/djapi_ko.properties | 26 +
.../tools/debugger/concrete/djapi_nb.properties | 26 +
.../tools/debugger/concrete/djapi_nl.properties | 26 +
.../tools/debugger/concrete/djapi_pt.properties | 26 +
.../tools/debugger/concrete/djapi_ru.properties | 26 +
.../tools/debugger/concrete/djapi_sv.properties | 26 +
.../debugger/concrete/djapi_zh_CN.properties | 26 +
.../debugger/concrete/djapi_zh_TW.properties | 26 +
.../flash/tools/debugger/djapi_da.properties | 26 +
.../flash/tools/debugger/djapi_de.properties | 26 +
.../flash/tools/debugger/djapi_en.properties | 26 +
.../flash/tools/debugger/djapi_es.properties | 26 +
.../flash/tools/debugger/djapi_fi.properties | 26 +
.../flash/tools/debugger/djapi_fr.properties | 26 +
.../flash/tools/debugger/djapi_it.properties | 26 +
.../flash/tools/debugger/djapi_ja.properties | 26 +
.../flash/tools/debugger/djapi_ko.properties | 26 +
.../flash/tools/debugger/djapi_nb.properties | 26 +
.../flash/tools/debugger/djapi_nl.properties | 26 +
.../flash/tools/debugger/djapi_pt.properties | 26 +
.../flash/tools/debugger/djapi_ru.properties | 26 +
.../flash/tools/debugger/djapi_sv.properties | 26 +
.../flash/tools/debugger/djapi_zh_CN.properties | 26 +
.../flash/tools/debugger/djapi_zh_TW.properties | 26 +
.../flash/tools/debugger/events/BreakEvent.java | 47 +
.../debugger/events/ConsoleErrorFault.java | 31 +
.../flash/tools/debugger/events/DebugEvent.java | 29 +
.../debugger/events/DivideByZeroFault.java | 33 +
.../tools/debugger/events/ExceptionFault.java | 61 +
.../flash/tools/debugger/events/FaultEvent.java | 84 +
.../debugger/events/FileListModifiedEvent.java | 29 +
.../events/FunctionMetaDataAvailableEvent.java | 38 +
.../debugger/events/InvalidTargetFault.java | 32 +
.../tools/debugger/events/InvalidURLFault.java | 31 +
.../tools/debugger/events/InvalidWithFault.java | 34 +
.../debugger/events/IsolateCreateEvent.java | 38 +
.../tools/debugger/events/IsolateExitEvent.java | 38 +
.../tools/debugger/events/ProtoLimitFault.java | 34 +
.../debugger/events/RecursionLimitFault.java | 33 +
.../debugger/events/ScriptTimeoutFault.java | 33 +
.../debugger/events/StackUnderFlowFault.java | 33 +
.../tools/debugger/events/SwfLoadedEvent.java | 57 +
.../tools/debugger/events/SwfUnloadedEvent.java | 40 +
.../flash/tools/debugger/events/TraceEvent.java | 32 +
.../debugger/expression/AS3DebuggerBURM.jbg | 269 +
.../AS3DebuggerCompoundAssignmentRules.jbg | 28 +
.../debugger/expression/AS3DebuggerReducer.java | 1966 +++++
.../debugger/expression/AS3DebuggerRules.jbg | 734 ++
.../tools/debugger/expression/ASTBuilder.java | 153 +
.../tools/debugger/expression/Context.java | 126 +
.../debugger/expression/DebuggerExpression.java | 163 +
.../expression/DebuggerExpressionEvaluator.java | 76 +
.../tools/debugger/expression/DebuggerUtil.java | 68 +
.../debugger/expression/DebuggerValue.java | 26 +
.../flash/tools/debugger/expression/ECMA.java | 430 +
.../ExpressionEvaluatorException.java | 39 +
.../expression/FoldedExpressionNode.java | 252 +
.../tools/debugger/expression/IASTBuilder.java | 35 +
.../tools/debugger/expression/IASTFolder.java | 43 +
.../expression/IExpressionEvaluator.java | 30 +
.../expression/LogicalOperatorsFolder.java | 102 +
.../expression/NoSuchVariableException.java | 40 +
.../expression/PlayerFaultException.java | 48 +
.../tools/debugger/expression/ValueExp.java | 79 +
.../expression/expression_da.properties | 35 +
.../expression/expression_de.properties | 35 +
.../expression/expression_en.properties | 35 +
.../expression/expression_es.properties | 35 +
.../expression/expression_fi.properties | 35 +
.../expression/expression_fr.properties | 35 +
.../expression/expression_it.properties | 35 +
.../expression/expression_ja.properties | 35 +
.../expression/expression_ko.properties | 35 +
.../expression/expression_nb.properties | 35 +
.../expression/expression_nl.properties | 35 +
.../expression/expression_pt.properties | 35 +
.../expression/expression_ru.properties | 35 +
.../expression/expression_sv.properties | 35 +
.../expression/expression_zh_CN.properties | 35 +
.../expression/expression_zh_TW.properties | 35 +
.../threadsafe/ThreadSafeASTBuilder.java | 64 +
.../threadsafe/ThreadSafeBootstrap.java | 39 +
.../threadsafe/ThreadSafeDebuggerObject.java | 36 +
.../debugger/threadsafe/ThreadSafeFrame.java | 140 +
.../debugger/threadsafe/ThreadSafeIsolate.java | 62 +
.../threadsafe/ThreadSafeIsolateSession.java | 285 +
.../debugger/threadsafe/ThreadSafeLocation.java | 90 +
.../debugger/threadsafe/ThreadSafePlayer.java | 73 +
.../debugger/threadsafe/ThreadSafeSession.java | 435 +
.../threadsafe/ThreadSafeSessionManager.java | 203 +
.../threadsafe/ThreadSafeSourceFile.java | 150 +
.../threadsafe/ThreadSafeSourceLocator.java | 70 +
.../debugger/threadsafe/ThreadSafeSwfInfo.java | 124 +
.../debugger/threadsafe/ThreadSafeValue.java | 159 +
.../debugger/threadsafe/ThreadSafeValueExp.java | 71 +
.../debugger/threadsafe/ThreadSafeVariable.java | 142 +
.../debugger/threadsafe/ThreadSafeWatch.java | 95 +
.../fdbworkers/src/flash/util/URLEncoder.java | 150 +
.../fdbworkers/src/flash/util/URLHelper.java | 283 +
.../tools/debugger/cli/AmbiguousException.java | 31 +
.../flex/tools/debugger/cli/BreakAction.java | 150 +
.../tools/debugger/cli/BreakIdentifier.java | 28 +
.../flex/tools/debugger/cli/CatchAction.java | 57 +
.../src/flex/tools/debugger/cli/DebugCLI.java | 7567 ++++++++++++++++++
.../flex/tools/debugger/cli/DisplayAction.java | 62 +
.../tools/debugger/cli/ExpressionCache.java | 544 ++
.../tools/debugger/cli/ExpressionContext.java | 653 ++
.../src/flex/tools/debugger/cli/Extensions.java | 551 ++
.../tools/debugger/cli/ExtensionsDisabled.java | 37 +
.../flex/tools/debugger/cli/FaultActions.java | 228 +
.../flex/tools/debugger/cli/FileInfoCache.java | 558 ++
.../src/flex/tools/debugger/cli/Help.java | 91 +
.../flex/tools/debugger/cli/IntProperties.java | 36 +
.../tools/debugger/cli/InternalProperty.java | 46 +
.../tools/debugger/cli/LocationCollection.java | 91 +
.../tools/debugger/cli/NoMatchException.java | 31 +
.../flex/tools/debugger/cli/StringIntArray.java | 120 +
.../flex/tools/debugger/cli/VariableFacade.java | 91 +
.../flex/tools/debugger/cli/WatchAction.java | 59 +
.../flex/tools/debugger/cli/fdb_da.properties | 253 +
.../flex/tools/debugger/cli/fdb_de.properties | 253 +
.../flex/tools/debugger/cli/fdb_en.properties | 274 +
.../flex/tools/debugger/cli/fdb_es.properties | 253 +
.../flex/tools/debugger/cli/fdb_fi.properties | 253 +
.../flex/tools/debugger/cli/fdb_fr.properties | 263 +
.../flex/tools/debugger/cli/fdb_it.properties | 253 +
.../flex/tools/debugger/cli/fdb_ja.properties | 263 +
.../flex/tools/debugger/cli/fdb_ko.properties | 253 +
.../flex/tools/debugger/cli/fdb_nb.properties | 253 +
.../flex/tools/debugger/cli/fdb_nl.properties | 253 +
.../flex/tools/debugger/cli/fdb_pt.properties | 253 +
.../flex/tools/debugger/cli/fdb_ru.properties | 253 +
.../flex/tools/debugger/cli/fdb_sv.properties | 253 +
.../tools/debugger/cli/fdb_zh_CN.properties | 263 +
.../tools/debugger/cli/fdb_zh_TW.properties | 253 +
.../src/flex/tools/debugger/cli/fdbhelp_br.txt | 819 ++
.../src/flex/tools/debugger/cli/fdbhelp_de.txt | 873 ++
.../src/flex/tools/debugger/cli/fdbhelp_dk.txt | 808 ++
.../src/flex/tools/debugger/cli/fdbhelp_en.txt | 828 ++
.../src/flex/tools/debugger/cli/fdbhelp_es.txt | 821 ++
.../src/flex/tools/debugger/cli/fdbhelp_fi.txt | 817 ++
.../src/flex/tools/debugger/cli/fdbhelp_fr.txt | 835 ++
.../src/flex/tools/debugger/cli/fdbhelp_it.txt | 872 ++
.../src/flex/tools/debugger/cli/fdbhelp_ja.txt | 793 ++
.../flex/tools/debugger/cli/fdbhelp_ko_KR.txt | 824 ++
.../src/flex/tools/debugger/cli/fdbhelp_nl.txt | 886 ++
.../src/flex/tools/debugger/cli/fdbhelp_no.txt | 803 ++
.../src/flex/tools/debugger/cli/fdbhelp_ru.txt | 822 ++
.../src/flex/tools/debugger/cli/fdbhelp_se.txt | 806 ++
.../flex/tools/debugger/cli/fdbhelp_zh_CN.txt | 791 ++
.../flex/tools/debugger/cli/fdbhelp_zh_TW.txt | 752 ++
238 files changed, 55502 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 1a01ea1..0eccc82 100644
--- a/.gitignore
+++ b/.gitignore
@@ -81,6 +81,8 @@ ipch/
obj/
[Bb]in
[Dd]ebug*/
+!debugger/
+modules/debugger/classes/
[Rr]elease*/
Ankh.NoLoad
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/build.properties
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/build.properties b/modules/fdbworkers/build.properties
new file mode 100644
index 0000000..f02bf6d
--- /dev/null
+++ b/modules/fdbworkers/build.properties
@@ -0,0 +1,56 @@
+################################################################################
+##
+## 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.
+##
+################################################################################
+bin.includes = META-INF/,\
+ plugin.xml,\
+ fdb.jar
+output.fdb.jar = bin/
+source.fdb.jar = src/,\
+ swf-utils-models/,\
+ generated/src/
+jars.compile.order = fdb.jar
+
+# description values
+release=Flash Debugger
+release.version=1.0.0
+
+
+# JAR Manifest Entries
+manifest.sealed=false
+manifest.Implementation-Title=${release}
+manifest.Implementation-Version=${release.version}
+manifest.Implementation-Vendor=Apache Software Foundation
+main.class=flex.tools.debugger.cli.DebugCLI
+
+# Directories
+basedir.bin=${basedir}/bin
+basedir.lib=${basedir}/lib
+basedir.src=${basedir}/src
+basedir.swfutils=${basedir}/swf-utils-models
+basedir.generated.src=${basedir}/generated/src
+basedir.manifest=${basedir}/META-INF
+compiler.generated.lib=${basedir}/../../compiler/com.adobe.flash.compiler/generated/dist/sdk/lib
+generated=${basedir}/generated
+dist=${basedir}/dist
+
+#JAR names
+jar=fdb.jar
+jar.dependencies=asc-common.jar
+
+
+
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/build.xml
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/build.xml b/modules/fdbworkers/build.xml
new file mode 100644
index 0000000..24b830a
--- /dev/null
+++ b/modules/fdbworkers/build.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!--
+
+ 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.
+
+-->
+<project basedir="." default="jar" name="com.adobe.flash.fdb" >
+ <property file="build.properties" />
+ <!-- label is set by CruiseControl script based on P4 label incrementer -->
+ <condition property="build.number" value="${label}" else="0">
+ <isset property="label" />
+ </condition>
+ <path id="classpath">
+ <fileset dir="${compiler.generated.lib}" includes="${jar.dependencies}" />
+ </path>
+
+ <target name="jar" depends="compile">
+ <mkdir dir="${dist}" />
+ <jar destfile="${dist}/${jar}" basedir="${basedir.bin}" includes="**/*.class **/*.properties **/*.txt">
+ <manifest>
+ <attribute name="Sealed" value="${manifest.sealed}" />
+ <attribute name="Implementation-Title" value="${manifest.Implementation-Title}" />
+ <attribute name="Implementation-Version" value="${manifest.Implementation-Version}.${build.number}" />
+ <attribute name="Implementation-Vendor" value="${manifest.Implementation-Vendor}" />
+ <attribute name="Main-Class" value="${main.class}" />
+ <attribute name="Class-Path" value="${jar.dependencies}" />
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="compile" depends="clean, generate-burm" description="compile">
+ <javac includes="**/*.java" classpathref="classpath">
+ <src path="${basedir.swfutils}" />
+ <src path="${basedir.generated.src}" />
+ <src path="${basedir.src}" />
+ </javac>
+ </target>
+
+ <target name="generate-burm">
+ <ant antfile="jburg-gen.xml" target="main" />
+ </target>
+
+ <target name="clean" description="clean">
+ <echo message="Cleaning out dist dir: ${dist}" />
+ <ant antfile="jburg-gen.xml" target="clean" />
+ <delete quiet="true" includeemptydirs="true">
+ <fileset dir="${dist}" />
+ </delete>
+ </target>
+
+</project>
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/jburg-gen.xml
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/jburg-gen.xml b/modules/fdbworkers/jburg-gen.xml
new file mode 100644
index 0000000..c01ad4e
--- /dev/null
+++ b/modules/fdbworkers/jburg-gen.xml
@@ -0,0 +1,58 @@
+<!--
+
+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.
+
+-->
+<project name="fdb" default="main" basedir=".">
+ <taskdef resource="net/sf/antcontrib/antcontrib.properties" classpath="${env.ANT_HOME}/lib/ant-contrib-1.0b2.jar"/>
+
+ <target name="main">
+ <if>
+ <available file="generated/src/flash/tools/debugger/expression/AS3DebuggerBURM.java" />
+ <then>
+ <echo>
+AS3DebuggerBURM.java is generated. (If your changes are not reflected, you might want to consider a clean,build)
+ </echo>
+ </then>
+ <else>
+ <mkdir dir="generated/src/flash/tools/debugger/expression/" />
+ <java classname="jburg.burg.JBurgMain" classpath="../../compiler/com.adobe.flash.compiler/generated/intermediates/classes" failonerror="yes" fork="yes" dir="">
+ <arg value="src/flash/tools/debugger/expression/AS3DebuggerBURM.jbg" />
+ <arg value="-outputdir" />
+ <arg value="generated/src/flash/tools/debugger/expression" />
+ <arg value="-outputfile" />
+ <arg value="AS3DebuggerBURM.java" />
+ <arg value="-g" />
+ <classpath>
+ <pathelement location="../../compiler/com.adobe.flash.compiler/lib/jburg-1.18.jar" />
+ <pathelement location="../../compiler/com.adobe.flash.compiler/lib/antlr.jar" />
+ <pathelement location="../../compiler/com.adobe.flash.compiler/generated/intermediates/classes" />
+ </classpath>
+ </java>
+ </else>
+ </if>
+ </target>
+ <target name="clean" description="clean">
+ <echo message="Cleaning out generated dir: generated/src/" />
+ <delete failonerror="false" quiet="true" includeemptydirs="true">
+ <fileset dir="generated/src/">
+ <include name="**/*" />
+ <exclude name="intermediates/eclipse/**/*" />
+ </fileset>
+ </delete>
+ </target>
+ <!-- End Debugger targets -->
+</project>
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/ActionLocation.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/ActionLocation.java b/modules/fdbworkers/src/flash/tools/ActionLocation.java
new file mode 100644
index 0000000..741644e
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/ActionLocation.java
@@ -0,0 +1,53 @@
+/*
+ * 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 flash.tools;
+
+import flash.swf.types.ActionList;
+import flash.swf.actions.ConstantPool;
+import flash.swf.actions.DefineFunction;
+
+/**
+ * ActionLocation record. Used to contain
+ * information regarding a specific location
+ * within an action record.
+ *
+ * at and actions are typically guaranteed to
+ * be filled out. The others are optional.
+ * @see SwfActionContainer
+ */
+public class ActionLocation
+{
+ public ActionLocation() { init(-1, null, null, null, null); }
+ public ActionLocation(ActionLocation base) { init(base.at, base.actions, base.pool, base.className, base.function); }
+
+ void init(int p1, ActionList p2, ConstantPool p3, String p4, DefineFunction p5)
+ {
+ at = p1;
+ actions = p2;
+ pool = p3;
+ className = p4;
+ function = p5;
+ }
+
+ public int at = -1;
+ public ActionList actions;
+ public ConstantPool pool;
+ public String className;
+ public DefineFunction function;
+}
+
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/SwfActionContainer.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/SwfActionContainer.java b/modules/fdbworkers/src/flash/tools/SwfActionContainer.java
new file mode 100644
index 0000000..40053be
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/SwfActionContainer.java
@@ -0,0 +1,295 @@
+/*
+ * 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 flash.tools;
+
+import flash.swf.Action;
+import flash.swf.Header;
+import flash.swf.TagDecoder;
+import flash.swf.TagHandler;
+import flash.swf.Dictionary;
+import flash.swf.ActionConstants;
+import flash.swf.MovieMetaData;
+import flash.swf.tags.DefineButton;
+import flash.swf.tags.DoAction;
+import flash.swf.tags.DoInitAction;
+import flash.swf.tags.PlaceObject;
+import flash.swf.tags.DefineSprite;
+import flash.swf.types.ActionList;
+import flash.swf.types.ButtonCondAction;
+import flash.swf.types.ClipActionRecord;
+import flash.swf.actions.DefineFunction;
+import flash.swf.actions.ConstantPool;
+import flash.util.Trace;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Iterator;
+
+/**
+ * This class implements the TagHandler interface
+ * and provides a mechanism for containing the
+ * actions associated with a SWF.
+ */
+public class SwfActionContainer extends TagHandler
+{
+ boolean errorProcessing = true;
+ ActionList m_master;
+
+ // temporaries used while decoding
+ Dictionary m_dictionary;
+ Header m_header;
+
+ public SwfActionContainer(byte[] swf, byte[] swd) { this(new ByteArrayInputStream(swf), new ByteArrayInputStream(swd)); }
+ public SwfActionContainer(InputStream swfIn) { this(swfIn, null); }
+
+ public SwfActionContainer(InputStream swfIn, InputStream swdIn)
+ {
+ TagDecoder p = new TagDecoder(swfIn, swdIn);
+ try
+ {
+ process(p);
+ errorProcessing = false;
+ }
+ catch(IOException io)
+ {
+ if (Trace.error)
+ io.printStackTrace();
+ }
+ }
+
+ // getters
+ public ActionList getMasterList() { return m_master; }
+ public Header getHeader() { return m_header; }
+ public Dictionary getDictionary() { return m_dictionary; }
+
+ // Did we hit an error in processing the swf?
+ public boolean hasErrors() { return errorProcessing; }
+
+ /**
+ * Ask a TagDecoder to do its magic, calling us
+ * upon each encounter of a new tag.
+ */
+ void process(TagDecoder d) throws IOException
+ {
+ m_master = new ActionList(true);
+ d.setKeepOffsets(true);
+ d.parse(this);
+ }
+
+ /**
+ * Return a path to an ActionList that contains the given offset
+ * if an exact match is not found then return the largest
+ * that does not exceed offset.
+ */
+ public ActionLocation locationLessOrEqualTo(int offset)
+ {
+ ActionLocation l = new ActionLocation();
+ locationLessOrEqualTo(l, m_master, offset);
+ return l;
+ }
+
+ public static ActionLocation locationLessOrEqualTo(ActionLocation location, ActionList list, int offset)
+ {
+ int at = findLessOrEqualTo(list, offset);
+ if (at > -1)
+ {
+ // we hit so mark it and extract a constant pool if any
+ location.at = at;
+ location.actions = list;
+
+ Action a = list.getAction(0);
+ if (a.code == ActionConstants.sactionConstantPool)
+ location.pool = (ConstantPool)a;
+
+ // then see if we need to traverse
+ a = list.getAction(at);
+ if ( (a.code == ActionConstants.sactionDefineFunction) ||
+ (a.code == ActionConstants.sactionDefineFunction2) )
+ {
+ location.function = (DefineFunction)a;
+ locationLessOrEqualTo(location, ((DefineFunction)a).actionList, offset);
+ }
+ else if (a instanceof DummyAction)
+ {
+ // our dummy container, then we drop in
+ locationLessOrEqualTo(location, ((DummyAction)a).getActionList(), offset);
+ }
+ }
+ return location;
+ }
+
+ // find the index of the largest offset in the list that does not
+ // exceed the offset value provided.
+ public static int findLessOrEqualTo(ActionList list, int offset)
+ {
+ int i = find(list, offset);
+ if (i < 0)
+ {
+ // means we didn't locate it, so get the next closest one
+ // which is 1 below the insertion point
+ i = (-i - 1) - 1;
+ }
+ return i;
+ }
+
+ // perform a binary search to locate the offset within the sorted
+ // list of offsets within the action list.
+ // if no match then (-i - 1) provides the index of where an insertion
+ // would occur for this offset in the list.
+ public static int find(ActionList list, int offset)
+ {
+ int lo = 0;
+ int hi = list.size()-1;
+
+ while (lo <= hi)
+ {
+ int i = (lo + hi)/2;
+ int m = list.getOffset(i);
+ if (offset > m)
+ lo = i + 1;
+ else if (offset < m)
+ hi = i - 1;
+ else
+ return i; // offset found
+ }
+ return -(lo + 1); // offset not found, low is the insertion point
+ }
+
+ /**
+ * Dummy Action container for housing all of our
+ * topmost level actionlists in a convenient form
+ */
+ public class DummyAction extends Action
+ {
+ public DummyAction(ActionList list)
+ {
+ super(ActionConstants.sactionNone);
+ m_actionList = list;
+ }
+
+ // getters/setters
+ public ActionList getActionList() { return m_actionList; }
+ public String getClassName() { return m_className; }
+ public void setClassName(String name) { m_className = name; }
+
+ private ActionList m_actionList;
+ private String m_className;
+ }
+
+ /**
+ * Store away the ActionLists for later retrieval
+ */
+ DummyAction recordActions(ActionList list)
+ {
+ DummyAction da = null;
+ if (list != null && list.size() > 0)
+ {
+ // use the first offset as our reference point
+ int offset = list.getOffset(0);
+
+ // now create a pseudo action for this action list in our master
+ da = new DummyAction(list);
+ m_master.setActionOffset(offset, da);
+ }
+ return da;
+ }
+
+ /**
+ * -----------------------------------------------
+ * The following APIs override TagHandler.
+ * -----------------------------------------------
+ */
+ @Override
+ public void doInitAction(DoInitAction tag)
+ {
+ DummyAction a = recordActions(tag.actionList);
+
+ // now fill in the class name if we can
+ if (m_header.version > 6 && tag.sprite != null)
+ {
+ String __Packages = MovieMetaData.idRef(tag.sprite, m_dictionary);
+ String className = (__Packages != null && __Packages.startsWith("__Packages")) ? __Packages.substring(11) : null; //$NON-NLS-1$
+ a.setClassName(className);
+ }
+ }
+
+ @Override
+ public void doAction(DoAction tag)
+ {
+ recordActions(tag.actionList);
+ }
+
+
+ @Override
+ public void defineSprite(DefineSprite tag)
+ {
+ // @todo need to support actions in sprites!!!
+ }
+
+ @Override
+ public void placeObject2(PlaceObject tag)
+ {
+ if (tag.hasClipAction())
+ {
+ Iterator it = tag.clipActions.clipActionRecords.iterator();
+ while (it.hasNext())
+ {
+ ClipActionRecord record = (ClipActionRecord) it.next();
+ recordActions(record.actionList);
+ }
+ }
+ }
+
+ @Override
+ public void defineButton(DefineButton tag)
+ {
+ recordActions(tag.condActions[0].actionList);
+ }
+
+ @Override
+ public void defineButton2(DefineButton tag)
+ {
+ if (tag.condActions.length > 0)
+ {
+ for (int i=0; i < tag.condActions.length; i++)
+ {
+ ButtonCondAction cond = tag.condActions[i];
+ recordActions(cond.actionList);
+ }
+ }
+ }
+
+ @Override
+ public void setDecoderDictionary(Dictionary dict)
+ {
+ m_dictionary = dict;
+ }
+
+ @Override
+ public void header(Header h)
+ {
+ m_header = h;
+ }
+
+ /**
+ * -----------------------------------------------
+ * END: override TagHandler.
+ * -----------------------------------------------
+ */
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/AIRLaunchInfo.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/AIRLaunchInfo.java b/modules/fdbworkers/src/flash/tools/debugger/AIRLaunchInfo.java
new file mode 100644
index 0000000..36d139b
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/AIRLaunchInfo.java
@@ -0,0 +1,123 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.io.File;
+
+/**
+ * @author mmorearty
+ */
+public class AIRLaunchInfo
+{
+ /**
+ * Full path to the AIR Debug Launcher, <code>adl.exe</code> (Windows) or
+ * <code>adl</code> (Mac/Linux). This is mandatory.
+ */
+ public File airDebugLauncher;
+
+ /**
+ * The directory that has runtime.dll, or <code>null</code> to
+ * use the default.
+ */
+ public File airRuntimeDir;
+
+ /**
+ * The filename of the security policy to use, or <code>null</code> to
+ * use the default.
+ */
+ public File airSecurityPolicy;
+
+ /**
+ * The directory to specify as the application's content root, or
+ * <code>null</code> to not tell ADL where the content root is, in which
+ * case ADL will use the directory of the application.xml file as the
+ * content root.
+ */
+ public File applicationContentRootDir;
+
+ /**
+ * Array of command-line arguments for the user's program. These are
+ * specific to the user's program; they are not processed by AIR itself,
+ * just passed on to the user's app.
+ * <p>
+ * Note, this class has both <code>applicationArgumentsArray</code> and
+ * {@link #applicationArguments}. <code>applicationArgumentsArray</code>
+ * accepts an array of arguments, and passes them down as-is to the
+ * operating system. <code>applicationArguments</code> takes a single
+ * string, splits it into arguments, and passes the result to the operating
+ * system. You can use whichever one is more convenient for you; typically,
+ * one of these would be <code>null</code>. If both are non-
+ * <code>null</code>, then <code>applicationArgumentsArray</code> takes
+ * precedence, and <code>applicationArguments</code> is ignored.
+ */
+ public String[] applicationArgumentsArray;
+
+ /**
+ * Command-line arguments for the user's program. These are specific to the
+ * user's program; they are not processed by AIR itself, just passed on to
+ * the user's app.
+ * <p>
+ * Note, see the comment above on {@link #applicationArgumentsArray}.
+ */
+ public String applicationArguments;
+
+ /**
+ * The publisher ID to use; passed to adl's "-pubid" option. If
+ * null, no pubid is passed to adl.
+ */
+ public String airPublisherID;
+
+ /**
+ * The profile to pass to AIR 2.0's "-profile" argument, or null to omit
+ * the "-profile" argument.
+ */
+ public String profile;
+
+ /**
+ * The screensize argument to pass to AIR 2.0's "-screensize" option.
+ * A colon separated string indicating width and height of the screen
+ * in normal and fullscreen modes. Only relevant in the mobileDevice
+ * profile.
+ */
+ public String screenSize;
+
+ /**
+ * The dpi argument to pass to AIR 2.5's "-xscreenDPI" option.
+ * TODO: this is apparently only going to be used in 2.5
+ */
+ public int dpi;
+
+ /**
+ * The version platform argument to pass to AIR's "-XversionPlatform"
+ * option. This overrides the three characters in Capabilities.os only
+ * for the runtime in the AIR SDK.
+ */
+ public String versionPlatform;
+
+ /**
+ * Directory to load native extensions from. Corresponds to the
+ * -extdir argument of ADL.
+ */
+ public String extDir;
+
+ /**
+ * Directory to load native extensions from for devices. Corresponds to the
+ * -XdeviceExtDir argument of ADL.
+ */
+ public String deviceExtDir;
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/AlreadyActiveApplicationException.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/AlreadyActiveApplicationException.java b/modules/fdbworkers/src/flash/tools/debugger/AlreadyActiveApplicationException.java
new file mode 100644
index 0000000..84432f6
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/AlreadyActiveApplicationException.java
@@ -0,0 +1,47 @@
+/*
+ * 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 flash.tools.debugger;
+import java.io.IOException;
+
+/**
+ * AlreadyActiveApplicationException is thrown when run/debug the application while there is
+ * an already running application.
+ * Exception is detected with ADL exit code 1 (Successful invocation of an already running AIR application. ADL exits immediately.)
+ *
+ * @author sakkus
+ */
+public class AlreadyActiveApplicationException extends IOException {
+ private static final long serialVersionUID = 0L;
+
+ private boolean m_isDebugging;
+
+ public AlreadyActiveApplicationException (String detailedMessage,boolean isDebugging)
+ {
+ super(detailedMessage);
+ m_isDebugging=isDebugging;
+ }
+
+ @Override
+ public String getMessage()
+ {
+ if(m_isDebugging) //DEBUGGING
+ return Bootstrap.getLocalizationManager().getLocalizedTextString("maybeAlreadyRunningForDebug"); //$NON-NLS-1$
+ else //RUNNING
+ return Bootstrap.getLocalizationManager().getLocalizedTextString("maybeAlreadyRunningForRun"); //$NON-NLS-1$
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/Bootstrap.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Bootstrap.java b/modules/fdbworkers/src/flash/tools/debugger/Bootstrap.java
new file mode 100644
index 0000000..ad0fea4
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/Bootstrap.java
@@ -0,0 +1,53 @@
+/*
+ * 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 flash.tools.debugger;
+
+import flash.localization.LocalizationManager;
+import flash.tools.debugger.concrete.PlayerSessionManager;
+
+/**
+ * Entry point for access to the general API. A debugger uses this
+ * class to gain access to a SessionManager from which debugging
+ * sessions may be controlled or initiated.
+ */
+public class Bootstrap
+{
+ static SessionManager m_mgr = null;
+ private static LocalizationManager m_localizationManager;
+
+ static
+ {
+ // set up for localizing messages
+ m_localizationManager = new LocalizationManager();
+ m_localizationManager.addLocalizer( new DebuggerLocalizer("flash.tools.debugger.djapi.") ); //$NON-NLS-1$
+ }
+
+ private Bootstrap () {}
+
+ public static SessionManager sessionManager()
+ {
+ if (m_mgr == null)
+ m_mgr = new PlayerSessionManager();
+ return m_mgr;
+ }
+
+ static LocalizationManager getLocalizationManager()
+ {
+ return m_localizationManager;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/Browser.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Browser.java b/modules/fdbworkers/src/flash/tools/debugger/Browser.java
new file mode 100644
index 0000000..7d64c02
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/Browser.java
@@ -0,0 +1,82 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.io.File;
+
+/**
+ * Describes a web browser.
+ *
+ * @author mmorearty
+ */
+public interface Browser
+{
+ /**
+ * Indicates an unknown browser type.
+ *
+ * @see #getType()
+ */
+ public static final int UNKNOWN = 0;
+
+ /**
+ * Indicates Internet Explorer.
+ *
+ * @see #getType()
+ */
+ public static final int INTERNET_EXPLORER = 1;
+
+ /**
+ * Indicates Netscape Navigator.
+ *
+ * @see #getType()
+ */
+ public static final int NETSCAPE_NAVIGATOR = 2;
+
+ /**
+ * Indicates Opera.
+ *
+ * @see #getType()
+ */
+ public static final int OPERA = 3;
+
+ /**
+ * Indicates the Mozilla browser, but <i>not</i> Firefox.
+ *
+ * @see #getType()
+ */
+ public static final int MOZILLA = 4;
+
+ /**
+ * Indicates Firefox.
+ *
+ * @see #getType()
+ */
+ public static final int MOZILLA_FIREFOX = 5;
+
+ /**
+ * Returns what type of Player this is, e.g. <code>INTERNET_EXPLORER</code>, etc.
+ */
+ public int getType();
+
+ /**
+ * Returns the path to the web browser executable -- e.g. the path to
+ * IExplore.exe, Firefox.exe, etc. (Filenames are obviously
+ * platform-specific.)
+ */
+ public File getPath();
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/CommandLineException.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/CommandLineException.java b/modules/fdbworkers/src/flash/tools/debugger/CommandLineException.java
new file mode 100644
index 0000000..247a92e
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/CommandLineException.java
@@ -0,0 +1,79 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.io.IOException;
+
+/**
+ * Represents an error that occurred while invoking a command-line
+ * program. Saves the text error message that was reported
+ * by the command-line program.
+ *
+ * @author mmorearty
+ */
+public class CommandLineException extends IOException
+{
+ private static final long serialVersionUID = -5696392627123516956L;
+
+ private String[] m_commandLine;
+ private String m_commandOutput;
+ private int m_exitValue;
+
+ /**
+ * @param detailMessage
+ * the detail message, e.g. "Program failed" or whatever
+ * @param commandLine
+ * the command and arguments that were executed, e.g.
+ * <code>{ "ls", "-l" }</code>
+ * @param commandOutput
+ * the text error message that was reported by the command-line
+ * program. It is common for this message to be more than one
+ * line.
+ * @param exitValue
+ * the exit value that was returned by the command-line program.
+ */
+ public CommandLineException(String detailMessage, String[] commandLine, String commandOutput, int exitValue)
+ {
+ super(detailMessage);
+
+ m_commandLine = commandLine;
+ m_commandOutput = commandOutput;
+ m_exitValue = exitValue;
+ }
+
+ public String[] getCommandLine()
+ {
+ return m_commandLine;
+ }
+
+ /**
+ * @return command line message, often multi-line, never <code>null</code>
+ */
+ public String getCommandOutput()
+ {
+ return m_commandOutput;
+ }
+
+ /**
+ * @return the exit value that was returned by the command-line program.
+ */
+ public int getExitValue()
+ {
+ return m_exitValue;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/DebuggerLocalizer.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/DebuggerLocalizer.java b/modules/fdbworkers/src/flash/tools/debugger/DebuggerLocalizer.java
new file mode 100644
index 0000000..b406a16
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/DebuggerLocalizer.java
@@ -0,0 +1,102 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.util.Locale;
+import java.util.Map;
+
+import flash.localization.ILocalizedText;
+import flash.localization.ILocalizer;
+import flash.localization.ResourceBundleLocalizer;
+
+/**
+ * An ILocalizer which does a couple of extra things:
+ *
+ * <ol>
+ * <li> If the requested string is not found, rather than returning <code>null</code>, we
+ * return a default string, to avoid a crash. </li>
+ * <li> We replace any "\n" with the current platform's newline sequence. </li>
+ * </ol>
+ *
+ * @author mmorearty
+ */
+public class DebuggerLocalizer implements ILocalizer
+{
+ private ResourceBundleLocalizer m_resourceBundleLocalizer = new ResourceBundleLocalizer();
+ private String m_prefix;
+ public final static String m_newline = System.getProperty("line.separator"); //$NON-NLS-1$
+
+ public DebuggerLocalizer(String prefix)
+ {
+ m_prefix = prefix;
+ }
+
+ public ILocalizedText getLocalizedText(Locale locale, final String id)
+ {
+ // We hard-code our package name in here, so that callers can use
+ // a short string
+ ILocalizedText localizedText = m_resourceBundleLocalizer.getLocalizedText(locale, m_prefix + id);
+
+ // If no ILocalizedText was found, try English
+ if (localizedText == null && !Locale.getDefault().getLanguage().equals("en")) //$NON-NLS-1$
+ {
+ localizedText = m_resourceBundleLocalizer.getLocalizedText(Locale.ENGLISH, m_prefix + id);
+ }
+
+ // If still no ILocalizedText was found, create a default one
+ if (localizedText == null)
+ {
+ localizedText = new ILocalizedText()
+ {
+ public String format(Map parameters)
+ {
+ StringBuilder sb = new StringBuilder();
+ sb.append('!');
+ sb.append(id);
+ sb.append('!');
+ if (parameters != null && !parameters.isEmpty())
+ {
+ sb.append(' ');
+ sb.append(parameters.toString());
+ }
+ return sb.toString();
+ }
+ };
+ }
+
+ // If the current platform's newline sequence is something other
+ // than "\n", then replace all occurrences of "\n" with this platform's
+ // newline sequence.
+ if (m_newline.equals("\n")) //$NON-NLS-1$
+ {
+ return localizedText;
+ }
+ else
+ {
+ final ILocalizedText finalLocalizedText = localizedText;
+ return new ILocalizedText()
+ {
+ public String format(Map parameters)
+ {
+ String result = finalLocalizedText.format(parameters);
+ return result.replaceAll("\n", m_newline); //$NON-NLS-1$
+ }
+ };
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/DefaultDebuggerCallbacks.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/DefaultDebuggerCallbacks.java b/modules/fdbworkers/src/flash/tools/debugger/DefaultDebuggerCallbacks.java
new file mode 100644
index 0000000..d94ae46
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/DefaultDebuggerCallbacks.java
@@ -0,0 +1,431 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.LineNumberReader;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import flash.util.Trace;
+
+/**
+ * @author mmorearty
+ */
+public class DefaultDebuggerCallbacks implements IDebuggerCallbacks
+{
+ private boolean m_computedExeLocations;
+ private File m_httpExe;
+ private File m_playerExe;
+
+ private static final String UNIX_DEFAULT_BROWSER = "firefox"; //$NON-NLS-1$
+ private static final String UNIX_FLASH_PLAYER = "flashplayer"; //$NON-NLS-1$
+
+ private static final int WINDOWS = 0;
+ private static final int MAC = 1;
+ private static final int UNIX = 2;
+
+ // A pattern for a value that was output by reg.exe. Warning,
+ // Windows XP and Windows Vista have different output; the following
+ // pattern needs to work for both.
+ private static final Pattern registryValuePattern = Pattern.compile("\\sREG_[^ \t]+\\s+(.*)$"); //$NON-NLS-1$
+
+ /**
+ * Returns WINDOWS, MAC, or UNIX
+ */
+ private static int getOS() {
+ String osName = System.getProperty("os.name").toLowerCase(); //$NON-NLS-1$
+ if (osName.startsWith("windows")) //$NON-NLS-1$
+ return WINDOWS;
+ else if (osName.startsWith("mac os x")) // as per http://developer.apple.com/technotes/tn2002/tn2110.html //$NON-NLS-1$
+ return MAC;
+ else
+ return UNIX;
+ }
+
+ /*
+ * @see flash.tools.debugger.IDebuggerCallbacks#getHttpExe()
+ */
+ public synchronized File getHttpExe()
+ {
+ if (!m_computedExeLocations)
+ recomputeExeLocations();
+ return m_httpExe;
+ }
+
+ /*
+ * @see flash.tools.debugger.IDebuggerCallbacks#getPlayerExe()
+ */
+ public synchronized File getPlayerExe()
+ {
+ if (!m_computedExeLocations)
+ recomputeExeLocations();
+ return m_playerExe;
+ }
+
+ /*
+ * @see flash.tools.debugger.IDebuggerCallbacks#recomputeExeLocations()
+ */
+ public synchronized void recomputeExeLocations()
+ {
+ int os = getOS();
+ if (os == WINDOWS)
+ {
+ m_httpExe = getDefaultWindowsBrowser();
+ m_playerExe = determineExeForType("ShockwaveFlash.ShockwaveFlash"); //$NON-NLS-1$
+ }
+ else if (os == MAC)
+ {
+ m_httpExe = null;
+ m_playerExe = null;
+ }
+ else // probably Unix
+ {
+ // "firefox" is default browser for unix
+ m_httpExe = findUnixProgram(UNIX_DEFAULT_BROWSER);
+
+ // "flashplayer" is standalone flash player on unix
+ m_playerExe = findUnixProgram(UNIX_FLASH_PLAYER);
+ }
+ m_computedExeLocations = true;
+ }
+
+ public String getHttpExeName()
+ {
+ if (getOS() == UNIX)
+ return UNIX_DEFAULT_BROWSER;
+ else
+ return Bootstrap.getLocalizationManager().getLocalizedTextString("webBrowserGenericName"); //$NON-NLS-1$
+ }
+
+ public String getPlayerExeName()
+ {
+ if (getOS() == UNIX)
+ return UNIX_FLASH_PLAYER;
+ else
+ return Bootstrap.getLocalizationManager().getLocalizedTextString("flashPlayerGenericName"); //$NON-NLS-1$
+ }
+
+ /**
+ * Looks for a Unix program. Checks the PATH, and if not found there,
+ * checks the directory specified by the "application.home" Java property.
+ * ("application.home" was set by the "fdb" shell script.)
+ *
+ * @param program program to find, e.g. "firefox"
+ * @return path, or <code>null</code> if not found.
+ */
+ private File findUnixProgram(String program)
+ {
+ String[] cmd = { "/bin/sh", "-c", "which " + program }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ try
+ {
+ Process process = Runtime.getRuntime().exec(cmd);
+ BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
+ String line = reader.readLine();
+ if (line != null)
+ {
+ File f = new File(line);
+ if (f.exists())
+ {
+ return f;
+ }
+ }
+
+ // Check in the Flex SDK's "bin" directory. The "application.home"
+ // property is set by the "fdb" shell script.
+ String flexHome = System.getProperty("application.home"); //$NON-NLS-1$
+ if (flexHome != null)
+ {
+ File f = new File(flexHome, "bin/" + program); //$NON-NLS-1$
+ if (f.exists())
+ {
+ return f;
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ // ignore
+ }
+ return null;
+ }
+
+ private File getDefaultWindowsBrowser() {
+ try {
+ String browser = null;
+
+ double osVersion;
+ try {
+ osVersion = Double.parseDouble(System.getProperty("os.version")); //$NON-NLS-1$
+ } catch (NumberFormatException e) {
+ osVersion = 0;
+ }
+
+ if (osVersion >= 6) { // Vista or higher
+ String progid = queryWindowsRegistry(
+ "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice", //$NON-NLS-1$
+ "Progid"); //$NON-NLS-1$
+ if (progid != null) {
+ browser = getClassShellOpenCommand(progid);
+ }
+ }
+
+ if (browser == null) {
+ browser = getClassShellOpenCommand("http"); //$NON-NLS-1$
+ }
+
+ if (browser != null) {
+ browser = extractExenameFromCommandString(browser);
+ return new File(browser);
+ } else {
+ return null;
+ }
+ } catch (IOException e) {
+ return null;
+ }
+ }
+
+ private String getClassShellOpenCommand(String clazz) throws IOException {
+ return queryWindowsRegistry("HKEY_CLASSES_ROOT\\" + clazz + "\\shell\\open\\command", null); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+
+ /**
+ * Note, this function is Windows-specific.
+ */
+ private File determineExeForType(String type)
+ {
+ String it = null;
+ try
+ {
+ String[] cmd = new String[] { "cmd", "/d", "/c", "ftype", type }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ Process p = Runtime.getRuntime().exec(cmd);
+ LineNumberReader lnr = new LineNumberReader(new InputStreamReader(p.getInputStream()));
+ String line = null;
+ type += "="; //$NON-NLS-1$
+ while( it == null && (line = lnr.readLine()) != null)
+ {
+ if (line.length() < type.length() ||
+ line.substring(0, type.length()).compareToIgnoreCase(type) == 0)
+ {
+ it = line;
+ break;
+ }
+ }
+ p.destroy();
+
+ // if we have one extract cmd = " "
+ if (it != null)
+ {
+ int equalSign = it.indexOf('=');
+ if (equalSign != -1)
+ it = it.substring(equalSign+1);
+
+ it = extractExenameFromCommandString(it);
+ }
+ }
+ catch (IOException e)
+ {
+ // means it didn't work
+ }
+
+ if (it != null)
+ return new File(it);
+ else
+ return null;
+ }
+
+ /**
+ * Given a command string of the form
+ * "path_to_exe" args
+ * or
+ * path_to_exe args
+ *
+ * return the path_to_exe. Note that path_to_exe may contain spaces.
+ */
+ protected String extractExenameFromCommandString(String cmd)
+ {
+ // now strip trailing junk if any
+ if (cmd.startsWith("\"")) { //$NON-NLS-1$
+ // ftype is enclosed in quotes
+ int closingQuote = cmd.indexOf('"', 1);
+ if (closingQuote == -1)
+ closingQuote = cmd.length();
+ cmd = cmd.substring(1, closingQuote);
+ } else {
+ // Some ftypes don't use enclosing quotes. This is tricky -- we have to
+ // scan through the string, stopping at each space and checking whether
+ // the filename up to that point refers to a valid filename. For example,
+ // if the input string is
+ //
+ // C:\Program Files\Macromedia\Flash 9\Players\SAFlashPlayer.exe %1
+ //
+ // then we need to stop at each space and see if that is an EXE name:
+ //
+ // C:\Program.exe
+ // C:\Program Files\Macromedia\Flash.exe
+ // C:\Program Files\Macromedia\Flash 9\Players\SAFlashPlayer.exe
+
+ int endOfFilename = -1;
+ for (;;) {
+ int nextSpace = cmd.indexOf(' ', endOfFilename+1);
+ if (nextSpace == -1) {
+ endOfFilename = -1;
+ break;
+ }
+ String filename = cmd.substring(0, nextSpace);
+ if (!filename.toLowerCase().endsWith(".exe")) //$NON-NLS-1$
+ filename += ".exe"; //$NON-NLS-1$
+ if (new File(filename).exists()) {
+ endOfFilename = nextSpace;
+ break;
+ }
+ endOfFilename = nextSpace;
+ }
+ if (endOfFilename != -1 && endOfFilename < cmd.length())
+ cmd = cmd.substring(0, endOfFilename);
+ }
+ return cmd;
+ }
+
+ /*
+ * @see flash.tools.debugger.IDebuggerCallbacks#launchDebugTarget(java.lang.String[])
+ */
+ public Process launchDebugTarget(String[] cmd) throws IOException
+ {
+ return Runtime.getRuntime().exec(cmd);
+ }
+
+ @Override
+ public Process launchDebugTarget(String[] cmd, ILauncher launcher) throws IOException {
+ return launcher.launch(cmd);
+ }
+
+ /*
+ * @see flash.tools.debugger.IDebuggerCallbacks#terminateDebugTarget(java.lang.Process)
+ */
+ public void terminateDebugTarget(Process process) throws IOException
+ {
+ terminateDebugTarget(process, null);
+ }
+
+ @Override
+ public void terminateDebugTarget(Process process, ILauncher launcher) throws IOException {
+ if(null == launcher)
+ {
+ process.destroy();
+ }
+ else
+ {
+ launcher.terminate(process);
+ }
+
+ }
+
+ public String queryWindowsRegistry(String key, String value) throws IOException
+ {
+ return queryWindowsRegistry(key, value, 0);
+ }
+
+ /**
+ * This implementation of queryWindowsRegistry() does not make any native
+ * calls. I had to do it this way because it is too hard, at this point,
+ * to add native code to the Flex code tree.
+ */
+ public String queryWindowsRegistry(String key, String value, int registryBitMode) throws IOException
+ {
+ Process p = null;
+ String result = null;
+
+ List<String> arguments = new ArrayList<String>(6);
+ arguments.add("reg.exe"); //$NON-NLS-1$
+ arguments.add("query"); //$NON-NLS-1$
+ arguments.add(key);
+ if (value == null || value.length() == 0)
+ {
+ arguments.add("/ve"); //$NON-NLS-1$
+ }
+ else
+ {
+ arguments.add("/v"); //$NON-NLS-1$
+ arguments.add(value);
+ }
+
+ // This line must not be in try/catch -- if it throws an exception,
+ // we want that to propagate out to our caller.
+ p = Runtime.getRuntime().exec(arguments.toArray(new String[arguments.size()]));
+
+ try
+ {
+ BufferedReader reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
+
+ String line;
+ while ((line = reader.readLine()) != null)
+ {
+ if (line.equalsIgnoreCase(key))
+ {
+ line = reader.readLine();
+ if (line != null)
+ {
+ Matcher matcher = registryValuePattern.matcher(line);
+ if (matcher.find()) {
+ result = matcher.group(1);
+ }
+ }
+ break;
+ }
+ }
+ }
+ catch (IOException e)
+ {
+ if (Trace.error)
+ e.printStackTrace();
+ }
+ finally
+ {
+ if (p != null)
+ {
+ p.destroy();
+ p = null;
+ }
+ }
+
+ return result;
+ }
+
+ /**
+ * Default implementation does not know how to get the version
+ * of an application.
+ */
+ public int[] getAppVersion(File application) throws IOException {
+ return null;
+ }
+
+ /**
+ * Default application does not have any extra arguments for the
+ * browser.
+ */
+ public String[] getBrowserParameters(String uri)
+ {
+ return null;
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/Frame.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Frame.java b/modules/fdbworkers/src/flash/tools/debugger/Frame.java
new file mode 100644
index 0000000..9c757ec
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/Frame.java
@@ -0,0 +1,122 @@
+/*
+ * 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 flash.tools.debugger;
+
+/**
+ * The Frame object represents a single frame of the actionscript call stack.
+ * Each Frame contains a Location object, which identifies the line of source
+ * for the frame, and a set of variables that are available within the frame.
+ * The set of variables includes a 'this' pointer, arguments passed into
+ * the function and locals available within the scope of the function.
+ * A given frame is only valid when execution has suspended.
+ * @since Version 2
+ */
+public interface Frame
+{
+ /**
+ * Location object related to this frame.
+ */
+ public Location getLocation();
+
+ /**
+ * 'this' variable for the frame. Will return null
+ * if no 'this' pointer available for the frame.
+ * @throws NoResponseException
+ * @throws NotSuspendedException
+ * @throws NotConnectedException
+ */
+ public Variable getThis(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
+
+ /**
+ * Arguments that were passed into the function. An empty
+ * array is used to denote that no arguments were passed into
+ * this function scope.
+ * @throws NoResponseException
+ * @throws NotSuspendedException
+ * @throws NotConnectedException
+ */
+ public Variable[] getArguments(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
+
+ /**
+ * Locals used within this function scope. An empty
+ * array is used to denote no locals are available
+ * within this function scope.
+ * @throws NoResponseException
+ * @throws NotSuspendedException
+ * @throws NotConnectedException
+ */
+ public Variable[] getLocals(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
+
+ /**
+ * Returns a string which contains the raw signature of
+ * the call. This information can be used for display
+ * purposes in the event the Location object contains
+ * a null SourceFile, which happens when a call is
+ * made into or through a non-debug executable.
+ * The format of the string is one of the following:
+ * <ul>
+ * <li> <code>declaringClass/[[namespace::]function]</code> (for regular functions) </li>
+ * <li> <code>declaringClass$cinit</code> (class constructor for statics) </li>
+ * <li> <code>declaringClass$iinit</code> (class instance ctor)</li>
+ * <li> <code>global$init</code> </li>
+ * </ul>
+ *<p>
+ * where <code>declaringClass</code> is the name of the
+ * class in which the function is declared (even if it
+ * is an anonymous inner function); <code>namespace</code>
+ * is the namespace of the function (the meaning of this
+ * varies depending on whether the function is private,
+ * protected etc.; see <code>Variable.getNamespace()</code>
+ * for more information); and <code>function</code> is
+ * the name of the function, or <code>""</code> if the
+ * function is anonymous.
+ *</p><p>
+ * If the signature is unknown then the value
+ * "" will be returned. Note: this may occur even when
+ * Location contains a non-null SourceFile.
+ * </p><p>
+ * Examples:
+ * <ul>
+ * <li> <code>MyClass/myFunction</code> for a public function </li>
+ * <li> <code>MyClass/MyClass::myFunction</code> for a private function </li>
+ * <li> <code>MyClass/</code> for an anonymous inner function declared
+ * somewhere inside <code>MyClass</code> </li>
+ * <li> <code>""</code> if unknown </li>
+ * </ul>
+ * </p>
+ */
+ public String getCallSignature();
+
+ /**
+ * Returns a list of objects which make up the scope chain of
+ * this frame.
+ * <p>
+ * Some of the entries will be classes; some will be instances
+ * of classes; some will be functions; etc.
+ * <p>
+ * <b>Bug:</b> Currently, this does <em>not</em> include any
+ * scope chain entries which were created via "with var".
+ */
+ public Variable[] getScopeChain(Session s) throws NoResponseException, NotSuspendedException, NotConnectedException;
+
+ /**
+ * Returns the worker ID associated to this frame. This will return
+ * Isolate.DEFAULT_ID, that is, the main worker.
+ */
+ public int getIsolateId();
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/IDebuggerCallbacks.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/IDebuggerCallbacks.java b/modules/fdbworkers/src/flash/tools/debugger/IDebuggerCallbacks.java
new file mode 100644
index 0000000..8c97bca
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/IDebuggerCallbacks.java
@@ -0,0 +1,150 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * Miscellaneous callbacks from the DJAPI to the debugger which is using it.
+ *
+ * @author mmorearty
+ */
+public interface IDebuggerCallbacks
+{
+ /**
+ * Tells the debugger to recompute the values which will be returned by
+ * getHttpExe() and getPlayerExe().
+ *
+ * This does NOT need to be called before the first call to either of
+ * those functions. The intent of this function is to allow the debugger
+ * to cache any expensive calculations, but still allow for the possibility
+ * of recalculating the values from time to time (e.g. when a new launch
+ * is going to happen).
+ */
+ public void recomputeExeLocations();
+
+ /**
+ * Returns the executable of the browser to launch for http: URLs, or
+ * <code>null</code> if not known.
+ */
+ public File getHttpExe();
+
+ /**
+ * Returns the parameters to pass to the browser or null if non-existent.
+ * If this is present, URL is assumed to already exist in this array.
+ */
+ public String[] getBrowserParameters(String uri);
+
+ /**
+ * Returns the executable for the standalone Flash player, or <code>null</code>
+ * if not known.
+ */
+ public File getPlayerExe();
+
+ /**
+ * Returns a name such as "firefox" or "Web browser", the name of the
+ * browser, useful for error messages. Never returns <code>null</code>.
+ */
+ public String getHttpExeName();
+
+ /**
+ * Returns a name such as "SAFlashPlayer.exe" or "gflashplayer" or "Flash
+ * player", the name of the standalone player, useful for error messages.
+ * Never returns <code>null</code>.
+ */
+ public String getPlayerExeName();
+
+ /**
+ * Launches a debug target. The arguments are the same as those of
+ * Runtime.exec().
+ */
+ public Process launchDebugTarget(String[] cmd) throws IOException;
+
+ /**
+ * Terminates a debug target process.
+ */
+ public void terminateDebugTarget(Process process) throws IOException;
+
+ /**
+ * Launches a debug target using the launcher instance<code>ILauncher.launch(cmd)</code>.
+ *
+ */
+ public Process launchDebugTarget(String[] cmd, ILauncher launcher) throws IOException;
+
+ /**
+ * Terminates a debug target process by invoking <code>ILauncher.terminate(process)</code>
+ */
+ public void terminateDebugTarget(Process process, ILauncher launcher) throws IOException;
+
+
+ /**
+ * Query the Windows registry.
+ *
+ * @param key
+ * The registry key, in a format suitable for the REG.EXE
+ * program. You must use full key names such as
+ * HKEY_LOCAL_MACHINE rather the shorter abbreviations such as
+ * HKLM.
+ * @param value
+ * The value within that key, or null for the unnamed ("empty")
+ * value
+ * @return the value stored at the location, or null if key or value was not
+ * found
+ * @throws IOException
+ * indicates the registry query failed -- warning, this can
+ * really happen! Some implementations of this function don't
+ * work on Windows 2000. So, this function should not be counted
+ * on too heavily -- you should have a backup plan.
+ */
+ public String queryWindowsRegistry(String key, String value) throws IOException;
+
+ /**
+ * Same as queryWindowsRegistry, but allows specific access to the 32-bit
+ * or 64-bit part of the registry.
+ */
+ public String queryWindowsRegistry(String key, String value, int registryBitMode) throws IOException;
+
+ /**
+ * Returns the version number of an application. For example, Firefox 3.5.4
+ * would return new int[] { 3, 5 }.
+ * <p>
+ * As of this writing, the only thing this is used for is to determine, on
+ * Windows, whether the user is running IE 8; if he is, we need to pass the
+ * "-noframemerging" command-line argument. It is generally okay to just
+ * return <code>null</code> from this function; a robust implementation is
+ * not required.
+ *
+ * @param application
+ * the application whose version number is desired. On Windows,
+ * this will typically be a path to a .exe file. On Mac, it may
+ * point to a .app directory such as "/Applications/Safari.app",
+ * or it may point to the underlying binary, such as
+ * "/Applications/Safari.app/Contents/MacOS/Safari".
+ * @return an array of two integers if the version can be determined, or
+ * null if it cannot be determined. The first integer is the major
+ * version number, and the second integer is the minor version
+ * number. More detailed information cannot be provided, because
+ * this function needs to be cross- platform, and the format of
+ * version information tends to vary widely from one platform to
+ * another.
+ * @throws IOException
+ * e.g. for file not found, etc.
+ */
+ public int[] getAppVersion(File application) throws IOException;
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/ILaunchNotification.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/ILaunchNotification.java b/modules/fdbworkers/src/flash/tools/debugger/ILaunchNotification.java
new file mode 100644
index 0000000..e01d724
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/ILaunchNotification.java
@@ -0,0 +1,39 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.io.IOException;
+
+/**
+ * Used to notify caller in case of ADL Exit Code 1: Successful invocation of an already running
+ * AIR application. ADL exits immediately.
+ *
+ * @author sakkus
+ */
+public interface ILaunchNotification
+{
+ /**
+ * Notifies the listener that the launch is done, and, if it failed,
+ * an exception with information about why it failed.
+ *
+ * @param e
+ * an exception if the launch failed, or null if the launch
+ * succeeded.
+ */
+ public void notify(IOException e);
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/ILauncher.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/ILauncher.java b/modules/fdbworkers/src/flash/tools/debugger/ILauncher.java
new file mode 100644
index 0000000..68c87f7
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/ILauncher.java
@@ -0,0 +1,49 @@
+/*
+ * 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 flash.tools.debugger;
+
+import java.io.IOException;
+
+/**
+ * A ILauncher which handles the launching of the URI or the command.
+ *
+ * ILauncher is to provide more flexibility to handle the Player launch in different platforms.
+ *
+ * @author ugs
+ *
+ */
+public interface ILauncher {
+
+ /**
+ * Launches the debug target.
+ *
+ * @param cmd - Launch URL and other arguments
+ * @return A handle to the process.
+ *
+ * @throws IOException
+ */
+ public Process launch(String[] cmd) throws IOException;
+
+ /**
+ * Terminate the process started by launch method.
+ * @param process - process started by launch.
+ * @throws IOException
+ */
+ public void terminate(Process process) throws IOException;
+
+
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/IProgress.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/IProgress.java b/modules/fdbworkers/src/flash/tools/debugger/IProgress.java
new file mode 100644
index 0000000..f63ec68
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/IProgress.java
@@ -0,0 +1,36 @@
+/*
+ * 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 flash.tools.debugger;
+
+/**
+ * A simple interface to report progress on some operation.
+ *
+ * @author mmorearty
+ */
+public interface IProgress
+{
+ /**
+ * Reports how much work has been done.
+ *
+ * @param current
+ * how much progress has been made toward the total
+ * @param total
+ * the total amount of work
+ */
+ public void setProgress(int current, int total);
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/InProgressException.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/InProgressException.java b/modules/fdbworkers/src/flash/tools/debugger/InProgressException.java
new file mode 100644
index 0000000..3bf6f2a
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/InProgressException.java
@@ -0,0 +1,28 @@
+/*
+ * 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 flash.tools.debugger;
+
+/**
+ * InProgressException is thrown when a request cannot
+ * be fulfilled because some other activity is currently
+ * taking place that will alter the result of the request.
+ */
+public class InProgressException extends PlayerDebugException
+{
+ private static final long serialVersionUID = -8307030350432666820L;
+}
http://git-wip-us.apache.org/repos/asf/flex-sdk/blob/a3765ae5/modules/fdbworkers/src/flash/tools/debugger/Isolate.java
----------------------------------------------------------------------
diff --git a/modules/fdbworkers/src/flash/tools/debugger/Isolate.java b/modules/fdbworkers/src/flash/tools/debugger/Isolate.java
new file mode 100644
index 0000000..982c2dd
--- /dev/null
+++ b/modules/fdbworkers/src/flash/tools/debugger/Isolate.java
@@ -0,0 +1,40 @@
+/*
+ * 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 flash.tools.debugger;
+
+/**
+ * The Isolate object uniquely identifies a "Worker" in ActionScript.
+ * Workers are conceptually similar to Threads, but their implementation
+ * closely follows more that of a web worker than an actual OS Thread.
+ *
+ * By default there is a default isolate object with id DEFAULT_ID.
+ * @author anirudhs
+ *
+ */
+public interface Isolate {
+
+ public static final int DEFAULT_ID = 1;
+
+ /**
+ * Get the unique integer ID associated with the
+ * worker. This is Isolate.DEFAULT_ID for the
+ * primordial.
+ * @return unique integer ID
+ */
+ public int getId();
+
+}