+ // Remove the incorrect warnings that the views might be null.
+ assert urlTextInputLayout != null;
+ assert urlEditText != null;
+ assert fileNameEditText != null;
+ assert browseButton != null;
+ assert fileSizeTextView != null;
+ assert fileExistsWarningTextView != null;
+ assert storagePermissionTextView != null;
+
+ // Set the file size text view.
+ fileSizeTextView.setText(fileSizeString);
+
+ // Modify the layout based on the save type.
+ if (saveType == StoragePermissionDialog.SAVE_URL) { // A URL is being saved.
+ // Remove the incorrect lint error below that the URL string might be null.
+ assert urlString != null;
+
+ // Populate the URL edit text according to the type. This must be done before the text change listener is created below so that the file size isn't requested again.
+ if (urlString.startsWith("data:")) { // The URL contains the entire data of an image.
+ // Get a substring of the data URL with the first 100 characters. Otherwise, the user interface will freeze while trying to layout the edit text.
+ String urlSubstring = urlString.substring(0, 100) + "…";
+
+ // Populate the URL edit text with the truncated URL.
+ urlEditText.setText(urlSubstring);
+
+ // Disable the editing of the URL edit text.
+ urlEditText.setInputType(InputType.TYPE_NULL);
+ } else { // The URL contains a reference to the location of the data.
+ // Populate the URL edit text with the full URL.
+ urlEditText.setText(urlString);
+ }
+
+ // Update the file size and the status of the save button when the URL changes.
+ urlEditText.addTextChangedListener(new TextWatcher() {
+ @Override
+ public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+ // Do nothing.
+ }
+
+ @Override
+ public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
+ // Do nothing.
+ }
+
+ @Override
+ public void afterTextChanged(Editable editable) {
+ // Cancel the get URL size AsyncTask if it is running.
+ if ((getUrlSize != null)) {
+ getUrlSize.cancel(true);
+ }
+
+ // Get the current URL to save.
+ String urlToSave = urlEditText.getText().toString();
+
+ // Wipe the file size text view.
+ fileSizeTextView.setText("");
+
+ // Get the file size for the current URL.
+ getUrlSize = new GetUrlSize(context, alertDialog, userAgentString, cookiesEnabled).execute(urlToSave);
+
+ // Enable the save button if the URL and file name are populated.
+ saveButton.setEnabled(!urlToSave.isEmpty() && !fileNameEditText.getText().toString().isEmpty());
+ }
+ });
+ } else { // An archive or an image is being saved.
+ // Hide the URL edit text and the file size text view.
+ urlTextInputLayout.setVisibility(View.GONE);
+ fileSizeTextView.setVisibility(View.GONE);
+ }
+