/*
* Copyright (c) 2014-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.stetho.inspector.protocol.module;
import android.annotation.SuppressLint;
import com.facebook.stetho.inspector.console.ConsolePeerManager;
import com.facebook.stetho.inspector.jsonrpc.JsonRpcPeer;
import com.facebook.stetho.inspector.protocol.ChromeDevtoolsDomain;
import com.facebook.stetho.inspector.protocol.ChromeDevtoolsMethod;
import com.facebook.stetho.json.annotation.JsonProperty;
import com.facebook.stetho.json.annotation.JsonValue;
import org.json.JSONObject;
public class Console implements ChromeDevtoolsDomain {
public Console() {
}
@ChromeDevtoolsMethod
public void enable(JsonRpcPeer peer, JSONObject params) {
ConsolePeerManager.getOrCreateInstance().addPeer(peer);
}
@ChromeDevtoolsMethod
public void disable(JsonRpcPeer peer, JSONObject params) {
ConsolePeerManager.getOrCreateInstance().removePeer(peer);
}
@SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
public static class MessageAddedRequest {
@JsonProperty(required = true)
public ConsoleMessage message;
}
@SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
public static class ConsoleMessage {
@JsonProperty(required = true)
public MessageSource source;
@JsonProperty(required = true)
public MessageLevel level;
@JsonProperty(required = true)
public String text;
}
public enum MessageSource {
XML("xml"),
JAVASCRIPT("javascript"),
NETWORK("network"),
CONSOLE_API("console-api"),
STORAGE("storage"),
APPCACHE("appcache"),
RENDERING("rendering"),
CSS("css"),
SECURITY("security"),
OTHER("other");
private final String mProtocolValue;
private MessageSource(String protocolValue) {
mProtocolValue = protocolValue;
}
@JsonValue
public String getProtocolValue() {
return mProtocolValue;
}
}
public enum MessageLevel {
LOG("log"),
WARNING("warning"),
ERROR("error"),
DEBUG("debug");
private final String mProtocolValue;
private MessageLevel(String protocolValue) {
mProtocolValue = protocolValue;
}
@JsonValue
public String getProtocolValue() {
return mProtocolValue;
}
}
@SuppressLint({ "UsingDefaultJsonDeserializer", "EmptyJsonPropertyUse" })
public static class CallFrame {
@JsonProperty(required = true)
public String functionName;
@JsonProperty(required = true)
public String url;
@JsonProperty(required = true)
public int lineNumber;
@JsonProperty(required = true)
public int columnNumber;
public CallFrame() {
}
public CallFrame(String functionName, String url, int lineNumber, int columnNumber) {
this.functionName = functionName;
this.url = url;
this.lineNumber = lineNumber;
this.columnNumber = columnNumber;
}
}
}