Validating advanced and screen settings.
authorArmin Novak <armin.novak@thincast.com>
Thu, 9 Mar 2017 09:22:50 +0000 (10:22 +0100)
committerArmin Novak <armin.novak@thincast.com>
Thu, 9 Mar 2017 10:07:59 +0000 (11:07 +0100)
client/Android/Studio/freeRDPCore/src/main/java/com/freerdp/freerdpcore/domain/BookmarkBase.java

index 734fdda..fdffaec 100644 (file)
@@ -43,6 +43,7 @@ public class BookmarkBase implements Parcelable, Cloneable {
     private PerformanceFlags performanceFlags;
     private AdvancedSettings advancedSettings;
     private DebugSettings debugSettings;
+
     public BookmarkBase(Parcel parcel) {
         type = parcel.readInt();
         id = parcel.readLong();
@@ -60,6 +61,7 @@ public class BookmarkBase implements Parcelable, Cloneable {
         debugSettings = parcel.readParcelable(DebugSettings.class
                 .getClassLoader());
     }
+
     public BookmarkBase() {
         init();
     }
@@ -539,6 +541,39 @@ public class BookmarkBase implements Parcelable, Cloneable {
             height = parcel.readInt();
         }
 
+        private void validate() {
+            switch (colors) {
+                case 32:
+                case 24:
+                case 16:
+                case 15:
+                case 8:
+                    break;
+                default:
+                    colors = 32;
+                    break;
+            }
+
+            if ((width <= 0) || (width > 65536)) {
+                width = 1024;
+            }
+
+            if ((height <= 0) || (height > 65536)) {
+                height = 768;
+            }
+
+            switch(resolution) {
+                case FITSCREEN:
+                case AUTOMATIC:
+                case CUSTOM:
+                case PREDEFINED:
+                    break;
+                default:
+                    resolution = AUTOMATIC;
+                    break;
+            }
+        }
+
         private void init() {
             resolution = AUTOMATIC;
             colors = 16;
@@ -587,22 +622,27 @@ public class BookmarkBase implements Parcelable, Cloneable {
         }
 
         public boolean isPredefined() {
+            validate();
             return (resolution == PREDEFINED);
         }
 
         public boolean isAutomatic() {
+            validate();
             return (resolution == AUTOMATIC);
         }
 
         public boolean isFitScreen() {
+            validate();
             return (resolution == FITSCREEN);
         }
 
         public boolean isCustom() {
+            validate();
             return (resolution == CUSTOM);
         }
 
         public int getWidth() {
+            validate();
             return width;
         }
 
@@ -611,6 +651,7 @@ public class BookmarkBase implements Parcelable, Cloneable {
         }
 
         public int getHeight() {
+            validate();
             return height;
         }
 
@@ -619,6 +660,7 @@ public class BookmarkBase implements Parcelable, Cloneable {
         }
 
         public int getColors() {
+            validate();
             return colors;
         }
 
@@ -698,6 +740,7 @@ public class BookmarkBase implements Parcelable, Cloneable {
 
             this.debug = "INFO";
         }
+
         public String getDebugLevel() {
             validate();
             return debug;
@@ -810,7 +853,7 @@ public class BookmarkBase implements Parcelable, Cloneable {
         }
 
         private void validate() {
-            switch(redirectSound) {
+            switch (redirectSound) {
                 case 0:
                 case 1:
                 case 2:
@@ -820,7 +863,7 @@ public class BookmarkBase implements Parcelable, Cloneable {
                     break;
             }
 
-            switch(security) {
+            switch (security) {
                 case 0:
                 case 1:
                 case 2: