UI component for Niddler.

Related tags

Templates niddler-ui
Overview

Niddler-ui

Niddler is a network debugging utility for Android apps that caches network requests/responses, and exposes them over a websocket. It comes with a simple interceptor for Square's OkHttpClient, as well as a No-op interceptor for use in release scenario's.

Niddler-UI is the UI component that communicates with Niddler over a websocket. It comes as a standalone Swing application, as well as an Android Studio / IntelliJ plugin.

Picture

To install Niddler-UI into Android Studio / IntelliJ, go to Preferences > Plugins and search for niddler

Comments
  • Niddler sometimes not auto-connecting

    Niddler sometimes not auto-connecting

    I have noticed that Niddler will sometimes not auto connect after launching the app with "Run" button.

    I have all 3 checkboxes in settings checked. Most of the time it seems to work, but sometimes it doesn't (Niddler stays disconnected after run. Connecting manually after that works normally).

    I realize this is pretty vague, what can I do to collect more information on when this happens?

    opened by matejdro 20
  • Feature request: ability to select file to replace response body

    Feature request: ability to select file to replace response body

    Currently to replace response body, I have to paste long body response string into that (comparably) tiny text box. It would be nice if I could pick local html/json file instead and Niddler would read from that file when serving the response.

    As an added bonus, this would also make editing the response much easier since I would only need to edit the file (no need to touch Niddler UI for changing response body).

    enhancement 
    opened by matejdro 5
  • Changing debugger/rewrite properties requires reconnect to take effect

    Changing debugger/rewrite properties requires reconnect to take effect

    1. Start app with niddler
    2. Connect Niddler in debug mode
    3. Make some requests to ensure debug mode works
    4. Change some rewrite properties (such as enabling/disabling some rules or changing properties of those rules)

    Changes will not take effect. I have to disconnect and reconnect to make them stick.

    This is with Niddler UI 2.9.4 and Niddler 1.2.0 on Android app

    enhancement 
    opened by matejdro 4
  • Automatic connect to debugger mode after app run

    Automatic connect to debugger mode after app run

    ~It would be very useful if Niddler would offer automatic connection to the app after app is built and started on the device.~

    Currently Niddler has an option to auto connect after Run, but this does not appear to activate Debug mode (rewrites).

    enhancement 
    opened by matejdro 4
  • Niddler freezes Android Studio

    Niddler freezes Android Studio

    My Android Studio just froze. Looking at the thread dump, it appears Niddler is the culprit:

    "AWT-EventQueue-0" #22 prio=6 os_prio=0 cpu=479770.25ms elapsed=8369.57s tid=0x00007f078411e800 nid=0x1bfc4 waiting for monitor entry  [0x00007f074d913000]
       java.lang.Thread.State: BLOCKED (on object monitor)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList.get(ObservableLinkedMessageList.kt:81)
    	- waiting to lock <0x000000071c27f688> (a java.util.ArrayList)
    	at com.icapps.niddler.lib.model.NiddlerMessageContainer.getMessagesWithRequestId(NiddlerMessageContainer.kt:67)
    	- locked <0x000000071c26bd40> (a com.icapps.niddler.lib.model.NiddlerMessageContainer)
    	at com.icapps.niddler.lib.model.NiddlerMessageContainer.findResponse(NiddlerMessageContainer.kt:72)
    	at com.chimerapps.niddler.ui.component.view.TimelineTableModel.getValueAt(TimelineView.kt:296)
    	at javax.swing.JTable.getValueAt([email protected]/JTable.java:2706)
    	at javax.swing.JTable.prepareRenderer([email protected]/JTable.java:5724)
    	at com.intellij.ui.table.JBTable.prepareRenderer(JBTable.java:644)
    	at javax.swing.plaf.basic.BasicTableUI.paintCell([email protected]/BasicTableUI.java:2185)
    	at javax.swing.plaf.basic.BasicTableUI.paintCells([email protected]/BasicTableUI.java:2087)
    	at javax.swing.plaf.basic.BasicTableUI.paint([email protected]/BasicTableUI.java:1883)
    	at javax.swing.plaf.ComponentUI.update([email protected]/ComponentUI.java:161)
    	at javax.swing.JComponent.paintComponent([email protected]/JComponent.java:800)
    	at com.intellij.ui.table.JBTable.paintComponent(JBTable.java:366)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1077)
    	at com.intellij.ui.table.JBTable.paint(JBTable.java:496)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JViewport.paint([email protected]/JViewport.java:737)
    	at com.intellij.ui.components.JBViewport.paint(JBViewport.java:240)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JLayeredPane.paint([email protected]/JLayeredPane.java:590)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JLayeredPane.paint([email protected]/JLayeredPane.java:590)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JLayeredPane.paint([email protected]/JLayeredPane.java:590)
    	at javax.swing.JComponent.paintToOffscreen([email protected]/JComponent.java:5263)
    	at javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl([email protected]/RepaintManager.java:1654)
    	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered([email protected]/RepaintManager.java:1629)
    	at javax.swing.RepaintManager$PaintManager.paint([email protected]/RepaintManager.java:1566)
    	at javax.swing.BufferStrategyPaintManager.paint([email protected]/BufferStrategyPaintManager.java:262)
    	at javax.swing.RepaintManager.paint([email protected]/RepaintManager.java:1333)
    	at javax.swing.JComponent._paintImmediately([email protected]/JComponent.java:5211)
    	at javax.swing.JComponent.paintImmediately([email protected]/JComponent.java:5021)
    	at javax.swing.RepaintManager$4.run([email protected]/RepaintManager.java:868)
    	at javax.swing.RepaintManager$4.run([email protected]/RepaintManager.java:851)
    	at java.security.AccessController.doPrivileged([email protected]/Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege([email protected]/ProtectionDomain.java:85)
    	at javax.swing.RepaintManager.paintDirtyRegions([email protected]/RepaintManager.java:851)
    	at javax.swing.RepaintManager.paintDirtyRegions([email protected]/RepaintManager.java:826)
    	at javax.swing.RepaintManager.prePaintDirtyRegions([email protected]/RepaintManager.java:775)
    	at javax.swing.RepaintManager$ProcessingRunnable.run([email protected]/RepaintManager.java:1901)
    	at java.awt.event.InvocationEvent.dispatch([email protected]/InvocationEvent.java:313)
    	at java.awt.EventQueue.dispatchEventImpl([email protected]/EventQueue.java:776)
    	at java.awt.EventQueue$4.run([email protected]/EventQueue.java:727)
    	at java.awt.EventQueue$4.run([email protected]/EventQueue.java:721)
    	at java.security.AccessController.doPrivileged([email protected]/Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege([email protected]/ProtectionDomain.java:85)
    	at java.awt.EventQueue.dispatchEvent([email protected]/EventQueue.java:746)
    	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:971)
    	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:841)
    	at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:452)
    	at com.intellij.ide.IdeEventQueue$$Lambda$661/0x00000008008af440.compute(Unknown Source)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:744)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:451)
    	at com.intellij.ide.IdeEventQueue$$Lambda$659/0x00000008008aa840.run(Unknown Source)
    	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:495)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters([email protected]/EventDispatchThread.java:203)
    	at java.awt.EventDispatchThread.pumpEventsForFilter([email protected]/EventDispatchThread.java:124)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy([email protected]/EventDispatchThread.java:113)
    	at java.awt.EventDispatchThread.pumpEvents([email protected]/EventDispatchThread.java:109)
    	at java.awt.EventDispatchThread.pumpEvents([email protected]/EventDispatchThread.java:101)
    	at java.awt.EventDispatchThread.run([email protected]/EventDispatchThread.java:90)
    
       Locked ownable synchronizers:
    	- None
    
    "WebSocketConnectReadThread-6945" #6945 prio=6 os_prio=0 cpu=11.17ms elapsed=166.12s tid=0x00007f0733656000 nid=0x28ea2 waiting for monitor entry  [0x00007f05a51cf000]
       java.lang.Thread.State: BLOCKED (on object monitor)
    	at java.awt.Container.validate([email protected]/Container.java:1646)
    	- waiting to lock <0x0000000703d6c1d0> (a java.awt.Component$AWTTreeLock)
    	at com.intellij.ui.tree.ui.DefaultTreeUI$1.getNodeDimensions(DefaultTreeUI.java:367)
    	at javax.swing.tree.AbstractLayoutCache.getNodeDimensions([email protected]/AbstractLayoutCache.java:493)
    	at javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize([email protected]/VariableHeightLayoutCache.java:1344)
    	at javax.swing.tree.VariableHeightLayoutCache.createNodeAt([email protected]/VariableHeightLayoutCache.java:767)
    	at javax.swing.tree.VariableHeightLayoutCache.treeNodesInserted([email protected]/VariableHeightLayoutCache.java:476)
    	at com.intellij.ui.tree.ui.DefaultTreeUI$2.treeNodesInserted(DefaultTreeUI.java:403)
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.treeNodesInserted([email protected]/BasicTreeUI.java:4285)
    	at javax.swing.tree.DefaultTreeModel.fireTreeNodesInserted([email protected]/DefaultTreeModel.java:544)
    	at javax.swing.tree.DefaultTreeModel.nodesWereInserted([email protected]/DefaultTreeModel.java:331)
    	at javax.swing.tree.DefaultTreeModel.insertNodeInto([email protected]/DefaultTreeModel.java:251)
    	at com.chimerapps.niddler.ui.component.view.LinkedTreeModel.itemsInserted(LinkedView.kt:119)
    	- locked <0x000000074ab81760> (a com.chimerapps.niddler.ui.component.view.LinkedTreeModel)
    	at com.icapps.niddler.lib.utils.ObservableMutableList.add(ObservableList.kt:17)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$Companion.insert(ObservableLinkedMessageList.kt:43)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$Companion.addMessage(ObservableLinkedMessageList.kt:33)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessagesView.notifyMessageInsert(ObservableLinkedMessageList.kt:132)
    	- locked <0x0000000733501a00> (a com.icapps.niddler.lib.model.ObservableLinkedMessagesView)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$addMessage$$inlined$synchronized$lambda$1.invoke(ObservableLinkedMessageList.kt:62)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$addMessage$$inlined$synchronized$lambda$1.invoke(ObservableLinkedMessageList.kt:8)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList.dispatchToViews(ObservableLinkedMessageList.kt:111)
    	- locked <0x0000000710329da0> (a java.util.ArrayList)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList.addMessage(ObservableLinkedMessageList.kt:62)
    	- locked <0x000000071c27f688> (a java.util.ArrayList)
    	at com.icapps.niddler.lib.model.NiddlerMessageContainer$messageAdapter$1.onServiceMessage(NiddlerMessageContainer.kt:25)
    	at com.icapps.niddler.lib.connection.NiddlerClient.onServiceMessage(NiddlerClient.kt:94)
    	- locked <0x0000000796e654d0> (a java.util.HashSet)
    	at com.icapps.niddler.lib.connection.protocol.NiddlerV1ProtocolHandler.onServiceMessage(NiddlerV1ProtocolHandler.kt:32)
    	at com.icapps.niddler.lib.connection.protocol.NiddlerV2ProtocolHandler.onMessage(NiddlerV2ProtocolHandler.kt:31)
    	at com.icapps.niddler.lib.connection.protocol.NiddlerV4ProtocolHandler.onMessage(NiddlerV4ProtocolHandler.kt:34)
    	at com.icapps.niddler.lib.connection.WebSocketNiddlerClient.onMessage(NiddlerClient.kt:217)
    	at org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:593)
    	at org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:885)
    	at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:819)
    	at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:379)
    	at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:216)
    	at org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:506)
    	at java.lang.Thread.run([email protected]/Thread.java:834)
    
       Locked ownable synchronizers:
    	- None
    

    This is with Android Studio Arctic Fox | 2020.3.1 Beta 1 + Niddler 2.10.2

    bug 
    opened by matejdro 2
  • Niddler not auto connecting when starting app via debugger

    Niddler not auto connecting when starting app via debugger

    1. Enable "Automatically connect niddler when running option"
    2. Instead of using "Run" button to start the app, use "Debug" button
    3. Niddler will not auto-connect

    This is with Android Studio 4.0 and Niddler-ui 2.9.5

    bug 
    opened by matejdro 2
  • Feature request: option to not open Niddler window when auto connecting

    Feature request: option to not open Niddler window when auto connecting

    Currently when Niddler is set to auto-connect, IDE will auto-switch to the Niddler window on every single run of the app.

    That is pretty annoying, because most of the time I will not be needing Niddler right away.

    Could you add an option to disable this behavior?

    enhancement 
    opened by matejdro 1
  • IntelliJ reports

    IntelliJ reports "ToolWindowManager it is a service" errors

    Using Niddler 2.10.1 with IntelliJ 2021.1 keeps reporting this exception:

    java.lang.Throwable: class com.intellij.openapi.wm.ToolWindowManager it is a service, use getService instead of getComponent
    	at com.intellij.openapi.diagnostic.Logger.error(Logger.java:161)
    	at com.intellij.serviceContainer.ComponentManagerImpl.getComponent(ComponentManagerImpl.kt:451)
    	at com.chimerapps.niddler.ui.NiddlerToolWindow$Companion.get(NiddlerToolWindow.kt:42)
    	at com.chimerapps.niddler.ui.util.execution.NiddlerAutomaticConnectionHelper$connect$1.invoke(ProcessExecutionListener.kt:126)
    	at com.chimerapps.niddler.ui.util.execution.NiddlerAutomaticConnectionHelper$connect$1.invoke(ProcessExecutionListener.kt:122)
    	at com.chimerapps.niddler.ui.util.ui.ExtensionsKt$sam$java_lang_Runnable$0.run(Extensions.kt)
    	at com.intellij.openapi.application.TransactionGuardImpl.runWithWritingAllowed(TransactionGuardImpl.java:218)
    	at com.intellij.openapi.application.TransactionGuardImpl.access$200(TransactionGuardImpl.java:21)
    	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:200)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:781)
    	at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeLater$4(ApplicationImpl.java:319)
    	at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:84)
    	at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:133)
    	at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
    	at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:189)
    	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    	at java.base/java.security.AccessController.doPrivileged(Native Method)
    	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:969)
    	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:839)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:449)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:808)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:781)
    	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:496)
    	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
    

    I can't find any noticeable adverse side effect from this though.

    bug 
    opened by matejdro 1
  • Using Copy action in Niddler's details will prevent IntelliJ from using system clipboard

    Using Copy action in Niddler's details will prevent IntelliJ from using system clipboard

    I've noticed very weird bug with Niddler:

    1. Open details of any request in Niddler
    2. Right click on any header and select Copy (for example, this will copy Content-Type into clipboard)
    3. Open any other application and copy text from there
    4. Attempt to paste this into any field in IntelliJ

    BUG: Instead of whatever you copied in step 3, Niddler's value will be pasted (in above example Content-Type will be pasted).

    So basically, at this point, IntelliJ will stop reacting to any clipboard changes outside IntellIJ. It will keep clipboard at Niddler's copy.

    Workaround for this is to select any text inside IntelliJ (for example inside text editor) and copy it - this will unblock the clipboard sync.

    This is with:

    Android Studio 4.1 Build #AI-201.8743.12.41.6858069, built on September 23, 2020 Runtime version: 1.8.0_242-release-1644-b3-6222593 amd64 VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Linux 5.8.17-1-manjaro

    (I know I said IntelliJ above, but Android Studio uses IntelliJ platform under the hood so I'm using them interchangeably)

    Any ideas what could cause this?

    opened by matejdro 1
  • Add `jump to response` action to the context menu

    Add `jump to response` action to the context menu

    You can already use r to jump to the correct response from a request

    It would be nice to have the same option in the context menu. So it is not a hidden feature

    enhancement 
    opened by vanlooverenkoen 1
  • Plugin error

    Plugin error

    Not sure how I reproduced this, but Android Studio reported this error:

    java.lang.ArrayIndexOutOfBoundsException: -1
    	at java.util.ArrayList.elementData(ArrayList.java:422)
    	at java.util.ArrayList.set(ArrayList.java:450)
    	at com.chimerapps.niddler.ui.debugging.rewrite.RewriteDialog.onItemUpdated(RewriteDialog.kt:140)
    	at com.chimerapps.niddler.ui.debugging.rewrite.RewriteDialog.access$onItemUpdated(RewriteDialog.kt:25)
    	at com.chimerapps.niddler.ui.debugging.rewrite.RewriteDialog$detailPanel$1.invoke(RewriteDialog.kt:68)
    	at com.chimerapps.niddler.ui.debugging.rewrite.RewriteDialog$detailPanel$1.invoke(RewriteDialog.kt:25)
    	at com.chimerapps.niddler.ui.debugging.rewrite.RewriteDetailPanel$rulesTable$2.invoke(RewriteDetailPanel.kt:195)
    	at com.chimerapps.niddler.ui.debugging.rewrite.RewriteDetailPanel$rulesTable$2.invoke(RewriteDetailPanel.kt:30)
    	at com.chimerapps.niddler.ui.debugging.rewrite.PackingJBTable$1.mousePressed(RewriteDetailPanel.kt:354)
    	at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:280)
    	at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:279)
    	at java.awt.Component.processMouseEvent(Component.java:6547)
    	at javax.swing.JComponent.processMouseEvent(JComponent.java:3325)
    	at com.intellij.ui.table.JBTable.processMouseEvent(JBTable.java:591)
    	at java.awt.Component.processEvent(Component.java:6315)
    	at java.awt.Container.processEvent(Container.java:2239)
    	at java.awt.Component.dispatchEventImpl(Component.java:4899)
    	at java.awt.Container.dispatchEventImpl(Container.java:2297)
    	at java.awt.Component.dispatchEvent(Component.java:4721)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4532)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    	at java.awt.Container.dispatchEventImpl(Container.java:2283)
    	at java.awt.Window.dispatchEventImpl(Window.java:2746)
    	at java.awt.Component.dispatchEvent(Component.java:4721)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
    	at java.awt.EventQueue.access$500(EventQueue.java:98)
    	at java.awt.EventQueue$3.run(EventQueue.java:715)
    	at java.awt.EventQueue$3.run(EventQueue.java:709)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    	at java.awt.EventQueue$4.run(EventQueue.java:739)
    	at java.awt.EventQueue$4.run(EventQueue.java:737)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
    	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
    	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:846)
    	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:778)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
    	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
    	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
    	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
    	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
    	at java.awt.Dialog.show(Dialog.java:1077)
    	at java.awt.Component.show(Component.java:1681)
    	at java.awt.Component.setVisible(Component.java:1633)
    	at java.awt.Window.setVisible(Window.java:1014)
    	at java.awt.Dialog.setVisible(Dialog.java:998)
    	at com.chimerapps.niddler.ui.debugging.rewrite.RewriteDialog$Companion.show(RewriteDialog.kt:33)
    	at com.chimerapps.niddler.ui.NiddlerToolWindow$setupViewActions$configureDebuggerAction$1.invoke(NiddlerToolWindow.kt:139)
    	at com.chimerapps.niddler.ui.NiddlerToolWindow$setupViewActions$configureDebuggerAction$1.invoke(NiddlerToolWindow.kt:35)
    	at com.chimerapps.niddler.ui.actions.DisableableAction.actionPerformed(DisableableAction.kt:20)
    	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:298)
    	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:315)
    	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:289)
    	at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:194)
    	at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:157)
    	at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:447)
    	at java.awt.Component.processEvent(Component.java:6315)
    	at java.awt.Container.processEvent(Container.java:2239)
    	at java.awt.Component.dispatchEventImpl(Component.java:4899)
    	at java.awt.Container.dispatchEventImpl(Container.java:2297)
    	at java.awt.Component.dispatchEvent(Component.java:4721)
    	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4904)
    	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4535)
    	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4476)
    	at java.awt.Container.dispatchEventImpl(Container.java:2283)
    	at java.awt.Window.dispatchEventImpl(Window.java:2746)
    	at java.awt.Component.dispatchEvent(Component.java:4721)
    	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:766)
    	at java.awt.EventQueue.access$500(EventQueue.java:98)
    	at java.awt.EventQueue$3.run(EventQueue.java:715)
    	at java.awt.EventQueue$3.run(EventQueue.java:709)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:84)
    	at java.awt.EventQueue$4.run(EventQueue.java:739)
    	at java.awt.EventQueue$4.run(EventQueue.java:737)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
    	at java.awt.EventQueue.dispatchEvent(EventQueue.java:736)
    	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
    	at com.intellij.ide.IdeEventQueue.dispatchMouseEvent(IdeEventQueue.java:846)
    	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:778)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
    	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
    	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
    
    opened by matejdro 1
  • Provide warning feedback about response status rule

    Provide warning feedback about response status rule

    When attempting to rewrite response status like that:

    image

    nothing happens. Rewriting response status only seem to work when match is filled out (for example with "404"). This is inconsistent with all other rewrite types where blank field acts as a wildcard match that matches everything.

    enhancement 
    opened by matejdro 4
  • Another freeze

    Another freeze

    I've managed to get Niddler to freeze Android Studio once again. Here is the thread dump:

    Found one Java-level deadlock:
    =============================
    "AWT-EventQueue-0":
      waiting to lock monitor 0x00007f107c0f7c00 (object 0x0000000717e1f588, a java.util.ArrayList),
      which is held by "WebSocketConnectReadThread-1158"
    "WebSocketConnectReadThread-1158":
      waiting to lock monitor 0x00007f1134007600 (object 0x0000000707d85be8, a java.awt.Component$AWTTreeLock),
      which is held by "AWT-EventQueue-0"
    
    Java stack information for the threads listed above:
    ===================================================
    "AWT-EventQueue-0":
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList.get(ObservableLinkedMessageList.kt:81)
    	- waiting to lock <0x0000000717e1f588> (a java.util.ArrayList)
    	at com.icapps.niddler.lib.model.NiddlerMessageContainer.getMessagesWithRequestId(NiddlerMessageContainer.kt:67)
    	- locked <0x0000000717de2cb0> (a com.icapps.niddler.lib.model.NiddlerMessageContainer)
    	at com.icapps.niddler.lib.model.NiddlerMessageContainer.findResponse(NiddlerMessageContainer.kt:72)
    	at com.chimerapps.niddler.ui.component.view.TimelineTableModel.getValueAt(TimelineView.kt:302)
    	at javax.swing.JTable.getValueAt([email protected]/JTable.java:2706)
    	at javax.swing.JTable.prepareRenderer([email protected]/JTable.java:5724)
    	at com.intellij.ui.table.JBTable.prepareRenderer(JBTable.java:658)
    	at javax.swing.plaf.basic.BasicTableUI.paintCell([email protected]/BasicTableUI.java:2185)
    	at javax.swing.plaf.basic.BasicTableUI.paintCells([email protected]/BasicTableUI.java:2087)
    	at javax.swing.plaf.basic.BasicTableUI.paint([email protected]/BasicTableUI.java:1883)
    	at javax.swing.plaf.ComponentUI.update([email protected]/ComponentUI.java:161)
    	at javax.swing.JComponent.paintComponent([email protected]/JComponent.java:800)
    	at com.intellij.ui.table.JBTable.paintComponent(JBTable.java:373)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1077)
    	at com.intellij.ui.table.JBTable.paint(JBTable.java:503)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JViewport.paint([email protected]/JViewport.java:737)
    	at com.intellij.ui.components.JBViewport.paint(JBViewport.java:241)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JLayeredPane.paint([email protected]/JLayeredPane.java:590)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JLayeredPane.paint([email protected]/JLayeredPane.java:590)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JComponent.paintChildren([email protected]/JComponent.java:910)
    	- locked <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.JComponent.paint([email protected]/JComponent.java:1086)
    	at javax.swing.JLayeredPane.paint([email protected]/JLayeredPane.java:590)
    	at javax.swing.JComponent.paintToOffscreen([email protected]/JComponent.java:5263)
    	at javax.swing.RepaintManager$PaintManager.paintDoubleBufferedImpl([email protected]/RepaintManager.java:1654)
    	at javax.swing.RepaintManager$PaintManager.paintDoubleBuffered([email protected]/RepaintManager.java:1629)
    	at javax.swing.RepaintManager$PaintManager.paint([email protected]/RepaintManager.java:1566)
    	at javax.swing.BufferStrategyPaintManager.paint([email protected]/BufferStrategyPaintManager.java:262)
    	at javax.swing.RepaintManager.paint([email protected]/RepaintManager.java:1333)
    	at javax.swing.JComponent._paintImmediately([email protected]/JComponent.java:5211)
    	at javax.swing.JComponent.paintImmediately([email protected]/JComponent.java:5021)
    	at javax.swing.RepaintManager$4.run([email protected]/RepaintManager.java:868)
    	at javax.swing.RepaintManager$4.run([email protected]/RepaintManager.java:851)
    	at java.security.AccessController.doPrivileged([email protected]/Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege([email protected]/ProtectionDomain.java:85)
    	at javax.swing.RepaintManager.paintDirtyRegions([email protected]/RepaintManager.java:851)
    	at javax.swing.RepaintManager.paintDirtyRegions([email protected]/RepaintManager.java:826)
    	at javax.swing.RepaintManager.prePaintDirtyRegions([email protected]/RepaintManager.java:775)
    	at javax.swing.RepaintManager$ProcessingRunnable.run([email protected]/RepaintManager.java:1901)
    	at java.awt.event.InvocationEvent.dispatch([email protected]/InvocationEvent.java:313)
    	at java.awt.EventQueue.dispatchEventImpl([email protected]/EventQueue.java:776)
    	at java.awt.EventQueue$4.run([email protected]/EventQueue.java:727)
    	at java.awt.EventQueue$4.run([email protected]/EventQueue.java:721)
    	at java.security.AccessController.doPrivileged([email protected]/Native Method)
    	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege([email protected]/ProtectionDomain.java:85)
    	at java.awt.EventQueue.dispatchEvent([email protected]/EventQueue.java:746)
    	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:976)
    	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:843)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:454)
    	at com.intellij.ide.IdeEventQueue$$Lambda$714/0x000000080096d440.compute(Unknown Source)
    	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:773)
    	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:453)
    	at com.intellij.ide.IdeEventQueue$$Lambda$713/0x000000080096ec40.run(Unknown Source)
    	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:497)
    	at java.awt.EventDispatchThread.pumpOneEventForFilters([email protected]/EventDispatchThread.java:203)
    	at java.awt.EventDispatchThread.pumpEventsForFilter([email protected]/EventDispatchThread.java:124)
    	at java.awt.EventDispatchThread.pumpEventsForHierarchy([email protected]/EventDispatchThread.java:113)
    	at java.awt.EventDispatchThread.pumpEvents([email protected]/EventDispatchThread.java:109)
    	at java.awt.EventDispatchThread.pumpEvents([email protected]/EventDispatchThread.java:101)
    	at java.awt.EventDispatchThread.run([email protected]/EventDispatchThread.java:90)
    "WebSocketConnectReadThread-1158":
    	at java.awt.Container.addImpl([email protected]/Container.java:1100)
    	- waiting to lock <0x0000000707d85be8> (a java.awt.Component$AWTTreeLock)
    	at javax.swing.CellRendererPane.addImpl([email protected]/CellRendererPane.java:108)
    	at java.awt.Container.add([email protected]/Container.java:436)
    	at com.intellij.ui.tree.ui.DefaultTreeUI.getRenderer(DefaultTreeUI.java:170)
    	at com.intellij.ui.tree.ui.DefaultTreeUI$1.getNodeDimensions(DefaultTreeUI.java:380)
    	at javax.swing.tree.AbstractLayoutCache.getNodeDimensions([email protected]/AbstractLayoutCache.java:493)
    	at javax.swing.tree.VariableHeightLayoutCache$TreeStateNode.updatePreferredSize([email protected]/VariableHeightLayoutCache.java:1344)
    	at javax.swing.tree.VariableHeightLayoutCache.createNodeAt([email protected]/VariableHeightLayoutCache.java:767)
    	at javax.swing.tree.VariableHeightLayoutCache.treeNodesInserted([email protected]/VariableHeightLayoutCache.java:476)
    	at com.intellij.ui.tree.ui.DefaultTreeUI$2.treeNodesInserted(DefaultTreeUI.java:418)
    	at javax.swing.plaf.basic.BasicTreeUI$Handler.treeNodesInserted([email protected]/BasicTreeUI.java:4285)
    	at javax.swing.tree.DefaultTreeModel.fireTreeNodesInserted([email protected]/DefaultTreeModel.java:544)
    	at javax.swing.tree.DefaultTreeModel.nodesWereInserted([email protected]/DefaultTreeModel.java:331)
    	at javax.swing.tree.DefaultTreeModel.insertNodeInto([email protected]/DefaultTreeModel.java:251)
    	at com.chimerapps.niddler.ui.component.view.LinkedTreeModel.itemsInserted(LinkedView.kt:119)
    	- locked <0x00000007450ef7e8> (a com.chimerapps.niddler.ui.component.view.LinkedTreeModel)
    	at com.icapps.niddler.lib.utils.ObservableMutableList.add(ObservableList.kt:17)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$Companion.insert(ObservableLinkedMessageList.kt:39)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$Companion.addMessage(ObservableLinkedMessageList.kt:33)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessagesView.notifyMessageInsert(ObservableLinkedMessageList.kt:132)
    	- locked <0x00000007450f4438> (a com.icapps.niddler.lib.model.ObservableLinkedMessagesView)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$addMessage$1$1.invoke(ObservableLinkedMessageList.kt:62)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList$addMessage$1$1.invoke(ObservableLinkedMessageList.kt:62)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList.dispatchToViews(ObservableLinkedMessageList.kt:111)
    	- locked <0x0000000717e1f5a0> (a java.util.ArrayList)
    	at com.icapps.niddler.lib.model.ObservableLinkedMessageList.addMessage(ObservableLinkedMessageList.kt:62)
    	- locked <0x0000000717e1f588> (a java.util.ArrayList)
    	at com.icapps.niddler.lib.model.NiddlerMessageContainer$messageAdapter$1.onServiceMessage(NiddlerMessageContainer.kt:25)
    	at com.icapps.niddler.lib.connection.NiddlerClient.onServiceMessage(NiddlerClient.kt:94)
    	- locked <0x000000074f59ae98> (a java.util.HashSet)
    	at com.icapps.niddler.lib.connection.protocol.NiddlerV1ProtocolHandler.onServiceMessage(NiddlerV1ProtocolHandler.kt:32)
    	at com.icapps.niddler.lib.connection.protocol.NiddlerV2ProtocolHandler.onMessage(NiddlerV2ProtocolHandler.kt:31)
    	at com.icapps.niddler.lib.connection.protocol.NiddlerV4ProtocolHandler.onMessage(NiddlerV4ProtocolHandler.kt:35)
    	at com.icapps.niddler.lib.connection.WebSocketNiddlerClient.onMessage(NiddlerClient.kt:217)
    	at org.java_websocket.client.WebSocketClient.onWebsocketMessage(WebSocketClient.java:636)
    	at org.java_websocket.drafts.Draft_6455.processFrameText(Draft_6455.java:963)
    	at org.java_websocket.drafts.Draft_6455.processFrame(Draft_6455.java:887)
    	at org.java_websocket.WebSocketImpl.decodeFrames(WebSocketImpl.java:401)
    	at org.java_websocket.WebSocketImpl.decode(WebSocketImpl.java:233)
    	at org.java_websocket.client.WebSocketClient.run(WebSocketClient.java:516)
    	at java.lang.Thread.run([email protected]/Thread.java:834)
    
    Found 1 deadlock.
    

    This is with Niddler plugin 2.12.0 and Android Studio Arctic Fox | 2020.3.1 Beta 3

    opened by matejdro 0
  • Linked view will become blank after auto-connect

    Linked view will become blank after auto-connect

    Steps:

    1. Be connected to the phone
    2. Switch Niddler to "Linked" view (as opposed to Timeline)
    3. Make some requests
    4. Re-deploy your app (with auto-connect in existing session enabled)
    5. Watch Niddler page

    BUG: Niddler will become blank, displaying only "Nothing to show"

    Switching to Timeline and then will bring the requests back

    opened by matejdro 0
  • Automatically toggle

    Automatically toggle "keep the view scrolled to the end" when user scrolls

    Small QOL enhancement: Whenever I scroll up on the list, autoscroll to the end should be disabled (otherwise it keeps jumping while I scroll up). Then when I scroll back to the bottom, it should re-enable itself.

    opened by matejdro 0
Releases(2.15.0)
Owner
Chimerapps
Chimerapps
Simple and fast Entity-Component-System (ECS) library written in Dart.

Fast ECS Simple and fast Entity-Component-System (ECS) library written in Dart. CPU Flame Chart Demonstration of performance for rotation of 1024 enti

Stanislav 8 Nov 16, 2022
A radio component suitable for almost any radio scenario.

fradio A radio component suitable for almost any radio scenario. Supports excellent interactive special effects, as well as a simple multi-interactive

Fliggy Mobile 75 Nov 26, 2022
From then on, developers only need to master one Button component, which is enough.

FButton From then on, developers only need to master one Button component, which is enough. Support corners, borders, icons, special effects, loading

Fliggy Mobile 198 Nov 22, 2022
An interesting and practical switch component.

FSwitch An interesting and practical switch component. Supports setting tips, slider decorations, shadows, and good interaction. Author:Newton(coorchi

Fliggy Mobile 81 Dec 13, 2022
The component created with Flutter using Dart programming language, inspired in Fluid Slider by Ramotion.

Fluid Slider Flutter The component created with Flutter using Dart programming language, inspired in Fluid Slider by Ramotion. About The component was

Wilton Neto 41 Sep 30, 2022
Flutter component Gradient Progress Indicator

Gradient Progress Indicator Introduction This package shows a circular progress indicator with gradient colors, and it is possible insert texts inside

Otoniel Moreira Duarte 2 Dec 5, 2022
A list component that refreshes and adds more data for Flutter.

Language: English | 中文简体 Dynamic List View A list component that can refreshes and adds more data for Flutter App. ?? github Installation Add this to

Sword 18 Sep 27, 2022
Flutter component concept created with Flutter using Dart programming language, inspired by Gooey Rab Bar.

Gooey Tab Bar Flutter Flutter component concept created with Flutter using Dart programming language, inspired by Gooey Tab Bar. About This component

Wilton Neto 216 Dec 14, 2022
Magpie-fly is a component library produced by 58 Group, which encapsulates a variety of common components to meet the needs of developers

[toc] magpie_fly Magpie-fly 是58集体出品组件库,封装了多种常用组件,以满足开发者需求。(Magpie-fly is a component library produced by 58 Group, which encapsulates a variety of com

Wuba 40 Mar 18, 2022
Call Kit is a prebuilt feature-rich call component, which enables you to build one-on-one and group voice/video calls into your app with only a few lines of code.

Call Kit (ZegoUIKitPrebuiltCall) Call Kit is a prebuilt feature-rich call component, which enables you to build one-on-one and group voice/video calls

ZEGOCLOUD 9 Dec 26, 2022
A music player component for Flutter (i.e. Spotify, Apple Music, etc.) [AGPL/example/no longer maintaining]

This is an example I currently have no plans of putting this on Pub. Originally, I did, but I lost interest. However, I think this is a good example,

Tobe Osakwe 215 Dec 12, 2022
A music player component for Flutter

This is an example I currently have no plans of putting this on Pub. Originally, I did, but I lost interest. However, I think this is a good example,

Tobe Osakwe 215 Dec 12, 2022
Simple and fast Entity-Component-System (ECS) library written in Dart.

Fast ECS Simple and fast Entity-Component-System (ECS) library written in Dart. CPU Flame Chart Demonstration of performance for rotation of 1024 enti

Stanislav 8 Nov 16, 2022
A simple Flutter component capable of using JSON Schema to declaratively build and customize web forms.

A simple Flutter component capable of using JSON Schema to declaratively build and customize web forms.

null 3 Oct 2, 2022
a widget provided to the flutter scroll component drop-down refresh and pull up load.

flutter_pulltorefresh Intro a widget provided to the flutter scroll component drop-down refresh and pull up load.support android and ios. If you are C

Jpeng 2.5k Jan 5, 2023
Easy to use and beautiful calendar strip component for Flutter.

Flutter Calendar Strip Easy to use and beautiful calendar strip component for Flutter. Awesome celender widget If this project has helped you out, ple

Siddharth V 176 Dec 14, 2022
🌍 Map location picker component for flutter Based on google_maps_flutter

google_map_location_picker Location picker using the official google_maps_flutter. I made This plugin because google deprecated Place Picker. Using Pu

Ibrahim Eid 189 Dec 5, 2022
📓 Storyboard your components with Flutterbook. Develop, document, & test any kind of Flutter component.

Flutterbook A storyboarding tool to accelerate the development of Flutter widgets. Inspired by Storybook.js. The package is built to support Windows a

Philip Vu 25 Oct 7, 2022
Powerful Complete and Beautiful Search Component for Flutter

A highly customizable search component to accelerate your development. Overview There are many search or search components for Flutter, however this o

Tiagosito 31 Jul 27, 2022
A radio component suitable for almost any radio scenario.

fradio A radio component suitable for almost any radio scenario. Supports excellent interactive special effects, as well as a simple multi-interactive

Fliggy Mobile 75 Nov 26, 2022