diff --git a/src/io/flutter/devtools/DevToolsUrl.java b/src/io/flutter/devtools/DevToolsUrl.java index 2a96189a82..1f16dd3bb4 100644 --- a/src/io/flutter/devtools/DevToolsUrl.java +++ b/src/io/flutter/devtools/DevToolsUrl.java @@ -22,7 +22,13 @@ public class DevToolsUrl { public String widgetId; public Float fontSize; - public DevToolsUrl(String devtoolsHost, int devtoolsPort, String vmServiceUri, String page, boolean embed, String colorHexCode, Float fontSize) { + public DevToolsUrl(String devtoolsHost, + int devtoolsPort, + String vmServiceUri, + String page, + boolean embed, + String colorHexCode, + Float fontSize) { this.devtoolsHost = devtoolsHost; this.devtoolsPort = devtoolsPort; this.vmServiceUri = vmServiceUri; diff --git a/src/io/flutter/devtools/DevToolsUtils.java b/src/io/flutter/devtools/DevToolsUtils.java index 48ede19064..403d19b5f5 100644 --- a/src/io/flutter/devtools/DevToolsUtils.java +++ b/src/io/flutter/devtools/DevToolsUtils.java @@ -6,28 +6,6 @@ package io.flutter.devtools; public class DevToolsUtils { - public static String generateDevToolsUrl( - String devtoolsHost, - int devtoolsPort, - String serviceProtocolUri, - String page, - boolean embed - ) { - return generateDevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, embed, null); - } - - public static String generateDevToolsUrl( - String devtoolsHost, - int devtoolsPort, - String serviceProtocolUri, - String page, - boolean embed, - String colorHexCode - ) { - final DevToolsUrl devToolsUrl = new DevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, embed, colorHexCode, null); - return devToolsUrl.getUrlString(); - } - public static String findWidgetId(String url) { final String searchFor = "inspectorRef="; final String[] split = url.split("&"); diff --git a/src/io/flutter/performance/FlutterPerformanceView.java b/src/io/flutter/performance/FlutterPerformanceView.java index e631d19494..a91bec6bd8 100644 --- a/src/io/flutter/performance/FlutterPerformanceView.java +++ b/src/io/flutter/performance/FlutterPerformanceView.java @@ -29,7 +29,7 @@ import com.intellij.util.ui.JBUI; import com.intellij.util.ui.UIUtil; import icons.FlutterIcons; -import io.flutter.devtools.DevToolsUtils; +import io.flutter.devtools.DevToolsUrl; import io.flutter.run.FlutterDevice; import io.flutter.run.FlutterLaunchMode; import io.flutter.run.daemon.DevToolsService; @@ -215,8 +215,8 @@ private void addPerformanceViewContent(FlutterApp app, ToolWindow toolWindow) { } BrowserLauncher.getInstance().browse( - DevToolsUtils.generateDevToolsUrl(instance.host, instance.port, app.getConnector().getBrowserUrl(), null, false), - null + (new DevToolsUrl(instance.host, instance.port, app.getConnector().getBrowserUrl(), null, false, null, null)).getUrlString(), + null ); }); }, null); diff --git a/src/io/flutter/run/OpenDevToolsAction.java b/src/io/flutter/run/OpenDevToolsAction.java index 84b77ac29a..aa766a2cb1 100644 --- a/src/io/flutter/run/OpenDevToolsAction.java +++ b/src/io/flutter/run/OpenDevToolsAction.java @@ -14,7 +14,7 @@ import icons.FlutterIcons; import io.flutter.FlutterInitializer; import io.flutter.ObservatoryConnector; -import io.flutter.devtools.DevToolsUtils; +import io.flutter.devtools.DevToolsUrl; import io.flutter.run.daemon.DevToolsService; import io.flutter.run.daemon.FlutterApp; import io.flutter.utils.AsyncUtils; @@ -75,7 +75,7 @@ public void actionPerformed(@NotNull final AnActionEvent event) { final String serviceUrl = myConnector != null && myConnector.getBrowserUrl() != null ? myConnector.getBrowserUrl() : null; BrowserLauncher.getInstance().browse( - DevToolsUtils.generateDevToolsUrl(instance.host, instance.port, serviceUrl, null, false), + (new DevToolsUrl(instance.host, instance.port, serviceUrl, null, false, null, null).getUrlString()), null ); }); diff --git a/src/io/flutter/view/FlutterView.java b/src/io/flutter/view/FlutterView.java index 3a6af9df73..02e3464f60 100644 --- a/src/io/flutter/view/FlutterView.java +++ b/src/io/flutter/view/FlutterView.java @@ -50,7 +50,6 @@ import io.flutter.FlutterInitializer; import io.flutter.FlutterUtils; import io.flutter.devtools.DevToolsUrl; -import io.flutter.devtools.DevToolsUtils; import io.flutter.inspector.DiagnosticsNode; import io.flutter.inspector.InspectorGroupManagerService; import io.flutter.inspector.InspectorService; @@ -297,7 +296,7 @@ private void addBrowserInspectorViewContent(FlutterApp app, } } else { BrowserLauncher.getInstance().browse( - DevToolsUtils.generateDevToolsUrl(devToolsInstance.host, devToolsInstance.port, browserUrl, "inspector", false), + (new DevToolsUrl(devToolsInstance.host, devToolsInstance.port, browserUrl, "inspector", false, null, null).getUrlString()), null ); presentLabel(toolWindow, "DevTools inspector has been opened in the browser."); @@ -950,7 +949,7 @@ public void perform(AnActionEvent event) { } BrowserLauncher.getInstance().browse( - DevToolsUtils.generateDevToolsUrl(instance.host, instance.port, urlString, null, false), + (new DevToolsUrl(instance.host, instance.port, urlString, null, false, null, null).getUrlString()), null ); }); diff --git a/testSrc/unit/io/flutter/devtools/DevToolsUrlTest.java b/testSrc/unit/io/flutter/devtools/DevToolsUrlTest.java new file mode 100644 index 0000000000..724160ae59 --- /dev/null +++ b/testSrc/unit/io/flutter/devtools/DevToolsUrlTest.java @@ -0,0 +1,62 @@ +package io.flutter.devtools; + +import io.flutter.sdk.FlutterSdkUtil; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.powermock.api.mockito.PowerMockito; +import org.powermock.core.classloader.annotations.PrepareForTest; +import org.powermock.modules.junit4.PowerMockRunner; + +import static org.junit.Assert.assertEquals; + +@RunWith(PowerMockRunner.class) +@PrepareForTest(FlutterSdkUtil.class) +public class DevToolsUrlTest { + @Test + public void testGetUrlString() { + final String devtoolsHost = "127.0.0.1"; + final int devtoolsPort = 9100; + final String serviceProtocolUri = "http://127.0.0.1:50224/WTFTYus3IPU=/"; + final String page = "timeline"; + + PowerMockito.mockStatic(FlutterSdkUtil.class); + PowerMockito.when(FlutterSdkUtil.getFlutterHostEnvValue()).thenReturn("IntelliJ-IDEA"); + + assertEquals( + "http://127.0.0.1:9100/?ide=IntelliJ-IDEA&page=timeline&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", + (new DevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, null, null)).getUrlString() + ); + + assertEquals( + "http://127.0.0.1:9100/?ide=IntelliJ-IDEA&page=timeline&embed=true&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", + (new DevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, true, null, null)).getUrlString() + ); + + assertEquals( + "http://127.0.0.1:9100/?ide=IntelliJ-IDEA", + (new DevToolsUrl(devtoolsHost, devtoolsPort, null, null, false, null, null).getUrlString()) + ); + + assertEquals( + "http://127.0.0.1:9100/?ide=IntelliJ-IDEA&page=timeline&backgroundColor=ffffff&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", + (new DevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, "ffffff", null).getUrlString()) + ); + + assertEquals( + "http://127.0.0.1:9100/?ide=IntelliJ-IDEA&page=timeline&backgroundColor=ffffff&fontSize=12.0&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", + (new DevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, "ffffff", 12.0f).getUrlString()) + ); + + PowerMockito.when(FlutterSdkUtil.getFlutterHostEnvValue()).thenReturn("Android-Studio"); + + assertEquals( + "http://127.0.0.1:9100/?ide=Android-Studio&page=timeline&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", + (new DevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, null, null).getUrlString()) + ); + + assertEquals( + "http://127.0.0.1:9100/?ide=Android-Studio&page=timeline&backgroundColor=3c3f41&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", + (new DevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, "3c3f41", null).getUrlString()) + ); + } +} \ No newline at end of file diff --git a/testSrc/unit/io/flutter/devtools/DevToolsUtilsTest.java b/testSrc/unit/io/flutter/devtools/DevToolsUtilsTest.java index c619ebe905..ba67d3c206 100644 --- a/testSrc/unit/io/flutter/devtools/DevToolsUtilsTest.java +++ b/testSrc/unit/io/flutter/devtools/DevToolsUtilsTest.java @@ -8,62 +8,24 @@ import io.flutter.sdk.FlutterSdkUtil; import org.junit.Test; import org.junit.runner.RunWith; -import org.powermock.api.mockito.PowerMockito; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; -import static io.flutter.devtools.DevToolsUtils.generateDevToolsUrl; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNull; @RunWith(PowerMockRunner.class) @PrepareForTest(FlutterSdkUtil.class) public class DevToolsUtilsTest { @Test - public void validDevToolsUrl() { - final String devtoolsHost = "127.0.0.1"; - final int devtoolsPort = 9100; - final String serviceProtocolUri = "http://127.0.0.1:50224/WTFTYus3IPU=/"; - final String page = "timeline"; - final String pageName = "timeline"; - - PowerMockito.mockStatic(FlutterSdkUtil.class); - PowerMockito.when(FlutterSdkUtil.getFlutterHostEnvValue()).thenReturn("IntelliJ-IDEA"); - - assertEquals( - "http://127.0.0.1:9100/?ide=IntelliJ-IDEA&page=timeline&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", - generateDevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, null) - ); - - assertEquals( - "http://127.0.0.1:9100/?ide=IntelliJ-IDEA&page=timeline&embed=true&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", - generateDevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, true, null) - ); - - assertEquals( - "http://127.0.0.1:9100/?ide=IntelliJ-IDEA&page=timeline&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F", - generateDevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false) - ); - - assertEquals( - "http://127.0.0.1:9100/?ide=IntelliJ-IDEA", - generateDevToolsUrl(devtoolsHost, devtoolsPort, null, null, false, null) - ); - - PowerMockito.when(FlutterSdkUtil.getFlutterHostEnvValue()).thenReturn("Android-Studio"); - + public void testFindWidgetId() { + String url = "http://127.0.0.1:9102/#/inspector?uri=http%3A%2F%2F127.0.0.1%3A51805%2FP-f92tUS3r8%3D%2F&inspectorRef=inspector-238"; assertEquals( - generateDevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, null), - "http://127.0.0.1:9100/?ide=Android-Studio&page=timeline&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F" + "inspector-238", + DevToolsUtils.findWidgetId(url) ); - assertEquals( - generateDevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, "3c3f41"), - "http://127.0.0.1:9100/?ide=Android-Studio&page=timeline&backgroundColor=3c3f41&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F" - ); - - assertEquals( - generateDevToolsUrl(devtoolsHost, devtoolsPort, serviceProtocolUri, page, false, "ffffff"), - "http://127.0.0.1:9100/?ide=Android-Studio&page=timeline&backgroundColor=ffffff&uri=http%3A%2F%2F127.0.0.1%3A50224%2FWTFTYus3IPU%3D%2F" - ); + String noIdUrl = "http://127.0.0.1:9102/#/inspector?uri=http%3A%2F%2F127.0.0.1%3A51805%2FP-f92tUS3r8%3D%2F"; + assertNull(DevToolsUtils.findWidgetId(noIdUrl)); } }