X-Git-Url: https://gitweb.stoutner.com/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fcom%2Fstoutner%2Fprivacybrowser%2Fhelpers%2FDomainsDatabaseHelper.java;h=bb1a9c5c0df706439d6757e45a55f0247fae3e27;hb=ff7805a7cc8f85fb54302fcf7fa3ca146a89dc4f;hp=130b0f6cd5541d75f8a3a54f5c2d4a844eeb079b;hpb=557c44e588c9c881a5a1573667a34d0355cde834;p=PrivacyBrowserAndroid.git diff --git a/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.java b/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.java index 130b0f6c..bb1a9c5c 100644 --- a/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.java +++ b/app/src/main/java/com/stoutner/privacybrowser/helpers/DomainsDatabaseHelper.java @@ -1,5 +1,5 @@ /* - * Copyright 2017 Soren Stoutner . + * Copyright © 2017 Soren Stoutner . * * This file is part of Privacy Browser . * @@ -26,7 +26,7 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DomainsDatabaseHelper extends SQLiteOpenHelper { - private static final int SCHEMA_VERSION = 1; + private static final int SCHEMA_VERSION = 2; private static final String DOMAINS_DATABASE = "domains.db"; private static final String DOMAINS_TABLE = "domains"; @@ -39,6 +39,11 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper { public static final String ENABLE_FORM_DATA = "enableformdata"; public static final String USER_AGENT = "useragent"; public static final String FONT_SIZE = "fontsize"; + public static final String DISPLAY_IMAGES = "displayimages"; + + public static final int DISPLAY_WEBPAGE_IMAGES_SYSTEM_DEFAULT = 0; + public static final int DISPLAY_WEBPAGE_IMAGES_ENABLED = 1; + public static final int DISPLAY_WEBPAGE_IMAGES_DISABLED = 2; // Initialize the database. The lint warnings for the unused parameters are suppressed. public DomainsDatabaseHelper(Context context, @SuppressWarnings("UnusedParameters") String name, SQLiteDatabase.CursorFactory cursorFactory, @SuppressWarnings("UnusedParameters") int version) { @@ -49,15 +54,16 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper { public void onCreate(SQLiteDatabase domainsDatabase) { // Setup the SQL string to create the `domains` table. final String CREATE_DOMAINS_TABLE = "CREATE TABLE " + DOMAINS_TABLE + " (" + - _ID + " integer primary key, " + - DOMAIN_NAME + " text, " + - ENABLE_JAVASCRIPT + " boolean, " + - ENABLE_FIRST_PARTY_COOKIES + " boolean, " + - ENABLE_THIRD_PARTY_COOKIES + " boolean, " + - ENABLE_DOM_STORAGE + " boolean, " + - ENABLE_FORM_DATA + " boolean, " + - USER_AGENT + " text, " + - FONT_SIZE + " integer);"; + _ID + " INTEGER PRIMARY KEY, " + + DOMAIN_NAME + " TEXT, " + + ENABLE_JAVASCRIPT + " BOOLEAN, " + + ENABLE_FIRST_PARTY_COOKIES + " BOOLEAN, " + + ENABLE_THIRD_PARTY_COOKIES + " BOOLEAN, " + + ENABLE_DOM_STORAGE + " BOOLEAN, " + + ENABLE_FORM_DATA + " BOOLEAN, " + + USER_AGENT + " TEXT, " + + FONT_SIZE + " INTEGER, " + + DISPLAY_IMAGES + " INTEGER);"; // Create the `domains` table if it doesn't exist. domainsDatabase.execSQL(CREATE_DOMAINS_TABLE); @@ -65,7 +71,13 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper { @Override public void onUpgrade(SQLiteDatabase domainsDatabase, int oldVersion, int newVersion) { - // Code for upgrading the database will be added here when the schema version > 1. + // Upgrade `DOMAINS_TABLE`. + switch (oldVersion) { + // Upgrade from `SCHEMA_VERSION` 1. + case 1: + // Add the `DISPLAY_IMAGES` column. + domainsDatabase.execSQL("ALTER TABLE " + DOMAINS_TABLE + " ADD COLUMN " + DISPLAY_IMAGES + " INTEGER"); + } } public Cursor getDomainNameCursorOrderedByDomain() { @@ -91,7 +103,7 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper { " WHERE " + _ID + " IS NOT " + databaseId + " ORDER BY " + DOMAIN_NAME + " ASC"; - // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. We can't close the `Cursor` because we need to use it in the parent activity. + // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. We can't close the `Cursor` because we need to use it in the calling activity. return domainsDatabase.rawQuery(GET_CURSOR_ORDERED_BY_DOMAIN_EXCEPT, null); } @@ -99,15 +111,27 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper { // Get a readable database handle. SQLiteDatabase domainsDatabase = this.getReadableDatabase(); - // Prepare the SQL statement to ge the `Cursor` for `databaseId`. - final String GET_CURSOR_FOR_ID = "Select * FROM " + DOMAINS_TABLE + + // Prepare the SQL statement to get the `Cursor` for `databaseId`. + final String GET_CURSOR_FOR_ID = "SELECT * FROM " + DOMAINS_TABLE + " WHERE " + _ID + " = " + databaseId; - // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. We can't close the `Cursor` because we need to use it in the parent activity. + // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. We can't close the `Cursor` because we need to use it in the calling activity. return domainsDatabase.rawQuery(GET_CURSOR_FOR_ID, null); } - public void addDomain(String domainName) { + public Cursor getCursorForDomainName(String domainName) { + // Get a readable database handle. + SQLiteDatabase domainsDatabase = this.getReadableDatabase(); + + // Prepare the SQL statement to get the `Cursor` for `domainName`. + final String GET_CURSOR_FOR_DOMAIN_NAME = "SELECT * FROM " + DOMAINS_TABLE + + " WHERE " + DOMAIN_NAME + " = " + "\"" + domainName + "\""; + + // Return the results as a `Cursor`. The second argument is `null` because there are no `selectionArgs`. We can't close the `Cursor` because we need to us it in the calling activity. + return domainsDatabase.rawQuery(GET_CURSOR_FOR_DOMAIN_NAME, null); + } + + public int addDomain(String domainName) { // Store the domain data in a `ContentValues`. ContentValues domainContentValues = new ContentValues(); @@ -118,20 +142,24 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper { domainContentValues.put(ENABLE_THIRD_PARTY_COOKIES, false); domainContentValues.put(ENABLE_DOM_STORAGE, false); domainContentValues.put(ENABLE_FORM_DATA, false); - domainContentValues.put(USER_AGENT, "PrivacyBrowser/1.0"); - domainContentValues.put(FONT_SIZE, "100"); + domainContentValues.put(USER_AGENT, "System default user agent"); + domainContentValues.put(FONT_SIZE, 0); + domainContentValues.put(DISPLAY_IMAGES, 0); // Get a writable database handle. SQLiteDatabase domainsDatabase = this.getWritableDatabase(); - // Insert a new row. The second argument is `null`, which makes it so that a completely null row cannot be created. - domainsDatabase.insert(DOMAINS_TABLE, null, domainContentValues); + // Insert a new row and store the resulting database ID. The second argument is `null`, which makes it so that a completely null row cannot be created. + int newDomainDatabaseId = (int) domainsDatabase.insert(DOMAINS_TABLE, null, domainContentValues); // Close the database handle. domainsDatabase.close(); + + return newDomainDatabaseId; } - public void saveDomain(int databaseId, String domainName, boolean javaScriptEnabled, boolean firstPartyCookiesEnabled, boolean thirdPartyCookiesEnabled, boolean domStorageEnabled, boolean formDataEnabled, String userAgent, int fontSize) { + public void saveDomain(int databaseId, String domainName, boolean javaScriptEnabled, boolean firstPartyCookiesEnabled, boolean thirdPartyCookiesEnabled, boolean domStorageEnabled, boolean formDataEnabled, String userAgent, int fontSize, + int displayImages) { // Store the domain data in a `ContentValues`. ContentValues domainContentValues = new ContentValues(); @@ -144,6 +172,7 @@ public class DomainsDatabaseHelper extends SQLiteOpenHelper { domainContentValues.put(ENABLE_FORM_DATA, formDataEnabled); domainContentValues.put(USER_AGENT, userAgent); domainContentValues.put(FONT_SIZE, fontSize); + domainContentValues.put(DISPLAY_IMAGES, displayImages); // Get a writable database handle. SQLiteDatabase domainsDatabase = this.getWritableDatabase();