aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2013-09-05 00:27:17 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2013-09-05 00:27:17 +0200
commit8614ff2ec74447f7199a5822f9331a0991161038 (patch)
treeae730a23dcb5aef7d7a2e193762bdc17315845da
parent9a737c7318e20a56a7d7a2efd8602fb0bec05101 (diff)
downloadopen-keychain-8614ff2ec74447f7199a5822f9331a0991161038.tar.gz
open-keychain-8614ff2ec74447f7199a5822f9331a0991161038.tar.bz2
open-keychain-8614ff2ec74447f7199a5822f9331a0991161038.zip
Fix revoke and save
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/KeychainProvider.java63
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java61
-rw-r--r--OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/ServiceActivity.java6
3 files changed, 69 insertions, 61 deletions
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/KeychainProvider.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/KeychainProvider.java
index 6275b3b5c..98a45d69f 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/KeychainProvider.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/provider/KeychainProvider.java
@@ -78,9 +78,9 @@ public class KeychainProvider extends ContentProvider {
private static final int SECRET_KEY_RING_USER_ID = 221;
private static final int SECRET_KEY_RING_USER_ID_BY_ROW_ID = 222;
- private static final int CRYPTO_CONSUMERS = 301;
- private static final int CRYPTO_CONSUMERS_BY_ROW_ID = 302;
- private static final int CRYPTO_CONSUMERS_BY_PACKAGE_NAME = 303;
+ private static final int API_APPS = 301;
+ private static final int API_APPS_BY_ROW_ID = 302;
+ private static final int API_APPS_BY_PACKAGE_NAME = 303;
// private static final int DATA_STREAM = 401;
@@ -226,13 +226,12 @@ public class KeychainProvider extends ContentProvider {
SECRET_KEY_RING_USER_ID_BY_ROW_ID);
/**
- * Crypto Consumers
+ * API apps
*/
- matcher.addURI(authority, KeychainContract.BASE_API_APPS, CRYPTO_CONSUMERS);
- matcher.addURI(authority, KeychainContract.BASE_API_APPS + "/#",
- CRYPTO_CONSUMERS_BY_ROW_ID);
+ matcher.addURI(authority, KeychainContract.BASE_API_APPS, API_APPS);
+ matcher.addURI(authority, KeychainContract.BASE_API_APPS + "/#", API_APPS_BY_ROW_ID);
matcher.addURI(authority, KeychainContract.BASE_API_APPS + "/"
- + KeychainContract.PATH_BY_PACKAGE_NAME + "/*", CRYPTO_CONSUMERS_BY_PACKAGE_NAME);
+ + KeychainContract.PATH_BY_PACKAGE_NAME + "/*", API_APPS_BY_PACKAGE_NAME);
/**
* data stream
@@ -293,11 +292,11 @@ public class KeychainProvider extends ContentProvider {
case SECRET_KEY_RING_USER_ID_BY_ROW_ID:
return UserIds.CONTENT_ITEM_TYPE;
- case CRYPTO_CONSUMERS:
+ case API_APPS:
return ApiApps.CONTENT_TYPE;
- case CRYPTO_CONSUMERS_BY_ROW_ID:
- case CRYPTO_CONSUMERS_BY_PACKAGE_NAME:
+ case API_APPS_BY_ROW_ID:
+ case API_APPS_BY_PACKAGE_NAME:
return ApiApps.CONTENT_ITEM_TYPE;
default:
@@ -608,18 +607,18 @@ public class KeychainProvider extends ContentProvider {
break;
- case CRYPTO_CONSUMERS:
+ case API_APPS:
qb.setTables(Tables.API_APPS);
break;
- case CRYPTO_CONSUMERS_BY_ROW_ID:
+ case API_APPS_BY_ROW_ID:
qb.setTables(Tables.API_APPS);
qb.appendWhere(BaseColumns._ID + " = ");
qb.appendWhereEscapeString(uri.getLastPathSegment());
break;
- case CRYPTO_CONSUMERS_BY_PACKAGE_NAME:
+ case API_APPS_BY_PACKAGE_NAME:
qb.setTables(Tables.API_APPS);
qb.appendWhere(ApiApps.PACKAGE_NAME + " = ");
qb.appendWhereEscapeString(uri.getPathSegments().get(2));
@@ -711,7 +710,7 @@ public class KeychainProvider extends ContentProvider {
rowUri = UserIds.buildSecretUserIdsUri(Long.toString(rowId));
break;
- case CRYPTO_CONSUMERS:
+ case API_APPS:
rowId = db.insertOrThrow(Tables.API_APPS, null, values);
rowUri = ApiApps.buildIdUri(Long.toString(rowId));
@@ -771,10 +770,13 @@ public class KeychainProvider extends ContentProvider {
count = db.delete(Tables.KEYS, buildDefaultUserIdsSelection(uri, selection),
selectionArgs);
break;
- case CRYPTO_CONSUMERS_BY_ROW_ID:
- case CRYPTO_CONSUMERS_BY_PACKAGE_NAME:
- count = db.delete(Tables.API_APPS,
- buildDefaultCryptoConsumersSelection(uri, selection), selectionArgs);
+ case API_APPS_BY_ROW_ID:
+ count = db.delete(Tables.API_APPS, buildDefaultApiAppsSelection(uri, false, selection),
+ selectionArgs);
+ break;
+ case API_APPS_BY_PACKAGE_NAME:
+ count = db.delete(Tables.API_APPS, buildDefaultApiAppsSelection(uri, true, selection),
+ selectionArgs);
break;
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
@@ -836,10 +838,13 @@ public class KeychainProvider extends ContentProvider {
count = db.update(Tables.USER_IDS, values,
buildDefaultUserIdsSelection(uri, selection), selectionArgs);
break;
- case CRYPTO_CONSUMERS_BY_ROW_ID:
- case CRYPTO_CONSUMERS_BY_PACKAGE_NAME:
+ case API_APPS_BY_ROW_ID:
+ count = db.update(Tables.API_APPS, values,
+ buildDefaultApiAppsSelection(uri, false, selection), selectionArgs);
+ break;
+ case API_APPS_BY_PACKAGE_NAME:
count = db.update(Tables.API_APPS, values,
- buildDefaultCryptoConsumersSelection(uri, selection), selectionArgs);
+ buildDefaultApiAppsSelection(uri, true, selection), selectionArgs);
break;
default:
throw new UnsupportedOperationException("Unknown uri: " + uri);
@@ -930,20 +935,26 @@ public class KeychainProvider extends ContentProvider {
}
/**
- * Build default selection statement for Crypto Consumers. If no extra selection is specified
- * only build where clause with rowId
+ * Build default selection statement for API apps. If no extra selection is specified only build
+ * where clause with rowId
*
* @param uri
* @param selection
* @return
*/
- private String buildDefaultCryptoConsumersSelection(Uri uri, String selection) {
+ private String buildDefaultApiAppsSelection(Uri uri, boolean packageSelection, String selection) {
+ String lastPathSegment = uri.getLastPathSegment();
+
String andSelection = "";
if (!TextUtils.isEmpty(selection)) {
andSelection = " AND (" + selection + ")";
}
- return selection + andSelection;
+ if (packageSelection) {
+ return ApiApps.PACKAGE_NAME + "=" + lastPathSegment + andSelection;
+ } else {
+ return BaseColumns._ID + "=" + lastPathSegment + andSelection;
+ }
}
// @Override
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java
index 3046dd0d2..6316dbc38 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/AppSettingsActivity.java
@@ -27,10 +27,8 @@ public class AppSettingsActivity extends SherlockFragmentActivity {
// model
Uri appUri;
- long id;
String packageName;
long keyId;
- boolean asciiArmor;
// model, derived
String appName;
@@ -85,46 +83,45 @@ public class AppSettingsActivity extends SherlockFragmentActivity {
private void loadData(Uri appUri) {
Cursor cur = getContentResolver().query(appUri, null, null, null, null);
- id = ContentUris.parseId(appUri);
if (cur.moveToFirst()) {
- do {
- packageName = cur.getString(cur
- .getColumnIndex(KeychainContract.ApiApps.PACKAGE_NAME));
- // get application name
- try {
- ApplicationInfo ai = pm.getApplicationInfo(packageName, 0);
-
- appName = (String) pm.getApplicationLabel(ai);
- } catch (final NameNotFoundException e) {
- appName = getString(R.string.api_unknown_app);
- }
-
- try {
- asciiArmor = (cur.getInt(cur
- .getColumnIndexOrThrow(KeychainContract.ApiApps.ASCII_ARMOR)) == 1);
-
- // display values
- asciiArmorCheckBox.setChecked(asciiArmor);
- } catch (IllegalArgumentException e) {
- Log.e(Constants.TAG, "AppSettingsActivity", e);
- }
-
- } while (cur.moveToNext());
+ packageName = cur.getString(cur.getColumnIndex(KeychainContract.ApiApps.PACKAGE_NAME));
+ // get application name
+ try {
+ ApplicationInfo ai = pm.getApplicationInfo(packageName, 0);
+
+ appName = (String) pm.getApplicationLabel(ai);
+ } catch (final NameNotFoundException e) {
+ appName = getString(R.string.api_unknown_app);
+ }
+ setTitle(appName);
+
+ try {
+ boolean asciiArmor = (cur.getInt(cur
+ .getColumnIndexOrThrow(KeychainContract.ApiApps.ASCII_ARMOR)) == 1);
+ asciiArmorCheckBox.setChecked(asciiArmor);
+
+ } catch (IllegalArgumentException e) {
+ Log.e(Constants.TAG, "AppSettingsActivity", e);
+ }
}
}
private void revokeAccess() {
- Uri calUri = ContentUris.withAppendedId(appUri, id);
- getContentResolver().delete(calUri, null, null);
+ if (getContentResolver().delete(appUri, null, null) <= 0) {
+ throw new RuntimeException();
+ }
finish();
}
private void save() {
+ Log.d(Constants.TAG, "saving");
final ContentValues cv = new ContentValues();
- cv.put(KeychainContract.ApiApps.PACKAGE_NAME, packageName);
- cv.put(KeychainContract.ApiApps.ASCII_ARMOR, asciiArmor);
- // TODO: other parameter
- getContentResolver().update(appUri, cv, null, null);
+ // cv.put(KeychainContract.ApiApps.PACKAGE_NAME, packageName);
+ cv.put(KeychainContract.ApiApps.ASCII_ARMOR, asciiArmorCheckBox.isChecked());
+ // TODO: other parameters
+ if (getContentResolver().update(appUri, cv, null, null) <= 0) {
+ throw new RuntimeException();
+ }
finish();
}
diff --git a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/ServiceActivity.java b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/ServiceActivity.java
index 703093f0a..00bba7757 100644
--- a/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/ServiceActivity.java
+++ b/OpenPGP-Keychain/src/org/sufficientlysecure/keychain/remote_api/ServiceActivity.java
@@ -133,9 +133,9 @@ public class ServiceActivity extends SherlockFragmentActivity {
if (ACTION_REGISTER.equals(action)) {
final String packageName = extras.getString(EXTRA_PACKAGE_NAME);
- setContentView(R.layout.api_app_settings_activity);
-
- //TODO: handle if app is already registered
+ setContentView(R.layout.api_app_register_activity);
+
+ // TODO: handle if app is already registered
// LinearLayout layoutRegister = (LinearLayout)
// findViewById(R.id.register_crypto_consumer_register_layout);
// LinearLayout layoutEdit = (LinearLayout)