From 48fd6d287d12fe0b0e35987d857669acb8c7e979 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Tue, 6 Jun 2017 16:11:46 +0200 Subject: [PATCH] enforce max line length at 118 gitlab's diff views wrap badly when lines are longer than 118. Android Studio places a grey line in the UI at 120. @SuppressWarnings("LineLength") is added to a bunch of files to prevent making this commit huge. People can remove that as they work on those files, and fix the issues then. I also ran Android Studio's default Ctrl-Alt-L code formatter, where it was easy to do, and I was already in the file. --- .../fdroid/fdroid/net/HttpDownloaderTest.java | 3 +- .../integration/android/IntentIntegrator.java | 1 + .../integration/android/IntentResult.java | 3 +- .../java/org/fdroid/fdroid/AppDetails2.java | 1 + .../java/org/fdroid/fdroid/AppFilter.java | 2 +- .../fdroid/fdroid/AppUpdateStatusManager.java | 34 ++++++++------ .../fdroid/fdroid/AppUpdateStatusService.java | 1 + .../java/org/fdroid/fdroid/FDroidApp.java | 2 +- .../org/fdroid/fdroid/NotificationHelper.java | 1 + .../java/org/fdroid/fdroid/Preferences.java | 6 +-- .../java/org/fdroid/fdroid/UpdateService.java | 1 + .../main/java/org/fdroid/fdroid/data/Apk.java | 3 +- .../org/fdroid/fdroid/data/ApkProvider.java | 6 ++- .../main/java/org/fdroid/fdroid/data/App.java | 2 +- .../fdroid/fdroid/data/AppPrefsProvider.java | 10 +++-- .../org/fdroid/fdroid/data/AppProvider.java | 1 + .../fdroid/fdroid/data/CategoryProvider.java | 22 +++++---- .../java/org/fdroid/fdroid/data/DBHelper.java | 1 + .../fdroid/fdroid/data/FDroidProvider.java | 3 +- .../fdroid/data/InstalledAppProvider.java | 18 ++++---- .../data/InstalledAppProviderService.java | 4 +- .../org/fdroid/fdroid/data/LoggingQuery.java | 3 +- .../fdroid/fdroid/data/PackageProvider.java | 12 ++--- .../org/fdroid/fdroid/data/QueryBuilder.java | 15 ++++--- .../org/fdroid/fdroid/data/RepoPersister.java | 1 + .../org/fdroid/fdroid/data/RepoProvider.java | 34 ++++++++------ .../fdroid/fdroid/data/TempApkProvider.java | 1 + .../fdroid/fdroid/data/TempAppProvider.java | 17 ++++--- .../org/fdroid/fdroid/installer/ApkCache.java | 12 ++--- .../installer/ApkSignatureVerifier.java | 7 +-- .../installer/DefaultInstallerActivity.java | 7 +-- .../installer/InstallManagerService.java | 1 + .../fdroid/fdroid/installer/Installer.java | 1 + .../fdroid/installer/PrivilegedInstaller.java | 6 ++- .../fdroid/localrepo/LocalRepoKeyStore.java | 1 + .../fdroid/localrepo/LocalRepoManager.java | 1 + .../fdroid/fdroid/localrepo/SwapService.java | 1 + .../localrepo/peers/BluetoothFinder.java | 1 + .../fdroid/localrepo/peers/BluetoothPeer.java | 4 +- .../fdroid/localrepo/peers/BonjourFinder.java | 1 + .../fdroid/localrepo/type/BluetoothSwap.java | 1 + .../localrepo/type/BonjourBroadcast.java | 12 ++--- .../fdroid/localrepo/type/WifiSwap.java | 1 + .../org/fdroid/fdroid/net/Downloader.java | 3 +- .../fdroid/fdroid/net/DownloaderService.java | 6 ++- .../org/fdroid/fdroid/net/LocalHTTPD.java | 9 ++-- .../fdroid/net/WifiStateChangeService.java | 1 + .../fdroid/net/bluetooth/BluetoothClient.java | 2 +- .../fdroid/net/bluetooth/BluetoothServer.java | 1 + .../fdroid/net/bluetooth/httpish/Request.java | 12 ++--- .../net/bluetooth/httpish/Response.java | 7 +-- .../privileged/install/InstallExtension.java | 1 + .../views/AppSecurityPermissions.java | 14 +++--- .../views/InstallConfirmActivity.java | 8 ++-- .../views/AppDetailsRecyclerViewAdapter.java | 1 + .../fdroid/views/BannerUpdatingRepos.java | 4 +- .../views/LinearLayoutManagerSnapHelper.java | 1 + .../fdroid/views/ManageReposActivity.java | 16 ++++--- .../fdroid/views/RepoDetailsActivity.java | 3 +- .../views/ScreenShotsRecyclerViewAdapter.java | 9 ++-- .../fdroid/views/ShareChooserDialog.java | 11 +++-- .../fdroid/views/apps/AppListActivity.java | 10 +++-- .../fdroid/views/apps/AppListAdapter.java | 4 +- .../views/apps/AppListItemController.java | 1 + .../fdroid/views/apps/CategorySpan.java | 7 +-- .../views/apps/CategoryTextWatcher.java | 24 +++++----- .../fdroid/views/apps/FeatureImage.java | 1 + .../views/categories/AppCardController.java | 34 +++++++------- .../views/categories/AppPreviewAdapter.java | 4 +- .../views/categories/CategoryAdapter.java | 4 +- .../views/categories/CategoryController.java | 26 ++++++----- .../views/fragments/PreferencesFragment.java | 38 ++++++++-------- .../fdroid/views/main/MainActivity.java | 45 ++++++++++--------- .../fdroid/views/main/MainViewAdapter.java | 3 +- .../fdroid/views/main/MainViewController.java | 8 ++-- .../fdroid/views/main/SettingsView.java | 5 ++- .../fdroid/views/main/WhatsNewViewBinder.java | 4 +- .../fdroid/views/swap/JoinWifiView.java | 6 +-- .../org/fdroid/fdroid/views/swap/NfcView.java | 4 +- .../fdroid/views/swap/SelectAppsView.java | 6 ++- .../fdroid/views/swap/StartSwapView.java | 25 ++++++----- .../fdroid/views/swap/SwapAppsView.java | 8 ++-- .../views/swap/SwapWorkflowActivity.java | 1 + .../fdroid/views/updates/UpdatesAdapter.java | 34 ++++++++------ .../fdroid/views/updates/items/AppStatus.java | 12 ++--- .../views/updates/items/AppUpdateData.java | 6 ++- .../views/updates/items/UpdateableApp.java | 9 ++-- .../updates/items/UpdateableAppsHeader.java | 13 +++--- .../views/whatsnew/WhatsNewAdapter.java | 8 ++-- .../net/www/protocol/bluetooth/Handler.java | 5 ++- .../test/java/org/fdroid/fdroid/Assert.java | 27 ++++++----- .../java/org/fdroid/fdroid/TestUtils.java | 14 +++--- .../java/org/fdroid/fdroid/UtilsTest.java | 1 + .../fdroid/fdroid/data/AppProviderTest.java | 1 + .../fdroid/data/CategoryProviderTest.java | 42 ++++++++--------- .../fdroid/fdroid/data/DatabaseMigration.java | 7 ++- .../fdroid/data/InstalledAppProviderTest.java | 11 ++--- .../fdroid/fdroid/data/ProviderUriTests.java | 1 + .../fdroid/fdroid/data/RepoProviderTest.java | 6 ++- .../fdroid/fdroid/data/SanitizedFileTest.java | 2 +- .../fdroid/updater/FDroidRepoUpdateTest.java | 8 ++-- .../fdroid/updater/IndexV1UpdaterTest.java | 4 +- .../fdroid/updater/Issue763MultiRepo.java | 1 + .../updater/ProperMultiRepoUpdaterTest.java | 1 + .../fdroid/updater/RepoXMLHandlerTest.java | 32 ++++++------- .../fdroid/views/AppDetailsAdapterTest.java | 9 ++-- config/checkstyle/checkstyle.xml | 12 +++++ 107 files changed, 535 insertions(+), 373 deletions(-) diff --git a/app/src/androidTest/java/org/fdroid/fdroid/net/HttpDownloaderTest.java b/app/src/androidTest/java/org/fdroid/fdroid/net/HttpDownloaderTest.java index a40b4a945..08f218716 100644 --- a/app/src/androidTest/java/org/fdroid/fdroid/net/HttpDownloaderTest.java +++ b/app/src/androidTest/java/org/fdroid/fdroid/net/HttpDownloaderTest.java @@ -54,7 +54,8 @@ public class HttpDownloaderTest { httpDownloader.setListener(new ProgressListener() { @Override public void onProgress(URL sourceUrl, int bytesRead, int totalBytes) { - System.out.println("DownloaderProgressListener.sendProgress " + sourceUrl + " " + bytesRead + " / " + totalBytes); + System.out.println("DownloaderProgressListener.sendProgress " + + sourceUrl + " " + bytesRead + " / " + totalBytes); receivedProgress = true; } }); diff --git a/app/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java b/app/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java index 44ef770bb..4d8d49f0f 100644 --- a/app/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java +++ b/app/src/main/java/com/google/zxing/integration/android/IntentIntegrator.java @@ -107,6 +107,7 @@ import java.util.Map; * @author Brad Drehmer * @author gcstang */ +@SuppressWarnings("LineLength") public class IntentIntegrator { public static final int REQUEST_CODE = 0x0000c0de; // Only use bottom 16 bits diff --git a/app/src/main/java/com/google/zxing/integration/android/IntentResult.java b/app/src/main/java/com/google/zxing/integration/android/IntentResult.java index a67734393..161702cd4 100644 --- a/app/src/main/java/com/google/zxing/integration/android/IntentResult.java +++ b/app/src/main/java/com/google/zxing/integration/android/IntentResult.java @@ -83,7 +83,8 @@ public final class IntentResult { @Override public String toString() { int rawBytesLength = rawBytes == null ? 0 : rawBytes.length; - return "Format: " + formatName + '\n' + "Contents: " + contents + '\n' + "Raw bytes: (" + rawBytesLength + " bytes)\n" + "Orientation: " + orientation + '\n' + "EC level: " + errorCorrectionLevel + '\n'; + return "Format: " + formatName + '\n' + "Contents: " + contents + '\n' + "Raw bytes: (" + rawBytesLength + + " bytes)\n" + "Orientation: " + orientation + '\n' + "EC level: " + errorCorrectionLevel + '\n'; } } diff --git a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java index 71d09d26f..6779bd78d 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppDetails2.java +++ b/app/src/main/java/org/fdroid/fdroid/AppDetails2.java @@ -74,6 +74,7 @@ import org.fdroid.fdroid.views.apps.FeatureImage; import java.util.Iterator; +@SuppressWarnings("LineLength") public class AppDetails2 extends AppCompatActivity implements ShareChooserDialog.ShareChooserDialogListener, AppDetailsRecyclerViewAdapter.AppDetailsRecyclerViewAdapterCallbacks { public static final String EXTRA_APPID = "appid"; diff --git a/app/src/main/java/org/fdroid/fdroid/AppFilter.java b/app/src/main/java/org/fdroid/fdroid/AppFilter.java index 53f4fb28e..7a3bb2a68 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppFilter.java +++ b/app/src/main/java/org/fdroid/fdroid/AppFilter.java @@ -32,7 +32,7 @@ public class AppFilter { } } } - if (app.antiFeatures != null && app.antiFeatures.length > 0 && Preferences.get().filterAppsWithAntiFeatures()) { // NOPMD + if (app.antiFeatures != null && app.antiFeatures.length > 0 && Preferences.get().filterAppsWithAntiFeatures()) { // NOPMD NOCHECKSTYLE LineLength return true; } return false; diff --git a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java index 31acaa2bf..c1678a01f 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java +++ b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusManager.java @@ -13,7 +13,6 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.TaskStackBuilder; import android.support.v4.content.LocalBroadcastManager; - import org.fdroid.fdroid.data.Apk; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.AppProvider; @@ -36,16 +35,17 @@ import java.util.Map; * and {@code versionCode} since there could be different copies of the same * APK on different servers, signed by different keys, or even different builds. */ +@SuppressWarnings("LineLength") public final class AppUpdateStatusManager { private static final String TAG = "AppUpdateStatusManager"; /** * Broadcast when: - * * The user clears the list of installed apps from notification manager. - * * The user clears the list of apps available to update from the notification manager. - * * A repo update is completed and a bunch of new apps are ready to be updated. - * * F-Droid is opened, and it finds a bunch of .apk files downloaded and ready to install. + * * The user clears the list of installed apps from notification manager. + * * The user clears the list of apps available to update from the notification manager. + * * A repo update is completed and a bunch of new apps are ready to be updated. + * * F-Droid is opened, and it finds a bunch of .apk files downloaded and ready to install. */ public static final String BROADCAST_APPSTATUS_LIST_CHANGED = "org.fdroid.fdroid.installer.appstatus.listchange"; @@ -61,9 +61,9 @@ public final class AppUpdateStatusManager { /** * Broadcast when: - * * The associated app has the {@link Status#Installed} status, and the user either visits - * that apps details page or clears the individual notification for the app. - * * The download for an app is cancelled. + * * The associated app has the {@link Status#Installed} status, and the user either visits + * that apps details page or clears the individual notification for the app. + * * The download for an app is cancelled. */ public static final String BROADCAST_APPSTATUS_REMOVED = "org.fdroid.fdroid.installer.appstatus.appchange.remove"; @@ -129,7 +129,8 @@ public final class AppUpdateStatusManager { * Dumps some information about the status for debugging purposes. */ public String toString() { - return app.packageName + " [Status: " + status + ", Progress: " + progressCurrent + " / " + progressMax + "]"; + return app.packageName + " [Status: " + status + + ", Progress: " + progressCurrent + " / " + progressMax + "]"; } protected AppUpdateStatus(Parcel in) { @@ -191,7 +192,9 @@ public final class AppUpdateStatusManager { private final HashMap appMapping = new HashMap<>(); private boolean isBatchUpdating; - /** @see #isPendingInstall(String) */ + /** + * @see #isPendingInstall(String) + */ private final SharedPreferences apksPendingInstall; private AppUpdateStatusManager(Context context) { @@ -215,6 +218,7 @@ public final class AppUpdateStatusManager { /** * Get all entries associated with a package name. There may be several. + * * @param packageName Package name of the app * @return A list of entries, or an empty list */ @@ -309,8 +313,9 @@ public final class AppUpdateStatusManager { /** * Add an Apk to the AppUpdateStatusManager manager (or update it if we already know about it). - * @param apk The apk to add. - * @param status The current status of the app + * + * @param apk The apk to add. + * @param status The current status of the app * @param pendingIntent Action when notification is clicked. Can be null for default action(s) */ public void addApk(Apk apk, @NonNull Status status, @Nullable PendingIntent pendingIntent) { @@ -433,7 +438,7 @@ public final class AppUpdateStatusManager { void clearAllUpdates() { synchronized (appMapping) { - for (Iterator> it = appMapping.entrySet().iterator(); it.hasNext();) { + for (Iterator> it = appMapping.entrySet().iterator(); it.hasNext(); ) { // NOCHECKSTYLE EmptyForIteratorPad Map.Entry entry = it.next(); if (entry.getValue().status != Status.Installed) { it.remove(); @@ -445,7 +450,7 @@ public final class AppUpdateStatusManager { void clearAllInstalled() { synchronized (appMapping) { - for (Iterator> it = appMapping.entrySet().iterator(); it.hasNext();) { + for (Iterator> it = appMapping.entrySet().iterator(); it.hasNext(); ) { // NOCHECKSTYLE EmptyForIteratorPad Map.Entry entry = it.next(); if (entry.getValue().status == Status.Installed) { it.remove(); @@ -517,6 +522,7 @@ public final class AppUpdateStatusManager { * being more permanent than the notification info. As such, the different clients should be * aware of their requirements when invoking general-sounding methods like "addApk()", rather * than this class trying to second-guess why they added an apk. + * * @see #isPendingInstall(String) */ public void markAsPendingInstall(String uniqueKey) { diff --git a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java index e6b821099..7a5b70085 100644 --- a/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java +++ b/app/src/main/java/org/fdroid/fdroid/AppUpdateStatusService.java @@ -25,6 +25,7 @@ import java.util.List; * run on a background thread, as it hits the disk a bit to figure out the hash of each downloaded * file. */ +@SuppressWarnings("LineLength") public class AppUpdateStatusService extends IntentService { private static final String TAG = "AppUpdateStatusService"; diff --git a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java index 50ea77b56..94cca9eef 100644 --- a/app/src/main/java/org/fdroid/fdroid/FDroidApp.java +++ b/app/src/main/java/org/fdroid/fdroid/FDroidApp.java @@ -290,7 +290,7 @@ public class FDroidApp extends Application { String fileNameToSanitize; Uri uri = Uri.parse(imageUri); if (TextUtils.isEmpty(uri.getPath())) { - // e.g. files with a URL like "drawable://213083835209" used by the category backgrounds. + // files with URL like "drawable://213083835209" used by the category backgrounds fileNameToSanitize = imageUri.replaceAll("[:/]", ""); } else { fileNameToSanitize = uri.getPath().replace("/", "-"); diff --git a/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java b/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java index a9d9fd4b7..84bdc76ad 100644 --- a/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/NotificationHelper.java @@ -33,6 +33,7 @@ import org.fdroid.fdroid.views.main.MainActivity; import java.util.ArrayList; +@SuppressWarnings("LineLength") class NotificationHelper { static final String BROADCAST_NOTIFICATIONS_ALL_UPDATES_CLEARED = "org.fdroid.fdroid.installer.notifications.allupdates.cleared"; diff --git a/app/src/main/java/org/fdroid/fdroid/Preferences.java b/app/src/main/java/org/fdroid/fdroid/Preferences.java index 8609870a5..d71bf60f8 100644 --- a/app/src/main/java/org/fdroid/fdroid/Preferences.java +++ b/app/src/main/java/org/fdroid/fdroid/Preferences.java @@ -5,6 +5,7 @@ import android.content.SharedPreferences; import android.os.Build; import android.preference.PreferenceManager; import android.util.Log; +import info.guardianproject.netcipher.NetCipher; import java.net.InetSocketAddress; import java.net.Proxy; @@ -16,8 +17,6 @@ import java.util.Map; import java.util.Random; import java.util.concurrent.TimeUnit; -import info.guardianproject.netcipher.NetCipher; - /** * Handles shared preferences for FDroid, looking after the names of * preferences, default values and caching. Needs to be setup in the FDroidApp @@ -320,7 +319,8 @@ public final class Preferences implements SharedPreferences.OnSharedPreferenceCh public boolean filterAppsWithAntiFeatures() { if (!isInitialized(PREF_HIDE_ANTI_FEATURE_APPS)) { initialize(PREF_HIDE_ANTI_FEATURE_APPS); - filterAppsWithAntiFeatures = preferences.getBoolean(PREF_HIDE_ANTI_FEATURE_APPS, DEFAULT_HIDE_ANTI_FEATURE_APPS); + filterAppsWithAntiFeatures = preferences.getBoolean(PREF_HIDE_ANTI_FEATURE_APPS, + DEFAULT_HIDE_ANTI_FEATURE_APPS); } return filterAppsWithAntiFeatures; } diff --git a/app/src/main/java/org/fdroid/fdroid/UpdateService.java b/app/src/main/java/org/fdroid/fdroid/UpdateService.java index de53b6432..99d0607f0 100644 --- a/app/src/main/java/org/fdroid/fdroid/UpdateService.java +++ b/app/src/main/java/org/fdroid/fdroid/UpdateService.java @@ -56,6 +56,7 @@ import java.net.URL; import java.util.ArrayList; import java.util.List; +@SuppressWarnings("LineLength") public class UpdateService extends IntentService { private static final String TAG = "UpdateService"; diff --git a/app/src/main/java/org/fdroid/fdroid/data/Apk.java b/app/src/main/java/org/fdroid/fdroid/data/Apk.java index 5b65ad9ac..cbbbee3ad 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/Apk.java +++ b/app/src/main/java/org/fdroid/fdroid/data/Apk.java @@ -244,7 +244,8 @@ public class Apk extends ValueObject implements Comparable, Parcelable { private void checkRepoAddress() { if (repoAddress == null || apkName == null) { - throw new IllegalStateException("Apk needs to have both Schema.ApkTable.Cols.REPO_ADDRESS and Schema.ApkTable.Cols.NAME set in order to calculate URL."); + throw new IllegalStateException("Apk needs to have both Schema.ApkTable.Cols.REPO_ADDRESS and " + + "Schema.ApkTable.Cols.NAME set in order to calculate URL."); } } diff --git a/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java b/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java index 655510cf2..fc8bce7c9 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/ApkProvider.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +@SuppressWarnings("LineLength") public class ApkProvider extends FDroidProvider { private static final String TAG = "ApkProvider"; @@ -88,7 +89,8 @@ public class ApkProvider extends FDroidProvider { return cursorToList(cursor); } - public static Apk findApkFromAnyRepo(Context context, String packageName, int versionCode, String[] projection) { + public static Apk findApkFromAnyRepo(Context context, + String packageName, int versionCode, String[] projection) { final Uri uri = getApkFromAnyRepoUri(packageName, versionCode); return findByUri(context, uri, projection); } @@ -283,7 +285,7 @@ public class ApkProvider extends FDroidProvider { * Intentionally left protected because it will break if apks is larger than * {@link org.fdroid.fdroid.data.ApkProvider#MAX_APKS_TO_QUERY}. Instead of using * this directly, think about using - * {@link org.fdroid.fdroid.data.ApkProvider.Helper#knownApks(android.content.Context, java.util.List, String[])} + * {@link ApkProvider.Helper#knownApks(android.content.Context, java.util.List, String[])} */ static Uri getContentUri(List apks) { return getContentUri().buildUpon() diff --git a/app/src/main/java/org/fdroid/fdroid/data/App.java b/app/src/main/java/org/fdroid/fdroid/data/App.java index cc390449a..9977fe3f4 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/App.java +++ b/app/src/main/java/org/fdroid/fdroid/data/App.java @@ -909,7 +909,7 @@ public class App extends ValueObject implements Comparable, Parcelable { * {@code AndroidManifest.xml}. If {@code targetSdkVersion} is not set, then it is * equal to {@code minSdkVersion} * - * @see <uses-sdk> element + * @see <uses-sdk> */ private static int[] getMinTargetMaxSdkVersions(Context context, String packageName) { int minSdkVersion = Apk.SDK_VERSION_MIN_VALUE; diff --git a/app/src/main/java/org/fdroid/fdroid/data/AppPrefsProvider.java b/app/src/main/java/org/fdroid/fdroid/data/AppPrefsProvider.java index f45f244ff..284c559d1 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/AppPrefsProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/AppPrefsProvider.java @@ -7,14 +7,14 @@ import android.database.Cursor; import android.net.Uri; import android.support.annotation.NonNull; import android.support.annotation.Nullable; - import org.fdroid.fdroid.data.Schema.AppPrefsTable; import org.fdroid.fdroid.data.Schema.AppPrefsTable.Cols; public class AppPrefsProvider extends FDroidProvider { public static final class Helper { - private Helper() { } + private Helper() { + } public static void update(Context context, App app, AppPrefs prefs) { ContentValues values = new ContentValues(3); @@ -37,7 +37,8 @@ public class AppPrefsProvider extends FDroidProvider { @Nullable public static AppPrefs getPrefsOrNull(Context context, App app) { - Cursor cursor = context.getContentResolver().query(getAppUri(app.packageName), Cols.ALL, null, null, null); + Cursor cursor = context.getContentResolver().query(getAppUri(app.packageName), Cols.ALL, + null, null, null); if (cursor == null) { return null; } @@ -114,7 +115,8 @@ public class AppPrefsProvider extends FDroidProvider { } @Override - public Cursor query(Uri uri, String[] projection, String customSelection, String[] selectionArgs, String sortOrder) { + public Cursor query(Uri uri, String[] projection, + String customSelection, String[] selectionArgs, String sortOrder) { if (MATCHER.match(uri) != CODE_SINGLE) { throw new UnsupportedOperationException("Invalid URI for app content provider: " + uri); } diff --git a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java index 5fcc0aa7c..92f06faae 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/AppProvider.java @@ -45,6 +45,7 @@ import java.util.Set; * The same can be said of retrieving a list of {@link App} objects, where the metadata for each app * in the result set should be populated from the repository with the best priority. */ +@SuppressWarnings("LineLength") public class AppProvider extends FDroidProvider { private static final String TAG = "AppProvider"; diff --git a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java index c68440abf..6810fdd48 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/CategoryProvider.java @@ -6,17 +6,17 @@ import android.content.UriMatcher; import android.database.Cursor; import android.net.Uri; import android.support.annotation.NonNull; - +import org.fdroid.fdroid.data.Schema.AppMetadataTable; import org.fdroid.fdroid.data.Schema.CatJoinTable; import org.fdroid.fdroid.data.Schema.CategoryTable; -import org.fdroid.fdroid.data.Schema.AppMetadataTable; -import org.fdroid.fdroid.data.Schema.PackageTable; import org.fdroid.fdroid.data.Schema.CategoryTable.Cols; +import org.fdroid.fdroid.data.Schema.PackageTable; public class CategoryProvider extends FDroidProvider { public static final class Helper { - private Helper() { } + private Helper() { + } public static long ensureExists(Context context, String category) { long id = getCategoryId(context, category); @@ -30,8 +30,9 @@ public class CategoryProvider extends FDroidProvider { } public static long getCategoryId(Context context, String category) { - String[] projection = new String[] {Cols.ROW_ID}; - Cursor cursor = context.getContentResolver().query(getCategoryUri(category), projection, null, null, null); + String[] projection = new String[]{Cols.ROW_ID}; + Cursor cursor = context.getContentResolver().query(getCategoryUri(category), projection, + null, null, null); if (cursor == null) { return 0; } @@ -70,8 +71,10 @@ public class CategoryProvider extends FDroidProvider { public void setOnlyCategoriesWithApps() { // Make sure that metadata from the preferred repository is used to determine if // there is an app present or not. - join(AppMetadataTable.NAME, "app", "app." + AppMetadataTable.Cols.ROW_ID + " = " + CatJoinTable.NAME + "." + CatJoinTable.Cols.APP_METADATA_ID); - join(PackageTable.NAME, "pkg", "pkg." + PackageTable.Cols.PREFERRED_METADATA + " = " + "app." + AppMetadataTable.Cols.ROW_ID); + join(AppMetadataTable.NAME, "app", "app." + AppMetadataTable.Cols.ROW_ID + + " = " + CatJoinTable.NAME + "." + CatJoinTable.Cols.APP_METADATA_ID); + join(PackageTable.NAME, "pkg", "pkg." + PackageTable.Cols.PREFERRED_METADATA + + " = " + "app." + AppMetadataTable.Cols.ROW_ID); } } @@ -151,7 +154,8 @@ public class CategoryProvider extends FDroidProvider { } @Override - public Cursor query(@NonNull Uri uri, String[] projection, String customSelection, String[] selectionArgs, String sortOrder) { + public Cursor query(@NonNull Uri uri, String[] projection, + String customSelection, String[] selectionArgs, String sortOrder) { QuerySelection selection = new QuerySelection(customSelection, selectionArgs); boolean onlyCategoriesWithApps = false; switch (MATCHER.match(uri)) { diff --git a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java index fad99be1e..5a8852668 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/data/DBHelper.java @@ -45,6 +45,7 @@ import org.fdroid.fdroid.data.Schema.RepoTable; import java.util.ArrayList; import java.util.List; +@SuppressWarnings("LineLength") class DBHelper extends SQLiteOpenHelper { private static final String TAG = "DBHelper"; diff --git a/app/src/main/java/org/fdroid/fdroid/data/FDroidProvider.java b/app/src/main/java/org/fdroid/fdroid/data/FDroidProvider.java index 8c341264d..340148a79 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/FDroidProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/FDroidProvider.java @@ -163,6 +163,7 @@ public abstract class FDroidProvider extends ContentProvider { * when all you have is the package name. */ protected static String getPackageIdFromPackageNameQuery() { - return "SELECT " + Schema.PackageTable.Cols.ROW_ID + " FROM " + Schema.PackageTable.NAME + " WHERE " + Schema.PackageTable.Cols.PACKAGE_NAME + " = ?"; + return "SELECT " + Schema.PackageTable.Cols.ROW_ID + " FROM " + Schema.PackageTable.NAME + + " WHERE " + Schema.PackageTable.Cols.PACKAGE_NAME + " = ?"; } } diff --git a/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProvider.java index 13088dcbf..f7ee7ec66 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProvider.java @@ -11,7 +11,6 @@ import android.database.Cursor; import android.net.Uri; import android.support.annotation.Nullable; import android.util.Log; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Schema.InstalledAppTable; @@ -77,7 +76,7 @@ public class InstalledAppProvider extends FDroidProvider { private static final String PROVIDER_NAME = "InstalledAppProvider"; private static final String PATH_SEARCH = "search"; - private static final int CODE_SEARCH = CODE_SINGLE + 1; + private static final int CODE_SEARCH = CODE_SINGLE + 1; private static final UriMatcher MATCHER = new UriMatcher(-1); @@ -100,9 +99,9 @@ public class InstalledAppProvider extends FDroidProvider { public static Uri getSearchUri(String keywords) { return getContentUri().buildUpon() - .appendPath(PATH_SEARCH) - .appendPath(keywords) - .build(); + .appendPath(PATH_SEARCH) + .appendPath(keywords) + .build(); } public static String getApplicationLabel(Context context, String packageName) { @@ -146,7 +145,8 @@ public class InstalledAppProvider extends FDroidProvider { } @Override - public Cursor query(Uri uri, String[] projection, String customSelection, String[] selectionArgs, String sortOrder) { + public Cursor query(Uri uri, String[] projection, + String customSelection, String[] selectionArgs, String sortOrder) { if (sortOrder == null) { sortOrder = Cols.APPLICATION_LABEL; } @@ -170,7 +170,8 @@ public class InstalledAppProvider extends FDroidProvider { throw new UnsupportedOperationException(message); } - Cursor cursor = db().query(getTableName(), projection, selection.getSelection(), selection.getArgs(), null, null, sortOrder); + Cursor cursor = db().query(getTableName(), projection, + selection.getSelection(), selection.getArgs(), null, null, sortOrder); cursor.setNotificationUri(getContext().getContentResolver(), uri); return cursor; } @@ -207,7 +208,8 @@ public class InstalledAppProvider extends FDroidProvider { */ @Override public int update(Uri uri, ContentValues values, String where, String[] whereArgs) { - throw new UnsupportedOperationException("\"Update' not supported for installed appp provider. Instead, you should insert, and it will overwrite the relevant rows if one exists."); + throw new UnsupportedOperationException("\"Update' not supported for installed appp provider." + + " Instead, you should insert, and it will overwrite the relevant rows if one exists."); } /** diff --git a/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java b/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java index 7a1d404c1..0adecc5b5 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java +++ b/app/src/main/java/org/fdroid/fdroid/data/InstalledAppProviderService.java @@ -41,6 +41,7 @@ import rx.subjects.PublishSubject; * {@link #deleteAppFromDb(Context, String)} are both static methods to enable easy testing * of this stuff. */ +@SuppressWarnings("LineLength") public class InstalledAppProviderService extends IntentService { private static final String TAG = "InstalledAppProviderSer"; @@ -93,7 +94,8 @@ public class InstalledAppProviderService extends IntentService { .subscribe(new Action1() { @Override public void call(String packageName) { - getContentResolver().notifyChange(AppProvider.getHighestPriorityMetadataUri(packageName), null); + getContentResolver() + .notifyChange(AppProvider.getHighestPriorityMetadataUri(packageName), null); } }); } diff --git a/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java b/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java index ef4b5dc2b..9eb40417b 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java +++ b/app/src/main/java/org/fdroid/fdroid/data/LoggingQuery.java @@ -19,7 +19,8 @@ import org.fdroid.fdroid.Utils; * LEFT JOIN fdroid_apk ON (fdroid_apk.appId = fdroid_app.rowid) * LEFT JOIN fdroid_repo ON (fdroid_apk.repo = fdroid_repo._id) * LEFT JOIN fdroid_installedApp AS installed ON (installed.appId = fdroid_app.id) - * LEFT JOIN fdroid_apk AS suggestedApk ON (fdroid_app.suggestedVercode = suggestedApk.vercode AND fdroid_app.rowid = suggestedApk.appId) + * LEFT JOIN fdroid_apk AS suggestedApk ON (fdroid_app.suggestedVercode = suggestedApk.vercode + * AND fdroid_app.rowid = suggestedApk.appId) * WHERE * fdroid_repo.isSwap = 0 OR fdroid_repo.isSwap IS NULL * GROUP BY fdroid_app.rowid diff --git a/app/src/main/java/org/fdroid/fdroid/data/PackageProvider.java b/app/src/main/java/org/fdroid/fdroid/data/PackageProvider.java index a12be32c5..49fb6db1f 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/PackageProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/PackageProvider.java @@ -5,14 +5,14 @@ import android.content.Context; import android.content.UriMatcher; import android.database.Cursor; import android.net.Uri; - import org.fdroid.fdroid.data.Schema.PackageTable; import org.fdroid.fdroid.data.Schema.PackageTable.Cols; public class PackageProvider extends FDroidProvider { public static final class Helper { - private Helper() { } + private Helper() { + } public static long ensureExists(Context context, String packageName) { long id = getPackageId(context, packageName); @@ -26,8 +26,9 @@ public class PackageProvider extends FDroidProvider { } public static long getPackageId(Context context, String packageName) { - String[] projection = new String[] {Cols.ROW_ID}; - Cursor cursor = context.getContentResolver().query(getPackageUri(packageName), projection, null, null, null); + String[] projection = new String[]{Cols.ROW_ID}; + Cursor cursor = context.getContentResolver().query(getPackageUri(packageName), projection, + null, null, null); if (cursor == null) { return 0; } @@ -122,7 +123,8 @@ public class PackageProvider extends FDroidProvider { } @Override - public Cursor query(Uri uri, String[] projection, String customSelection, String[] selectionArgs, String sortOrder) { + public Cursor query(Uri uri, String[] projection, + String customSelection, String[] selectionArgs, String sortOrder) { if (MATCHER.match(uri) != CODE_SINGLE) { throw new UnsupportedOperationException("Invalid URI for content provider: " + uri); } diff --git a/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java b/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java index 25da47389..3168783e1 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java +++ b/app/src/main/java/org/fdroid/fdroid/data/QueryBuilder.java @@ -47,7 +47,7 @@ abstract class QueryBuilder { } protected final void appendField(String field, String tableAlias, - String fieldAlias) { + String fieldAlias) { StringBuilder fieldBuilder = new StringBuilder(); @@ -121,17 +121,17 @@ abstract class QueryBuilder { private void joinWithType(String type, String table, String alias, String condition) { tables.append(' ') - .append(type) - .append(" JOIN ") - .append(table); + .append(type) + .append(" JOIN ") + .append(table); if (alias != null) { tables.append(" AS ").append(alias); } tables.append(" ON (") - .append(condition) - .append(')'); + .append(condition) + .append(')'); } private String distinctSql() { @@ -166,6 +166,7 @@ abstract class QueryBuilder { } public String toString() { - return "SELECT " + distinctSql() + fieldsSql() + " FROM " + tablesSql() + whereSql() + groupBySql() + orderBySql() + limitSql(); + return "SELECT " + distinctSql() + fieldsSql() + " FROM " + tablesSql() + + whereSql() + groupBySql() + orderBySql() + limitSql(); } } diff --git a/app/src/main/java/org/fdroid/fdroid/data/RepoPersister.java b/app/src/main/java/org/fdroid/fdroid/data/RepoPersister.java index f13d678eb..abe30a51d 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/RepoPersister.java +++ b/app/src/main/java/org/fdroid/fdroid/data/RepoPersister.java @@ -18,6 +18,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +@SuppressWarnings("LineLength") public class RepoPersister { private static final String TAG = "RepoPersister"; diff --git a/app/src/main/java/org/fdroid/fdroid/data/RepoProvider.java b/app/src/main/java/org/fdroid/fdroid/data/RepoProvider.java index ba00a103c..6bcc7311a 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/RepoProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/RepoProvider.java @@ -10,7 +10,6 @@ import android.net.Uri; import android.support.annotation.Nullable; import android.text.TextUtils; import android.util.Log; - import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Schema.RepoTable; import org.fdroid.fdroid.data.Schema.RepoTable.Cols; @@ -27,7 +26,8 @@ public class RepoProvider extends FDroidProvider { private static final String TAG = "RepoProvider.Helper"; - private Helper() { } + private Helper() { + } /** * Find by the content URI of a repo ({@link RepoProvider#getContentUri(long)}). @@ -54,14 +54,15 @@ public class RepoProvider extends FDroidProvider { * This method decides what repo a URL belongs to by iteratively removing path fragments and * checking if it belongs to a repo or not. It will match the most specific repository which * could serve the file at the given URL. - * + *

* For any given HTTP resource requested by F-Droid, it should belong to a repository. * Whether that resource is an index.jar, an icon, or a .apk file, they all belong to a * repository. Therefore, that repository must exist in the database. The way to find out * which repository a particular URL came from requires some consideration: - * * Repositories can exist at particular paths on a server (e.g. /fdroid/repo) - * * Individual files can exist at a more specific path on the repo (e.g. /fdroid/repo/icons/org.fdroid.fdroid.png) - * + *

  • Repositories can exist at particular paths on a server (e.g. /fdroid/repo) + *
  • Individual files can exist at a more specific path on the repo (e.g. + * /fdroid/repo/icons/org.fdroid.fdroid.png)
  • + *

    * So for a given URL "/fdroid/repo/icons/org.fdroid.fdroid.png" we don't actually know * whether it is for the file "org.fdroid.fdroid.png" at repository "/fdroid/repo/icons" or * the file "icons/org.fdroid.fdroid.png" at the repository at "/fdroid/repo". @@ -212,7 +213,7 @@ public class RepoProvider extends FDroidProvider { * each of the CRUD methods available in the helper class. */ public static Uri insert(Context context, - ContentValues values) { + ContentValues values) { ContentResolver resolver = context.getContentResolver(); Uri uri = RepoProvider.getContentUri(); return resolver.insert(uri, values); @@ -258,7 +259,8 @@ public class RepoProvider extends FDroidProvider { ContentResolver resolver = context.getContentResolver(); final String[] projection = {Cols.LAST_UPDATED}; final String selection = Cols.IN_USE + " = 1"; - Cursor cursor = resolver.query(getContentUri(), projection, selection, null, Cols.LAST_UPDATED + " DESC"); + Cursor cursor = resolver.query(getContentUri(), projection, + selection, null, Cols.LAST_UPDATED + " DESC"); Date lastUpdate = null; if (cursor != null) { @@ -347,7 +349,8 @@ public class RepoProvider extends FDroidProvider { } @Override - public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + public Cursor query(Uri uri, String[] projection, + String selection, String[] selectionArgs, String sortOrder) { if (TextUtils.isEmpty(sortOrder)) { sortOrder = Cols.PRIORITY + " ASC"; @@ -360,7 +363,7 @@ public class RepoProvider extends FDroidProvider { case CODE_SINGLE: selection = (selection == null ? "" : selection + " AND ") + - Cols._ID + " = " + uri.getLastPathSegment(); + Cols._ID + " = " + uri.getLastPathSegment(); break; case CODE_ALL_EXCEPT_SWAP: @@ -372,7 +375,8 @@ public class RepoProvider extends FDroidProvider { throw new UnsupportedOperationException("Invalid URI for repo content provider: " + uri); } - Cursor cursor = db().query(getTableName(), projection, selection, selectionArgs, null, null, sortOrder); + Cursor cursor = db().query(getTableName(), projection, + selection, selectionArgs, null, null, sortOrder); cursor.setNotificationUri(getContext().getContentResolver(), uri); return cursor; } @@ -415,7 +419,8 @@ public class RepoProvider extends FDroidProvider { } private int getMaxPriority() { - Cursor cursor = db().query(RepoTable.NAME, new String[] {"MAX(" + Cols.PRIORITY + ")"}, "COALESCE(" + Cols.IS_SWAP + ", 0) = 0", null, null, null, null); + Cursor cursor = db().query(RepoTable.NAME, new String[]{"MAX(" + Cols.PRIORITY + ")"}, + "COALESCE(" + Cols.IS_SWAP + ", 0) = 0", null, null, null, null); cursor.moveToFirst(); int max = cursor.getInt(0); cursor.close(); @@ -432,7 +437,7 @@ public class RepoProvider extends FDroidProvider { return 0; case CODE_SINGLE: - selection = selection.add(Cols._ID + " = ?", new String[] {uri.getLastPathSegment()}); + selection = selection.add(Cols._ID + " = ?", new String[]{uri.getLastPathSegment()}); break; default: @@ -464,7 +469,8 @@ public class RepoProvider extends FDroidProvider { // to be recalculated. boolean priorityChanged = false; if (values.containsKey(Cols.PRIORITY)) { - Cursor priorityCursor = db().query(getTableName(), new String[]{Cols.PRIORITY}, where, whereArgs, null, null, null); + Cursor priorityCursor = db().query(getTableName(), new String[]{Cols.PRIORITY}, + where, whereArgs, null, null, null); if (priorityCursor.getCount() > 0) { priorityCursor.moveToFirst(); int oldPriority = priorityCursor.getInt(priorityCursor.getColumnIndex(Cols.PRIORITY)); diff --git a/app/src/main/java/org/fdroid/fdroid/data/TempApkProvider.java b/app/src/main/java/org/fdroid/fdroid/data/TempApkProvider.java index e7465e30b..d5a688022 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/TempApkProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/TempApkProvider.java @@ -13,6 +13,7 @@ import java.util.List; /** * This class does all of its operations in a temporary sqlite table. */ +@SuppressWarnings("LineLength") public class TempApkProvider extends ApkProvider { private static final String PROVIDER_NAME = "TempApkProvider"; diff --git a/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java b/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java index 9c9daba22..3c2ed7d2b 100644 --- a/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java +++ b/app/src/main/java/org/fdroid/fdroid/data/TempAppProvider.java @@ -8,9 +8,6 @@ import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.net.Uri; import android.text.TextUtils; - -import java.util.List; - import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.data.Schema.ApkTable; import org.fdroid.fdroid.data.Schema.AppMetadataTable; @@ -18,9 +15,12 @@ import org.fdroid.fdroid.data.Schema.AppMetadataTable.Cols; import org.fdroid.fdroid.data.Schema.CatJoinTable; import org.fdroid.fdroid.data.Schema.PackageTable; +import java.util.List; + /** * This class does all of its operations in a temporary sqlite table. */ +@SuppressWarnings("LineLength") public class TempAppProvider extends AppProvider { /** @@ -94,7 +94,7 @@ public class TempAppProvider extends AppProvider { } private AppQuerySelection queryRepo(long repoId) { - String[] args = new String[] {Long.toString(repoId)}; + String[] args = new String[]{Long.toString(repoId)}; String selection = getTableName() + "." + Cols.REPO_ID + " = ? "; return new AppQuerySelection(selection, args); } @@ -111,7 +111,8 @@ public class TempAppProvider extends AppProvider { TempApkProvider.Helper.init(context); } - public static List findByPackageNames(Context context, List packageNames, long repoId, String[] projection) { + public static List findByPackageNames(Context context, + List packageNames, long repoId, String[] projection) { Uri uri = getAppsUri(packageNames, repoId); Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null); return AppProvider.Helper.cursorToList(cursor); @@ -167,7 +168,8 @@ public class TempAppProvider extends AppProvider { values.remove(Cols.Package.PACKAGE_NAME); if (values.containsKey(Cols.ForWriting.Categories.CATEGORIES)) { - String[] categories = Utils.parseCommaSeparatedString(values.getAsString(Cols.ForWriting.Categories.CATEGORIES)); + String[] categories = Utils.parseCommaSeparatedString( + values.getAsString(Cols.ForWriting.Categories.CATEGORIES)); ensureCategories(categories, packageName, repoId); values.remove(Cols.ForWriting.Categories.CATEGORIES); } @@ -192,7 +194,8 @@ public class TempAppProvider extends AppProvider { } @Override - public Cursor query(Uri uri, String[] projection, String customSelection, String[] selectionArgs, String sortOrder) { + public Cursor query(Uri uri, String[] projection, + String customSelection, String[] selectionArgs, String sortOrder) { AppQuerySelection selection = new AppQuerySelection(customSelection, selectionArgs); switch (MATCHER.match(uri)) { case APPS: diff --git a/app/src/main/java/org/fdroid/fdroid/installer/ApkCache.java b/app/src/main/java/org/fdroid/fdroid/installer/ApkCache.java index edf36a078..08c18a5e2 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/ApkCache.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/ApkCache.java @@ -23,9 +23,7 @@ import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageInfo; import android.net.Uri; - import com.nostra13.universalimageloader.utils.StorageUtils; - import org.apache.commons.io.FileUtils; import org.fdroid.fdroid.Hasher; import org.fdroid.fdroid.data.Apk; @@ -45,7 +43,8 @@ public class ApkCache { * verify the hash after copying. This is because we are copying from an installed apk, which * other apps do not have permission to modify. */ - public static SanitizedFile copyInstalledApkToFiles(Context context, PackageInfo packageInfo) throws IOException { + public static SanitizedFile copyInstalledApkToFiles(Context context, PackageInfo packageInfo) + throws IOException { ApplicationInfo appInfo = packageInfo.applicationInfo; CharSequence name = context.getPackageManager().getApplicationLabel(appInfo); String apkFileName = name + "-" + packageInfo.versionName + ".apk"; @@ -60,7 +59,8 @@ public class ApkCache { */ public static SanitizedFile copyApkFromCacheToFiles(Context context, File apkFile, Apk expectedApk) throws IOException { - App app = AppProvider.Helper.findHighestPriorityMetadata(context.getContentResolver(), expectedApk.packageName); + App app = AppProvider.Helper.findHighestPriorityMetadata(context.getContentResolver(), + expectedApk.packageName); String name = app == null ? expectedApk.packageName : app.name; String apkFileName = name + "-" + expectedApk.versionName + ".apk"; return copyApkToFiles(context, apkFile, apkFileName, true, expectedApk.hash, expectedApk.hashType); @@ -68,12 +68,14 @@ public class ApkCache { /** * Copy an APK from {@param apkFile} to our internal files directory for 20 minutes. + * * @param verifyHash If the file was just downloaded, then you should mark this as true and * request the file to be verified once it has finished copying. Otherwise, * if the app was installed from part of the system where it can't be tampered * with (e.g. installed apks on disk) then */ - private static SanitizedFile copyApkToFiles(Context context, File apkFile, String destinationName, boolean verifyHash, String hash, String hashType) + private static SanitizedFile copyApkToFiles(Context context, File apkFile, String destinationName, + boolean verifyHash, String hash, String hashType) throws IOException { SanitizedFile sanitizedApkFile = new SanitizedFile(context.getFilesDir(), destinationName); diff --git a/app/src/main/java/org/fdroid/fdroid/installer/ApkSignatureVerifier.java b/app/src/main/java/org/fdroid/fdroid/installer/ApkSignatureVerifier.java index fd4a9d789..84d3350d8 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/ApkSignatureVerifier.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/ApkSignatureVerifier.java @@ -24,7 +24,6 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.Signature; - import org.acra.ACRA; import org.fdroid.fdroid.Utils; import org.spongycastle.util.encoders.Hex; @@ -54,7 +53,8 @@ class ApkSignatureVerifier { public boolean hasFDroidSignature(File apkFile) { if (!apkFile.exists()) { ACRA.getErrorReporter().handleException( - new Exception("Failed to install Privileged Extension, because " + apkFile.getAbsolutePath() + " does not exist."), + new Exception("Failed to install Privileged Extension, because " + apkFile.getAbsolutePath() + + " does not exist."), false ); @@ -77,7 +77,8 @@ class ApkSignatureVerifier { private byte[] getApkSignature(File apkFile) { final String pkgPath = apkFile.getAbsolutePath(); if (!apkFile.exists()) { - throw new IllegalArgumentException("Could not find APK at \"" + pkgPath + "\" when checking for signature."); + throw new IllegalArgumentException("Could not find APK at \"" + pkgPath + + "\" when checking for signature."); } PackageInfo pkgInfo = pm.getPackageArchiveInfo(pkgPath, PackageManager.GET_SIGNATURES); diff --git a/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java b/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java index 9c53800f2..ba20934df 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/DefaultInstallerActivity.java @@ -30,7 +30,6 @@ import android.os.Build; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.util.Log; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.Apk; @@ -40,8 +39,10 @@ import org.fdroid.fdroid.data.Apk; public class DefaultInstallerActivity extends FragmentActivity { private static final String TAG = "DefaultInstallerActivit"; - static final String ACTION_INSTALL_PACKAGE = "org.fdroid.fdroid.installer.DefaultInstaller.action.INSTALL_PACKAGE"; - static final String ACTION_UNINSTALL_PACKAGE = "org.fdroid.fdroid.installer.DefaultInstaller.action.UNINSTALL_PACKAGE"; + static final String ACTION_INSTALL_PACKAGE + = "org.fdroid.fdroid.installer.DefaultInstaller.action.INSTALL_PACKAGE"; + static final String ACTION_UNINSTALL_PACKAGE + = "org.fdroid.fdroid.installer.DefaultInstaller.action.UNINSTALL_PACKAGE"; private static final int REQUEST_CODE_INSTALL = 0; private static final int REQUEST_CODE_UNINSTALL = 1; diff --git a/app/src/main/java/org/fdroid/fdroid/installer/InstallManagerService.java b/app/src/main/java/org/fdroid/fdroid/installer/InstallManagerService.java index c429d139c..b228a2fea 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/InstallManagerService.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/InstallManagerService.java @@ -62,6 +62,7 @@ import java.io.IOException; * * @see APK Expansion Files */ +@SuppressWarnings("LineLength") public class InstallManagerService extends Service { private static final String TAG = "InstallManagerService"; diff --git a/app/src/main/java/org/fdroid/fdroid/installer/Installer.java b/app/src/main/java/org/fdroid/fdroid/installer/Installer.java index aa0805648..45f63ce11 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/Installer.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/Installer.java @@ -45,6 +45,7 @@ import java.io.IOException; /** * Handles the actual install process. Subclasses implement the details. */ +@SuppressWarnings("LineLength") public abstract class Installer { private static final String TAG = "Installer"; diff --git a/app/src/main/java/org/fdroid/fdroid/installer/PrivilegedInstaller.java b/app/src/main/java/org/fdroid/fdroid/installer/PrivilegedInstaller.java index 93b077ec9..d745dbe8a 100644 --- a/app/src/main/java/org/fdroid/fdroid/installer/PrivilegedInstaller.java +++ b/app/src/main/java/org/fdroid/fdroid/installer/PrivilegedInstaller.java @@ -66,8 +66,10 @@ public class PrivilegedInstaller extends Installer { private static final String TAG = "PrivilegedInstaller"; - private static final String PRIVILEGED_EXTENSION_SERVICE_INTENT = "org.fdroid.fdroid.privileged.IPrivilegedService"; - public static final String PRIVILEGED_EXTENSION_PACKAGE_NAME = "org.fdroid.fdroid.privileged"; + private static final String PRIVILEGED_EXTENSION_SERVICE_INTENT + = "org.fdroid.fdroid.privileged.IPrivilegedService"; + public static final String PRIVILEGED_EXTENSION_PACKAGE_NAME + = "org.fdroid.fdroid.privileged"; public static final int IS_EXTENSION_INSTALLED_NO = 0; public static final int IS_EXTENSION_INSTALLED_YES = 1; diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java b/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java index 5d0ab57eb..70d0834ea 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoKeyStore.java @@ -54,6 +54,7 @@ import kellinwood.security.zipsigner.ZipSigner; // TODO Address exception handling in a uniform way throughout +@SuppressWarnings("LineLength") public final class LocalRepoKeyStore { private static final String TAG = "LocalRepoKeyStore"; diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoManager.java b/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoManager.java index 7d66f08a9..e7be8e674 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoManager.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/LocalRepoManager.java @@ -54,6 +54,7 @@ import java.util.jar.JarOutputStream; * This class deals specifically with the webroot side of things, ensuring we have a valid index.jar * and the relevant .apk and icon files available. */ +@SuppressWarnings("LineLength") public final class LocalRepoManager { private static final String TAG = "LocalRepoManager"; diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/SwapService.java b/app/src/main/java/org/fdroid/fdroid/localrepo/SwapService.java index ec0619e1b..ce19186dd 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/SwapService.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/SwapService.java @@ -65,6 +65,7 @@ import rx.schedulers.Schedulers; * Central service which manages all of the different moving parts of swap which are required * to enable p2p swapping of apps. */ +@SuppressWarnings("LineLength") public class SwapService extends Service { private static final String TAG = "SwapService"; diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothFinder.java b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothFinder.java index 82694423a..8c024e3a5 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothFinder.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothFinder.java @@ -16,6 +16,7 @@ import rx.Subscriber; import rx.functions.Action0; import rx.subscriptions.Subscriptions; +@SuppressWarnings("LineLength") final class BluetoothFinder extends PeerFinder { public static Observable createBluetoothObservable(final Context context) { diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java index 356f15669..5cc75f8b8 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BluetoothPeer.java @@ -31,7 +31,9 @@ public class BluetoothPeer implements Peer { @Override public boolean equals(Object peer) { - return peer != null && peer instanceof BluetoothPeer && ((BluetoothPeer) peer).device.getAddress().equals(device.getAddress()); + return peer != null + && peer instanceof BluetoothPeer + && ((BluetoothPeer) peer).device.getAddress().equals(device.getAddress()); } @Override diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java index 587cb91bb..d01c25696 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/peers/BonjourFinder.java @@ -19,6 +19,7 @@ import rx.Subscriber; import rx.functions.Action0; import rx.subscriptions.Subscriptions; +@SuppressWarnings("LineLength") final class BonjourFinder extends PeerFinder implements ServiceListener { public static Observable createBonjourObservable(final Context context) { diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/type/BluetoothSwap.java b/app/src/main/java/org/fdroid/fdroid/localrepo/type/BluetoothSwap.java index 8b09c4c6f..b81a3fb6e 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/type/BluetoothSwap.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/type/BluetoothSwap.java @@ -13,6 +13,7 @@ import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.localrepo.SwapService; import org.fdroid.fdroid.net.bluetooth.BluetoothServer; +@SuppressWarnings("LineLength") public final class BluetoothSwap extends SwapType { private static final String TAG = "BluetoothSwap"; diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/type/BonjourBroadcast.java b/app/src/main/java/org/fdroid/fdroid/localrepo/type/BonjourBroadcast.java index 9d5b56af4..8a8c467de 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/type/BonjourBroadcast.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/type/BonjourBroadcast.java @@ -3,20 +3,18 @@ package org.fdroid.fdroid.localrepo.type; import android.content.Context; import android.support.annotation.Nullable; import android.util.Log; - import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.localrepo.SwapService; +import javax.jmdns.JmDNS; +import javax.jmdns.ServiceInfo; import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.HashMap; -import javax.jmdns.JmDNS; -import javax.jmdns.ServiceInfo; - /** * Sends a {@link SwapService#BONJOUR_STATE_CHANGE} broadcasts when starting, started or stopped. */ @@ -38,7 +36,8 @@ public class BonjourBroadcast extends SwapType { InetAddress address = getDeviceAddress(); if (address == null) { - Log.e(TAG, "Starting Bonjour service, but couldn't ascertain IP address. Seems we are not connected to a network."); + Log.e(TAG, "Starting Bonjour service, but couldn't ascertain IP address." + + " Seems we are not connected to a network."); return; } @@ -103,7 +102,8 @@ public class BonjourBroadcast extends SwapType { if (FDroidApp.ipAddressString != null) { try { return InetAddress.getByName(FDroidApp.ipAddressString); - } catch (UnknownHostException ignored) { } + } catch (UnknownHostException ignored) { + } } return null; diff --git a/app/src/main/java/org/fdroid/fdroid/localrepo/type/WifiSwap.java b/app/src/main/java/org/fdroid/fdroid/localrepo/type/WifiSwap.java index 8229f692f..60cbece5f 100644 --- a/app/src/main/java/org/fdroid/fdroid/localrepo/type/WifiSwap.java +++ b/app/src/main/java/org/fdroid/fdroid/localrepo/type/WifiSwap.java @@ -26,6 +26,7 @@ import rx.functions.Action1; import rx.functions.Func2; import rx.schedulers.Schedulers; +@SuppressWarnings("LineLength") public class WifiSwap extends SwapType { private static final String TAG = "WifiSwap"; diff --git a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java index f44d50334..00f237a3e 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/Downloader.java +++ b/app/src/main/java/org/fdroid/fdroid/net/Downloader.java @@ -143,7 +143,8 @@ public abstract class Downloader { * keeping track of the number of bytes that have flowed through for the * progress counter. */ - private void copyInputToOutputStream(InputStream input, int bufferSize, OutputStream output) throws IOException, InterruptedException { + private void copyInputToOutputStream(InputStream input, int bufferSize, OutputStream output) + throws IOException, InterruptedException { Timer timer = new Timer(); try { bytesRead = 0; diff --git a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java index 86ec8862a..a234b6d1d 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java +++ b/app/src/main/java/org/fdroid/fdroid/net/DownloaderService.java @@ -131,13 +131,15 @@ public class DownloaderService extends Service { Utils.debugLog(TAG, "Cancelling download of " + uriString); Integer whatToRemove = uriString.hashCode(); if (serviceHandler.hasMessages(whatToRemove)) { - Utils.debugLog(TAG, "Removing download with ID of " + whatToRemove + " from service handler, then sending interrupted event."); + Utils.debugLog(TAG, "Removing download with ID of " + whatToRemove + + " from service handler, then sending interrupted event."); serviceHandler.removeMessages(whatToRemove); sendBroadcast(intent.getData(), Downloader.ACTION_INTERRUPTED); } else if (isActive(uriString)) { downloader.cancelDownload(); } else { - Utils.debugLog(TAG, "ACTION_CANCEL called on something not queued or running (expected to find message with ID of " + whatToRemove + " in queue)."); + Utils.debugLog(TAG, "ACTION_CANCEL called on something not queued or running" + + " (expected to find message with ID of " + whatToRemove + " in queue)."); } } else if (ACTION_QUEUE.equals(intent.getAction())) { Message msg = serviceHandler.obtainMessage(); diff --git a/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java b/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java index 7d893287d..dead4e7ef 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java +++ b/app/src/main/java/org/fdroid/fdroid/net/LocalHTTPD.java @@ -93,7 +93,8 @@ public class LocalHTTPD extends NanoHTTPD { session.parseBody(new HashMap()); } catch (IOException e) { Log.e(TAG, "An error occured while parsing the POST body", e); - return new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, "Internal server error, check logcat on server for details."); + return new Response(Response.Status.INTERNAL_ERROR, MIME_PLAINTEXT, + "Internal server error, check logcat on server for details."); } catch (ResponseException re) { return new Response(re.getStatus(), MIME_PLAINTEXT, re.getMessage()); } @@ -108,8 +109,10 @@ public class LocalHTTPD extends NanoHTTPD { switch (uri.getPath()) { case "/request-swap": if (!session.getParms().containsKey("repo")) { - Log.e(TAG, "Malformed /request-swap request to local repo HTTP server. Should have posted a 'repo' parameter."); - return new Response(Response.Status.BAD_REQUEST, MIME_PLAINTEXT, "Requires 'repo' parameter to be posted."); + Log.e(TAG, "Malformed /request-swap request to local repo HTTP server." + + " Should have posted a 'repo' parameter."); + return new Response(Response.Status.BAD_REQUEST, MIME_PLAINTEXT, + "Requires 'repo' parameter to be posted."); } requestSwap(session.getParms().get("repo")); return new Response(Response.Status.OK, MIME_PLAINTEXT, "Swap request received."); diff --git a/app/src/main/java/org/fdroid/fdroid/net/WifiStateChangeService.java b/app/src/main/java/org/fdroid/fdroid/net/WifiStateChangeService.java index 43a34177f..1b41743ff 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/WifiStateChangeService.java +++ b/app/src/main/java/org/fdroid/fdroid/net/WifiStateChangeService.java @@ -41,6 +41,7 @@ import java.util.Locale; * changed. Having the {@code Thread} also makes it easy to kill work * that is in progress. */ +@SuppressWarnings("LineLength") public class WifiStateChangeService extends IntentService { private static final String TAG = "WifiStateChangeService"; diff --git a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothClient.java b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothClient.java index 44ec1a0d3..66cca3643 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothClient.java +++ b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothClient.java @@ -39,7 +39,7 @@ public class BluetoothClient { throw e1; /* - Log.e(TAG, "There was an error while establishing Bluetooth connection. Falling back to using reflection..."); + Log.e(TAG, "There was an error while establishing Bluetooth connection. Falling back to reflection"); Class clazz = socket.getRemoteDevice().getClass(); Class[] paramTypes = new Class[]{Integer.TYPE}; diff --git a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java index e934b909d..7ba308a3f 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java +++ b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/BluetoothServer.java @@ -26,6 +26,7 @@ import fi.iki.elonen.NanoHTTPD; * Act as a layer on top of LocalHTTPD server, by forwarding requests served * over bluetooth to that server. */ +@SuppressWarnings("LineLength") public class BluetoothServer extends Thread { private static final String TAG = "BluetoothServer"; diff --git a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Request.java b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Request.java index 509a9f74d..4523eed83 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Request.java +++ b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Request.java @@ -18,7 +18,7 @@ public final class Request { public interface Methods { String HEAD = "HEAD"; - String GET = "GET"; + String GET = "GET"; } private String method; @@ -73,10 +73,12 @@ public final class Request { Utils.debugLog(TAG, "Read " + headers.size() + " headers"); if (method.equals(Methods.HEAD)) { - Utils.debugLog(TAG, "Request was a " + Methods.HEAD + " request, not including anything other than headers and status..."); + Utils.debugLog(TAG, "Request was a " + Methods.HEAD + + " request, not including anything other than headers and status..."); return new Response(responseCode, headers); } - Utils.debugLog(TAG, "Request was a " + Methods.GET + " request, so including content stream in response..."); + Utils.debugLog(TAG, "Request was a " + Methods.GET + + " request, so including content stream in response..."); return new Response(responseCode, headers, connection.getInputStream()); } @@ -102,8 +104,8 @@ public final class Request { return false; } - method = parts[0].toUpperCase(Locale.ENGLISH); - path = parts[1]; + method = parts[0].toUpperCase(Locale.ENGLISH); + path = parts[1]; headers = readHeaders(); return true; } diff --git a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Response.java b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Response.java index 6ec969a29..359a81b05 100644 --- a/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Response.java +++ b/app/src/main/java/org/fdroid/fdroid/net/bluetooth/httpish/Response.java @@ -1,7 +1,6 @@ package org.fdroid.fdroid.net.bluetooth.httpish; import android.util.Log; - import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.net.bluetooth.BluetoothConnection; import org.fdroid.fdroid.net.bluetooth.FileDetails; @@ -99,7 +98,8 @@ public class Response { public InputStream toContentStream() throws UnsupportedOperationException { if (contentStream == null) { - throw new UnsupportedOperationException("This kind of response doesn't have a content stream. Did you perform a HEAD request instead of a GET request?"); + throw new UnsupportedOperationException("This kind of response doesn't have a content stream." + + " Did you perform a HEAD request instead of a GET request?"); } return contentStream; } @@ -136,7 +136,8 @@ public class Response { private int fileSize = -1; private String etag; - public Builder() { } + public Builder() { + } public Builder(InputStream contentStream) { this.contentStream = contentStream; diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/install/InstallExtension.java b/app/src/main/java/org/fdroid/fdroid/privileged/install/InstallExtension.java index 773dc738a..09a35c136 100644 --- a/app/src/main/java/org/fdroid/fdroid/privileged/install/InstallExtension.java +++ b/app/src/main/java/org/fdroid/fdroid/privileged/install/InstallExtension.java @@ -37,6 +37,7 @@ import eu.chainfire.libsuperuser.Shell; * http://omerjerk.in/2014/08/how-to-install-an-app-to-system-partition/ * https://github.com/omerjerk/RemoteDroid/blob/master/app/src/main/java/in/omerjerk/remotedroid/app/MainActivity.java */ +@SuppressWarnings("LineLength") abstract class InstallExtension { final Context context; diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java b/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java index 95fc23076..0119f079a 100644 --- a/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java +++ b/app/src/main/java/org/fdroid/fdroid/privileged/views/AppSecurityPermissions.java @@ -42,10 +42,9 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; - -import org.fdroid.fdroid.R; import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.Preferences.Theme; +import org.fdroid.fdroid.R; import java.text.Collator; import java.util.ArrayList; @@ -70,9 +69,9 @@ import java.util.Set; * Based on AOSP core/java/android/widget/AppSecurityPermissions * latest included commit: a3f68ef2f6811cf72f1282214c0883db5a30901d *

    - * To update this file: - * - Open https://github.com/android/platform_frameworks_base/commits/master/core/java/android/widget/AppSecurityPermissions.java - * - Start from latest included commit and include changes until the newest commit with care + * To update this file, Start from latest included commit and include changes + * until the newest commit with care: + * github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/AppSecurityPermissions.java */ public class AppSecurityPermissions { @@ -92,6 +91,7 @@ public class AppSecurityPermissions { // PermissionGroupInfo implements Parcelable but its Parcel constructor is private and thus cannot be extended. @SuppressLint("ParcelCreator") + @SuppressWarnings("LineLength") static class MyPermissionGroupInfo extends PermissionGroupInfo { CharSequence label; @@ -402,8 +402,8 @@ public class AppSecurityPermissions { } } - private PermissionItemView getPermissionItemView(MyPermissionGroupInfo grp, - MyPermissionInfo perm, boolean first, CharSequence newPermPrefix) { + private PermissionItemView getPermissionItemView(MyPermissionGroupInfo grp, MyPermissionInfo perm, + boolean first, CharSequence newPermPrefix) { PermissionItemView permView = (PermissionItemView) inflater.inflate( Build.VERSION.SDK_INT >= 17 && (perm.flags & PermissionInfo.FLAG_COSTS_MONEY) != 0 diff --git a/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java b/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java index 027677d53..c66f4499c 100644 --- a/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/privileged/views/InstallConfirmActivity.java @@ -36,11 +36,9 @@ import android.widget.Button; import android.widget.ImageView; import android.widget.TabHost; import android.widget.TextView; - import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; - import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.Apk; @@ -119,7 +117,8 @@ public class InstallConfirmActivity extends FragmentActivity implements OnCancel scrollView.addView(perms.getPermissionsView( AppSecurityPermissions.WHICH_NEW)); } else { - throw new RuntimeException("This should not happen. No new permissions were found but InstallConfirmActivity has been started!"); + throw new RuntimeException("This should not happen. No new permissions were found" + + " but InstallConfirmActivity has been started!"); } adapter.addTab(tabHost.newTabSpec(TAB_ID_NEW).setIndicator( getText(R.string.newPerms)), scrollView); @@ -191,7 +190,8 @@ public class InstallConfirmActivity extends FragmentActivity implements OnCancel intent = getIntent(); Uri uri = intent.getData(); Apk apk = ApkProvider.Helper.findByUri(this, uri, Schema.ApkTable.Cols.ALL); - app = AppProvider.Helper.findSpecificApp(getContentResolver(), apk.packageName, apk.repoId, Schema.AppMetadataTable.Cols.ALL); + app = AppProvider.Helper.findSpecificApp(getContentResolver(), + apk.packageName, apk.repoId, Schema.AppMetadataTable.Cols.ALL); appDiff = new AppDiff(getPackageManager(), apk); diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index 0b6c0220d..491e53d24 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -53,6 +53,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; +@SuppressWarnings("LineLength") public class AppDetailsRecyclerViewAdapter extends RecyclerView.Adapter { diff --git a/app/src/main/java/org/fdroid/fdroid/views/BannerUpdatingRepos.java b/app/src/main/java/org/fdroid/fdroid/views/BannerUpdatingRepos.java index a5eff101f..81d3e8d1c 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/BannerUpdatingRepos.java +++ b/app/src/main/java/org/fdroid/fdroid/views/BannerUpdatingRepos.java @@ -8,7 +8,6 @@ import android.support.v4.content.LocalBroadcastManager; import android.util.AttributeSet; import android.view.Gravity; import android.view.View; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; @@ -53,7 +52,8 @@ public class BannerUpdatingRepos extends android.support.v7.widget.AppCompatText return; } - LocalBroadcastManager.getInstance(getContext()).registerReceiver(onRepoFeedback, new IntentFilter(UpdateService.LOCAL_ACTION_STATUS)); + LocalBroadcastManager.getInstance(getContext()).registerReceiver(onRepoFeedback, + new IntentFilter(UpdateService.LOCAL_ACTION_STATUS)); setBannerIsVisible(UpdateService.isUpdating()); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/LinearLayoutManagerSnapHelper.java b/app/src/main/java/org/fdroid/fdroid/views/LinearLayoutManagerSnapHelper.java index a461c4416..8ca0d88cb 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/LinearLayoutManagerSnapHelper.java +++ b/app/src/main/java/org/fdroid/fdroid/views/LinearLayoutManagerSnapHelper.java @@ -7,6 +7,7 @@ import android.support.v7.widget.OrientationHelper; import android.support.v7.widget.RecyclerView; import android.view.View; +@SuppressWarnings("LineLength") public class LinearLayoutManagerSnapHelper extends LinearSnapHelper { private View lastSavedTarget; diff --git a/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java b/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java index bb2b7e7ea..1f83b82d3 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ManageReposActivity.java @@ -50,7 +50,6 @@ import android.widget.EditText; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; - import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; @@ -70,6 +69,7 @@ import java.net.URISyntaxException; import java.net.URL; import java.util.Locale; +@SuppressWarnings("LineLength") public class ManageReposActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks, RepoAdapter.EnabledListener { private static final String TAG = "ManageReposActivity"; @@ -191,9 +191,9 @@ public class ManageReposActivity extends AppCompatActivity implements LoaderMana * Utility class to encapsulate the process of adding a new repo (or an existing one, * depending on if the incoming address is the same as a previous repo). It is responsible * for managing the lifecycle of adding a repo: - * * Showing the add dialog - * * Deciding whether to add a new repo or update an existing one - * * Search for repos at common suffixes (/, /fdroid/repo, /repo) + *

  • Showing the add dialog + *
  • Deciding whether to add a new repo or update an existing one + *
  • Search for repos at common suffixes (/, /fdroid/repo, /repo) */ private class AddRepo { @@ -314,10 +314,12 @@ public class ManageReposActivity extends AppCompatActivity implements LoaderMana final TextWatcher textChangedListener = new TextWatcher() { @Override - public void beforeTextChanged(CharSequence s, int start, int count, int after) { } + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + } @Override - public void onTextChanged(CharSequence s, int start, int before, int count) { } + public void onTextChanged(CharSequence s, int start, int before, int count) { + } @Override public void afterTextChanged(Editable s) { @@ -557,7 +559,7 @@ public class ManageReposActivity extends AppCompatActivity implements LoaderMana * Some basic sanitization of URLs, so that two URLs which have the same semantic meaning * are represented by the exact same string by F-Droid. This will help to make sure that, * e.g. "http://10.0.1.50" and "http://10.0.1.50/" are not two different repositories. - * + *

    * Currently it normalizes the path so that "/./" are removed and "test/../" is collapsed. * This is done using {@link URI#normalize()}. It also removes multiple consecutive forward * slashes in the path and replaces them with one. Finally, it removes trailing slashes. diff --git a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java index 736655d2e..d12623aa1 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/RepoDetailsActivity.java @@ -406,7 +406,8 @@ public class RepoDetailsActivity extends ActionBarActivity { } else { - Toast.makeText(RepoDetailsActivity.this, R.string.repo_error_empty_username, Toast.LENGTH_LONG).show(); + Toast.makeText(RepoDetailsActivity.this, R.string.repo_error_empty_username, + Toast.LENGTH_LONG).show(); } } }); diff --git a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java index f1a82d46a..e82b36d46 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/ScreenShotsRecyclerViewAdapter.java @@ -1,6 +1,7 @@ package org.fdroid.fdroid.views; import android.content.Context; +import android.content.res.Resources; import android.graphics.Bitmap; import android.support.v4.view.ViewCompat; import android.support.v7.widget.RecyclerView; @@ -16,7 +17,8 @@ import com.nostra13.universalimageloader.core.assist.ImageScaleType; import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.App; -public class ScreenShotsRecyclerViewAdapter extends RecyclerView.Adapter implements LinearLayoutManagerSnapHelper.LinearSnapHelperListener { +public class ScreenShotsRecyclerViewAdapter extends RecyclerView.Adapter + implements LinearLayoutManagerSnapHelper.LinearSnapHelperListener { private final String[] screenshots; private final DisplayImageOptions displayImageOptions; private View selectedView; @@ -28,8 +30,9 @@ public class ScreenShotsRecyclerViewAdapter extends RecyclerView.Adapter, CategoryTextWatcher.SearchTermsChangedListener { +public class AppListActivity extends AppCompatActivity implements LoaderManager.LoaderCallbacks, + CategoryTextWatcher.SearchTermsChangedListener { - public static final String EXTRA_CATEGORY = "org.fdroid.fdroid.views.apps.AppListActivity.EXTRA_CATEGORY"; - public static final String EXTRA_SEARCH_TERMS = "org.fdroid.fdroid.views.apps.AppListActivity.EXTRA_SEARCH_TERMS"; + public static final String EXTRA_CATEGORY + = "org.fdroid.fdroid.views.apps.AppListActivity.EXTRA_CATEGORY"; + public static final String EXTRA_SEARCH_TERMS + = "org.fdroid.fdroid.views.apps.AppListActivity.EXTRA_SEARCH_TERMS"; private RecyclerView appView; private AppListAdapter appAdapter; diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListAdapter.java index 126202ced..f2651b065 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListAdapter.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.database.Cursor; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.App; @@ -26,7 +25,8 @@ class AppListAdapter extends RecyclerView.Adapter { @Override public AppListItemController onCreateViewHolder(ViewGroup parent, int viewType) { - return new AppListItemController(activity, activity.getLayoutInflater().inflate(R.layout.app_list_item, parent, false)); + return new AppListItemController(activity, activity.getLayoutInflater() + .inflate(R.layout.app_list_item, parent, false)); } @Override diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java index 0b4802d47..9c2d32c71 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/AppListItemController.java @@ -46,6 +46,7 @@ import java.io.File; import java.util.Iterator; // TODO: Support cancelling of downloads by tapping the install button a second time. +@SuppressWarnings("LineLength") public class AppListItemController extends RecyclerView.ViewHolder { private static final String TAG = "AppListItemController"; diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/CategorySpan.java b/app/src/main/java/org/fdroid/fdroid/views/apps/CategorySpan.java index a864c483b..628c65325 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/CategorySpan.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/CategorySpan.java @@ -10,7 +10,6 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; import android.text.style.ReplacementSpan; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.views.categories.CategoryController; @@ -74,7 +73,8 @@ public class CategorySpan extends ReplacementSpan { } @Override - public void draw(@NonNull Canvas canvas, CharSequence text, int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) { + public void draw(@NonNull Canvas canvas, CharSequence text, + int start, int end, float x, int top, int y, int bottom, @NonNull Paint paint) { CharSequence categoryName = getCategoryName(text, start, end); if (categoryName == null) { return; @@ -94,7 +94,8 @@ public class CategorySpan extends ReplacementSpan { canvas.save(); canvas.translate(x, bottom - height + TEXT_BELOW_PADDING * density); - RectF backgroundRect = new RectF(0, 0, iconBackgroundSize + textLeadingPadding + textWidth + textTrailingPadding, height); + RectF backgroundRect = new RectF(0, 0, iconBackgroundSize + textLeadingPadding + + textWidth + textTrailingPadding, height); // The shadow below the entire category chip. canvas.save(); diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/CategoryTextWatcher.java b/app/src/main/java/org/fdroid/fdroid/views/apps/CategoryTextWatcher.java index 2d943cfae..eb7cd5e78 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/CategoryTextWatcher.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/CategoryTextWatcher.java @@ -10,17 +10,16 @@ import android.text.Spanned; import android.text.TextWatcher; import android.text.style.TtsSpan; import android.widget.EditText; - import org.fdroid.fdroid.R; /** * The search input treats text before the first colon as a category name. Text after this colon * (or all text if there is no colon) is the free text search terms. * The behaviour of this search input is: - * * Replacing anything before the first colon with a {@link CategorySpan} that renders a "Chip" - * including an icon representing "category" and the name of the category. - * * Removing the trailing ":" from a category chip will cause it to remove the entire category - * from the input. + * * Replacing anything before the first colon with a {@link CategorySpan} that renders a "Chip" + * including an icon representing "category" and the name of the category. + * * Removing the trailing ":" from a category chip will cause it to remove the entire category + * from the input. */ public class CategoryTextWatcher implements TextWatcher { @@ -35,7 +34,8 @@ public class CategoryTextWatcher implements TextWatcher { private int removeTo = -1; private boolean requiresSpanRecalculation = false; - public CategoryTextWatcher(final Context context, final EditText widget, final SearchTermsChangedListener listener) { + public CategoryTextWatcher(final Context context, final EditText widget, + final SearchTermsChangedListener listener) { this.context = context; this.widget = widget; this.listener = listener; @@ -75,8 +75,10 @@ public class CategoryTextWatcher implements TextWatcher { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { boolean addingOrReplacing = count > 0; - boolean addingColon = addingOrReplacing && s.subSequence(start, start + count).toString().indexOf(':') >= 0; - boolean addingFirstColon = addingColon && s.subSequence(0, start).toString().indexOf(':') == -1; + boolean addingColon = addingOrReplacing + && s.subSequence(start, start + count).toString().indexOf(':') >= 0; + boolean addingFirstColon = addingColon + && s.subSequence(0, start).toString().indexOf(':') == -1; if (addingFirstColon) { requiresSpanRecalculation = true; } @@ -99,7 +101,8 @@ public class CategoryTextWatcher implements TextWatcher { int colonIndex = searchText.toString().indexOf(':'); String category = colonIndex == -1 ? null : searchText.subSequence(0, colonIndex).toString(); - String searchTerms = searchText.subSequence(colonIndex == -1 ? 0 : colonIndex + 1, searchText.length()).toString(); + String searchTerms = searchText.subSequence(colonIndex == -1 ? 0 : colonIndex + 1, + searchText.length()).toString(); listener.onSearchTermsChanged(category, searchTerms); } @@ -140,7 +143,8 @@ public class CategoryTextWatcher implements TextWatcher { // For accessibility reasons, make this more clear to screen readers that the // span we just added semantically represents a category. CharSequence categoryName = textToSpannify.subSequence(0, colonIndex); - TtsSpan ttsSpan = new TtsSpan.TextBuilder(context.getString(R.string.tts_category_name, categoryName)).build(); + TtsSpan ttsSpan = new TtsSpan.TextBuilder(context.getString(R.string.tts_category_name, + categoryName)).build(); textToSpannify.setSpan(ttsSpan, 0, 0, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); } } diff --git a/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java b/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java index bc0d820c3..e22345d26 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java +++ b/app/src/main/java/org/fdroid/fdroid/views/apps/FeatureImage.java @@ -50,6 +50,7 @@ import java.util.Random; * * It is suggested that you obtain the Palette from the icon of an app. */ +@SuppressWarnings("LineLength") public class FeatureImage extends AppCompatImageView { private static final int NUM_SQUARES_WIDE = 4; diff --git a/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java b/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java index 6436e9f0e..743bea4e5 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/categories/AppCardController.java @@ -18,12 +18,10 @@ import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.TextView; - import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.FailReason; import com.nostra13.universalimageloader.core.listener.ImageLoadingListener; - import org.fdroid.fdroid.AppDetails2; import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; @@ -33,12 +31,13 @@ import org.fdroid.fdroid.views.apps.FeatureImage; /** * The {@link AppCardController} can bind an app to several different layouts, as long as the layout * contains the following elements: - * + {@link R.id#icon} ({@link ImageView}, required) - * + {@link R.id#summary} ({@link TextView}, required) - * + {@link R.id#new_tag} ({@link TextView}, optional) - * + {@link R.id#featured_image} ({@link ImageView}, optional) + * + {@link R.id#icon} ({@link ImageView}, required) + * + {@link R.id#summary} ({@link TextView}, required) + * + {@link R.id#new_tag} ({@link TextView}, optional) + * + {@link R.id#featured_image} ({@link ImageView}, optional) */ -public class AppCardController extends RecyclerView.ViewHolder implements ImageLoadingListener, View.OnClickListener { +public class AppCardController extends RecyclerView.ViewHolder + implements ImageLoadingListener, View.OnClickListener { /** * After this many days, don't consider showing the "New" tag next to an app. @@ -124,7 +123,8 @@ public class AppCardController extends RecyclerView.ViewHolder implements ImageL featuredImage.setColour(ContextCompat.getColor(activity, R.color.fdroid_blue)); featuredImage.setImageDrawable(null); - // Note: We could call the convenience function loadImageAndDisplay(ImageLoader, DisplayImageOptions, String, String) + // Note: We could call the convenience function + // loadImageAndDisplay(ImageLoader, DisplayImageOptions, String, String) // which includes a fallback for when currentApp.featureGraphic is empty. However we need // to take care of also loading the icon (regardless of whether there is a featureGraphic // or not for this app) so that we can display the icon to the user. We will use the @@ -132,7 +132,8 @@ public class AppCardController extends RecyclerView.ViewHolder implements ImageL // from that icon and assign to the `FeatureImage` (or whether we should wait for the // feature image to be loaded). if (!TextUtils.isEmpty(app.featureGraphic)) { - featuredImage.loadImageAndDisplay(ImageLoader.getInstance(), displayImageOptions, app.featureGraphic); + featuredImage.loadImageAndDisplay(ImageLoader.getInstance(), + displayImageOptions, app.featureGraphic); } } } @@ -158,12 +159,12 @@ public class AppCardController extends RecyclerView.ViewHolder implements ImageL Intent intent = new Intent(activity, AppDetails2.class); intent.putExtra(AppDetails2.EXTRA_APPID, currentApp.packageName); if (Build.VERSION.SDK_INT >= 21) { - Pair iconTransitionPair = Pair.create((View) icon, activity.getString(R.string.transition_app_item_icon)); + Pair iconTransitionPair = Pair.create((View) icon, + activity.getString(R.string.transition_app_item_icon)); - @SuppressWarnings("unchecked") // We are passing the right type as the second varargs argument (i.e. a Pair). - Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, iconTransitionPair).toBundle(); - - activity.startActivity(intent, bundle); + @SuppressWarnings("unchecked") // the right type is passed as 2nd varargs arg: Pair + Bundle b = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, iconTransitionPair).toBundle(); + activity.startActivity(intent, b); } else { activity.startActivity(intent); } @@ -180,7 +181,10 @@ public class AppCardController extends RecyclerView.ViewHolder implements ImageL @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { - if (currentApp != null && TextUtils.isEmpty(currentApp.featureGraphic) && featuredImage != null && loadedImage != null) { + if (currentApp != null + && TextUtils.isEmpty(currentApp.featureGraphic) + && featuredImage != null + && loadedImage != null) { new Palette.Builder(loadedImage).generate(new Palette.PaletteAsyncListener() { @Override public void onGenerated(Palette palette) { diff --git a/app/src/main/java/org/fdroid/fdroid/views/categories/AppPreviewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/categories/AppPreviewAdapter.java index a37e80117..e0eeb5b79 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/categories/AppPreviewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/categories/AppPreviewAdapter.java @@ -4,7 +4,6 @@ import android.app.Activity; import android.database.Cursor; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.App; @@ -19,7 +18,8 @@ class AppPreviewAdapter extends RecyclerView.Adapter { @Override public AppCardController onCreateViewHolder(ViewGroup parent, int viewType) { - return new AppCardController(activity, activity.getLayoutInflater().inflate(R.layout.app_card_normal, parent, false)); + return new AppCardController(activity, activity.getLayoutInflater() + .inflate(R.layout.app_card_normal, parent, false)); } @Override diff --git a/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryAdapter.java index deb484acd..055546dd5 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryAdapter.java @@ -5,7 +5,6 @@ import android.support.annotation.NonNull; import android.support.v4.app.LoaderManager; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; - import org.fdroid.fdroid.R; import java.util.Collections; @@ -26,7 +25,8 @@ public class CategoryAdapter extends RecyclerView.Adapter { @Override public CategoryController onCreateViewHolder(ViewGroup parent, int viewType) { - return new CategoryController(activity, loaderManager, activity.getLayoutInflater().inflate(R.layout.category_item, parent, false)); + return new CategoryController(activity, loaderManager, activity.getLayoutInflater() + .inflate(R.layout.category_item, parent, false)); } @Override diff --git a/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java b/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java index 7184066dd..aec3a59ca 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/categories/CategoryController.java @@ -1,8 +1,9 @@ package org.fdroid.fdroid.views.categories; import android.app.Activity; -import android.content.Intent; import android.content.Context; +import android.content.Intent; +import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.Color; @@ -20,12 +21,10 @@ import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.TextView; - import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; import com.nostra13.universalimageloader.core.display.FadeInBitmapDisplayer; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.AppProvider; import org.fdroid.fdroid.data.Schema; @@ -106,12 +105,13 @@ public class CategoryController extends RecyclerView.ViewHolder implements Loade } /** - * @param requiresLowerCaseId Previously categories were translated using strings such as "category_Reading" for - * the "Reading" category. Now we also need to have drawable resources such as + * @param requiresLowerCaseId Previously categories were translated using strings such as "category_Reading" + * for the "Reading" category. Now we also need to have drawable resources such as * "category_reading". Note how drawables must have only lower case letters, whereas * we already have upper case letters in strings.xml. Hence this flag. */ - private static int getCategoryResource(Context context, @NonNull String categoryName, String resourceType, boolean requiresLowerCaseId) { + private static int getCategoryResource(Context context, @NonNull String categoryName, String resourceType, + boolean requiresLowerCaseId) { String suffix = categoryName.replace(" & ", "_").replace(" ", "_").replace("'", ""); if (requiresLowerCaseId) { suffix = suffix.toLowerCase(Locale.ENGLISH); @@ -178,8 +178,11 @@ public class CategoryController extends RecyclerView.ViewHolder implements Loade cursor.moveToFirst(); int numAppsInCategory = cursor.getInt(0); viewAll.setVisibility(View.VISIBLE); - viewAll.setText(activity.getResources().getQuantityString(R.plurals.button_view_all_apps_in_category, numAppsInCategory, numAppsInCategory)); - viewAll.setContentDescription(activity.getResources().getQuantityString(R.plurals.tts_view_all_in_category, numAppsInCategory, numAppsInCategory, currentCategory)); + Resources r = activity.getResources(); + viewAll.setText(r.getQuantityString(R.plurals.button_view_all_apps_in_category, numAppsInCategory, + numAppsInCategory)); + viewAll.setContentDescription(r.getQuantityString(R.plurals.tts_view_all_in_category, numAppsInCategory, + numAppsInCategory, currentCategory)); } } @@ -205,6 +208,7 @@ public class CategoryController extends RecyclerView.ViewHolder implements Loade /** * Applies excessive padding to the start of the first item. This is so that the category artwork * can peek out and make itself visible. This is RTL friendly. + * * @see org.fdroid.fdroid.R.dimen#category_preview__app_list__padding__horizontal * @see org.fdroid.fdroid.R.dimen#category_preview__app_list__padding__horizontal__first */ @@ -217,8 +221,10 @@ public class CategoryController extends RecyclerView.ViewHolder implements Loade @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { - int horizontalPadding = (int) context.getResources().getDimension(R.dimen.category_preview__app_list__padding__horizontal); - int horizontalPaddingFirst = (int) context.getResources().getDimension(R.dimen.category_preview__app_list__padding__horizontal__first); + Resources r = context.getResources(); + int horizontalPadding = (int) r.getDimension(R.dimen.category_preview__app_list__padding__horizontal); + int horizontalPaddingFirst = (int) r.getDimension( + R.dimen.category_preview__app_list__padding__horizontal__first); boolean isLtr = ViewCompat.getLayoutDirection(parent) == ViewCompat.LAYOUT_DIRECTION_LTR; int itemPosition = parent.getChildLayoutPosition(view); boolean first = itemPosition == 0; diff --git a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java index 44616491b..f1b9aaca8 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java +++ b/app/src/main/java/org/fdroid/fdroid/views/fragments/PreferencesFragment.java @@ -30,22 +30,22 @@ public class PreferencesFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener { private static final String[] SUMMARIES_TO_UPDATE = { - Preferences.PREF_UPD_INTERVAL, - Preferences.PREF_UPD_WIFI_ONLY, - Preferences.PREF_UPD_NOTIFY, - Preferences.PREF_ROOTED, - Preferences.PREF_HIDE_ANTI_FEATURE_APPS, - Preferences.PREF_INCOMP_VER, - Preferences.PREF_THEME, - Preferences.PREF_IGN_TOUCH, - Preferences.PREF_LOCAL_REPO_NAME, - Preferences.PREF_LANGUAGE, - Preferences.PREF_KEEP_CACHE_TIME, - Preferences.PREF_EXPERT, - Preferences.PREF_PRIVILEGED_INSTALLER, - Preferences.PREF_ENABLE_PROXY, - Preferences.PREF_PROXY_HOST, - Preferences.PREF_PROXY_PORT, + Preferences.PREF_UPD_INTERVAL, + Preferences.PREF_UPD_WIFI_ONLY, + Preferences.PREF_UPD_NOTIFY, + Preferences.PREF_ROOTED, + Preferences.PREF_HIDE_ANTI_FEATURE_APPS, + Preferences.PREF_INCOMP_VER, + Preferences.PREF_THEME, + Preferences.PREF_IGN_TOUCH, + Preferences.PREF_LOCAL_REPO_NAME, + Preferences.PREF_LANGUAGE, + Preferences.PREF_KEEP_CACHE_TIME, + Preferences.PREF_EXPERT, + Preferences.PREF_PRIVILEGED_INSTALLER, + Preferences.PREF_ENABLE_PROXY, + Preferences.PREF_PROXY_HOST, + Preferences.PREF_PROXY_PORT, }; private static final int REQUEST_INSTALL_ORBOT = 0x1234; @@ -180,8 +180,10 @@ public class PreferencesFragment extends PreferenceFragment break; case Preferences.PREF_PRIVILEGED_INSTALLER: - // We may have removed this preference if it is not suitable to show the user. So lets check it is here first. - final CheckBoxPreference pref = (CheckBoxPreference) findPreference(Preferences.PREF_PRIVILEGED_INSTALLER); + // We may have removed this preference if it is not suitable to show the user. + // So lets check it is here first. + final CheckBoxPreference pref = (CheckBoxPreference) findPreference( + Preferences.PREF_PRIVILEGED_INSTALLER); if (pref != null) { checkSummary(key, R.string.system_installer_on); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java index 59768ed58..3ac28cf41 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/MainActivity.java @@ -12,15 +12,13 @@ import android.support.annotation.Nullable; import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.ViewGroup; import android.widget.Toast; -import android.support.v7.widget.RecyclerView; - import com.ashokvarma.bottomnavigation.BadgeItem; import com.ashokvarma.bottomnavigation.BottomNavigationBar; import com.ashokvarma.bottomnavigation.BottomNavigationItem; - import org.fdroid.fdroid.AppDetails2; import org.fdroid.fdroid.AppUpdateStatusManager; import org.fdroid.fdroid.FDroidApp; @@ -37,17 +35,17 @@ import org.fdroid.fdroid.views.swap.SwapWorkflowActivity; /** * Main view shown to users upon starting F-Droid. - * + *

    * Shows a bottom navigation bar, with the following entries: - * + Whats new - * + Categories list - * + App swap - * + Updates - * + Settings - * - * Users navigate between items by using the bottom navigation bar, or by swiping left and right. - * When switching from one screen to the next, we stay within this activity. The new screen will - * get inflated (if required) + * + Whats new + * + Categories list + * + App swap + * + Updates + * + Settings + *

    + * Users navigate between items by using the bottom navigation bar, or by swiping left and right. + * When switching from one screen to the next, we stay within this activity. The new screen will + * get inflated (if required) */ public class MainActivity extends AppCompatActivity implements BottomNavigationBar.OnTabSelectedListener { @@ -105,7 +103,8 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB .addItem(new BottomNavigationItem(R.drawable.ic_settings, R.string.menu_settings)) .initialise(); - IntentFilter updateableAppsFilter = new IntentFilter(AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED); + IntentFilter updateableAppsFilter = new IntentFilter( + AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED); updateableAppsFilter.addAction(AppUpdateStatusManager.BROADCAST_APPSTATUS_CHANGED); LocalBroadcastManager.getInstance(this).registerReceiver(onUpdateableAppsChanged, updateableAppsFilter); @@ -349,10 +348,10 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB * There are a bunch of reasons why we would get notified about app statuses. * The ones we are interested in are those which would result in the "items requiring user interaction" * to increase or decrease: - * * Bulk updates of ready-to-install-apps (relating to {@link org.fdroid.fdroid.AppUpdateStatusService}. - * * Change in status to: - * * {@link AppUpdateStatusManager.Status#ReadyToInstall} (Causes the count to go UP by one) - * * {@link AppUpdateStatusManager.Status#Installed} (Causes the count to go DOWN by one) + * * Bulk updates of ready-to-install-apps (relating to {@link org.fdroid.fdroid.AppUpdateStatusService}. + * * Change in status to: + * * {@link AppUpdateStatusManager.Status#ReadyToInstall} (Causes the count to go UP by one) + * * {@link AppUpdateStatusManager.Status#Installed} (Causes the count to go DOWN by one) */ private final BroadcastReceiver onUpdateableAppsChanged = new BroadcastReceiver() { @Override @@ -362,14 +361,18 @@ public class MainActivity extends AppCompatActivity implements BottomNavigationB AppUpdateStatusManager manager = AppUpdateStatusManager.getInstance(context); if (AppUpdateStatusManager.BROADCAST_APPSTATUS_LIST_CHANGED.equals(intent.getAction()) && - AppUpdateStatusManager.REASON_READY_TO_INSTALL.equals(intent.getStringExtra(AppUpdateStatusManager.EXTRA_REASON_FOR_CHANGE))) { + AppUpdateStatusManager.REASON_READY_TO_INSTALL.equals( + intent.getStringExtra(AppUpdateStatusManager.EXTRA_REASON_FOR_CHANGE))) { updateBadge = true; } // Check if we have moved into the ReadyToInstall or Installed state. - AppUpdateStatusManager.AppUpdateStatus status = manager.get(intent.getStringExtra(AppUpdateStatusManager.EXTRA_APK_URL)); + AppUpdateStatusManager.AppUpdateStatus status = manager.get( + intent.getStringExtra(AppUpdateStatusManager.EXTRA_APK_URL)); boolean isStatusChange = intent.getBooleanExtra(AppUpdateStatusManager.EXTRA_IS_STATUS_UPDATE, false); - if (isStatusChange && status != null && (status.status == AppUpdateStatusManager.Status.ReadyToInstall || status.status == AppUpdateStatusManager.Status.Installed)) { + if (isStatusChange + && status != null + && (status.status == AppUpdateStatusManager.Status.ReadyToInstall || status.status == AppUpdateStatusManager.Status.Installed)) { // NOCHECKSTYLE LineLength updateBadge = true; } diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/MainViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/main/MainViewAdapter.java index aeaf7e775..e6c583082 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/MainViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/MainViewAdapter.java @@ -83,7 +83,8 @@ class MainViewAdapter extends RecyclerView.Adapter { private MainViewController createEmptyView() { FrameLayout frame = new FrameLayout(activity); - frame.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); + frame.setLayoutParams(new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT)); return new MainViewController(activity, frame); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/MainViewController.java b/app/src/main/java/org/fdroid/fdroid/views/main/MainViewController.java index 72a4dcd17..eaced1466 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/MainViewController.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/MainViewController.java @@ -9,11 +9,10 @@ import android.view.View; import android.widget.Button; import android.widget.FrameLayout; import android.widget.TextView; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.views.fragments.PreferencesFragment; -import org.fdroid.fdroid.views.updates.UpdatesViewBinder; import org.fdroid.fdroid.views.swap.SwapWorkflowActivity; +import org.fdroid.fdroid.views.updates.UpdatesViewBinder; /** * Decides which view on the main screen to attach to a given {@link FrameLayout}. This class @@ -79,7 +78,8 @@ class MainViewController extends RecyclerView.ViewHolder { // To allow for whitelabel versions of F-Droid, make sure not to hardcode "F-Droid" into our // translation here. TextView subtext = (TextView) swapView.findViewById(R.id.text2); - subtext.setText(activity.getString(R.string.nearby_splash__both_parties_need_fdroid, activity.getString(R.string.app_name))); + subtext.setText(activity.getString(R.string.nearby_splash__both_parties_need_fdroid, + activity.getString(R.string.app_name))); Button startButton = (Button) swapView.findViewById(R.id.button); startButton.setOnClickListener(new View.OnClickListener() { @@ -93,7 +93,7 @@ class MainViewController extends RecyclerView.ViewHolder { /** * Attaches a {@link PreferencesFragment} to the view. Everything else is managed by the * fragment itself, so no further work needs to be done by this view binder. - * + *

    * Note: It is tricky to attach a {@link Fragment} to a view from this view holder. This is due * to the way in which the {@link RecyclerView} will reuse existing views and ask us to * put a settings fragment in there at arbitrary times. Usually it wont be the same view we diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java b/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java index afd8f2121..d12121575 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/SettingsView.java @@ -7,16 +7,17 @@ import android.support.v4.app.FragmentTransaction; import android.support.v7.app.AppCompatActivity; import android.util.AttributeSet; import android.widget.FrameLayout; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.views.fragments.PreferencesFragment; +@SuppressWarnings("LineLength") /** * When attached to the window, the {@link PreferencesFragment} will be added. When detached from * the window, the fragment will be removed. - * + *

    * Based on code from https://github.com/lsjwzh/RecyclerViewPager/blob/master/lib/src/main/java/com/lsjwzh/widget/recyclerviewpager/FragmentStatePagerAdapter.java * licensed under the Apache 2.0 license (https://github.com/lsjwzh/RecyclerViewPager/blob/master/LICENSE). + * * @see android.support.v4.app.FragmentStatePagerAdapter Much of the code here was ported from this class. */ public class SettingsView extends FrameLayout { diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java index 23eee3817..1ff84b833 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java @@ -14,7 +14,6 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; @@ -55,7 +54,8 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks { appList.setLayoutManager(layoutManager); appList.setAdapter(whatsNewAdapter); - final SwipeRefreshLayout swipeToRefresh = (SwipeRefreshLayout) whatsNewView.findViewById(R.id.swipe_to_refresh); + final SwipeRefreshLayout swipeToRefresh = (SwipeRefreshLayout) whatsNewView + .findViewById(R.id.swipe_to_refresh); swipeToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/JoinWifiView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/JoinWifiView.java index 7577c3662..ef59e8823 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/JoinWifiView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/JoinWifiView.java @@ -19,7 +19,6 @@ import android.view.View; import android.widget.ImageView; import android.widget.RelativeLayout; import android.widget.TextView; - import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; import org.fdroid.fdroid.localrepo.SwapService; @@ -111,7 +110,8 @@ public class JoinWifiView extends RelativeLayout implements SwapWorkflowActivity public boolean buildMenu(Menu menu, @NonNull MenuInflater inflater) { inflater.inflate(R.menu.swap_next, menu); MenuItem next = menu.findItem(R.id.action_next); - MenuItemCompat.setShowAsAction(next, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); + MenuItemCompat.setShowAsAction(next, + MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); next.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { @@ -119,7 +119,7 @@ public class JoinWifiView extends RelativeLayout implements SwapWorkflowActivity return true; } }); - return true; + return true; } @Override diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/NfcView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/NfcView.java index c0f093bce..5d2ef5760 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/NfcView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/NfcView.java @@ -12,7 +12,6 @@ import android.view.MenuItem; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.RelativeLayout; - import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.localrepo.SwapService; @@ -56,7 +55,8 @@ public class NfcView extends RelativeLayout implements SwapWorkflowActivity.Inne public boolean buildMenu(Menu menu, @NonNull MenuInflater inflater) { inflater.inflate(R.menu.swap_skip, menu); MenuItem next = menu.findItem(R.id.action_next); - MenuItemCompat.setShowAsAction(next, MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); + MenuItemCompat.setShowAsAction(next, + MenuItemCompat.SHOW_AS_ACTION_ALWAYS | MenuItemCompat.SHOW_AS_ACTION_WITH_TEXT); next.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { @Override public boolean onMenuItemClick(MenuItem item) { diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/SelectAppsView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/SelectAppsView.java index 9f5112755..77daa73bd 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/SelectAppsView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/SelectAppsView.java @@ -77,7 +77,8 @@ public class SelectAppsView extends ListView implements protected void onFinishInflate() { super.onFinishInflate(); adapter = new AppListAdapter(this, getContext(), - getContext().getContentResolver().query(InstalledAppProvider.getContentUri(), InstalledAppTable.Cols.ALL, null, null, null)); + getContext().getContentResolver().query(InstalledAppProvider.getContentUri(), + InstalledAppTable.Cols.ALL, null, null, null)); setAdapter(adapter); setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); @@ -124,7 +125,8 @@ public class SelectAppsView extends ListView implements @Override public int getPreviousStep() { - // TODO: The STEP_JOIN_WIFI step isn't shown first, need to make it so that it is, or so that this doesn't go back there. + // TODO: The STEP_JOIN_WIFI step isn't shown first, need to make it + // so that it is, or so that this doesn't go back there. return getState().isConnectingWithPeer() ? SwapService.STEP_INTRO : SwapService.STEP_JOIN_WIFI; } diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/StartSwapView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/StartSwapView.java index a7ff0b855..72270d387 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/StartSwapView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/StartSwapView.java @@ -27,20 +27,19 @@ import android.widget.ListView; import android.widget.ProgressBar; import android.widget.RelativeLayout; import android.widget.TextView; - +import cc.mvdan.accesspoint.WifiApControl; import org.fdroid.fdroid.FDroidApp; import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; import org.fdroid.fdroid.localrepo.SwapService; import org.fdroid.fdroid.localrepo.peers.Peer; import org.fdroid.fdroid.net.WifiStateChangeService; - -import java.util.ArrayList; - -import cc.mvdan.accesspoint.WifiApControl; import rx.Subscriber; import rx.Subscription; +import java.util.ArrayList; + +@SuppressWarnings("LineLength") public class StartSwapView extends RelativeLayout implements SwapWorkflowActivity.InnerView { private static final String TAG = "StartSwapView"; @@ -78,12 +77,14 @@ public class StartSwapView extends RelativeLayout implements SwapWorkflowActivit @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { - convertView = LayoutInflater.from(getContext()).inflate(R.layout.swap_peer_list_item, parent, false); + convertView = LayoutInflater.from(getContext()) + .inflate(R.layout.swap_peer_list_item, parent, false); } Peer peer = getItem(position); ((TextView) convertView.findViewById(R.id.peer_name)).setText(peer.getName()); - ((ImageView) convertView.findViewById(R.id.icon)).setImageDrawable(getResources().getDrawable(peer.getIcon())); + ((ImageView) convertView.findViewById(R.id.icon)) + .setImageDrawable(getResources().getDrawable(peer.getIcon())); return convertView; } @@ -142,7 +143,7 @@ public class StartSwapView extends RelativeLayout implements SwapWorkflowActivit /** * Remove relevant listeners/subscriptions/etc so that they do not receive and process events * when this view is not in use. - * + *

    * TODO: Not sure if this is the best place to handle being removed from the view. */ @Override @@ -391,10 +392,10 @@ public class StartSwapView extends RelativeLayout implements SwapWorkflowActivit * Helper function to set the "enable wifi" switch, but prevents the listeners from * being notified. This enables the UI to be updated without triggering further enable/disable * events being queued. - * + *

    * This is required because the SwitchCompat and its parent classes will always try to notify * their listeners if there is one (e.g. http://stackoverflow.com/a/15523518). - * + *

    * The fact that this method also deals with enabling/disabling the switch is more of a convenience * Nigh on all times this UI wants to change the state of the switch, it is also interested in * ensuring the enabled state of the switch. @@ -408,10 +409,10 @@ public class StartSwapView extends RelativeLayout implements SwapWorkflowActivit /** * When the wifi switch is: - * + *

    * Toggled on: Ask the swap service to ensure wifi swap is running. * Toggled off: Ask the swap service to prevent the wifi swap service from running. - * + *

    * Both of these actions will be performed in a background thread which will send broadcast * intents when they are completed. */ diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java index 49f600d6b..c38264c10 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapAppsView.java @@ -132,7 +132,7 @@ public class SwapAppsView extends ListView implements private void pollForUpdates() { if (adapter.getCount() > 1 || - (adapter.getCount() == 1 && !new App((Cursor) adapter.getItem(0)).packageName.equals("org.fdroid.fdroid"))) { + (adapter.getCount() == 1 && !new App((Cursor) adapter.getItem(0)).packageName.equals("org.fdroid.fdroid"))) { // NOCHECKSTYLE LineLength Utils.debugLog(TAG, "Not polling for new apps from swap repo, because we already have more than one."); return; } @@ -194,7 +194,8 @@ public class SwapAppsView extends ListView implements ? AppProvider.getRepoUri(repo) : AppProvider.getSearchUri(repo, currentFilterString); - return new CursorLoader(getActivity(), uri, AppMetadataTable.Cols.ALL, null, null, AppMetadataTable.Cols.NAME); + return new CursorLoader(getActivity(), uri, AppMetadataTable.Cols.ALL, + null, null, AppMetadataTable.Cols.NAME); } @Override @@ -305,7 +306,8 @@ public class SwapAppsView extends ListView implements this.app = app; Context context = getContext(); - Apk apk = ApkProvider.Helper.findApkFromAnyRepo(context, app.packageName, app.suggestedVersionCode); + Apk apk = ApkProvider.Helper.findApkFromAnyRepo(context, + app.packageName, app.suggestedVersionCode); String urlString = apk.getUrl(); // TODO unregister receivers? or will they just die with this instance diff --git a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java index 9e2c92a82..bccf4a796 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java +++ b/app/src/main/java/org/fdroid/fdroid/views/swap/SwapWorkflowActivity.java @@ -64,6 +64,7 @@ import cc.mvdan.accesspoint.WifiApControl; * The problem comes when there are two competing goals - 1) Show the user a list of apps from another * device to download and install, and 2) Prepare your own list of apps to share. */ +@SuppressWarnings("LineLength") public class SwapWorkflowActivity extends AppCompatActivity { /** diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java index a73d8a3af..dfa046171 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/UpdatesAdapter.java @@ -13,9 +13,7 @@ import android.support.v4.content.LocalBroadcastManager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; - import com.hannesdorfmann.adapterdelegates3.AdapterDelegatesManager; - import org.fdroid.fdroid.AppUpdateStatusManager; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.AppProvider; @@ -34,31 +32,38 @@ import java.util.Set; /** * Manages the following types of information: - * * Apps marked for downloading (while the user is offline) - * * Currently downloading apps - * * Apps which have been downloaded (and need further action to install). This includes new installs and updates. - * * Reminders to users that they can donate to apps (only shown infrequently after several updates) - * * A list of apps which are eligible to be updated (for when the "Automatic Updates" option is disabled), including: - * + A summary of all apps to update including an "Update all" button and a "Show apps" button. - * + Once "Show apps" is expanded then each app is shown along with its own download button. - * + *

      + *
    • Apps marked for downloading (while the user is offline)
    • + *
    • Currently downloading apps
    • + *
    • Apps which have been downloaded (and need further action to install)
    • + *
    + * This includes new installs and updates. + *
      + *
    • Reminders to users that they can donate to apps (only shown infrequently after several updates)
    • + *
    • A list of apps which are eligible to be updated (for when the "Automatic Updates" option is disabled), + * including: + * + A summary of all apps to update including an "Update all" button and a "Show apps" button. + * + Once "Show apps" is expanded then each app is shown along with its own download button.
    • + *
    * It does this by maintaining several different lists of interesting apps. Each list contains wrappers * around the piece of data it wants to render ({@link AppStatus}, {@link UpdateableApp}). * Instead of juggling the various viewTypes * to find out which position in the adapter corresponds to which view type, this is handled by * the {@link UpdatesAdapter#delegatesManager}. - * + *

    * There are a series of type-safe lists which hold the specific data this adapter is interested in. * This data is then collated into a single list (see {@link UpdatesAdapter#populateItems()}) which * is the actual thing the adapter binds too. At any point it is safe to clear the single list and * repopulate it from the original source lists of data. When this is done, the adapter will notify * the recycler view that its data has changed. Sometimes it will also ask the recycler view to * scroll to the newly added item (if attached to the recycler view). - * + *

    * TODO: If a user downloads an old version of an app (resulting in a new update being available * instantly), then we need to refresh the list of apps to update. */ -public class UpdatesAdapter extends RecyclerView.Adapter implements LoaderManager.LoaderCallbacks { +@SuppressWarnings("LineLength") +public class UpdatesAdapter extends RecyclerView.Adapter + implements LoaderManager.LoaderCallbacks { private final AdapterDelegatesManager> delegatesManager = new AdapterDelegatesManager<>(); private final List items = new ArrayList<>(); @@ -221,7 +226,8 @@ public class UpdatesAdapter extends RecyclerView.Adapter loader) { } + public void onLoaderReset(Loader loader) { + } /** * If this adapter is "active" then it is part of the current UI that the user is looking to. diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppStatus.java b/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppStatus.java index 22ae812dc..aa336dc9d 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppStatus.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppStatus.java @@ -4,9 +4,7 @@ import android.app.Activity; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; - import com.hannesdorfmann.adapterdelegates3.AdapterDelegate; - import org.fdroid.fdroid.AppUpdateStatusManager; import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.App; @@ -16,8 +14,10 @@ import java.util.List; /** * Apps which we want to show some more substantial information about. + * * @see R.layout#updateable_app_status_item The view that this binds to - * @see AppListItemController Used for binding the {@link App} to the {@link R.layout#updateable_app_status_item} + * @see AppListItemController Used for binding the {@link App} to the + * {@link R.layout#updateable_app_status_item} */ public class AppStatus extends AppUpdateData { @@ -44,11 +44,13 @@ public class AppStatus extends AppUpdateData { @NonNull @Override protected RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent) { - return new AppListItemController(activity, activity.getLayoutInflater().inflate(R.layout.updateable_app_status_item, parent, false)); + return new AppListItemController(activity, activity.getLayoutInflater() + .inflate(R.layout.updateable_app_status_item, parent, false)); } @Override - protected void onBindViewHolder(@NonNull List items, int position, @NonNull RecyclerView.ViewHolder holder, @NonNull List payloads) { + protected void onBindViewHolder(@NonNull List items, int position, + @NonNull RecyclerView.ViewHolder holder, @NonNull List payloads) { AppStatus app = (AppStatus) items.get(position); ((AppListItemController) holder).bindModel(app.status.app); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppUpdateData.java b/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppUpdateData.java index 173cbbeb7..ff377d762 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppUpdateData.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppUpdateData.java @@ -3,8 +3,10 @@ package org.fdroid.fdroid.views.updates.items; import android.app.Activity; /** - * Used as a common base class for all data types in the {@link org.fdroid.fdroid.views.updates.UpdatesAdapter}. - * Doesn't have any functionality of its own, but allows the {@link org.fdroid.fdroid.views.updates.UpdatesAdapter#delegatesManager} + * Used as a common base class for all data types in the {@link + * org.fdroid.fdroid.views.updates.UpdatesAdapter}. Doesn't have any + * functionality of its own, but allows the {@link + * org.fdroid.fdroid.views.updates.UpdatesAdapter#delegatesManager} * to specify a data type more specific than just {@link Object}. */ public abstract class AppUpdateData { diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableApp.java b/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableApp.java index 77fc9ad14..e2ebe3d16 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableApp.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableApp.java @@ -4,9 +4,7 @@ import android.app.Activity; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.ViewGroup; - import com.hannesdorfmann.adapterdelegates3.AdapterDelegate; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.views.apps.AppListItemController; @@ -15,6 +13,7 @@ import java.util.List; /** * List of all apps which can be updated, but have not yet been downloaded. + * * @see UpdateableApp The data that is bound to this view. * @see R.layout#updateable_app_list_item The view that this binds to. * @see AppListItemController Used for binding the {@link App} to the {@link R.layout#updateable_app_list_item} @@ -44,11 +43,13 @@ public class UpdateableApp extends AppUpdateData { @NonNull @Override protected RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent) { - return new AppListItemController(activity, activity.getLayoutInflater().inflate(R.layout.updateable_app_list_item, parent, false)); + return new AppListItemController(activity, activity.getLayoutInflater() + .inflate(R.layout.updateable_app_list_item, parent, false)); } @Override - protected void onBindViewHolder(@NonNull List items, int position, @NonNull RecyclerView.ViewHolder holder, @NonNull List payloads) { + protected void onBindViewHolder(@NonNull List items, int position, + @NonNull RecyclerView.ViewHolder holder, @NonNull List payloads) { UpdateableApp app = (UpdateableApp) items.get(position); ((AppListItemController) holder).bindModel(app.app); } diff --git a/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableAppsHeader.java b/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableAppsHeader.java index cd1e4c3ed..7770e3624 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableAppsHeader.java +++ b/app/src/main/java/org/fdroid/fdroid/views/updates/items/UpdateableAppsHeader.java @@ -10,9 +10,7 @@ import android.view.ViewGroup; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; - import com.hannesdorfmann.adapterdelegates3.AdapterDelegate; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.views.updates.UpdatesAdapter; @@ -23,6 +21,7 @@ import java.util.List; /** * Summary of all apps that can be downloaded. Includes a button to download all of them and also * a toggle to show or hide the list of each individual item. + * * @see R.layout#updates_header The view that this binds to. * @see UpdateableAppsHeader The data that is bound to this view. */ @@ -31,7 +30,8 @@ public class UpdateableAppsHeader extends AppUpdateData { public final List apps; public final UpdatesAdapter adapter; - public UpdateableAppsHeader(Activity activity, UpdatesAdapter updatesAdapter, List updateableApps) { + public UpdateableAppsHeader(Activity activity, + UpdatesAdapter updatesAdapter, List updateableApps) { super(activity); apps = updateableApps; adapter = updatesAdapter; @@ -57,7 +57,8 @@ public class UpdateableAppsHeader extends AppUpdateData { } @Override - protected void onBindViewHolder(@NonNull List items, int position, @NonNull RecyclerView.ViewHolder holder, @NonNull List payloads) { + protected void onBindViewHolder(@NonNull List items, int position, + @NonNull RecyclerView.ViewHolder holder, @NonNull List payloads) { UpdateableAppsHeader app = (UpdateableAppsHeader) items.get(position); ((ViewHolder) holder).bindHeader(app); } @@ -87,7 +88,9 @@ public class UpdateableAppsHeader extends AppUpdateData { public void bindHeader(UpdateableAppsHeader header) { this.header = header; - updatesAvailable.setText(itemView.getResources().getQuantityString(R.plurals.updates__download_updates_for_apps, header.apps.size(), header.apps.size())); + updatesAvailable.setText(itemView.getResources() + .getQuantityString(R.plurals.updates__download_updates_for_apps, header.apps.size(), + header.apps.size())); List appNames = new ArrayList<>(header.apps.size()); for (UpdateableApp app : header.apps) { diff --git a/app/src/main/java/org/fdroid/fdroid/views/whatsnew/WhatsNewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/whatsnew/WhatsNewAdapter.java index 93391776c..659920592 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/whatsnew/WhatsNewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/whatsnew/WhatsNewAdapter.java @@ -2,6 +2,7 @@ package org.fdroid.fdroid.views.whatsnew; import android.app.Activity; import android.content.Context; +import android.content.res.Resources; import android.database.Cursor; import android.graphics.Rect; import android.support.v4.view.ViewCompat; @@ -9,7 +10,6 @@ import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; - import org.fdroid.fdroid.R; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.views.categories.AppCardController; @@ -108,6 +108,7 @@ public class WhatsNewAdapter extends RecyclerView.Adapter { /** * Applies padding to items, ensuring that the spacing on the left, centre, and right all match. * The vertical padding is slightly shorter than the horizontal padding also. + * * @see org.fdroid.fdroid.R.dimen#whats_new__padding__app_card__horizontal * @see org.fdroid.fdroid.R.dimen#whats_new__padding__app_card__vertical */ @@ -121,8 +122,9 @@ public class WhatsNewAdapter extends RecyclerView.Adapter { @Override public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) { int position = parent.getChildAdapterPosition(view); - int horizontalPadding = (int) context.getResources().getDimension(R.dimen.whats_new__padding__app_card__horizontal); - int verticalPadding = (int) context.getResources().getDimension(R.dimen.whats_new__padding__app_card__vertical); + Resources resources = context.getResources(); + int horizontalPadding = (int) resources.getDimension(R.dimen.whats_new__padding__app_card__horizontal); + int verticalPadding = (int) resources.getDimension(R.dimen.whats_new__padding__app_card__vertical); int relativePositionInCycle = position % 5; if (position == 0) { diff --git a/app/src/main/java/sun/net/www/protocol/bluetooth/Handler.java b/app/src/main/java/sun/net/www/protocol/bluetooth/Handler.java index 18ce3d877..34234ee89 100644 --- a/app/src/main/java/sun/net/www/protocol/bluetooth/Handler.java +++ b/app/src/main/java/sun/net/www/protocol/bluetooth/Handler.java @@ -6,8 +6,9 @@ import java.net.URLConnection; import java.net.URLStreamHandler; /** - * This class is added so that the bluetooth:// scheme we use for the {@link org.fdroid.fdroid.net.BluetoothDownloader} - * is not treated as invalid by the {@link URL} class. + * This class is added so that the bluetooth:// scheme we use for the {@link + * org.fdroid.fdroid.net.BluetoothDownloader} is not treated as invalid by + * the {@link URL} class. */ public class Handler extends URLStreamHandler { @Override diff --git a/app/src/test/java/org/fdroid/fdroid/Assert.java b/app/src/test/java/org/fdroid/fdroid/Assert.java index 27036a5f3..c0ebe5e3f 100644 --- a/app/src/test/java/org/fdroid/fdroid/Assert.java +++ b/app/src/test/java/org/fdroid/fdroid/Assert.java @@ -4,9 +4,7 @@ import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.net.Uri; - import junit.framework.AssertionFailedError; - import org.fdroid.fdroid.data.ApkProvider; import org.fdroid.fdroid.data.App; import org.fdroid.fdroid.data.AppProvider; @@ -118,7 +116,7 @@ public class Assert { } public static void assertInvalidUri(ShadowContentResolver resolver, Uri uri) { - Cursor cursor = resolver.query(uri, new String[] {}, null, null, null); + Cursor cursor = resolver.query(uri, new String[]{}, null, null, null); assertNull(cursor); } @@ -128,16 +126,18 @@ public class Assert { cursor.close(); } - public static void assertValidUri(ShadowContentResolver resolver, Uri actualUri, String expectedUri, String[] projection) { + public static void assertValidUri(ShadowContentResolver resolver, Uri actualUri, String expectedUri, + String[] projection) { assertValidUri(resolver, actualUri, projection); assertEquals(expectedUri, actualUri.toString()); } public static void assertResultCount(ShadowContentResolver resolver, int expectedCount, Uri uri) { - assertResultCount(resolver, expectedCount, uri, new String[] {}); + assertResultCount(resolver, expectedCount, uri, new String[]{}); } - public static void assertResultCount(ShadowContentResolver resolver, int expectedCount, Uri uri, String[] projection) { + public static void assertResultCount(ShadowContentResolver resolver, int expectedCount, Uri uri, + String[] projection) { Cursor cursor = resolver.query(uri, projection, null, null, null); assertResultCount(expectedCount, cursor); cursor.close(); @@ -153,7 +153,8 @@ public class Assert { assertEquals(expectedCount, result.getCount()); } - public static void assertIsInstalledVersionInDb(ShadowContentResolver resolver, String appId, int versionCode, String versionName) { + public static void assertIsInstalledVersionInDb(ShadowContentResolver resolver, + String appId, int versionCode, String versionName) { Uri uri = InstalledAppProvider.getAppUri(appId); String[] projection = { @@ -198,14 +199,17 @@ public class Assert { Uri uri = AppProvider.getContentUri(); context.getContentResolver().insert(uri, values); - return AppProvider.Helper.findSpecificApp(context.getContentResolver(), packageName, 1, AppMetadataTable.Cols.ALL); + return AppProvider.Helper.findSpecificApp(context.getContentResolver(), packageName, 1, + AppMetadataTable.Cols.ALL); } public static App ensureApp(Context context, String packageName) { - App app = AppProvider.Helper.findSpecificApp(context.getContentResolver(), packageName, 1, AppMetadataTable.Cols.ALL); + App app = AppProvider.Helper.findSpecificApp(context.getContentResolver(), packageName, 1, + AppMetadataTable.Cols.ALL); if (app == null) { insertApp(context, packageName, packageName); - app = AppProvider.Helper.findSpecificApp(context.getContentResolver(), packageName, 1, AppMetadataTable.Cols.ALL); + app = AppProvider.Helper.findSpecificApp(context.getContentResolver(), packageName, 1, + AppMetadataTable.Cols.ALL); } assertNotNull(app); return app; @@ -215,7 +219,8 @@ public class Assert { return insertApk(context, ensureApp(context, packageName), versionCode); } - public static Uri insertApk(Context context, String packageName, int versionCode, ContentValues additionalValues) { + public static Uri insertApk(Context context, String packageName, int versionCode, + ContentValues additionalValues) { return insertApk(context, ensureApp(context, packageName), versionCode, additionalValues); } diff --git a/app/src/test/java/org/fdroid/fdroid/TestUtils.java b/app/src/test/java/org/fdroid/fdroid/TestUtils.java index febd80a26..caf258ea1 100644 --- a/app/src/test/java/org/fdroid/fdroid/TestUtils.java +++ b/app/src/test/java/org/fdroid/fdroid/TestUtils.java @@ -55,12 +55,14 @@ public class TestUtils { } /** - * The way that Robolectric has to implement shadows for Android classes such as {@link android.content.ContentProvider} - * is by using a special annotation that means the classes will implement the correct methods at runtime. - * However this means that the shadow of a content provider does not actually extend - * {@link android.content.ContentProvider}. As such, we need to do some special mocking using - * Mockito in order to provide a {@link ContextWrapper} which is able to return a proper - * content resolver that delegates to the Robolectric shadow object. + * The way that Robolectric has to implement shadows for Android classes + * such as {@link android.content.ContentProvider} is by using a special + * annotation that means the classes will implement the correct methods at + * runtime. However this means that the shadow of a content provider does + * not actually extend {@link android.content.ContentProvider}. As such, + * we need to do some special mocking using Mockito in order to provide a + * {@link ContextWrapper} which is able to return a proper content + * resolver that delegates to the Robolectric shadow object. */ public static ContextWrapper createContextWithContentResolver(ShadowContentResolver contentResolver) { final ContentResolver resolver = mock(ContentResolver.class, AdditionalAnswers.delegatesTo(contentResolver)); diff --git a/app/src/test/java/org/fdroid/fdroid/UtilsTest.java b/app/src/test/java/org/fdroid/fdroid/UtilsTest.java index 9932297ed..116d399c4 100644 --- a/app/src/test/java/org/fdroid/fdroid/UtilsTest.java +++ b/app/src/test/java/org/fdroid/fdroid/UtilsTest.java @@ -18,6 +18,7 @@ import static org.junit.Assert.assertTrue; @Config(constants = BuildConfig.class, sdk = 24) @RunWith(RobolectricTestRunner.class) +@SuppressWarnings("LineLength") public class UtilsTest { String fdroidFingerprint = "43238D512C1E5EB2D6569F4A3AFBF5523418B82E0A3ED1552770ABB9A9C9CCAB"; diff --git a/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java index 7e6697d19..b9402e83f 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/AppProviderTest.java @@ -30,6 +30,7 @@ import static org.junit.Assert.assertTrue; @Config(constants = BuildConfig.class, application = Application.class, sdk = 24) @RunWith(RobolectricTestRunner.class) +@SuppressWarnings("LineLength") public class AppProviderTest extends FDroidProviderTest { private static final String[] PROJ = Cols.ALL; diff --git a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java index 55ee6d8b3..60779cf99 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/CategoryProviderTest.java @@ -5,7 +5,6 @@ import android.content.ContentResolver; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; - import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.data.Schema.AppMetadataTable.Cols; @@ -46,7 +45,7 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.dog.rock.apple", "Dog-Rock-Apple", "Animal,Mineral,Vegetable", mainRepo); insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable", mainRepo); - String[] expectedFDroid = new String[] { + String[] expectedFDroid = new String[]{ "Animal", "Mineral", "Security", @@ -54,13 +53,13 @@ public class CategoryProviderTest extends FDroidProviderTest { "Writing", }; - String[] expectedGP = new String[] { + String[] expectedGP = new String[]{ "GuardianProject", "Office", }; // We overwrite "Security" + "Writing" with "GuardianProject" + "Office" - String[] expectedBoth = new String[] { + String[] expectedBoth = new String[]{ "Animal", "Mineral", "Vegetable", @@ -90,16 +89,16 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.banana", "Banana", "Food"); insertAppWithCategory("com.dog-food", "Dog Food", "Food"); - assertPackagesInUri(AppProvider.getSearchUri("dog", "Animal"), new String[] { + assertPackagesInUri(AppProvider.getSearchUri("dog", "Animal"), new String[]{ "com.dog", "com.dog-statue", }); - assertPackagesInUri(AppProvider.getSearchUri("dog", "Food"), new String[] { + assertPackagesInUri(AppProvider.getSearchUri("dog", "Food"), new String[]{ "com.dog-food", }); - assertPackagesInUri(AppProvider.getSearchUri("dog", null), new String[] { + assertPackagesInUri(AppProvider.getSearchUri("dog", null), new String[]{ "com.dog", "com.dog-statue", "com.dog-food", @@ -116,14 +115,14 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.rock", "Rock", "Mineral"); insertAppWithCategory("com.banana", "Banana", "Food"); - assertPackagesInCategory("Animal", new String[] { + assertPackagesInCategory("Animal", new String[]{ "com.dog", "com.cat", "com.crow", "com.chicken", }); - assertPackagesInCategory("animal", new String[] { + assertPackagesInCategory("animal", new String[]{ "com.dog", "com.cat", "com.crow", @@ -136,12 +135,12 @@ public class CategoryProviderTest extends FDroidProviderTest { "com.bird-statue", }); - assertPackagesInCategory("Food", new String[] { + assertPackagesInCategory("Food", new String[]{ "com.chicken", "com.banana", }); - assertPackagesInCategory("Mineral", new String[] { + assertPackagesInCategory("Mineral", new String[]{ "com.rock", "com.bird-statue", }); @@ -178,17 +177,18 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.banana", "Banana", "Vegetable"); insertAppWithCategory("com.tomato", "Tomato", "Vegetable"); - assertContainsOnly(topAppsFromCategory("Animal", 3), new String[] {"com.bird", "com.cat", "com.dog", }); - assertContainsOnly(topAppsFromCategory("Animal", 2), new String[] {"com.bird", "com.cat", }); - assertContainsOnly(topAppsFromCategory("Animal", 1), new String[] {"com.bird", }); + assertContainsOnly(topAppsFromCategory("Animal", 3), new String[]{"com.bird", "com.cat", "com.dog"}); + assertContainsOnly(topAppsFromCategory("Animal", 2), new String[]{"com.bird", "com.cat"}); + assertContainsOnly(topAppsFromCategory("Animal", 1), new String[]{"com.bird"}); - assertContainsOnly(topAppsFromCategory("Mineral", 2), new String[] {"com.boulder", "com.rock", }); + assertContainsOnly(topAppsFromCategory("Mineral", 2), new String[]{"com.boulder", "com.rock"}); - assertContainsOnly(topAppsFromCategory("Vegetable", 10), new String[] {"com.banana", "com.tomato", }); + assertContainsOnly(topAppsFromCategory("Vegetable", 10), new String[]{"com.banana", "com.tomato"}); } public String[] topAppsFromCategory(String category, int numToGet) { - List apps = AppProvider.Helper.cursorToList(contentResolver.query(AppProvider.getTopFromCategoryUri(category, numToGet), Cols.ALL, null, null, Cols.NAME)); + List apps = AppProvider.Helper.cursorToList(contentResolver + .query(AppProvider.getTopFromCategoryUri(category, numToGet), Cols.ALL, null, null, Cols.NAME)); String[] packageNames = new String[apps.size()]; for (int i = 0; i < apps.size(); i++) { packageNames[i] = apps.get(i).packageName; @@ -204,7 +204,7 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.banana", "Banana", "Vegetable"); List categories = categories(); - String[] expected = new String[] { + String[] expected = new String[]{ "Animal", "Mineral", "Vegetable", @@ -221,7 +221,7 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.banana.apple", "Banana", "Vegetable,Vegetable", mainRepo); List categories = categories(); - String[] expected = new String[] { + String[] expected = new String[]{ "Animal", "Mineral", "Vegetable", @@ -232,10 +232,10 @@ public class CategoryProviderTest extends FDroidProviderTest { insertAppWithCategory("com.example.game", "Game", "Running,Shooting,Jumping,Bleh,Sneh,Pleh,Blah,Test category," + - "The quick brown fox jumps over the lazy dog,With apostrophe's", additionalRepo); + "The quick brown fox jumps over the lazy dog,With apostrophe's", additionalRepo); List categoriesLonger = categories(); - String[] expectedLonger = new String[] { + String[] expectedLonger = new String[]{ "Animal", "Mineral", "Vegetable", diff --git a/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java b/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java index 0fa834dd8..5a2707c06 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java +++ b/app/src/test/java/org/fdroid/fdroid/data/DatabaseMigration.java @@ -6,7 +6,6 @@ import android.content.Context; import android.content.ContextWrapper; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; - import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.Utils; @@ -134,13 +133,13 @@ public class DatabaseMigration { } private void insertRepos(SQLiteDatabase db) { - String pubKey = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; + String pubKey = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; // NOCHECKSTYLE LineLength String fingerprint = Utils.calcFingerprint(pubKey); ContentValues fdroidValues = new ContentValues(); fdroidValues.put("address", "https://f-droid.org/repo"); fdroidValues.put("name", "F-Droid"); - fdroidValues.put("description", "The official FDroid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time."); + fdroidValues.put("description", "The official FDroid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time."); // NOCHECKSTYLE LineLength fdroidValues.put("pubkey", pubKey); fdroidValues.put("fingerprint", fingerprint); fdroidValues.put("maxage", 0); @@ -152,7 +151,7 @@ public class DatabaseMigration { ContentValues archiveValues = new ContentValues(); archiveValues.put("address", "https://f-droid.org/archive"); archiveValues.put("name", "F-Droid Archive"); - archiveValues.put("description", "The archive repository of the F-Droid client. This contains older versions of applications from the main repository."); + archiveValues.put("description", "The archive repository of the F-Droid client. This contains older versions of applications from the main repository."); // NOCHECKSTYLE LineLength archiveValues.put("pubkey", pubKey); archiveValues.put("fingerprint", fingerprint); archiveValues.put("maxage", 0); diff --git a/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java index 4ee2a182b..23872b54d 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/InstalledAppProviderTest.java @@ -4,7 +4,6 @@ import android.app.Application; import android.content.ContentValues; import android.database.Cursor; import android.net.Uri; - import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.TestUtils; import org.fdroid.fdroid.data.Schema.InstalledAppTable.Cols; @@ -15,14 +14,14 @@ import org.robolectric.RobolectricTestRunner; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; +import java.util.Map; + import static org.fdroid.fdroid.Assert.assertIsInstalledVersionInDb; import static org.fdroid.fdroid.Assert.assertResultCount; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; -import java.util.Map; - @Config(constants = BuildConfig.class, application = Application.class, sdk = 24) @RunWith(RobolectricTestRunner.class) public class InstalledAppProviderTest extends FDroidProviderTest { @@ -52,7 +51,8 @@ public class InstalledAppProviderTest extends FDroidProviderTest { assertEquals(1, foundAfter.size()); assertEquals(100000000L, foundAfter.get("org.example.test-app").longValue()); - Cursor cursor = contentResolver.query(InstalledAppProvider.getAppUri("org.example.test-app"), Cols.ALL, null, null, null); + Cursor cursor = contentResolver.query(InstalledAppProvider.getAppUri("org.example.test-app"), Cols.ALL, + null, null, null); assertEquals(cursor.getCount(), 1); cursor.moveToFirst(); @@ -63,7 +63,8 @@ public class InstalledAppProviderTest extends FDroidProviderTest { assertEquals("has of test app", cursor.getString(cursor.getColumnIndex(Cols.HASH))); assertEquals("fake hash type", cursor.getString(cursor.getColumnIndex(Cols.HASH_TYPE))); assertEquals(100000000L, cursor.getLong(cursor.getColumnIndex(Cols.LAST_UPDATE_TIME))); - assertEquals("000111222333444555666777888999aaabbbcccdddeeefff", cursor.getString(cursor.getColumnIndex(Cols.SIGNATURE))); + assertEquals("000111222333444555666777888999aaabbbcccdddeeefff", + cursor.getString(cursor.getColumnIndex(Cols.SIGNATURE))); cursor.close(); } diff --git a/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java b/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java index 0a79aa83f..eeb7a485a 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java +++ b/app/src/test/java/org/fdroid/fdroid/data/ProviderUriTests.java @@ -22,6 +22,7 @@ import static org.fdroid.fdroid.Assert.assertValidUri; @Config(constants = BuildConfig.class, sdk = 24) @RunWith(RobolectricTestRunner.class) +@SuppressWarnings("LineLength") public class ProviderUriTests { private ShadowContentResolver resolver; diff --git a/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java b/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java index 2570ade73..31baab616 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/RepoProviderTest.java @@ -142,7 +142,8 @@ public class RepoProviderTest extends FDroidProviderTest { for (String url : urls) { Repo actualRepo = RepoProvider.Helper.findByUrl(context, Uri.parse(url), COLS); assertNotNull("No repo matching URL " + url, actualRepo); - assertEquals("Invalid repo for URL [" + url + "]. Expected [" + expectedRepo.address + "] but got [" + actualRepo.address + "]", expectedRepo.id, actualRepo.id); + assertEquals("Invalid repo for URL [" + url + "]. Expected [" + expectedRepo.address + "] but got [" + + actualRepo.address + "]", expectedRepo.id, actualRepo.id); } } @@ -253,7 +254,8 @@ public class RepoProviderTest extends FDroidProviderTest { return insertRepo(context, address, description, fingerprint, null); } - public static Repo insertRepo(Context context, String address, String description, String fingerprint, @Nullable String name) { + public static Repo insertRepo(Context context, String address, String description, + String fingerprint, @Nullable String name) { ContentValues values = new ContentValues(); values.put(RepoTable.Cols.ADDRESS, address); values.put(RepoTable.Cols.DESCRIPTION, description); diff --git a/app/src/test/java/org/fdroid/fdroid/data/SanitizedFileTest.java b/app/src/test/java/org/fdroid/fdroid/data/SanitizedFileTest.java index bdec2339c..a1415c425 100644 --- a/app/src/test/java/org/fdroid/fdroid/data/SanitizedFileTest.java +++ b/app/src/test/java/org/fdroid/fdroid/data/SanitizedFileTest.java @@ -29,7 +29,7 @@ public class SanitizedFileTest { assertEquals("safe", safeNotSanitized.getName()); assertEquals("$%^safe-and_bleh.boo*@~", nonEvilNotSanitized.getName()); - assertEquals("shadow;", evilNotSanitized.getName()); // Should be ;rm /etc/shadow; but the forward slashes are naughty. + assertEquals("shadow;", evilNotSanitized.getName()); SanitizedFile safeSanitized = new SanitizedFile(directory, safeFile); SanitizedFile nonEvilSanitized = new SanitizedFile(directory, nonEvilFile); diff --git a/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java b/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java index b8eaaf971..f72b9a8b5 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/FDroidRepoUpdateTest.java @@ -22,7 +22,7 @@ public class FDroidRepoUpdateTest extends MultiRepoUpdaterTest { private static final String REPO_FDROID = "F-Droid"; private static final String REPO_FDROID_URI = "https://f-droid.org/repo"; - private static final String REPO_FDROID_PUB_KEY = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; + private static final String REPO_FDROID_PUB_KEY = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; // NOCHECKSTYLE LineLength @Test public void doesntCrash() throws RepoUpdater.UpdateException { @@ -33,12 +33,14 @@ public class FDroidRepoUpdateTest extends MultiRepoUpdaterTest { protected void updateEarlier() throws RepoUpdater.UpdateException { Utils.debugLog(TAG, "Updating earlier version of F-Droid repo"); - updateRepo(createUpdater(REPO_FDROID, REPO_FDROID_URI, context, REPO_FDROID_PUB_KEY), "index.fdroid.2016-10-30.jar"); + updateRepo(createUpdater(REPO_FDROID, REPO_FDROID_URI, context, REPO_FDROID_PUB_KEY), + "index.fdroid.2016-10-30.jar"); } protected void updateLater() throws RepoUpdater.UpdateException { Utils.debugLog(TAG, "Updating later version of F-Droid repo"); - updateRepo(createUpdater(REPO_FDROID, REPO_FDROID_URI, context, REPO_FDROID_PUB_KEY), "index.fdroid.2016-11-10.jar"); + updateRepo(createUpdater(REPO_FDROID, REPO_FDROID_URI, context, REPO_FDROID_PUB_KEY), + "index.fdroid.2016-11-10.jar"); } } diff --git a/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java b/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java index e44ae40a0..8447be3c2 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/IndexV1UpdaterTest.java @@ -56,7 +56,7 @@ public class IndexV1UpdaterTest extends FDroidProviderTest { private static final long FAKE_REPO_ID = 0xdeadbeef; private static final String TESTY_JAR = "testy.at.or.at_index-v1.jar"; - private static final String TESTY_CERT = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; + private static final String TESTY_CERT = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; // NOCHECKSTYLE LineLength @Before public void setup() { @@ -83,7 +83,7 @@ public class IndexV1UpdaterTest extends FDroidProviderTest { @Test(expected = RepoUpdater.SigningException.class) public void testIndexV1WithWrongCert() throws IOException, RepoUpdater.UpdateException { - String badCert = "308202ed308201d5a003020102020426ffa009300d06092a864886f70d01010b05003027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a656374301e170d3132313030363132303533325a170d3337303933303132303533325a3027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a65637430820122300d06092a864886f70d01010105000382010f003082010a02820101009a8d2a5336b0eaaad89ce447828c7753b157459b79e3215dc962ca48f58c2cd7650df67d2dd7bda0880c682791f32b35c504e43e77b43c3e4e541f86e35a8293a54fb46e6b16af54d3a4eda458f1a7c8bc1b7479861ca7043337180e40079d9cdccb7e051ada9b6c88c9ec635541e2ebf0842521c3024c826f6fd6db6fd117c74e859d5af4db04448965ab5469b71ce719939a06ef30580f50febf96c474a7d265bb63f86a822ff7b643de6b76e966a18553c2858416cf3309dd24278374bdd82b4404ef6f7f122cec93859351fc6e5ea947e3ceb9d67374fe970e593e5cd05c905e1d24f5a5484f4aadef766e498adf64f7cf04bddd602ae8137b6eea40722d0203010001a321301f301d0603551d0e04160414110b7aa9ebc840b20399f69a431f4dba6ac42a64300d06092a864886f70d01010b0500038201010007c32ad893349cf86952fb5a49cfdc9b13f5e3c800aece77b2e7e0e9c83e34052f140f357ec7e6f4b432dc1ed542218a14835acd2df2deea7efd3fd5e8f1c34e1fb39ec6a427c6e6f4178b609b369040ac1f8844b789f3694dc640de06e44b247afed11637173f36f5886170fafd74954049858c6096308fc93c1bc4dd5685fa7a1f982a422f2a3b36baa8c9500474cf2af91c39cbec1bc898d10194d368aa5e91f1137ec115087c31962d8f76cd120d28c249cf76f4c70f5baa08c70a7234ce4123be080cee789477401965cfe537b924ef36747e8caca62dfefdd1a6288dcb1c4fd2aaa6131a7ad254e9742022cfd597d2ca5c660ce9e41ff537e5a4041e37"; + String badCert = "308202ed308201d5a003020102020426ffa009300d06092a864886f70d01010b05003027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a656374301e170d3132313030363132303533325a170d3337303933303132303533325a3027310b300906035504061302444531183016060355040a130f4e4f47415050532050726f6a65637430820122300d06092a864886f70d01010105000382010f003082010a02820101009a8d2a5336b0eaaad89ce447828c7753b157459b79e3215dc962ca48f58c2cd7650df67d2dd7bda0880c682791f32b35c504e43e77b43c3e4e541f86e35a8293a54fb46e6b16af54d3a4eda458f1a7c8bc1b7479861ca7043337180e40079d9cdccb7e051ada9b6c88c9ec635541e2ebf0842521c3024c826f6fd6db6fd117c74e859d5af4db04448965ab5469b71ce719939a06ef30580f50febf96c474a7d265bb63f86a822ff7b643de6b76e966a18553c2858416cf3309dd24278374bdd82b4404ef6f7f122cec93859351fc6e5ea947e3ceb9d67374fe970e593e5cd05c905e1d24f5a5484f4aadef766e498adf64f7cf04bddd602ae8137b6eea40722d0203010001a321301f301d0603551d0e04160414110b7aa9ebc840b20399f69a431f4dba6ac42a64300d06092a864886f70d01010b0500038201010007c32ad893349cf86952fb5a49cfdc9b13f5e3c800aece77b2e7e0e9c83e34052f140f357ec7e6f4b432dc1ed542218a14835acd2df2deea7efd3fd5e8f1c34e1fb39ec6a427c6e6f4178b609b369040ac1f8844b789f3694dc640de06e44b247afed11637173f36f5886170fafd74954049858c6096308fc93c1bc4dd5685fa7a1f982a422f2a3b36baa8c9500474cf2af91c39cbec1bc898d10194d368aa5e91f1137ec115087c31962d8f76cd120d28c249cf76f4c70f5baa08c70a7234ce4123be080cee789477401965cfe537b924ef36747e8caca62dfefdd1a6288dcb1c4fd2aaa6131a7ad254e9742022cfd597d2ca5c660ce9e41ff537e5a4041e37"; // NOCHECKSTYLE LineLength Repo repo = MultiRepoUpdaterTest.createRepo("Testy", TESTY_JAR, context, badCert); IndexV1Updater updater = new IndexV1Updater(context, repo); JarFile jarFile = new JarFile(TestUtils.copyResourceToTempFile(TESTY_JAR), true); diff --git a/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java b/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java index ad59b3d61..22bab5077 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/Issue763MultiRepo.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; @Config(constants = BuildConfig.class, sdk = 24) @RunWith(RobolectricTestRunner.class) +@SuppressWarnings("LineLength") public class Issue763MultiRepo extends MultiRepoUpdaterTest { private Repo microGRepo; diff --git a/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java b/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java index f8f55dc0d..7e776adf6 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/ProperMultiRepoUpdaterTest.java @@ -36,6 +36,7 @@ import static org.junit.Assert.assertNotNull; @Config(constants = BuildConfig.class, sdk = 24, shadows = ProperMultiRepoUpdaterTest.ArmSystemProperties.class) @RunWith(RobolectricTestRunner.class) +@SuppressWarnings("LineLength") public class ProperMultiRepoUpdaterTest extends MultiRepoUpdaterTest { private static final String TAG = "ProperMultiRepoSupport"; diff --git a/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java b/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java index b9f7f9e70..9d6878e3f 100644 --- a/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java +++ b/app/src/test/java/org/fdroid/fdroid/updater/RepoXMLHandlerTest.java @@ -25,7 +25,6 @@ package org.fdroid.fdroid.updater; import android.support.annotation.NonNull; import android.text.TextUtils; import android.util.Log; - import org.apache.commons.io.FileUtils; import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.data.Apk; @@ -61,7 +60,7 @@ import static org.junit.Assert.assertTrue; public class RepoXMLHandlerTest { private static final String TAG = "RepoXMLHandlerTest"; - private static final String FAKE_SIGNING_CERT = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345"; + private static final String FAKE_SIGNING_CERT = "012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345"; // NOCHECKSTYLE LineLength @Before public void setUp() { @@ -72,7 +71,7 @@ public class RepoXMLHandlerTest { public void testExtendedPerms() throws IOException { Repo expectedRepo = new Repo(); expectedRepo.name = "F-Droid"; - expectedRepo.signingCertificate = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; + expectedRepo.signingCertificate = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; // NOCHECKSTYLE LineLength expectedRepo.description = "This is just a test of the extended permissions attributes."; expectedRepo.timestamp = 1467169032; RepoDetails actualDetails = getFromFile("extendedPerms.xml"); @@ -104,8 +103,8 @@ public class RepoXMLHandlerTest { public void testSimpleIndex() { Repo expectedRepo = new Repo(); expectedRepo.name = "F-Droid"; - expectedRepo.signingCertificate = "308201ee30820157a0030201020204300d845b300d06092a864886f70d01010b0500302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e301e170d3134303432373030303633315a170d3431303931323030303633315a302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e30819f300d06092a864886f70d010101050003818d0030818902818100a439472e4b6d01141bfc94ecfe131c7c728fdda670bb14c57ca60bd1c38a8b8bc0879d22a0a2d0bc0d6fdd4cb98d1d607c2caefbe250a0bd0322aedeb365caf9b236992fac13e6675d3184a6c7c6f07f73410209e399a9da8d5d7512bbd870508eebacff8b57c3852457419434d34701ccbf692267cbc3f42f1c5d1e23762d790203010001a321301f301d0603551d0e041604140b1840691dab909746fde4bfe28207d1cae15786300d06092a864886f70d01010b05000381810062424c928ffd1b6fd419b44daafef01ca982e09341f7077fb865905087aeac882534b3bd679b51fdfb98892cef38b63131c567ed26c9d5d9163afc775ac98ad88c405d211d6187bde0b0d236381cc574ba06ef9080721a92ae5a103a7301b2c397eecc141cc850dd3e123813ebc41c59d31ddbcb6e984168280c53272f6a442b"; - expectedRepo.description = "The official repository of the F-Droid client. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitorious.org/f-droid."; + expectedRepo.signingCertificate = "308201ee30820157a0030201020204300d845b300d06092a864886f70d01010b0500302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e301e170d3134303432373030303633315a170d3431303931323030303633315a302a3110300e060355040b1307462d44726f6964311630140603550403130d70616c6174736368696e6b656e30819f300d06092a864886f70d010101050003818d0030818902818100a439472e4b6d01141bfc94ecfe131c7c728fdda670bb14c57ca60bd1c38a8b8bc0879d22a0a2d0bc0d6fdd4cb98d1d607c2caefbe250a0bd0322aedeb365caf9b236992fac13e6675d3184a6c7c6f07f73410209e399a9da8d5d7512bbd870508eebacff8b57c3852457419434d34701ccbf692267cbc3f42f1c5d1e23762d790203010001a321301f301d0603551d0e041604140b1840691dab909746fde4bfe28207d1cae15786300d06092a864886f70d01010b05000381810062424c928ffd1b6fd419b44daafef01ca982e09341f7077fb865905087aeac882534b3bd679b51fdfb98892cef38b63131c567ed26c9d5d9163afc775ac98ad88c405d211d6187bde0b0d236381cc574ba06ef9080721a92ae5a103a7301b2c397eecc141cc850dd3e123813ebc41c59d31ddbcb6e984168280c53272f6a442b"; // NOCHECKSTYLE LineLength + expectedRepo.description = "The official repository of the F-Droid client. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitorious.org/f-droid."; // NOCHECKSTYLE LineLength expectedRepo.timestamp = 1398733213; RepoDetails actualDetails = getFromFile("simpleIndex.xml"); handlerTestSuite(expectedRepo, actualDetails, 0, 0, -1, 12); @@ -115,7 +114,7 @@ public class RepoXMLHandlerTest { public void testSmallRepo() { Repo expectedRepo = new Repo(); expectedRepo.name = "Android-Nexus-7-20139453 on UNSET"; - expectedRepo.signingCertificate = "308202da308201c2a00302010202080eb08c796fec91aa300d06092a864886f70d0101050500302d3111300f060355040a0c084b6572706c61707031183016060355040b0c0f477561726469616e50726f6a656374301e170d3134313030333135303631325a170d3135313030333135303631325a302d3111300f060355040a0c084b6572706c61707031183016060355040b0c0f477561726469616e50726f6a65637430820122300d06092a864886f70d01010105000382010f003082010a0282010100c7ab44b130be5c00eedcc3625462f6f6ac26e502641cd641f3e30cbb0ff1ba325158611e7fc2448a35b6a6df30dc6e23602cf6909448befcf11e2fe486b580f1e76fe5887d159050d00afd2c4079f6538896bb200627f4b3e874f011ce5df0fef5d150fcb0b377b531254e436eaf4083ea72fe3b8c3ef450789fa858f2be8f6c5335bb326aff3dda689fbc7b5ba98dea53651dbea7452c38d294985ac5dd8a9e491a695de92c706d682d6911411fcaef3b0a08a030fe8a84e47acaab0b7edcda9d190ce39e810b79b1d8732eca22b15f0d048c8d6f00503a7ee81ab6e08919ff465883432304d95238b95e95c5f74e0a421809e2a6a85825aed680e0d6939e8f0203010001300d06092a864886f70d010105050003820101006d17aad3271b8b2c299dbdb7b1182849b0d5ddb9f1016dcb3487ae0db02b6be503344c7d066e2050bcd01d411b5ee78c7ed450f0ff9da5ce228f774cbf41240361df53d9c6078159d16f4d34379ab7dedf6186489397c83b44b964251a2ebb42b7c4689a521271b1056d3b5a5fa8f28ba64fb8ce5e2226c33c45d27ba3f632dc266c12abf582b8438c2abcf3eae9de9f31152b4158ace0ef33435c20eb809f1b3988131db6e5a1442f2617c3491d9565fedb3e320e8df4236200d3bd265e47934aa578f84d0d1a5efeb49b39907e876452c46996d0feff9404b41aa5631b4482175d843d5512ded45e12a514690646492191e7add434afce63dbff8f0b03ec0c"; + expectedRepo.signingCertificate = "308202da308201c2a00302010202080eb08c796fec91aa300d06092a864886f70d0101050500302d3111300f060355040a0c084b6572706c61707031183016060355040b0c0f477561726469616e50726f6a656374301e170d3134313030333135303631325a170d3135313030333135303631325a302d3111300f060355040a0c084b6572706c61707031183016060355040b0c0f477561726469616e50726f6a65637430820122300d06092a864886f70d01010105000382010f003082010a0282010100c7ab44b130be5c00eedcc3625462f6f6ac26e502641cd641f3e30cbb0ff1ba325158611e7fc2448a35b6a6df30dc6e23602cf6909448befcf11e2fe486b580f1e76fe5887d159050d00afd2c4079f6538896bb200627f4b3e874f011ce5df0fef5d150fcb0b377b531254e436eaf4083ea72fe3b8c3ef450789fa858f2be8f6c5335bb326aff3dda689fbc7b5ba98dea53651dbea7452c38d294985ac5dd8a9e491a695de92c706d682d6911411fcaef3b0a08a030fe8a84e47acaab0b7edcda9d190ce39e810b79b1d8732eca22b15f0d048c8d6f00503a7ee81ab6e08919ff465883432304d95238b95e95c5f74e0a421809e2a6a85825aed680e0d6939e8f0203010001300d06092a864886f70d010105050003820101006d17aad3271b8b2c299dbdb7b1182849b0d5ddb9f1016dcb3487ae0db02b6be503344c7d066e2050bcd01d411b5ee78c7ed450f0ff9da5ce228f774cbf41240361df53d9c6078159d16f4d34379ab7dedf6186489397c83b44b964251a2ebb42b7c4689a521271b1056d3b5a5fa8f28ba64fb8ce5e2226c33c45d27ba3f632dc266c12abf582b8438c2abcf3eae9de9f31152b4158ace0ef33435c20eb809f1b3988131db6e5a1442f2617c3491d9565fedb3e320e8df4236200d3bd265e47934aa578f84d0d1a5efeb49b39907e876452c46996d0feff9404b41aa5631b4482175d843d5512ded45e12a514690646492191e7add434afce63dbff8f0b03ec0c"; // NOCHECKSTYLE LineLength expectedRepo.description = "A local FDroid repo generated from apps installed on Android-Nexus-7-20139453"; expectedRepo.timestamp = 1412696461; RepoDetails actualDetails = getFromFile("smallRepo.xml"); @@ -140,8 +139,8 @@ public class RepoXMLHandlerTest { public void testPushRequestsRepoIgnore() { Repo expectedRepo = new Repo(); expectedRepo.name = "non-public test repo"; - expectedRepo.signingCertificate = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; - expectedRepo.description = "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid."; + expectedRepo.signingCertificate = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; // NOCHECKSTYLE LineLength + expectedRepo.description = "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid."; // NOCHECKSTYLE LineLength expectedRepo.timestamp = 1472071347; RepoDetails actualDetails = getFromFile("pushRequestsIndex.xml", Repo.PUSH_REQUEST_IGNORE); handlerTestSuite(expectedRepo, actualDetails, 2, 14, -1, 17); @@ -156,8 +155,8 @@ public class RepoXMLHandlerTest { public void testPushRequestsRepoAlways() { Repo expectedRepo = new Repo(); expectedRepo.name = "non-public test repo"; - expectedRepo.signingCertificate = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; - expectedRepo.description = "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid."; + expectedRepo.signingCertificate = "308204e1308202c9a0030201020204483450fa300d06092a864886f70d01010b050030213110300e060355040b1307462d44726f6964310d300b06035504031304736f7661301e170d3136303832333133333131365a170d3434303130393133333131365a30213110300e060355040b1307462d44726f6964310d300b06035504031304736f766130820222300d06092a864886f70d01010105000382020f003082020a0282020100dfdcd120f3ab224999dddf4ea33ea588d295e4d7130bef48c143e9d76e5c0e0e9e5d45e64208e35feebc79a83f08939dd6a343b7d1e2179930a105a1249ccd36d88ff3feffc6e4dc53dae0163a7876dd45ecc1ddb0adf5099aa56c1a84b52affcd45d0711ffa4de864f35ac0333ebe61ea8673eeda35a88f6af678cc4d0f80b089338ac8f2a8279a64195c611d19445cab3fd1a020afed9bd739bb95142fb2c00a8f847db5ef3325c814f8eb741bacf86ed3907bfe6e4564d2de5895df0c263824e0b75407589bae2d3a4666c13b92102d8781a8ee9bb4a5a1a78c4a9c21efdaf5584da42e84418b28f5a81d0456a3dc5b420991801e6b21e38c99bbe018a5b2d690894a114bc860d35601416aa4dc52216aff8a288d4775cddf8b72d45fd2f87303a8e9c0d67e442530be28eaf139894337266e0b33d57f949256ab32083bcc545bc18a83c9ab8247c12aea037e2b68dee31c734cb1f04f241d3b94caa3a2b258ffaf8e6eae9fbbe029a934dc0a0859c5f120334812693a1c09352340a39f2a678dbc1afa2a978bfee43afefcb7e224a58af2f3d647e5745db59061236b8af6fcfd93b3602f9e456978534f3a7851e800071bf56da80401c81d91c45f82568373af0576b1cc5eef9b85654124b6319770be3cdba3fbebe3715e8918fb6c8966624f3d0e815effac3d2ee06dd34ab9c693218b2c7c06ba99d6b74d4f17b8c3cb0203010001a321301f301d0603551d0e04160414d62bee9f3798509546acc62eb1de14b08b954d4f300d06092a864886f70d01010b05000382020100743f7c5692085895f9d1fffad390fb4202c15f123ed094df259185960fd6dadf66cb19851070f180297bba4e6996a4434616573b375cfee94fee73a4505a7ec29136b7e6c22e6436290e3686fe4379d4e3140ec6a08e70cfd3ed5b634a5eb5136efaaabf5f38e0432d3d79568a556970b8cfba2972f5d23a3856d8a981b9e9bbbbb88f35e708bde9cbc5f681cbd974085b9da28911296fe2579fa64bbe9fa0b93475a7a8db051080b0c5fade0d1c018e7858cd4cbe95145b0620e2f632cbe0f8af9cbf22e2fdaa72245ae31b0877b07181cc69dd2df74454251d8de58d25e76354abe7eb690f22e59b08795a8f2c98c578e0599503d9085927634072c82c9f82abd50fd12b8fd1a9d1954eb5cc0b4cfb5796b5aaec0356643b4a65a368442d92ef94edd3ac6a2b7fe3571b8cf9f462729228aab023ef9183f73792f5379633ccac51079177d604c6bc1873ada6f07d8da6d68c897e88a5fa5d63fdb8df820f46090e0716e7562dd3c140ba279a65b996f60addb0abe29d4bf2f5abe89480771d492307b926d91f02f341b2148502903c43d40f3c6c86a811d060711f0698b384acdcc0add44eb54e42962d3d041accc715afd49407715adc09350cb55e8d9281a3b0b6b5fcd91726eede9b7c8b13afdebb2c2b377629595f1096ba62fb14946dbac5f3c5f0b4e5b712e7acc7dcf6c46cdc5e6d6dfdeee55a0c92c2d70f080ac6"; // NOCHECKSTYLE LineLength + expectedRepo.description = "This is a repository of apps to be used with F-Droid. Applications in this repository are either official binaries built by the original application developers, or are binaries built from source by the admin of f-droid.org using the tools on https://gitlab.com/u/fdroid."; // NOCHECKSTYLE LineLength expectedRepo.timestamp = 1472071347; RepoDetails actualDetails = getFromFile("pushRequestsIndex.xml", Repo.PUSH_REQUEST_ACCEPT_ALWAYS); handlerTestSuite(expectedRepo, actualDetails, 2, 14, -1, 17); @@ -172,8 +171,8 @@ public class RepoXMLHandlerTest { public void testMediumRepo() { Repo expectedRepo = new Repo(); expectedRepo.name = "Guardian Project Official Releases"; - expectedRepo.signingCertificate = "308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f"; - expectedRepo.description = "The official app repository of The Guardian Project. Applications in this repository are official binaries build by the original application developers and signed by the same key as the APKs that are released in the Google Play store."; + expectedRepo.signingCertificate = "308205d8308203c0020900a397b4da7ecda034300d06092a864886f70d01010505003081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f301e170d3134303632363139333931385a170d3431313131303139333931385a3081ad310b30090603550406130255533111300f06035504080c084e657720596f726b3111300f06035504070c084e657720596f726b31143012060355040b0c0b4644726f6964205265706f31193017060355040a0c10477561726469616e2050726f6a656374311d301b06035504030c14677561726469616e70726f6a6563742e696e666f3128302606092a864886f70d0109011619726f6f7440677561726469616e70726f6a6563742e696e666f30820222300d06092a864886f70d01010105000382020f003082020a0282020100b3cd79121b9b883843be3c4482e320809106b0a23755f1dd3c7f46f7d315d7bb2e943486d61fc7c811b9294dcc6b5baac4340f8db2b0d5e14749e7f35e1fc211fdbc1071b38b4753db201c314811bef885bd8921ad86facd6cc3b8f74d30a0b6e2e6e576f906e9581ef23d9c03e926e06d1f033f28bd1e21cfa6a0e3ff5c9d8246cf108d82b488b9fdd55d7de7ebb6a7f64b19e0d6b2ab1380a6f9d42361770d1956701a7f80e2de568acd0bb4527324b1e0973e89595d91c8cc102d9248525ae092e2c9b69f7414f724195b81427f28b1d3d09a51acfe354387915fd9521e8c890c125fc41a12bf34d2a1b304067ab7251e0e9ef41833ce109e76963b0b256395b16b886bca21b831f1408f836146019e7908829e716e72b81006610a2af08301de5d067c9e114a1e5759db8a6be6a3cc2806bcfe6fafd41b5bc9ddddb3dc33d6f605b1ca7d8a9e0ecdd6390d38906649e68a90a717bea80fa220170eea0c86fc78a7e10dac7b74b8e62045a3ecca54e035281fdc9fe5920a855fde3c0be522e3aef0c087524f13d973dff3768158b01a5800a060c06b451ec98d627dd052eda804d0556f60dbc490d94e6e9dea62ffcafb5beffbd9fc38fb2f0d7050004fe56b4dda0a27bc47554e1e0a7d764e17622e71f83a475db286bc7862deee1327e2028955d978272ea76bf0b88e70a18621aba59ff0c5993ef5f0e5d6b6b98e68b70203010001300d06092a864886f70d0101050500038202010079c79c8ef408a20d243d8bd8249fb9a48350dc19663b5e0fce67a8dbcb7de296c5ae7bbf72e98a2020fb78f2db29b54b0e24b181aa1c1d333cc0303685d6120b03216a913f96b96eb838f9bff125306ae3120af838c9fc07ebb5100125436bd24ec6d994d0bff5d065221871f8410daf536766757239bf594e61c5432c9817281b985263bada8381292e543a49814061ae11c92a316e7dc100327b59e3da90302c5ada68c6a50201bda1fcce800b53f381059665dbabeeb0b50eb22b2d7d2d9b0aa7488ca70e67ac6c518adb8e78454a466501e89d81a45bf1ebc350896f2c3ae4b6679ecfbf9d32960d4f5b493125c7876ef36158562371193f600bc511000a67bdb7c664d018f99d9e589868d103d7e0994f166b2ba18ff7e67d8c4da749e44dfae1d930ae5397083a51675c409049dfb626a96246c0015ca696e94ebb767a20147834bf78b07fece3f0872b057c1c519ff882501995237d8206b0b3832f78753ebd8dcbd1d3d9f5ba733538113af6b407d960ec4353c50eb38ab29888238da843cd404ed8f4952f59e4bbc0035fc77a54846a9d419179c46af1b4a3b7fc98e4d312aaa29b9b7d79e739703dc0fa41c7280d5587709277ffa11c3620f5fba985b82c238ba19b17ebd027af9424be0941719919f620dd3bb3c3f11638363708aa11f858e153cf3a69bce69978b90e4a273836100aa1e617ba455cd00426847f"; // NOCHECKSTYLE LineLength + expectedRepo.description = "The official app repository of The Guardian Project. Applications in this repository are official binaries build by the original application developers and signed by the same key as the APKs that are released in the Google Play store."; // NOCHECKSTYLE LineLength expectedRepo.timestamp = 1411427879; RepoDetails actualDetails = getFromFile("mediumRepo.xml"); handlerTestSuite(expectedRepo, actualDetails, 15, 36, 60, 12); @@ -200,14 +199,14 @@ public class RepoXMLHandlerTest { public void testLargeRepo() { Repo expectedRepo = new Repo(); expectedRepo.name = "F-Droid"; - expectedRepo.signingCertificate = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; - expectedRepo.description = "The official FDroid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time."; + expectedRepo.signingCertificate = "3082035e30820246a00302010202044c49cd00300d06092a864886f70d01010505003071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b73301e170d3130303732333137313032345a170d3337313230383137313032345a3071310b300906035504061302554b3110300e06035504081307556e6b6e6f776e3111300f0603550407130857657468657262793110300e060355040a1307556e6b6e6f776e3110300e060355040b1307556e6b6e6f776e311930170603550403131043696172616e2047756c746e69656b7330820122300d06092a864886f70d01010105000382010f003082010a028201010096d075e47c014e7822c89fd67f795d23203e2a8843f53ba4e6b1bf5f2fd0e225938267cfcae7fbf4fe596346afbaf4070fdb91f66fbcdf2348a3d92430502824f80517b156fab00809bdc8e631bfa9afd42d9045ab5fd6d28d9e140afc1300917b19b7c6c4df4a494cf1f7cb4a63c80d734265d735af9e4f09455f427aa65a53563f87b336ca2c19d244fcbba617ba0b19e56ed34afe0b253ab91e2fdb1271f1b9e3c3232027ed8862a112f0706e234cf236914b939bcf959821ecb2a6c18057e070de3428046d94b175e1d89bd795e535499a091f5bc65a79d539a8d43891ec504058acb28c08393b5718b57600a211e803f4a634e5c57f25b9b8c4422c6fd90203010001300d06092a864886f70d0101050500038201010008e4ef699e9807677ff56753da73efb2390d5ae2c17e4db691d5df7a7b60fc071ae509c5414be7d5da74df2811e83d3668c4a0b1abc84b9fa7d96b4cdf30bba68517ad2a93e233b042972ac0553a4801c9ebe07bf57ebe9a3b3d6d663965260e50f3b8f46db0531761e60340a2bddc3426098397fda54044a17e5244549f9869b460ca5e6e216b6f6a2db0580b480ca2afe6ec6b46eedacfa4aa45038809ece0c5978653d6c85f678e7f5a2156d1bedd8117751e64a4b0dcd140f3040b021821a8d93aed8d01ba36db6c82372211fed714d9a32607038cdfd565bd529ffc637212aaa2c224ef22b603eccefb5bf1e085c191d4b24fe742b17ab3f55d4e6f05ef"; // NOCHECKSTYLE LineLength + expectedRepo.description = "The official FDroid repository. Applications in this repository are mostly built directory from the source code. Some are official binaries built by the original application developers - these will be replaced by source-built versions over time."; // NOCHECKSTYLE LineLength expectedRepo.timestamp = 1412746769; RepoDetails actualDetails = getFromFile("largeRepo.xml"); handlerTestSuite(expectedRepo, actualDetails, 1211, 2381, 14, 12); // Generated using something like the following: - // sed 's,\(.*\).*,\1 \2,p' | sort | uniq + // sed 's,\(.*\).*,\1 \2,p' | sort | uniq // NOCHECKSTYLE LineLength Map> expectedAntiFeatures = new HashMap<>(); expectedAntiFeatures.put("org.fdroid.fdroid", new ArrayList()); expectedAntiFeatures.put("org.adblockplus.android", Arrays.asList("Tracking", "Ads")); @@ -807,7 +806,8 @@ public class RepoXMLHandlerTest { } } - private void handlerTestSuite(Repo expectedRepo, RepoDetails actualDetails, int appCount, int apkCount, int maxAge, int version) { + private void handlerTestSuite(Repo expectedRepo, RepoDetails actualDetails, + int appCount, int apkCount, int maxAge, int version) { assertNotNull(actualDetails); assertFalse(TextUtils.isEmpty(actualDetails.signingCert)); assertEquals(expectedRepo.signingCertificate.length(), actualDetails.signingCert.length()); diff --git a/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java b/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java index 1cb95465f..73bbe5bf2 100644 --- a/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java +++ b/app/src/test/java/org/fdroid/fdroid/views/AppDetailsAdapterTest.java @@ -5,10 +5,8 @@ import android.content.ContentValues; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.ViewGroup; - import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.ImageLoaderConfiguration; - import org.fdroid.fdroid.Assert; import org.fdroid.fdroid.BuildConfig; import org.fdroid.fdroid.Preferences; @@ -41,7 +39,8 @@ public class AppDetailsAdapterTest extends FDroidProviderTest { Preferences.setup(context); Repo repo = RepoProviderTest.insertRepo(context, "http://www.example.com/fdroid/repo", "", "", "Test Repo"); - app = AppProviderTest.insertApp(contentResolver, context, "com.example.app", "Test App", new ContentValues(), repo.getId()); + app = AppProviderTest.insertApp(contentResolver, context, "com.example.app", "Test App", + new ContentValues(), repo.getId()); } @After @@ -61,7 +60,7 @@ public class AppDetailsAdapterTest extends FDroidProviderTest { @Test public void appWithScreenshots() { - app.phoneScreenshots = new String[] {"screenshot1.png", "screenshot2.png"}; + app.phoneScreenshots = new String[]{"screenshot1.png", "screenshot2.png"}; AppDetailsRecyclerViewAdapter adapter = new AppDetailsRecyclerViewAdapter(context, app, dummyCallbacks); populateViewHolders(adapter); @@ -102,7 +101,7 @@ public class AppDetailsAdapterTest extends FDroidProviderTest { } } - private final AppDetailsRecyclerViewAdapter.AppDetailsRecyclerViewAdapterCallbacks dummyCallbacks = new AppDetailsRecyclerViewAdapter.AppDetailsRecyclerViewAdapterCallbacks() { + private final AppDetailsRecyclerViewAdapter.AppDetailsRecyclerViewAdapterCallbacks dummyCallbacks = new AppDetailsRecyclerViewAdapter.AppDetailsRecyclerViewAdapterCallbacks() { // NOCHECKSTYLE LineLength @Override public boolean isAppDownloading() { return false; diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index a18e6537c..ba027aa0e 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -14,6 +14,10 @@ + + + + @@ -127,6 +131,14 @@ + + + + + + + +