mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-04 10:19:23 +02:00
103 lines
3.5 KiB
Java
103 lines
3.5 KiB
Java
/* ###
|
|
* IP: GHIDRA
|
|
*
|
|
* Licensed 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 help.screenshot;
|
|
|
|
import java.awt.Dimension;
|
|
import java.awt.Window;
|
|
|
|
import org.junit.Test;
|
|
|
|
import docking.ComponentProvider;
|
|
import ghidra.app.services.GraphDisplayBroker;
|
|
import ghidra.graph.CallGraphType;
|
|
import ghidra.graph.export.GraphExporterDialog;
|
|
import ghidra.graph.visualization.DefaultGraphDisplay;
|
|
import ghidra.graph.visualization.DefaultGraphDisplayComponentProvider;
|
|
import ghidra.service.graph.*;
|
|
import ghidra.util.exception.AssertException;
|
|
import ghidra.util.task.TaskMonitor;
|
|
|
|
public class GraphServicesScreenShots extends GhidraScreenShotGenerator {
|
|
|
|
public GraphServicesScreenShots() {
|
|
super();
|
|
}
|
|
|
|
@Override
|
|
public void setUp() throws Exception {
|
|
super.setUp();
|
|
setUser("User");
|
|
}
|
|
|
|
@Test
|
|
public void testExportDialog() throws Exception {
|
|
GraphDisplayBroker broker = tool.getService(GraphDisplayBroker.class);
|
|
GraphDisplayProvider export = broker.getGraphDisplayProvider("Graph Export");
|
|
GraphDisplay display = export.getGraphDisplay(false, TaskMonitor.DUMMY);
|
|
AttributedGraph graph = new AttributedGraph("Test", new EmptyGraphType());
|
|
display.setGraph(graph, "test", false, TaskMonitor.DUMMY);
|
|
GraphExporterDialog dialog = (GraphExporterDialog) getDialog();
|
|
dialog.setFilePath("/users/user1/graph");
|
|
captureDialog();
|
|
}
|
|
|
|
@Test
|
|
public void testDefaultGraphDisplay() throws Exception {
|
|
|
|
GraphDisplayBroker broker = tool.getService(GraphDisplayBroker.class);
|
|
GraphDisplayProvider export = broker.getGraphDisplayProvider("Default Graph Display");
|
|
GraphDisplay display = export.getGraphDisplay(false, TaskMonitor.DUMMY);
|
|
AttributedGraph graph = new AttributedGraph("Test", new CallGraphType());
|
|
AttributedVertex v1 = graph.addVertex("0000", "main");
|
|
v1.setVertexType("Entry");
|
|
AttributedVertex v2 = graph.addVertex("0100", "Fun_One");
|
|
v2.setVertexType("Entry");
|
|
AttributedVertex v3 = graph.addVertex("0200", "Fun_Two");
|
|
v3.setVertexType("Entry");
|
|
|
|
AttributedEdge e1 = graph.addEdge(v1, v2);
|
|
e1.setEdgeType("Unconditional-Call");
|
|
AttributedEdge e2 = graph.addEdge(v1, v3);
|
|
e2.setEdgeType("Unconditional-Call");
|
|
|
|
display.setGraph(graph, "Program Graph", false, TaskMonitor.DUMMY);
|
|
waitForSwing();
|
|
setGraphWindowSize(700, 500);
|
|
runSwing(() -> ((DefaultGraphDisplay) display).centerAndScale());
|
|
waitForSwing();
|
|
|
|
captureProvider(DefaultGraphDisplayComponentProvider.class);
|
|
}
|
|
|
|
private void setGraphWindowSize(int width, int height) {
|
|
ComponentProvider provider = tool.getWindowManager()
|
|
.getComponentProvider(DefaultGraphDisplayComponentProvider.class);
|
|
runSwing(() -> {
|
|
Window window = tool.getWindowManager().getProviderWindow(provider);
|
|
if (window == null) {
|
|
throw new AssertException("Could not find window for " +
|
|
"provider--is it showing?: " + provider.getName());
|
|
}
|
|
|
|
window.setSize(new Dimension(width, height));
|
|
window.toFront();
|
|
provider.getComponent().requestFocus();
|
|
paintFix(window);
|
|
});
|
|
waitForSwing();
|
|
}
|
|
|
|
}
|