Age | Commit message (Collapse) | Author |
|
|
|
Riseup's EE certificate expired (EE = End-Entity, the commercial
certificate signed by the issuer), and we weren't able to fetch
provider.json because the pin wasn't valid.
This problem needs to be avoided in the future, using
HKPK (https://tools.ietf.org/html/rfc7469), which Micah's implementing
on Riseup.
Switching from build types from flavors enables us to run tests against
production apk, not just debug. I didn't detect this pinning problem
because tests were run only against the debug apk, which trusted
preseeded providers by default (thus bypassing pinning issue).
|
|
|
|
ics-openvpn is now officially on GitHub, and they track openssl and
openvpn as submodules, so it's easier to update everything. Just a git
submodule update --recursive.
I've also set up soft links to native modules from ics-openvpn in app,
so that we don't copy files in Gradle (which was causing problems with
the submodules .git* files, not being copied). That makes the repo
cleaner.
|
|
|
|
Sometimes, the emulator is so slow (I wish genymotion was open
source...) that even though everything's going OK tests fail because
they don't wait enough.
|
|
testVpnButtonIsDisplayed and testVpnIconIsDisplayed fail because calyx in testVpnEveryProvider fails, but if you run them alone they pass.
|
|
Give more time to provider details fragment to appear, because debugging makes the code run slowly.
|
|
Updated butterknife, dagger, renderers, fabbuton and gson, as well as
gradle plugin.
|
|
The FabButton doesn't scale the icon as big as I want it to be, and it
doesn't let me set the size to "wrap_content" because the library sets
the sizes to match_parent.
I'm going to try to modify my fork of FabButton to see if I can obtain
what I want in its demo: just an icon and the progress indicator, the
icon as big as possible.
|
|
And checks in controllers, so that if a button isn't shown, I throw a
new IllegalStateException. This helps to trace the error.
|
|
|
|
|
|
This way, I can add more easily the tests for errors.
|
|
|
|
Next step: beautify.
|
|
|
|
Tests click new button, instead of action bar's.
Fixing more bugs...
|
|
I've separated the user session management to it, and encapsulated
ProviderAPICommand into its own class.
Putting the fragment statically in dashboard.xml isn't working, Android
complains about it being duplicated, so I'm going to add it dynamically.
|
|
|
|
|
|
Some devices are too small to show everything in the same row, so I'm
centering everything and spliting the layout in two: the label and the
button&icon.
|
|
|
|
|
|
Turn on VPN touching that button, and leave the image as a mere indicator.
|
|
|
|
They were relying on status messages, but I've removed that TextView.
|
|
Tested with physical Galaxy Young S6310.
|
|
Fixed more tests, broken due to previous pullreqs...
|
|
Thanks to http://stackoverflow.com/questions/3791607/how-can-i-check-if-a-view-is-visible-or-not-in-android/12428208#12428208
|
|
I've done this because of https://leap.se/code/issues/6863#note-2,
testing the previous commit's changes.
|
|
A provider can be asked if it's configured or not, so that we don't find
more provider = null issues.
I've created a DefaultedURL which links to https://example.net, so that
we can initialize an URL. I use composition instead of inheritance,
since URL class is final.
|
|
|
|
I've removed the "reason" management in LogWindowWrapper, letting
EipStatus display the error log message only if it's a new one (based on
the log buffer position).
|
|
I had a difficult moment trying to detect if the LogWindow had already
been shown after an error. Finally, I implemented a LogWindowWrapper
which contains a field for the reason it was shown, so that we can check
if the previous error is the same than the current one leading to the
avoidance of the second LogWindow. For this to work, we need to reset
that reason each time we trigger a new vpn state (i.e. each time the
user taps on the vpn icon).
|
|
|
|
|
|
Next step: a bit of UI design, removing the switch.
|
|
Danger on defaults to true in debug build
|
|
Using AndroidPinning library from Moxie, I make sure the provider.json
file Bitmask downloads is fetched from a pinned https connection, so
that the api certificate fingerprint is the good one.
|
|
|
|
|
|
String locale = Locale.getDefault().getLanguage() + Locale.getDefault().getCountry();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|