Skip to content

Commit

Permalink
Fixed ConcurrentModificationException by synchronizing list accesses. C…
Browse files Browse the repository at this point in the history
…loses #3.
  • Loading branch information
acsbendi committed Apr 7, 2023
1 parent 366d87f commit 0cf62b1
Showing 1 changed file with 13 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,10 @@ internal class RequestInspectorJavaScriptInterface(webView: WebView) {
private val recordedRequests = ArrayList<RecordedRequest>()

fun findRecordedRequestForUrl(url: String): RecordedRequest? {
return recordedRequests.find { recordedRequest ->
url.contains(recordedRequest.url)
return synchronized(recordedRequests) {
recordedRequests.find { recordedRequest ->
url.contains(recordedRequest.url)
}
}
}

Expand Down Expand Up @@ -65,7 +67,7 @@ internal class RequestInspectorJavaScriptInterface(webView: WebView) {
}

Log.i(LOG_TAG, "Recorded form submission from JavaScript")
recordedRequests.add(
addRecordedRequest(
RecordedRequest(WebViewRequestType.FORM, url, method, body, headerMap, trace, enctype)
)
}
Expand All @@ -74,7 +76,7 @@ internal class RequestInspectorJavaScriptInterface(webView: WebView) {
fun recordXhr(url: String, method: String, body: String, headers: String, trace: String) {
Log.i(LOG_TAG, "Recorded XHR from JavaScript")
val headerMap = getHeadersAsMap(headers)
recordedRequests.add(
addRecordedRequest(
RecordedRequest(WebViewRequestType.XML_HTTP, url, method, body, headerMap, trace, null)
)
}
Expand All @@ -83,11 +85,17 @@ internal class RequestInspectorJavaScriptInterface(webView: WebView) {
fun recordFetch(url: String, method: String, body: String, headers: String, trace: String) {
Log.i(LOG_TAG, "Recorded fetch from JavaScript")
val headerMap = getHeadersAsMap(headers)
recordedRequests.add(
addRecordedRequest(
RecordedRequest(WebViewRequestType.FETCH, url, method, body, headerMap, trace, null)
)
}

private fun addRecordedRequest(recordedRequest: RecordedRequest) {
synchronized(recordedRequests) {
recordedRequests.add(recordedRequest)
}
}

private fun getHeadersAsMap(headersString: String): MutableMap<String, String> {
val headersObject = JSONObject(headersString)
val map = HashMap<String, String>()
Expand Down

0 comments on commit 0cf62b1

Please sign in to comment.