// 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.v8native.protocol.output;
import java.util.List;
import java.util.Map;
import org.chromium.sdk.internal.v8native.DebuggerCommand;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
/**
* Represents an "evaluate" V8 request message.
*/
public class EvaluateMessage extends DebuggerMessage {
/**
* @param expression to evaluate
* @param frame number (top is 0).
* @param global nullable. Default is false
* @param disableBreak nullable. Default is true
* @param additionalContext nullable
*/
public EvaluateMessage(String expression, Integer frame,
Boolean global, Boolean disableBreak, List<Map.Entry<String, Integer>> additionalContext) {
super(DebuggerCommand.EVALUATE.value);
putArgument("expression", expression);
if (frame != null) {
putArgument("frame", frame);
}
putArgument("global", global);
putArgument("disable_break", disableBreak);
putArgument("inlineRefs", Boolean.TRUE);
if (additionalContext != null) {
JSONArray contextParam = new JSONArray();
for (Map.Entry<String, Integer> en : additionalContext) {
JSONObject mapping = new JSONObject();
mapping.put("name", en.getKey());
mapping.put("handle", en.getValue());
contextParam.add(mapping);
}
putArgument("additional_context", contextParam);
}
}
}