+
+ // Pinned SSL certificates.
+ public boolean hasPinnedSslCertificate() {
+ // Return the status of the pinned SSL certificate.
+ return hasPinnedSslCertificate;
+ }
+
+ public void setPinnedSslCertificate(String issuedToCName, String issuedToOName, String issuedToUName, String issuedByCName, String issuedByOName, String issuedByUName, Date startDate, Date endDate) {
+ // Store the pinned SSL certificate information.
+ pinnedSslIssuedToCName = issuedToCName;
+ pinnedSslIssuedToOName = issuedToOName;
+ pinnedSslIssuedToUName = issuedToUName;
+ pinnedSslIssuedByCName = issuedByCName;
+ pinnedSslIssuedByOName = issuedByOName;
+ pinnedSslIssuedByUName = issuedByUName;
+ pinnedSslStartDate = startDate;
+ pinnedSslEndDate = endDate;
+
+ // Set the pinned SSL certificate tracker.
+ hasPinnedSslCertificate = true;
+ }
+
+ public ArrayList<Object> getPinnedSslCertificate() {
+ // Initialize an array list.
+ ArrayList<Object> arrayList = new ArrayList<>();
+
+ // Create the SSL certificate string array.
+ String[] sslCertificateStringArray = new String[] {pinnedSslIssuedToCName, pinnedSslIssuedToOName, pinnedSslIssuedToUName, pinnedSslIssuedByCName, pinnedSslIssuedByOName, pinnedSslIssuedByUName};
+
+ // Create the SSL certificate date array.
+ Date[] sslCertificateDateArray = new Date[] {pinnedSslStartDate, pinnedSslEndDate};
+
+ // Add the arrays to the array list.
+ arrayList.add(sslCertificateStringArray);
+ arrayList.add(sslCertificateDateArray);
+
+ // Return the pinned SSL certificate array list.
+ return arrayList;
+ }
+
+ public void clearPinnedSslCertificate() {
+ // Clear the pinned SSL certificate.
+ pinnedSslIssuedToCName = null;
+ pinnedSslIssuedToOName = null;
+ pinnedSslIssuedToUName = null;
+ pinnedSslIssuedByCName = null;
+ pinnedSslIssuedByOName = null;
+ pinnedSslIssuedByUName = null;
+ pinnedSslStartDate = null;
+ pinnedSslEndDate = null;
+
+ // Clear the pinned SSL certificate tracker.
+ hasPinnedSslCertificate = false;
+ }
+
+
+ // Current IP addresses.
+ public boolean hasCurrentIpAddresses() {
+ // Return the status of the current IP addresses.
+ return hasCurrentIpAddresses;
+ }
+
+ public void setCurrentIpAddresses(String ipAddresses) {
+ // Store the current IP addresses.
+ currentIpAddresses = ipAddresses;
+
+ // Set the current IP addresses tracker.
+ hasCurrentIpAddresses = true;
+ }
+
+ public String getCurrentIpAddresses() {
+ // Return the current IP addresses.
+ return currentIpAddresses;
+ }
+
+ public void clearCurrentIpAddresses() {
+ // Clear the current IP addresses.
+ currentIpAddresses = null;
+
+ // Clear the current IP addresses tracker.
+ hasCurrentIpAddresses = false;
+ }
+
+
+ // Pinned IP addresses.
+ public boolean hasPinnedIpAddresses() {
+ // Return the status of the pinned IP addresses.
+ return hasPinnedIpAddresses;
+ }
+
+ public void setPinnedIpAddresses(String ipAddresses) {
+ // Store the pinned IP addresses.
+ pinnedIpAddresses = ipAddresses;
+
+ // Set the pinned IP addresses tracker.
+ hasPinnedIpAddresses = true;
+ }
+
+ public String getPinnedIpAddresses() {
+ // Return the pinned IP addresses.
+ return pinnedIpAddresses;
+ }
+
+ public void clearPinnedIpAddresses() {
+ // Clear the pinned IP addresses.
+ pinnedIpAddresses = null;
+
+ // Clear the pinned IP addresses tracker.
+ hasPinnedIpAddresses = false;
+ }
+
+
+ // Ignore pinned information.
+ public void setIgnorePinnedDomainInformation(boolean status) {
+ // Set the status of the ignore pinned domain information tracker.
+ ignorePinnedDomainInformation = status;
+ }
+
+ // The syntax looks better as written, even if it is always inverted.
+ @SuppressWarnings("BooleanMethodIsAlwaysInverted")
+ public boolean ignorePinnedDomainInformation() {
+ // Return the status of the ignore pinned domain information tracker.
+ return ignorePinnedDomainInformation;
+ }
+
+
+ // Favorite or default icon.
+ public void initializeFavoriteIcon() {
+ // Get the default favorite icon drawable. `ContextCompat` must be used until API >= 21.
+ Drawable favoriteIconDrawable = ContextCompat.getDrawable(getContext(), R.drawable.world);
+
+ // Cast the favorite icon drawable to a bitmap drawable.
+ BitmapDrawable favoriteIconBitmapDrawable = (BitmapDrawable) favoriteIconDrawable;
+
+ // Remove the incorrect warning below that the favorite icon bitmap drawable might be null.
+ assert favoriteIconBitmapDrawable != null;
+
+ // Store the default icon bitmap.
+ favoriteOrDefaultIcon = favoriteIconBitmapDrawable.getBitmap();
+ }
+
+ public void setFavoriteOrDefaultIcon(Bitmap icon) {
+ // Scale the favorite icon bitmap down if it is larger than 256 x 256. Filtering uses bilinear interpolation.
+ if ((icon.getHeight() > 256) || (icon.getWidth() > 256)) {
+ favoriteOrDefaultIcon = Bitmap.createScaledBitmap(icon, 256, 256, true);
+ } else {
+ // Store the icon as presented.
+ favoriteOrDefaultIcon = icon;
+ }
+ }
+
+ public Bitmap getFavoriteOrDefaultIcon() {
+ // Return the favorite or default icon.
+ return favoriteOrDefaultIcon;
+ }
+
+
+ // Swipe to refresh.
+ public void setSwipeToRefresh(boolean status) {
+ // Store the swipe to refresh status.
+ swipeToRefresh = status;
+ }
+
+ public boolean getSwipeToRefresh() {
+ // Return the swipe to refresh status.
+ return swipeToRefresh;
+ }
+
+
+ // Waiting for proxy.
+ public void setWaitingForProxyUrlString(String urlString) {
+ // Store the waiting for proxy URL string.
+ waitingForProxyUrlString = urlString;
+ }
+
+ public String getWaitingForProxyUrlString() {
+ // Return the waiting for proxy URL string.
+ return waitingForProxyUrlString;
+ }
+
+ public void resetWaitingForProxyUrlString() {
+ // Clear the waiting for proxy URL string.
+ waitingForProxyUrlString = "";
+ }
+
+ // Scroll range.
+ public int getHorizontalScrollRange() {
+ // Return the horizontal scroll range.
+ return computeHorizontalScrollRange();
+ }
+
+ public int getVerticalScrollRange() {
+ // Return the vertical scroll range.
+ return computeVerticalScrollRange();
+ }
+
+
+