3899 Commits

Author SHA1 Message Date
Hans-Christoph Steiner
f102ccff60 allow install history to be read from an ContentProvider
This allows a designated app to read the install history from F-Droid via a
ContentProvider.  The app is designated by the packageName defined in the
string install_history_reader_packageName.
2016-09-29 12:09:50 +02:00
Hans-Christoph Steiner
c02125db01 store install/uninstall history for later use
The install and uninstall history has lots of uses, including displaying
to the user in the app itself, reporting to the Device Administrator to
enable tracking of installs/uninstalls from the admin's app repo, etc.  It
can also be used as part of a "popularity contest" #396
2016-09-29 12:09:50 +02:00
Hans-Christoph Steiner
cb4edbed44 if updating notification, also try getting app name from DB
Now that the packageName is included in the Installer broadcast Intents,
it can be used to fetch the app name from the database, if all other ways
fail.
2016-09-29 12:09:50 +02:00
Hans-Christoph Steiner
e69a6d5a8f store Apk instance in Installer instance for fetching state
If F-Droid or InstallManagerService get killed while an install is in
progress, that install will ultimately broadcast back to
InstallManagerService to manage the notifications.  The state is gone
since things have been killed, so include the Apk instance in the
Intent that is included in the broadcasts so that
InstallManagerService can fetch all required info from the database.

closes #698
2016-09-29 10:59:16 +02:00
Hans-Christoph Steiner
fc5c41036d Merge branch 'gradle-updates' into 'master'
Gradle updates



See merge request !399
2016-09-29 08:46:16 +00:00
Daniel Martí
723be967ca Merge branch 'push-install-uninstall-requetss' into 'master'
Push requests for install/uninstall

This is the first basic implementation of the idea of "push requests" from the server.  This implements two requests that the server can ask of all clients: `install` and `uninstall`.  A default repository in the client can be marked to `ignore` or `always` accept push requests in this merge request.  There is also the sketch of a third option called `prompt` which gives the user the standard "Just Once/Always" choice; that is not yet implemented.

This allows central management of app installs/uninstalls for a pool of devices, as well as other ideas.

A use case for this feature is documented here:
https://f-droid.org/wiki/page/Whitelabel_Builds

See merge request !386
2016-09-28 22:40:07 +00:00
Hans-Christoph Steiner
b90cf7386c prevent crashing if push requests include bad packageNames
F-Droid shouldn't crash if a push request includes a bad package name. This
just makes it silently ignore those push requests.  If its a debug build,
it will send a message to logcat.  I'm not sure this is best way to handle
this, but this is better than crashing the app.  This will make it harder
for repo operators to debug issues with push requests.
2016-09-28 23:36:11 +02:00
Hans-Christoph Steiner
5c9dd1a11e basic support for repo push requests, configed in default_repos
This allows whitelabel versions of apps to specify built-in app repos that
have push requests accepted by default.  This is useful for the case where
there is a central manager of the core apps that are installed.

https://gitlab.com/fdroid/fdroidserver/issues/177
db-version/62
2016-09-28 23:36:11 +02:00
Daniel Martí
6c0a72369c gradle: bump version in wrapper to 3.1
Also re-run `gradle wrapper` from 3.1 to update the scripts and jar.
2016-09-28 22:15:00 +01:00
Daniel Martí
36378acc7b gradle: bump plugin version to 2.2.0
Also update the dependency declarations since the current ones break
with the new plugin/gradle version.

https://stackoverflow.com/questions/39602587/could-not-get-unknown-property-assemblerelease-for-project
2016-09-28 21:58:27 +01:00
Hans-Christoph Steiner
d34a1285e8 convert default_repo.xml to more flexible format
This is a step towards supporting easy whitelabeling, using gradle flavors.
This allows the whitelabel version to set the default repos just by making
their own default_repos.xml in app/src/whitelabel/res/values.  That one
will then override the built-in F-Droid one.
2016-09-28 22:07:34 +02:00
Hans-Christoph Steiner
28198dddb4 rename default_repo.xml to default_repos.xml, there are many
Just to make it clear that there can be and are multiple repos configured
in the file.
2016-09-28 22:07:34 +02:00
Daniel Martí
ae78042bda Bump versionCode to 0.102-alpha0
This enables upgrading from 0.101 to master until alpha1 is out.
2016-09-28 20:44:26 +01:00
Daniel Martí
85a8a7d743 Sync changelog with 0.101, add 0.102 2016-09-28 20:42:56 +01:00
Daniel Martí
ba8c39d3a9 Merge branch 'include-crash-in-acra-subject' into 'master'
Include crash in ACRA subject

This makes it so the first chunk of the crash is put in email subject.  This also lays the foundation for other ACRA customizations.

This is ready to be merged, but it is based on !386, so its marked WIP.

See merge request !391
2016-09-28 14:34:56 +00:00
Hans-Christoph Steiner
9848db7680 move CrashReportActivity into new .acra package
This isolates all the ACRA stuff in its own package.
2016-09-28 14:23:34 +02:00
Hans-Christoph Steiner
f24c5b6ac7 custom ACRA sender to put stacktrace title in email Subject:
This should hopefully make it easier to sort through the emails.
2016-09-28 14:23:34 +02:00
Daniel Martí
a5746c03f3 Merge branch 'tls-1.2-support' into 'master'
TLS 1.2 support

At long last, there is a tested version of NetCipher that supports SNI.  This uses that release to enable good TLS support and Tor for all repos.  This moves the HTTP tests to the emulator, so that things are tested on the actual OS.

See merge request !398
2016-09-28 12:00:51 +00:00
Hans-Christoph Steiner
4c7322d917 throw in extra test URLs for HttpDownloaderTest
These are commented out so that the tests aren't brittle when they run on
the CI builds.  But are easy to uncomment when testing locally.
2016-09-28 11:35:57 +02:00
Hans-Christoph Steiner
4598a78bfd support TLS 1.2 on all repos
Update to the latest NetCipher, which now fully supports SNI, in order to
support TLS 1.2 on all supported platform levels.  Without this, a repo
that is TLS 1.2 only will be unusable on all but the most recent versions
of Android.

#431
2016-09-28 11:35:57 +02:00
Hans-Christoph Steiner
bad613fbc1 move HttpDownloaderTest to emulator, AndroidOS has oddities
There are oddities with the way that Android has implemented the network
stack, as compared to OpenJDK or Oracle JDK.  So running the tests on the
local JVM, i.e. Robolectric, will not provide good test coverage for real
world use cases.
2016-09-28 11:35:57 +02:00
Hans-Christoph Steiner
0433f0eba5 update changelog for 0.101 2016-09-28 11:34:24 +02:00
Hans-Christoph Steiner
2773db8304 Merge branch 'latest-support' into 'master'
update to latest support lib bugfix version: v24.2.1

include the bugfix version of the support libs we are using since this is the last test before a stable release.

See merge request !397
2016-09-28 09:23:12 +00:00
Hans-Christoph Steiner
dd134c50bc update to latest support lib bugfix version: v24.2.1 2016-09-27 22:59:17 +02:00
Hans-Christoph Steiner
5e549193f1 gitlab-ci: ensure the SDK is fully updated before running
This makes sure that the latest version of the core SDK components are
all current before running, which means that the builds will keep
working even when the docker image gets out of date. Then we can
finish the task we are working on before having to deal with updating
the docker image. Without that update line, we have to drop everything
and update the docker image when things are out of date.

Disk space and bandwidth is cheap, developer time is very scarce. We
should aim to keep the tests working as much as possible so that we
waste less developer time. Updating everytime only means it downloads
a little bit of XML each time, that's nothing compared to what gradle
downloads on every build.
2016-09-27 22:59:17 +02:00
Hans-Christoph Steiner
f0d9675b55 gitlab-ci: use before and after script for reused chunks
It also reduces redundancy by using before_script and after_script blocks.
2016-09-27 16:19:45 +02:00
Hans-Christoph Steiner
a3b6185942 gitlab-ci: reduce connected10 from error to warning
connected10 is still flaky since the emulator crashes a lot.  Marking it
for "allow_failure" will still show a warning, but it won't fail the build.
2016-09-27 14:28:12 +02:00
Daniel Martí
3aad107b51 Add Icelandic to the list of languages
Added to weblate in the last commit.
2016-09-27 13:15:03 +01:00
F-Droid Translatebot
a29d2eb4f9 Pull translation updates from Weblate
Translators:

Ajeje Brazorf       Sardinian
Enol P              Asturian
Marian Hanzel       Slovak
Michael Moroni      Italian
Mladen Pejaković    Serbian
Sérgio Marques      Portuguese (Portugal)
Sveinn í Felli      Icelandic
Дмитрий Михирев     Russian
2016-09-27 13:11:44 +01:00
Hans-Christoph Steiner
ab7602c407 Merge branch 'fix-763--multi-repo-brokenness' into 'master'
Fix 763  multi repo brokenness

I've put a comment [here](https://gitlab.com/fdroid/fdroidclient/issues/763#note_15032709) explaining the problem.

This includes (in order of commits):
* A test case to reproduce (see my comment [here](https://gitlab.com/fdroid/fdroidclient/issues/763#note_15954822) about whether I should rename this)
* A brittle fix
* A more robust fix

See merge request !394
2016-09-27 10:20:15 +00:00
Hans-Christoph Steiner
e18164acbb Merge branch 'patch-1' into 'master'
Fixed link to privileged extension



See merge request !396
2016-09-27 07:23:11 +00:00
Felix Ableitner
8cd48bcbc4 Fixed link to privileged extension 2016-09-27 04:17:54 +00:00
Peter Serwylo
1678223cab More robust fix for #763, specifying column names to copy explicitly.
This is far less brittle at runtime, but slightly more work at dev time.
The following things are undesirable but make it much easier to write:
 * Use of `CREATE_TABLE_APP.replaceFirst(...)` to create the temp tables.
 * Having to specify a list fo columns twice in `Schema` (`ALL_COLS` + `COLS`).

The `replaceFirst` means we don't need to maintain two separate create table
statements. It is a little messy because there is no compile time guarantee
that we are creating a valid SQL statement at the end, just our knowledge
that a create table statment tends to have the table name first and it
probably wont cause problems.

The `ALL_COLS` + `COLS` is required so that we don't have to type out a list
of fields when copying data in `TempAppProvider`. Otherwise, whenever a new
column is added, developers would need to know that it also needs to be added
to this third place. Currently it is in the `Schema` and the `CREATE_TABLE_*`
statements where one needs to add a new column. These are both intuitive and
hopefully easily discoverable. Having to add it to the `TempAppProvider` is
less intuitive and likely to result in bugs.
2016-09-24 08:52:15 +10:00
Peter Serwylo
1ba6034e19 Fixed issue #763 by being more specific when creating temp table for update.
When performing the old style `CREATE TABLE ... AS SELECT ...` (CTAS) statement,
no indexes are added. In addition, rowid is not added. Even if manually
specifying an autoincrement column in the original schema, this autoincrement
column does not get recreated with the CTAS statement. So instead, this change
reuses the original `CREATE TABLE` statement which explicitly defines all of the
relevant columns. In addition, it explicitly adds an autoincrement integer primary
key. This has the same semantics as the existing implicit `rowid` column that
sqlite creates. From from https://sqlite.org/autoinc.html:

> In SQLite, a column with type INTEGER PRIMARY KEY is an alias for the ROWID
> (except in WITHOUT ROWID tables) which is always a 64-bit signed integer.

However, as it is explicit now, is copied when doing the
`INSERT INTO ... SELECT ...` statement to get data from the real table to the
temp table in preperation for updates (and back again after the update has
populated the temp table).

Note that this makes the `INSERT INTO ... SELECT ...` statements slightly more
brittle, because now we need the table definition used to create the temp table
(from `DBHelper.CREATE_APP_TABLE`) to have the same column order as those in the
real `fdroid_app` table. While this may sound like a silly comment to make, it
is important because database migrations can result in a database having the
correct set of columns, but in a different order to how they were specified
in the original create table statement.

If a database migration performs an `ALTER TABLE ... ADD COLUMN ...` the column
will be added at the end. If at the same time the `CREATE TABLE` is changed so
that the new column is specified as the second to last column in the list of
columns, then the `INSERT INTO ... SELECT ...` will not work as expected.
2016-09-24 08:52:15 +10:00
Peter Serwylo
9b13d98943 Use database constant instead of hard coded string literal 2016-09-24 08:52:15 +10:00
Peter Serwylo
cff209cd44 Replicated issue #763 in a test case 2016-09-24 08:52:12 +10:00
Daniel Martí
b5b5dd4ede Merge branch 'fix-android-10' into 'master'
fix emulator tests on android-10

We have to work harder to get writeable dirs in the android-10 emulator, that seems to be the old issue on android-10.

See merge request !390
2016-09-20 15:26:47 +00:00
Hans-Christoph Steiner
ecd98047da fix emulator tests on android-10, closes #769
We have to work harder to get writeable dirs in the android-10 emulator.
2016-09-19 14:56:07 +02:00
Daniel Martí
481468372e Merge branch 'master' into 'master'
Remove any whitespace from fingerprint EditText input so that copy pasting is easier for users.

Hey,

I just added a line to remove the whitespace from fingerprints when adding a new Repo. Some repositories like https://microg.org have their fingerprint separated with spaces so copy pasting directly from there is more cumbersome if fdroid doesn't remove the whitespace by itself.

Hope it's ok. :)

See merge request !389
2016-09-18 19:21:57 +00:00
uberspot
360f365227 Remove any whitespace from fingerprint EditText input so that copy pasting is easier for users. 2016-09-18 20:58:46 +02:00
Daniel Martí
fdc70b0f9d Bump build-tools and docker image version
The latter is simply to include the newer version.
2016-09-10 12:02:12 +02:00
Daniel Martí
012fe5e224 Add new Burmese/Myanmar language to the list
Rendering this on my computer is a pain, so patches welcome if I screwed
up the unicode since all I can see is squares.
2016-09-10 11:59:24 +02:00
F-Droid Translatebot
c4a3b579c4 Pull translation updates from Weblate
Translators:

Agus                      Galician
Ajeje Brazorf             Sardinian
Alberto Moshpirit         Spanish
El Virolo                 French
Koen Glotzbach            Dutch
Licaon Kter               Romanian
Michael                   German
Mohamad Hasan Al Banna    Indonesian
naofum                    Japanese
Olexandr Nesterenko       Ukrainian
Osoitz                    Basque
Pyae Sone                 Burmese
Verdulo                   Esperanto
Verdulo                   Polish
YFdyh000                  Simplified Chinese
2016-09-10 11:46:35 +02:00
Hans-Christoph Steiner
3657cf3256 Merge branch 'fix-ish-698' into 'master'
handle install broadcasts after InstallManagerService was killed

If InstallManagerService was killed, it'll forget all of its state.  If it is killed while an install process is running, and that install fails,
InstallManagerService will receive a broadcast about the error but then it can't find anything about the app in question besides its download URL.
That is enough to control the notification, but not enough to get the name of the app in question.  This is a workaround by showing the APK filename when the app name cannot be found. Ideally, the packageName would somehow magically be delivered to InstallManagerService in this case, but the
Installer stuff doesn't always have it to send.

With android-23, there is getActiveNotifications(), which we might be able to use to stash the packageName and fetch it as needed.

See merge request !387
2016-09-07 12:16:56 +00:00
F-Droid Translatebot
49db1a78d7 Pull translation updates from Weblate
Translators:

Adrià García-Alzórriz    Catalan
Ajeje Brazorf            Sardinian
Christophe CHAUVET       French
Enol P                   Asturian
Laura Arjona Reina       Spanish
Licaon Kter              Romanian
Michael                  German
Mladen Pejaković         Serbian
naofum                   Japanese
Osoitz                   Basque
Swyter                   Spanish
Sylvia van Os            Dutch
Tobias Bannert           German
Verdulo                  Esperanto
Verdulo                  Polish
Viktor Alojzije Coric    Croatian
Waqar Ahmed              Urdu
YFdyh000                 Simplified Chinese
2016-09-02 09:31:53 +09:00
Hans-Christoph Steiner
973174cc7b privileged mode means auto-downloads are actually installs
When the Privileged Extension is working, then enabling the preference
"Automatically download updates" will actually install those updates in the
background.  So the preference should communicate that to the user. So now
it serves as a global "allow background updates"

#16
closes #106
2016-09-01 17:49:52 +02:00
Hans-Christoph Steiner
530144bec6 don't show notification if the app name is unknown #720
This gets rid of the notifications that say "Tap to Install Unknown", and
instead just cancels the notification.  The downloaded APK will still be
cached, so when the user goes to click install or update again, it won't
need to download it again.

closes #758
2016-09-01 15:59:51 +02:00
Hans-Christoph Steiner
c9a6cc3051 handle install broadcasts after InstallManagerService was killed
If InstallManagerService was killed, it'll forget all of its state.  If it
is killed while an install process is running, and that install fails,
InstallManagerService will receive a broadcast about the error but then it
can't find anything about the app in question besides its download URL.
That is enough to control the notification, but not enough to get the name
of the app in question.  This is a workaround by showing the APK filename
when the app name cannot be found. Ideally, the packageName would somehow
magically be delivered to InstallManagerService in this case, but the
Installer stuff doesn't always have it to send.

With android-23, there is getActiveNotifications(), which we might be able
to use to stash the packageName and fetch it as needed.
2016-08-31 23:28:50 +02:00
Hans-Christoph Steiner
3aa58bc005 Merge branch 'add-option-to-hide-anti-feature-apps' into 'master'
Add option to hide anti feature apps

Added option under Setting to grey out apps requiring anti-features similar to ignoring rooted apps on a non-rooted device.

See merge request !384
2016-08-30 15:54:44 +00:00
Aditya Bharadwaj
5d58fc0199 Fix PMD issue. 2016-08-26 22:29:50 -04:00