/*
* Copyright (c) 2012, the Dart project authors.
*
* Licensed under the Eclipse Public License v1.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.eclipse.org/legal/epl-v10.html
*
* 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 com.google.dart.tools.debug.core.webkit;
import com.google.dart.tools.debug.core.webkit.WebkitConnection.WebkitConnectionListener;
import com.google.dart.tools.debug.core.webkit.WebkitConsole.CallFrame;
import com.google.dart.tools.debug.core.webkit.WebkitConsole.ConsoleListener;
import com.google.dart.tools.debug.core.webkit.WebkitDebugger.DebuggerListener;
import com.google.dart.tools.debug.core.webkit.WebkitDebugger.PausedReasonType;
import org.json.JSONException;
import java.io.IOException;
import java.net.URI;
import java.util.List;
/**
* ./Chromium.app/Contents/MacOS/Chromium --remote-debugging-port=3030 --homepage=about:blank
*/
class TestMain {
/**
* @param args
* @throws IOException
* @throws InterruptedException
* @throws JSONException
*/
public static void main(String[] args) throws IOException, InterruptedException {
if (args.length != 1) {
System.out.println("usage Main <port>");
return;
}
int port = Integer.parseInt(args[0]);
List<ChromiumTabInfo> tabs = ChromiumConnector.getAvailableTabs(port);
//ChromiumConnector.getWebSocketURLFor(port, 1);
URI uri = URI.create(tabs.get(0).getWebSocketDebuggerUrl());
WebkitConnection connection = new WebkitConnection(uri);
connection.addConnectionListener(new WebkitConnectionListener() {
@Override
public void connectionClosed(WebkitConnection connection) {
System.out.println("connection closed");
}
});
connection.connect();
System.out.println("connection opened");
// add a console listener
connection.getConsole().addConsoleListener(new ConsoleListener() {
@Override
public void messageAdded(String message, String url, int line, List<CallFrame> stackTrace) {
System.out.println("message added: " + message);
}
@Override
public void messageRepeatCountUpdated(int count) {
System.out.println("messageRepeatCountUpdated: " + count);
}
@Override
public void messagesCleared() {
System.out.println("messages cleared");
}
});
// enable console events
connection.getConsole().enable();
// add a debugger listener
connection.getDebugger().addDebuggerListener(new DebuggerListener() {
@Override
public void debuggerBreakpointResolved(WebkitBreakpoint breakpoint) {
System.out.println("debuggerBreakpointResolved: " + breakpoint);
}
@Override
public void debuggerGlobalObjectCleared() {
System.out.println("debuggerGlobalObjectCleared");
}
@Override
public void debuggerPaused(PausedReasonType reason, List<WebkitCallFrame> frames,
WebkitRemoteObject exception) {
System.out.println("debugger paused: " + reason);
for (WebkitCallFrame frame : frames) {
System.out.println(" " + frame);
}
}
@Override
public void debuggerResumed() {
System.out.println("debugger resumed");
}
@Override
public void debuggerScriptParsed(WebkitScript script) {
System.out.println("debugger script: " + script);
}
});
// enable debugger events
connection.getDebugger().enable();
// navigate to cheese.com
connection.getPage().navigate("http://www.cheese.com");
//Thread.sleep(2000);
//connection.close();
}
}