]> gitweb.stoutner.com Git - PrivacyBrowserAndroid.git/blobdiff - app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.kt
Add WebView DevTools to the navigation menu. https://redmine.stoutner.com/issues/893
[PrivacyBrowserAndroid.git] / app / src / main / java / com / stoutner / privacybrowser / helpers / DomainsDatabaseHelper.kt
index c5401d457fedd318904f0292bcd4f43f4cf5b144..00ffcb4aa50179d51a40d6c86e82771f32c91687 100644 (file)
@@ -30,24 +30,24 @@ import androidx.preference.PreferenceManager
 
 import com.stoutner.privacybrowser.R
 
-// The private constants.
-private const val SCHEMA_VERSION = 14
+// Define the class constants.
+private const val SCHEMA_VERSION = 15
 
 class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(appContext, DOMAINS_DATABASE, null, SCHEMA_VERSION) {
     // Define the public companion object constants.  These can be moved to public class constants once the entire project has migrated to Kotlin.
     companion object {
-        // The database constants.
+        // Define the public database constants.
         const val DOMAINS_DATABASE = "domains.db"
         const val DOMAINS_TABLE = "domains"
 
-        // The spinner constants.
+        // Define the public spinner constants.
         const val SYSTEM_DEFAULT = 0
         const val ENABLED = 1
         const val DISABLED = 2
         const val LIGHT_THEME = 1
         const val DARK_THEME = 2
 
-        // The schema constants.
+        // Define the public schema constants.
         const val ID = "_id"
         const val DOMAIN_NAME = "domainname"
         const val ENABLE_JAVASCRIPT = "enablejavascript"
@@ -62,7 +62,6 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
         const val ENABLE_ULTRAPRIVACY = "enableultraprivacy"
         const val BLOCK_ALL_THIRD_PARTY_REQUESTS = "blockallthirdpartyrequests"
         const val USER_AGENT = "useragent"
-        const val X_REQUESTED_WITH_HEADER = "x_requested_with_header"
         const val FONT_SIZE = "fontsize"
         const val SWIPE_TO_REFRESH = "swipetorefresh"
         const val WEBVIEW_THEME = "webview_theme"
@@ -80,7 +79,7 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
         const val PINNED_IP_ADDRESSES = "pinned_ip_addresses"
         const val IP_ADDRESSES = "ip_addresses"
 
-        // The table creation constant.
+        // Define the public table creation constant.
         const val CREATE_DOMAINS_TABLE = "CREATE TABLE $DOMAINS_TABLE (" +
                 "$ID INTEGER PRIMARY KEY, " +
                 "$DOMAIN_NAME TEXT, " +
@@ -96,7 +95,6 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
                 "$ENABLE_ULTRAPRIVACY BOOLEAN, " +
                 "$BLOCK_ALL_THIRD_PARTY_REQUESTS BOOLEAN, " +
                 "$USER_AGENT TEXT, " +
-                "$X_REQUESTED_WITH_HEADER INTEGER, " +
                 "$FONT_SIZE INTEGER, " +
                 "$SWIPE_TO_REFRESH INTEGER, " +
                 "$WEBVIEW_THEME INTEGER, " +
@@ -244,6 +242,7 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
             // Add the WebView theme column.  This defaults to `0`, which is `System default`, so a separate step isn't needed to populate the column.
             domainsDatabase.execSQL("ALTER TABLE $DOMAINS_TABLE ADD COLUMN $WEBVIEW_THEME INTEGER")
 
+            // `night_mode` was removed.
             // SQLite amazingly only added a command to drop a column in version 3.35.0.  <https://www.sqlite.org/changes.html>
             // It will be a while before that is supported in Android.  <https://developer.android.com/reference/android/database/sqlite/package-summary>
             // Although a new table could be created and all the data copied to it, I think I will just leave the old night mode column.  It will be wiped out the next time an import is run.
@@ -259,10 +258,13 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
         }
 
         // Upgrade from schema version 13, first used in Privacy Browser 3.8, to schema version 14, first used in Privacy Browser 3.11.
-        if (oldVersion < 14) {
-            // Add the X-Requested-With header column.  This defaults to `0`, which is `System default`, so a separate step isn't needed to populate the column.
-            domainsDatabase.execSQL("ALTER TABLE $DOMAINS_TABLE ADD COLUMN $X_REQUESTED_WITH_HEADER INTEGER")
-        }
+        // This upgrade used to add the X-Requested-With header, but that was removed in schema version 15.
+
+        // Upgrade from schema version 14, first used in Privacy Browser 3.11, to schema version 15, first used in Privacy Browser 3.12.
+        // This upgrade removed `x_requested_with_header`.
+        // SQLite amazingly only added a command to drop a column in version 3.35.0.  <https://www.sqlite.org/changes.html>
+        // It will be a while before that is supported in Android.  <https://developer.android.com/reference/android/database/sqlite/package-summary>
+        // Although a new table could be created and all the data copied to it, I think I will just leave the X-Requested-With column.  It will be wiped out the next time an import is run.
     }
 
     val completeCursorOrderedByDomain: Cursor
@@ -318,17 +320,17 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
         val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(appContext)
 
         // Get the default settings.
-        val javaScript = sharedPreferences.getBoolean("javascript", false)
+        val javaScript = sharedPreferences.getBoolean(appContext.getString(R.string.javascript_key), false)
         val cookies = sharedPreferences.getBoolean(appContext.getString(R.string.cookies_key), false)
-        val domStorage = sharedPreferences.getBoolean("dom_storage", false)
-        val saveFormData = sharedPreferences.getBoolean("save_form_data", false) // Form data can be removed once the minimum API >= 26.
-        val easyList = sharedPreferences.getBoolean("easylist", true)
-        val easyPrivacy = sharedPreferences.getBoolean("easyprivacy", true)
-        val fanboyAnnoyanceList = sharedPreferences.getBoolean("fanboys_annoyance_list", true)
-        val fanboySocialBlockingList = sharedPreferences.getBoolean("fanboys_social_blocking_list", true)
-        val ultraList = sharedPreferences.getBoolean("ultralist", true)
-        val ultraPrivacy = sharedPreferences.getBoolean("ultraprivacy", true)
-        val blockAllThirdPartyRequests = sharedPreferences.getBoolean("block_all_third_party_requests", false)
+        val domStorage = sharedPreferences.getBoolean(appContext.getString(R.string.dom_storage_key), false)
+        val saveFormData = sharedPreferences.getBoolean(appContext.getString(R.string.save_form_data_key), false)  // Form data can be removed once the minimum API >= 26.
+        val easyList = sharedPreferences.getBoolean(appContext.getString(R.string.easylist_key), true)
+        val easyPrivacy = sharedPreferences.getBoolean(appContext.getString(R.string.easyprivacy_key), true)
+        val fanboyAnnoyanceList = sharedPreferences.getBoolean(appContext.getString(R.string.fanboys_annoyance_list_key), true)
+        val fanboySocialBlockingList = sharedPreferences.getBoolean(appContext.getString(R.string.fanboys_social_blocking_list_key), true)
+        val ultraList = sharedPreferences.getBoolean(appContext.getString(R.string.ultralist_key), true)
+        val ultraPrivacy = sharedPreferences.getBoolean(appContext.getString(R.string.ultraprivacy_key), true)
+        val blockAllThirdPartyRequests = sharedPreferences.getBoolean(appContext.getString(R.string.block_all_third_party_requests_key), false)
 
         // Create entries for the database fields.  The ID is created automatically.  The pinned SSL certificate information is not created unless added by the user.
         domainContentValues.put(DOMAIN_NAME, domainName)
@@ -343,8 +345,7 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
         domainContentValues.put(ULTRALIST, ultraList)
         domainContentValues.put(ENABLE_ULTRAPRIVACY, ultraPrivacy)
         domainContentValues.put(BLOCK_ALL_THIRD_PARTY_REQUESTS, blockAllThirdPartyRequests)
-        domainContentValues.put(USER_AGENT, "System default user agent")
-        domainContentValues.put(X_REQUESTED_WITH_HEADER, 0)
+        domainContentValues.put(USER_AGENT, appContext.getString(R.string.user_agent_default_value))
         domainContentValues.put(FONT_SIZE, 0)
         domainContentValues.put(SWIPE_TO_REFRESH, 0)
         domainContentValues.put(WEBVIEW_THEME, 0)
@@ -376,7 +377,7 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
     }
 
     fun updateDomain(databaseId: Int, domainName: String, javaScript: Boolean, cookies: Boolean, domStorage: Boolean, formData: Boolean, easyList: Boolean, easyPrivacy: Boolean, fanboysAnnoyance: Boolean,
-                     fanboysSocialBlocking: Boolean, ultraList: Boolean, ultraPrivacy: Boolean, blockAllThirdPartyRequests: Boolean, userAgent: String, xRequestedWithHeader: Int, fontSize: Int,
+                     fanboysSocialBlocking: Boolean, ultraList: Boolean, ultraPrivacy: Boolean, blockAllThirdPartyRequests: Boolean, userAgent: String, fontSize: Int,
                      swipeToRefresh: Int, webViewTheme: Int, wideViewport: Int, displayImages: Int, pinnedSslCertificate: Boolean, pinnedIpAddresses: Boolean) {
 
         // Instantiate a content values.
@@ -396,7 +397,6 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper(
         domainContentValues.put(ENABLE_ULTRAPRIVACY, ultraPrivacy)
         domainContentValues.put(BLOCK_ALL_THIRD_PARTY_REQUESTS, blockAllThirdPartyRequests)
         domainContentValues.put(USER_AGENT, userAgent)
-        domainContentValues.put(X_REQUESTED_WITH_HEADER, xRequestedWithHeader)
         domainContentValues.put(FONT_SIZE, fontSize)
         domainContentValues.put(SWIPE_TO_REFRESH, swipeToRefresh)
         domainContentValues.put(WEBVIEW_THEME, webViewTheme)