forked from mirrors/gecko-dev
Bug 1284283 - Remove MozContact API Android backend. r=sebastian
MozReview-Commit-ID: GLhrA1cc1Rq --HG-- extra : rebase_source : 73efab6d9468388a6ba0be489250d8dd3d185cd6
This commit is contained in:
parent
71feae1420
commit
9a8b60ffca
10 changed files with 1 additions and 2311 deletions
|
|
@ -204,9 +204,6 @@ mobile/android/chrome/content/about.js
|
|||
mobile/android/installer/
|
||||
mobile/android/locales/
|
||||
|
||||
# Pretty sure we're disabling this one anyway
|
||||
mobile/android/modules/ContactService.jsm
|
||||
|
||||
# Non-standard `(catch ex if ...)`
|
||||
mobile/android/components/Snippets.js
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,5 @@ EXTRA_COMPONENTS += [
|
|||
|
||||
EXTRA_JS_MODULES += [
|
||||
'fallback/ContactDB.jsm',
|
||||
'fallback/ContactService.jsm'
|
||||
]
|
||||
|
||||
if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'android':
|
||||
EXTRA_JS_MODULES += [
|
||||
'fallback/ContactService.jsm'
|
||||
]
|
||||
|
|
|
|||
|
|
@ -51,13 +51,6 @@
|
|||
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
|
||||
<uses-feature android:name="android.hardware.touchscreen"/>
|
||||
|
||||
#ifdef NIGHTLY_BUILD
|
||||
<!-- Contacts API -->
|
||||
<uses-permission android:name="android.permission.READ_CONTACTS"/>
|
||||
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
|
||||
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>
|
||||
#endif
|
||||
|
||||
<!-- Tab Queue -->
|
||||
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -178,7 +178,6 @@ public abstract class GeckoApp
|
|||
/** Tells if we're aborting app launch, e.g. if this is an unsupported device configuration. */
|
||||
protected boolean mIsAbortingAppLaunch;
|
||||
|
||||
private ContactService mContactService;
|
||||
private PromptService mPromptService;
|
||||
protected TextSelection mTextSelection;
|
||||
|
||||
|
|
@ -1642,8 +1641,6 @@ public abstract class GeckoApp
|
|||
SmsManager.getInstance().start();
|
||||
}
|
||||
|
||||
mContactService = new ContactService(EventDispatcher.getInstance(), this);
|
||||
|
||||
mPromptService = new PromptService(this);
|
||||
|
||||
// Trigger the completion of the telemetry timer that wraps activity startup,
|
||||
|
|
@ -2248,8 +2245,6 @@ public abstract class GeckoApp
|
|||
mDoorHangerPopup.destroy();
|
||||
if (mFormAssistPopup != null)
|
||||
mFormAssistPopup.destroy();
|
||||
if (mContactService != null)
|
||||
mContactService.destroy();
|
||||
if (mPromptService != null)
|
||||
mPromptService.destroy();
|
||||
if (mTextSelection != null)
|
||||
|
|
|
|||
|
|
@ -311,7 +311,6 @@ gbjar.sources += ['java/org/mozilla/gecko/' + x for x in [
|
|||
'BrowserLocaleManager.java',
|
||||
'cleanup/FileCleanupController.java',
|
||||
'cleanup/FileCleanupService.java',
|
||||
'ContactService.java',
|
||||
'CustomEditText.java',
|
||||
'customtabs/CustomTabsActivity.java',
|
||||
'customtabs/GeckoCustomTabsService.java',
|
||||
|
|
|
|||
|
|
@ -562,10 +562,6 @@
|
|||
<string name="set_image_path_fail">&set_image_path_fail;</string>
|
||||
<string name="set_image_chooser_title">&set_image_chooser_title;</string>
|
||||
|
||||
<!-- Contacts API -->
|
||||
<string name="contacts_account_chooser_dialog_title2">Share contacts from…</string>
|
||||
|
||||
|
||||
<!-- Guest mode -->
|
||||
<string name="new_guest_session">&new_guest_session;</string>
|
||||
<string name="exit_guest_session">&exit_guest_session;</string>
|
||||
|
|
|
|||
|
|
@ -135,14 +135,6 @@ desktopNotification.notifications=Notifications
|
|||
imageblocking.downloadedImage=Image unblocked
|
||||
imageblocking.showAllImages=Show All
|
||||
|
||||
# Contacts API
|
||||
contacts.allow=Allow
|
||||
contacts.dontAllow=Don't allow
|
||||
contacts.ask=Allow %S to access your contacts?
|
||||
# LOCALIZATION NOTE (contacts.dontAskAgain): This label appears next to a
|
||||
# checkbox to indicate whether or not the user wants to make a permanent decision.
|
||||
contacts.dontAskAgain=Don't ask again for this site
|
||||
|
||||
# Device Storage API
|
||||
deviceStorageMusic.allow=Allow
|
||||
deviceStorageMusic.dontAllow=Don't allow
|
||||
|
|
|
|||
|
|
@ -1,262 +0,0 @@
|
|||
/* 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/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
const DEBUG = false;
|
||||
function debug(s) { dump("-*- Android ContactService component: " + s + "\n"); }
|
||||
|
||||
const Cu = Components.utils;
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
|
||||
this.EXPORTED_SYMBOLS = [];
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/PhoneNumberUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyServiceGetter(this, "ppmm", "@mozilla.org/parentprocessmessagemanager;1",
|
||||
"nsIMessageListenerManager");
|
||||
|
||||
var ContactService = {
|
||||
init: function() {
|
||||
if (DEBUG) debug("Init");
|
||||
this._requestMessages = {};
|
||||
|
||||
// Add listeners for all messages from ContactManager.js
|
||||
let messages = ["Contacts:Clear", "Contacts:Find", "Contacts:GetAll",
|
||||
"Contacts:GetAll:SendNow", "Contacts:GetCount", "Contacts:GetRevision",
|
||||
"Contact:Remove", "Contact:Save",];
|
||||
messages.forEach(function(msgName) {
|
||||
ppmm.addMessageListener(msgName, this);
|
||||
}.bind(this));
|
||||
|
||||
// Add listeners for all messages from ContactService.java
|
||||
let returnMessages = ["Android:Contacts:Count",
|
||||
"Android:Contacts:Clear:Return:OK", "Android:Contacts:Clear:Return:KO",
|
||||
"Android:Contacts:Find:Return:OK", "Android:Contacts:Find:Return:KO",
|
||||
"Android:Contacts:GetAll:Next", "Android:Contacts:RegisterForMessages",
|
||||
"Android:Contact:Remove:Return:OK", "Android:Contact:Remove:Return:KO",
|
||||
"Android:Contact:Save:Return:OK", "Android:Contact:Save:Return:KO",];
|
||||
|
||||
returnMessages.forEach(function(msgName) {
|
||||
Services.obs.addObserver(this, msgName, false);
|
||||
}.bind(this));
|
||||
},
|
||||
|
||||
_sendMessageToJava: function(aMsg) {
|
||||
Services.androidBridge.handleGeckoMessage(aMsg);
|
||||
},
|
||||
|
||||
_sendReturnMessage: function(aTopic, aRequestID, aResult) {
|
||||
this._requestMessages[aRequestID].target.sendAsyncMessage(aTopic, aResult);
|
||||
},
|
||||
|
||||
_sendAndDeleteReturnMessage: function(aTopic, aRequestID, aResult) {
|
||||
this._sendReturnMessage(aTopic, aRequestID, aResult)
|
||||
delete this._requestMessages[aRequestID];
|
||||
},
|
||||
|
||||
observe: function(aSubject, aTopic, aData) {
|
||||
if (DEBUG) {
|
||||
debug("observe: subject: " + aSubject + " topic: " + aTopic + " data: " + aData);
|
||||
}
|
||||
|
||||
let message = JSON.parse(aData, function date_reviver(k, v) {
|
||||
// The Java service sends dates as strings, so convert them to Dates before
|
||||
// sending them back to the child.
|
||||
if (v != null && v != "null" &&
|
||||
["updated", "published", "anniversary", "bday"].indexOf(k) != -1) {
|
||||
return new Date(v);
|
||||
}
|
||||
return v;
|
||||
});
|
||||
let requestID = message.requestID;
|
||||
|
||||
// The return message topic is the same as the current topic, but without the "Android:" prefix
|
||||
let returnMessageTopic = aTopic.substring(8);
|
||||
|
||||
switch (aTopic) {
|
||||
case "Android:Contacts:Find:Return:OK":
|
||||
this._sendAndDeleteReturnMessage(returnMessageTopic, requestID, {requestID: requestID, contacts: message.contacts});
|
||||
break;
|
||||
|
||||
case "Android:Contacts:Find:Return:KO":
|
||||
this._sendAndDeleteReturnMessage(returnMessageTopic, requestID, {requestID: requestID});
|
||||
break;
|
||||
|
||||
case "Android:Contact:Save:Return:OK":
|
||||
this._sendReturnMessage(returnMessageTopic, requestID, {requestID: requestID, contactID: message.contactID});
|
||||
this._sendAndDeleteReturnMessage("Contact:Changed", requestID, {contactID: message.contactID, reason: message.reason});
|
||||
break;
|
||||
|
||||
case "Android:Contact:Save:Return:KO":
|
||||
this._sendAndDeleteReturnMessage(returnMessageTopic, requestID, {requestID: requestID});
|
||||
break;
|
||||
|
||||
case "Android:Contact:Remove:Return:OK":
|
||||
this._sendReturnMessage(returnMessageTopic, requestID, {requestID: requestID, contactID: message.contactID});
|
||||
this._sendAndDeleteReturnMessage("Contact:Changed", requestID, {contactID: message.contactID, reason: "remove"});
|
||||
break;
|
||||
|
||||
case "Android:Contact:Remove:Return:KO":
|
||||
this._sendAndDeleteReturnMessage(returnMessageTopic, requestID, {requestID: requestID});
|
||||
break;
|
||||
|
||||
case "Android:Contacts:Clear:Return:OK":
|
||||
this._sendReturnMessage(returnMessageTopic, requestID, {requestID: requestID});
|
||||
this._sendAndDeleteReturnMessage("Contact:Changed", requestID, {reason: "remove"});
|
||||
break;
|
||||
|
||||
case "Android:Contact:Clear:Return:KO":
|
||||
this._sendAndDeleteReturnMessage(returnMessageTopic, requestID, {requestID: requestID});
|
||||
break;
|
||||
|
||||
case "Android:Contacts:GetAll:Next":
|
||||
// GetAll uses a cursor ID instead of a request ID. Translate the request ID back to the cursor ID
|
||||
this._sendReturnMessage(returnMessageTopic, requestID, {cursorId: requestID, contacts: message.contacts});
|
||||
|
||||
// Send a message with no contacts to denote the end of contacts returned by the query
|
||||
this._sendAndDeleteReturnMessage(returnMessageTopic, requestID, {cursorId: requestID});
|
||||
break;
|
||||
|
||||
case "Android:Contacts:Count":
|
||||
this._sendAndDeleteReturnMessage(returnMessageTopic, requestID, {requestID: requestID, count: message.count});
|
||||
break;
|
||||
|
||||
default:
|
||||
throw "Wrong message received: " + aTopic;
|
||||
}
|
||||
},
|
||||
|
||||
assertPermission: function(aMessage, aPerm) {
|
||||
if (!aMessage.target.assertPermission(aPerm)) {
|
||||
Cu.reportError("Contacts message " + aMessage.name +
|
||||
" from a content process with no" + aPerm + " privileges.");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
receiveMessage: function(aMessage) {
|
||||
if (DEBUG) debug("receiveMessage " + aMessage.name);
|
||||
|
||||
// GetAll uses a cursor ID instead of a request ID, but they can be treated the same from here
|
||||
if (!aMessage.data.requestID && aMessage.data.cursorId) {
|
||||
aMessage.data.requestID = aMessage.data.cursorId;
|
||||
}
|
||||
let requestID = aMessage.data.requestID;
|
||||
|
||||
// Store the message so it the request callback can be called when the Java side is finished
|
||||
this._requestMessages[requestID] = aMessage;
|
||||
|
||||
switch (aMessage.name) {
|
||||
case "Contacts:Find":
|
||||
this.findContacts(aMessage);
|
||||
break;
|
||||
|
||||
case "Contacts:GetAll":
|
||||
this.getAllContacts(aMessage);
|
||||
break;
|
||||
|
||||
case "Contacts:GetAll:SendNow":
|
||||
// Send an empty message to denote there are no most contacts for the getAll query
|
||||
this._sendAndDeleteReturnMessage("Contacts:GetAll:Next", requestID, {cursorId: requestID});
|
||||
break;
|
||||
|
||||
case "Contact:Save":
|
||||
this.saveContact(aMessage);
|
||||
break;
|
||||
|
||||
case "Contact:Remove":
|
||||
this.removeContact(aMessage);
|
||||
break;
|
||||
|
||||
case "Contacts:Clear":
|
||||
this.clearContacts(aMessage);
|
||||
break;
|
||||
|
||||
case "Contacts:GetCount":
|
||||
this.getContactsCount(aMessage);
|
||||
break;
|
||||
|
||||
case "Contacts:GetRevision":
|
||||
// Android does not support the get revision function
|
||||
this._sendAndDeleteReturnMessage("Contacts:GetRevision:Return:KO", requestID, {requestID: requestID,
|
||||
errorMsg: "Android does not support the revision function."});
|
||||
break;
|
||||
|
||||
case "Contacts:RegisterForMessages":
|
||||
delete this._requestMessages[requestID];
|
||||
break;
|
||||
|
||||
default:
|
||||
delete this._requestMessages[requestID];
|
||||
throw "Wrong message received: " + aMessage.name;
|
||||
}
|
||||
},
|
||||
|
||||
findContacts: function(aMessage) {
|
||||
if (!this.assertPermission(aMessage, "contacts-read")) {
|
||||
return;
|
||||
}
|
||||
|
||||
let countryName = PhoneNumberUtils.getCountryName();
|
||||
let substringmatchingPref = "dom.phonenumber.substringmatching." + countryName;
|
||||
let substringmatchingValue = 0;
|
||||
if (Services.prefs.getPrefType(substringmatchingPref) == Ci.nsIPrefBranch.PREF_INT) {
|
||||
substringmatchingValue = Services.prefs.getIntPref(substringmatchingPref);
|
||||
}
|
||||
|
||||
// Add the substring matching value to the find options JSON
|
||||
aMessage.data.options.findOptions.substringMatching = substringmatchingValue;
|
||||
|
||||
this._sendMessageToJava({type: "Android:Contacts:Find", data: aMessage.data});
|
||||
},
|
||||
|
||||
getAllContacts: function(aMessage) {
|
||||
if (!this.assertPermission(aMessage, "contacts-read")) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._sendMessageToJava({type: "Android:Contacts:GetAll", data: aMessage.data});
|
||||
},
|
||||
|
||||
saveContact: function(aMessage) {
|
||||
if ((aMessage.data.options.reason === "create" &&
|
||||
!this.assertPermission(aMessage, "contacts-create")) ||
|
||||
!this.assertPermission(aMessage, "contacts-write")) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._sendMessageToJava({type: "Android:Contact:Save", data: aMessage.data});
|
||||
},
|
||||
|
||||
removeContact: function(aMessage) {
|
||||
if (!this.assertPermission(aMessage, "contacts-write")) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._sendMessageToJava({type: "Android:Contact:Remove", data: aMessage.data});
|
||||
},
|
||||
|
||||
clearContacts: function(aMessage) {
|
||||
if (!this.assertPermission(aMessage, "contacts-write")) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._sendMessageToJava({type: "Android:Contacts:Clear", data: aMessage.data});
|
||||
},
|
||||
|
||||
getContactsCount: function(aMessage) {
|
||||
if (!this.assertPermission(aMessage, "contacts-read")) {
|
||||
return;
|
||||
}
|
||||
|
||||
this._sendMessageToJava({type: "Android:Contacts:GetCount", data: aMessage.data});
|
||||
},
|
||||
}
|
||||
|
||||
ContactService.init();
|
||||
|
|
@ -7,7 +7,6 @@
|
|||
EXTRA_JS_MODULES += [
|
||||
'Accounts.jsm',
|
||||
'AndroidLog.jsm',
|
||||
'ContactService.jsm',
|
||||
'dbg-browser-actors.js',
|
||||
'DelayedInit.jsm',
|
||||
'DownloadNotifications.jsm',
|
||||
|
|
|
|||
Loading…
Reference in a new issue