appBar.setCustomView(R.layout.requests_spinner);
appBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_HOME_AS_UP);
- // Initialize the resource array lists.
+ // Initialize the resource array lists. A list is needed for all the resource requests, or the activity can crash if `MainWebViewActivity.resourceRequests` is modified after the activity loads.
+ List<String[]> allResourceRequests = new ArrayList<>();
List<String[]> defaultResourceRequests = new ArrayList<>();
List<String[]> allowedResourceRequests = new ArrayList<>();
+ List<String[]> thirdPartyResourceRequests = new ArrayList<>();
List<String[]> blockedResourceRequests = new ArrayList<>();
// Populate the resource array lists.
for (String[] request : MainWebViewActivity.resourceRequests) {
switch (Integer.valueOf(request[MainWebViewActivity.REQUEST_DISPOSITION])) {
case MainWebViewActivity.REQUEST_DEFAULT:
+ // Add the request to the list of all requests.
+ allResourceRequests.add(request);
+
+ // Add the request to the list of default requests.
defaultResourceRequests.add(request);
break;
case MainWebViewActivity.REQUEST_ALLOWED:
+ // Add the request to the list of all requests.
+ allResourceRequests.add(request);
+
+ // Add the request to the list of allowed requests.
allowedResourceRequests.add(request);
break;
+ case MainWebViewActivity.REQUEST_THIRD_PARTY:
+ // Add the request to the list of all requests.
+ allResourceRequests.add(request);
+
+ // Add the request to the list of third-party requests.
+ thirdPartyResourceRequests.add(request);
+ break;
+
case MainWebViewActivity.REQUEST_BLOCKED:
+ // Add the request to the list of all requests.
+ allResourceRequests.add(request);
+
+ // Add the request to the list of blocked requests.
blockedResourceRequests.add(request);
break;
}
// Setup a matrix cursor for the resource lists.
MatrixCursor spinnerCursor = new MatrixCursor(new String[]{"_id", "Requests"});
- spinnerCursor.addRow(new Object[]{0, getString(R.string.all) + " - " + MainWebViewActivity.resourceRequests.size()});
+ spinnerCursor.addRow(new Object[]{0, getString(R.string.all) + " - " + allResourceRequests.size()});
spinnerCursor.addRow(new Object[]{1, getString(R.string.default_label) + " - " + defaultResourceRequests.size()});
- spinnerCursor.addRow(new Object[]{2, getString(R.string.allowed) + " - " + allowedResourceRequests.size()});
- spinnerCursor.addRow(new Object[]{3, getString(R.string.blocked) + " - " + blockedResourceRequests.size()});
+ spinnerCursor.addRow(new Object[]{2, getString(R.string.allowed_plural) + " - " + allowedResourceRequests.size()});
+ if (MainWebViewActivity.blockAllThirdPartyRequests) {
+ spinnerCursor.addRow(new Object[]{3, getString(R.string.third_party_plural) + " - " + thirdPartyResourceRequests.size()});
+ }
+ spinnerCursor.addRow(new Object[]{4, getString(R.string.blocked_plural) + " - " + blockedResourceRequests.size()});
// Create a resource cursor adapter for the spinner.
ResourceCursorAdapter spinnerCursorAdapter = new ResourceCursorAdapter(this, R.layout.requests_spinner_item, spinnerCursor, 0) {
appBarSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
- switch (position) {
+ switch ((int) id) {
case 0: // All requests.
// Get an adapter for all the request.
- ArrayAdapter<String[]> allResourceRequestsArrayAdapter = new RequestsArrayAdapter(getApplicationContext(), MainWebViewActivity.resourceRequests);
+ ArrayAdapter<String[]> allResourceRequestsArrayAdapter = new RequestsArrayAdapter(getApplicationContext(), allResourceRequests);
// Display the adapter in the list view.
resourceRequestsListView.setAdapter(allResourceRequestsArrayAdapter);
resourceRequestsListView.setAdapter(allowedResourceRequestsArrayAdapter);
break;
- case 3: // Blocked requests.
+ case 3: // Third-party requests.
+ // Get an adapter for the third-party requests.
+ ArrayAdapter<String[]> thirdPartyResourceRequestsArrayAdapter = new RequestsArrayAdapter(getApplicationContext(), thirdPartyResourceRequests);
+
+ //Display the adapter in the list view.
+ resourceRequestsListView.setAdapter(thirdPartyResourceRequestsArrayAdapter);
+ break;
+
+ case 4: // Blocked requests.
// Get an adapter fo the blocked requests.
ArrayAdapter<String[]> blockedResourceRequestsArrayAdapter = new RequestsArrayAdapter(getApplicationContext(), blockedResourceRequests);
});
// Create an array adapter with the list of the resource requests.
- ArrayAdapter<String[]> resourceRequestsArrayAdapter = new RequestsArrayAdapter(getApplicationContext(), MainWebViewActivity.resourceRequests);
+ ArrayAdapter<String[]> resourceRequestsArrayAdapter = new RequestsArrayAdapter(getApplicationContext(), allResourceRequests);
// Populate the list view with the resource requests adapter.
resourceRequestsListView.setAdapter(resourceRequestsArrayAdapter);