diff --git a/app/src/main/java/com/emanuelef/remote_capture/HTTPReassembly.java b/app/src/main/java/com/emanuelef/remote_capture/HTTPReassembly.java index 563ca11d..9437f969 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/HTTPReassembly.java +++ b/app/src/main/java/com/emanuelef/remote_capture/HTTPReassembly.java @@ -41,6 +41,7 @@ public class HTTPReassembly { private boolean mReadingHeaders; private boolean mChunkedEncoding; private ContentEncoding mContentEncoding; + private String mContentType; private int mContentLength; private int mHeadersSize; private final ArrayList mHeaders = new ArrayList<>(); @@ -68,6 +69,7 @@ public class HTTPReassembly { mContentEncoding = ContentEncoding.UNKNOWN; mChunkedEncoding = false; mContentLength = -1; + mContentType = null; mHeadersSize = 0; mHeaders.clear(); mBody.clear(); @@ -126,8 +128,10 @@ public class HTTPReassembly { break; } } else if(line.startsWith("content-type: ")) { - String contentType = line.substring(14); - log_d("Content-Type: " + contentType); + int endIdx = line.indexOf(";"); + mContentType = line.substring(14, (endIdx > 0) ? endIdx : line.length()); + + log_d("Content-Type: " + mContentType); } else if(line.startsWith("content-length: ")) { try { mContentLength = Integer.parseInt(line.substring(16)); @@ -253,6 +257,7 @@ public class HTTPReassembly { if(mInvalidHttp) to_add.type = PayloadChunk.ChunkType.RAW; + to_add.contentType = mContentType; mListener.onChunkReassembled(to_add); reset(); // mReadingHeaders = true } diff --git a/app/src/main/java/com/emanuelef/remote_capture/adapters/PayloadAdapter.java b/app/src/main/java/com/emanuelef/remote_capture/adapters/PayloadAdapter.java index 3c80c8d3..30179abf 100644 --- a/app/src/main/java/com/emanuelef/remote_capture/adapters/PayloadAdapter.java +++ b/app/src/main/java/com/emanuelef/remote_capture/adapters/PayloadAdapter.java @@ -29,7 +29,6 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; -import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.emanuelef.remote_capture.CaptureService; @@ -40,7 +39,6 @@ import com.emanuelef.remote_capture.model.ConnectionDescriptor; import com.emanuelef.remote_capture.model.PayloadChunk; import com.emanuelef.remote_capture.model.PayloadChunk.ChunkType; import com.emanuelef.remote_capture.model.Prefs; -import com.google.android.material.button.MaterialButton; import java.nio.charset.StandardCharsets; import java.text.SimpleDateFormat; @@ -61,15 +59,13 @@ public class PayloadAdapter extends RecyclerView.Adapter mChunks = new ArrayList<>(); - private final LinearLayoutManager mLinearLayout; private final HTTPReassembly mHttpReq; private final HTTPReassembly mHttpRes; - public PayloadAdapter(Context context, LinearLayoutManager linearLayout, ConnectionDescriptor conn, ChunkType mode) { + public PayloadAdapter(Context context, ConnectionDescriptor conn, ChunkType mode) { mLayoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mLinearLayout = linearLayout; mConn = conn; mContext = context; mMode = mode; @@ -89,12 +85,11 @@ public class PayloadAdapter extends RecyclerView.Adapter { - int pos = holder.getAbsoluteAdapterPosition(); - Page page = getItem(pos); - assert(page.adaptChunk.peer != null); - - int jumpPos = getAdapterPosition(page.adaptChunk.peer); - Log.d(TAG, "jump to " + jumpPos + " (orig_pos=" + page.adaptChunk.peer.originalPos + ")"); - mLinearLayout.scrollToPositionWithOffset(jumpPos, 0); - }); - return holder; } @@ -261,15 +246,12 @@ public class PayloadAdapter extends RecyclerView.Adapter= 0); - // Possibly find next un-replied HTTP request - for(int i=adapterChunk.peer.originalPos + 1; i - - diff --git a/app/src/main/res/layout/payload_item.xml b/app/src/main/res/layout/payload_item.xml index 24c8cbec..f1e44082 100644 --- a/app/src/main/res/layout/payload_item.xml +++ b/app/src/main/res/layout/payload_item.xml @@ -17,28 +17,27 @@ - + android:fontFamily="monospace" + android:textSize="11sp" + android:textStyle="italic" + android:singleLine="true" + android:ellipsize="start" + tools:text="application/javascript" />