├── app
└── src
│ ├── main
│ ├── res
│ │ ├── values-in
│ │ ├── values-iw
│ │ ├── drawable-hdpi
│ │ │ ├── ic_coins_s.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_file_install.png
│ │ │ ├── ic_repo_app_default.png
│ │ │ └── tab_unselected_holo.9.png
│ │ ├── drawable-mdpi
│ │ │ ├── ic_coins_s.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_file_install.png
│ │ │ ├── ic_repo_app_default.png
│ │ │ └── tab_unselected_holo.9.png
│ │ ├── drawable
│ │ │ ├── category_games.png
│ │ │ ├── category_money.png
│ │ │ ├── category_system.png
│ │ │ ├── swap_qr_example.png
│ │ │ ├── category_graphics.png
│ │ │ ├── category_internet.png
│ │ │ ├── category_reading.png
│ │ │ ├── category_security.png
│ │ │ ├── category_theming.png
│ │ │ ├── category_writing.png
│ │ │ ├── category_development.png
│ │ │ ├── category_navigation.png
│ │ │ ├── seekbar_background.9.png
│ │ │ ├── category_connectivity.png
│ │ │ ├── category_science_education.png
│ │ │ ├── details_panel_donate_background_dark.xml
│ │ │ ├── details_panel_donate_background_light.xml
│ │ │ ├── app_version_item_status_new.xml
│ │ │ ├── app_version_item_status_installed.xml
│ │ │ ├── app_version_item_status_suggested.xml
│ │ │ ├── app_version_item_status_incompatible.xml
│ │ │ ├── category_preview_app_card_background_dark.xml
│ │ │ ├── category_preview_app_card_background_light.xml
│ │ │ ├── seekbar_tickmark.xml
│ │ │ ├── seekbar_thumb.xml
│ │ │ ├── ic_sort.xml
│ │ │ ├── ic_source_code.xml
│ │ │ ├── ic_expand_less.xml
│ │ │ ├── ic_add.xml
│ │ │ ├── ic_changelog.xml
│ │ │ ├── screenshot_placeholder.xml
│ │ │ ├── ic_error.xml
│ │ │ ├── ic_cancel.xml
│ │ │ ├── ic_refresh.xml
│ │ │ ├── ic_video.xml
│ │ │ ├── ic_warning.xml
│ │ │ ├── ic_website.xml
│ │ │ ├── ic_delete.xml
│ │ │ ├── ic_categories.xml
│ │ │ ├── ic_file_download.xml
│ │ │ ├── ic_lock.xml
│ │ │ ├── ic_email.xml
│ │ │ ├── ic_expand_more.xml
│ │ │ ├── app_version_button_bg_selector_downgrade.xml
│ │ │ ├── ic_close.xml
│ │ │ ├── ic_clear.xml
│ │ │ ├── ic_translation.xml
│ │ │ ├── ic_notifications_off.xml
│ │ │ ├── ic_updates.xml
│ │ │ ├── ic_search.xml
│ │ │ ├── ic_versions.xml
│ │ │ ├── ic_last_updated.xml
│ │ │ ├── ic_link.xml
│ │ │ ├── ic_share.xml
│ │ │ ├── ic_donate.xml
│ │ │ ├── ic_nfc.xml
│ │ │ ├── no_updates_bg.xml
│ │ │ ├── ic_notifications_paused.xml
│ │ │ ├── ic_latest.xml
│ │ │ ├── ic_antifeature_nosourcesince.xml
│ │ │ ├── ic_settings.xml
│ │ │ ├── ic_download_progress_0.xml
│ │ │ ├── ic_notification_download.xml
│ │ │ ├── ic_perm_device_info.xml
│ │ │ └── ic_license.xml
│ │ ├── drawable-ldpi
│ │ │ ├── ic_launcher.png
│ │ │ └── ic_repo_app_default.png
│ │ ├── drawable-xhdpi
│ │ │ ├── ic_coins_s.png
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_file_install.png
│ │ │ ├── ic_repo_app_default.png
│ │ │ └── tab_unselected_holo.9.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_file_install.png
│ │ │ ├── ic_repo_app_default.png
│ │ │ └── tab_unselected_holo.9.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── ic_launcher.png
│ │ │ ├── ic_file_install.png
│ │ │ └── ic_repo_app_default.png
│ │ ├── xml
│ │ │ ├── apk_file_provider.xml
│ │ │ ├── searchable.xml
│ │ │ ├── backup_rules.xml
│ │ │ ├── installer_file_provider.xml
│ │ │ └── network_security_config.xml
│ │ ├── values-v17
│ │ │ ├── styles_detail.xml
│ │ │ └── styles.xml
│ │ ├── layout
│ │ │ ├── main_tab_settings.xml
│ │ │ ├── activity_screenshots.xml
│ │ │ ├── donate_liberapay.xml
│ │ │ ├── donate_generic.xml
│ │ │ ├── donate_opencollective.xml
│ │ │ ├── donate_bitcoin.xml
│ │ │ ├── donate_litecoin.xml
│ │ │ ├── app_details2_link_item.xml
│ │ │ ├── fab_search.xml
│ │ │ ├── app_details2_screenshot_item.xml
│ │ │ ├── app_details2_screenshots.xml
│ │ │ ├── activity_screenshots_page.xml
│ │ │ ├── listitem_antifeaturelisting.xml
│ │ │ ├── activity_main.xml
│ │ │ ├── install_start.xml
│ │ │ └── repo_list_activity.xml
│ │ ├── layout-v14
│ │ │ ├── app_status_new.xml
│ │ │ └── app_status_suggested.xml
│ │ ├── values-v21
│ │ │ └── styles_detail.xml
│ │ ├── values-sw720dp-v21
│ │ │ └── dimens.xml
│ │ ├── drawable-v23
│ │ │ └── seekbar_background.xml
│ │ ├── menu
│ │ │ ├── installed_apps.xml
│ │ │ ├── manage_repos.xml
│ │ │ ├── install_history.xml
│ │ │ ├── repo_details_activity.xml
│ │ │ ├── details2.xml
│ │ │ └── main_activity_screens.xml
│ │ ├── values-sw360dp-v13
│ │ │ └── values-preference.xml
│ │ ├── values
│ │ │ ├── ids.xml
│ │ │ ├── config.xml
│ │ │ ├── attrs.xml
│ │ │ └── type.xml
│ │ ├── values-v16
│ │ │ └── styles.xml
│ │ └── drawable-anydpi-v21
│ │ │ └── ic_file_install.xml
│ ├── assets
│ │ ├── swap-icon.png
│ │ ├── swap-tick-done.png
│ │ └── swap-tick-not-done.png
│ ├── java
│ │ └── org
│ │ │ └── fdroid
│ │ │ └── fdroid
│ │ │ ├── compat
│ │ │ ├── CursorAdapterCompat.java
│ │ │ └── SupportedArchitectures.java
│ │ │ ├── nearby
│ │ │ ├── httpish
│ │ │ │ ├── ETagHeader.java
│ │ │ │ ├── ContentLengthHeader.java
│ │ │ │ ├── FileDetails.java
│ │ │ │ └── Header.java
│ │ │ └── BluetoothConstants.java
│ │ │ ├── data
│ │ │ ├── ValueObject.java
│ │ │ └── OrderClause.java
│ │ │ ├── acra
│ │ │ └── CrashReportSenderFactory.java
│ │ │ ├── qr
│ │ │ └── CameraCharacteristicsChecker.java
│ │ │ ├── views
│ │ │ └── updates
│ │ │ │ └── items
│ │ │ │ └── AppUpdateData.java
│ │ │ ├── ProgressListener.java
│ │ │ ├── UpdateJobService.java
│ │ │ └── receiver
│ │ │ └── DeviceStorageReceiver.java
│ ├── aidl
│ │ └── org
│ │ │ └── fdroid
│ │ │ └── fdroid
│ │ │ └── privileged
│ │ │ └── IPrivilegedCallback.aidl
│ └── scripts
│ │ └── update-binary
│ ├── androidTest
│ ├── assets
│ │ ├── simpleIndex.jar
│ │ ├── org.fdroid.permissions.minmax.apk
│ │ ├── org.fdroid.permissions.minmax.zip
│ │ ├── org.fdroid.permissions.sdk14.apk
│ │ ├── org.fdroid.permissions.sdk14.zip
│ │ └── org.fdroid.extendedpermissionstest.apk
│ ├── proguard-rules.pro
│ ├── AndroidManifest.xml
│ └── java
│ │ └── org
│ │ └── fdroid
│ │ └── fdroid
│ │ └── work
│ │ └── WorkManagerTestRule.java
│ ├── test
│ ├── resources
│ │ ├── main.1619.obb.mainpatch.current.obb
│ │ ├── main.1101613.obb.main.twoversions.obb
│ │ ├── main.1101615.obb.main.twoversions.obb
│ │ ├── main.1434483388.obb.main.oldversion.obb
│ │ ├── patch.1619.obb.mainpatch.current.obb
│ │ ├── index.antox.jar
│ │ ├── robolectric.properties
│ │ ├── simpleIndex.jar
│ │ ├── index.microg.jar
│ │ ├── masterKeyIndex.jar
│ │ ├── multiRepo.normal.jar
│ │ ├── multiRepo.archive.jar
│ │ ├── multiRepo.conflicting.jar
│ │ ├── demo_credentials_user1.fdrp
│ │ ├── demo_credentials_user2.fdrp
│ │ ├── index.fdroid.2016-10-30.jar
│ │ ├── index.fdroid.2016-11-10.jar
│ │ ├── testy.at.or.at_index-v1.jar
│ │ ├── Norway_bouvet_europe_2.obf.zip
│ │ ├── index-v1.fdroid.2017-07-07.jar
│ │ ├── simpleIndexWithoutSignature.jar
│ │ ├── testy.at.or.at_no-.RSA_index-v1.jar
│ │ ├── testy.at.or.at_no-.SF_index-v1.jar
│ │ ├── simpleIndexWithCorruptedManifest.jar
│ │ ├── simpleIndexWithCorruptedSignature.jar
│ │ ├── simpleIndexWithCorruptedCertificate.jar
│ │ ├── simpleIndexWithCorruptedEverything.jar
│ │ ├── testy.at.or.at_no-signature_index-v1.jar
│ │ ├── org.fdroid.fdroid.privileged.ota_2110.zip
│ │ ├── testy.at.or.at_no-MANIFEST.MF_index-v1.jar
│ │ ├── testy.at.or.at_corrupt_package_name_index-v1.jar
│ │ ├── testy.at.or.at_corrupt_app_package_name_index-v1.jar
│ │ ├── ugly_additional_repos.xml
│ │ ├── additional_repos.xml
│ │ └── README.md
│ ├── assets
│ │ └── urzip.apk
│ └── java
│ │ └── org
│ │ └── fdroid
│ │ └── fdroid
│ │ ├── TestFDroidApp.java
│ │ ├── shadows
│ │ ├── ShadowContextImpl.java
│ │ └── ShadowLog.java
│ │ ├── views
│ │ └── main
│ │ │ └── MainActivityTest.java
│ │ └── mock
│ │ └── MockApk.java
│ ├── testFull
│ ├── resources
│ │ ├── index.html
│ │ ├── icon.png
│ │ ├── urzip.apk
│ │ └── test.html
│ └── java
│ │ └── org
│ │ └── fdroid
│ │ └── fdroid
│ │ ├── data
│ │ └── ShadowApp.java
│ │ └── nearby
│ │ └── WifiStateChangeServiceTest.java
│ ├── full
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ ├── circle.png
│ │ │ ├── nfc_touch.png
│ │ │ ├── ic_fdroid_grey.png
│ │ │ └── swap_start_header.png
│ │ ├── drawable-ldpi
│ │ │ ├── circle.png
│ │ │ ├── nfc_touch.png
│ │ │ ├── ic_fdroid_grey.png
│ │ │ └── swap_start_header.png
│ │ ├── drawable-mdpi
│ │ │ ├── circle.png
│ │ │ ├── nfc_touch.png
│ │ │ ├── ic_fdroid_grey.png
│ │ │ └── swap_start_header.png
│ │ ├── drawable-xhdpi
│ │ │ ├── circle.png
│ │ │ ├── nfc_touch.png
│ │ │ ├── ic_fdroid_grey.png
│ │ │ └── swap_start_header.png
│ │ ├── drawable-xxhdpi
│ │ │ ├── circle.png
│ │ │ ├── ic_fdroid_grey.png
│ │ │ └── swap_start_header.png
│ │ ├── drawable-xxxhdpi
│ │ │ ├── circle.png
│ │ │ ├── ic_fdroid_grey.png
│ │ │ └── swap_start_header.png
│ │ ├── mipmap-hdpi
│ │ │ └── ic_calculator_launcher.png
│ │ ├── mipmap-mdpi
│ │ │ └── ic_calculator_launcher.png
│ │ ├── values-night
│ │ │ └── colors.xml
│ │ ├── mipmap-xhdpi
│ │ │ └── ic_calculator_launcher.png
│ │ ├── mipmap-xxhdpi
│ │ │ └── ic_calculator_launcher.png
│ │ ├── mipmap-xxxhdpi
│ │ │ └── ic_calculator_launcher.png
│ │ ├── values-v21
│ │ │ └── styles.xml
│ │ ├── values
│ │ │ ├── attrs.xml
│ │ │ └── colors.xml
│ │ ├── layout
│ │ │ ├── start_swap_header.xml
│ │ │ ├── swap_success.xml
│ │ │ ├── swap_select_apps.xml
│ │ │ ├── swap_activity.xml
│ │ │ └── activity_panic_settings.xml
│ │ ├── drawable
│ │ │ ├── ic_arrow_forward.xml
│ │ │ ├── check.xml
│ │ │ ├── ic_apps.xml
│ │ │ ├── ic_add_circle_outline.xml
│ │ │ ├── ic_bluetooth.xml
│ │ │ ├── nearby_splash.xml
│ │ │ ├── ic_wifi.xml
│ │ │ ├── ic_wifi_tethering.xml
│ │ │ └── ic_bluetooth_searching.xml
│ │ ├── menu
│ │ │ ├── swap_next.xml
│ │ │ ├── swap_next_search.xml
│ │ │ └── swap_search.xml
│ │ ├── xml
│ │ │ └── device_filter.xml
│ │ ├── values-v17
│ │ │ └── styles.xml
│ │ └── layout-sw480dp
│ │ │ └── start_swap_header.xml
│ └── java
│ │ ├── kellinwood
│ │ ├── security
│ │ │ └── zipsigner
│ │ │ │ ├── optional
│ │ │ │ ├── KeyNameConflictException.java
│ │ │ │ ├── JksKeyStore.java
│ │ │ │ └── LoadKeystoreException.java
│ │ │ │ ├── AutoKeyException.java
│ │ │ │ ├── ResourceAdapter.java
│ │ │ │ └── ProgressListener.java
│ │ └── logging
│ │ │ ├── LoggerFactory.java
│ │ │ ├── ConsoleLoggerFactory.java
│ │ │ ├── StreamLogger.java
│ │ │ └── LoggerManager.java
│ │ └── org
│ │ └── fdroid
│ │ └── fdroid
│ │ ├── nearby
│ │ ├── WifiStateChangeReceiver.java
│ │ ├── peers
│ │ │ └── Peer.java
│ │ ├── UsbDeviceMediaMountedReceiver.java
│ │ └── BluetoothClient.java
│ │ └── panic
│ │ ├── PanicPreferencesActivity.java
│ │ ├── DestructivePreference.java
│ │ ├── SelectInstalledAppListAdapter.java
│ │ ├── ExitActivity.java
│ │ ├── DestructiveCheckBoxPreference.java
│ │ └── SelectInstalledAppListItemController.java
│ ├── basic
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-ldpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ └── values
│ │ │ └── strings.xml
│ └── java
│ │ └── org
│ │ └── fdroid
│ │ └── fdroid
│ │ ├── nearby
│ │ ├── LocalRepoManager.java
│ │ ├── peers
│ │ │ └── WifiPeer.java
│ │ ├── SwapService.java
│ │ ├── SDCardScannerService.java
│ │ ├── BluetoothClient.java
│ │ ├── SwapWorkflowActivity.java
│ │ ├── TreeUriScannerIntentService.java
│ │ └── WifiStateChangeService.java
│ │ ├── views
│ │ └── main
│ │ │ └── NearbyViewBinder.java
│ │ └── panic
│ │ └── HidingManager.java
│ ├── defo
│ ├── res
│ │ ├── drawable-hdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-ldpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-mdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xhdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xxhdpi
│ │ │ └── ic_launcher.png
│ │ ├── drawable-xxxhdpi
│ │ │ └── ic_launcher.png
│ │ └── values
│ │ │ ├── colors.xml
│ │ │ ├── strings.xml
│ │ │ └── donottranslate.xml
│ └── java
│ │ └── org
│ │ └── fdroid
│ │ └── fdroid
│ │ └── ConscryptLoader.java
│ ├── testShared
│ └── java
│ │ └── org
│ │ └── fdroid
│ │ └── fdroid
│ │ └── mock
│ │ └── MockRepo.java
│ └── debug
│ └── AndroidManifest.xml
├── .gitattributes
├── metadata
├── en-US
│ ├── title.txt
│ ├── images
│ │ └── icon.png
│ ├── short_description.txt
│ └── full_description.txt
├── bn
│ └── changelogs
│ │ ├── 1000001.txt
│ │ └── 1000003.txt
├── fa
│ └── changelogs
│ │ ├── 1000003.txt
│ │ ├── 1000002.txt
│ │ └── 1014050.txt
├── fil
│ └── changelogs
│ │ ├── 1000001.txt
│ │ ├── 1000003.txt
│ │ ├── 1000005.txt
│ │ ├── 1000004.txt
│ │ ├── 1000002.txt
│ │ └── 1000000.txt
├── ca
│ └── changelogs
│ │ ├── 1000001.txt
│ │ └── 1000000.txt
├── hu
│ └── changelogs
│ │ ├── 1011050.txt
│ │ ├── 1010001.txt
│ │ ├── 1010050.txt
│ │ ├── 1009000.txt
│ │ ├── 1014050.txt
│ │ ├── 1012000.txt
│ │ ├── 1012050.txt
│ │ └── 1013050.txt
├── es
│ └── changelogs
│ │ └── 1000011.txt
├── fr
│ └── changelogs
│ │ └── 1014050.txt
├── pl
│ └── changelogs
│ │ └── 1012050.txt
├── tr
│ └── changelogs
│ │ └── 1014050.txt
├── de
│ └── changelogs
│ │ └── 1014050.txt
└── ro
│ └── changelogs
│ └── 1014050.txt
├── settings.gradle
├── .weblate
├── f-droid.org-signing-key.gpg
├── gradle
├── verification-keyring.gpg
└── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradle.properties
├── tools
├── fix-ellipsis.sh
├── update-verification-metadata.sh
├── check-fastlane-whitespace.py
├── update-from-weblate.sh
├── validate-fdroid-metrics.json.py
└── png-pre-compress
├── config
├── checkstyle
│ └── suppressions.xml
├── pmd
│ ├── rules-main.xml
│ └── rules-test.xml
└── errorprone.gradle
├── .gitignore
├── hooks
└── install-hooks.sh
└── README.md
/app/src/main/res/values-in:
--------------------------------------------------------------------------------
1 | values-id
--------------------------------------------------------------------------------
/app/src/main/res/values-iw:
--------------------------------------------------------------------------------
1 | values-he
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | *.gpg binary
2 |
--------------------------------------------------------------------------------
/app/src/androidTest/assets/simpleIndex.jar:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/metadata/en-US/title.txt:
--------------------------------------------------------------------------------
1 | DEfO ECH Apps
2 |
--------------------------------------------------------------------------------
/app/src/test/resources/main.1619.obb.mainpatch.current.obb:
--------------------------------------------------------------------------------
1 | dummy
2 |
--------------------------------------------------------------------------------
/app/src/test/resources/main.1101613.obb.main.twoversions.obb:
--------------------------------------------------------------------------------
1 | dummy
2 |
--------------------------------------------------------------------------------
/app/src/test/resources/main.1101615.obb.main.twoversions.obb:
--------------------------------------------------------------------------------
1 | dummy
2 |
--------------------------------------------------------------------------------
/app/src/test/resources/main.1434483388.obb.main.oldversion.obb:
--------------------------------------------------------------------------------
1 | dummy
2 |
--------------------------------------------------------------------------------
/app/src/test/resources/patch.1619.obb.mainpatch.current.obb:
--------------------------------------------------------------------------------
1 | dummy
2 |
--------------------------------------------------------------------------------
/settings.gradle:
--------------------------------------------------------------------------------
1 | include ':app'
2 | rootProject.name = "DEfO ECH Apps"
3 |
--------------------------------------------------------------------------------
/.weblate:
--------------------------------------------------------------------------------
1 | [weblate]
2 | url = https://hosted.weblate.org/api/
3 | translation = f-droid/f-droid
4 |
--------------------------------------------------------------------------------
/app/src/testFull/resources/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | Simple index file
4 |
5 |
--------------------------------------------------------------------------------
/f-droid.org-signing-key.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/f-droid.org-signing-key.gpg
--------------------------------------------------------------------------------
/app/src/test/assets/urzip.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/assets/urzip.apk
--------------------------------------------------------------------------------
/metadata/en-US/images/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/metadata/en-US/images/icon.png
--------------------------------------------------------------------------------
/metadata/en-US/short_description.txt:
--------------------------------------------------------------------------------
1 | Experimental fork of F-Droid to use TLS ECH with Cloudflare as the default host
2 |
--------------------------------------------------------------------------------
/app/src/main/assets/swap-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/assets/swap-icon.png
--------------------------------------------------------------------------------
/gradle/verification-keyring.gpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/gradle/verification-keyring.gpg
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/app/src/testFull/resources/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/testFull/resources/icon.png
--------------------------------------------------------------------------------
/metadata/bn/changelogs/1000001.txt:
--------------------------------------------------------------------------------
1 | * ভাণ্ডার থেকে অ্যাপ সরানোর সমস্যা ঠিক করা হয়েছে (#৫৬৮)
2 |
3 | * দ্রুততর তালিকা হালনাগাদ
4 |
--------------------------------------------------------------------------------
/app/src/main/assets/swap-tick-done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/assets/swap-tick-done.png
--------------------------------------------------------------------------------
/app/src/test/resources/index.antox.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/index.antox.jar
--------------------------------------------------------------------------------
/app/src/test/resources/robolectric.properties:
--------------------------------------------------------------------------------
1 | shadows=org.fdroid.fdroid.shadows.ShadowContextImpl,org.fdroid.fdroid.shadows.ShadowLog
2 |
--------------------------------------------------------------------------------
/app/src/test/resources/simpleIndex.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/simpleIndex.jar
--------------------------------------------------------------------------------
/app/src/testFull/resources/urzip.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/testFull/resources/urzip.apk
--------------------------------------------------------------------------------
/gradle.properties:
--------------------------------------------------------------------------------
1 | org.gradle.jvmargs=-Xms1g -Xmx2g -XX:MaxPermSize=2g
2 | android.enableJetifier=true
3 | android.useAndroidX=true
4 |
--------------------------------------------------------------------------------
/metadata/bn/changelogs/1000003.txt:
--------------------------------------------------------------------------------
1 | * গতি বৃদ্ধিতে বড় অগ্রগতি, বিশেষত সংরক্ষণ চালু থাকলে
2 |
3 | * থেমে যাওয়ার সমস্যা ঠিক করা হয়েছে
4 |
--------------------------------------------------------------------------------
/metadata/fa/changelogs/1000003.txt:
--------------------------------------------------------------------------------
1 | * بهبودهای کارایی رابط کاربری، مخصوصاً با به کار افتادن بایگانی
2 |
3 | * تعمیر مشکلات فروپاشی
4 |
--------------------------------------------------------------------------------
/app/src/test/resources/index.microg.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/index.microg.jar
--------------------------------------------------------------------------------
/app/src/full/res/drawable-hdpi/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-hdpi/circle.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-ldpi/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-ldpi/circle.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-mdpi/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-mdpi/circle.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xhdpi/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xhdpi/circle.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xxhdpi/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xxhdpi/circle.png
--------------------------------------------------------------------------------
/app/src/main/assets/swap-tick-not-done.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/assets/swap-tick-not-done.png
--------------------------------------------------------------------------------
/app/src/test/resources/masterKeyIndex.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/masterKeyIndex.jar
--------------------------------------------------------------------------------
/app/src/test/resources/multiRepo.normal.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/multiRepo.normal.jar
--------------------------------------------------------------------------------
/app/src/testFull/resources/test.html:
--------------------------------------------------------------------------------
1 |
2 |
3 | dummy
4 |
5 |
6 | it works
7 |
8 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable-hdpi/nfc_touch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-hdpi/nfc_touch.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-ldpi/nfc_touch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-ldpi/nfc_touch.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-mdpi/nfc_touch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-mdpi/nfc_touch.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xhdpi/nfc_touch.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xhdpi/nfc_touch.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xxxhdpi/circle.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xxxhdpi/circle.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_coins_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-hdpi/ic_coins_s.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_coins_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-mdpi/ic_coins_s.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_games.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_games.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_money.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_money.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_system.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_system.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/swap_qr_example.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/swap_qr_example.png
--------------------------------------------------------------------------------
/app/src/test/resources/multiRepo.archive.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/multiRepo.archive.jar
--------------------------------------------------------------------------------
/metadata/fil/changelogs/1000001.txt:
--------------------------------------------------------------------------------
1 | * Inayos ang isang bug na nagtatanggal ng mga app sa mga repo (#568)
2 |
3 | * Mas mabilis na ma update sa index
4 |
--------------------------------------------------------------------------------
/app/src/basic/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/basic/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/basic/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/basic/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/basic/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/basic/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/basic/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/basic/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/defo/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/defo/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/defo/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/defo/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/defo/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/defo/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/defo/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/defo/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/defo/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/defo/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-hdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-ldpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-ldpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-mdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_coins_s.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xhdpi/ic_coins_s.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_graphics.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_graphics.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_internet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_internet.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_reading.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_reading.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_security.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_security.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_theming.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_theming.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_writing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_writing.png
--------------------------------------------------------------------------------
/app/src/test/resources/multiRepo.conflicting.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/multiRepo.conflicting.jar
--------------------------------------------------------------------------------
/app/src/basic/res/drawable-xxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/basic/res/drawable-xxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/basic/res/drawable-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/basic/res/drawable-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/defo/res/drawable-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/defo/res/drawable-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-hdpi/ic_fdroid_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-hdpi/ic_fdroid_grey.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-ldpi/ic_fdroid_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-ldpi/ic_fdroid_grey.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-mdpi/ic_fdroid_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-mdpi/ic_fdroid_grey.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xhdpi/ic_fdroid_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xhdpi/ic_fdroid_grey.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_file_install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-hdpi/ic_file_install.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_file_install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-mdpi/ic_file_install.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xxxhdpi/ic_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_development.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_development.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_navigation.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_navigation.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/seekbar_background.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/seekbar_background.9.png
--------------------------------------------------------------------------------
/app/src/test/resources/demo_credentials_user1.fdrp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/demo_credentials_user1.fdrp
--------------------------------------------------------------------------------
/app/src/test/resources/demo_credentials_user2.fdrp:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/demo_credentials_user2.fdrp
--------------------------------------------------------------------------------
/app/src/test/resources/index.fdroid.2016-10-30.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/index.fdroid.2016-10-30.jar
--------------------------------------------------------------------------------
/app/src/test/resources/index.fdroid.2016-11-10.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/index.fdroid.2016-11-10.jar
--------------------------------------------------------------------------------
/app/src/test/resources/testy.at.or.at_index-v1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/testy.at.or.at_index-v1.jar
--------------------------------------------------------------------------------
/app/src/full/res/drawable-hdpi/swap_start_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-hdpi/swap_start_header.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-ldpi/swap_start_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-ldpi/swap_start_header.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-mdpi/swap_start_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-mdpi/swap_start_header.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xhdpi/swap_start_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xhdpi/swap_start_header.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xxhdpi/ic_fdroid_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xxhdpi/ic_fdroid_grey.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xxxhdpi/ic_fdroid_grey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xxxhdpi/ic_fdroid_grey.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_file_install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xhdpi/ic_file_install.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_file_install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xxhdpi/ic_file_install.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_file_install.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xxxhdpi/ic_file_install.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_connectivity.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_connectivity.png
--------------------------------------------------------------------------------
/app/src/test/resources/Norway_bouvet_europe_2.obf.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/Norway_bouvet_europe_2.obf.zip
--------------------------------------------------------------------------------
/app/src/test/resources/index-v1.fdroid.2017-07-07.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/index-v1.fdroid.2017-07-07.jar
--------------------------------------------------------------------------------
/metadata/ca/changelogs/1000001.txt:
--------------------------------------------------------------------------------
1 | * Corregir l'error que eliminava les aplicacions dels repositoris (# 568)
2 |
3 | * Actualitzacions d'índexs molt més ràpides
4 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xxhdpi/swap_start_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xxhdpi/swap_start_header.png
--------------------------------------------------------------------------------
/app/src/full/res/drawable-xxxhdpi/swap_start_header.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/drawable-xxxhdpi/swap_start_header.png
--------------------------------------------------------------------------------
/app/src/full/res/mipmap-hdpi/ic_calculator_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/mipmap-hdpi/ic_calculator_launcher.png
--------------------------------------------------------------------------------
/app/src/full/res/mipmap-mdpi/ic_calculator_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/mipmap-mdpi/ic_calculator_launcher.png
--------------------------------------------------------------------------------
/app/src/full/res/values-night/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | #330000
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/ic_repo_app_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-hdpi/ic_repo_app_default.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-ldpi/ic_repo_app_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-ldpi/ic_repo_app_default.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/ic_repo_app_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-mdpi/ic_repo_app_default.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/ic_repo_app_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xhdpi/ic_repo_app_default.png
--------------------------------------------------------------------------------
/app/src/test/resources/simpleIndexWithoutSignature.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/simpleIndexWithoutSignature.jar
--------------------------------------------------------------------------------
/app/src/full/res/mipmap-xhdpi/ic_calculator_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/mipmap-xhdpi/ic_calculator_launcher.png
--------------------------------------------------------------------------------
/app/src/full/res/mipmap-xxhdpi/ic_calculator_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/mipmap-xxhdpi/ic_calculator_launcher.png
--------------------------------------------------------------------------------
/app/src/full/res/mipmap-xxxhdpi/ic_calculator_launcher.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/full/res/mipmap-xxxhdpi/ic_calculator_launcher.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-hdpi/tab_unselected_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-hdpi/tab_unselected_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-mdpi/tab_unselected_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-mdpi/tab_unselected_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xhdpi/tab_unselected_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xhdpi/tab_unselected_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/ic_repo_app_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xxhdpi/ic_repo_app_default.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxhdpi/tab_unselected_holo.9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xxhdpi/tab_unselected_holo.9.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable-xxxhdpi/ic_repo_app_default.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable-xxxhdpi/ic_repo_app_default.png
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_science_education.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/main/res/drawable/category_science_education.png
--------------------------------------------------------------------------------
/app/src/main/res/xml/apk_file_provider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
--------------------------------------------------------------------------------
/app/src/test/resources/testy.at.or.at_no-.RSA_index-v1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/testy.at.or.at_no-.RSA_index-v1.jar
--------------------------------------------------------------------------------
/app/src/test/resources/testy.at.or.at_no-.SF_index-v1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/testy.at.or.at_no-.SF_index-v1.jar
--------------------------------------------------------------------------------
/metadata/fil/changelogs/1000003.txt:
--------------------------------------------------------------------------------
1 | * Malakihang pagpapahusay sa performance ng UI, lalo na kapag nakabukas ang mga archive
2 |
3 | * Inayos ang mga bug na nagpapa-crash
4 |
--------------------------------------------------------------------------------
/app/src/androidTest/assets/org.fdroid.permissions.minmax.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/androidTest/assets/org.fdroid.permissions.minmax.apk
--------------------------------------------------------------------------------
/app/src/androidTest/assets/org.fdroid.permissions.minmax.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/androidTest/assets/org.fdroid.permissions.minmax.zip
--------------------------------------------------------------------------------
/app/src/androidTest/assets/org.fdroid.permissions.sdk14.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/androidTest/assets/org.fdroid.permissions.sdk14.apk
--------------------------------------------------------------------------------
/app/src/androidTest/assets/org.fdroid.permissions.sdk14.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/androidTest/assets/org.fdroid.permissions.sdk14.zip
--------------------------------------------------------------------------------
/app/src/test/resources/simpleIndexWithCorruptedManifest.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/simpleIndexWithCorruptedManifest.jar
--------------------------------------------------------------------------------
/app/src/test/resources/simpleIndexWithCorruptedSignature.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/simpleIndexWithCorruptedSignature.jar
--------------------------------------------------------------------------------
/app/src/test/resources/simpleIndexWithCorruptedCertificate.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/simpleIndexWithCorruptedCertificate.jar
--------------------------------------------------------------------------------
/app/src/test/resources/simpleIndexWithCorruptedEverything.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/simpleIndexWithCorruptedEverything.jar
--------------------------------------------------------------------------------
/app/src/test/resources/testy.at.or.at_no-signature_index-v1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/testy.at.or.at_no-signature_index-v1.jar
--------------------------------------------------------------------------------
/app/src/androidTest/assets/org.fdroid.extendedpermissionstest.apk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/androidTest/assets/org.fdroid.extendedpermissionstest.apk
--------------------------------------------------------------------------------
/app/src/test/resources/org.fdroid.fdroid.privileged.ota_2110.zip:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/org.fdroid.fdroid.privileged.ota_2110.zip
--------------------------------------------------------------------------------
/app/src/test/resources/testy.at.or.at_no-MANIFEST.MF_index-v1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/testy.at.or.at_no-MANIFEST.MF_index-v1.jar
--------------------------------------------------------------------------------
/app/src/test/resources/testy.at.or.at_corrupt_package_name_index-v1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/testy.at.or.at_corrupt_package_name_index-v1.jar
--------------------------------------------------------------------------------
/app/src/test/resources/testy.at.or.at_corrupt_app_package_name_index-v1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/defo-project/defo-ech-apps/HEAD/app/src/test/resources/testy.at.or.at_corrupt_app_package_name_index-v1.jar
--------------------------------------------------------------------------------
/metadata/fil/changelogs/1000005.txt:
--------------------------------------------------------------------------------
1 | * Inayos ang isang bug na naghaharang sa mga salin na magpakita sa mga Android >= 7.0
2 |
3 | * Inayos ang crash sa pag-upgrade sa DB mula 1.0-alpha3 → 1.0-alpha4 #1181
4 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/LocalRepoManager.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby;
2 |
3 | public class LocalRepoManager {
4 | public static final String[] WEB_ROOT_ASSET_FILES = {};
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/security/zipsigner/optional/KeyNameConflictException.java:
--------------------------------------------------------------------------------
1 |
2 | package kellinwood.security.zipsigner.optional;
3 |
4 | public class KeyNameConflictException extends Exception {
5 | }
6 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/compat/CursorAdapterCompat.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.compat;
2 |
3 | public class CursorAdapterCompat {
4 |
5 | public static final int FLAG_AUTO_REQUERY = 0x01;
6 |
7 | }
8 |
--------------------------------------------------------------------------------
/metadata/fa/changelogs/1000002.txt:
--------------------------------------------------------------------------------
1 | * پیشگیری از استفادهٔ برچسب الکترونیکیHTTP به عنوان کوکی ردیاب
2 |
3 | * بهبود چینش نماگرفتها
4 |
5 | * پاکسازی درست پروندههای انبار شده و موقّتی
6 |
7 | * تعمیرهای حالت تیره
8 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/searchable.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
--------------------------------------------------------------------------------
/metadata/fil/changelogs/1000004.txt:
--------------------------------------------------------------------------------
1 | * Dinagdag ang mga swipe gesture sa tab ng Update
2 |
3 | * Ipakita ang mga babala na may gawain sa tab ng Update para sa mga KnownVulns
4 |
5 | * In-update ang mga salin
6 |
7 | * Pagsasaayos sa madilim na UI
8 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/backup_rules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
--------------------------------------------------------------------------------
/tools/fix-ellipsis.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | # Fix TypographyEllipsis programmatically
4 |
5 | sed -i 's/\.\.\./…/g' app/src/main/res/values*/*.xml
6 | if git diff | grep -Eo '^\+.*…'; then
7 | echo Fix TypographyEllipsis
8 | exit 1
9 | fi
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/details_panel_donate_background_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/details_panel_donate_background_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
5 |
--------------------------------------------------------------------------------
/metadata/fil/changelogs/1000002.txt:
--------------------------------------------------------------------------------
1 | * Harangan ang HTTP ETag na magamit bilang isang cookie sa pagta-track
2 |
3 | * Pinahusay ang layout ng mga screenshot
4 |
5 | * Maayos na nilinis ang mga temp at naka-cache na file
6 |
7 | * Pagsasaayos sa madilim na tema
8 |
--------------------------------------------------------------------------------
/app/src/defo/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #ff6e70de
5 | #ff7bf4f5
6 | #ffe16f6f
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/full/res/values-v21/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/installer_file_provider.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
--------------------------------------------------------------------------------
/metadata/ca/changelogs/1000000.txt:
--------------------------------------------------------------------------------
1 | * Admet la instal·lació d'arxius multimèdia, OTA, ZIP, etc.
2 |
3 | * Suport complet per a APK signats per múltiples claus de firma.
4 |
5 | * Nova traducció al tibetà
6 |
7 | * Elimina aplicacions i categories relacionades després de desactivar un repositori
8 |
--------------------------------------------------------------------------------
/config/checkstyle/suppressions.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v17/styles_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/metadata/fil/changelogs/1000000.txt:
--------------------------------------------------------------------------------
1 | * Suporta sa pag-install sa mga file na midya, OTA, ZIP, atbp.
2 |
3 | * Kabuuang suporta sa mga APK na pirmado ng maraming mga susing pangpirma
4 |
5 | * Bagong salin sa wikang Tibetan
6 |
7 | * Tanggalin ang mga kaugnay na app at kategorya matapos isara ang isang repo
8 |
--------------------------------------------------------------------------------
/app/src/basic/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | F-Droid Basic
4 | F-Droid Basic Debug
5 | About F-Droid Basic
6 |
7 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/views/main/NearbyViewBinder.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.views.main;
2 |
3 | import android.content.Context;
4 |
5 | class NearbyViewBinder {
6 | public static void updateUsbOtg(Context context) {
7 | throw new IllegalStateException("unimplemented");
8 | }
9 | }
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/main_tab_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 |
--------------------------------------------------------------------------------
/tools/update-verification-metadata.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh -ex
2 |
3 | TOOLS_DIR=$(cd "$(dirname "$0")"; pwd)
4 |
5 | cd "$TOOLS_DIR"/..
6 | ./gradlew --write-verification-metadata pgp,sha256 assemble assembleFullDebug
7 |
8 | printf "\nPlease review the following diff:\n\n"
9 |
10 | git diff gradle/verification-metadata.xml
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout-v14/app_status_new.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_version_item_status_new.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_version_item_status_installed.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_version_item_status_suggested.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1011050.txt:
--------------------------------------------------------------------------------
1 | * Fejlesztett hivatkozáskészítés az alkalmazásleírásokban
2 |
3 | * SD-kártyák és USG-OTG eszközök jobb kezelése a Közeli lapon
4 |
5 | * Modernizált kód, és PNG-k vektorgrafikára cserélése (köszönjük @isira-seneviratne!)
6 |
7 | * Hosszabb tároló URL-ek felismerése a GitCDN/RawGit/stb. tárolók támogatásához
8 |
--------------------------------------------------------------------------------
/app/src/defo/res/values/strings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | ECH Apps
5 | ECH Apps Debug
6 | About ECH Apps
7 |
8 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_version_item_status_incompatible.xml:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/full/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | 1337
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout-v14/app_status_suggested.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/security/zipsigner/optional/JksKeyStore.java:
--------------------------------------------------------------------------------
1 |
2 | package kellinwood.security.zipsigner.optional;
3 |
4 |
5 | import java.security.KeyStore;
6 |
7 | public class JksKeyStore extends KeyStore {
8 |
9 | public JksKeyStore() {
10 | super(new JKS(), KeyStoreFileManager.getProvider(), "jks");
11 | }
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v21/styles_detail.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
--------------------------------------------------------------------------------
/app/src/full/res/layout/start_swap_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Mon Jun 15 18:54:54 CEST 2020
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.9.2-all.zip
7 | distributionSha256Sum=8bde5c859a3ddf5d127ac77465fc24fa8a831d3d8d49e8248548f2cb87485ef1
8 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/nearby/httpish/ETagHeader.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby.httpish;
2 |
3 | public class ETagHeader extends Header {
4 |
5 | @Override
6 | public String getName() {
7 | return "etag";
8 | }
9 |
10 | public void handle(FileDetails details, String value) {
11 | details.setCacheTag(value);
12 | }
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/ic_arrow_forward.xml:
--------------------------------------------------------------------------------
1 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw720dp-v21/dimens.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 | 24dp
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-v23/seekbar_background.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/installed_apps.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/testShared/java/org/fdroid/fdroid/mock/MockRepo.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.mock;
2 |
3 | import org.fdroid.fdroid.data.Repo;
4 |
5 | public class MockRepo extends Repo {
6 |
7 | public MockRepo(long id) {
8 | this.id = id;
9 | }
10 |
11 | public MockRepo(long id, int pushRequests) {
12 | this.id = id;
13 | this.pushRequests = pushRequests;
14 | }
15 |
16 | }
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_preview_app_card_background_dark.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/category_preview_app_card_background_light.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/seekbar_tickmark.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/tools/check-fastlane-whitespace.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | import glob
4 | import os
5 |
6 | for f in glob.glob('metadata/*/*.txt') + glob.glob('metadata/*/*/*.txt'):
7 | if os.path.getsize(f) == 0:
8 | os.remove(f)
9 | continue
10 |
11 | with open(f) as fp:
12 | data = fp.read()
13 | with open(f, 'w') as fp:
14 | fp.write(data.rstrip())
15 | fp.write('\n')
16 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/check.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/nearby/httpish/ContentLengthHeader.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby.httpish;
2 |
3 | public class ContentLengthHeader extends Header {
4 |
5 | @Override
6 | public String getName() {
7 | return "content-length";
8 | }
9 |
10 | public void handle(FileDetails details, String value) {
11 | details.setFileSize(Integer.parseInt(value));
12 | }
13 |
14 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/seekbar_thumb.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/manage_repos.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
--------------------------------------------------------------------------------
/tools/update-from-weblate.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh -ex
2 |
3 | toolsdir=`cd $(dirname $0); pwd`
4 |
5 | cd $toolsdir/..
6 | git remote update -p weblate
7 | git checkout -b weblate weblate/master
8 |
9 | firefox https://hosted.weblate.org/projects/f-droid/f-droid/#repository
10 |
11 | $toolsdir/fix-ellipsis.sh
12 | $toolsdir/check-format-strings.py
13 | $toolsdir/remove-unused-and-blank-translations.py
14 |
15 | git gui
16 | git push origin weblate
17 |
--------------------------------------------------------------------------------
/app/src/debug/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/security/zipsigner/AutoKeyException.java:
--------------------------------------------------------------------------------
1 |
2 | package kellinwood.security.zipsigner;
3 |
4 | public class AutoKeyException extends RuntimeException {
5 |
6 | private static final long serialVersionUID = 1L;
7 |
8 | public AutoKeyException(String message) {
9 | super(message);
10 | }
11 |
12 | public AutoKeyException(String message, Throwable cause) {
13 | super(message, cause);
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_sort.xml:
--------------------------------------------------------------------------------
1 |
8 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/full/res/menu/swap_next.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_source_code.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1010001.txt:
--------------------------------------------------------------------------------
1 | * értesítési csatornák használata az aprólékosabb beállítások érdekében (@Isira-Seneviratne)
2 | * alkalmazások közvetlen megosztása az alkalmazás részleteiben (@fynngodau)
3 | * a legfrissebb lap jobb eredményeket ad a nem angol területi beállítású eszközökön
4 | * központi programkönyvtárak frissítése (Jackson, androidx, gradle, stb.)
5 | * márkázhatóság támogatásának finomítása
6 |
7 | Köszönjük az új közreműködőknek! @fynngodau @projectgus @glennmen @Isira-Seneviratne
8 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1010050.txt:
--------------------------------------------------------------------------------
1 | * értesítési csatornák használata az aprólékosabb beállítások érdekében (@Isira-Seneviratne)
2 | * alkalmazások közvetlen megosztása az alkalmazás részleteiben (@fynngodau)
3 | * a legfrissebb lap jobb eredményeket ad a nem angol területi beállítású eszközökön
4 | * központi programkönyvtárak frissítése (Jackson, androidx, gradle, stb.)
5 | * márkázhatóság támogatásának finomítása
6 |
7 | Köszönjük az új közreműködőknek! @fynngodau @projectgus @glennmen @Isira-Seneviratne
8 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_screenshots.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_expand_less.xml:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/app/src/main/res/values-sw360dp-v13/values-preference.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | false
5 |
6 |
7 | 0dp
8 |
9 |
10 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1009000.txt:
--------------------------------------------------------------------------------
1 | * Az „Android alkalmazáshivatkozások” eltávolítása, mivel úgy sem működik az F-Droiddal, és DNS információk kiszivárgását okozhatta.
2 | * Az archív tárolók most már alacsonyabb prioritásúak, ez megoldja azt a problémát, hogy az információkat az archívumban kereste volna a tároló helyett.
3 | * Kiemelt borítóképek levágásának megakadályozása (köszönjük @ByteHamster!)
4 | * A navigációs sáv beleillik a sötét módba (köszönjük @MatthieuB!)
5 | * Elavult kód eltávolítása (köszönjük @Isira-Seneviratne!)
6 |
--------------------------------------------------------------------------------
/app/src/main/res/values/ids.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/ic_apps.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/data/ValueObject.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.data;
2 |
3 | import android.database.Cursor;
4 |
5 | class ValueObject {
6 |
7 | void checkCursorPosition(Cursor cursor) throws IllegalArgumentException {
8 | if (cursor.getPosition() == -1) {
9 | throw new IllegalArgumentException(
10 | "Cursor position is -1. " +
11 | "Did you forget to moveToFirst() or move() before passing to the value object?");
12 | }
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/testFull/java/org/fdroid/fdroid/data/ShadowApp.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.data;
2 |
3 | import android.content.Context;
4 |
5 | import org.robolectric.annotation.Implementation;
6 | import org.robolectric.annotation.Implements;
7 |
8 | @Implements(App.class)
9 | public class ShadowApp extends ValueObject {
10 |
11 | @Implementation
12 | protected static int[] getMinTargetMaxSdkVersions(Context context, String packageName) {
13 | return new int[]{10, 23, Apk.SDK_VERSION_MAX_VALUE};
14 | }
15 | }
16 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v16/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_add.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/full/res/menu/swap_next_search.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/full/res/values/colors.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #ff7900
5 | #27aae1
6 | #1c6bbc
7 | #ff21488c
8 | #00b9e6
9 | #bbbbbb
10 | #bbbbbb
11 |
12 | #fff0f0
13 |
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_changelog.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/screenshot_placeholder.xml:
--------------------------------------------------------------------------------
1 |
6 |
9 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_error.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_cancel.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/donate_liberapay.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1014050.txt:
--------------------------------------------------------------------------------
1 | * Megosztási menü átdolgozása.
2 |
3 | * Továbbfejlesztett Közeli munkafolyamat és navigáció, hibajavítások.
4 |
5 | * Material Design fejlesztések (@proletarius101)
6 |
7 | * A PNG alkalmazásikon nélküli alkalmazások megjelennek a Legfrissebb lapon (@ashutoshgngwr)
8 |
9 | * Jobb ikonkezelés korlátolt adat/Wi-Fi beállítások mellett
10 |
11 | * Több vonalkód-leolvasó támogatása (@Lugerun)
12 |
13 | * Megjelenítendő előnytelen funkciók kiválasztása
14 |
15 | * Tárolók hozzáadásának tiltása, ha az „Ismeretlen források” tiltottak
16 |
--------------------------------------------------------------------------------
/app/src/defo/res/values/donottranslate.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | A demo fork of F-Droid to serve as an example app built on the development fork of Conscrypt. We hope to make that really usable as the server side of F-Droid runs on Cloudflare.
5 |
6 | https://defo.ie
7 | mailto:info@tolerantnetworks.com
8 | https://github.com/defo-project/defo-ech-apps
9 |
10 |
11 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1012000.txt:
--------------------------------------------------------------------------------
1 | * Az alkalmazásleírások fordítása most már teljesen figyelembe veszi
2 | az Android nyelvi beállításait
3 |
4 | * A Legfrissebb lap találatai figyelembe veszik a nyelvi beállításokat
5 |
6 | * A Legfrissebb lapon a legújabb alkalmazások jelennek meg legelől (@TheLastProject @IzzySoft)
7 |
8 | * A tématámogatás már az Android beépített témáihoz kötődik (@proletarius101)
9 |
10 | * A keresési találatok sokat javultak (@Tvax @gcbrown76)
11 |
12 | * Az Android hatékonyan ütemezhet be gyorsítótár-tisztási műveleteket (@Isira-Seneviratne)
13 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1012050.txt:
--------------------------------------------------------------------------------
1 | * Az alkalmazásleírások fordítása most már teljesen figyelembe veszi az Android nyelvi beállításait
2 |
3 | * A Legfrissebb lapon a legújabb alkalmazások jelennek meg legelől (@TheLastProject @IzzySoft)
4 |
5 | * A keresési találatok sokat javultak (@Tvax @gcbrown76)
6 |
7 | * Megbízhatóbb gyorsítótár-ürítés
8 |
9 | * Gyorsítótár-tisztítás hatékony ütemezése (@Isira-Seneviratne)
10 |
11 | * Tároló URL feldolgozásának átdolgozása a megbízható tároló hozzáadás érdekében (@projectgus)
12 |
13 | * Választhatóan bekapcsolható F-Droid metrikák
14 |
--------------------------------------------------------------------------------
/app/src/full/res/menu/swap_search.xml:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/nearby/httpish/FileDetails.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby.httpish;
2 |
3 | public class FileDetails {
4 |
5 | private String cacheTag;
6 | private long fileSize;
7 |
8 | public String getCacheTag() {
9 | return cacheTag;
10 | }
11 |
12 | public long getFileSize() {
13 | return fileSize;
14 | }
15 |
16 | void setFileSize(int fileSize) {
17 | this.fileSize = fileSize;
18 | }
19 |
20 | void setCacheTag(String cacheTag) {
21 | this.cacheTag = cacheTag;
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/donate_generic.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/donate_opencollective.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/metadata/es/changelogs/1000011.txt:
--------------------------------------------------------------------------------
1 | ¡F-Droid ha llegado a la 1.0!
2 |
3 | Incluye muchas mejoras:
4 |
5 | * Flujo de actualizaciones renovado
6 | * Resúmenes y descripciones totalmente traducibles
7 | * Sección «Novedades» con los cambios de la versión actual
8 | * Capturas e imágenes promocionales
9 | * Admite instalar archivos multimedia, OTA, ZIP, etc.
10 | * Protección antirrastreo mejorada (HTTP ETag, TLS, etc.)
11 | * Actualizaciones en segundo plano con extensión privilegiada
12 | * Resalta las donaciones a los desarrolladores
13 | * Actualizaciones de índice más rápidas
14 |
--------------------------------------------------------------------------------
/metadata/fr/changelogs/1014050.txt:
--------------------------------------------------------------------------------
1 | *Révision du menu de partage pour utiliser des options intégrées comme À proximité.
2 |
3 | *Amélioration du flux opérationnel et de navigation de À proximité, avec beaucoup de bogues corrigés.
4 |
5 | *Améliorations du rendu du contenu (@proletarius101)
6 |
7 | *Les applications sans îcone PNG d'applications sont maintenant montrées dans l'onglet récent (@ashutoshgngwr)
8 |
9 | *Amélioration de la geston des îcones avec les Données/Wi-FI limitées
10 |
11 | *Amélioration hors ligne du partage À proximité
12 |
13 | *Choix des anti-fonctions
14 |
--------------------------------------------------------------------------------
/metadata/pl/changelogs/1012050.txt:
--------------------------------------------------------------------------------
1 | * Lokalizacja opisu aplikacji w pełni uwzględnia listy w ustawieniach językowych Androida
2 |
3 | * Karta Ostatnie pokazuje aplikacje na podstawie ustawień językowych, w kolejności od najnowszych (@TheLastProject @IzzySoft)
4 |
5 | * Znacznie lepsze wyniki wyszukiwania (@Tvax @gcbrown76)
6 |
7 | * Bardziej niezawodne czyszczenie pamięci podręcznej
8 |
9 | * Efektywne planowanie czyszczenia pamięci podręcznej (@Isira-Seneviratne)
10 |
11 | * Poprawiono parsowanie adresów URL repozytorium (@projectgus)
12 |
13 | * Opcjonalne metryki F-Droid
14 |
--------------------------------------------------------------------------------
/metadata/tr/changelogs/1014050.txt:
--------------------------------------------------------------------------------
1 | * Yakınımda gibi seçenekleri kullanmak için Paylaş menüsü elden geçirildi
2 |
3 | * Birçok hata düzeltmesi ile Yakınımda iş akışı iyileştirildi
4 |
5 | * Material tasarımı iyileştirmeleri (@proletarius101)
6 |
7 | * PNG simgeleri olmayan uygulamalar artık En Yeniler Sekmesinde gösteriliyor (@ashutoshgngwr)
8 |
9 | * Daha fazla barkod tarayıcıyı destekleği (@Lugerun)
10 |
11 | * Aygıt yöneticisi "Bilinmeyen Kaynaklar" için izin vermediğinde yeni depo eklemeyi engelle
12 |
13 | * Kullanıcı adı/parola ile depoları kullanırken çökme düzeltildi
14 |
--------------------------------------------------------------------------------
/app/src/main/res/values-v17/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
7 |
8 |
9 |
10 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/metadata/de/changelogs/1014050.txt:
--------------------------------------------------------------------------------
1 | * Überarbeitung des Menüs "Teilen", um integrierte Optionen wie "Umfeld" zu verwenden.
2 |
3 | * Verbesserter Umfeld-Workflow und Steuerung mit vielen Fehlerkorrekturen
4 |
5 | * Verbesserungen beim Material Design (@proletarius101)
6 |
7 | * Apps ohne PNG-Symbole werden jetzt unter "Neues" angezeigt (@ashutoshgngwr)
8 |
9 | * Bessere Symbolverwaltung mit eingeschränkten Daten-/WLAN-Einstellungen
10 |
11 | * Unterstützung für mehr Barcode-Scanner (@Lugerun)
12 |
13 | * Ermöglicht die Auswahl der anzuzeigenden unerwünschten Merkmale.
14 |
15 | * …
16 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/donate_bitcoin.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/metadata/hu/changelogs/1013050.txt:
--------------------------------------------------------------------------------
1 | * Javított tématámogatás (@proletarius101)
2 |
3 | * Új értesítési szalagok: „Nincs internet” és „Nincs engedélyezett Wi-Fi vagy adatkapcsolat”
4 |
5 | * SD-kártyán lévő tárolók és tükrök kezelésének javítása
6 |
7 | * A Trichrome programkönyvár ismételt frissítéseinek megállítása
8 |
9 | * Material Design jobb követése (@proletarius101)
10 |
11 | * OpenCollective-jelvény javítása (@ConnyDuck)
12 |
13 | * Ikonbetöltés átdolgozása a Glide segítségével (@proletarius101)
14 |
15 | * Új adaptív ikon (@12people)
16 |
17 | * Kódmodernizáció (@Isira-Seneviratne)
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_refresh.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_video.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_warning.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/donate_litecoin.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/config/pmd/rules-main.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 | Rules for the project code aka "main".
9 |
10 |
11 |
12 |
13 |
14 |
--------------------------------------------------------------------------------
/metadata/fa/changelogs/1014050.txt:
--------------------------------------------------------------------------------
1 | * بازنویسی فهرست همرسانی برای استفاده از گزینههای توکار مانند نزدیک
2 |
3 | * بهبود جریان کار نزدیک و ناوبری با کلّی رفع اشکال
4 |
5 | * بهبودهای طرّاحی متریال (@proletarius101)
6 |
7 | * نشان ندادن کارههای بدون نقشک png درزبانهٔ جدیدترین (@ashutoshgngwr)
8 |
9 | * مدیریت نقشک بهتر با تنظیمات داده/وایفای
10 |
11 | * پشتیبانی از پویشگرهای رمز نواری بیشتر (@Lugerun)
12 |
13 | * اجازهٔ گزینش پادویژگیهای نمایش داده شده
14 |
15 | * انسداد افزودن مخزنها هنگام اجازه ندادن مدیر افزاره به «منابع ناشناس»
16 |
17 | * برداشتن تنظیمات «اجازه به درخواستهای ارسالی»
18 |
--------------------------------------------------------------------------------
/metadata/ro/changelogs/1014050.txt:
--------------------------------------------------------------------------------
1 | * Revizuirea Share pentru opțiuni integrate,ca Nearby.
2 |
3 | * Flux de lucru și navigare Nearby mai bune,multe corecturi .
4 |
5 | *Design material mai bun(@proletarius101).
6 |
7 | * App-uri fără iconi PNG acum în Latest Tab (@ashutoshgngwr)
8 |
9 | * Gestionare îmbunătățită a pictogramelor cu setări limitate de date/WiFi.
10 |
11 | *Partajare offline, în apropiere
12 |
13 | * Permite să alegi ce antifațe se afișează
14 |
15 | * Blocare add de noi repoziții când adminul dispozitivului refuză "Surse necunoscute"
16 |
17 | * Eliminarea "Allow Push Requests"
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable-anydpi-v21/ic_file_install.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
11 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/test/java/org/fdroid/fdroid/TestFDroidApp.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid;
2 |
3 | import android.app.Application;
4 |
5 | /**
6 | * Due to there being so much static initialization in the main FDroidApp, it becomes hard to reset
7 | * that state between Robolectric test runs. Therefore, robolectric tests will default to this
8 | * {@link Application} instead of {@link FDroidApp}. It intentionally doesn't extends {@link FDroidApp}
9 | * so that the static initialization in {@link FDroidApp#onCreate()} is not executed.
10 | */
11 | public class TestFDroidApp extends Application {
12 |
13 | }
14 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_website.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/compat/SupportedArchitectures.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.compat;
2 |
3 | import android.annotation.TargetApi;
4 | import android.os.Build;
5 |
6 | public class SupportedArchitectures {
7 |
8 | /**
9 | * The most preferred ABI is the first element in the list.
10 | */
11 | @TargetApi(21)
12 | @SuppressWarnings("deprecation")
13 | public static String[] getAbis() {
14 | if (Build.VERSION.SDK_INT >= 21) {
15 | return Build.SUPPORTED_ABIS;
16 | }
17 | return new String[]{Build.CPU_ABI, Build.CPU_ABI2};
18 | }
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/acra/CrashReportSenderFactory.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.acra;
2 |
3 | import android.content.Context;
4 |
5 | import org.acra.config.ACRAConfiguration;
6 | import org.acra.sender.ReportSender;
7 | import org.acra.sender.ReportSenderFactory;
8 |
9 | import androidx.annotation.NonNull;
10 |
11 | public class CrashReportSenderFactory implements ReportSenderFactory {
12 | @NonNull
13 | @Override
14 | public ReportSender create(@NonNull Context context, @NonNull ACRAConfiguration acraConfiguration) {
15 | return new CrashReportSender(acraConfiguration);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_delete.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_details2_link_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_categories.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_file_download.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_lock.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/data/OrderClause.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.data;
2 |
3 | class OrderClause {
4 |
5 | private final String expression;
6 | private String[] args;
7 |
8 | OrderClause(String expression) {
9 | this.expression = expression;
10 | }
11 |
12 | OrderClause(String field, String[] args, boolean isAscending) {
13 | this.expression = field + " " + (isAscending ? "ASC" : "DESC");
14 | this.args = args;
15 | }
16 |
17 | @Override
18 | public String toString() {
19 | return expression;
20 | }
21 |
22 | public String[] getArgs() {
23 | return args;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_email.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_expand_more.xml:
--------------------------------------------------------------------------------
1 |
9 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/security/zipsigner/ResourceAdapter.java:
--------------------------------------------------------------------------------
1 |
2 | package kellinwood.security.zipsigner;
3 |
4 | /**
5 | * Interface to obtain internationalized strings for the progress events.
6 | */
7 | public interface ResourceAdapter {
8 |
9 | public enum Item {
10 | INPUT_SAME_AS_OUTPUT_ERROR,
11 | AUTO_KEY_SELECTION_ERROR,
12 | LOADING_CERTIFICATE_AND_KEY,
13 | PARSING_CENTRAL_DIRECTORY,
14 | GENERATING_MANIFEST,
15 | GENERATING_SIGNATURE_FILE,
16 | GENERATING_SIGNATURE_BLOCK,
17 | COPYING_ZIP_ENTRY
18 | }
19 |
20 | ;
21 |
22 | public String getString(Item item, Object... args);
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/ic_add_circle_outline.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/app_version_button_bg_selector_downgrade.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | -
4 |
5 |
6 |
7 |
8 |
9 | -
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_close.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_clear.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/androidTest/proguard-rules.pro:
--------------------------------------------------------------------------------
1 | -dontoptimize
2 | -dontwarn
3 | -dontobfuscate
4 |
5 | -dontwarn android.test.**
6 | -dontwarn android.support.test.**
7 | -dontnote junit.framework.**
8 | -dontnote junit.runner.**
9 |
10 | # Uncomment this if you use Mockito
11 | #-dontwarn org.mockito.**
12 |
13 | -keep class org.hamcrest.** { *; }
14 | -dontwarn org.hamcrest.**
15 |
16 | -keep class org.junit.** { *; }
17 | -dontwarn org.junit.**
18 |
19 | -keep class junit.** { *; }
20 | -dontwarn junit.**
21 |
22 | # This is necessary so that RemoteWorkManager can be initialized (also marked with @Keep)
23 | -keep class androidx.work.multiprocess.RemoteWorkManagerClient {
24 | public (...);
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_translation.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/fab_search.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notifications_off.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_updates.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/nearby/BluetoothConstants.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby;
2 |
3 | import java.util.UUID;
4 |
5 | /**
6 | * We need some shared information between the client and the server app.
7 | */
8 | class BluetoothConstants {
9 |
10 | public static UUID fdroidUuid() {
11 | // TODO: Generate a UUID deterministically from, e.g. "org.fdroid.fdroid.net.Bluetooth";
12 | // This can be an offline process, as long as it can be reproduced by other people who
13 | // want to do so.
14 | // This UUID is just from mashing random hex characters on the keyboard.
15 | return UUID.fromString("cd59ba31-5729-b3bb-cb29-732b59eb61aa");
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_search.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_details2_screenshot_item.xml:
--------------------------------------------------------------------------------
1 |
2 |
6 |
7 |
14 |
15 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Built application files
2 | *.apk
3 | *.ap_
4 |
5 | # Files for the Dalvik VM
6 | *.dex
7 |
8 | # Java class files
9 | *.class
10 |
11 | # Generated files
12 | bin/
13 | gen/
14 | build.xml
15 |
16 | # Gradle files
17 | .gradle/
18 | build/
19 |
20 | # Local configuration file (sdk path, etc)
21 | local.properties
22 |
23 | # Proguard folder generated by Eclipse
24 | proguard/
25 |
26 | # Log Files
27 | *.log
28 |
29 | # Editor swap/save files
30 | *~
31 | *.swp
32 |
33 | # More IDE stuff
34 | .idea/
35 | *.iml
36 | out
37 | .settings/
38 |
39 | # Imported libs
40 | extern/*/libs/
41 | extern/*/*/libs/
42 |
43 | # Tests
44 | junit-report.xml
45 |
46 | # Screen dumps from Android Studio/DDMS
47 | captures/
48 |
49 | /fdroid/
50 |
--------------------------------------------------------------------------------
/app/src/defo/java/org/fdroid/fdroid/ConscryptLoader.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid;
2 |
3 | import android.util.Log;
4 |
5 | import org.conscrypt.Conscrypt;
6 |
7 | import java.security.Provider;
8 | import java.security.Security;
9 |
10 | public class ConscryptLoader {
11 | public static final String TAG = "ConscryptLoader";
12 |
13 | public static void installConscrypt() {
14 | Security.insertProviderAt(Conscrypt.newProviderBuilder().defaultTlsProtocol("TLSv1.3").build(), 1);
15 |
16 | Security.removeProvider("AndroidOpenSSL");
17 | for (Provider provider : Security.getProviders()) {
18 | Log.i(TAG, "TLS Provider: " + provider);
19 | }
20 | Conscrypt.checkAvailability();
21 | }
22 | }
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/security/zipsigner/optional/LoadKeystoreException.java:
--------------------------------------------------------------------------------
1 |
2 | package kellinwood.security.zipsigner.optional;
3 |
4 | import java.io.IOException;
5 |
6 | /**
7 | * Thrown by JKS.engineLoad() for errors that occur after determining the keystore is actually a JKS keystore.
8 | */
9 | public class LoadKeystoreException extends IOException {
10 |
11 | public LoadKeystoreException() {
12 | }
13 |
14 | public LoadKeystoreException(String message) {
15 | super(message);
16 | }
17 |
18 | public LoadKeystoreException(String message, Throwable cause) {
19 | super(message, cause);
20 | }
21 |
22 | public LoadKeystoreException(Throwable cause) {
23 | super(cause);
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_versions.xml:
--------------------------------------------------------------------------------
1 |
9 |
12 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/install_history.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_last_updated.xml:
--------------------------------------------------------------------------------
1 |
9 |
12 |
15 |
16 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/ic_bluetooth.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_link.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/full/res/layout/swap_success.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/values/config.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 | false
19 |
--------------------------------------------------------------------------------
/app/src/full/res/layout/swap_select_apps.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
11 |
12 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/qr/CameraCharacteristicsChecker.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.qr;
2 |
3 | import android.content.Context;
4 |
5 | public abstract class CameraCharacteristicsChecker {
6 | public static CameraCharacteristicsChecker getInstance(final Context context) {
7 | if (android.os.Build.VERSION.SDK_INT >= 21) {
8 | return new CameraCharacteristicsMinApiLevel21(context);
9 | } else {
10 | return new CameraCharacteristicsMaxApiLevel20();
11 | }
12 | }
13 |
14 | public abstract boolean hasAutofocus();
15 |
16 | class FDroidDeviceException extends Exception {
17 | FDroidDeviceException(final String message, final Throwable cause) {
18 | super(message, cause);
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/nearby_splash.xml:
--------------------------------------------------------------------------------
1 |
3 |
6 |
7 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_share.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/views/updates/items/AppUpdateData.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.views.updates.items;
2 |
3 | import androidx.appcompat.app.AppCompatActivity;
4 |
5 | /**
6 | * Used as a common base class for all data types in the {@link
7 | * org.fdroid.fdroid.views.updates.UpdatesAdapter}. Doesn't have any
8 | * functionality of its own, but allows the {@link
9 | * org.fdroid.fdroid.views.updates.UpdatesAdapter#delegatesManager}
10 | * to specify a data type more specific than just {@link Object}.
11 | */
12 | public abstract class AppUpdateData { // NOPMD This abstract class does not have any abstract methods
13 | public final AppCompatActivity activity;
14 |
15 | public AppUpdateData(AppCompatActivity activity) {
16 | this.activity = activity;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/app_details2_screenshots.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/nearby/WifiStateChangeReceiver.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.net.wifi.WifiManager;
7 |
8 | import org.fdroid.fdroid.Utils;
9 |
10 | public class WifiStateChangeReceiver extends BroadcastReceiver {
11 | private static final String TAG = "WifiStateChangeReceiver";
12 |
13 | @Override
14 | public void onReceive(Context context, Intent intent) {
15 | if (WifiManager.NETWORK_STATE_CHANGED_ACTION.equals(intent.getAction())) {
16 | WifiStateChangeService.start(context, intent);
17 | } else {
18 | Utils.debugLog(TAG, "received unsupported Intent: " + intent);
19 | }
20 | }
21 | }
22 |
--------------------------------------------------------------------------------
/tools/validate-fdroid-metrics.json.py:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python3
2 |
3 | import glob
4 | import json
5 | import os
6 | import sys
7 | import jsonschema
8 |
9 | os.chdir(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
10 | with open('app/src/test/resources/cimp.schema.json') as fp:
11 | schema = json.load(fp)
12 |
13 | errors = 0
14 | files = sys.argv[1:]
15 | if not files:
16 | files = glob.glob(os.path.join(os.getenv('HOME'), 'Downloads', '*.json'))
17 | if not files:
18 | print('Usage: %s file.json ...' % __file__)
19 | exit(1)
20 | for f in files:
21 | print('checking', f)
22 | with open(f) as fp:
23 | report = json.load(fp)
24 | if jsonschema.validate(report, schema) is not None:
25 | print('ERROR: %s did not validate' % f)
26 | errors += 1
27 | exit(errors)
28 |
--------------------------------------------------------------------------------
/app/src/test/java/org/fdroid/fdroid/shadows/ShadowContextImpl.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.shadows;
2 |
3 | import android.annotation.SuppressLint;
4 |
5 | import org.robolectric.annotation.Implementation;
6 | import org.robolectric.annotation.Implements;
7 |
8 | /**
9 | * Workaround for the large amount of "WARNING: unknown service appops" messages which clogged up our CI output.
10 | */
11 | @Implements(className = org.robolectric.shadows.ShadowContextImpl.CLASS_NAME)
12 | @SuppressLint("Unused")
13 | public class ShadowContextImpl extends org.robolectric.shadows.ShadowContextImpl {
14 | @Override
15 | @Implementation
16 | public Object getSystemService(String name) {
17 | if ("appops".equals(name)) {
18 | return null;
19 | }
20 |
21 | return super.getSystemService(name);
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/logging/LoggerFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Ken Ellinwood.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package kellinwood.logging;
18 |
19 | public interface LoggerFactory {
20 |
21 | public LoggerInterface getLogger(String category);
22 | }
23 |
--------------------------------------------------------------------------------
/app/src/testFull/java/org/fdroid/fdroid/nearby/WifiStateChangeServiceTest.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby;
2 |
3 | import org.junit.Test;
4 |
5 | import java.net.InetAddress;
6 | import java.net.UnknownHostException;
7 |
8 | public class WifiStateChangeServiceTest {
9 |
10 | @Test
11 | public void testFormatIpAddress() throws UnknownHostException {
12 | for (long i = Integer.MIN_VALUE; i <= Integer.MAX_VALUE; i += 98273) {
13 | String ip = WifiStateChangeService.formatIpAddress((int) i);
14 | InetAddress.getByName(ip);
15 | }
16 | InetAddress.getByName(WifiStateChangeService.formatIpAddress(Integer.MAX_VALUE));
17 | InetAddress.getByName(WifiStateChangeService.formatIpAddress(Integer.MIN_VALUE));
18 | InetAddress.getByName(WifiStateChangeService.formatIpAddress(0));
19 | }
20 | }
21 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/nearby/httpish/Header.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby.httpish;
2 |
3 | import java.util.Locale;
4 |
5 | public abstract class Header {
6 |
7 | private static final Header[] VALID_HEADERS = {
8 | new ContentLengthHeader(),
9 | new ETagHeader(),
10 | };
11 |
12 | protected abstract String getName();
13 |
14 | protected abstract void handle(FileDetails details, String value);
15 |
16 | public static void process(FileDetails details, String header, String value) {
17 | header = header.toLowerCase(Locale.ENGLISH);
18 | for (Header potentialHeader : VALID_HEADERS) {
19 | if (potentialHeader.getName().equals(header)) {
20 | potentialHeader.handle(details, value);
21 | break;
22 | }
23 | }
24 | }
25 |
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_donate.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_nfc.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/repo_details_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
23 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/ProgressListener.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid;
2 |
3 | import java.net.URL;
4 |
5 | /**
6 | * This is meant only to send download progress for any URL (e.g. index
7 | * updates, APKs, etc). This also keeps this class pure Java so that classes
8 | * that use {@code ProgressListener} can be tested on the JVM, without requiring
9 | * an Android device or emulator.
10 | *
11 | * The full URL of a download is used as the unique identifier throughout
12 | * F-Droid. I can take a few forms:
13 | *
14 | * - {@link URL} instances
15 | *
- {@link android.net.Uri} instances
16 | *
- {@code String} instances, i.e. {@link URL#toString()}
17 | *
- {@code int}s, i.e. {@link String#hashCode()}
18 | *
19 | */
20 | public interface ProgressListener {
21 |
22 | void onProgress(long bytesRead, long totalBytes);
23 |
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_screenshots_page.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 |
19 |
20 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/no_updates_bg.xml:
--------------------------------------------------------------------------------
1 |
6 |
12 |
13 |
--------------------------------------------------------------------------------
/app/src/full/res/xml/device_filter.xml:
--------------------------------------------------------------------------------
1 |
2 |
19 |
20 |
21 |
25 |
26 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notifications_paused.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/test/java/org/fdroid/fdroid/views/main/MainActivityTest.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.views.main;
2 |
3 | import org.junit.Test;
4 |
5 | import static org.junit.Assert.assertEquals;
6 | import static org.junit.Assert.assertNotEquals;
7 |
8 | public class MainActivityTest {
9 |
10 | @Test
11 | public void testSanitizeSearchTerms() {
12 | for (String valid : new String[]{"private browser", "πÇÇ", "现代 通用字", "български", "عربي"}) {
13 | assertEquals(valid, MainActivity.sanitizeSearchTerms(valid));
14 | }
15 | for (String invalid : new String[]{
16 | "Robert'); DROP TABLE Students; --",
17 | "xxx') OR 1 = 1 -- ]",
18 | "105 OR 1=1;",
19 | "\" OR \"=\"",
20 | }) {
21 | assertNotEquals(invalid, MainActivity.sanitizeSearchTerms(invalid));
22 | }
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/config/pmd/rules-test.xml:
--------------------------------------------------------------------------------
1 |
2 |
7 |
8 | Rules for the test harness code aka "androidTest" and "test".
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/details2.xml:
--------------------------------------------------------------------------------
1 |
2 |
23 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/UpdateJobService.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid;
2 |
3 | import android.annotation.TargetApi;
4 | import android.app.job.JobParameters;
5 | import android.app.job.JobService;
6 |
7 | /**
8 | * Interface between the new {@link android.app.job.JobScheduler} API and
9 | * {@link UpdateService}, which is based on {@link androidx.core.app.JobIntentService}.
10 | *
11 | * @see Project Volta: Scheduling jobs
12 | */
13 | @TargetApi(21)
14 | public class UpdateJobService extends JobService {
15 | @Override
16 | public boolean onStartJob(final JobParameters params) {
17 | UpdateService.updateNow(this);
18 | return false;
19 | }
20 |
21 | @Override
22 | public boolean onStopJob(JobParameters params) {
23 | UpdateService.stopNow(this);
24 | return true;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/src/test/java/org/fdroid/fdroid/mock/MockApk.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.mock;
2 |
3 | import org.fdroid.fdroid.data.Apk;
4 | import org.fdroid.fdroid.data.App;
5 |
6 | public class MockApk extends Apk {
7 |
8 | public MockApk(String id, int versionCode) {
9 | this.packageName = id;
10 | this.versionCode = versionCode;
11 | }
12 |
13 | public MockApk(String id, int versionCode, String repoAddress, String apkName) {
14 | this.packageName = id;
15 | this.versionCode = versionCode;
16 | this.repoAddress = repoAddress;
17 | this.apkName = apkName;
18 | }
19 |
20 | public MockApk(App app, int versionCode) {
21 | this.appId = app.getId();
22 | this.versionCode = versionCode;
23 | }
24 |
25 | public MockApk(long appId, int versionCode) {
26 | this.appId = appId;
27 | this.versionCode = versionCode;
28 | }
29 |
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/ic_wifi.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/nearby/peers/Peer.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby.peers;
2 |
3 | import android.os.Parcelable;
4 |
5 | import androidx.annotation.DrawableRes;
6 |
7 | /**
8 | * TODO This model assumes that "peers" from Bluetooth, Bonjour, and WiFi are
9 | * different things. They are not different repos though, they all point to
10 | * the same repos. This should really be combined to be a single "RemoteRepo"
11 | * class that represents a single device's local repo, and can have zero to
12 | * many ways to connect to it (e.g. Bluetooth, WiFi, USB Thumb Drive, SD Card,
13 | * WiFi Direct, etc).
14 | */
15 | public interface Peer extends Parcelable {
16 |
17 | String getName();
18 |
19 | @DrawableRes
20 | int getIcon();
21 |
22 | boolean equals(Object peer);
23 |
24 | String getRepoAddress();
25 |
26 | String getFingerprint();
27 |
28 | boolean shouldPromptForSwapBack();
29 | }
30 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/panic/PanicPreferencesActivity.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.panic;
2 |
3 | import android.os.Bundle;
4 | import android.view.View;
5 |
6 | import com.google.android.material.appbar.MaterialToolbar;
7 |
8 | import org.fdroid.fdroid.FDroidApp;
9 | import org.fdroid.fdroid.R;
10 |
11 | import androidx.appcompat.app.AppCompatActivity;
12 |
13 | public class PanicPreferencesActivity extends AppCompatActivity {
14 |
15 | @Override
16 | public void onCreate(Bundle bundle) {
17 | FDroidApp fdroidApp = (FDroidApp) getApplication();
18 | fdroidApp.applyPureBlackBackgroundInDarkTheme(this);
19 |
20 | super.onCreate(bundle);
21 | setContentView(R.layout.activity_panic_settings);
22 |
23 | MaterialToolbar toolbar = findViewById(R.id.toolbar);
24 | setSupportActionBar(toolbar);
25 | getSupportActionBar().setDisplayHomeAsUpEnabled(true);
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/logging/ConsoleLoggerFactory.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Ken Ellinwood.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package kellinwood.logging;
18 |
19 | public class ConsoleLoggerFactory implements LoggerFactory {
20 |
21 | public LoggerInterface getLogger(String category) {
22 | return new StreamLogger(category, System.out);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/nearby/UsbDeviceMediaMountedReceiver.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 | import android.os.Environment;
7 |
8 | import org.fdroid.fdroid.views.main.NearbyViewBinder;
9 |
10 | public class UsbDeviceMediaMountedReceiver extends BroadcastReceiver {
11 | @Override
12 | public void onReceive(Context context, Intent intent) {
13 | if (intent == null || intent.getAction() == null) {
14 | return;
15 | }
16 | String action = intent.getAction();
17 | if (Environment.MEDIA_BAD_REMOVAL.equals(action)
18 | || Environment.MEDIA_MOUNTED.equals(action)
19 | || Environment.MEDIA_REMOVED.equals(action)
20 | || Environment.MEDIA_EJECTING.equals(action)) {
21 | NearbyViewBinder.updateUsbOtg(context);
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/hooks/install-hooks.sh:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | #
3 | # Install all the client hooks
4 |
5 | BASE_DIR="$(cd $(dirname $0); pwd -P)"
6 | HOOK_NAMES="applypatch-msg pre-applypatch post-applypatch pre-commit prepare-commit-msg commit-msg post-commit pre-rebase post-checkout post-merge pre-push post-push pre-receive update post-receive post-update pre-auto-gc"
7 | HOOK_DIR="$(git rev-parse --show-toplevel)/.git/hooks"
8 |
9 | for hook in $HOOK_NAMES; do
10 |
11 | shipped_hook="$BASE_DIR/$hook"
12 | installed_hook="$HOOK_DIR/$hook"
13 |
14 | # If we don't distribute it, continue
15 | if [ ! -f "$shipped_hook" ]; then
16 | continue
17 | fi
18 |
19 | if [ -h "$installed_hook" ]; then
20 | echo "$installed_hook is a symlink - replacing."
21 | elif [ -e "$installed_hook" ]; then
22 | echo "$installed_hook hook already exists."
23 | continue
24 | fi
25 |
26 | # Create the symlink
27 | echo "ln -s -f \"$shipped_hook\" \"$installed_hook\""
28 | ln -s -f "$shipped_hook" "$installed_hook"
29 |
30 | done
31 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/security/zipsigner/ProgressListener.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Ken Ellinwood.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package kellinwood.security.zipsigner;
18 |
19 | public interface ProgressListener {
20 |
21 | /**
22 | * Called to notify the listener that progress has been made during
23 | * the zip signing operation.
24 | */
25 | public void onProgress(ProgressEvent event);
26 | }
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_latest.xml:
--------------------------------------------------------------------------------
1 |
7 |
12 |
17 |
18 |
--------------------------------------------------------------------------------
/app/src/androidTest/AndroidManifest.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
11 |
12 |
15 |
16 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/main/java/org/fdroid/fdroid/receiver/DeviceStorageReceiver.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.receiver;
2 |
3 | import android.content.BroadcastReceiver;
4 | import android.content.Context;
5 | import android.content.Intent;
6 |
7 | import org.fdroid.fdroid.DeleteCacheService;
8 | import org.fdroid.fdroid.Utils;
9 | import org.fdroid.fdroid.work.CleanCacheWorker;
10 |
11 | public class DeviceStorageReceiver extends BroadcastReceiver {
12 | @Override
13 | public void onReceive(Context context, Intent intent) {
14 | if (intent == null) {
15 | return;
16 | }
17 | String action = intent.getAction();
18 | if (Intent.ACTION_DEVICE_STORAGE_LOW.equals(action)) {
19 | int percentageFree = Utils.getPercent(Utils.getImageCacheDirAvailableMemory(context),
20 | Utils.getImageCacheDirTotalMemory(context));
21 | CleanCacheWorker.force(context);
22 | if (percentageFree <= 2) {
23 | DeleteCacheService.deleteAll(context);
24 | }
25 | }
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/app/src/test/resources/ugly_additional_repos.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - FTW
6 |
7 | - https://f-droid.org/repo
8 |
9 | - I'm the first oem repo.
10 |
11 | - 22
12 |
13 | - 1
14 |
15 | - prompt
16 |
17 | - fffff2313aaaaabcccc111
18 |
19 |
20 | SHOULD BE IGNORED
21 | - Repo Name
22 | - https://www.oem0.com/yeah/repo
23 | - I'm the second oem repo.
24 | - 22
25 | - 1
26 | SHOULD BE IGNORED
27 | - SHOULD BE IGNORED
28 | - always
29 | - fffff2313aaaaabcccc111
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/main/aidl/org/fdroid/fdroid/privileged/IPrivilegedCallback.aidl:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2015 Dominik Schürmann
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.privileged;
21 |
22 | interface IPrivilegedCallback {
23 |
24 | void handleResult(in String packageName, in int returnCode);
25 |
26 | }
--------------------------------------------------------------------------------
/app/src/main/res/layout/listitem_antifeaturelisting.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
18 |
19 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/main/res/values/attrs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/app/src/main/res/menu/main_activity_screens.xml:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/config/errorprone.gradle:
--------------------------------------------------------------------------------
1 |
2 | buildscript {
3 | repositories {
4 | maven {
5 | url "https://plugins.gradle.org/m2/"
6 | }
7 | }
8 | dependencies {
9 | classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.16"
10 | }
11 | }
12 |
13 | apply plugin: "net.ltgt.errorprone"
14 |
15 | tasks.withType(JavaCompile) {
16 | options.compilerArgs += [
17 | '-XepAllDisabledChecksAsWarnings',
18 | '-XepExcludedPaths:.*/cc/mvdan/accesspoint/.*',
19 | '-Xep:CatchFail:OFF',
20 | '-Xep:ClassCanBeStatic:OFF',
21 | '-Xep:DateFormatConstant:OFF',
22 | '-Xep:DefaultCharset:OFF',
23 | '-Xep:FormatString:OFF',
24 | '-Xep:JavaLangClash:OFF',
25 | '-Xep:MissingCasesInEnumSwitch:OFF',
26 | '-Xep:MissingOverride:OFF',
27 | '-Xep:NonAtomicVolatileUpdate:OFF',
28 | '-Xep:OperatorPrecedence:OFF',
29 | '-Xep:StringSplitter:OFF',
30 | '-Xep:UnsynchronizedOverridesSynchronized:OFF',
31 | ]
32 | }
33 |
34 | configurations.errorprone {
35 | resolutionStrategy.force 'com.google.errorprone:error_prone_core:2.2.0'
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/nearby/BluetoothClient.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.nearby;
2 |
3 | import android.bluetooth.BluetoothAdapter;
4 | import android.bluetooth.BluetoothDevice;
5 | import android.bluetooth.BluetoothSocket;
6 |
7 | import java.io.IOException;
8 |
9 | public class BluetoothClient {
10 | private static final String TAG = "BluetoothClient";
11 |
12 | private final BluetoothDevice device;
13 |
14 | public BluetoothClient(String macAddress) {
15 | device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(macAddress);
16 | }
17 |
18 | public BluetoothConnection openConnection() throws IOException {
19 |
20 | BluetoothConnection connection = null;
21 | try {
22 | BluetoothSocket socket = device.createInsecureRfcommSocketToServiceRecord(BluetoothConstants.fdroidUuid());
23 | connection = new BluetoothConnection(socket);
24 | connection.open();
25 | return connection;
26 | } finally {
27 | if (connection != null) {
28 | connection.closeQuietly();
29 | }
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/activity_main.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
16 |
17 |
24 |
25 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/peers/WifiPeer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Senecto Limited
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.nearby.peers;
21 |
22 | import org.fdroid.fdroid.data.NewRepoConfig;
23 |
24 | /**
25 | * Dummy version for basic app flavor.
26 | */
27 | public class WifiPeer {
28 | public WifiPeer(NewRepoConfig config) {
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/SwapService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Hans-Christoph Steiner
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.nearby;
21 |
22 | import android.content.Context;
23 |
24 | /**
25 | * Dummy version for basic app flavor.
26 | */
27 | public class SwapService {
28 | public static void start(Context context) {
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/test/resources/additional_repos.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | - oem0Name
6 |
7 | - https://www.oem0.com/yeah/repo
8 |
9 | - I'm the first oem repo.
10 |
11 | - 22
12 |
13 | - 1
14 |
15 | - ignore
16 |
17 | - fffff2313aaaaabcccc111
18 |
19 |
20 | - oem1MyNameIs
21 |
22 | - https://www.mynameis.com/rapper/repo
23 |
24 | - Who is the first repo?
25 |
26 | - 22
27 |
28 | - 0
29 |
30 | - ignore
31 |
32 | - ddddddd2313aaaaabcccc111
33 |
34 |
35 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 | This is a demo fork of F-Droid to serve as an example app built on the
3 | development fork of Conscrypt which supports TLS Encrypted ClientHello (ECH).
4 | ECH is the next version of the TLS protocol that encrypts internet traffic and
5 | puts the "S" in HTTPS. It makes it possible to encrypt all of the metadata that
6 | is possible to encrypt in the TLS negogiation. It is a test case for
7 | interoperability between various implementations, platforms, and networks.
8 |
9 | The Encrypted ClientHello (ECH) mechanism (IETF draft spec) is a way to plug a
10 | few privacy-holes that remain in the Transport Layer Security (TLS) protocol
11 | that's used as the security layer for the web. OpenSSL is a widely used library
12 | that provides an implementation of the TLS protocol. The DEfO project is
13 | developing an implementation of ECH for OpenSSL, and various clients and servers
14 | that use OpenSSL as a demonstration and for interoperability testing.
15 |
16 | DEfO was initially funded by the Open Technology Fund, and subsequently by the
17 | National Democratic Initiative. Tolerant Networks Ltd. and people from the
18 | Guardian Project are doing the work in DEfO.
19 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/SDCardScannerService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Hans-Christoph Steiner
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.nearby;
21 |
22 | import android.content.Context;
23 |
24 | /**
25 | * Dummy version for basic app flavor.
26 | */
27 | public class SDCardScannerService {
28 | public static void scan(Context context) {
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/app/src/main/res/values/type.xml:
--------------------------------------------------------------------------------
1 |
16 |
17 |
18 |
19 |
22 |
23 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_antifeature_nosourcesince.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
13 |
16 |
17 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/ic_wifi_tethering.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/BluetoothClient.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Senecto Limited
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.nearby;
21 |
22 | /**
23 | * Dummy version for basic app flavor.
24 | */
25 |
26 | public class BluetoothClient {
27 |
28 | public BluetoothClient(String ignored) {
29 | }
30 |
31 | public BluetoothConnection openConnection() {
32 | return null;
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/full/res/drawable/ic_bluetooth_searching.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/logging/StreamLogger.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Ken Ellinwood.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package kellinwood.logging;
18 |
19 | import java.io.PrintStream;
20 |
21 | public class StreamLogger extends AbstractLogger {
22 |
23 | PrintStream out;
24 |
25 | public StreamLogger(String category, PrintStream out) {
26 | super(category);
27 | this.out = out;
28 | }
29 |
30 | @Override
31 | protected void write(String level, String message, Throwable t) {
32 | out.print(format(level, message));
33 | if (t != null) t.printStackTrace(out);
34 | }
35 |
36 | }
37 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_settings.xml:
--------------------------------------------------------------------------------
1 |
7 |
10 |
11 |
--------------------------------------------------------------------------------
/app/src/full/res/layout/swap_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
14 |
15 |
20 |
21 |
22 |
23 |
27 |
28 |
--------------------------------------------------------------------------------
/app/src/main/res/xml/network_security_config.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | amazonaws.com
7 |
8 |
9 | f-droid.org
10 |
11 |
12 | github.com
13 |
14 |
15 | githubusercontent.com
16 |
17 |
18 | github.io
19 |
20 |
21 | gitlab.com
22 |
23 |
24 | gitlab.io
25 |
26 |
27 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/panic/DestructivePreference.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.panic;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 |
6 | import org.fdroid.fdroid.R;
7 |
8 | import androidx.core.content.ContextCompat;
9 | import androidx.preference.Preference;
10 | import androidx.preference.PreferenceViewHolder;
11 |
12 | public class DestructivePreference extends Preference {
13 | public DestructivePreference(Context context, AttributeSet attrs, int defStyleAttr) {
14 | super(context, attrs, defStyleAttr);
15 | }
16 |
17 | public DestructivePreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
18 | super(context, attrs, defStyleAttr, defStyleRes);
19 | }
20 |
21 | public DestructivePreference(Context context, AttributeSet attrs) {
22 | super(context, attrs);
23 | }
24 |
25 | public DestructivePreference(Context context) {
26 | super(context);
27 | }
28 |
29 | @Override
30 | public void onBindViewHolder(PreferenceViewHolder holder) {
31 | super.onBindViewHolder(holder);
32 | holder.itemView.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.panic_destructive));
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/panic/SelectInstalledAppListAdapter.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.panic;
2 |
3 | import android.view.View;
4 | import android.view.ViewGroup;
5 |
6 | import org.fdroid.fdroid.Preferences;
7 | import org.fdroid.fdroid.R;
8 | import org.fdroid.fdroid.views.installed.InstalledAppListAdapter;
9 | import org.fdroid.fdroid.views.installed.InstalledAppListItemController;
10 |
11 | import java.util.Set;
12 |
13 | import androidx.annotation.NonNull;
14 | import androidx.appcompat.app.AppCompatActivity;
15 |
16 | public class SelectInstalledAppListAdapter extends InstalledAppListAdapter {
17 | private final Set selectedApps;
18 |
19 | SelectInstalledAppListAdapter(AppCompatActivity activity) {
20 | super(activity);
21 | Preferences prefs = Preferences.get();
22 | selectedApps = prefs.getPanicWipeSet();
23 | prefs.setPanicTmpSelectedSet(selectedApps);
24 | }
25 |
26 | @NonNull
27 | @Override
28 | public InstalledAppListItemController onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
29 | View view = activity.getLayoutInflater().inflate(R.layout.installed_app_list_item, parent, false);
30 | return new SelectInstalledAppListItemController(activity, view, selectedApps);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_download_progress_0.xml:
--------------------------------------------------------------------------------
1 |
6 |
15 |
22 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/SwapWorkflowActivity.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Senecto Limited
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.nearby;
21 |
22 | import android.content.Context;
23 | import android.net.Uri;
24 |
25 | /**
26 | * Dummy version for basic app flavor.
27 | */
28 | public class SwapWorkflowActivity {
29 |
30 | public static final String EXTRA_PREVENT_FURTHER_SWAP_REQUESTS = "preventFurtherSwap";
31 |
32 | public static void requestSwap(Context context, Uri uri) {
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_notification_download.xml:
--------------------------------------------------------------------------------
1 |
6 |
15 |
22 |
29 |
30 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/panic/ExitActivity.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.panic;
2 |
3 | import android.content.Intent;
4 | import android.os.Build;
5 | import android.os.Bundle;
6 |
7 | import androidx.appcompat.app.AppCompatActivity;
8 |
9 | public class ExitActivity extends AppCompatActivity {
10 |
11 | @Override
12 | public void onCreate(Bundle savedInstanceState) {
13 | super.onCreate(savedInstanceState);
14 |
15 | if (Build.VERSION.SDK_INT >= 21) {
16 | finishAndRemoveTask();
17 | } else {
18 | finish();
19 | }
20 |
21 | System.exit(0);
22 | }
23 |
24 | public static void exitAndRemoveFromRecentApps(final AppCompatActivity activity) {
25 | activity.runOnUiThread(new Runnable() {
26 | @Override
27 | public void run() {
28 | Intent intent = new Intent(activity, ExitActivity.class);
29 |
30 | intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
31 | | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
32 | | Intent.FLAG_ACTIVITY_CLEAR_TASK
33 | | Intent.FLAG_ACTIVITY_NO_ANIMATION);
34 |
35 | activity.startActivity(intent);
36 | }
37 | });
38 |
39 | }
40 |
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/TreeUriScannerIntentService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Senecto Limited
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.nearby;
21 |
22 | import androidx.appcompat.app.AppCompatActivity;
23 | import android.content.Intent;
24 |
25 | /**
26 | * Dummy version for basic app flavor.
27 | */
28 | public class TreeUriScannerIntentService {
29 | public static void onActivityResult(AppCompatActivity activity, Intent intent) {
30 | throw new IllegalStateException("unimplemented");
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/full/res/values-v17/styles.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
9 |
10 |
14 |
15 |
19 |
20 |
24 |
25 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/metadata/en-US/full_description.txt:
--------------------------------------------------------------------------------
1 | This is a demo fork of F-Droid to serve as an example app built on the
2 | development fork of Conscrypt which supports TLS Encrypted ClientHello
3 | (ECH). ECH is the next version of the TLS protocol that encrypts
4 | internet traffic and puts the "S" in HTTPS. It makes it possible to
5 | encrypt all of the metadata that is possible to encrypt in the TLS
6 | negogiation. It is a test case for interoperability between various
7 | implementations, platforms, and networks.
8 |
9 | The Encrypted ClientHello (ECH) mechanism (IETF draft spec) is a way to
10 | plug a few privacy-holes that remain in the Transport Layer Security
11 | (TLS) protocol that's used as the security layer for the web. OpenSSL
12 | is a widely used library that provides an implementation of the TLS
13 | protocol. The DEfO project is developing an implementation of ECH for
14 | OpenSSL, and various clients and servers that use OpenSSL as a
15 | demonstration and for interoperability testing.
16 |
17 | This uses the mirror of f-droid.org that is on Cloudflare with ECH
18 | enabled: https://cloudflare.f-droid.org
19 |
20 | DEfO was initially funded by the Open Technology Fund, and
21 | subsequently by the National Democratic Initiative. Tolerant Networks
22 | Ltd. and people from the Guardian Project are doing the work in DEfO.
23 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/nearby/WifiStateChangeService.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Senecto Limited
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.nearby;
21 |
22 | import android.content.Context;
23 | import android.content.Intent;
24 | import androidx.annotation.Nullable;
25 |
26 | /**
27 | * Dummy version for basic app flavor.
28 | */
29 | public class WifiStateChangeService {
30 | public static void start(Context context, @Nullable Intent intent) {
31 | }
32 |
33 | public class WifiInfoThread extends Thread {
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/app/src/basic/java/org/fdroid/fdroid/panic/HidingManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2018 Senecto Limited
3 | *
4 | * This program is free software; you can redistribute it and/or
5 | * modify it under the terms of the GNU General Public License
6 | * as published by the Free Software Foundation; either version 3
7 | * of the License, or (at your option) any later version.
8 | *
9 | * This program is distributed in the hope that it will be useful,
10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 | * GNU General Public License for more details.
13 | *
14 | * You should have received a copy of the GNU General Public License
15 | * along with this program; if not, write to the Free Software
16 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
17 | * MA 02110-1301, USA.
18 | */
19 |
20 | package org.fdroid.fdroid.panic;
21 |
22 | import android.content.Context;
23 |
24 | /**
25 | * Dummy version for basic app flavor.
26 | */
27 | public class HidingManager {
28 |
29 | public static boolean isHidden(Context context) {
30 | return false;
31 | }
32 |
33 | public static void showHideDialog(final Context context) {
34 | throw new IllegalStateException("unimplemented");
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/test/java/org/fdroid/fdroid/shadows/ShadowLog.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.shadows;
2 |
3 | import android.annotation.SuppressLint;
4 | import android.text.TextUtils;
5 | import android.util.Log;
6 |
7 | import org.robolectric.annotation.Implementation;
8 | import org.robolectric.annotation.Implements;
9 |
10 | /**
11 | * There are two lines of output which end up in our CI 1000s of times:
12 | *
13 | * - I/CursorWindowStats: Created a new Cursor. # Open Cursors=1 (# cursors opened by this proc=1)
14 | * - D/SQLiteCursor: received count(*) from native_fill_window: 0
15 | *
16 | * Neither of them seem like they are telling us anything useful, so this suppresses them by intercepting the call
17 | * to {@link Log#isLoggable(String, int)} and returning if it matches either of them.
18 | */
19 | @Implements(Log.class)
20 | @SuppressLint("Unused")
21 | public class ShadowLog extends org.robolectric.shadows.ShadowLog {
22 |
23 | @Implementation
24 | public static synchronized boolean isLoggable(String tag, int level) {
25 | if ((TextUtils.equals(tag, "CursorWindowStats") && level <= Log.INFO)
26 | || (TextUtils.equals(tag, "SQLiteCursor") && level <= Log.DEBUG)) {
27 | return false;
28 | }
29 |
30 | return org.robolectric.shadows.ShadowLog.isLoggable(tag, level);
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_perm_device_info.xml:
--------------------------------------------------------------------------------
1 |
13 |
19 |
22 |
--------------------------------------------------------------------------------
/app/src/test/resources/README.md:
--------------------------------------------------------------------------------
1 | # Multiple Repos Test
2 |
3 | This covers the three indexes:
4 | * multiRepo.normal.jar
5 | * multiRepo.archive.jar
6 | * multiRepo.conflicting.jar
7 |
8 | The goal is that F-Droid client should be able to:
9 |
10 | * Update all three repos successfully
11 | * Show all included versions for download in the UI
12 | * Somehow deal nicely with the fact that two repos provide versions 50-53 of AdAway
13 |
14 | ## multiRepo.normal.jar
15 |
16 | * 2048 (com.uberspot.a2048)
17 | - Version 1.96 (19)
18 | - Version 1.95 (18)
19 | * AdAway (org.adaway)
20 | - Version 3.0.2 (54)
21 | - Version 3.0.1 (53)
22 | - Version 3.0 (52)
23 | * adbWireless (siir.es.adbWireless)
24 | - Version 1.5.4 (12)
25 |
26 | ## multiRepo.archive.jar
27 |
28 | * AdAway (org.adaway)
29 | - Version 2.9.2 (51)
30 | - Version 2.9.1 (50)
31 | - Version 2.9 (49)
32 | - Version 2.8.1 (48)
33 | - Version 2.7 (46)
34 | - Version 2.6 (45)
35 | - Version 2.3 (42)
36 | - Version 2.1 (40)
37 | - Version 1.37 (37)
38 | - Version 1.35 (36)
39 | - Version 1.34 (35)
40 |
41 | ## multiRepo.conflicting.jar
42 |
43 | * AdAway (org.adaway)
44 | - Version 3.0.1 (53)
45 | - Version 3.0 (52)
46 | - Version 2.9.2 (51)
47 | - Version 2.2.1 (50)
48 | * Add to calendar (org.dgtale.icsimport)
49 | - Version 1.2 (3)
50 | - Version 1.1 (2)
--------------------------------------------------------------------------------
/app/src/main/scripts/update-binary:
--------------------------------------------------------------------------------
1 | #!/sbin/sh
2 |
3 | # Copyright 2013 Koushik Dutta, 2014 Ron Rieve
4 | #
5 | # Licensed under the Apache License, Version 2.0 (the "License");
6 | # you may not use this file except in compliance with the License.
7 | # You may obtain a copy of the License at
8 | #
9 | # http://www.apache.org/licenses/LICENSE-2.0
10 | #
11 | # Unless required by applicable law or agreed to in writing, software
12 | # distributed under the License is distributed on an "AS IS" BASIS,
13 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 | # See the License for the specific language governing permissions and
15 | # limitations under the License.
16 |
17 | # arg 1 is recovery api version, generally 3.
18 | # arg 2 is the pipe fd, to the recovery binary.
19 | # communicate with it using the recovery api.
20 | # arg 3 is the zip file
21 |
22 | echo -n -e 'ui_print Installing F-Droid...\n' > /proc/self/fd/$2
23 |
24 | FDROID_NAME=F-Droid
25 | FDROID=${FDROID_NAME}.apk
26 | FDROIDDIR=/data/app
27 |
28 | cd /tmp
29 | mkdir fdroid
30 | cd fdroid
31 | unzip -o "$3"
32 | if [ "$?" -ne "0" ]
33 | then
34 | cp /cache/${FDROID} .
35 | fi
36 |
37 | mount /data
38 |
39 | cp ${FDROID} ${FDROIDDIR}
40 | chmod 644 ${FDROIDDIR}/${FDROID}
41 |
42 | umount /data
43 |
44 | echo -n -e 'ui_print done\n' > /proc/self/fd/$2
45 | echo -n -e 'ui_print\n' > /proc/self/fd/$2
46 |
--------------------------------------------------------------------------------
/tools/png-pre-compress:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 |
3 | set -e
4 | set -x
5 |
6 | for f in `find $(dirname $0)/../app/src/ -type f -name \*.png`; do
7 | printf "\n\n=====================================================================\n"
8 | echo $f | grep -Eo '\.9\.png$' && continue # do not optimized 9-patch, it breaks them
9 | singlefile=$(mktemp)
10 | zopflifile=$(mktemp)
11 | aapt singleCrunch -v -i $f -o $singlefile || true
12 | zopflipng --iterations=50 --keepchunks=iCCP --lossy_transparent --splitting=3 -my $f $zopflifile || true
13 | if [ -s $singlefile ] && [ -s $zopflifile ]; then
14 | ls -l $singlefile $zopflifile
15 | if [ $(stat --format="%s" $singlefile) -lt $(stat --format="%s" $zopflifile) ]; then
16 | echo "Using aapt singleCrunch for $f"
17 | mv $singlefile $f
18 | else
19 | echo "Using zopflipng for $f"
20 | mv $zopflifile $f
21 | fi
22 | elif [ -s $singlefile ] && [ ! -s $zopflifile ]; then
23 | mv $singlefile $f
24 | elif [ ! -s $singlefile ] && [ -s $zopflifile ]; then
25 | mv $zopflifile $f
26 | else
27 | continue
28 | fi
29 | exiftool -all= $f
30 | rm -f $singlefile $zopflifile
31 | done
32 |
33 | for f in metadata/*/images/*Screenshots/*.png; do
34 | exiftool -all= $f
35 | tmpfile=$(mktemp)
36 | (zopflipng --filters=01234mepb --lossy_8bit --lossy_transparent -y $f $tmpfile && mv $tmpfile $f) &
37 | done
38 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/panic/DestructiveCheckBoxPreference.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.panic;
2 |
3 | import android.content.Context;
4 | import android.util.AttributeSet;
5 |
6 | import org.fdroid.fdroid.R;
7 |
8 | import androidx.core.content.ContextCompat;
9 | import androidx.preference.CheckBoxPreference;
10 | import androidx.preference.PreferenceViewHolder;
11 |
12 | public class DestructiveCheckBoxPreference extends CheckBoxPreference {
13 | public DestructiveCheckBoxPreference(Context context, AttributeSet attrs, int defStyleAttr) {
14 | super(context, attrs, defStyleAttr);
15 | }
16 |
17 | public DestructiveCheckBoxPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
18 | super(context, attrs, defStyleAttr, defStyleRes);
19 | }
20 |
21 | public DestructiveCheckBoxPreference(Context context, AttributeSet attrs) {
22 | super(context, attrs);
23 | }
24 |
25 | public DestructiveCheckBoxPreference(Context context) {
26 | super(context);
27 | }
28 |
29 | @Override
30 | public void onBindViewHolder(PreferenceViewHolder holder) {
31 | super.onBindViewHolder(holder);
32 | if (!holder.itemView.isEnabled()) {
33 | return;
34 | }
35 | holder.itemView.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.panic_destructive));
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/app/src/androidTest/java/org/fdroid/fdroid/work/WorkManagerTestRule.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.work;
2 |
3 | import android.app.Instrumentation;
4 | import android.content.Context;
5 | import android.util.Log;
6 | import androidx.test.platform.app.InstrumentationRegistry;
7 | import androidx.work.Configuration;
8 | import androidx.work.WorkManager;
9 | import androidx.work.testing.SynchronousExecutor;
10 | import androidx.work.testing.WorkManagerTestInitHelper;
11 | import org.junit.rules.TestWatcher;
12 | import org.junit.runner.Description;
13 |
14 | public class WorkManagerTestRule extends TestWatcher {
15 | Context targetContext;
16 | Context testContext;
17 | Configuration configuration;
18 | WorkManager workManager;
19 |
20 | @Override
21 | protected void starting(Description description) {
22 | final Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
23 | targetContext = instrumentation.getTargetContext();
24 | testContext = instrumentation.getContext();
25 | configuration = new Configuration.Builder()
26 | .setMinimumLoggingLevel(Log.DEBUG)
27 | .setExecutor(new SynchronousExecutor())
28 | .build();
29 |
30 | WorkManagerTestInitHelper.initializeTestWorkManager(targetContext, configuration);
31 | workManager = WorkManager.getInstance(targetContext);
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/app/src/full/res/layout/activity_panic_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
15 |
16 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/app/src/full/java/kellinwood/logging/LoggerManager.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2010 Ken Ellinwood.
3 | *
4 | * Licensed under the Apache License, Version 2.0 (the "License");
5 | * you may not use this file except in compliance with the License.
6 | * You may obtain a copy of the License at
7 | *
8 | * http://www.apache.org/licenses/LICENSE-2.0
9 | *
10 | * Unless required by applicable law or agreed to in writing, software
11 | * distributed under the License is distributed on an "AS IS" BASIS,
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 | * See the License for the specific language governing permissions and
14 | * limitations under the License.
15 | */
16 |
17 | package kellinwood.logging;
18 |
19 | import java.util.Map;
20 | import java.util.TreeMap;
21 |
22 | public class LoggerManager {
23 |
24 | static LoggerFactory factory = new NullLoggerFactory();
25 |
26 | static Map loggers = new TreeMap();
27 |
28 | public static void setLoggerFactory(LoggerFactory f) {
29 | factory = f;
30 | }
31 |
32 | public static LoggerInterface getLogger(String category) {
33 |
34 | LoggerInterface logger = loggers.get(category);
35 | if (logger == null) {
36 | logger = factory.getLogger(category);
37 | loggers.put(category, logger);
38 | }
39 | return logger;
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/app/src/full/java/org/fdroid/fdroid/panic/SelectInstalledAppListItemController.java:
--------------------------------------------------------------------------------
1 | package org.fdroid.fdroid.panic;
2 |
3 | import android.view.View;
4 |
5 | import org.fdroid.fdroid.AppUpdateStatusManager;
6 | import org.fdroid.fdroid.data.App;
7 | import org.fdroid.fdroid.views.apps.AppListItemState;
8 | import org.fdroid.fdroid.views.installed.InstalledAppListItemController;
9 |
10 | import java.util.Set;
11 |
12 | import androidx.annotation.NonNull;
13 | import androidx.annotation.Nullable;
14 | import androidx.appcompat.app.AppCompatActivity;
15 |
16 | /**
17 | * Shows the currently installed apps as a selectable list.
18 | */
19 | public class SelectInstalledAppListItemController extends InstalledAppListItemController {
20 |
21 | private final Set selectedApps;
22 |
23 | public SelectInstalledAppListItemController(AppCompatActivity activity, View itemView, Set selectedApps) {
24 | super(activity, itemView);
25 | this.selectedApps = selectedApps;
26 | }
27 |
28 | @NonNull
29 | @Override
30 | protected AppListItemState getCurrentViewState(
31 | @NonNull App app, @Nullable AppUpdateStatusManager.AppUpdateStatus appStatus) {
32 | return new AppListItemState(app).setCheckBoxStatus(selectedApps.contains(app.packageName));
33 | }
34 |
35 | @Override
36 | protected void onActionButtonPressed(App app) {
37 | super.onActionButtonPressed(app);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/install_start.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
17 |
18 |
21 |
22 |
27 |
28 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/app/src/main/res/layout/repo_list_activity.xml:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
16 |
17 |
23 |
24 |
25 |
26 |
32 |
33 |
--------------------------------------------------------------------------------
/app/src/full/res/layout-sw480dp/start_swap_header.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
17 |
18 |
33 |
34 |
--------------------------------------------------------------------------------
/app/src/main/res/drawable/ic_license.xml:
--------------------------------------------------------------------------------
1 |
7 |
13 |
19 |
20 |
--------------------------------------------------------------------------------