diff --git a/AndroidManifest.xml b/AndroidManifest.xml
deleted file mode 100644
index dfa974cc..00000000
--- a/AndroidManifest.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java b/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java
index df5efc82..756850ef 100644
--- a/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java
+++ b/app/src/main/java/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.java
@@ -20,11 +20,17 @@ import android.view.ViewGroup;
import android.widget.ProgressBar;
import android.widget.Toast;
+import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.http.HttpException;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
+import java.security.cert.CertPathValidatorException;
+import java.security.cert.CertificateException;
+
+import javax.net.ssl.SSLHandshakeException;
+import javax.net.ssl.SSLPeerUnverifiedException;
import at.bitfire.davdroid.R;
import at.bitfire.davdroid.resource.DavResourceFinder;
@@ -113,8 +119,14 @@ public class QueryServerDialogFragment extends DialogFragment implements LoaderC
finder.findResources(serverInfo);
} catch (URISyntaxException e) {
serverInfo.setErrorMessage(getContext().getString(R.string.exception_uri_syntax, e.getMessage()));
- } catch (IOException e) {
+ } catch (IOException e) {
+ // general message
serverInfo.setErrorMessage(getContext().getString(R.string.exception_io, e.getLocalizedMessage()));
+ // overwrite by more specific message, if possible
+ if (ExceptionUtils.indexOfType(e, CertPathValidatorException.class) != -1)
+ serverInfo.setErrorMessage(getContext().getString(R.string.exception_cert_path_validation, e.getMessage()));
+ else if (ExceptionUtils.indexOfType(e, SSLPeerUnverifiedException.class) != -1)
+ serverInfo.setErrorMessage(getContext().getString(R.string.exception_peer_unverified, e.getMessage()));
} catch (HttpException e) {
Log.e(TAG, "HTTP error while querying server info", e);
serverInfo.setErrorMessage(getContext().getString(R.string.exception_http, e.getLocalizedMessage()));
diff --git a/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java b/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java
index 99af712f..2cff28ed 100644
--- a/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java
+++ b/app/src/main/java/at/bitfire/davdroid/webdav/TlsSniSocketFactory.java
@@ -13,6 +13,7 @@ import android.net.SSLCertificateSocketFactory;
import android.os.Build;
import android.util.Log;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.http.HttpHost;
import org.apache.http.conn.socket.LayeredConnectionSocketFactory;
@@ -23,129 +24,128 @@ import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.CertPathValidatorException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
+import javax.net.ssl.HandshakeCompletedEvent;
+import javax.net.ssl.HandshakeCompletedListener;
import javax.net.ssl.HostnameVerifier;
+import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLPeerUnverifiedException;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocket;
+import javax.net.ssl.SSLSocketFactory;
+import javax.net.ssl.TrustManager;
+import javax.net.ssl.TrustManagerFactory;
+import javax.net.ssl.X509TrustManager;
public class TlsSniSocketFactory implements LayeredConnectionSocketFactory {
private static final String TAG = "davdroid.SNISocketFactory";
public final static TlsSniSocketFactory INSTANCE = new TlsSniSocketFactory();
-
- private final static SSLCertificateSocketFactory sslSocketFactory =
- (SSLCertificateSocketFactory)SSLCertificateSocketFactory.getDefault(0);
- private final static HostnameVerifier hostnameVerifier = new BrowserCompatHostnameVerifierHC4();
+
+ private final static SSLSocketFactory sslSocketFactory = (SSLSocketFactory)SSLSocketFactory.getDefault();
+ private final static HostnameVerifier hostnameVerifier = HttpsURLConnection.getDefaultHostnameVerifier();
/*
- For SSL connections without HTTP(S) proxy:
- 1) createSocket() is called
- 2) connectSocket() is called which creates a new SSL connection
- 2a) SNI is set up, and then
- 2b) the connection is established, hands are shaken and certificate/host name are verified
+ For TLS connections without HTTPS (CONNECT) proxy:
+ 1) socket = createSocket() is called
+ 2) connectSocket(socket) is called which creates a new TLS connection (but no handshake yet)
+ 3) reasonable encryption settings are applied to socket
+ 4) SNI is set up for socket
+ 5) handshake and certificate/host name verification
- Layered sockets are used with HTTP(S) proxies:
- 1) a new plain socket is created by the HTTP library
+ Layered sockets are used with HTTPS (CONNECT) proxies:
+ 1) plain = createSocket() is called
2) the plain socket is connected to http://proxy:8080
3) a CONNECT request is sent to the proxy and the response is parsed
- 4) now, createLayeredSocket() is called which wraps an SSL socket around the proxy connection,
- doing all the set-up and verfication
- 4a) Because SSLSocket.createSocket(socket, ...) always does a handshake without allowing
- to set up SNI before, *** SNI is not available for layered connections *** (unless
- active by Android's defaults, which it isn't at the moment).
+ 4) socket = createLayeredSocket(plain) is called to "upgrade" the plain connection to a TLS connection (but no handshake yet)
+ 5) SNI is set up for socket
+ 6) handshake and certificate/host name verification
*/
-
@Override
public Socket createSocket(HttpContext context) throws IOException {
- SSLSocket ssl = (SSLSocket)sslSocketFactory.createSocket();
- setReasonableEncryption(ssl);
- return ssl;
+ return sslSocketFactory.createSocket();
}
@Override
- public Socket connectSocket(int timeout, Socket plain, HttpHost host, InetSocketAddress remoteAddr, InetSocketAddress localAddr, HttpContext context) throws IOException {
- Log.d(TAG, "Preparing direct SSL connection (without proxy) to " + host);
-
- // we'll rather use an SSLSocket directly
- plain.close();
-
- // create a plain SSL socket, but don't do hostname/certificate verification yet
- SSLSocket ssl = (SSLSocket)sslSocketFactory.createSocket(remoteAddr.getAddress(), host.getPort());
- setReasonableEncryption(ssl);
-
- // connect, set SNI, shake hands, verify, print connection info
- connectWithSNI(ssl, host.getHostName());
-
- return ssl;
+ public Socket connectSocket(int timeout, Socket sock, HttpHost host, InetSocketAddress remoteAddr, InetSocketAddress localAddr, HttpContext context) throws IOException {
+ Log.d(TAG, "Preparing direct TLS connection to " + host);
+ final SSLSocket socket = (SSLSocket)((sock != null) ? sock : createSocket(context));
+ connectAndVerify(socket, host.getHostName());
+ return socket;
}
@Override
- public Socket createLayeredSocket(Socket plain, String host, int port, HttpContext context) throws IOException, UnknownHostException {
- Log.d(TAG, "Preparing layered SSL connection (over proxy) to " + host);
-
- // create a layered SSL socket, but don't do hostname/certificate verification yet
- SSLSocket ssl = (SSLSocket)sslSocketFactory.createSocket(plain, host, port, true);
- setReasonableEncryption(ssl);
-
- // already connected, but verify host name again and print some connection info
- Log.w(TAG, "Setting SNI/TLSv1.2 will silently fail because the handshake is already done");
- connectWithSNI(ssl, host);
-
- return ssl;
+ public Socket createLayeredSocket(Socket plain, String host, int port, HttpContext context) throws IOException {
+ Log.d(TAG, "Preparing proxied TLS connection to " + host);
+ final SSLSocket socket = (SSLSocket)sslSocketFactory.createSocket(plain, host, port, true);
+ connectAndVerify(socket, host);
+ return socket;
}
-
-
- @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
- private void connectWithSNI(SSLSocket ssl, String host) throws SSLPeerUnverifiedException {
- // - set SNI host name
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
- Log.d(TAG, "Using documented SNI with host name " + host);
- sslSocketFactory.setHostname(ssl, host);
- } else {
- Log.d(TAG, "No documented SNI support on Android <4.2, trying with reflection");
- try {
- java.lang.reflect.Method setHostnameMethod = ssl.getClass().getMethod("setHostname", String.class);
- setHostnameMethod.invoke(ssl, host);
- } catch (Exception e) {
- Log.w(TAG, "SNI not useable", e);
- }
- }
-
+
+
+ /**
+ * Establishes a connection to an unconnected SSLSocket:
+ * - prepare socket
+ * - set SNI host name
+ * - verify host name
+ * - verify certificate
+ * @param socket unconnected SSLSocket
+ * @param host host name for SNI
+ * @throws SSLPeerUnverifiedException
+ */
+ private void connectAndVerify(SSLSocket socket, String host) throws IOException, SSLPeerUnverifiedException {
+ // prepare socket (set encryption etc.)
+ prepareSSLSocket(socket);
+
+ // set SNI hostname
+ setSniHostname(socket, host);
+
+ // TLS handshake
+ socket.startHandshake();
+
// verify hostname and certificate
- SSLSession session = ssl.getSession();
+ SSLSession session = socket.getSession();
if (!hostnameVerifier.verify(host, session))
- throw new SSLPeerUnverifiedException("Cannot verify hostname: " + host);
+ throw new SSLPeerUnverifiedException(host);
Log.d(TAG, "Established " + session.getProtocol() + " connection with " + session.getPeerHost() +
" using " + session.getCipherSuite());
}
-
-
+
+
+ /**
+ * Prepares a TLS/SSL connetion socket by:
+ * - setting the default TrustManager (as we have created an "insecure" connection to avoid handshake problems before)
+ * - setting reasonable TLS protocol versions
+ * - setting reasonable cipher suites (if required)
+ * @param socket unconnected SSLSocket to prepare
+ */
@SuppressLint("DefaultLocale")
- private void setReasonableEncryption(SSLSocket ssl) {
- // set reasonable SSL/TLS settings before the handshake
-
+ private void prepareSSLSocket(SSLSocket socket) {
// Android 5.0+ (API level21) provides reasonable default settings
// but it still allows SSLv3
// https://developer.android.com/about/versions/android-5.0-changes.html#ssl
- // - enable all supported protocols (enables TLSv1.1 and TLSv1.2 on Android <5.0, if available)
+ /* set reasonable protocol versions */
+ // - enable all supported protocols (enables TLSv1.1 and TLSv1.2 on Android <5.0)
// - remove all SSL versions (especially SSLv3) because they're insecure now
List protocols = new LinkedList();
- for (String protocol : ssl.getSupportedProtocols())
+ for (String protocol : socket.getSupportedProtocols())
if (!protocol.toUpperCase().contains("SSL"))
protocols.add(protocol);
Log.v(TAG, "Setting allowed TLS protocols: " + StringUtils.join(protocols, ", "));
- ssl.setEnabledProtocols(protocols.toArray(new String[0]));
+ socket.setEnabledProtocols(protocols.toArray(new String[0]));
- if (android.os.Build.VERSION.SDK_INT < 21) {
+ /* set reasonable cipher suites */
+ if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
// choose secure cipher suites
List allowedCiphers = Arrays.asList(new String[] {
// allowed secure ciphers according to NIST.SP.800-52r1.pdf Section 3.3.1 (see docs directory)
@@ -168,7 +168,7 @@ public class TlsSniSocketFactory implements LayeredConnectionSocketFactory {
"TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA",
});
- List availableCiphers = Arrays.asList(ssl.getSupportedCipherSuites());
+ List availableCiphers = Arrays.asList(socket.getSupportedCipherSuites());
// preferred ciphers = allowed Ciphers \ availableCiphers
HashSet preferredCiphers = new HashSet(allowedCiphers);
@@ -179,10 +179,27 @@ public class TlsSniSocketFactory implements LayeredConnectionSocketFactory {
// but I guess for the security level of DAVdroid, disabling of insecure
// ciphers should be a server-side task
HashSet enabledCiphers = preferredCiphers;
- enabledCiphers.addAll(new HashSet(Arrays.asList(ssl.getEnabledCipherSuites())));
+ enabledCiphers.addAll(new HashSet(Arrays.asList(socket.getEnabledCipherSuites())));
Log.v(TAG, "Setting allowed TLS ciphers: " + StringUtils.join(enabledCiphers, ", "));
- ssl.setEnabledCipherSuites(enabledCiphers.toArray(new String[0]));
+ socket.setEnabledCipherSuites(enabledCiphers.toArray(new String[0]));
+ }
+ }
+
+ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+ private void setSniHostname(SSLSocket socket, String hostName) {
+ // set SNI host name
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && sslSocketFactory instanceof SSLCertificateSocketFactory) {
+ Log.d(TAG, "Using documented SNI with host name " + hostName);
+ ((SSLCertificateSocketFactory)sslSocketFactory).setHostname(socket, hostName);
+ } else {
+ Log.d(TAG, "No documented SNI support on Android <4.2, trying reflection method with host name " + hostName);
+ try {
+ java.lang.reflect.Method setHostnameMethod = socket.getClass().getMethod("setHostname", String.class);
+ setHostnameMethod.invoke(socket, hostName);
+ } catch (Exception e) {
+ Log.w(TAG, "SNI not useable", e);
+ }
}
}
diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml
index d2252f15..f51f36a8 100644
--- a/app/src/main/res/values-de/strings.xml
+++ b/app/src/main/res/values-de/strings.xml
@@ -5,10 +5,12 @@
DAVdroid-Website
Weiter
Hilfe
-
+
+ Nicht vertrauenswürdiges Zertifikat in der Zertifikatskette (siehe FAQ)
HTTP-Fehler: %s
Fehlende Server-Unterstützung: %s
E/A-Fehler: %s
+ Zertifikat ist nicht für \"%s\" ausgestellt
URI ungültig: %s
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2625b1af..dcfa1682 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -7,10 +7,12 @@
DAVdroid Web site
Next
Help
-
+
+ Untrusted certificate in certificate path. See FAQ for more info.
HTTP error: %s
Missing capabilities: %s
I/O error: %s
+ Certificate not issued for \"%s\"
Invalid URI: %s
diff --git a/import-summary.txt b/import-summary.txt
deleted file mode 100644
index 78d25e5f..00000000
--- a/import-summary.txt
+++ /dev/null
@@ -1,741 +0,0 @@
-ECLIPSE ANDROID PROJECT IMPORT SUMMARY
-======================================
-
-Ignored Files:
---------------
-The following files were *not* copied into the new Gradle project; you
-should evaluate whether these are still needed in your project and if
-so manually move them:
-
-* .gitignore
-* .idea/
-* .idea/.name
-* .idea/compiler.xml
-* .idea/copyright/
-* .idea/copyright/profiles_settings.xml
-* .idea/davdroid.iml
-* .idea/encodings.xml
-* .idea/misc.xml
-* .idea/modules.xml
-* .idea/scopes/
-* .idea/scopes/scope_settings.xml
-* .idea/vcs.xml
-* .idea/workspace.xml
-* CONTRIBUTING.md
-* COPYING
-* README.md
-* build.xml
-* compile-libs/
-* compile-libs/lombok.jar
-* doc/
-* doc/NIST.SP.800-52r1.pdf
-* doc/how_davdroid_works.svgz
-* doc/javadoc/
-* doc/javadoc/allclasses-frame.html
-* doc/javadoc/allclasses-noframe.html
-* doc/javadoc/at/
-* doc/javadoc/at/bitfire/
-* doc/javadoc/at/bitfire/davdroid/
-* doc/javadoc/at/bitfire/davdroid/ArrayUtils.html
-* doc/javadoc/at/bitfire/davdroid/Constants.html
-* doc/javadoc/at/bitfire/davdroid/MainActivity.html
-* doc/javadoc/at/bitfire/davdroid/URIUtils.html
-* doc/javadoc/at/bitfire/davdroid/class-use/
-* doc/javadoc/at/bitfire/davdroid/class-use/ArrayUtils.html
-* doc/javadoc/at/bitfire/davdroid/class-use/Constants.html
-* doc/javadoc/at/bitfire/davdroid/class-use/MainActivity.html
-* doc/javadoc/at/bitfire/davdroid/class-use/URIUtils.html
-* doc/javadoc/at/bitfire/davdroid/package-frame.html
-* doc/javadoc/at/bitfire/davdroid/package-summary.html
-* doc/javadoc/at/bitfire/davdroid/package-tree.html
-* doc/javadoc/at/bitfire/davdroid/package-use.html
-* doc/javadoc/at/bitfire/davdroid/resource/
-* doc/javadoc/at/bitfire/davdroid/resource/CalDavCalendar.html
-* doc/javadoc/at/bitfire/davdroid/resource/CardDavAddressBook.html
-* doc/javadoc/at/bitfire/davdroid/resource/Contact.html
-* doc/javadoc/at/bitfire/davdroid/resource/Event.html
-* doc/javadoc/at/bitfire/davdroid/resource/InvalidResourceException.html
-* doc/javadoc/at/bitfire/davdroid/resource/LocalAddressBook.html
-* doc/javadoc/at/bitfire/davdroid/resource/LocalCalendar.html
-* doc/javadoc/at/bitfire/davdroid/resource/LocalCollection.html
-* doc/javadoc/at/bitfire/davdroid/resource/LocalStorageException.html
-* doc/javadoc/at/bitfire/davdroid/resource/RecordNotFoundException.html
-* doc/javadoc/at/bitfire/davdroid/resource/RemoteCollection.html
-* doc/javadoc/at/bitfire/davdroid/resource/Resource.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/CalDavCalendar.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/CardDavAddressBook.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/Contact.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/Event.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/InvalidResourceException.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/LocalAddressBook.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/LocalCalendar.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/LocalCollection.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/LocalStorageException.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/RecordNotFoundException.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/RemoteCollection.html
-* doc/javadoc/at/bitfire/davdroid/resource/class-use/Resource.html
-* doc/javadoc/at/bitfire/davdroid/resource/package-frame.html
-* doc/javadoc/at/bitfire/davdroid/resource/package-summary.html
-* doc/javadoc/at/bitfire/davdroid/resource/package-tree.html
-* doc/javadoc/at/bitfire/davdroid/resource/package-use.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/
-* doc/javadoc/at/bitfire/davdroid/syncadapter/AccountAuthenticatorService.AccountAuthenticator.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/AccountAuthenticatorService.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/AccountDetailsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/AccountSettings.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/AddAccountActivity.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/CalendarsSyncAdapterService.SyncAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/CalendarsSyncAdapterService.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/ContactsSyncAdapterService.ContactsSyncAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/ContactsSyncAdapterService.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/DavSyncAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/EnterCredentialsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/GeneralSettingsActivity.GeneralSettingsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/GeneralSettingsActivity.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.ServerInfoLoader.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/QueryServerDialogFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/SelectCollectionsAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/SelectCollectionsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/ServerInfo.ResourceInfo.Type.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/ServerInfo.ResourceInfo.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/ServerInfo.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/SyncManager.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/WebDavResourceAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/AccountAuthenticatorService.AccountAuthenticator.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/AccountAuthenticatorService.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/AccountDetailsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/AccountSettings.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/AddAccountActivity.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/CalendarsSyncAdapterService.SyncAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/CalendarsSyncAdapterService.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/ContactsSyncAdapterService.ContactsSyncAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/ContactsSyncAdapterService.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/DavSyncAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/EnterCredentialsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/GeneralSettingsActivity.GeneralSettingsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/GeneralSettingsActivity.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/QueryServerDialogFragment.ServerInfoLoader.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/QueryServerDialogFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/SelectCollectionsAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/SelectCollectionsFragment.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/ServerInfo.ResourceInfo.Type.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/ServerInfo.ResourceInfo.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/ServerInfo.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/SyncManager.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/class-use/WebDavResourceAdapter.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/package-frame.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/package-summary.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/package-tree.html
-* doc/javadoc/at/bitfire/davdroid/syncadapter/package-use.html
-* doc/javadoc/at/bitfire/davdroid/webdav/
-* doc/javadoc/at/bitfire/davdroid/webdav/DavAddressbookMultiget.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavCalendarMultiget.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavHref.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavHttpClient.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavHttpRequestRetryHandler.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavIncapableException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavMultiget.Type.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavMultiget.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavMultistatus.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavNoContentException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavNoMultiStatusException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavAddressbookHomeSet.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavCalendarHomeSet.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavCurrentUserPrincipal.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropAddressData.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropAddressbookDescription.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropCalendarColor.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropCalendarData.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropCalendarDescription.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropCalendarTimezone.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropComp.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropDisplayName.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropGetCTag.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropGetETag.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropPrivilege.PrivAll.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropPrivilege.PrivBind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropPrivilege.PrivUnbind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropPrivilege.PrivWrite.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropPrivilege.PrivWriteContent.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropPrivilege.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropResourceType.Addressbook.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropResourceType.Calendar.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.DavPropResourceType.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavProp.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavPropfind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavPropstat.html
-* doc/javadoc/at/bitfire/davdroid/webdav/DavResponse.html
-* doc/javadoc/at/bitfire/davdroid/webdav/HttpException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/HttpPropfind.Mode.html
-* doc/javadoc/at/bitfire/davdroid/webdav/HttpPropfind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/HttpReport.html
-* doc/javadoc/at/bitfire/davdroid/webdav/NotFoundException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/PreconditionFailedException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/TlsSniSocketFactory.html
-* doc/javadoc/at/bitfire/davdroid/webdav/WebDavResource.Property.html
-* doc/javadoc/at/bitfire/davdroid/webdav/WebDavResource.PutMode.html
-* doc/javadoc/at/bitfire/davdroid/webdav/WebDavResource.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavAddressbookMultiget.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavCalendarMultiget.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavHref.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavHttpClient.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavHttpRequestRetryHandler.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavIncapableException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavMultiget.Type.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavMultiget.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavMultistatus.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavNoContentException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavNoMultiStatusException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavAddressbookHomeSet.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavCalendarHomeSet.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavCurrentUserPrincipal.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropAddressData.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropAddressbookDescription.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropCalendarColor.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropCalendarData.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropCalendarDescription.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropCalendarTimezone.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropComp.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropDisplayName.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropGetCTag.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropGetETag.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropPrivilege.PrivAll.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropPrivilege.PrivBind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropPrivilege.PrivUnbind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropPrivilege.PrivWrite.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropPrivilege.PrivWriteContent.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropPrivilege.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropResourceType.Addressbook.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropResourceType.Calendar.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.DavPropResourceType.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavProp.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavPropfind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavPropstat.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/DavResponse.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/HttpException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/HttpPropfind.Mode.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/HttpPropfind.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/HttpReport.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/NotFoundException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/PreconditionFailedException.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/TlsSniSocketFactory.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/WebDavResource.Property.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/WebDavResource.PutMode.html
-* doc/javadoc/at/bitfire/davdroid/webdav/class-use/WebDavResource.html
-* doc/javadoc/at/bitfire/davdroid/webdav/package-frame.html
-* doc/javadoc/at/bitfire/davdroid/webdav/package-summary.html
-* doc/javadoc/at/bitfire/davdroid/webdav/package-tree.html
-* doc/javadoc/at/bitfire/davdroid/webdav/package-use.html
-* doc/javadoc/constant-values.html
-* doc/javadoc/deprecated-list.html
-* doc/javadoc/help-doc.html
-* doc/javadoc/index-files/
-* doc/javadoc/index-files/index-1.html
-* doc/javadoc/index-files/index-10.html
-* doc/javadoc/index-files/index-11.html
-* doc/javadoc/index-files/index-12.html
-* doc/javadoc/index-files/index-13.html
-* doc/javadoc/index-files/index-14.html
-* doc/javadoc/index-files/index-15.html
-* doc/javadoc/index-files/index-16.html
-* doc/javadoc/index-files/index-17.html
-* doc/javadoc/index-files/index-18.html
-* doc/javadoc/index-files/index-19.html
-* doc/javadoc/index-files/index-2.html
-* doc/javadoc/index-files/index-20.html
-* doc/javadoc/index-files/index-21.html
-* doc/javadoc/index-files/index-22.html
-* doc/javadoc/index-files/index-23.html
-* doc/javadoc/index-files/index-24.html
-* doc/javadoc/index-files/index-3.html
-* doc/javadoc/index-files/index-4.html
-* doc/javadoc/index-files/index-5.html
-* doc/javadoc/index-files/index-6.html
-* doc/javadoc/index-files/index-7.html
-* doc/javadoc/index-files/index-8.html
-* doc/javadoc/index-files/index-9.html
-* doc/javadoc/index.html
-* doc/javadoc/overview-frame.html
-* doc/javadoc/overview-summary.html
-* doc/javadoc/overview-tree.html
-* doc/javadoc/package-list
-* doc/javadoc/resources/
-* doc/javadoc/resources/background.gif
-* doc/javadoc/resources/tab.gif
-* doc/javadoc/resources/titlebar.gif
-* doc/javadoc/resources/titlebar_end.gif
-* doc/javadoc/serialized-form.html
-* doc/javadoc/stylesheet.css
-* doc/rfc3744-webdav-access-control-protocol.txt
-* doc/rfc4791-caldav.txt
-* doc/rfc4918-webdav.txt
-* doc/rfc5397-webdav-current-principal-extension.txt
-* doc/rfc5785-well-known-uris.txt
-* doc/rfc6352-carddav.txt
-* doc/rfc6764-caldav-carddav-service-discovery.txt
-* eclipse-libs/
-* eclipse-libs/lombok-api.jar
-* private/
-* private/contacts2.db
-* proguard-project.txt
-* proguard/
-* proguard/dump.txt
-* proguard/mapping.txt
-* proguard/seeds.txt
-* proguard/usage.txt
-* target/
-* target/davdroid-0.1.apk
-* target/davdroid-0.2-alpha.apk
-* target/davdroid-0.3-alpha.apk
-* target/davdroid_0_3_3_alpha.apk
-* target/davdroid_0_3_4_alpha.apk
-* target/davdroid_0_3_5_alpha.apk
-* target/davdroid_0_3_6_alpha.apk
-* target/davdroid_0_3_7_alpha.apk
-* target/davdroid_0_3_8_alpha.apk
-* target/davdroid_0_4_1_alpha.apk
-* target/davdroid_0_4_2_alpha.apk
-* target/davdroid_0_4_3_alpha.apk
-* target/davdroid_0_4_4_alpha.apk
-* target/davdroid_0_4_alpha.apk
-* target/davdroid_0_5_10.apk
-* target/davdroid_0_5_10_1.apk
-* target/davdroid_0_5_10_2.apk
-* target/davdroid_0_5_11.apk
-* target/davdroid_0_5_12.apk
-* target/davdroid_0_5_13.apk
-* target/davdroid_0_5_14.apk
-* target/davdroid_0_5_1_alpha.apk
-* target/davdroid_0_5_2_alpha.apk
-* target/davdroid_0_5_3_alpha.apk
-* target/davdroid_0_5_4_alpha.apk
-* target/davdroid_0_5_5_alpha.apk
-* target/davdroid_0_5_6_alpha.apk
-* target/davdroid_0_5_7_alpha.apk
-* target/davdroid_0_5_8.apk
-* target/davdroid_0_5_8_1.apk
-* target/davdroid_0_5_9.apk
-* target/davdroid_0_5_alpha.apk
-* target/davdroid_0_6.apk
-* target/davdroid_0_6_1.apk
-* target/davdroid_0_6_2.apk
-* target/davdroid_0_6_3.apk
-* target/davdroid_0_6_4.apk
-* target/davdroid_0_6_5.apk
-* target/davdroid_0_6_6.apk
-* target/davdroid_0_6_7.apk
-* target/davdroid_0_6_7_1.apk
-* target/davdroid_0_6_8.apk
-* test/
-* test/.classpath
-* test/.project
-* test/.settings/
-* test/.settings/org.eclipse.jdt.core.prefs
-* test/assets/
-* test/assets/all-day-0sec.ics
-* test/assets/all-day-10days.ics
-* test/assets/all-day-1day.ics
-* test/assets/event-on-that-day.ics
-* test/assets/impp.vcf
-* test/assets/invalid-unknown-properties.vcf
-* test/assets/reference.vcf
-* test/assets/test.random
-* test/assets/vcard3-sample1.vcf
-* test/assets/vienna-evolution.ics
-* test/bin/
-* test/bin/AndroidManifest.xml
-* test/bin/classes.dex
-* test/bin/classes/
-* test/bin/classes/at/
-* test/bin/classes/at/bitfire/
-* test/bin/classes/at/bitfire/davdroid/
-* test/bin/classes/at/bitfire/davdroid/resource/
-* test/bin/classes/at/bitfire/davdroid/resource/test/
-* test/bin/classes/at/bitfire/davdroid/resource/test/ContactTest.class
-* test/bin/classes/at/bitfire/davdroid/resource/test/EventTest.class
-* test/bin/classes/at/bitfire/davdroid/resource/test/LocalCalendarTest.class
-* test/bin/classes/at/bitfire/davdroid/syncadapter/
-* test/bin/classes/at/bitfire/davdroid/syncadapter/DavResourceFinderTest.class
-* test/bin/classes/at/bitfire/davdroid/test/
-* test/bin/classes/at/bitfire/davdroid/test/ArrayUtilsTest.class
-* test/bin/classes/at/bitfire/davdroid/test/BuildConfig.class
-* test/bin/classes/at/bitfire/davdroid/test/Constants.class
-* test/bin/classes/at/bitfire/davdroid/test/ContactTest.class
-* test/bin/classes/at/bitfire/davdroid/test/R$attr.class
-* test/bin/classes/at/bitfire/davdroid/test/R$drawable.class
-* test/bin/classes/at/bitfire/davdroid/test/R$string.class
-* test/bin/classes/at/bitfire/davdroid/test/R.class
-* test/bin/classes/at/bitfire/davdroid/test/URLUtilsTest.class
-* test/bin/classes/at/bitfire/davdroid/webdav/
-* test/bin/classes/at/bitfire/davdroid/webdav/DavRedirectStrategyTest.class
-* test/bin/classes/at/bitfire/davdroid/webdav/TlsSniSocketFactoryTest.class
-* test/bin/classes/at/bitfire/davdroid/webdav/WebDavResourceTest.class
-* test/bin/davdroidTest.apk
-* test/bin/res/
-* test/bin/res/crunch/
-* test/bin/res/crunch/drawable-hdpi/
-* test/bin/res/crunch/drawable-hdpi/ic_launcher.png
-* test/bin/res/crunch/drawable-ldpi/
-* test/bin/res/crunch/drawable-ldpi/ic_launcher.png
-* test/bin/res/crunch/drawable-mdpi/
-* test/bin/res/crunch/drawable-mdpi/ic_launcher.png
-* test/bin/res/crunch/drawable-xhdpi/
-* test/bin/res/crunch/drawable-xhdpi/ic_launcher.png
-* test/bin/resources.ap_
-* test/gen/
-* test/gen/at/
-* test/gen/at/bitfire/
-* test/gen/at/bitfire/davdroid/
-* test/gen/at/bitfire/davdroid/test/
-* test/gen/at/bitfire/davdroid/test/BuildConfig.java
-* test/gen/at/bitfire/davdroid/test/R.java
-* test/proguard-project.txt
-* test/project.properties
-* test/robohydra/
-* test/robohydra/.gitignore
-* test/robohydra/davdroid.conf
-* test/robohydra/node_modules/
-* test/robohydra/node_modules/.bin/
-* test/robohydra/node_modules/robohydra/
-* test/robohydra/node_modules/robohydra/.npmignore
-* test/robohydra/node_modules/robohydra/ChangeLog
-* test/robohydra/node_modules/robohydra/LICENSE
-* test/robohydra/node_modules/robohydra/README.md
-* test/robohydra/node_modules/robohydra/bin/
-* test/robohydra/node_modules/robohydra/bin/robohydra.js
-* test/robohydra/node_modules/robohydra/bin/robohydra.js
-* test/robohydra/node_modules/robohydra/examples/
-* test/robohydra/node_modules/robohydra/examples/README.md
-* test/robohydra/node_modules/robohydra/examples/custom-types.conf
-* test/robohydra/node_modules/robohydra/examples/delayed-proxy.conf
-* test/robohydra/node_modules/robohydra/examples/empty-https.conf
-* test/robohydra/node_modules/robohydra/examples/empty.conf
-* test/robohydra/node_modules/robohydra/examples/external-scenarios.conf
-* test/robohydra/node_modules/robohydra/examples/just-scenarios.conf
-* test/robohydra/node_modules/robohydra/examples/plugins/
-* test/robohydra/node_modules/robohydra/examples/plugins/basic-scenario/
-* test/robohydra/node_modules/robohydra/examples/plugins/basic-scenario/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/custom-types/
-* test/robohydra/node_modules/robohydra/examples/plugins/custom-types/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/delayed-proxy/
-* test/robohydra/node_modules/robohydra/examples/plugins/delayed-proxy/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/fixtures/
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/fixtures/etc/
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/fixtures/etc/passwd
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/fixtures/tada.png
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/scenarios/
-* test/robohydra/node_modules/robohydra/examples/plugins/external-scenarios/scenarios/externalScenarioExample.js
-* test/robohydra/node_modules/robohydra/examples/plugins/request-finder/
-* test/robohydra/node_modules/robohydra/examples/plugins/request-finder/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-filtering/
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-filtering/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-i18n/
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-i18n/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-streaming/
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-streaming/index.js
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-summoner/
-* test/robohydra/node_modules/robohydra/examples/plugins/simple-summoner/index.js
-* test/robohydra/node_modules/robohydra/examples/request-finder.conf
-* test/robohydra/node_modules/robohydra/examples/simple-filtering.conf
-* test/robohydra/node_modules/robohydra/examples/simple-i18n.conf
-* test/robohydra/node_modules/robohydra/examples/simple-i18n/
-* test/robohydra/node_modules/robohydra/examples/simple-i18n/foo.en.html
-* test/robohydra/node_modules/robohydra/examples/simple-i18n/foo.es.html
-* test/robohydra/node_modules/robohydra/examples/simple-i18n/foo.html
-* test/robohydra/node_modules/robohydra/examples/simple-i18n/just-french.fr.html
-* test/robohydra/node_modules/robohydra/examples/simple-streaming.conf
-* test/robohydra/node_modules/robohydra/examples/simple-summoner.conf
-* test/robohydra/node_modules/robohydra/examples/test-cert.pem
-* test/robohydra/node_modules/robohydra/examples/test-key.pem
-* test/robohydra/node_modules/robohydra/lib/
-* test/robohydra/node_modules/robohydra/lib/exceptions.js
-* test/robohydra/node_modules/robohydra/lib/heads.js
-* test/robohydra/node_modules/robohydra/lib/plugins/
-* test/robohydra/node_modules/robohydra/lib/plugins/admin.js
-* test/robohydra/node_modules/robohydra/lib/plugins/static/
-* test/robohydra/node_modules/robohydra/lib/plugins/static/css/
-* test/robohydra/node_modules/robohydra/lib/plugins/static/css/lipstick.css
-* test/robohydra/node_modules/robohydra/lib/plugins/static/css/robohydra.css
-* test/robohydra/node_modules/robohydra/lib/plugins/static/favicon.ico
-* test/robohydra/node_modules/robohydra/lib/plugins/static/img/
-* test/robohydra/node_modules/robohydra/lib/plugins/static/img/glyphicons-halflings-white.png
-* test/robohydra/node_modules/robohydra/lib/plugins/static/img/glyphicons-halflings.png
-* test/robohydra/node_modules/robohydra/lib/plugins/static/img/robohydra.png
-* test/robohydra/node_modules/robohydra/lib/plugins/static/js/
-* test/robohydra/node_modules/robohydra/lib/plugins/static/js/robohydra.js
-* test/robohydra/node_modules/robohydra/lib/plugins/templates/
-* test/robohydra/node_modules/robohydra/lib/plugins/templates/_header.ejs
-* test/robohydra/node_modules/robohydra/lib/plugins/templates/_scenario-result.ejs
-* test/robohydra/node_modules/robohydra/lib/plugins/templates/index.ejs
-* test/robohydra/node_modules/robohydra/lib/plugins/templates/layout-main.ejs
-* test/robohydra/node_modules/robohydra/lib/plugins/templates/scenario-instructions.ejs
-* test/robohydra/node_modules/robohydra/lib/plugins/templates/scenarios.ejs
-* test/robohydra/node_modules/robohydra/lib/robohydra.js
-* test/robohydra/node_modules/robohydra/lib/robohydrasummoner.js
-* test/robohydra/node_modules/robohydra/lib/utils.js
-* test/robohydra/node_modules/robohydra/node_modules/
-* test/robohydra/node_modules/robohydra/node_modules/.bin/
-* test/robohydra/node_modules/robohydra/node_modules/commander/
-* test/robohydra/node_modules/robohydra/node_modules/commander/Readme.md
-* test/robohydra/node_modules/robohydra/node_modules/commander/index.js
-* test/robohydra/node_modules/robohydra/node_modules/commander/package.json
-* test/robohydra/node_modules/robohydra/node_modules/ejs/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/.gitmodules
-* test/robohydra/node_modules/robohydra/node_modules/ejs/.npmignore
-* test/robohydra/node_modules/robohydra/node_modules/ejs/.travis.yml
-* test/robohydra/node_modules/robohydra/node_modules/ejs/History.md
-* test/robohydra/node_modules/robohydra/node_modules/ejs/Makefile
-* test/robohydra/node_modules/robohydra/node_modules/ejs/Readme.md
-* test/robohydra/node_modules/robohydra/node_modules/ejs/benchmark.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/ejs.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/ejs.min.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/examples/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/examples/client.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/examples/functions.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/examples/functions.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/examples/list.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/examples/list.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/index.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/lib/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/lib/ejs.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/lib/filters.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/lib/utils.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/package.json
-* test/robohydra/node_modules/robohydra/node_modules/ejs/support/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/support/compile.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/ejs.js
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/backslash.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/backslash.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/comments.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/comments.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/double-quote.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/double-quote.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/error.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/error.out
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/fail.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/include.css.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/include.css.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/include.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/include.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/includes/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/includes/menu-item.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/includes/menu/
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/includes/menu/item.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/menu.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/menu.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/messed.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/messed.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/newlines.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/newlines.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/no.newlines.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/no.newlines.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/para.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/pet.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/single-quote.ejs
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/single-quote.html
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/style.css
-* test/robohydra/node_modules/robohydra/node_modules/ejs/test/fixtures/user.ejs
-* test/robohydra/node_modules/robohydra/node_modules/markdown/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/.npmignore
-* test/robohydra/node_modules/robohydra/node_modules/markdown/.travis.yml
-* test/robohydra/node_modules/robohydra/node_modules/markdown/Changes.markdown
-* test/robohydra/node_modules/robohydra/node_modules/markdown/README.markdown
-* test/robohydra/node_modules/robohydra/node_modules/markdown/bin/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/bin/md2html.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/bin/md2html.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/lib/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/lib/index.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/lib/markdown.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/markdown-js.sublime-project
-* test/robohydra/node_modules/robohydra/node_modules/markdown/markdown-js.sublime-workspace
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/.bin/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/.npmignore
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/LICENSE
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/README.md
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/bin/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/bin/nopt.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/bin/nopt.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/examples/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/examples/my-program.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/lib/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/lib/nopt.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/node_modules/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/node_modules/abbrev/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/node_modules/abbrev/LICENSE
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/node_modules/abbrev/README.md
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/node_modules/abbrev/lib/
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/node_modules/abbrev/lib/abbrev.js
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/node_modules/abbrev/package.json
-* test/robohydra/node_modules/robohydra/node_modules/markdown/node_modules/nopt/package.json
-* test/robohydra/node_modules/robohydra/node_modules/markdown/package.json
-* test/robohydra/node_modules/robohydra/node_modules/markdown/seed.yml
-* test/robohydra/node_modules/robohydra/node_modules/mime/
-* test/robohydra/node_modules/robohydra/node_modules/mime/LICENSE
-* test/robohydra/node_modules/robohydra/node_modules/mime/README.md
-* test/robohydra/node_modules/robohydra/node_modules/mime/mime.js
-* test/robohydra/node_modules/robohydra/node_modules/mime/package.json
-* test/robohydra/node_modules/robohydra/node_modules/mime/test.js
-* test/robohydra/node_modules/robohydra/node_modules/mime/types/
-* test/robohydra/node_modules/robohydra/node_modules/mime/types/mime.types
-* test/robohydra/node_modules/robohydra/node_modules/mime/types/node.types
-* test/robohydra/node_modules/robohydra/node_modules/qs/
-* test/robohydra/node_modules/robohydra/node_modules/qs/.gitmodules
-* test/robohydra/node_modules/robohydra/node_modules/qs/.npmignore
-* test/robohydra/node_modules/robohydra/node_modules/qs/Readme.md
-* test/robohydra/node_modules/robohydra/node_modules/qs/index.js
-* test/robohydra/node_modules/robohydra/node_modules/qs/package.json
-* test/robohydra/node_modules/robohydra/package.json
-* test/robohydra/node_modules/robohydra/plugins/
-* test/robohydra/node_modules/robohydra/plugins/README.md
-* test/robohydra/node_modules/robohydra/plugins/frontend-dev-proxy/
-* test/robohydra/node_modules/robohydra/plugins/frontend-dev-proxy/index.js
-* test/robohydra/node_modules/robohydra/plugins/logger/
-* test/robohydra/node_modules/robohydra/plugins/logger/index.js
-* test/robohydra/node_modules/robohydra/plugins/no-caching/
-* test/robohydra/node_modules/robohydra/plugins/no-caching/index.js
-* test/robohydra/node_modules/robohydra/plugins/replayer/
-* test/robohydra/node_modules/robohydra/plugins/replayer/index.js
-* test/robohydra/node_modules/robohydra/test/
-* test/robohydra/node_modules/robohydra/test/adminhead-test.js
-* test/robohydra/node_modules/robohydra/test/buster.js
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/fixtures/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/fixtures/basic.txt
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/fixtures/etc/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/fixtures/etc/passwd
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/fixtures/non-ascii.txt
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/index.js
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/tests/
-* test/robohydra/node_modules/robohydra/test/fixture-module-fs/usr/local/share/robohydra/plugins/simple-fixtures/tests/fixtureLoader.js
-* test/robohydra/node_modules/robohydra/test/head-test.js
-* test/robohydra/node_modules/robohydra/test/helpers.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/project/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/project/robohydra-plugins/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/project/robohydra-plugins/definedtwice/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/project/robohydra-plugins/definedtwice/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/robohydra/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/robohydra/plugins/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/robohydra/plugins/customloadpath/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/robohydra/plugins/customloadpath/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/robohydra/plugins/definedtwice/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/opt/robohydra/plugins/definedtwice/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/local/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/local/share/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/local/share/robohydra/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/local/share/robohydra/plugins/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/local/share/robohydra/plugins/definedtwice/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/local/share/robohydra/plugins/definedtwice/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/definedtwice/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/definedtwice/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/right-robohydra-test/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/right-robohydra-test/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/simple-authenticator/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/simple-authenticator/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/simple/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/simple/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/url-query-authenticator/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/url-query-authenticator/index.js
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/wrong-fixed-picker/
-* test/robohydra/node_modules/robohydra/test/plugin-fs/usr/share/robohydra/plugins/wrong-fixed-picker/index.js
-* test/robohydra/node_modules/robohydra/test/plugins/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-conflicting-names/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-conflicting-names/index.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-conflicting-names/scenarios/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-conflicting-names/scenarios/duplicateTestName.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-headless/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-headless/index.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-headless/scenarios/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-headless/scenarios/firstTest.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-headless/scenarios/secondTest.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-mixed/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-mixed/index.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-mixed/scenarios/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-mixed/scenarios/external.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-simple/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-simple/index.js
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-simple/scenarios/
-* test/robohydra/node_modules/robohydra/test/plugins/external-scenarios-simple/scenarios/firstScenario.js
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/fixtures/
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/fixtures/basic.txt
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/fixtures/etc/
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/fixtures/etc/passwd
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/fixtures/non-ascii.txt
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/index.js
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/scenarios/
-* test/robohydra/node_modules/robohydra/test/plugins/simple-fixtures/scenarios/fixtureLoader.js
-* test/robohydra/node_modules/robohydra/test/robohydra-test.js
-* test/robohydra/node_modules/robohydra/test/robohydrasummoner-test.js
-* test/robohydra/plugins/
-* test/robohydra/plugins/assets/
-* test/robohydra/plugins/assets/index.js
-* test/robohydra/plugins/dav-invalid/
-* test/robohydra/plugins/dav-invalid/index.js
-* test/robohydra/plugins/dav/
-* test/robohydra/plugins/dav/index.js
-* test/robohydra/plugins/headdav.js
-* test/robohydra/plugins/redirect/
-* test/robohydra/plugins/redirect/index.js
-* test/robohydra/plugins/simple.js
-* test/robohydra/run.sh
-
-Moved Files:
-------------
-Android Gradle projects use a different directory structure than ADT
-Eclipse projects. Here's how the projects were restructured:
-
-* AndroidManifest.xml => app/src/main/AndroidManifest.xml
-* assets/ => app/src/main/assets/
-* libs/backport-util-concurrent-3.1.jar => app/libs/backport-util-concurrent-3.1.jar
-* libs/commons-codec-1.8.jar => app/libs/commons-codec-1.8.jar
-* libs/commons-io-2.4.jar => app/libs/commons-io-2.4.jar
-* libs/commons-lang-2.6.jar => app/libs/commons-lang-2.6.jar
-* libs/commons-logging-1.1.3.jar => app/libs/commons-logging-1.1.3.jar
-* libs/ez-vcard-0.9.6.jar => app/libs/ez-vcard-0.9.6.jar
-* libs/httpclientandroidlib-1.2.1.jar => app/libs/httpclientandroidlib-1.2.1.jar
-* libs/ical4j-1.0.6-davdroid141027.jar => app/libs/ical4j-1.0.6-davdroid141027.jar
-* libs/org.xbill.dns_2.1.6.jar => app/libs/org.xbill.dns_2.1.6.jar
-* libs/simple-xml-2.7.jar => app/libs/simple-xml-2.7.jar
-* lint.xml => app/lint.xml
-* res/ => app/src/main/res/
-* src/ => app/src/main/java/
-* test/res/ => app/src/androidTest/res/
-* test/src/ => app/src/androidTest/java/
-
-Next Steps:
------------
-You can now build the project. The Gradle project needs network
-connectivity to download dependencies.
-
-Bugs:
------
-If for some reason your project does not build, and you determine that
-it is due to a bug or limitation of the Eclipse to Gradle importer,
-please file a bug at http://b.android.com with category
-Component-Tools.
-
-(This import summary is for your information only, and can be deleted
-after import once you are satisfied with the results.)