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();
+	
+}