diff -r ef76fc2ac88c -r e4420d2515f1 org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/processor/BacktraceProcessor.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/org.chromium.sdk/src/org/chromium/sdk/internal/tools/v8/processor/BacktraceProcessor.java Wed Dec 23 17:13:18 2009 -0800 @@ -0,0 +1,148 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +package org.chromium.sdk.internal.tools.v8.processor; + +import java.util.Collection; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import org.chromium.sdk.DebugContext; +import org.chromium.sdk.JavascriptVm; +import org.chromium.sdk.Script; +import org.chromium.sdk.internal.ContextBuilder; +import org.chromium.sdk.internal.DebugSession; +import org.chromium.sdk.internal.FrameMirror; +import org.chromium.sdk.internal.HandleManager; +import org.chromium.sdk.internal.protocol.BacktraceCommandBody; +import org.chromium.sdk.internal.protocol.CommandResponse; +import org.chromium.sdk.internal.protocol.FrameObject; +import org.chromium.sdk.internal.protocol.SuccessCommandResponse; +import org.chromium.sdk.internal.protocol.data.ScriptHandle; +import org.chromium.sdk.internal.protocol.data.SomeHandle; +import org.chromium.sdk.internal.protocolparser.JsonProtocolParseException; +import org.chromium.sdk.internal.tools.v8.DebuggerCommand; +import org.chromium.sdk.internal.tools.v8.V8ProtocolUtil; +import org.json.simple.JSONObject; + +/** + * Handles the "backtrace" V8 command replies. + */ +class BacktraceProcessor implements org.chromium.sdk.internal.tools.v8.V8CommandProcessor.V8HandlerCallback { + + private final ContextBuilder.ExpectingBacktraceStep step2; + + BacktraceProcessor(ContextBuilder.ExpectingBacktraceStep step2) { + this.step2 = step2; + } + + public void messageReceived(CommandResponse response) { + String commandString = response.getCommand(); + + DebuggerCommand command = DebuggerCommand.forString(commandString); + if (command != DebuggerCommand.BACKTRACE) { + handleWrongStacktrace(); + } + SuccessCommandResponse successResponse = response.asSuccess(); + if (successResponse == null) { + handleWrongStacktrace(); + } + + final DebugContext debugContext = setFrames(successResponse); + final DebugSession debugSession = step2.getInternalContext().getDebugSession(); + + JavascriptVm.ScriptsCallback afterScriptsAreLoaded = new JavascriptVm.ScriptsCallback() { + public void failure(String errorMessage) { + handleWrongStacktrace(); + } + + public void success(Collection