/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.gecko.sync.repositories.android;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import org.mozilla.gecko.db.BrowserContract;
import android.net.Uri;
public class BrowserContractHelpers extends BrowserContract {
protected static Uri withSyncAndDeleted(Uri u) {
return u.buildUpon()
.appendQueryParameter(PARAM_IS_SYNC, "true")
.appendQueryParameter(PARAM_SHOW_DELETED, "true")
.build();
}
protected static Uri withSync(Uri u) {
return u.buildUpon()
.appendQueryParameter(PARAM_IS_SYNC, "true")
.build();
}
public static final Uri BOOKMARKS_CONTENT_URI = withSyncAndDeleted(Bookmarks.CONTENT_URI);
public static final Uri BOOKMARKS_PARENTS_CONTENT_URI = withSyncAndDeleted(Bookmarks.PARENTS_CONTENT_URI);
public static final Uri BOOKMARKS_POSITIONS_CONTENT_URI = withSyncAndDeleted(Bookmarks.POSITIONS_CONTENT_URI);
public static final Uri HISTORY_CONTENT_URI = withSyncAndDeleted(History.CONTENT_URI);
public static final Uri SCHEMA_CONTENT_URI = withSyncAndDeleted(Schema.CONTENT_URI);
public static final Uri PASSWORDS_CONTENT_URI = withSyncAndDeleted(Passwords.CONTENT_URI);
public static final Uri DELETED_PASSWORDS_CONTENT_URI = withSyncAndDeleted(DeletedPasswords.CONTENT_URI);
public static final Uri FORM_HISTORY_CONTENT_URI = withSync(FormHistory.CONTENT_URI);
public static final Uri DELETED_FORM_HISTORY_CONTENT_URI = withSync(DeletedFormHistory.CONTENT_URI);
public static final String[] PasswordColumns = new String[] {
Passwords.ID,
Passwords.HOSTNAME,
Passwords.HTTP_REALM,
Passwords.FORM_SUBMIT_URL,
Passwords.USERNAME_FIELD,
Passwords.PASSWORD_FIELD,
Passwords.ENCRYPTED_USERNAME,
Passwords.ENCRYPTED_PASSWORD,
Passwords.ENC_TYPE,
Passwords.TIME_CREATED,
Passwords.TIME_LAST_USED,
Passwords.TIME_PASSWORD_CHANGED,
Passwords.TIMES_USED,
Passwords.GUID
};
public static final String[] HistoryColumns = new String[] {
CommonColumns._ID,
SyncColumns.GUID,
SyncColumns.DATE_CREATED,
SyncColumns.DATE_MODIFIED,
SyncColumns.IS_DELETED,
History.TITLE,
History.URL,
History.DATE_LAST_VISITED,
History.VISITS
};
public static final String[] BookmarkColumns = new String[] {
CommonColumns._ID,
SyncColumns.GUID,
SyncColumns.DATE_CREATED,
SyncColumns.DATE_MODIFIED,
SyncColumns.IS_DELETED,
Bookmarks.TITLE,
Bookmarks.URL,
Bookmarks.TYPE,
Bookmarks.PARENT,
Bookmarks.POSITION,
Bookmarks.TAGS,
Bookmarks.DESCRIPTION,
Bookmarks.KEYWORD
};
public static final String[] FormHistoryColumns = new String[] {
FormHistory.ID,
FormHistory.GUID,
FormHistory.FIELD_NAME,
FormHistory.VALUE,
FormHistory.TIMES_USED,
FormHistory.FIRST_USED,
FormHistory.LAST_USED
};
public static final String[] DeletedColumns = new String[] {
BrowserContract.DeletedColumns.ID,
BrowserContract.DeletedColumns.GUID,
BrowserContract.DeletedColumns.TIME_DELETED
};
// Mapping from Sync types to Fennec types.
public static final String[] BOOKMARK_TYPE_CODE_TO_STRING = {
// Observe omissions: "microsummary", "item".
"folder", "bookmark", "separator", "livemark", "query"
};
private static final int MAX_BOOKMARK_TYPE_CODE = BOOKMARK_TYPE_CODE_TO_STRING.length - 1;
public static final Map<String, Integer> BOOKMARK_TYPE_STRING_TO_CODE;
static {
HashMap<String, Integer> t = new HashMap<String, Integer>();
t.put("folder", Bookmarks.TYPE_FOLDER);
t.put("bookmark", Bookmarks.TYPE_BOOKMARK);
t.put("separator", Bookmarks.TYPE_SEPARATOR);
t.put("livemark", Bookmarks.TYPE_LIVEMARK);
t.put("query", Bookmarks.TYPE_QUERY);
BOOKMARK_TYPE_STRING_TO_CODE = Collections.unmodifiableMap(t);
}
/**
* Convert a database bookmark type code into the Sync string equivalent.
*
* @param code one of the <code>Bookmarks.TYPE_*</code> enumerations.
* @return the string equivalent, or null if not found.
*/
public static String typeStringForCode(int code) {
if (0 <= code && code <= MAX_BOOKMARK_TYPE_CODE) {
return BOOKMARK_TYPE_CODE_TO_STRING[code];
}
return null;
}
/**
* Convert a Sync type string into a Fennec type code.
*
* @param type a type string, such as "livemark".
* @return the type code, or -1 if not found.
*/
public static int typeCodeForString(String type) {
Integer found = BOOKMARK_TYPE_STRING_TO_CODE.get(type);
if (found == null) {
return -1;
}
return found.intValue();
}
public static boolean isSupportedType(String type) {
return BOOKMARK_TYPE_STRING_TO_CODE.containsKey(type);
}
}