merge b2g-inbound to mozilla-central

This commit is contained in:
Carsten "Tomcat" Book 2014-02-24 12:55:53 +01:00
commit 870d0dbfe4
17 changed files with 332 additions and 173 deletions

View File

@ -12,7 +12,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d11f524d00cacf5ba0dfbf25e4aa2158b1c3a036"/>

View File

@ -11,7 +11,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="3d5c964015967ca8c86abe6dbbebee3cb82b1609"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="a314508e397c8f1814228d36259ea8708034444e"/>

View File

@ -12,7 +12,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d11f524d00cacf5ba0dfbf25e4aa2158b1c3a036"/>

View File

@ -1,4 +1,4 @@
{
"revision": "894a7f2886a7a727ce03edadbbea936ceb4aaeba",
"revision": "35ef07425e808811af0462a6ba08c36409236846",
"repo_path": "/integration/gaia-central"
}

View File

@ -11,7 +11,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>

View File

@ -10,7 +10,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>

View File

@ -12,7 +12,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>

View File

@ -11,7 +11,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>

View File

@ -11,7 +11,7 @@
</project>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="3d5c964015967ca8c86abe6dbbebee3cb82b1609"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="a314508e397c8f1814228d36259ea8708034444e"/>

View File

@ -11,7 +11,7 @@
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="ffb527b84594396ed611edf0a8a5a130d60a742f"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="0eadf61ef60f13324fe8290d8c2b516d98230fdc"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>

View File

@ -41,7 +41,7 @@
var iframe = document.createElement("iframe");
iframe.setAttribute("mozbrowser", "true");
iframe.setAttribute("ignoreuserfocus", "true");
iframe.setAttribute("height", "500px");
iframe.setAttribute("height", "300px");
iframe.setAttribute("src", "file_ignoreuserfocus.html");
iframe.addEventListener('load', function (e) {
@ -102,7 +102,6 @@
// Test the case when iframe contains <area> and .focus()
// is called and explicit focus using mouse
witness.focus();
// Wait for paint to setup frame for area. Currently the area frame
// map is reset for each paint. If we are in the middle of a paint
@ -126,7 +125,12 @@
SimpleTest.finish();
});
witness.focus();
// force reflow
var reflow = iframe.offsetLeft;
});
// force reflow
var reflow = iframe.offsetLeft;
});
document.body.appendChild(witness);

View File

@ -143,8 +143,9 @@ interface nsIDOMMozMobileConnection : nsIDOMEventTarget
* @param type
* DOMString indicates the desired preferred network type.
* Possible values: 'wcdma/gsm', 'gsm', 'wcdma', 'wcdma/gsm-auto',
* 'cdma/evdo', 'cdma', 'evdo', or
* 'wcdma/gsm/cdma/evdo'.
* 'cdma/evdo', 'cdma', 'evdo', 'wcdma/gsm/cdma/evdo',
* 'lte/cdma/evdo', 'lte/wcdma/gsm',
* 'lte/wcdma/gsm/cdma/evdo' or 'lte'.
*
* If successful, the request's onsuccess will be called.
*
@ -163,7 +164,8 @@ interface nsIDOMMozMobileConnection : nsIDOMEventTarget
* If successful, the request's onsuccess will be called. And the request's
* result will be a string indicating the current preferred network type.
* The value will be either 'wcdma/gsm', 'gsm', 'wcdma', 'wcdma/gsm-auto',
* 'cdma/evdo', 'cdma', 'evdo', or 'wcdma/gsm/cdma/evdo'.
* 'cdma/evdo', 'cdma', 'evdo', 'wcdma/gsm/cdma/evdo', 'lte/cdma/evdo',
* 'lte/wcdma/gsm', 'lte/wcdma/gsm/cdma/evdo' or 'lte'.
*
* Otherwise, the request's onerror will be called, and the request's error
* will be either 'RadioNotAvailable', 'RequestNotSupported',

View File

@ -2,15 +2,57 @@
http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = "mobile_header.js";
SpecialPowers.addPermission("mobileconnection", true, document);
function doSetAndVerifyPreferredNetworkType(preferredNetworkType, callback) {
log("setPreferredNetworkType to '" + preferredNetworkType + "'.");
let setRequest = mobileConnection.setPreferredNetworkType(preferredNetworkType);
ok(setRequest instanceof DOMRequest,
"setRequest instanceof " + setRequest.constructor);
let connection = navigator.mozMobileConnections[0];
ok(connection instanceof MozMobileConnection,
"connection is instanceof " + connection.constructor);
setRequest.onsuccess = function() {
log("Verify preferred network.");
let getRequest = mobileConnection.getPreferredNetworkType();
ok(getRequest instanceof DOMRequest,
"getRequest instanceof " + getRequest.constructor);
function testSupportedNetworkTypes() {
let supportedNetworkTypes = connection.supportedNetworkTypes;
getRequest.onsuccess = function() {
is(getRequest.result, preferredNetworkType, "Check preferred network type.");
callback();
};
getRequest.onerror = function() {
ok(false, "getPreferredNetworkType got error: " + getRequest.error.name);
callback();
};
};
setRequest.onerror = function() {
ok(false, "setPreferredNetwork got error: " + setRequest.error.name);
callback();
};
}
function doFailToSetPreferredNetworkType(preferredNetworkType, expectedError, callback) {
log("setPreferredNetworkType to '" + preferredNetworkType + "'.");
let request = mobileConnection.setPreferredNetworkType(preferredNetworkType);
ok(request instanceof DOMRequest,
"request instanceof " + request.constructor);
request.onsuccess = function() {
ok(false, "Should not success");
callback();
};
request.onerror = function() {
is(request.error.name, expectedError, "Check error message.");
callback();
};
}
/* Test supportedNetworkTypes */
taskHelper.push(function testSupportedNetworkTypes() {
let supportedNetworkTypes = mobileConnection.supportedNetworkTypes;
ok(Array.isArray(supportedNetworkTypes), "supportedNetworkTypes should be an array");
ok(supportedNetworkTypes.indexOf("gsm") >= 0, "Should support 'gsm'");
@ -18,136 +60,72 @@ function testSupportedNetworkTypes() {
ok(supportedNetworkTypes.indexOf("cdma") >= 0, "Should support 'cdma'");
ok(supportedNetworkTypes.indexOf("evdo") >= 0, "Should support 'evdo'");
runNextTest();
}
taskHelper.runNext();
});
function setPreferredNetworkType(type, callback) {
log("setPreferredNetworkType: " + type);
/* Test switching to supported preferred types */
taskHelper.push(function testPreferredNetworkTypes() {
let supportedTypes = [
'gsm',
'wcdma',
'wcdma/gsm-auto',
'cdma/evdo',
'evdo',
'cdma',
'wcdma/gsm/cdma/evdo',
// Restore to default
'wcdma/gsm'
];
let request = connection.setPreferredNetworkType(type);
ok(request instanceof DOMRequest,
"request instanceof " + request.constructor);
// Run all test data.
(function do_call() {
let type = supportedTypes.shift();
if (!type) {
taskHelper.runNext();
return;
}
doSetAndVerifyPreferredNetworkType(type, do_call);
})();
});
request.onsuccess = function onsuccess() {
ok(true, "request success");
callback();
}
request.onerror = function onerror() {
ok(false, request.error);
callback();
}
}
/* Test switching to unsupported preferred types */
taskHelper.push(function testUnsupportedPreferredNetworkTypes() {
// Currently emulator doesn't support lte network
let unsupportedTypes = [
'lte/cdma/evdo',
'lte/wcdma/gsm',
'lte/wcdma/gsm/cdma/evdo',
'lte'
];
function getPreferredNetworkType(callback) {
log("getPreferredNetworkType");
// Run all test data.
(function do_call() {
let type = unsupportedTypes.shift();
if (!type) {
taskHelper.runNext();
return;
}
doFailToSetPreferredNetworkType(type, "ModeNotSupported", do_call);
})();
});
let request = connection.getPreferredNetworkType();
ok(request instanceof DOMRequest,
"request instanceof " + request.constructor);
/* Test switching to invalid preferred types */
taskHelper.push(function testInvalidPreferredNetworkTypes() {
let invalidTypes = [
' ',
'AnInvalidType'
];
request.onsuccess = function onsuccess() {
ok(true, "request success");
log("getPreferredNetworkType: " + request.result);
callback(request.result);
}
request.onerror = function onerror() {
ok(false, request.error);
callback();
}
}
// Run all test data.
(function do_call() {
let type = invalidTypes.shift();
if (!type) {
taskHelper.runNext();
return;
}
doFailToSetPreferredNetworkType(type, "InvalidParameter", do_call);
})();
});
function failToSetPreferredNetworkType(type, expectedError, callback) {
log("failToSetPreferredNetworkType: " + type + ", expected error: "
+ expectedError);
let request = connection.setPreferredNetworkType(type);
ok(request instanceof DOMRequest,
"request instanceof " + request.constructor);
request.onsuccess = function onsuccess() {
ok(false, "request should not succeed");
callback();
}
request.onerror = function onerror() {
ok(true, "request error");
is(request.error.name, expectedError);
callback();
}
}
function setAndVerifyNetworkType(type) {
setPreferredNetworkType(type, function() {
getPreferredNetworkType(function(result) {
is(result, type);
testPreferredNetworkTypes();
});
});
}
function testPreferredNetworkTypes() {
let networkType = supportedTypes.shift();
if (!networkType) {
runNextTest();
return;
}
setAndVerifyNetworkType(networkType);
}
function failToSetAndVerifyNetworkType(type, expectedError, previousType) {
failToSetPreferredNetworkType(type, expectedError, function() {
getPreferredNetworkType(function(result) {
// should return the previous selected type.
is(result, previousType);
testInvalidNetworkTypes();
});
});
}
function testInvalidNetworkTypes() {
let networkType = invalidTypes.shift();
if (!networkType) {
runNextTest();
return;
}
failToSetAndVerifyNetworkType(networkType, "InvalidParameter",
"wcdma/gsm");
}
let supportedTypes = [
'gsm',
'wcdma',
'wcdma/gsm-auto',
'cdma/evdo',
'evdo',
'cdma',
'wcdma/gsm/cdma/evdo',
'wcdma/gsm' // restore to default
];
let invalidTypes = [
' ',
'AnInvalidType'
];
let tests = [
testSupportedNetworkTypes,
testPreferredNetworkTypes,
testInvalidNetworkTypes
];
function runNextTest() {
let test = tests.shift();
if (!test) {
cleanUp();
return;
}
test();
}
function cleanUp() {
SpecialPowers.removePermission("mobileconnection", document);
finish();
}
runNextTest();
// Start test
taskHelper.runNext();

View File

@ -412,6 +412,10 @@ this.GECKO_PREFERRED_NETWORK_TYPE_CDMA_EVDO = "cdma/evdo";
this.GECKO_PREFERRED_NETWORK_TYPE_CDMA_ONLY = "cdma";
this.GECKO_PREFERRED_NETWORK_TYPE_EVDO_ONLY = "evdo";
this.GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM_CDMA_EVDO = "wcdma/gsm/cdma/evdo";
this.GECKO_PREFERRED_NETWORK_TYPE_LTE_CDMA_EVDO = "lte/cdma/evdo";
this.GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM = "lte/wcdma/gsm";
this.GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM_CDMA_EVDO = "lte/wcdma/gsm/cdma/evdo";
this.GECKO_PREFERRED_NETWORK_TYPE_LTE_ONLY = "lte";
this.GECKO_PREFERRED_NETWORK_TYPE_DEFAULT = GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM;
this.RIL_PREFERRED_NETWORK_TYPE_TO_GECKO = [
GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM,
@ -421,7 +425,11 @@ this.RIL_PREFERRED_NETWORK_TYPE_TO_GECKO = [
GECKO_PREFERRED_NETWORK_TYPE_CDMA_EVDO,
GECKO_PREFERRED_NETWORK_TYPE_CDMA_ONLY,
GECKO_PREFERRED_NETWORK_TYPE_EVDO_ONLY,
GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM_CDMA_EVDO
GECKO_PREFERRED_NETWORK_TYPE_WCDMA_GSM_CDMA_EVDO,
GECKO_PREFERRED_NETWORK_TYPE_LTE_CDMA_EVDO,
GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM,
GECKO_PREFERRED_NETWORK_TYPE_LTE_WCDMA_GSM_CDMA_EVDO,
GECKO_PREFERRED_NETWORK_TYPE_LTE_ONLY
];
this.GECKO_SUPPORTED_NETWORK_TYPES_DEFAULT = "gsm,wcdma,cdma,evdo";
@ -2442,14 +2450,26 @@ this.GECKO_CARDSTATE_PERSONALIZATION_IN_PROGRESS = "personalizationInProgress"
this.GECKO_CARDSTATE_PERSONALIZATION_READY = "personalizationReady";
this.GECKO_CARDSTATE_NETWORK_LOCKED = "networkLocked";
this.GECKO_CARDSTATE_NETWORK_SUBSET_LOCKED = "networkSubsetLocked";
this.GECKO_CARDSTATE_NETWORK1_LOCKED = "network1Locked";
this.GECKO_CARDSTATE_NETWORK2_LOCKED = "network2Locked";
this.GECKO_CARDSTATE_HRPD_NETWORK_LOCKED = "hrpdNetworkLocked";
this.GECKO_CARDSTATE_CORPORATE_LOCKED = "corporateLocked";
this.GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED = "serviceProviderLocked";
this.GECKO_CARDSTATE_SIM_LOCKED = "simPersonalizationLock";
this.GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED = "ruimCorporateLocked";
this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED = "ruimServiceProviderLocked";
this.GECKO_CARDSTATE_RUIM_LOCKED = "ruimPersonalizationLock";
this.GECKO_CARDSTATE_NETWORK_PUK_REQUIRED = "networkPukRequired";
this.GECKO_CARDSTATE_NETWORK_SUBSET_PUK_REQUIRED = "networkSubsetPukRequired";
this.GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED = "network1PukRequired";
this.GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED = "network2PukRequired";
this.GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED = "hrpdNetworkPukRequired";
this.GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED = "corporatePukRequired";
this.GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED = "serviceProviderPukRequired";
this.GECKO_CARDSTATE_SIM_PUK_REQUIRED = "simPersonalizationPukRequired";
this.GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED = "ruimCorporatePukRequired";
this.GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED = "ruimServiceProviderPukRequired";
this.GECKO_CARDSTATE_RUIM_PUK_REQUIRED = "ruimPersonalizationPukRequired";
this.GECKO_CARDSTATE_READY = "ready";
this.GECKO_CARDSTATE_PERMANENT_BLOCKED = "permanentBlocked";
@ -2459,11 +2479,21 @@ this.GECKO_CARDLOCK_PUK = "puk";
this.GECKO_CARDLOCK_PUK2 = "puk2";
this.GECKO_CARDLOCK_FDN = "fdn";
this.GECKO_CARDLOCK_NCK = "nck";
this.GECKO_CARDLOCK_NCK1 = "nck1";
this.GECKO_CARDLOCK_NCK2 = "nck2";
this.GECKO_CARDLOCK_HNCK = "hnck";
this.GECKO_CARDLOCK_CCK = "cck";
this.GECKO_CARDLOCK_SPCK = "spck";
this.GECKO_CARDLOCK_RCCK = "rcck";
this.GECKO_CARDLOCK_RSPCK = "rspck";
this.GECKO_CARDLOCK_NCK_PUK = "nckPuk";
this.GECKO_CARDLOCK_NCK1_PUK = "nck1Puk";
this.GECKO_CARDLOCK_NCK2_PUK = "nck2Puk";
this.GECKO_CARDLOCK_HNCK_PUK = "hnckPuk";
this.GECKO_CARDLOCK_CCK_PUK = "cckPuk";
this.GECKO_CARDLOCK_SPCK_PUK = "spckPuk";
this.GECKO_CARDLOCK_RCCK_PUK = "rcckPuk";
this.GECKO_CARDLOCK_RSPCK_PUK = "rspckPuk";
// See ril.h RIL_PersoSubstate
this.PERSONSUBSTATE = {};
@ -2479,14 +2509,36 @@ PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_PUK] = GECKO_CARDSTATE_NETWORK_PUK
PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_NETWORK_SUBSET_PUK] = GECKO_CARDSTATE_NETWORK_SUBSET_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK] = GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK] = GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK1] = GECKO_CARDSTATE_NETWORK1_LOCKED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK2] = GECKO_CARDSTATE_NETWORK2_LOCKED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_HRPD] = GECKO_CARDSTATE_HRPD_NETWORK_LOCKED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_CORPORATE] = GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER] = GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_RUIM] = GECKO_CARDSTATE_RUIM_LOCKED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK] = GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK] = GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_HRPD_PUK] = GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK] = GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK] = GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED;
PERSONSUBSTATE[CARD_PERSOSUBSTATE_RUIM_RUIM_PUK] = GECKO_CARDSTATE_RUIM_PUK_REQUIRED;
this.GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK = {};
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK] = CARD_PERSOSUBSTATE_SIM_NETWORK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK1] = CARD_PERSOSUBSTATE_RUIM_NETWORK1;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK2] = CARD_PERSOSUBSTATE_RUIM_NETWORK2;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_HNCK] = CARD_PERSOSUBSTATE_RUIM_HRPD;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_CCK] = CARD_PERSOSUBSTATE_SIM_CORPORATE;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_SPCK] = CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RCCK] = CARD_PERSOSUBSTATE_RUIM_CORPORATE;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RSPCK] = CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK_PUK] = CARD_PERSOSUBSTATE_SIM_NETWORK_PUK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK1_PUK] = CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_NCK2_PUK] = CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_HNCK_PUK] = CARD_PERSOSUBSTATE_RUIM_HRPD_PUK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_CCK_PUK] = CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_SPCK_PUK] = CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RCCK_PUK] = CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK;
GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[GECKO_CARDLOCK_RSPCK_PUK] = CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK;
this.GECKO_NETWORK_SELECTION_UNKNOWN = null;
this.GECKO_NETWORK_SELECTION_AUTOMATIC = "automatic";

View File

@ -487,15 +487,25 @@ RilObject.prototype = {
this.enterICCPUK2(options);
break;
case GECKO_CARDLOCK_NCK:
case GECKO_CARDLOCK_CCK: // Fall through.
case GECKO_CARDLOCK_SPCK: {
case GECKO_CARDLOCK_NCK1:
case GECKO_CARDLOCK_NCK2:
case GECKO_CARDLOCK_HNCK:
case GECKO_CARDLOCK_CCK:
case GECKO_CARDLOCK_SPCK:
case GECKO_CARDLOCK_RCCK: // Fall through.
case GECKO_CARDLOCK_RSPCK: {
let type = GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[options.lockType];
this.enterDepersonalization(type, options.pin, options);
break;
}
case GECKO_CARDLOCK_NCK_PUK:
case GECKO_CARDLOCK_CCK_PUK: // Fall through.
case GECKO_CARDLOCK_SPCK_PUK: {
case GECKO_CARDLOCK_NCK1_PUK:
case GECKO_CARDLOCK_NCK2_PUK:
case GECKO_CARDLOCK_HNCK_PUK:
case GECKO_CARDLOCK_CCK_PUK:
case GECKO_CARDLOCK_SPCK_PUK:
case GECKO_CARDLOCK_RCCK_PUK: // Fall through.
case GECKO_CARDLOCK_RSPCK_PUK: {
let type = GECKO_PERSO_LOCK_TO_CARD_PERSO_LOCK[options.lockType];
this.enterDepersonalization(type, options.puk, options);
break;

View File

@ -2109,10 +2109,11 @@ add_test(function test_personalization_state() {
context.ICCRecordHelper.readICCID = function fakeReadICCID() {};
function testPersonalization(cardPersoState, geckoCardState) {
function testPersonalization(isCdma, cardPersoState, geckoCardState) {
let iccStatus = {
cardState: CARD_STATE_PRESENT,
gsmUmtsSubscriptionAppIndex: 0,
gsmUmtsSubscriptionAppIndex: (!isCdma) ? 0 : -1,
cdmaSubscriptionAppIndex: (isCdma) ? 0 : -1,
apps: [
{
app_state: CARD_APPSTATE_SUBSCRIPTION_PERSO,
@ -2120,25 +2121,53 @@ add_test(function test_personalization_state() {
}],
};
ril._isCdma = isCdma;
ril._processICCStatus(iccStatus);
do_check_eq(ril.cardState, geckoCardState);
}
testPersonalization(CARD_PERSOSUBSTATE_SIM_NETWORK,
// Test GSM personalization state.
testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK,
GECKO_CARDSTATE_NETWORK_LOCKED);
testPersonalization(CARD_PERSOSUBSTATE_SIM_CORPORATE,
testPersonalization(false, CARD_PERSOSUBSTATE_SIM_CORPORATE,
GECKO_CARDSTATE_CORPORATE_LOCKED);
testPersonalization(CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER,
testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER,
GECKO_CARDSTATE_SERVICE_PROVIDER_LOCKED);
testPersonalization(CARD_PERSOSUBSTATE_SIM_NETWORK_PUK,
testPersonalization(false, CARD_PERSOSUBSTATE_SIM_NETWORK_PUK,
GECKO_CARDSTATE_NETWORK_PUK_REQUIRED);
testPersonalization(CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK,
testPersonalization(false, CARD_PERSOSUBSTATE_SIM_CORPORATE_PUK,
GECKO_CARDSTATE_CORPORATE_PUK_REQUIRED);
testPersonalization(CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK,
testPersonalization(false, CARD_PERSOSUBSTATE_SIM_SERVICE_PROVIDER_PUK,
GECKO_CARDSTATE_SERVICE_PROVIDER_PUK_REQUIRED);
testPersonalization(CARD_PERSOSUBSTATE_READY,
testPersonalization(false, CARD_PERSOSUBSTATE_READY,
GECKO_CARDSTATE_PERSONALIZATION_READY);
// Test CDMA personalization state.
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK1,
GECKO_CARDSTATE_NETWORK1_LOCKED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK2,
GECKO_CARDSTATE_NETWORK2_LOCKED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_HRPD,
GECKO_CARDSTATE_HRPD_NETWORK_LOCKED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_CORPORATE,
GECKO_CARDSTATE_RUIM_CORPORATE_LOCKED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER,
GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_LOCKED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_RUIM,
GECKO_CARDSTATE_RUIM_LOCKED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK1_PUK,
GECKO_CARDSTATE_NETWORK1_PUK_REQUIRED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_NETWORK2_PUK,
GECKO_CARDSTATE_NETWORK2_PUK_REQUIRED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_HRPD_PUK,
GECKO_CARDSTATE_HRPD_NETWORK_PUK_REQUIRED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_CORPORATE_PUK,
GECKO_CARDSTATE_RUIM_CORPORATE_PUK_REQUIRED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_SERVICE_PROVIDER_PUK,
GECKO_CARDSTATE_RUIM_SERVICE_PROVIDER_PUK_REQUIRED);
testPersonalization(true, CARD_PERSOSUBSTATE_RUIM_RUIM_PUK,
GECKO_CARDSTATE_RUIM_PUK_REQUIRED);
run_next_test();
});
@ -2296,11 +2325,21 @@ add_test(function test_unlock_card_lock_corporateLocked() {
let GECKO_CARDLOCK_TO_PASSWORD_TYPE = {};
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_NCK] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_NCK1] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_NCK2] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_HNCK] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_CCK] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_SPCK] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_RCCK] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_RSPCK] = "pin";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_NCK_PUK] = "puk";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_NCK1_PUK] = "puk";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_NCK2_PUK] = "puk";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_HNCK_PUK] = "puk";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_CCK_PUK] = "puk";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_SPCK_PUK] = "puk";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_RCCK_PUK] = "puk";
GECKO_CARDLOCK_TO_PASSWORD_TYPE[GECKO_CARDLOCK_RSPCK_PUK] = "puk";
function do_test(aLock, aPassword) {
buf.sendParcel = function fakeSendParcel () {
@ -2324,11 +2363,21 @@ add_test(function test_unlock_card_lock_corporateLocked() {
}
do_test(GECKO_CARDLOCK_NCK, pin);
do_test(GECKO_CARDLOCK_NCK1, pin);
do_test(GECKO_CARDLOCK_NCK2, pin);
do_test(GECKO_CARDLOCK_HNCK, pin);
do_test(GECKO_CARDLOCK_CCK, pin);
do_test(GECKO_CARDLOCK_SPCK, pin);
do_test(GECKO_CARDLOCK_RCCK, pin);
do_test(GECKO_CARDLOCK_RSPCK, pin);
do_test(GECKO_CARDLOCK_NCK_PUK, puk);
do_test(GECKO_CARDLOCK_NCK1_PUK, puk);
do_test(GECKO_CARDLOCK_NCK2_PUK, puk);
do_test(GECKO_CARDLOCK_HNCK_PUK, puk);
do_test(GECKO_CARDLOCK_CCK_PUK, puk);
do_test(GECKO_CARDLOCK_SPCK_PUK, puk);
do_test(GECKO_CARDLOCK_RCCK_PUK, puk);
do_test(GECKO_CARDLOCK_RSPCK_PUK, puk);
run_next_test();
});

View File

@ -29,11 +29,15 @@ interface MozIcc : EventTarget
/**
* Indicates the state of the device's ICC.
*
* Possible values: 'illegal', 'unknown', 'pinRequired',
* 'pukRequired', 'personalizationInProgress', 'networkLocked',
* 'corporateLocked', 'serviceProviderLocked', 'networkPukRequired',
* 'corporatePukRequired', 'serviceProviderPukRequired',
* 'personalizationReady', 'ready', 'permanentBlocked'.
* Possible values: 'illegal', 'unknown', 'pinRequired', 'pukRequired',
* 'personalizationInProgress', 'networkLocked', 'network1Locked',
* 'network2Locked', 'hrpdNetworkLocked', 'corporateLocked',
* 'serviceProviderLocked', 'ruimCorporateLocked', 'ruimServiceProviderLocked',
* 'networkPukRequired', 'network1PukRequired', 'network2PukRequired',
* 'hrpdNetworkPukRequired', 'corporatePukRequired',
* 'serviceProviderPukRequired', 'ruimCorporatePukRequired',
* 'ruimServiceProviderPukRequired', 'personalizationReady', 'ready',
* 'permanentBlocked'.
*
* Once the ICC becomes undetectable, cardstatechange event will be notified.
* Also, the attribute is set to null and this MozIcc object becomes invalid.
@ -159,34 +163,94 @@ interface MozIcc : EventTarget
* unlockCardLock({lockType: "nck",
* pin: "..."});
*
* (4) Corporate depersonalization. Unlocking the corporate control key (CCK).
* (4) Network type 1 depersonalization. Unlocking the network type 1 control
* key (NCK1).
*
* unlockCardLock({lockType: "nck1",
* pin: "..."});
*
* (5) Network type 2 depersonalization. Unlocking the network type 2 control
* key (NCK2).
*
* unlockCardLock({lockType: "nck2",
* pin: "..."});
*
* (6) HRPD network depersonalization. Unlocking the HRPD network control key
* (HNCK).
*
* unlockCardLock({lockType: "hnck",
* pin: "..."});
*
* (7) Corporate depersonalization. Unlocking the corporate control key (CCK).
*
* unlockCardLock({lockType: "cck",
* pin: "..."});
*
* (5) Service Provider depersonalization. Unlocking the service provider
* (8) Service provider depersonalization. Unlocking the service provider
* control key (SPCK).
*
* unlockCardLock({lockType: "spck",
* pin: "..."});
*
* (6) Network PUK depersonalization. Unlocking the network control key (NCK).
* (9) RUIM corporate depersonalization. Unlocking the RUIM corporate control
* key (RCCK).
*
* unlockCardLock({lockType: "rcck",
* pin: "..."});
*
* (10) RUIM service provider depersonalization. Unlocking the RUIM service
* provider control key (RSPCK).
*
* unlockCardLock({lockType: "rspck",
* pin: "..."});
*
* (11) Network PUK depersonalization. Unlocking the network control key (NCK).
*
* unlockCardLock({lockType: "nckPuk",
* puk: "..."});
*
* (7) Corporate PUK depersonalization. Unlocking the corporate control key
* (CCK).
* (12) Network type 1 PUK depersonalization. Unlocking the network type 1
* control key (NCK1).
*
* unlockCardLock({lockType: "nck1Puk",
* pin: "..."});
*
* (13) Network type 2 PUK depersonalization. Unlocking the Network type 2
* control key (NCK2).
*
* unlockCardLock({lockType: "nck2Puk",
* pin: "..."});
*
* (14) HRPD network PUK depersonalization. Unlocking the HRPD network control
* key (HNCK).
*
* unlockCardLock({lockType: "hnckPuk",
* pin: "..."});
*
* (15) Corporate PUK depersonalization. Unlocking the corporate control key
* (CCK).
*
* unlockCardLock({lockType: "cckPuk",
* puk: "..."});
*
* (8) Service Provider PUK depersonalization. Unlocking the service provider
* control key (SPCK).
* (16) Service provider PUK depersonalization. Unlocking the service provider
* control key (SPCK).
*
* unlockCardLock({lockType: "spckPuk",
* puk: "..."});
*
* (17) RUIM corporate PUK depersonalization. Unlocking the RUIM corporate
* control key (RCCK).
*
* unlockCardLock({lockType: "rcckPuk",
* puk: "..."});
*
* (18) RUIM service provider PUK depersonalization. Unlocking the service
* provider control key (SPCK).
*
* unlockCardLock({lockType: "rspckPuk",
* puk: "..."});
*
* @return a DOMRequest.
* The request's result will be an object containing
* information about the unlock operation.