X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fhelpers%2FDomainsDatabaseHelper.kt;h=00ffcb4aa50179d51a40d6c86e82771f32c91687;hb=dc36dea65a4eb37496fb1ecbbd9f8e1906f50216;hp=9d58eef07fd1fe0a46047756337f905e34c9f066;hpb=0b2da52fc661cf302cd94105620e54340d269f1d;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.kt b/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.kt index 9d58eef0..00ffcb4a 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.kt +++ b/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.kt @@ -30,24 +30,24 @@ import androidx.preference.PreferenceManager import com.stoutner.privacybrowser.R -// The private constants. -private const val SCHEMA_VERSION = 13 +// 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" @@ -79,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, " + @@ -242,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. // It will be a while before that is supported in Android. // 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. @@ -255,6 +256,15 @@ class DomainsDatabaseHelper(private val appContext: Context) : SQLiteOpenHelper( // Copy the data from the old column to the new one. domainsDatabase.execSQL("UPDATE $DOMAINS_TABLE SET $COOKIES = enablefirstpartycookies") } + + // Upgrade from schema version 13, first used in Privacy Browser 3.8, to schema version 14, first used in Privacy Browser 3.11. + // 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. + // It will be a while before that is supported in Android. + // 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 @@ -310,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) @@ -335,7 +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(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) @@ -367,8 +377,9 @@ 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, fontSize: Int, swipeToRefresh: Int, webViewTheme: Int, - wideViewport: Int, displayImages: Int, pinnedSslCertificate: Boolean, pinnedIpAddresses: Boolean) { + 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. val domainContentValues = ContentValues()