merge b2g-inbound to mozilla-central a=merge

This commit is contained in:
Carsten "Tomcat" Book 2014-06-25 15:38:40 +02:00
commit ff26ea326c
119 changed files with 2814 additions and 3346 deletions

View File

@ -19,13 +19,13 @@
<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="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/>
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="3326b51017252e09ccdd715dec6c5e12a7d1ecfe"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="c510babaf88dfa2cfe2c202afb2649ee124569af"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<!-- Stock Android things -->
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
<project name="platform/bionic" path="bionic" revision="c72b8f6359de7ed17c11ddc9dfdde3f615d188a9"/>

View File

@ -17,10 +17,10 @@
</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="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="c510babaf88dfa2cfe2c202afb2649ee124569af"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
<!-- Stock Android things -->
@ -128,7 +128,7 @@
<project name="device/generic/armv7-a-neon" path="device/generic/armv7-a-neon" revision="3a9a17613cc685aa232432566ad6cc607eab4ec1"/>
<project name="device_generic_goldfish" path="device/generic/goldfish" remote="b2g" revision="0e31f35a2a77301e91baa8a237aa9e9fa4076084"/>
<project name="platform/external/libnfc-nci" path="external/libnfc-nci" revision="7d33aaf740bbf6c7c6e9c34a92b371eda311b66b"/>
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="346c7694b156a3933f3d87cbc077c657e2ce571f"/>
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="bfbb47844a20625d9bb6c9212fa554d7808bd58e"/>
<project name="platform/external/wpa_supplicant_8" path="external/wpa_supplicant_8" revision="0e56e450367cd802241b27164a2979188242b95f"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="832f4acaf481a19031e479a40b03d9ce5370ddee"/>
<project name="platform_system_nfcd" path="system/nfcd" remote="b2g" revision="d0aa65b140a45016975ed0ecf35f280dd336e1d3"/>

View File

@ -15,7 +15,7 @@
<project name="platform_build" path="build" remote="b2g" revision="276ce45e78b09c4a4ee643646f691d22804754c1">
<copyfile dest="Makefile" src="core/root.mk"/>
</project>
<project name="gaia" path="gaia" remote="mozillaorg" revision="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
@ -23,7 +23,7 @@
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<!-- Stock Android things -->
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/i686-linux-glibc2.7-4.6" revision="f92a936f2aa97526d4593386754bdbf02db07a12"/>
<project groups="linux" name="platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" path="prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6" revision="6e47ff2790f5656b5b074407829ceecf3e6188c4"/>

View File

@ -19,13 +19,13 @@
<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="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="cd88d860656c31c7da7bb310d6a160d0011b0961"/>
<project name="platform_external_qemu" path="external/qemu" remote="b2g" revision="3326b51017252e09ccdd715dec6c5e12a7d1ecfe"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="c510babaf88dfa2cfe2c202afb2649ee124569af"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<!-- Stock Android things -->
<project name="platform/abi/cpp" path="abi/cpp" revision="dd924f92906085b831bf1cbbc7484d3c043d613c"/>
<project name="platform/bionic" path="bionic" revision="c72b8f6359de7ed17c11ddc9dfdde3f615d188a9"/>

View File

@ -17,10 +17,10 @@
</project>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="c510babaf88dfa2cfe2c202afb2649ee124569af"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
<!-- Stock Android things -->

View File

@ -4,6 +4,6 @@
"remote": "",
"branch": ""
},
"revision": "4073b397d7b5d37ae81ced569e4af7c734defe68",
"revision": "d2f6eae6c726c9e470bbd8f980e9d5c816cf49f2",
"repo_path": "/integration/gaia-central"
}

View File

@ -17,12 +17,12 @@
<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="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="c510babaf88dfa2cfe2c202afb2649ee124569af"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<!-- Stock Android things -->
<project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>
<project name="platform/bionic" path="bionic" revision="d2eb6c7b6e1bc7643c17df2d9d9bcb1704d0b9ab"/>

View File

@ -15,7 +15,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="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>

View File

@ -17,10 +17,10 @@
</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="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="c510babaf88dfa2cfe2c202afb2649ee124569af"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<project name="valgrind" path="external/valgrind" remote="b2g" revision="daa61633c32b9606f58799a3186395fd2bbb8d8c"/>
<project name="vex" path="external/VEX" remote="b2g" revision="47f031c320888fe9f3e656602588565b52d43010"/>
<!-- Stock Android things -->

View File

@ -17,12 +17,12 @@
<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="57da30f405ba37a5d4844f32bb292271b81faee2"/>
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="1bcd355855626640b2532f2ccb1f814711f7a6ad"/>
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="bbb7659d8ea2afb396f99b3dc971ab3c42da3778"/>
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
<project name="librecovery" path="librecovery" remote="b2g" revision="891e5069c0ad330d8191bf8c7b879c814258c89f"/>
<project name="moztt" path="external/moztt" remote="b2g" revision="c510babaf88dfa2cfe2c202afb2649ee124569af"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b5e21ed930860a0d43728b556b09e8dedd27fdeb"/>
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="6f0e303999894aa657d3863dbaf00e4aa002b3ed"/>
<project name="gonk-patches" path="patches" remote="b2g" revision="223a2421006e8f5da33f516f6891c87cae86b0f6"/>
<!-- Stock Android things -->
<project name="platform/abi/cpp" path="abi/cpp" revision="6426040f1be4a844082c9769171ce7f5341a5528"/>

View File

@ -1,11 +1,11 @@
fuzzy-if(Android,105,482) random-if(B2G&&browserIsRemote) == toblob-quality-0.html quality-0-ref.html
fuzzy-if(Android,38,2024) random-if(B2G&&browserIsRemote) == toblob-quality-25.html quality-25-ref.html
fuzzy-if(Android,29,2336) random-if(B2G&&browserIsRemote) == toblob-quality-50.html quality-50-ref.html
fuzzy-if(Android,23,3533) random-if(B2G&&browserIsRemote) == toblob-quality-75.html quality-75-ref.html
fuzzy-if(Android,16,4199) random-if(B2G&&browserIsRemote) == toblob-quality-92.html quality-92-ref.html
fuzzy-if(Android,8,2461) random-if(B2G&&browserIsRemote) == toblob-quality-100.html quality-100-ref.html
fuzzy-if(Android,16,4199) random-if(B2G&&browserIsRemote) == toblob-quality-undefined.html quality-92-ref.html
fuzzy-if(Android,16,4199) random-if(B2G&&browserIsRemote) == toblob-quality-default.html quality-92-ref.html
fuzzy-if(Android,105,482) == toblob-quality-0.html quality-0-ref.html
fuzzy-if(Android,38,2024) == toblob-quality-25.html quality-25-ref.html
fuzzy-if(Android,29,2336) == toblob-quality-50.html quality-50-ref.html
fuzzy-if(Android,23,3533) == toblob-quality-75.html quality-75-ref.html
fuzzy-if(Android,16,4199) == toblob-quality-92.html quality-92-ref.html
fuzzy-if(Android,8,2461) == toblob-quality-100.html quality-100-ref.html
fuzzy-if(Android,16,4199) == toblob-quality-undefined.html quality-92-ref.html
fuzzy-if(Android,16,4199) == toblob-quality-default.html quality-92-ref.html
fuzzy-if(Android,105,482) == todataurl-quality-0.html quality-0-ref.html
fuzzy-if(Android,38,2024) == todataurl-quality-25.html quality-25-ref.html
fuzzy-if(Android,29,2336) == todataurl-quality-50.html quality-50-ref.html

View File

@ -1560,7 +1560,7 @@ Navigator::RequestWakeLock(const nsAString &aTopic, ErrorResult& aRv)
return pmService->NewWakeLock(aTopic, mWindow, aRv);
}
nsIDOMMozMobileMessageManager*
MobileMessageManager*
Navigator::GetMozMobileMessage()
{
if (!mMobileMessageManager) {
@ -1568,8 +1568,8 @@ Navigator::GetMozMobileMessage()
NS_ENSURE_TRUE(mWindow, nullptr);
NS_ENSURE_TRUE(mWindow->GetDocShell(), nullptr);
mMobileMessageManager = new MobileMessageManager();
mMobileMessageManager->Init(mWindow);
mMobileMessageManager = new MobileMessageManager(mWindow);
mMobileMessageManager->Init();
}
return mMobileMessageManager;

View File

@ -22,7 +22,6 @@
class nsPluginArray;
class nsMimeTypeArray;
class nsPIDOMWindow;
class nsIDOMMozMobileMessageManager;
class nsIDOMNavigatorSystemMessages;
class nsDOMCameraManager;
class nsDOMDeviceStorage;
@ -206,7 +205,7 @@ public:
DesktopNotificationCenter* GetMozNotification(ErrorResult& aRv);
bool MozIsLocallyAvailable(const nsAString& aURI, bool aWhenOffline,
ErrorResult& aRv);
nsIDOMMozMobileMessageManager* GetMozMobileMessage();
MobileMessageManager* GetMozMobileMessage();
Telephony* GetMozTelephony(ErrorResult& aRv);
network::Connection* GetConnection(ErrorResult& aRv);
nsDOMCameraManager* GetMozCameras(ErrorResult& aRv);

View File

@ -131,7 +131,6 @@
#include "nsWrapperCacheInlines.h"
#include "mozilla/dom/HTMLCollectionBinding.h"
#include "nsIDOMMobileMessageManager.h"
#include "nsIDOMMozSmsMessage.h"
#include "nsIDOMMozMmsMessage.h"
#include "nsIDOMSmsFilter.h"
@ -374,9 +373,6 @@ static nsDOMClassInfoData sClassInfoData[] = {
DEFAULT_SCRIPTABLE_FLAGS |
WINDOW_SCRIPTABLE_FLAGS)
NS_DEFINE_CLASSINFO_DATA(MozMobileMessageManager, nsDOMGenericSH,
DOM_DEFAULT_SCRIPTABLE_FLAGS)
NS_DEFINE_CLASSINFO_DATA(MozSmsMessage, nsDOMGenericSH,
DOM_DEFAULT_SCRIPTABLE_FLAGS)
@ -976,10 +972,6 @@ nsDOMClassInfo::Init()
#endif
DOM_CLASSINFO_MAP_END
DOM_CLASSINFO_MAP_BEGIN(MozMobileMessageManager, nsIDOMMozMobileMessageManager)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMMozMobileMessageManager)
DOM_CLASSINFO_MAP_END
DOM_CLASSINFO_MAP_BEGIN(MozSmsMessage, nsIDOMMozSmsMessage)
DOM_CLASSINFO_MAP_ENTRY(nsIDOMMozSmsMessage)
DOM_CLASSINFO_MAP_END

View File

@ -58,7 +58,6 @@ DOMCI_CLASS(File)
// DOM modal content window class, almost identical to Window
DOMCI_CLASS(ModalContentWindow)
DOMCI_CLASS(MozMobileMessageManager)
DOMCI_CLASS(MozSmsMessage)
DOMCI_CLASS(MozMmsMessage)
DOMCI_CLASS(MozSmsFilter)

View File

@ -847,6 +847,10 @@ DOMInterfaces = {
'nativeType': 'mozilla::dom::MobileConnectionInfo',
},
'MozMobileMessageManager': {
'nativeType': 'mozilla::dom::MobileMessageManager',
},
'MozMobileNetworkInfo': {
'nativeType': 'mozilla::dom::MobileNetworkInfo',
},
@ -1969,11 +1973,13 @@ addExternalIface('MozFrameLoader', nativeType='nsIFrameLoader', notflattened=Tru
addExternalIface('MozFrameRequestCallback', nativeType='nsIFrameRequestCallback',
notflattened=True)
addExternalIface('MozIccInfo', headerFile='nsIDOMIccInfo.h')
addExternalIface('MozMobileMessageManager', headerFile='nsIDOMMobileMessageManager.h')
addExternalIface('MozMmsMessage')
addExternalIface('MozObserver', nativeType='nsIObserver', notflattened=True)
addExternalIface('MozRDFCompositeDataSource', nativeType='nsIRDFCompositeDataSource',
notflattened=True)
addExternalIface('MozRDFResource', nativeType='nsIRDFResource', notflattened=True)
addExternalIface('MozSmsFilter', headerFile='nsIDOMSmsFilter.h')
addExternalIface('MozSmsMessage')
addExternalIface('MozTreeBoxObject', nativeType='nsITreeBoxObject',
notflattened=True)
addExternalIface('MozTreeColumn', nativeType='nsITreeColumn',

View File

@ -604,7 +604,13 @@ MobileConnection::SetCallForwardingOption(const MozCallForwardingOptions& aOptio
return nullptr;
}
AutoSafeJSContext cx;
AutoJSAPI jsapi;
if (!NS_WARN_IF(jsapi.InitUsingWin(GetOwner()))) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
JSContext *cx = jsapi.cx();
JS::Rooted<JS::Value> options(cx);
if (!ToJSValue(cx, aOptions, &options)) {
aRv.Throw(NS_ERROR_TYPE_ERR);
@ -635,7 +641,13 @@ MobileConnection::GetCallBarringOption(const MozCallBarringOptions& aOptions,
return nullptr;
}
AutoSafeJSContext cx;
AutoJSAPI jsapi;
if (!NS_WARN_IF(jsapi.InitUsingWin(GetOwner()))) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
JSContext *cx = jsapi.cx();
JS::Rooted<JS::Value> options(cx);
if (!ToJSValue(cx, aOptions, &options)) {
aRv.Throw(NS_ERROR_TYPE_ERR);
@ -666,7 +678,13 @@ MobileConnection::SetCallBarringOption(const MozCallBarringOptions& aOptions,
return nullptr;
}
AutoSafeJSContext cx;
AutoJSAPI jsapi;
if (!NS_WARN_IF(jsapi.InitUsingWin(GetOwner()))) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
JSContext *cx = jsapi.cx();
JS::Rooted<JS::Value> options(cx);
if (!ToJSValue(cx, aOptions, &options)) {
aRv.Throw(NS_ERROR_TYPE_ERR);
@ -697,7 +715,13 @@ MobileConnection::ChangeCallBarringPassword(const MozCallBarringOptions& aOption
return nullptr;
}
AutoSafeJSContext cx;
AutoJSAPI jsapi;
if (!NS_WARN_IF(jsapi.InitUsingWin(GetOwner()))) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
JSContext *cx = jsapi.cx();
JS::Rooted<JS::Value> options(cx);
if (!ToJSValue(cx, aOptions, &options)) {
aRv.Throw(NS_ERROR_TYPE_ERR);

View File

@ -5,7 +5,6 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
XPIDL_SOURCES += [
'nsIDOMMobileMessageManager.idl',
'nsIDOMMozMmsMessage.idl',
'nsIDOMMozMobileMessageThread.idl',
'nsIDOMMozSmsMessage.idl',

View File

@ -1,81 +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/. */
#include "nsIDOMEventTarget.idl"
interface nsIDOMEventListener;
interface nsIDOMMozSmsFilter;
interface nsIDOMMozSmsSegmentInfo;
interface nsIDOMDOMCursor;
interface nsIDOMDOMRequest;
interface nsIDOMBlob;
[scriptable, builtinclass, uuid(8ec8247d-3f5f-41af-9c72-9dc857e3be81)]
interface nsIDOMMozMobileMessageManager : nsIDOMEventTarget
{
nsIDOMDOMRequest getSegmentInfoForText(in DOMString text);
/**
* Function to send SMS.
*
* @param number
* Either a DOMString (only one number) or an array of numbers.
* @param message
* The text message to be sent.
* @param sendParameters
* An SmsSendParameters object.
* @param return
* A DOMRequest object indicating the sending result if one number
* has been passed; an array of DOMRequest objects otherwise.
*/
[implicit_jscontext, optional_argc]
jsval send(in jsval number, in DOMString message,
[optional] in jsval sendParameters);
/**
* Function to send MMS.
*
* @param parameters
* An MmsParameters object.
* @param sendParameters
* An MmsSendParameters object.
* @param return
* A DOMRequest object indicating the sending result.
*/
[implicit_jscontext, optional_argc]
nsIDOMDOMRequest sendMMS(in jsval parameters,
[optional] in jsval sendParameters);
[binaryname(GetMessageMoz)]
nsIDOMDOMRequest getMessage(in long id);
// The parameter can be either a message id or a nsIDOMMoz{Mms,Sms}Message.
[implicit_jscontext]
nsIDOMDOMRequest delete(in jsval param);
// Iterates through nsIDOMMoz{Mms,Sms}Message.
nsIDOMDOMCursor getMessages(in nsIDOMMozSmsFilter filter, in boolean reverse);
nsIDOMDOMRequest markMessageRead(in long id, in boolean value,
[optional] in boolean aSendReadReport);
// Iterates through nsIDOMMozMobileMessageThread.
nsIDOMDOMCursor getThreads();
nsIDOMDOMRequest retrieveMMS(in long id);
[optional_argc]
nsIDOMDOMRequest getSmscAddress([optional] in unsigned long serviceId);
[implicit_jscontext] attribute jsval onreceived;
[implicit_jscontext] attribute jsval onretrieving;
[implicit_jscontext] attribute jsval onsending;
[implicit_jscontext] attribute jsval onsent;
[implicit_jscontext] attribute jsval onfailed;
[implicit_jscontext] attribute jsval ondeliverysuccess;
[implicit_jscontext] attribute jsval ondeliveryerror;
[implicit_jscontext] attribute jsval onreadsuccess;
[implicit_jscontext] attribute jsval onreaderror;
};

View File

@ -10,6 +10,7 @@
#include "nsString.h"
#include "mozilla/dom/mobilemessage/Types.h"
#include "mozilla/dom/MozMmsMessageBinding.h"
#include "mozilla/dom/MozMobileMessageManagerBinding.h"
#include "mozilla/Attributes.h"
namespace mozilla {

View File

@ -3,33 +3,28 @@
* 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/. */
#include "SmsFilter.h"
#include "MobileMessageManager.h"
#include "nsIDOMClassInfo.h"
#include "nsISmsService.h"
#include "nsIMmsService.h"
#include "nsIObserverService.h"
#include "mozilla/Preferences.h"
#include "mozilla/Services.h"
#include "mozilla/dom/mobilemessage/Constants.h" // For MessageType
#include "mozilla/dom/MobileMessageManagerBinding.h"
#include "mozilla/dom/MozMmsEvent.h"
#include "mozilla/dom/MozMmsMessageBinding.h"
#include "mozilla/dom/MozSmsEvent.h"
#include "nsIDOMMozSmsMessage.h"
#include "nsIDOMMozMmsMessage.h"
#include "nsJSUtils.h"
#include "nsContentUtils.h"
#include "nsCxPusher.h"
#include "nsIMobileMessageDatabaseService.h"
#include "nsIXPConnect.h"
#include "nsIPermissionManager.h"
#include "GeneratedEvents.h"
#include "DOMCursor.h"
#include "DOMRequest.h"
#include "nsIMobileMessageCallback.h"
#include "MobileMessageCallback.h"
#include "MobileMessageCursorCallback.h"
#include "DOMCursor.h"
#include "mozilla/dom/mobilemessage/Constants.h" // For kSms*ObserverTopic
#include "mozilla/dom/MozMmsEvent.h"
#include "mozilla/dom/MozMobileMessageManagerBinding.h"
#include "mozilla/dom/MozSmsEvent.h"
#include "mozilla/dom/ToJSValue.h"
#include "mozilla/Preferences.h"
#include "mozilla/Services.h"
#include "nsIDOMMozMmsMessage.h"
#include "nsIDOMMozSmsMessage.h"
#include "nsIMmsService.h"
#include "nsIMobileMessageCallback.h"
#include "nsIMobileMessageDatabaseService.h"
#include "nsIObserverService.h"
#include "nsISmsService.h"
#include "nsServiceManagerUtils.h" // For do_GetService()
#include "SmsFilter.h"
#define RECEIVED_EVENT_NAME NS_LITERAL_STRING("received")
#define RETRIEVING_EVENT_NAME NS_LITERAL_STRING("retrieving")
@ -43,35 +38,24 @@
using namespace mozilla::dom::mobilemessage;
DOMCI_DATA(MozMobileMessageManager, mozilla::dom::MobileMessageManager)
namespace mozilla {
namespace dom {
NS_INTERFACE_MAP_BEGIN(MobileMessageManager)
NS_INTERFACE_MAP_ENTRY(nsIDOMMozMobileMessageManager)
NS_INTERFACE_MAP_ENTRY(nsIObserver)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO(MozMobileMessageManager)
NS_INTERFACE_MAP_END_INHERITING(DOMEventTargetHelper)
NS_IMPL_ADDREF_INHERITED(MobileMessageManager, DOMEventTargetHelper)
NS_IMPL_RELEASE_INHERITED(MobileMessageManager, DOMEventTargetHelper)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, received)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, retrieving)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, sending)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, sent)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, failed)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, deliverysuccess)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, deliveryerror)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, readsuccess)
NS_IMPL_EVENT_HANDLER(MobileMessageManager, readerror)
MobileMessageManager::MobileMessageManager(nsPIDOMWindow *aWindow)
: DOMEventTargetHelper(aWindow)
{
}
void
MobileMessageManager::Init(nsPIDOMWindow *aWindow)
MobileMessageManager::Init()
{
BindToOwner(aWindow);
nsCOMPtr<nsIObserverService> obs = services::GetObserverService();
// GetObserverService() can return null is some situations like shutdown.
if (!obs) {
@ -109,290 +93,285 @@ MobileMessageManager::Shutdown()
obs->RemoveObserver(this, kSmsReadErrorObserverTopic);
}
NS_IMETHODIMP
JSObject*
MobileMessageManager::WrapObject(JSContext* aCx)
{
return MozMobileMessageManagerBinding::Wrap(aCx, this);
}
already_AddRefed<DOMRequest>
MobileMessageManager::GetSegmentInfoForText(const nsAString& aText,
nsIDOMDOMRequest** aRequest)
ErrorResult& aRv)
{
nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(smsService, NS_ERROR_FAILURE);
if (!smsService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback =
new MobileMessageCallback(request);
nsresult rv = smsService->GetSegmentInfoForText(aText, msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
request.forget(aRequest);
return NS_OK;
return request.forget();
}
nsresult
MobileMessageManager::Send(JSContext* aCx, JS::Handle<JSObject*> aGlobal,
already_AddRefed<DOMRequest>
MobileMessageManager::Send(nsISmsService* aSmsService,
uint32_t aServiceId,
JS::Handle<JSString*> aNumber,
const nsAString& aMessage,
JS::MutableHandle<JS::Value> aRequest)
const nsAString& aNumber,
const nsAString& aText,
ErrorResult& aRv)
{
nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(smsService, NS_ERROR_FAILURE);
nsDependentJSString number;
number.init(aCx, aNumber);
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback =
new MobileMessageCallback(request);
// By default, we don't send silent messages via MobileMessageManager.
nsresult rv = smsService->Send(aServiceId, number, aMessage,
false, msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
js::AssertSameCompartment(aCx, aGlobal);
rv = nsContentUtils::WrapNative(aCx,
static_cast<nsIDOMDOMRequest*>(request.get()),
aRequest);
nsresult rv = aSmsService->Send(aServiceId, aNumber, aText,
false, msgCallback);
if (NS_FAILED(rv)) {
NS_ERROR("Failed to create the js value!");
return rv;
aRv.Throw(rv);
return nullptr;
}
return NS_OK;
return request.forget();
}
NS_IMETHODIMP
MobileMessageManager::Send(JS::Handle<JS::Value> aNumber,
const nsAString& aMessage,
JS::Handle<JS::Value> aSendParams,
JSContext* aCx,
uint8_t aArgc,
JS::MutableHandle<JS::Value> aReturn)
already_AddRefed<DOMRequest>
MobileMessageManager::Send(const nsAString& aNumber,
const nsAString& aText,
const SmsSendParameters& aSendParams,
ErrorResult& aRv)
{
if (!aNumber.isString() && !JS_IsArrayObject(aCx, aNumber)) {
return NS_ERROR_INVALID_ARG;
}
nsresult rv;
nsIScriptContext* sc = GetContextForEventHandlers(&rv);
NS_ENSURE_SUCCESS(rv, rv);
NS_ENSURE_STATE(sc);
JS::Rooted<JSObject*> global(aCx, JS::CurrentGlobalOrNull(aCx));
mozilla::Maybe<JSAutoCompartment> ac;
if (!global) {
global = sc->GetWindowProxy();
ac.construct(aCx, global);
}
nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(smsService, NS_ERROR_FAILURE);
if (!smsService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
// Use the default one unless |aSendParams.serviceId| is available.
uint32_t serviceId;
rv = smsService->GetSmsDefaultServiceId(&serviceId);
NS_ENSURE_SUCCESS(rv, rv);
if (aArgc == 1) {
JS::Rooted<JS::Value> param(aCx, aSendParams);
RootedDictionary<SmsSendParameters> sendParams(aCx);
if (!sendParams.Init(aCx, param)) {
return NS_ERROR_TYPE_ERR;
}
if (sendParams.mServiceId.WasPassed()) {
serviceId = sendParams.mServiceId.Value();
if (aSendParams.mServiceId.WasPassed()) {
serviceId = aSendParams.mServiceId.Value();
} else {
nsresult rv = smsService->GetSmsDefaultServiceId(&serviceId);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
}
if (aNumber.isString()) {
JS::Rooted<JSString*> str(aCx, aNumber.toString());
return Send(aCx, global, serviceId, str, aMessage, aReturn);
}
// Must be an array then.
JS::Rooted<JSObject*> numbers(aCx, &aNumber.toObject());
uint32_t size;
if (!JS_GetArrayLength(aCx, numbers, &size)) {
return NS_ERROR_FAILURE;
}
JS::AutoValueVector requests(aCx);
if (!requests.resize(size)) {
return NS_ERROR_FAILURE;
}
JS::Rooted<JS::Value> number(aCx);
JS::Rooted<JSString*> str(aCx);
for (uint32_t i = 0; i < size; ++i) {
if (!JS_GetElement(aCx, numbers, i, &number)) {
return NS_ERROR_INVALID_ARG;
}
str = JS::ToString(aCx, number);
if (!str) {
return NS_ERROR_FAILURE;
}
nsresult rv = Send(aCx, global, serviceId, str, aMessage, requests[i]);
NS_ENSURE_SUCCESS(rv, rv);
}
JS::Rooted<JSObject*> obj(aCx);
obj = JS_NewArrayObject(aCx, requests);
if (!obj) {
return NS_ERROR_FAILURE;
}
aReturn.setObject(*obj);
return NS_OK;
return Send(smsService, serviceId, aNumber, aText, aRv);
}
NS_IMETHODIMP
MobileMessageManager::SendMMS(JS::Handle<JS::Value> aParams,
JS::Handle<JS::Value> aSendParams,
JSContext* aCx,
uint8_t aArgc,
nsIDOMDOMRequest** aRequest)
void
MobileMessageManager::Send(const Sequence<nsString>& aNumbers,
const nsAString& aText,
const SmsSendParameters& aSendParams,
nsTArray<nsRefPtr<DOMRequest>>& aReturn,
ErrorResult& aRv)
{
nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID);
if (!smsService) {
aRv.Throw(NS_ERROR_FAILURE);
return;
}
// Use the default one unless |aSendParams.serviceId| is available.
uint32_t serviceId;
if (aSendParams.mServiceId.WasPassed()) {
serviceId = aSendParams.mServiceId.Value();
} else {
nsresult rv = smsService->GetSmsDefaultServiceId(&serviceId);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return;
}
}
const uint32_t size = aNumbers.Length();
for (uint32_t i = 0; i < size; ++i) {
nsRefPtr<DOMRequest> request = Send(smsService, serviceId, aNumbers[i], aText, aRv);
if (aRv.Failed()) {
return;
}
aReturn.AppendElement(request);
}
}
already_AddRefed<DOMRequest>
MobileMessageManager::SendMMS(const MmsParameters& aParams,
const MmsSendParameters& aSendParams,
ErrorResult& aRv)
{
nsCOMPtr<nsIMmsService> mmsService = do_GetService(MMS_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(mmsService, NS_ERROR_FAILURE);
if (!mmsService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
// Use the default one unless |aSendParams.serviceId| is available.
uint32_t serviceId;
nsresult rv = mmsService->GetMmsDefaultServiceId(&serviceId);
NS_ENSURE_SUCCESS(rv, rv);
if (aArgc == 1) {
JS::Rooted<JS::Value> param(aCx, aSendParams);
RootedDictionary<MmsSendParameters> sendParams(aCx);
if (!sendParams.Init(aCx, param)) {
return NS_ERROR_TYPE_ERR;
}
if (sendParams.mServiceId.WasPassed()) {
serviceId = sendParams.mServiceId.Value();
}
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
rv = mmsService->Send(serviceId, aParams, msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
request.forget(aRequest);
return NS_OK;
}
NS_IMETHODIMP
MobileMessageManager::GetMessageMoz(int32_t aId, nsIDOMDOMRequest** aRequest)
{
nsCOMPtr<nsIMobileMessageDatabaseService> mobileMessageDBService =
do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(mobileMessageDBService, NS_ERROR_FAILURE);
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
nsresult rv = mobileMessageDBService->GetMessageMoz(aId, msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
request.forget(aRequest);
return NS_OK;
}
nsresult
MobileMessageManager::GetMessageId(JSContext* aCx,
const JS::Value& aMessage, int32_t* aId)
{
nsCOMPtr<nsIDOMMozSmsMessage> smsMessage =
do_QueryInterface(nsContentUtils::XPConnect()->GetNativeOfWrapper(aCx, &aMessage.toObject()));
if (smsMessage) {
return smsMessage->GetId(aId);
}
nsCOMPtr<nsIDOMMozMmsMessage> mmsMessage =
do_QueryInterface(nsContentUtils::XPConnect()->GetNativeOfWrapper(aCx, &aMessage.toObject()));
if (mmsMessage) {
return mmsMessage->GetId(aId);
}
return NS_ERROR_INVALID_ARG;
}
NS_IMETHODIMP
MobileMessageManager::Delete(JS::Handle<JS::Value> aParam, JSContext* aCx,
nsIDOMDOMRequest** aRequest)
{
// We expect Int32, SmsMessage, MmsMessage, Int32[], SmsMessage[], MmsMessage[]
if (!aParam.isObject() && !aParam.isInt32()) {
return NS_ERROR_INVALID_ARG;
}
nsresult rv = NS_OK;
int32_t id, *idArray;
uint32_t size;
if (aParam.isInt32()) {
// Single Integer Message ID
id = aParam.toInt32();
size = 1;
idArray = &id;
} else if (!JS_IsArrayObject(aCx, aParam)) {
// Single SmsMessage/MmsMessage object
rv = GetMessageId(aCx, aParam, &id);
NS_ENSURE_SUCCESS(rv, rv);
size = 1;
idArray = &id;
nsresult rv;
if (aSendParams.mServiceId.WasPassed()) {
serviceId = aSendParams.mServiceId.Value();
} else {
// Int32[], SmsMessage[], or MmsMessage[]
JS::Rooted<JSObject*> ids(aCx, &aParam.toObject());
MOZ_ALWAYS_TRUE(JS_GetArrayLength(aCx, ids, &size));
nsAutoArrayPtr<int32_t> idAutoArray(new int32_t[size]);
JS::Rooted<JS::Value> idJsValue(aCx);
for (uint32_t i = 0; i < size; i++) {
if (!JS_GetElement(aCx, ids, i, &idJsValue)) {
return NS_ERROR_INVALID_ARG;
}
if (idJsValue.isInt32()) {
idAutoArray[i] = idJsValue.toInt32();
} else if (idJsValue.isObject()) {
rv = GetMessageId(aCx, idJsValue, &id);
NS_ENSURE_SUCCESS(rv, rv);
idAutoArray[i] = id;
}
rv = mmsService->GetMmsDefaultServiceId(&serviceId);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
idArray = idAutoArray.forget();
}
AutoJSAPI jsapi;
if (!NS_WARN_IF(jsapi.InitUsingWin(GetOwner()))) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
JSContext *cx = jsapi.cx();
JS::Rooted<JS::Value> val(cx);
if (!ToJSValue(cx, aParams, &val)) {
aRv.Throw(NS_ERROR_TYPE_ERR);
return nullptr;
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
rv = mmsService->Send(serviceId, val, msgCallback);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
return request.forget();
}
already_AddRefed<DOMRequest>
MobileMessageManager::GetMessage(int32_t aId,
ErrorResult& aRv)
{
nsCOMPtr<nsIMobileMessageDatabaseService> dbService =
do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(dbService, NS_ERROR_FAILURE);
if (!dbService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
nsresult rv = dbService->GetMessageMoz(aId, msgCallback);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
return request.forget();
}
already_AddRefed<DOMRequest>
MobileMessageManager::Delete(int32_t* aIdArray,
uint32_t aSize,
ErrorResult& aRv)
{
nsCOMPtr<nsIMobileMessageDatabaseService> dbService =
do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID);
if (!dbService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback =
new MobileMessageCallback(request);
rv = dbService->DeleteMessage(idArray, size, msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
nsresult rv = dbService->DeleteMessage(aIdArray, aSize, msgCallback);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
request.forget(aRequest);
return NS_OK;
return request.forget();
}
NS_IMETHODIMP
already_AddRefed<DOMRequest>
MobileMessageManager::Delete(int32_t aId,
ErrorResult& aRv)
{
return Delete(&aId, 1, aRv);
}
already_AddRefed<DOMRequest>
MobileMessageManager::Delete(nsIDOMMozSmsMessage* aMessage,
ErrorResult& aRv)
{
int32_t id;
DebugOnly<nsresult> rv = aMessage->GetId(&id);
MOZ_ASSERT(NS_SUCCEEDED(rv));
return Delete(id, aRv);
}
already_AddRefed<DOMRequest>
MobileMessageManager::Delete(nsIDOMMozMmsMessage* aMessage,
ErrorResult& aRv)
{
int32_t id;
DebugOnly<nsresult> rv = aMessage->GetId(&id);
MOZ_ASSERT(NS_SUCCEEDED(rv));
return Delete(id, aRv);
}
already_AddRefed<DOMRequest>
MobileMessageManager::Delete(const Sequence<OwningLongOrMozSmsMessageOrMozMmsMessage>& aParams,
ErrorResult& aRv)
{
const uint32_t size = aParams.Length();
FallibleTArray<int32_t> idArray;
if (!idArray.SetLength(size)) {
aRv.Throw(NS_ERROR_OUT_OF_MEMORY);
return nullptr;
}
DebugOnly<nsresult> rv;
for (uint32_t i = 0; i < size; i++) {
const OwningLongOrMozSmsMessageOrMozMmsMessage& element = aParams[i];
int32_t &id = idArray[i];
if (element.IsLong()) {
id = element.GetAsLong();
} else if (element.IsMozMmsMessage()) {
rv = element.GetAsMozMmsMessage()->GetId(&id);
MOZ_ASSERT(NS_SUCCEEDED(rv));
} else /*if (element.IsMozSmsMessage())*/ {
rv = element.GetAsMozSmsMessage()->GetId(&id);
MOZ_ASSERT(NS_SUCCEEDED(rv));
}
}
return Delete(idArray.Elements(), size, aRv);
}
already_AddRefed<DOMCursor>
MobileMessageManager::GetMessages(nsIDOMMozSmsFilter* aFilter,
bool aReverse,
nsIDOMDOMCursor** aCursor)
ErrorResult& aRv)
{
nsCOMPtr<nsIMobileMessageDatabaseService> dbService =
do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(dbService, NS_ERROR_FAILURE);
if (!dbService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
nsCOMPtr<nsIDOMMozSmsFilter> filter = aFilter;
if (!filter) {
@ -405,40 +384,51 @@ MobileMessageManager::GetMessages(nsIDOMMozSmsFilter* aFilter,
nsCOMPtr<nsICursorContinueCallback> continueCallback;
nsresult rv = dbService->CreateMessageCursor(filter, aReverse, cursorCallback,
getter_AddRefs(continueCallback));
NS_ENSURE_SUCCESS(rv, rv);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
cursorCallback->mDOMCursor = new DOMCursor(GetOwner(), continueCallback);
NS_ADDREF(*aCursor = cursorCallback->mDOMCursor);
return NS_OK;
nsRefPtr<DOMCursor> cursor = cursorCallback->mDOMCursor;
return cursor.forget();
}
NS_IMETHODIMP
MobileMessageManager::MarkMessageRead(int32_t aId, bool aValue,
already_AddRefed<DOMRequest>
MobileMessageManager::MarkMessageRead(int32_t aId,
bool aValue,
bool aSendReadReport,
nsIDOMDOMRequest** aRequest)
{
nsCOMPtr<nsIMobileMessageDatabaseService> mobileMessageDBService =
do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(mobileMessageDBService, NS_ERROR_FAILURE);
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
nsresult rv = mobileMessageDBService->MarkMessageRead(aId, aValue,
aSendReadReport,
msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
request.forget(aRequest);
return NS_OK;
}
NS_IMETHODIMP
MobileMessageManager::GetThreads(nsIDOMDOMCursor** aCursor)
ErrorResult& aRv)
{
nsCOMPtr<nsIMobileMessageDatabaseService> dbService =
do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(dbService, NS_ERROR_FAILURE);
if (!dbService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
nsresult rv = dbService->MarkMessageRead(aId, aValue, aSendReadReport,
msgCallback);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
return request.forget();
}
already_AddRefed<DOMCursor>
MobileMessageManager::GetThreads(ErrorResult& aRv)
{
nsCOMPtr<nsIMobileMessageDatabaseService> dbService =
do_GetService(MOBILE_MESSAGE_DATABASE_SERVICE_CONTRACTID);
if (!dbService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
nsRefPtr<MobileMessageCursorCallback> cursorCallback =
new MobileMessageCursorCallback();
@ -446,29 +436,49 @@ MobileMessageManager::GetThreads(nsIDOMDOMCursor** aCursor)
nsCOMPtr<nsICursorContinueCallback> continueCallback;
nsresult rv = dbService->CreateThreadCursor(cursorCallback,
getter_AddRefs(continueCallback));
NS_ENSURE_SUCCESS(rv, rv);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
cursorCallback->mDOMCursor = new DOMCursor(GetOwner(), continueCallback);
NS_ADDREF(*aCursor = cursorCallback->mDOMCursor);
return NS_OK;
nsRefPtr<DOMCursor> cursor = cursorCallback->mDOMCursor;
return cursor.forget();
}
NS_IMETHODIMP
MobileMessageManager::RetrieveMMS(int32_t id,
nsIDOMDOMRequest** aRequest)
already_AddRefed<DOMRequest>
MobileMessageManager::RetrieveMMS(int32_t aId,
ErrorResult& aRv)
{
nsCOMPtr<nsIMmsService> mmsService = do_GetService(MMS_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(mmsService, NS_ERROR_FAILURE);
nsCOMPtr<nsIMmsService> mmsService = do_GetService(MMS_SERVICE_CONTRACTID);
if (!mmsService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
nsresult rv = mmsService->Retrieve(id, msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
nsresult rv = mmsService->Retrieve(aId, msgCallback);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
request.forget(aRequest);
return NS_OK;
return request.forget();
}
already_AddRefed<DOMRequest>
MobileMessageManager::RetrieveMMS(nsIDOMMozMmsMessage* aMessage,
ErrorResult& aRv)
{
int32_t id;
DebugOnly<nsresult> rv = aMessage->GetId(&id);
MOZ_ASSERT(NS_SUCCEEDED(rv));
return RetrieveMMS(id, aRv);
}
nsresult
@ -551,26 +561,38 @@ MobileMessageManager::Observe(nsISupports* aSubject, const char* aTopic,
return NS_OK;
}
NS_IMETHODIMP
MobileMessageManager::GetSmscAddress(uint32_t aServiceId, uint8_t aArgc,
nsIDOMDOMRequest** aRequest)
already_AddRefed<DOMRequest>
MobileMessageManager::GetSmscAddress(const Optional<uint32_t>& aServiceId,
ErrorResult& aRv)
{
nsCOMPtr<nsISmsService> smsService = do_GetService(SMS_SERVICE_CONTRACTID);
NS_ENSURE_TRUE(smsService, NS_ERROR_FAILURE);
if (!smsService) {
aRv.Throw(NS_ERROR_FAILURE);
return nullptr;
}
// Use the default one unless |aSendParams.serviceId| is available.
uint32_t serviceId;
nsresult rv;
if (aArgc != 1) {
rv = smsService->GetSmsDefaultServiceId(&aServiceId);
NS_ENSURE_SUCCESS(rv, rv);
if (aServiceId.WasPassed()) {
serviceId = aServiceId.Value();
} else {
rv = smsService->GetSmsDefaultServiceId(&serviceId);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
}
nsRefPtr<DOMRequest> request = new DOMRequest(GetOwner());
nsCOMPtr<nsIMobileMessageCallback> msgCallback = new MobileMessageCallback(request);
rv = smsService->GetSmscAddress(aServiceId, msgCallback);
NS_ENSURE_SUCCESS(rv, rv);
rv = smsService->GetSmscAddress(serviceId, msgCallback);
if (NS_FAILED(rv)) {
aRv.Throw(rv);
return nullptr;
}
request.forget(aRequest);
return NS_OK;
return request.forget();
}
} // namespace dom

View File

@ -6,49 +6,153 @@
#ifndef mozilla_dom_mobilemessage_MobileMessageManager_h
#define mozilla_dom_mobilemessage_MobileMessageManager_h
#include "mozilla/Attributes.h"
#include "mozilla/dom/UnionTypes.h"
#include "mozilla/DOMEventTargetHelper.h"
#include "nsIDOMMobileMessageManager.h"
#include "nsIObserver.h"
class nsISmsService;
class nsIDOMMozSmsMessage;
class nsIDOMMozMmsMessage;
class nsIDOMMozSmsFilter;
namespace mozilla {
namespace dom {
class MobileMessageManager : public DOMEventTargetHelper
, public nsIDOMMozMobileMessageManager
, public nsIObserver
class DOMRequest;
class DOMCursor;
struct MmsParameters;
struct MmsSendParameters;
struct SmsSendParameters;
class MobileMessageManager MOZ_FINAL : public DOMEventTargetHelper
, public nsIObserver
{
public:
NS_DECL_ISUPPORTS_INHERITED
NS_DECL_NSIOBSERVER
NS_DECL_NSIDOMMOZMOBILEMESSAGEMANAGER
NS_REALLY_FORWARD_NSIDOMEVENTTARGET(DOMEventTargetHelper)
void Init(nsPIDOMWindow *aWindow);
MobileMessageManager(nsPIDOMWindow* aWindow);
void Init();
void Shutdown();
nsPIDOMWindow*
GetParentObject() const { return GetOwner(); }
// WrapperCache
virtual JSObject*
WrapObject(JSContext* aCx) MOZ_OVERRIDE;
// WebIDL Interface
already_AddRefed<DOMRequest>
GetSegmentInfoForText(const nsAString& aText,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
Send(const nsAString& aNumber,
const nsAString& aText,
const SmsSendParameters& aSendParams,
ErrorResult& aRv);
void
Send(const Sequence<nsString>& aNumbers,
const nsAString& aText,
const SmsSendParameters& aSendParams,
nsTArray<nsRefPtr<DOMRequest>>& aReturn,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
SendMMS(const MmsParameters& aParameters,
const MmsSendParameters& aSendParams,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
GetMessage(int32_t aId,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
Delete(int32_t aId,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
Delete(nsIDOMMozSmsMessage* aMessage,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
Delete(nsIDOMMozMmsMessage* aMessage,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
Delete(const Sequence<OwningLongOrMozSmsMessageOrMozMmsMessage>& aParams,
ErrorResult& aRv);
already_AddRefed<DOMCursor>
GetMessages(nsIDOMMozSmsFilter* aFilter,
bool aReverse,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
MarkMessageRead(int32_t aId,
bool aRead,
bool aSendReadReport,
ErrorResult& aRv);
already_AddRefed<DOMCursor>
GetThreads(ErrorResult& aRv);
already_AddRefed<DOMRequest>
RetrieveMMS(int32_t aId,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
RetrieveMMS(nsIDOMMozMmsMessage* aMessage,
ErrorResult& aRv);
already_AddRefed<DOMRequest>
GetSmscAddress(const Optional<uint32_t>& aServiceId,
ErrorResult& aRv);
IMPL_EVENT_HANDLER(received)
IMPL_EVENT_HANDLER(retrieving)
IMPL_EVENT_HANDLER(sending)
IMPL_EVENT_HANDLER(sent)
IMPL_EVENT_HANDLER(failed)
IMPL_EVENT_HANDLER(deliverysuccess)
IMPL_EVENT_HANDLER(deliveryerror)
IMPL_EVENT_HANDLER(readsuccess)
IMPL_EVENT_HANDLER(readerror)
private:
/**
* Internal Send() method used to send one message.
*/
nsresult Send(JSContext* aCx, JS::Handle<JSObject*> aGlobal,
uint32_t aServiceId,
JS::Handle<JSString*> aNumber,
const nsAString& aMessage,
JS::MutableHandle<JS::Value> aRequest);
already_AddRefed<DOMRequest>
Send(nsISmsService* aSmsService,
uint32_t aServiceId,
const nsAString& aNumber,
const nsAString& aText,
ErrorResult& aRv);
nsresult DispatchTrustedSmsEventToSelf(const char* aTopic,
const nsAString& aEventName,
nsISupports* aMsg);
already_AddRefed<DOMRequest>
Delete(int32_t* aIdArray,
uint32_t aSize,
ErrorResult& aRv);
nsresult
DispatchTrustedSmsEventToSelf(const char* aTopic,
const nsAString& aEventName,
nsISupports* aMsg);
/**
* Helper to get message ID from SMS/MMS Message object
*/
nsresult GetMessageId(JSContext* aCx, const JS::Value& aMessage,
int32_t* aId);
nsresult
GetMessageId(JSContext* aCx,
const JS::Value& aMessage,
int32_t* aId);
};
} // namespace dom

View File

@ -12,8 +12,7 @@
#include "SmsSegmentInfo.h"
#include "nsJSUtils.h"
#include "nsCxPusher.h"
#include "mozilla/dom/MobileMessageManagerBinding.h"
#include "mozilla/dom/MozMmsMessageBinding.h"
#include "mozilla/dom/MozMobileMessageManagerBinding.h"
#include "mozilla/dom/BindingUtils.h"
#include "mozilla/Preferences.h"
#include "nsString.h"

View File

@ -5,6 +5,29 @@ const {Cc: Cc, Ci: Ci, Cr: Cr, Cu: Cu} = SpecialPowers;
let Promise = Cu.import("resource://gre/modules/Promise.jsm").Promise;
/**
* Push a list of preference settings. Never reject.
*
* Fulfill params: (none)
*
* @param aPrefs
* An JS object. For example:
*
* {'set': [['foo.bar', 2], ['magic.pref', 'baz']],
* 'clear': [['clear.this'], ['also.this']] };
*
* @return A deferred promise.
*/
function pushPrefEnv(aPrefs) {
let deferred = Promise.defer();
SpecialPowers.pushPrefEnv(aPrefs, function() {
deferred.resolve();
});
return deferred.promise;
}
/**
* Push required permissions and test if |navigator.mozMobileMessage| exists.
* Resolve if it does, reject otherwise.
@ -54,16 +77,24 @@ function ensureMobileMessage() {
*
* @param aEventName
* A string event name.
* @param aMatchFunc [optional]
* An additional callback function to match the interested event
* before removing the listener and going to resolve the promise.
*
* @return A deferred promise.
*/
function waitForManagerEvent(aEventName) {
function waitForManagerEvent(aEventName, aMatchFunc) {
let deferred = Promise.defer();
manager.addEventListener(aEventName, function onevent(aEvent) {
manager.removeEventListener(aEventName, onevent);
if (aMatchFunc && !aMatchFunc(aEvent)) {
ok(true, "MobileMessageManager event '" + aEventName + "' got" +
" but is not interested.");
return;
}
ok(true, "MobileMessageManager event '" + aEventName + "' got.");
manager.removeEventListener(aEventName, onevent);
deferred.resolve(aEvent);
});
@ -184,6 +215,24 @@ function sendMmsWithFailure(aMmsParameters, aSendParameters) {
error: aResults[1] }; });
}
/**
* Retrieve message by message id.
*
* Fulfill params: MozSmsMessage
* Reject params:
* event -- a DOMEvent
*
* @param aId
* A numeric message id.
*
* @return A deferred promise.
*/
function getMessage(aId) {
let request = manager.getMessage(aId);
return wrapDomRequestAsPromise(request)
.then((aEvent) => { return aEvent.target.result; });
}
/**
* Retrieve messages from database.
*
@ -396,6 +445,11 @@ function runEmulatorCmdSafe(aCommand) {
* Reject params:
* result -- an array of emulator response lines.
*
* @param aFrom
* A string-typed from address.
* @param aText
* A string-typed message body.
*
* @return A deferred promise.
*/
function sendTextSmsToEmulator(aFrom, aText) {
@ -403,6 +457,26 @@ function sendTextSmsToEmulator(aFrom, aText) {
return runEmulatorCmdSafe(command);
}
/**
* Send simple text SMS to emulator and wait for a received event.
*
* Fulfill params: MozSmsMessage
* Reject params: (none)
*
* @param aFrom
* A string-typed from address.
* @param aText
* A string-typed message body.
*
* @return A deferred promise.
*/
function sendTextSmsToEmulatorAndWait(aFrom, aText) {
let promises = [];
promises.push(waitForManagerEvent("received"));
promises.push(sendTextSmsToEmulator(aFrom, aText));
return Promise.all(promises).then(aResults => aResults[0].message);
}
/**
* Send raw SMS TPDU to emulator.
*
@ -464,16 +538,35 @@ function messagesToIds(aMessages) {
return ids;
}
/**
* Convenient function to compare two SMS messages.
*/
function compareSmsMessage(aFrom, aTo) {
const FIELDS = ["id", "threadId", "iccId", "body", "delivery",
"deliveryStatus", "read", "receiver", "sender",
"messageClass", "timestamp", "deliveryTimestamp",
"sentTimestamp"];
for (let field of FIELDS) {
is(aFrom[field], aTo[field], "message." + field);
}
}
/**
* Flush permission settings and call |finish()|.
*/
function cleanUp() {
ok(true, ":: CLEANING UP ::");
waitFor(function() {
SpecialPowers.flushPermissions(function() {
// Use ok here so that we have at least one test run.
ok(true, "permissions flushed");
finish();
SpecialPowers.flushPrefEnv(function() {
ok(true, "preferences flushed");
finish();
})
});
}, function() {
return pendingEmulatorCmdCount === 0;

View File

@ -12,10 +12,8 @@ qemu = true
[test_outgoing_delete.js]
[test_getmessage.js]
[test_getmessage_notfound.js]
[test_incoming_multipart.js]
[test_getmessages.js]
[test_filter_date.js]
[test_filter_date_notfound.js]
[test_filter_number.js]
[test_filter_received.js]
[test_filter_sent.js]

View File

@ -2,22 +2,10 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = 'head.js';
const SELF = "5554";
SpecialPowers.setBoolPref("dom.sms.enabled", true);
SpecialPowers.addPermission("sms", true, document);
function cleanUp() {
SpecialPowers.removePermission("sms", document);
SpecialPowers.clearUserPref("dom.sms.enabled");
finish();
}
let manager = window.navigator.mozMobileMessage;
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
function randomString16() {
return Math.random().toString(36).substr(2, 16);
}
@ -26,30 +14,21 @@ function times(str, n) {
return (new Array(n + 1)).join(str);
}
function repeat(func, array, oncomplete) {
(function do_call(index) {
let next = index < (array.length - 1) ? do_call.bind(null, index + 1) : oncomplete;
func.apply(null, [array[index], next]);
})(0);
function test(aBody) {
let promises = [];
promises.push(waitForManagerEvent('received')
.then(function(aEvent) {
let message = aEvent.message;
is(message.body, aBody, "message.body");
}));
promises.push(sendSmsWithSuccess(SELF, aBody));
return Promise.all(promises);
}
function doTest(body, callback) {
manager.addEventListener("received", function onReceived(event) {
event.target.removeEventListener(event.type, arguments.callee);
let message = event.message;
is(message.body, body, "message.body");
window.setTimeout(callback, 0);
});
let request = manager.send(SELF, body);
request.onerror = function onerror() {
ok(false, "failed to send message '" + body + "' to '" + SELF + "'");
};
}
repeat(doTest, [
const TEST_DATA = [
// Random alphanumeric string of 16 characters.
randomString16(),
// Long long text message for multipart messages.
@ -75,4 +54,18 @@ repeat(doTest, [
// 2) problem in decoding strings encoded with GSM 7Bit Alphabets and
// containing characters on extension tables.
"\u20ac****",
], cleanUp);
];
startTestBase(function testCaseMain() {
return ensureMobileMessage()
.then(function() {
let promise = Promise.resolve();
for (let i = 0; i < TEST_DATA.length; i++) {
let text = TEST_DATA[i];
promise = promise.then(() => test(text));
}
return promise;
});
});

View File

@ -2,193 +2,118 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = 'head.js';
SpecialPowers.addPermission("sms", true, document);
SpecialPowers.setBoolPref("dom.sms.enabled", true);
let manager = window.navigator.mozMobileMessage;
let numberMsgs = 10;
let smsList = new Array();
function verifyInitialState() {
log("Verifying initial state.");
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
// Ensure test is starting clean with no existing sms messages
deleteAllMsgs(simulateIncomingSms);
}
function deleteAllMsgs(nextFunction) {
let msgList = new Array();
let filter = new MozSmsFilter;
let cursor = manager.getMessages(filter, false);
ok(cursor instanceof DOMCursor,
"cursor is instanceof " + cursor.constructor);
cursor.onsuccess = function(event) {
// Check if message was found
if (cursor.result) {
msgList.push(cursor.result.id);
// Now get next message in the list
cursor.continue();
} else {
// No (more) messages found
if (msgList.length) {
log("Found " + msgList.length + " SMS messages to delete.");
deleteMsgs(msgList, nextFunction);
} else {
log("No SMS messages found.");
nextFunction();
}
}
};
cursor.onerror = function(event) {
log("Received 'onerror' event.");
ok(event.target.error, "domerror obj");
log("manager.getMessages error: " + event.target.error.name);
ok(false,"Could not get SMS messages");
cleanUp();
};
}
function deleteMsgs(msgList, nextFunction) {
let smsId = msgList.shift();
log("Deleting SMS (id: " + smsId + ").");
let request = manager.delete(smsId);
ok(request instanceof DOMRequest,
"request is instanceof " + request.constructor);
request.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
if (event.target.result) {
// Message deleted, continue until none are left
if (msgList.length) {
deleteMsgs(msgList, nextFunction);
} else {
log("Finished deleting SMS messages.");
nextFunction();
}
} else {
log("SMS delete failed.");
ok(false,"manager.delete request returned false");
cleanUp();
}
};
request.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
ok(false, "manager.delete request returned unexpected error: "
+ event.target.error.name );
cleanUp();
};
}
const NUMBER_OF_MESSAGES = 10;
const REMOTE = "5552229797";
function simulateIncomingSms() {
let text = "Incoming SMS number " + (smsList.length + 1);
let remoteNumber = "5552229797";
let promise = Promise.resolve();
let messages = [];
log("Simulating incoming SMS number " + (smsList.length + 1) + " of "
+ numberMsgs + ".");
// Simulate incoming sms sent from remoteNumber to our emulator
rcvdEmulatorCallback = false;
runEmulatorCmd("sms send " + remoteNumber + " " + text, function(result) {
is(result[0], "OK", "emulator callback");
rcvdEmulatorCallback = true;
});
}
// Callback for incoming sms
manager.onreceived = function onreceived(event) {
log("Received 'onreceived' sms event.");
let incomingSms = event.message;
log("Received SMS (id: " + incomingSms.id + ").");
smsList.push(incomingSms);
// Wait for emulator to catch up before continuing
waitFor(nextRep,function() {
return(rcvdEmulatorCallback);
});
};
function nextRep() {
if (smsList.length < numberMsgs) {
simulateIncomingSms();
} else {
// Now test the filter
getMsgs();
for (let i = 0; i < NUMBER_OF_MESSAGES; i++) {
let text = "Incoming SMS number " + i;
promise = promise.then(() => sendTextSmsToEmulatorAndWait(REMOTE, text))
.then(function(aMessage) {
messages.push(aMessage);
return messages;
});
}
return promise;
}
function getMsgs() {
var filter = new MozSmsFilter();
let foundSmsList = new Array();
function test(aStartDate, aEndDate, aExpectedMessages) {
let filter = new MozSmsFilter();
if (aStartDate) {
filter.startDate = aStartDate;
}
if (aEndDate) {
filter.endDate = aEndDate;
}
// Set filter for start date yesterday and end date tomorrow
let yesterday = new Date(Date.now() - 86400000); // 24 hours = 86400000 ms
let tomorrow = new Date(Date.now() + 86400000);
filter.startDate = yesterday;
filter.endDate = tomorrow;
return getMessages(filter, false)
.then(function(aFoundMessages) {
log(" Found " + aFoundMessages.length + " messages, expected " +
aExpectedMessages.length);
is(aFoundMessages.length, aExpectedMessages.length, "aFoundMessages.length");
});
}
log("Getting SMS messages with dates between " + yesterday + " and "
+ tomorrow +".");
let cursor = manager.getMessages(filter, false);
ok(cursor instanceof DOMCursor,
"cursor is instanceof " + cursor.constructor);
cursor.onsuccess = function(event) {
log("Received 'onsuccess' event.");
if (cursor.result) {
// Another message found
log("Got SMS (id: " + cursor.result.id + ").");
// Store found message
foundSmsList.push(cursor.result);
// Now get next message in the list
cursor.continue();
} else {
// No more messages; ensure correct number found
if (foundSmsList.length == smsList.length) {
log("SMS getMessages returned " + foundSmsList.length +
" messages as expected.");
verifyFoundMsgs(foundSmsList);
} else {
log("SMS getMessages returned " + foundSmsList.length +
" messages, but expected " + smsList.length + ".");
ok(false, "Incorrect number of messages returned by manager.getMessages");
deleteAllMsgs(cleanUp);
}
function reduceMessages(aMessages, aCompare) {
return aMessages.reduce(function(results, message) {
if (aCompare(message.timestamp)) {
results.push(message);
}
};
cursor.onerror = function(event) {
log("Received 'onerror' event.");
ok(event.target.error, "domerror obj");
log("manager.getMessages error: " + event.target.error.name);
ok(false,"Could not get SMS messages");
cleanUp();
};
return results;
}, []);
}
function verifyFoundMsgs(foundSmsList) {
for (var x = 0; x < foundSmsList.length; x++) {
is(foundSmsList[x].id, smsList[x].id, "id");
is(foundSmsList[x].timestamp, smsList[x].timestamp, "timestmap");
}
deleteAllMsgs(cleanUp);
}
startTestCommon(function testCaseMain() {
let startTime, endTime;
let allMessages;
function cleanUp() {
manager.onreceived = null;
SpecialPowers.removePermission("sms", document);
SpecialPowers.clearUserPref("dom.sms.enabled");
finish();
}
return simulateIncomingSms()
.then((aMessages) => {
allMessages = aMessages;
startTime = aMessages[0].timestamp;
endTime = aMessages[NUMBER_OF_MESSAGES - 1].timestamp;
log("startTime: " + startTime + ", endTime: " + endTime);
})
// Start the test
verifyInitialState();
// Should return all messages.
//
.then(() => log("Testing [startTime, )"))
.then(() => test(new Date(startTime), null, allMessages))
.then(() => log("Testing (, endTime]"))
.then(() => test(null, new Date(endTime), allMessages))
.then(() => log("Testing [startTime, endTime]"))
.then(() => test(new Date(startTime), new Date(endTime), allMessages))
// Should return only messages with timestamp <= startTime.
//
.then(() => log("Testing [, startTime)"))
.then(() => test(null, new Date(startTime),
reduceMessages(allMessages,
(function(a, b) {
return b <= a;
}).bind(null, startTime))))
// Should return only messages with timestamp <= startTime + 1.
//
.then(() => log("Testing [, startTime + 1)"))
.then(() => test(null, new Date(startTime + 1),
reduceMessages(allMessages,
(function(a, b) {
return b <= a;
}).bind(null, startTime + 1))))
// Should return only messages with timestamp >= endTime.
//
.then(() => log("Testing [endTime, )"))
.then(() => test(new Date(endTime), null,
reduceMessages(allMessages,
(function(a, b) {
return b >= a;
}).bind(null, endTime))))
// Should return only messages with timestamp >= endTime - 1.
//
.then(() => log("Testing [endTime - 1, )"))
.then(() => test(new Date(endTime - 1), null,
reduceMessages(allMessages,
(function(a, b) {
return b >= a;
}).bind(null, endTime - 1))))
// Should return none.
//
.then(() => log("Testing [endTime + 1, )"))
.then(() => test(new Date(endTime + 1), null, []))
.then(() => log("Testing [endTime + 1, endTime + 86400000]"))
.then(() => test(new Date(endTime + 1), new Date(endTime + 86400000), []))
.then(() => log("Testing (, startTime - 1]"))
.then(() => test(null, new Date(startTime - 1), []))
.then(() => log("Testing [startTime - 86400000, startTime - 1]"))
.then(() => test(new Date(startTime - 86400000), new Date(startTime - 1), []));
});

View File

@ -1,176 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
SpecialPowers.addPermission("sms", true, document);
SpecialPowers.setBoolPref("dom.sms.enabled", true);
let manager = window.navigator.mozMobileMessage;
let numberMsgs = 10;
let smsList = new Array();
function verifyInitialState() {
log("Verifying initial state.");
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
// Ensure test is starting clean with no existing sms messages
deleteAllMsgs(simulateIncomingSms);
}
function deleteAllMsgs(nextFunction) {
let msgList = new Array();
let filter = new MozSmsFilter;
let cursor = manager.getMessages(filter, false);
ok(cursor instanceof DOMCursor,
"cursor is instanceof " + cursor.constructor);
cursor.onsuccess = function(event) {
// Check if message was found
if (cursor.result) {
msgList.push(cursor.result.id);
// Now get next message in the list
cursor.continue();
} else {
// No (more) messages found
if (msgList.length) {
log("Found " + msgList.length + " SMS messages to delete.");
deleteMsgs(msgList, nextFunction);
} else {
log("No SMS messages found.");
nextFunction();
}
}
};
cursor.onerror = function(event) {
log("Received 'onerror' event.");
ok(event.target.error, "domerror obj");
log("manager.getMessages error: " + event.target.error.name);
ok(false,"Could not get SMS messages");
cleanUp();
};
}
function deleteMsgs(msgList, nextFunction) {
let smsId = msgList.shift();
log("Deleting SMS (id: " + smsId + ").");
let request = manager.delete(smsId);
ok(request instanceof DOMRequest,
"request is instanceof " + request.constructor);
request.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
if (event.target.result) {
// Message deleted, continue until none are left
if (msgList.length) {
deleteMsgs(msgList, nextFunction);
} else {
log("Finished deleting SMS messages.");
nextFunction();
}
} else {
log("SMS delete failed.");
ok(false,"manager.delete request returned false");
cleanUp();
}
};
request.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
ok(false, "manager.delete request returned unexpected error: "
+ event.target.error.name );
cleanUp();
};
}
function simulateIncomingSms() {
let text = "Incoming SMS number " + (smsList.length + 1);
let remoteNumber = "5552229797";
log("Simulating incoming SMS number " + (smsList.length + 1) + " of "
+ numberMsgs + ".");
// Simulate incoming sms sent from remoteNumber to our emulator
rcvdEmulatorCallback = false;
runEmulatorCmd("sms send " + remoteNumber + " " + text, function(result) {
is(result[0], "OK", "emulator callback");
rcvdEmulatorCallback = true;
});
}
// Callback for incoming sms
manager.onreceived = function onreceived(event) {
log("Received 'onreceived' sms event.");
let incomingSms = event.message;
log("Received SMS (id: " + incomingSms.id + ").");
smsList.push(incomingSms);
// Wait for emulator to catch up before continuing
waitFor(nextRep,function() {
return(rcvdEmulatorCallback);
});
};
function nextRep() {
if (smsList.length < numberMsgs) {
simulateIncomingSms();
} else {
// Now test the filter
getMsgs();
}
}
function getMsgs() {
var filter = new MozSmsFilter();
let foundSmsList = new Array();
// Set filter for start date 2 days ago and end date yesterday (so 0 found)
let yesterday = new Date(Date.now() - 86400000); // 24 hours = 86400000 ms
let twoDaysAgo = new Date(Date.now() - 172800000);
filter.startDate = twoDaysAgo;
filter.endDate = yesterday;
log("Getting SMS messages with dates between " + twoDaysAgo + " and "
+ yesterday +".");
let cursor = manager.getMessages(filter, false);
ok(cursor instanceof DOMCursor,
"cursor is instanceof " + cursor.constructor);
cursor.onsuccess = function(event) {
log("Received 'onsuccess' event.");
if (cursor.result) {
// Another message found
log("Got SMS (id: " + cursor.result.id + ").");
log("SMS getMessages returned a message but should not have.");
ok(false, "SMS date filter did not work");
} else {
// No messages found as expected
log("SMS getMessages returned zero messages as expected.");
}
deleteAllMsgs(cleanUp);
};
cursor.onerror = function(event) {
log("Received 'onerror' event.");
ok(event.target.error, "domerror obj");
log("manager.getMessages error: " + event.target.error.name);
ok(false,"Could not get SMS messages");
cleanUp();
};
}
function cleanUp() {
manager.onreceived = null;
SpecialPowers.removePermission("sms", document);
SpecialPowers.clearUserPref("dom.sms.enabled");
finish();
}
// Start the test
verifyInitialState();

View File

@ -2,227 +2,30 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
SpecialPowers.setBoolPref("dom.sms.enabled", true);
SpecialPowers.setBoolPref("dom.sms.requestStatusReport", true);
SpecialPowers.addPermission("sms", true, document);
MARIONETTE_HEAD_JS = 'head.js';
const REMOTE = "5559997777"; // the remote number
const EMULATOR = "15555215554"; // the emulator's number
let manager = window.navigator.mozMobileMessage;
let inText = "Incoming SMS message. Mozilla Firefox OS!";
let outText = "Outgoing SMS message. Mozilla Firefox OS!";
let gotSmsOnsent = false;
let gotReqOnsuccess = false;
let inSmsId = 0;
let outSmsId = 0;
let inThreadId = 0;
let outThreadId = 0;
let inSmsTimeStamp;
let inSmsSentTimeStamp;
let outSmsTimeStamp;
let outSmsSentTimeStamp;
const IN_TEXT = "Incoming SMS message. Mozilla Firefox OS!";
const OUT_TEXT = "Outgoing SMS message. Mozilla Firefox OS!";
function verifyInitialState() {
log("Verifying initial state.");
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
simulateIncomingSms();
}
startTestBase(function testCaseMain() {
let incomingSms, outgoingSms;
function simulateIncomingSms() {
log("Simulating incoming SMS.");
return ensureMobileMessage()
manager.onreceived = function onreceived(event) {
log("Received 'onreceived' event.");
let incomingSms = event.message;
ok(incomingSms, "incoming sms");
ok(incomingSms.id, "sms id");
inSmsId = incomingSms.id;
log("Received SMS (id: " + inSmsId + ").");
ok(incomingSms.threadId, "thread id");
inThreadId = incomingSms.threadId;
is(incomingSms.body, inText, "msg body");
is(incomingSms.delivery, "received", "delivery");
is(incomingSms.deliveryStatus, "success", "deliveryStatus");
is(incomingSms.read, false, "read");
is(incomingSms.receiver, EMULATOR, "receiver");
is(incomingSms.sender, REMOTE, "sender");
is(incomingSms.messageClass, "normal", "messageClass");
inSmsTimeStamp = incomingSms.timestamp;
inSmsSentTimeStamp = incomingSms.sentTimestamp;
sendSms();
};
// Simulate incoming sms sent from remoteNumber to our emulator
runEmulatorCmd("sms send " + REMOTE + " " + inText, function(result) {
is(result[0], "OK", "emulator output");
});
}
.then(() => sendTextSmsToEmulatorAndWait(REMOTE, IN_TEXT))
.then((aMessage) => { incomingSms = aMessage; })
function sendSms() {
log("Sending an SMS.");
manager.onsent = function(event) {
log("Received 'onsent' event.");
gotSmsOnsent = true;
let sentSms = event.message;
ok(sentSms, "outgoing sms");
ok(sentSms.id, "sms id");
outSmsId = sentSms.id;
log("Sent SMS (id: " + outSmsId + ").");
ok(sentSms.threadId, "thread id");
outThreadId = sentSms.threadId;
is(sentSms.body, outText, "msg body");
is(sentSms.delivery, "sent", "delivery");
is(sentSms.deliveryStatus, "pending", "deliveryStatus");
is(sentSms.read, true, "read");
is(sentSms.receiver, REMOTE, "receiver");
is(sentSms.sender, EMULATOR, "sender");
is(sentSms.messageClass, "normal", "messageClass");
outSmsTimeStamp = sentSms.timestamp;
outSmsSentTimeStamp = sentSms.sentTimestamp;
is(sentSms.deliveryTimestamp, 0, "deliveryTimestamp is 0");
.then(() => sendSmsWithSuccess(REMOTE, OUT_TEXT))
.then((aMessage) => { outgoingSms = aMessage; })
if (gotSmsOnsent && gotReqOnsuccess) { getReceivedSms(); }
};
.then(() => getMessage(incomingSms.id))
.then((aMessage) => compareSmsMessage(aMessage, incomingSms))
let requestRet = manager.send(REMOTE, outText);
ok(requestRet, "smsrequest obj returned");
.then(() => getMessage(outgoingSms.id))
.then((aMessage) => compareSmsMessage(aMessage, outgoingSms))
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
gotReqOnsuccess = true;
if(event.target.result){
if (gotSmsOnsent && gotReqOnsuccess) { getReceivedSms(); }
} else {
log("smsrequest returned false for manager.send");
ok(false,"SMS send failed");
cleanUp();
}
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
ok(false, "manager.send request returned unexpected error: "
+ event.target.error.name );
cleanUp();
};
}
function getReceivedSms() {
log("Getting the received SMS message (id: " + inSmsId + ").");
let requestRet = manager.getMessage(inSmsId);
ok(requestRet, "smsrequest obj returned");
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
ok(event.target.result, "smsrequest event.target.result");
let foundSms = event.target.result;
is(foundSms.id, inSmsId, "SMS id matches");
log("Got SMS (id: " + foundSms.id + ").");
is(foundSms.threadId, inThreadId, "thread id matches");
is(foundSms.body, inText, "SMS msg text matches");
is(foundSms.delivery, "received", "delivery");
is(foundSms.deliveryStatus, "success", "deliveryStatus");
is(foundSms.read, false, "read");
is(foundSms.receiver, EMULATOR, "receiver");
is(foundSms.sender, REMOTE, "sender");
is(foundSms.messageClass, "normal", "messageClass");
is(foundSms.timestamp, inSmsTimeStamp, "timestamp matches");
is(foundSms.sentTimestamp, inSmsSentTimeStamp, "sentTimestamp matches");
getSentSms();
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
is(event.target.error.name, "NotFoundError", "error returned");
log("Could not get SMS (id: " + inSmsId + ") but should have.");
ok(false,"Could not get received SMS");
cleanUp();
};
}
function getSentSms() {
log("Getting the sent SMS message (id: " + outSmsId + ").");
let requestRet = manager.getMessage(outSmsId);
ok(requestRet, "smsrequest obj returned");
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
ok(event.target.result, "smsrequest event.target.result");
let foundSms = event.target.result;
is(foundSms.id, outSmsId, "SMS id matches");
log("Got SMS (id: " + foundSms.id + ").");
is(foundSms.threadId, outThreadId, "thread id matches");
is(foundSms.body, outText, "SMS msg text matches");
is(foundSms.delivery, "sent", "delivery");
is(foundSms.deliveryStatus, "pending", "deliveryStatus");
is(foundSms.read, true, "read");
is(foundSms.receiver, REMOTE, "receiver");
is(foundSms.sender, EMULATOR, "sender");
is(foundSms.messageClass, "normal", "messageClass");
is(foundSms.timestamp, outSmsTimeStamp, "timestamp matches");
is(foundSms.sentTimestamp, outSmsSentTimeStamp, "sentTimestamp matches");
deleteMsgs();
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
is(event.target.error.name, "NotFoundError", "error returned");
log("Could not get SMS (id: " + outSmsId + ") but should have.");
ok(false,"Could not get sent SMS");
cleanUp();
};
}
function deleteMsgs() {
log("Deleting SMS (id: " + inSmsId + ").");
let requestRet = manager.delete(inSmsId);
ok(requestRet,"smsrequest obj returned");
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
if(event.target.result){
log("Deleting SMS (id: " + outSmsId + ").");
let nextReqRet = manager.delete(outSmsId);
ok(nextReqRet,"smsrequest obj returned");
nextReqRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
if(event.target.result) {
cleanUp();
} else {
log("smsrequest returned false for manager.delete");
ok(false,"SMS delete failed");
}
};
} else {
log("smsrequest returned false for manager.delete");
ok(false,"SMS delete failed");
}
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
ok(false, "manager.delete request returned unexpected error: "
+ event.target.error.name );
cleanUp();
};
}
function cleanUp() {
manager.onreceived = null;
SpecialPowers.removePermission("sms", document);
SpecialPowers.clearUserPref("dom.sms.enabled");
SpecialPowers.clearUserPref("dom.sms.requestStatusReport");
finish();
}
// Start the test
verifyInitialState();
.then(deleteAllMessages);
});

View File

@ -2,119 +2,49 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = 'head.js';
SpecialPowers.setBoolPref("dom.sms.enabled", true);
SpecialPowers.addPermission("sms", true, document);
const TEXT = "Incoming SMS message. Mozilla Firefox OS!";
const REMOTE = "5559997777";
let manager = window.navigator.mozMobileMessage;
let myNumber = "15555215554";
let inText = "Incoming SMS message. Mozilla Firefox OS!";
let remoteNumber = "5559997777";
let inSmsId = 0;
function getNonExistentMsg(aId) {
log("Attempting to get non-existent message (id: " + aId + ").");
function verifyInitialState() {
log("Verifying initial state.");
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
simulateIncomingSms();
return getMessage(aId)
.then(function onresolve() {
ok(false, "request succeeded when tried to get non-existent sms");
}, function onreject(aEvent) {
let error = aEvent.target.error;
ok(error, "DOMError");
is(error.name, "NotFoundError", "error.name");
});
}
function simulateIncomingSms() {
log("Simulating incoming SMS.");
function getMsgInvalidId(aId) {
log("Attempting to get sms with invalid id (id: " + aId + ").");
manager.onreceived = function onreceived(event) {
log("Received 'onreceived' event.");
let incomingSms = event.message;
ok(incomingSms, "incoming sms");
ok(incomingSms.id, "sms id");
inSmsId = incomingSms.id;
log("Received SMS (id: " + inSmsId + ").");
is(incomingSms.body, inText, "msg body");
is(incomingSms.delivery, "received", "delivery");
getNonExistentMsg();
};
// Simulate incoming sms sent from remoteNumber to our emulator
runEmulatorCmd("sms send " + remoteNumber + " " + inText, function(result) {
is(result[0], "OK", "emulator output");
});
return getMessage(aId)
.then(function onresolve() {
ok(false, "request succeeded when tried to get message with " +
"invalid id (id: " + aId + ").");
}, function onreject(aEvent) {
let error = aEvent.target.error;
ok(error, "DOMError");
is(error.name, "NotFoundError", "error.name");
});
}
function getNonExistentMsg() {
let msgIdNoExist = inSmsId + 1;
log("Attempting to get non-existent message (id: " + msgIdNoExist + ").");
let requestRet = manager.getMessage(msgIdNoExist);
ok(requestRet, "smsrequest obj returned");
startTestBase(function testCaseMain() {
let lastMessageId;
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
ok(event.target.result, "smsrequest event.target.result");
let foundSms = event.target.result;
log("Got SMS (id: " + foundSms.id + ") but should not have.");
ok(false, "Smsrequest successful when tried to get non-existent sms");
getMsgInvalidId();
};
return ensureMobileMessage()
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
is(event.target.error.name, "NotFoundError", "error returned");
log("Could not get SMS (id: " + msgIdNoExist + ") as expected.");
getMsgInvalidId();
};
}
.then(() => sendTextSmsToEmulatorAndWait(REMOTE, TEXT))
.then((aMessage) => { lastMessageId = aMessage.id; })
function getMsgInvalidId() {
invalidId = -1;
log("Attempting to get sms with invalid id (id: " + invalidId + ").");
let requestRet = manager.getMessage(invalidId);
ok(requestRet, "smsrequest obj returned");
.then(() => getNonExistentMsg(lastMessageId + 1))
.then(() => getMsgInvalidId(-1))
.then(() => getMsgInvalidId(0))
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
ok(event.target.result, "smsrequest event.target.result");
let foundSms = event.target.result;
log("Got SMS (id: " + foundSms.id + ") but should not have.");
ok(false, "Smsrequest successful when tried to get message with " +
"invalid id (id: " + invalidId + ").");
deleteMsg();
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
is(event.target.error.name, "NotFoundError", "error returned");
log("Could not get SMS (id: -1) as expected.");
deleteMsg();
};
}
function deleteMsg() {
log("Deleting SMS (id: " + inSmsId + ").");
let requestRet = manager.delete(inSmsId);
ok(requestRet,"smsrequest obj returned");
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
if(event.target.result){
cleanUp();
}
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
ok(false, "manager.delete request returned unexpected error: "
+ event.target.error.name );
cleanUp();
};
}
function cleanUp() {
manager.onreceived = null;
SpecialPowers.removePermission("sms", document);
SpecialPowers.setBoolPref("dom.sms.enabled", false);
finish();
}
// Start the test
verifyInitialState();
.then(deleteAllMessages);
});

View File

@ -2,226 +2,45 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
MARIONETTE_HEAD_JS = 'head.js';
SpecialPowers.addPermission("sms", true, document);
SpecialPowers.setBoolPref("dom.sms.enabled", true);
let manager = window.navigator.mozMobileMessage;
let numberMsgs = 10;
let smsList = new Array();
function verifyInitialState() {
log("Verifying initial state.");
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
// Ensure test is starting clean with no existing sms messages
deleteAllMsgs(simulateIncomingSms);
}
function isIn(aVal, aArray, aMsg) {
ok(aArray.indexOf(aVal) >= 0, aMsg);
}
function deleteAllMsgs(nextFunction) {
let msgList = new Array();
let smsFilter = new MozSmsFilter;
let cursor = manager.getMessages(smsFilter, false);
ok(cursor instanceof DOMCursor,
"cursor is instanceof " + cursor.constructor);
cursor.onsuccess = function(event) {
// Check if message was found
if (cursor.result) {
msgList.push(cursor.result.id);
// Now get next message in the list
cursor.continue();
} else {
// No (more) messages found
if (msgList.length) {
log("Found " + msgList.length + " SMS messages to delete.");
deleteMsgs(msgList, nextFunction);
} else {
log("No SMS messages found.");
nextFunction();
}
}
};
cursor.onerror = function(event) {
log("Received 'onerror' event.");
ok(event.target.error, "domerror obj");
log("manager.getMessages error: " + event.target.error.name);
ok(false,"Could not get SMS messages");
cleanUp();
};
}
function deleteMsgs(msgList, nextFunction) {
let smsId = msgList.shift();
log("Deleting SMS (id: " + smsId + ").");
let request = manager.delete(smsId);
ok(request instanceof DOMRequest,
"request is instanceof " + request.constructor);
request.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
if (event.target.result) {
// Message deleted, continue until none are left
if (msgList.length) {
deleteMsgs(msgList, nextFunction);
} else {
log("Finished deleting SMS messages.");
nextFunction();
}
} else {
log("SMS delete failed.");
ok(false,"manager.delete request returned false");
cleanUp();
}
};
request.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
ok(false, "manager.delete request returned unexpected error: "
+ event.target.error.name );
cleanUp();
};
}
const NUMBER_OF_MESSAGES = 10;
const REMOTE = "5552229797";
function simulateIncomingSms() {
let text = "Incoming SMS number " + (smsList.length + 1);
let remoteNumber = "5552229797";
let promise = Promise.resolve();
let messages = [];
log("Simulating incoming SMS number " + (smsList.length + 1) + " of "
+ numberMsgs + ".");
// Simulate incoming sms sent from remoteNumber to our emulator
rcvdEmulatorCallback = false;
runEmulatorCmd("sms send " + remoteNumber + " " + text, function(result) {
is(result[0], "OK", "emulator callback");
rcvdEmulatorCallback = true;
});
}
// Callback for incoming sms
manager.onreceived = function onreceived(event) {
log("Received 'onreceived' sms event.");
let incomingSms = event.message;
log("Received SMS (id: " + incomingSms.id + ").");
// Add newly received message to array of received msgs
smsList.push(incomingSms);
// Wait for emulator to catch up before continuing
waitFor(nextRep,function() {
return(rcvdEmulatorCallback);
});
};
function nextRep() {
if (smsList.length < numberMsgs) {
simulateIncomingSms();
} else {
log("Received " + numberMsgs + " sms messages in total.");
getMsgs(false);
}
}
function getMsgs(reverse) {
let smsFilter = new MozSmsFilter;
let foundSmsCount = 0;
let foundSmsList = new Array();
if (!reverse) {
log("Getting the sms messages.");
} else {
log("Getting the sms messages in reverse order.");
for (let i = 0; i< NUMBER_OF_MESSAGES; i++) {
let text = "Incoming SMS number " + i;
promise = promise.then(() => sendTextSmsToEmulatorAndWait(REMOTE, text))
.then(function(aMessage) {
messages.push(aMessage);
return messages;
});
}
// Note: This test is intended for getMessages, so just a basic test with
// no filter (default); separate tests will be written for sms filtering
let cursor = manager.getMessages(smsFilter, reverse);
ok(cursor instanceof DOMCursor,
"cursor is instanceof " + cursor.constructor);
cursor.onsuccess = function(event) {
log("Received 'onsuccess' event.");
if (cursor.result) {
// Another message found
log("Got SMS (id: " + cursor.result.id + ").");
foundSmsCount++;
// Store found message
foundSmsList.push(cursor.result);
// Now get next message in the list
cursor.continue();
} else {
// No more messages; ensure correct number found
if (foundSmsCount == numberMsgs) {
log("SMS getMessages returned " + foundSmsCount +
" messages as expected.");
} else {
log("SMS getMessages returned " + foundSmsCount +
" messages, but expected " + numberMsgs + ".");
ok(false, "Incorrect number of messages returned by manager.getMessages");
}
verifyFoundMsgs(foundSmsList, reverse);
}
};
cursor.onerror = function(event) {
log("Received 'onerror' event.");
ok(event.target.error, "domerror obj");
log("manager.getMessages error: " + event.target.error.name);
ok(false,"Could not get SMS messages");
cleanUp();
};
return promise;
}
function verifyFoundMsgs(foundSmsList, reverse) {
if (reverse) {
smsList.reverse();
}
for (var x = 0; x < numberMsgs; x++) {
is(foundSmsList[x].id, smsList[x].id, "id");
is(foundSmsList[x].threadId, smsList[x].threadId, "thread id");
is(foundSmsList[x].body, smsList[x].body, "body");
is(foundSmsList[x].delivery, smsList[x].delivery, "delivery");
is(foundSmsList[x].read, smsList[x].read, "read");
// Bug 805799: receiver null when onreceived event is fired, until do a
// getMessage. Default emulator (receiver) phone number is 15555215554
if (!smsList[x].receiver) {
isIn(foundSmsList[x].receiver, ["15555215554", "+15555215554"], "receiver");
} else {
isIn(foundSmsList[x].receiver, [smsList[x].receiver, "+15555215554"], "receiver");
}
isIn(foundSmsList[x].sender, [smsList[x].sender, "+15552229797"], "sender");
is(foundSmsList[x].timestamp, smsList[x].timestamp, "timestamp");
is(foundSmsList[x].sentTimestamp, smsList[x].sentTimestamp, "sentTimestamp");
function verifyFoundMsgs(foundSmsList, smsList) {
for (let x = 0; x < NUMBER_OF_MESSAGES; x++) {
compareSmsMessage(foundSmsList[x], smsList[x]);
}
log("Content in all of the returned SMS messages is correct.");
if (!reverse) {
// Now get messages in reverse
getMsgs(true);
} else {
// Finished, delete all messages
deleteAllMsgs(cleanUp);
};
}
function cleanUp() {
manager.onreceived = null;
SpecialPowers.removePermission("sms", document);
SpecialPowers.clearUserPref("dom.sms.enabled");
finish();
}
startTestCommon(function testCaseMain() {
let incomingMessages;
// Start the test
verifyInitialState();
return simulateIncomingSms()
.then((aMessages) => { incomingMessages = aMessages; })
.then(() => getMessages(null, false))
.then((aFoundMessages) => verifyFoundMsgs(aFoundMessages, incomingMessages))
.then(() => getMessages(null, true))
.then((aFoundMessages) => verifyFoundMsgs(aFoundMessages,
incomingMessages.slice().reverse()));
});

View File

@ -77,21 +77,8 @@ function addTest(text, segments, charsPerSegment, charsAvailableInLastSegment) {
});
}
function addTestThrows(text) {
tasks.push(function() {
log("Testing '" + text + "' ...");
try {
let domRequest = manager.getSegmentInfoForText(text);
ok(false, "Not thrown.");
tasks.finish();
} catch (e) {
tasks.next();
}
});
}
addTestThrows(null);
addTest(null, 1, PDU_MAX_USER_DATA_7BIT,
PDU_MAX_USER_DATA_7BIT - "null".length);
// Testing "undefined".
addTest(undefined, 1, PDU_MAX_USER_DATA_7BIT,

View File

@ -2,50 +2,41 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
SpecialPowers.setBoolPref("dom.sms.enabled", true);
SpecialPowers.addPermission("sms", true, document);
MARIONETTE_HEAD_JS = 'head.js';
const SENDER = "5555552368"; // the remote number
const RECEIVER = "15555215554"; // the emulator's number
let manager = window.navigator.mozMobileMessage;
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
const SHORT_BODY = "Hello SMS world!";
const LONG_BODY = new Array(17).join(SHORT_BODY);
ok(LONG_BODY.length > 160, "LONG_BODY.length");
let body = "Hello SMS world!";
function checkMessage(aMessage, aBody) {
ok(aMessage instanceof MozSmsMessage, "Message is instanceof MozSmsMessage");
let completed = false;
runEmulatorCmd("sms send " + SENDER + " " + body, function(result) {
log("Sent fake SMS: " + result);
is(result[0], "OK", "Emulator command result");
completed = true;
});
manager.onreceived = function onreceived(event) {
log("Received an SMS!");
let message = event.message;
ok(message instanceof MozSmsMessage, "Message is instanceof MozSmsMessage");
ok(message.threadId, "thread id");
is(message.delivery, "received", "Message delivery");
is(message.deliveryStatus, "success", "Delivery status");
is(message.sender, SENDER, "Message sender");
is(message.receiver, RECEIVER, "Message receiver");
is(message.body, body, "Message body");
is(message.messageClass, "normal", "Message class");
is(message.deliveryTimestamp, 0, "deliveryTimestamp is 0");
cleanUp();
is(aMessage.type, "sms", "message.type");
ok(aMessage.id, "message.id");
ok(aMessage.threadId, "message.threadId");
ok(aMessage.iccId, "message.iccId");
is(aMessage.delivery, "received", "message.delivery");
is(aMessage.deliveryStatus, "success", "message.deliveryStatus");
is(aMessage.sender, SENDER, "message.sender");
is(aMessage.receiver, RECEIVER, "message.receiver");
is(aMessage.body, aBody, "message.body");
is(aMessage.messageClass, "normal", "message.messageClass");
ok(aMessage.timestamp, "message.timestamp");
is(aMessage.deliveryTimestamp, 0, "message.deliveryTimestamp");
ok(aMessage.sentTimestamp, "message.sentTimestamp");
is(aMessage.read, false, "message.read");
};
function cleanUp() {
if (!completed) {
window.setTimeout(cleanUp, 100);
return;
}
SpecialPowers.removePermission("sms", document);
finish();
function test(aBody) {
return sendTextSmsToEmulatorAndWait(SENDER, aBody)
.then((aMessage) => checkMessage(aMessage, aBody));
}
startTestBase(function testCaseMain() {
return ensureMobileMessage()
.then(() => test(SHORT_BODY))
.then(() => test(LONG_BODY));
});

View File

@ -1,115 +0,0 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
SpecialPowers.setBoolPref("dom.sms.enabled", true);
SpecialPowers.addPermission("sms", true, document);
const SENDER = "5555552368"; // the remote number
const RECEIVER = "15555215554"; // the emulator's number
let manager = window.navigator.mozMobileMessage;
function verifyInitialState() {
log("Verifying initial state.");
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
simulateIncomingSms();
}
function simulateIncomingSms() {
let msgText = "";
log("Simulating incoming SMS.");
// Have message text > max SMS size (160 char) so will be a multi-part SMS
for (var x = 1; x <= 24; x++) {
msgText += 'FirefoxOS ';
}
manager.onreceived = function onreceived(event) {
log("Received 'onreceived' event.");
let incomingSms = event.message;
ok(incomingSms, "incoming sms");
ok(incomingSms.id, "sms id");
log("Received SMS (id: " + incomingSms.id + ").");
ok(incomingSms.threadId, "thread id");
is(incomingSms.body, msgText, "msg body");
is(incomingSms.delivery, "received", "delivery");
is(incomingSms.read, false, "read");
is(incomingSms.receiver, RECEIVER, "receiver");
is(incomingSms.sender, SENDER, "sender");
is(incomingSms.deliveryTimestamp, 0, "deliveryTimestamp is 0");
verifySmsExists(incomingSms);
};
runEmulatorCmd("sms send " + SENDER + " " + msgText, function(result) {
is(result[0], "OK", "emulator output");
});
}
function verifySmsExists(incomingSms) {
log("Getting SMS (id: " + incomingSms.id + ").");
let requestRet = manager.getMessage(incomingSms.id);
ok(requestRet, "smsrequest obj returned");
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
ok(event.target.result, "smsrequest event.target.result");
let foundSms = event.target.result;
is(foundSms.id, incomingSms.id, "found SMS id matches");
is(foundSms.threadId, incomingSms.threadId, "found SMS thread id matches");
is(foundSms.body, incomingSms.body, "found SMS msg text matches");
is(foundSms.delivery, "received", "delivery");
is(foundSms.read, false, "read");
is(foundSms.receiver, RECEIVER, "receiver");
is(foundSms.sender, SENDER, "sender");
log("Got SMS (id: " + foundSms.id + ") as expected.");
deleteSms(incomingSms);
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
is(event.target.error.name, "NotFoundError", "error returned");
log("Could not get SMS (id: " + incomingSms.id + ") but should have.");
ok(false,"SMS was not found");
cleanUp();
};
}
function deleteSms(smsMsgObj){
log("Deleting SMS (id: " + smsMsgObj.id + ") using smsmsg obj parameter.");
let requestRet = manager.delete(smsMsgObj);
ok(requestRet,"smsrequest obj returned");
requestRet.onsuccess = function(event) {
log("Received 'onsuccess' smsrequest event.");
if(event.target.result){
cleanUp();
} else {
log("smsrequest returned false for manager.delete");
ok(false,"SMS delete failed");
cleanUp();
}
};
requestRet.onerror = function(event) {
log("Received 'onerror' smsrequest event.");
ok(event.target.error, "domerror obj");
ok(false, "manager.delete request returned unexpected error: "
+ event.target.error.name );
cleanUp();
};
}
function cleanUp() {
manager.onreceived = null;
SpecialPowers.removePermission("sms", document);
SpecialPowers.clearUserPref("dom.sms.enabled");
finish();
}
// Start the test
verifyInitialState();

View File

@ -2,18 +2,10 @@
* http://creativecommons.org/publicdomain/zero/1.0/ */
MARIONETTE_TIMEOUT = 60000;
SpecialPowers.setBoolPref("dom.sms.enabled", true);
SpecialPowers.setBoolPref("dom.sms.strict7BitEncoding", false);
SpecialPowers.setBoolPref("dom.sms.requestStatusReport", true);
SpecialPowers.addPermission("sms", true, document);
MARIONETTE_HEAD_JS = 'head.js';
const SENDER = "15555215554"; // the emulator's number
let manager = window.navigator.mozMobileMessage;
ok(manager instanceof MozMobileMessageManager,
"manager is instance of " + manager.constructor);
const SHORT_BODY = "Hello SMS world!";
const LONG_BODY = "Let me not to the marriage of true minds\n"
+ "Admit impediments. Love is not love\n"
@ -35,8 +27,10 @@ function checkMessage(message, delivery, body) {
ok(message instanceof MozSmsMessage,
"message is instanceof " + message.constructor);
is(message.type, "sms", "message.type");
ok(message.id, "message.id");
ok(message.threadId, "message.threadId");
ok(message.iccId, "message.iccId");
is(message.delivery, delivery, "message.delivery");
is(message.deliveryStatus, "pending", "message.deliveryStatus");
is(message.sender, SENDER, "message.sender");
@ -56,148 +50,105 @@ function checkMessage(message, delivery, body) {
}
}
function doSendMessageAndCheckSuccess(receivers, body, callback) {
let options = {};
function isReceiverMatch(aReceiver, aEvent) {
// Bug 838542: following check throws an exception and fails this case.
// ok(event instanceof MozSmsEvent,
// "event is instanceof " + event.constructor)
ok(aEvent, "sending event is valid");
let message = aEvent.message;
return message.receiver === aReceiver;
}
function doSingleRequest(aRequest, aReceiver, aBody, aNow) {
let sendingGot = false, sentGot = false, successGot = false;
let sendingMessage;
let promises = [];
promises.push(waitForManagerEvent("sending",
isReceiverMatch.bind(null, aReceiver))
.then(function(aEvent) {
log(" onsending event for '" + aReceiver + "' received.");
sendingMessage = aEvent.message;
checkMessage(sendingMessage, "sending", aBody);
// timestamp is in seconds.
ok(Math.floor(sendingMessage.timestamp / 1000) >= Math.floor(aNow / 1000),
"sent timestamp is valid");
ok(!sendingGot, "sending event should not have been triggered");
ok(!sentGot, "sent event should not have been triggered");
ok(!successGot, "success event should not have been triggered");
sendingGot = true;
}));
promises.push(waitForManagerEvent("sent",
isReceiverMatch.bind(null, aReceiver))
.then(function(aEvent) {
log(" onsent event for '" + aReceiver + "' received.");
let message = aEvent.message;
checkMessage(message, "sent", aBody);
// Should be mostly identical to sendingMessage.
is(message.id, sendingMessage.id, "message.id");
is(message.receiver, sendingMessage.receiver, "message.receiver");
is(message.body, sendingMessage.body, "message.body");
is(message.timestamp, sendingMessage.timestamp, "message.timestamp");
ok(sendingGot, "sending event should have been triggered");
ok(!sentGot, "sent event should not have been triggered");
ok(successGot, "success event should have been triggered");
sentGot = true;
}));
promises.push(wrapDomRequestAsPromise(aRequest)
.then(function(aEvent) {
log(" onsuccess event for '" + aReceiver + "' received.");
let message = aEvent.target.result;
checkMessage(message, "sent", aBody);
// Should be mostly identical to sendingMessage.
is(message.id, sendingMessage.id, "message.id");
is(message.receiver, sendingMessage.receiver, "message.receiver");
is(message.body, sendingMessage.body, "message.body");
is(message.timestamp, sendingMessage.timestamp, "message.timestamp");
ok(sendingGot, "sending event should have been triggered");
ok(!sentGot, "sent event should not have been triggered");
ok(!successGot, "success event should not have been triggered");
successGot = true;
}));
return Promise.all(promises);
}
function doSendMessageAndCheckSuccess(receivers, body) {
log("Testing sending message(s) to receiver(s): " + JSON.stringify(receivers));
let now = Date.now();
function done() {
let rs = Array.isArray(receivers) ? receivers : [receivers];
// Make sure we've send a message to each distinct receiver.
for (let i = 0; i < rs.length; i++) {
let opt = options[rs[i]];
if (!(opt && opt.onSentCalled && opt.onRequestSuccessCalled)) {
return;
}
}
manager.removeEventListener("sending", onSmsSending);
manager.removeEventListener("sent", onSmsSent);
log("Done!");
window.setTimeout(callback, 0);
}
function checkSentMessage(message, mark) {
checkMessage(message, "sent", body);
let receiver = message && message.receiver;
if (!receiver) {
ok(false, "message.receiver should be valid.");
return;
}
let opt = options[receiver];
if (!opt) {
ok(false, "onsent should be called after onsending.");
return;
}
let saved = opt.saved;
is(message.id, saved.id, "message.id");
is(message.receiver, saved.receiver, "message.receiver");
is(message.body, saved.body, "message.body");
is(message.timestamp, saved.timestamp, "message.timestamp");
opt[mark] = true;
done();
}
function onRequestSuccess(event) {
log("request.onsuccess event received.");
ok(event.target instanceof DOMRequest,
"event.target is instanceof " + event.target.constructor);
event.target.removeEventListener("success", onRequestSuccess);
checkSentMessage(event.target.result, "onRequestSuccessCalled");
}
function onSmsSending(event) {
log("onsending event received.");
// Bug 838542: following check throws an exception and fails this case.
// ok(event instanceof MozSmsEvent,
// "event is instanceof " + event.constructor)
ok(event, "event is valid");
let message = event.message;
checkMessage(message, "sending", body);
// timestamp is in seconds.
ok(Math.floor(message.timestamp / 1000) >= Math.floor(now / 1000),
"sent timestamp is valid");
let receiver = message.receiver;
if (!receiver) {
return;
}
if (options[receiver]) {
ok(false, "duplicated onsending events found!");
return;
}
options[receiver] = {
saved: message,
onSentCalled: false,
onRequestSuccessCalled: false
};
}
function onSmsSent(event) {
log("onsent event received.");
// Bug 838542: following check throws an exception and fails this case.
// ok(event instanceof MozSmsEvent,
// "event is instanceof " + event.constructor)
ok(event, "event is valid");
checkSentMessage(event.message, "onSentCalled");
}
manager.addEventListener("sending", onSmsSending);
manager.addEventListener("sent", onSmsSent);
let result = manager.send(receivers, body);
is(Array.isArray(result), Array.isArray(receivers),
"send() returns an array of requests if receivers is an array");
if (Array.isArray(receivers)) {
is(result.length, receivers.length, "returned array length");
} else {
result = [result];
return Promise.all(result.map(function(request, index) {
return doSingleRequest(request, receivers[index], body, now);
}));
}
for (let i = 0; i < result.length; i++) {
let request = result[i];
ok(request instanceof DOMRequest,
"request is instanceof " + request.constructor);
request.addEventListener("success", onRequestSuccess);
}
return doSingleRequest(result, receivers, body, now);
}
function testSendMessage() {
log("Testing sending message to one receiver:");
doSendMessageAndCheckSuccess("1", SHORT_BODY, testSendMultipartMessage);
}
function testSendMultipartMessage() {
log("Testing sending message to one receiver:");
doSendMessageAndCheckSuccess("1", LONG_BODY,
testSendMessageToMultipleRecipients);
}
function testSendMessageToMultipleRecipients() {
log("Testing sending message to multiple receivers:");
// TODO: bug 788928 - add test cases for ondelivered event.
doSendMessageAndCheckSuccess(["1", "2"], SHORT_BODY, cleanUp);
}
function cleanUp() {
SpecialPowers.removePermission("sms", document);
SpecialPowers.clearUserPref("dom.sms.enabled");
SpecialPowers.clearUserPref("dom.sms.strict7BitEncoding");
SpecialPowers.clearUserPref("dom.sms.requestStatusReport");
finish();
}
testSendMessage();
startTestBase(function testCaseMain() {
return ensureMobileMessage()
.then(() => pushPrefEnv({ set: [['dom.sms.strict7BitEncoding', false],
['dom.sms.requestStatusReport', true]] }))
.then(() => doSendMessageAndCheckSuccess("1", SHORT_BODY))
.then(() => doSendMessageAndCheckSuccess("1", LONG_BODY))
.then(() => doSendMessageAndCheckSuccess(["1", "2"], SHORT_BODY));
});

View File

@ -16,15 +16,15 @@ function run_test() {
//// BooleanValue.decode ////
add_test(function test_BooleanValue_decode() {
for (let i = 0; i < 256; i++) {
if (i == 128) {
wsp_decode_test(MMS.BooleanValue, [128], true);
} else if (i == 129) {
wsp_decode_test(MMS.BooleanValue, [129], false);
} else {
wsp_decode_test(MMS.BooleanValue, [i], null, "CodeError");
}
}
// Valid codes are 128 and 129. Check boundary conditions 0, 1, 127, 130 and
// 255 as well.
wsp_decode_test(MMS.BooleanValue, [0], null, "CodeError");
wsp_decode_test(MMS.BooleanValue, [1], null, "CodeError");
wsp_decode_test(MMS.BooleanValue, [127], null, "CodeError");
wsp_decode_test(MMS.BooleanValue, [128], true);
wsp_decode_test(MMS.BooleanValue, [129], false);
wsp_decode_test(MMS.BooleanValue, [130], null, "CodeError");
wsp_decode_test(MMS.BooleanValue, [255], null, "CodeError");
run_next_test();
});
@ -461,13 +461,15 @@ add_test(function test_MmsHeader_encode() {
//// CancelStatusValue.decode ////
add_test(function test_CancelStatusValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 129)) {
wsp_decode_test(MMS.CancelStatusValue, [i], i);
} else {
wsp_decode_test(MMS.CancelStatusValue, [i], null, "CodeError");
}
}
// Valid codes are 128 and 129. Check boundary conditions 0, 1, 127, 130 and
// 255 as well.
wsp_decode_test(MMS.CancelStatusValue, [0], null, "CodeError");
wsp_decode_test(MMS.CancelStatusValue, [1], null, "CodeError");
wsp_decode_test(MMS.CancelStatusValue, [127], null, "CodeError");
wsp_decode_test(MMS.CancelStatusValue, [128], 128);
wsp_decode_test(MMS.CancelStatusValue, [129], 129);
wsp_decode_test(MMS.CancelStatusValue, [130], null, "CodeError");
wsp_decode_test(MMS.CancelStatusValue, [255], null, "CodeError");
run_next_test();
});
@ -475,13 +477,15 @@ add_test(function test_CancelStatusValue_decode() {
//// CancelStatusValue.encode ////
add_test(function test_CancelStatusValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 129)) {
wsp_encode_test(MMS.CancelStatusValue, i, [i]);
} else {
wsp_encode_test(MMS.CancelStatusValue, i, null, "CodeError");
}
}
// Valid codes are 128 and 129. Check boundary conditions 0, 1, 127, 130 and
// 255 as well.
wsp_encode_test(MMS.CancelStatusValue, 0, null, "CodeError");
wsp_encode_test(MMS.CancelStatusValue, 1, null, "CodeError");
wsp_encode_test(MMS.CancelStatusValue, 127, null, "CodeError");
wsp_encode_test(MMS.CancelStatusValue, 128, [128]);
wsp_encode_test(MMS.CancelStatusValue, 129, [129]);
wsp_encode_test(MMS.CancelStatusValue, 130, null, "CodeError");
wsp_encode_test(MMS.CancelStatusValue, 255, null, "CodeError");
run_next_test();
});
@ -493,13 +497,16 @@ add_test(function test_CancelStatusValue_encode() {
//// ContentClassValue.decode ////
add_test(function test_ContentClassValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 135)) {
wsp_decode_test(MMS.ContentClassValue, [i], i);
} else {
wsp_decode_test(MMS.ContentClassValue, [i], null, "CodeError");
}
// Valid codes are 128 - 135. Check boundary conditions 0, 1, 127, 136 and
// 255 as well.
wsp_decode_test(MMS.ContentClassValue, [0], null, "CodeError");
wsp_decode_test(MMS.ContentClassValue, [1], null, "CodeError");
wsp_decode_test(MMS.ContentClassValue, [127], null, "CodeError");
for (let i = 128; i <= 135; i++) {
wsp_decode_test(MMS.ContentClassValue, [i], i);
}
wsp_decode_test(MMS.ContentClassValue, [136], null, "CodeError");
wsp_decode_test(MMS.ContentClassValue, [255], null, "CodeError");
run_next_test();
});
@ -507,13 +514,16 @@ add_test(function test_ContentClassValue_decode() {
//// ContentClassValue.encode ////
add_test(function test_ContentClassValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 135)) {
wsp_encode_test(MMS.ContentClassValue, i, [i]);
} else {
wsp_encode_test(MMS.ContentClassValue, i, null, "CodeError");
}
// Valid codes are 128 - 135. Check boundary conditions 0, 1, 127, 136 and
// 255 as well.
wsp_encode_test(MMS.ContentClassValue, 0, null, "CodeError");
wsp_encode_test(MMS.ContentClassValue, 1, null, "CodeError");
wsp_encode_test(MMS.ContentClassValue, 127, null, "CodeError");
for (let i = 128; i <= 135; i++) {
wsp_encode_test(MMS.ContentClassValue, i, [i]);
}
wsp_encode_test(MMS.ContentClassValue, 136, null, "CodeError");
wsp_encode_test(MMS.ContentClassValue, 255, null, "CodeError");
run_next_test();
});
@ -809,22 +819,26 @@ add_test(function test_FromValue_encode() {
//// MessageClassValue.decodeClassIdentifier ////
add_test(function test_MessageClassValue_decodeClassIdentifier() {
let (IDs = ["personal", "advertisement", "informational", "auto"]) {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 131)) {
wsp_decode_test_ex(function(data) {
return MMS.MessageClassValue.decodeClassIdentifier(data);
}, [i], IDs[i - 128]
);
} else {
wsp_decode_test_ex(function(data) {
return MMS.MessageClassValue.decodeClassIdentifier(data);
}, [i], null, "CodeError"
);
}
}
const IDs = ["personal", "advertisement", "informational", "auto"];
function test(i, error) {
let id = IDs[i - 128];
wsp_decode_test_ex(function(data) {
return MMS.MessageClassValue.decodeClassIdentifier(data);
}, [i], (error ? null : id), error);
}
// Valid codes are 128 - 131. Check boundary conditions 0, 1, 127, 132 and
// 255 as well.
test(0, "CodeError");
test(1, "CodeError");
test(127, "CodeError");
for (let i = 128; i <= 131; i++) {
test(i, null);
}
test(132, "CodeError");
test(255, "CodeError");
run_next_test();
});
@ -856,13 +870,16 @@ add_test(function test_MessageClassValue_encode() {
//// MessageTypeValue.decode ////
add_test(function test_MessageTypeValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 151)) {
wsp_decode_test(MMS.MessageTypeValue, [i], i);
} else {
wsp_decode_test(MMS.MessageTypeValue, [i], null, "CodeError");
}
// Valid codes are 128 - 151. Check boundary conditions 0, 1, 127, 152 and
// 255 as well.
wsp_decode_test(MMS.MessageTypeValue, [0], null, "CodeError");
wsp_decode_test(MMS.MessageTypeValue, [1], null, "CodeError");
wsp_decode_test(MMS.MessageTypeValue, [127], null, "CodeError");
for (let i = 128; i <= 151; i++) {
wsp_decode_test(MMS.MessageTypeValue, [i], i);
}
wsp_decode_test(MMS.MessageTypeValue, [152], null, "CodeError");
wsp_decode_test(MMS.MessageTypeValue, [255], null, "CodeError");
run_next_test();
});
@ -870,13 +887,16 @@ add_test(function test_MessageTypeValue_decode() {
//// MessageTypeValue.encode ////
add_test(function test_MessageTypeValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 151)) {
wsp_encode_test(MMS.MessageTypeValue, i, [i]);
} else {
wsp_encode_test(MMS.MessageTypeValue, i, null, "CodeError");
}
// Valid codes are 128 - 151. Check boundary conditions 0, 1, 127, 152 and
// 255 as well.
wsp_encode_test(MMS.MessageTypeValue, 0, null, "CodeError");
wsp_encode_test(MMS.MessageTypeValue, 1, null, "CodeError");
wsp_encode_test(MMS.MessageTypeValue, 127, null, "CodeError");
for (let i = 128; i <= 151; i++) {
wsp_encode_test(MMS.MessageTypeValue, i, [i]);
}
wsp_encode_test(MMS.MessageTypeValue, 152, null, "CodeError");
wsp_encode_test(MMS.MessageTypeValue, 255, null, "CodeError");
run_next_test();
});
@ -888,13 +908,16 @@ add_test(function test_MessageTypeValue_encode() {
//// MmFlagsValue.decode ////
add_test(function test_MmFlagsValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 130)) {
wsp_decode_test(MMS.MmFlagsValue, [3, i, 65, 0], {type: i, text: "A"});
} else {
wsp_decode_test(MMS.MmFlagsValue, [3, i, 65, 0], null, "CodeError");
}
// Valid codes are 128 - 130. Check boundary conditions 0, 1, 127, 131 and
// 255 as well.
wsp_decode_test(MMS.MmFlagsValue, [3, 0, 65, 0], null, "CodeError");
wsp_decode_test(MMS.MmFlagsValue, [3, 1, 65, 0], null, "CodeError");
wsp_decode_test(MMS.MmFlagsValue, [3, 127, 65, 0], null, "CodeError");
for (let i = 128; i <= 130; i++) {
wsp_decode_test(MMS.MmFlagsValue, [3, i, 65, 0], {type: i, text: "A"});
}
wsp_decode_test(MMS.MmFlagsValue, [3, 131, 65, 0], null, "CodeError");
wsp_decode_test(MMS.MmFlagsValue, [3, 255, 65, 0], null, "CodeError");
run_next_test();
});
@ -902,13 +925,16 @@ add_test(function test_MmFlagsValue_decode() {
//// MmFlagsValue.encode ////
add_test(function test_MmFlagsValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 130)) {
wsp_encode_test(MMS.MmFlagsValue, {type: i, text: "A"}, [3, i, 65, 0]);
} else {
wsp_encode_test(MMS.MmFlagsValue, {type: i, text: "A"}, null, "CodeError");
}
// Valid codes are 128 - 130. Check boundary conditions 0, 1, 127, 131 and
// 255 as well.
wsp_encode_test(MMS.MmFlagsValue, {type: 0, text: "A"}, null, "CodeError");
wsp_encode_test(MMS.MmFlagsValue, {type: 1, text: "A"}, null, "CodeError");
wsp_encode_test(MMS.MmFlagsValue, {type: 127, text: "A"}, null, "CodeError");
for (let i = 128; i <= 130; i++) {
wsp_encode_test(MMS.MmFlagsValue, {type: i, text: "A"}, [3, i, 65, 0]);
}
wsp_encode_test(MMS.MmFlagsValue, {type: 131, text: "A"}, null, "CodeError");
wsp_encode_test(MMS.MmFlagsValue, {type: 255, text: "A"}, null, "CodeError");
run_next_test();
});
@ -920,13 +946,16 @@ add_test(function test_MmFlagsValue_encode() {
//// MmStateValue.decode ////
add_test(function test_MmStateValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 132)) {
wsp_decode_test(MMS.MmStateValue, [i], i);
} else {
wsp_decode_test(MMS.MmStateValue, [i], null, "CodeError");
}
// Valid codes are 128 - 132. Check boundary conditions 0, 1, 127, 133 and
// 255 as well.
wsp_decode_test(MMS.MmStateValue, [0], null, "CodeError");
wsp_decode_test(MMS.MmStateValue, [1], null, "CodeError");
wsp_decode_test(MMS.MmStateValue, [127], null, "CodeError");
for (let i = 128; i <= 132; i++) {
wsp_decode_test(MMS.MmStateValue, [i], i);
}
wsp_decode_test(MMS.MmStateValue, [133], null, "CodeError");
wsp_decode_test(MMS.MmStateValue, [255], null, "CodeError");
run_next_test();
});
@ -934,13 +963,16 @@ add_test(function test_MmStateValue_decode() {
//// MmStateValue.encode ////
add_test(function test_MmStateValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 132)) {
wsp_encode_test(MMS.MmStateValue, i, [i]);
} else {
wsp_encode_test(MMS.MmStateValue, i, null, "CodeError");
}
// Valid codes are 128 - 132. Check boundary conditions 0, 1, 127, 133 and
// 255 as well.
wsp_encode_test(MMS.MmStateValue, 0, null, "CodeError");
wsp_encode_test(MMS.MmStateValue, 1, null, "CodeError");
wsp_encode_test(MMS.MmStateValue, 127, null, "CodeError");
for (let i = 128; i <= 132; i++) {
wsp_encode_test(MMS.MmStateValue, i, [i]);
}
wsp_encode_test(MMS.MmStateValue, 133, null, "CodeError");
wsp_encode_test(MMS.MmStateValue, 255, null, "CodeError");
run_next_test();
});
@ -952,13 +984,16 @@ add_test(function test_MmStateValue_encode() {
//// PriorityValue.decode ////
add_test(function test_PriorityValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 130)) {
wsp_decode_test(MMS.PriorityValue, [i], i);
} else {
wsp_decode_test(MMS.PriorityValue, [i], null, "CodeError");
}
// Valid codes are 128 - 130. Check boundary conditions 0, 1, 127, 131 and
// 255 as well.
wsp_decode_test(MMS.PriorityValue, [0], null, "CodeError");
wsp_decode_test(MMS.PriorityValue, [1], null, "CodeError");
wsp_decode_test(MMS.PriorityValue, [127], null, "CodeError");
for (let i = 128; i <= 130; i++) {
wsp_decode_test(MMS.PriorityValue, [i], i);
}
wsp_decode_test(MMS.PriorityValue, [131], null, "CodeError");
wsp_decode_test(MMS.PriorityValue, [255], null, "CodeError");
run_next_test();
});
@ -966,13 +1001,16 @@ add_test(function test_PriorityValue_decode() {
//// PriorityValue.encode ////
add_test(function test_PriorityValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 130)) {
wsp_encode_test(MMS.PriorityValue, i, [i]);
} else {
wsp_encode_test(MMS.PriorityValue, i, null, "CodeError");
}
// Valid codes are 128 - 130. Check boundary conditions 0, 1, 127, 131 and
// 255 as well.
wsp_encode_test(MMS.PriorityValue, 0, null, "CodeError");
wsp_encode_test(MMS.PriorityValue, 1, null, "CodeError");
wsp_encode_test(MMS.PriorityValue, 127, null, "CodeError");
for (let i = 128; i <= 130; i++) {
wsp_encode_test(MMS.PriorityValue, i, [i]);
}
wsp_encode_test(MMS.PriorityValue, 131, null, "CodeError");
wsp_encode_test(MMS.PriorityValue, 255, null, "CodeError");
run_next_test();
});
@ -984,13 +1022,15 @@ add_test(function test_PriorityValue_encode() {
//// ReadStatusValue.decode ////
add_test(function test_ReadStatusValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 129)) {
wsp_decode_test(MMS.ReadStatusValue, [i], i);
} else {
wsp_decode_test(MMS.ReadStatusValue, [i], null, "CodeError");
}
}
// Valid codes are 128, 129. Check boundary conditions 0, 1, 127, 130 and
// 255 as well.
wsp_decode_test(MMS.ReadStatusValue, [0], null, "CodeError");
wsp_decode_test(MMS.ReadStatusValue, [1], null, "CodeError");
wsp_decode_test(MMS.ReadStatusValue, [127], null, "CodeError");
wsp_decode_test(MMS.ReadStatusValue, [128], 128);
wsp_decode_test(MMS.ReadStatusValue, [129], 129);
wsp_decode_test(MMS.ReadStatusValue, [130], null, "CodeError");
wsp_decode_test(MMS.ReadStatusValue, [255], null, "CodeError");
run_next_test();
});
@ -998,13 +1038,15 @@ add_test(function test_ReadStatusValue_decode() {
//// ReadStatusValue.encode ////
add_test(function test_ReadStatusValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 129)) {
wsp_encode_test(MMS.ReadStatusValue, i, [i]);
} else {
wsp_encode_test(MMS.ReadStatusValue, i, null, "CodeError");
}
}
// Valid codes are 128, 129. Check boundary conditions 0, 1, 127, 130 and
// 255 as well.
wsp_encode_test(MMS.ReadStatusValue, 0, null, "CodeError");
wsp_encode_test(MMS.ReadStatusValue, 1, null, "CodeError");
wsp_encode_test(MMS.ReadStatusValue, 127, null, "CodeError");
wsp_encode_test(MMS.ReadStatusValue, 128, [128]);
wsp_encode_test(MMS.ReadStatusValue, 129, [129]);
wsp_encode_test(MMS.ReadStatusValue, 130, null, "CodeError");
wsp_encode_test(MMS.ReadStatusValue, 255, null, "CodeError");
run_next_test();
});
@ -1016,13 +1058,14 @@ add_test(function test_ReadStatusValue_encode() {
//// RecommendedRetrievalModeValue.decode ////
add_test(function test_RecommendedRetrievalModeValue_decode() {
for (let i = 0; i < 256; i++) {
if (i == 128) {
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [i], i);
} else {
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [i], null, "CodeError");
}
}
// Valid codes is 128. Check boundary conditions 0, 1, 127, 130 and 255 as
// well.
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [0], null, "CodeError");
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [1], null, "CodeError");
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [127], null, "CodeError");
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [128], 128);
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [129], null, "CodeError");
wsp_decode_test(MMS.RecommendedRetrievalModeValue, [255], null, "CodeError");
run_next_test();
});
@ -1034,13 +1077,16 @@ add_test(function test_RecommendedRetrievalModeValue_decode() {
//// ReplyChargingValue.decode ////
add_test(function test_ReplyChargingValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 131)) {
wsp_decode_test(MMS.ReplyChargingValue, [i], i);
} else {
wsp_decode_test(MMS.ReplyChargingValue, [i], null, "CodeError");
}
// Valid codes are 128 - 131. Check boundary conditions 0, 1, 127, 132 and
// 255 as well.
wsp_decode_test(MMS.ReplyChargingValue, [0], null, "CodeError");
wsp_decode_test(MMS.ReplyChargingValue, [1], null, "CodeError");
wsp_decode_test(MMS.ReplyChargingValue, [127], null, "CodeError");
for (let i = 128; i <= 131; i++) {
wsp_decode_test(MMS.ReplyChargingValue, [i], i);
}
wsp_decode_test(MMS.ReplyChargingValue, [132], null, "CodeError");
wsp_decode_test(MMS.ReplyChargingValue, [255], null, "CodeError");
run_next_test();
});
@ -1048,13 +1094,16 @@ add_test(function test_ReplyChargingValue_decode() {
//// ReplyChargingValue.encode ////
add_test(function test_ReplyChargingValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 131)) {
wsp_encode_test(MMS.ReplyChargingValue, i, [i]);
} else {
wsp_encode_test(MMS.ReplyChargingValue, i, null, "CodeError");
}
// Valid codes are 128 - 131. Check boundary conditions 0, 1, 127, 132 and
// 255 as well.
wsp_encode_test(MMS.ReplyChargingValue, 0, null, "CodeError");
wsp_encode_test(MMS.ReplyChargingValue, 1, null, "CodeError");
wsp_encode_test(MMS.ReplyChargingValue, 127, null, "CodeError");
for (let i = 128; i <= 131; i++) {
wsp_encode_test(MMS.ReplyChargingValue, i, [i]);
}
wsp_encode_test(MMS.ReplyChargingValue, 132, null, "CodeError");
wsp_encode_test(MMS.ReplyChargingValue, 255, null, "CodeError");
run_next_test();
});
@ -1104,14 +1153,23 @@ add_test(function test_ResponseText_decode() {
//// RetrieveStatusValue.decode ////
add_test(function test_RetrieveStatusValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i == MMS_PDU_ERROR_OK)
|| (i >= MMS_PDU_ERROR_TRANSIENT_FAILURE)) {
wsp_decode_test(MMS.RetrieveStatusValue, [i], i);
} else {
wsp_decode_test(MMS.RetrieveStatusValue, [i],
MMS_PDU_ERROR_PERMANENT_FAILURE);
}
// Valid codes are 128, 192 - 255. Check boundary conditions 0, 1, 127, 129,
// and 191 as well.
wsp_decode_test(MMS.RetrieveStatusValue, [0],
MMS_PDU_ERROR_PERMANENT_FAILURE);
wsp_decode_test(MMS.RetrieveStatusValue, [1],
MMS_PDU_ERROR_PERMANENT_FAILURE);
wsp_decode_test(MMS.RetrieveStatusValue, [127],
MMS_PDU_ERROR_PERMANENT_FAILURE);
wsp_decode_test(MMS.RetrieveStatusValue, [128], MMS_PDU_ERROR_OK);
wsp_decode_test(MMS.RetrieveStatusValue, [129],
MMS_PDU_ERROR_PERMANENT_FAILURE);
wsp_decode_test(MMS.RetrieveStatusValue, [191],
MMS_PDU_ERROR_PERMANENT_FAILURE);
for (let i = 192; i < 256; i++) {
wsp_decode_test(MMS.RetrieveStatusValue, [i], i);
}
run_next_test();
@ -1124,13 +1182,15 @@ add_test(function test_RetrieveStatusValue_decode() {
//// SenderVisibilityValue.decode ////
add_test(function test_SenderVisibilityValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 129)) {
wsp_decode_test(MMS.SenderVisibilityValue, [i], i);
} else {
wsp_decode_test(MMS.SenderVisibilityValue, [i], null, "CodeError");
}
}
// Valid codes are 128, 129. Check boundary conditions 0, 1, 127, 130 and
// 255 as well.
wsp_decode_test(MMS.SenderVisibilityValue, [0], null, "CodeError");
wsp_decode_test(MMS.SenderVisibilityValue, [1], null, "CodeError");
wsp_decode_test(MMS.SenderVisibilityValue, [127], null, "CodeError");
wsp_decode_test(MMS.SenderVisibilityValue, [128], 128);
wsp_decode_test(MMS.SenderVisibilityValue, [129], 129);
wsp_decode_test(MMS.SenderVisibilityValue, [130], null, "CodeError");
wsp_decode_test(MMS.SenderVisibilityValue, [255], null, "CodeError");
run_next_test();
});
@ -1138,13 +1198,15 @@ add_test(function test_SenderVisibilityValue_decode() {
//// SenderVisibilityValue.encode ////
add_test(function test_SenderVisibilityValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 129)) {
wsp_encode_test(MMS.SenderVisibilityValue, i, [i]);
} else {
wsp_encode_test(MMS.SenderVisibilityValue, i, null, "CodeError");
}
}
// Valid codes are 128, 129. Check boundary conditions 0, 1, 127, 130 and
// 255 as well.
wsp_encode_test(MMS.SenderVisibilityValue, 0, null, "CodeError");
wsp_encode_test(MMS.SenderVisibilityValue, 1, null, "CodeError");
wsp_encode_test(MMS.SenderVisibilityValue, 127, null, "CodeError");
wsp_encode_test(MMS.SenderVisibilityValue, 128, [128]);
wsp_encode_test(MMS.SenderVisibilityValue, 129, [129]);
wsp_encode_test(MMS.SenderVisibilityValue, 130, null, "CodeError");
wsp_encode_test(MMS.SenderVisibilityValue, 255, null, "CodeError");
run_next_test();
});
@ -1156,13 +1218,16 @@ add_test(function test_SenderVisibilityValue_encode() {
//// StatusValue.decode ////
add_test(function test_StatusValue_decode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 135)) {
wsp_decode_test(MMS.StatusValue, [i], i);
} else {
wsp_decode_test(MMS.StatusValue, [i], null, "CodeError");
}
// Valid codes are 128 - 135. Check boundary conditions 0, 1, 127, 136 and
// 255 as well.
wsp_decode_test(MMS.StatusValue, [0], null, "CodeError");
wsp_decode_test(MMS.StatusValue, [1], null, "CodeError");
wsp_decode_test(MMS.StatusValue, [127], null, "CodeError");
for (let i = 128; i <= 135; i++) {
wsp_decode_test(MMS.StatusValue, [i], i);
}
wsp_decode_test(MMS.StatusValue, [136], null, "CodeError");
wsp_decode_test(MMS.StatusValue, [255], null, "CodeError");
run_next_test();
});
@ -1170,13 +1235,16 @@ add_test(function test_StatusValue_decode() {
//// StatusValue.encode ////
add_test(function test_StatusValue_encode() {
for (let i = 0; i < 256; i++) {
if ((i >= 128) && (i <= 135)) {
wsp_encode_test(MMS.StatusValue, i, [i]);
} else {
wsp_encode_test(MMS.StatusValue, i, null, "CodeError");
}
// Valid codes are 128 - 135. Check boundary conditions 0, 1, 127, 136 and
// 255 as well.
wsp_encode_test(MMS.StatusValue, 0, null, "CodeError");
wsp_encode_test(MMS.StatusValue, 1, null, "CodeError");
wsp_encode_test(MMS.StatusValue, 127, null, "CodeError");
for (let i = 128; i <= 135; i++) {
wsp_encode_test(MMS.StatusValue, i, [i]);
}
wsp_encode_test(MMS.StatusValue, 136, null, "CodeError");
wsp_encode_test(MMS.StatusValue, 255, null, "CodeError");
run_next_test();
});

View File

@ -9,19 +9,6 @@ function run_test() {
run_next_test();
}
//
// Test target: ensureHeader
//
add_test(function test_ensureHeader() {
do_check_throws(function() {
WSP.ensureHeader({}, "no-such-property");
}, "FatalCodeError"
);
run_next_test();
});
//
// Test target: skipValue()
//
@ -46,412 +33,6 @@ add_test(function test_skipValue() {
run_next_test();
});
//
// Test target: Octet
//
//// Octet.decode ////
add_test(function test_Octet_decode() {
wsp_decode_test(WSP.Octet, [1], 1);
wsp_decode_test(WSP.Octet, [], null, "RangeError");
run_next_test();
});
//// Octet.decodeMultiple ////
add_test(function test_Octet_decodeMultiple() {
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeMultiple(data, 3);
}, [0, 1, 2], [0, 1, 2], null
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeMultiple(data, 3);
}, new Uint8Array([0, 1, 2]), new Uint8Array([0, 1, 2]), null
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeMultiple(data, 4);
}, [0, 1, 2], null, "RangeError"
);
run_next_test();
});
//// Octet.decodeEqualTo ////
add_test(function test_Octet_decodeEqualTo() {
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeEqualTo(data, 1);
}, [1], 1, null
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeEqualTo(data, 2);
}, [1], null, "CodeError"
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeEqualTo(data, 2);
}, [], null, "RangeError"
);
run_next_test();
});
//// Octet.encode ////
add_test(function test_Octet_encode() {
for (let i = 0; i < 256; i++) {
wsp_encode_test(WSP.Octet, i, [i]);
}
run_next_test();
});
//// Octet.encodeMultiple ////
add_test(function test_Octet_encodeMultiple() {
wsp_encode_test_ex(function(data, input) {
WSP.Octet.encodeMultiple(data, input);
return data.array;
}, [0, 1, 2, 3], [0, 1, 2, 3]);
run_next_test();
});
//
// Test target: Text
//
//// Text.decode ////
add_test(function test_Text_decode() {
for (let i = 0; i < 256; i++) {
if (i == 0) {
wsp_decode_test(WSP.Text, [0], null, "NullCharError");
} else if ((i < WSP.CTLS) || (i == WSP.DEL)) {
wsp_decode_test(WSP.Text, [i], null, "CodeError");
} else {
wsp_decode_test(WSP.Text, [i], String.fromCharCode(i));
}
}
// Test \r\n(SP|HT)* sequence:
wsp_decode_test(WSP.Text, strToCharCodeArray("\r\n \t \t \t", true), " ");
wsp_decode_test(WSP.Text, strToCharCodeArray("\r\n \t \t \t"), " ");
wsp_decode_test(WSP.Text, strToCharCodeArray("\r\n \t \t \tA"), " ");
run_next_test();
});
//// Text.encode ////
add_test(function test_Text_encode() {
for (let i = 0; i < 256; i++) {
if ((i < WSP.CTLS) || (i == WSP.DEL)) {
wsp_encode_test(WSP.Text, String.fromCharCode(i), null, "CodeError");
} else {
wsp_encode_test(WSP.Text, String.fromCharCode(i), [i]);
}
}
run_next_test();
});
//
// Test target: NullTerminatedTexts
//
//// NullTerminatedTexts.decode ////
add_test(function test_NullTerminatedTexts_decode() {
// Test incompleted string:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray(" ", true), null, "RangeError");
// Test control char:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray(" \n"), null, "CodeError");
// Test normal string:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray(""), "");
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray("oops"), "oops");
// Test \r\n(SP|HT)* sequence:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray("A\r\n \t \t \tB"), "A B");
run_next_test();
});
//// NullTerminatedTexts.encode ////
add_test(function test_NullTerminatedTexts_encode() {
wsp_encode_test(WSP.NullTerminatedTexts, "", [0]);
wsp_encode_test(WSP.NullTerminatedTexts, "Hello, World!",
strToCharCodeArray("Hello, World!"));
run_next_test();
});
//
// Test target: Token
//
let TOKEN_SEPS = "()<>@,;:\\\"/[]?={} \t";
//// Token.decode ////
add_test(function test_Token_decode() {
for (let i = 0; i < 256; i++) {
if (i == 0) {
wsp_decode_test(WSP.Token, [i], null, "NullCharError");
} else if ((i < WSP.CTLS) || (i >= WSP.ASCIIS)
|| (TOKEN_SEPS.indexOf(String.fromCharCode(i)) >= 0)) {
wsp_decode_test(WSP.Token, [i], null, "CodeError");
} else {
wsp_decode_test(WSP.Token, [i], String.fromCharCode(i));
}
}
run_next_test();
});
//// Token.encode ////
add_test(function test_Token_encode() {
for (let i = 0; i < 256; i++) {
if ((i < WSP.CTLS) || (i >= WSP.ASCIIS)
|| (TOKEN_SEPS.indexOf(String.fromCharCode(i)) >= 0)) {
wsp_encode_test(WSP.Token, String.fromCharCode(i), null, "CodeError");
} else {
wsp_encode_test(WSP.Token, String.fromCharCode(i), [i]);
}
}
run_next_test();
});
//
// Test target: URIC
//
//// URIC.decode ////
add_test(function test_URIC_decode() {
let uric = "!#$%&'()*+,-./0123456789:;=?@ABCDEFGHIJKLMN"
+ "OPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~";
for (let i = 0; i < 256; i++) {
if (i == 0) {
wsp_decode_test(WSP.URIC, [i], null, "NullCharError");
} else if (uric.indexOf(String.fromCharCode(i)) >= 0) {
wsp_decode_test(WSP.URIC, [i], String.fromCharCode(i));
} else {
wsp_decode_test(WSP.URIC, [i], null, "CodeError");
}
}
run_next_test();
});
//
// Test target: TextString
//
//// TextString.decode ////
add_test(function test_TextString_decode() {
// Test quoted string
wsp_decode_test(WSP.TextString, [127, 128, 0], String.fromCharCode(128));
// Test illegal quoted string
wsp_decode_test(WSP.TextString, [127, 32, 0], null, "CodeError");
// Test illegal unquoted string
wsp_decode_test(WSP.TextString, [128, 0], null, "CodeError");
// Test normal string
wsp_decode_test(WSP.TextString, [32, 0], " ");
run_next_test();
});
//// TextString.encode ////
add_test(function test_TextString_encode() {
// Test quoted string
wsp_encode_test(WSP.TextString, String.fromCharCode(128), [127, 128, 0]);
// Test normal string
wsp_encode_test(WSP.TextString, "Mozilla", strToCharCodeArray("Mozilla"));
run_next_test();
});
//
// Test target: TokenText
//
//// TokenText.decode ////
add_test(function test_TokenText_decode() {
wsp_decode_test(WSP.TokenText, [65], null, "RangeError");
wsp_decode_test(WSP.TokenText, [0], "");
wsp_decode_test(WSP.TokenText, [65, 0], "A");
run_next_test();
});
//// TokenText.encode ////
add_test(function test_TokenText_encode() {
wsp_encode_test(WSP.TokenText, "B2G", strToCharCodeArray("B2G"));
run_next_test();
});
//
// Test target: QuotedString
//
//// QuotedString.decode ////
add_test(function test_QuotedString_decode() {
// Test non-quoted string
wsp_decode_test(WSP.QuotedString, [32, 0], null, "CodeError");
// Test incompleted string
wsp_decode_test(WSP.QuotedString, [34, 32], null, "RangeError");
wsp_decode_test(WSP.QuotedString, [34, 32, 0], " ");
run_next_test();
});
//// QuotedString.encode ////
add_test(function test_QuotedString_encode() {
wsp_encode_test(WSP.QuotedString, "B2G", [34].concat(strToCharCodeArray("B2G")));
run_next_test();
});
//
// Test target: ShortInteger
//
//// ShortInteger.decode ////
add_test(function test_ShortInteger_decode() {
for (let i = 0; i < 256; i++) {
if (i & 0x80) {
wsp_decode_test(WSP.ShortInteger, [i], i & 0x7F);
} else {
wsp_decode_test(WSP.ShortInteger, [i], null, "CodeError");
}
}
run_next_test();
});
//// ShortInteger.encode ////
add_test(function test_ShortInteger_encode() {
for (let i = 0; i < 256; i++) {
if (i & 0x80) {
wsp_encode_test(WSP.ShortInteger, i, null, "CodeError");
} else {
wsp_encode_test(WSP.ShortInteger, i, [0x80 | i]);
}
}
run_next_test();
});
//
// Test target: LongInteger
//
//// LongInteger.decode ////
function LongInteger_decode_testcases(target) {
// Test LongInteger of zero octet
wsp_decode_test(target, [0, 0], null, "CodeError");
wsp_decode_test(target, [1, 0x80], 0x80);
wsp_decode_test(target, [2, 0x80, 2], 0x8002);
wsp_decode_test(target, [3, 0x80, 2, 3], 0x800203);
wsp_decode_test(target, [4, 0x80, 2, 3, 4], 0x80020304);
wsp_decode_test(target, [5, 0x80, 2, 3, 4, 5], 0x8002030405);
wsp_decode_test(target, [6, 0x80, 2, 3, 4, 5, 6], 0x800203040506);
// Test LongInteger of more than 6 octets
wsp_decode_test(target, [7, 0x80, 2, 3, 4, 5, 6, 7], [0x80, 2, 3, 4, 5, 6, 7]);
// Test LongInteger of more than 30 octets
wsp_decode_test(target, [31], null, "CodeError");
}
add_test(function test_LongInteger_decode() {
LongInteger_decode_testcases(WSP.LongInteger);
run_next_test();
});
//// LongInteger.encode ////
function LongInteger_encode_testcases(target) {
wsp_encode_test(target, 0x80, [1, 0x80]);
wsp_encode_test(target, 0x8002, [2, 0x80, 2]);
wsp_encode_test(target, 0x800203, [3, 0x80, 2, 3]);
wsp_encode_test(target, 0x80020304, [4, 0x80, 2, 3, 4]);
wsp_encode_test(target, 0x8002030405, [5, 0x80, 2, 3, 4, 5]);
wsp_encode_test(target, 0x800203040506, [6, 0x80, 2, 3, 4, 5, 6]);
// Test LongInteger of more than 6 octets
wsp_encode_test(target, 0x1000000000000, null, "CodeError");
// Test input empty array
wsp_encode_test(target, [], null, "CodeError");
// Test input octets array of length 1..30
let array = [];
for (let i = 1; i <= 30; i++) {
array.push(i);
wsp_encode_test(target, array, [i].concat(array));
}
// Test input octets array of 31 elements.
array.push(31);
wsp_encode_test(target, array, null, "CodeError");
}
add_test(function test_LongInteger_encode() {
wsp_encode_test(WSP.LongInteger, 0, [1, 0]);
LongInteger_encode_testcases(WSP.LongInteger);
run_next_test();
});
//
// Test target: UintVar
//
//// UintVar.decode ////
add_test(function test_UintVar_decode() {
wsp_decode_test(WSP.UintVar, [0x80], null, "RangeError");
// Test up to max 53 bits integer
wsp_decode_test(WSP.UintVar, [0x7F], 0x7F);
wsp_decode_test(WSP.UintVar, [0xFF, 0x7F], 0x3FFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0x7F], 0x1FFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0x7F], 0xFFFFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x7FFFFFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x3FFFFFFFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x1FFFFFFFFFFFF);
wsp_decode_test(WSP.UintVar, [0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x1FFFFFFFFFFFFF);
wsp_decode_test(WSP.UintVar, [0x01, 0x02], 1);
wsp_decode_test(WSP.UintVar, [0x80, 0x01, 0x02], 1);
wsp_decode_test(WSP.UintVar, [0x80, 0x80, 0x80, 0x01, 0x2], 1);
run_next_test();
});
//// UintVar.encode ////
add_test(function test_UintVar_encode() {
// Test up to max 53 bits integer
wsp_encode_test(WSP.UintVar, 0, [0]);
wsp_encode_test(WSP.UintVar, 0x7F, [0x7F]);
wsp_encode_test(WSP.UintVar, 0x3FFF, [0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x1FFFFF, [0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0xFFFFFFF, [0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x7FFFFFFFF, [0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x3FFFFFFFFFF, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x1FFFFFFFFFFFF, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x1FFFFFFFFFFFFF, [0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
run_next_test();
});
//
// Test target: ConstrainedEncoding
//
@ -538,61 +119,6 @@ add_test(function test_NoValue_encode() {
run_next_test();
});
//
// Test target: TextValue
//
//// TextValue.decode ////
add_test(function test_TextValue_decode() {
wsp_decode_test(WSP.TextValue, [0], null);
wsp_decode_test(WSP.TextValue, [65, 0], "A");
wsp_decode_test(WSP.TextValue, [32, 0], null, "CodeError");
wsp_decode_test(WSP.TextValue, [34, 32, 0], " ");
run_next_test();
});
//// TextValue.encode ////
add_test(function test_TextValue_encode() {
wsp_encode_test(WSP.TextValue, undefined, [0]);
wsp_encode_test(WSP.TextValue, null, [0]);
wsp_encode_test(WSP.TextValue, "", [0]);
wsp_encode_test(WSP.TextValue, "A", [65, 0]);
wsp_encode_test(WSP.TextValue, "\x80", [34, 128, 0]);
run_next_test();
});
//
// Test target: IntegerValue
//
//// IntegerValue.decode ////
add_test(function test_IntegerValue_decode() {
for (let i = 128; i < 256; i++) {
wsp_decode_test(WSP.IntegerValue, [i], i & 0x7F);
}
LongInteger_decode_testcases(WSP.IntegerValue);
run_next_test();
});
//// IntegerValue.decode ////
add_test(function test_IntegerValue_encode() {
for (let i = 0; i < 128; i++) {
wsp_encode_test(WSP.IntegerValue, i, [0x80 | i]);
}
LongInteger_encode_testcases(WSP.IntegerValue);
run_next_test();
});
//
// Test target: DateValue
//
@ -737,232 +263,6 @@ add_test(function test_TypeValue_encode() {
run_next_test();
});
//
// Test target: Parameter
//
//// Parameter.decodeTypedParameter ////
add_test(function test_Parameter_decodeTypedParameter() {
function func(data) {
return WSP.Parameter.decodeTypedParameter(data);
}
// Test for array-typed return value from IntegerValue
wsp_decode_test_ex(func, [7, 0, 0, 0, 0, 0, 0, 0], null, "CodeError");
// Test for number-typed return value from IntegerValue
wsp_decode_test_ex(func, [1, 0, 0], {name: "q", value: null});
// Test for NotWellKnownEncodingError
wsp_decode_test_ex(func, [1, 0xFF], null, "NotWellKnownEncodingError");
// Test for parameter specific decoder
wsp_decode_test_ex(func, [1, 0, 100], {name: "q", value: 0.99});
// Test for TextValue
wsp_decode_test_ex(func, [1, 0x10, 48, 46, 57, 57, 0],
{name: "secure", value: "0.99"});
// Test for TextString
wsp_decode_test_ex(func, [1, 0x0A, 60, 115, 109, 105, 108, 62, 0],
{name: "start", value: "<smil>"});
// Test for skipValue
wsp_decode_test_ex(func, [1, 0x0A, 128], null);
run_next_test();
});
//// Parameter.decodeUntypedParameter ////
add_test(function test_Parameter_decodeUntypedParameter() {
function func (data) {
return WSP.Parameter.decodeUntypedParameter(data);
}
wsp_decode_test_ex(func, [1], null, "CodeError");
wsp_decode_test_ex(func, [65, 0, 0], {name: "a", value: null});
// Test for IntegerValue
wsp_decode_test_ex(func, [65, 0, 1, 0], {name: "a", value: 0});
// Test for TextValue
wsp_decode_test_ex(func, [65, 0, 66, 0], {name: "a", value: "B"});
run_next_test();
});
//// Parameter.decode ////
add_test(function test_Parameter_decode() {
wsp_decode_test(WSP.Parameter, [1, 0x0A, 60, 115, 109, 105, 108, 62, 0],
{name: "start", value: "<smil>"});
wsp_decode_test(WSP.Parameter, [65, 0, 66, 0], {name: "a", value: "B"});
run_next_test();
});
//// Parameter.decodeMultiple ////
add_test(function test_Parameter_decodeMultiple() {
wsp_decode_test_ex(function(data) {
return WSP.Parameter.decodeMultiple(data, 13);
}, [1, 0x0A, 60, 115, 109, 105, 108, 62, 0, 65, 0, 66, 0], {start: "<smil>", a: "B"}
);
run_next_test();
});
//// Parameter.encodeTypedParameter ////
add_test(function test_Parameter_encodeTypedParameter() {
function func(data, input) {
WSP.Parameter.encodeTypedParameter(data, input);
return data.array;
}
// Test for NotWellKnownEncodingError
wsp_encode_test_ex(func, {name: "xxx", value: 0}, null, "NotWellKnownEncodingError");
wsp_encode_test_ex(func, {name: "q", value: 0}, [0x80, 1]);
wsp_encode_test_ex(func, {name: "name", value: "A"}, [0x85, 65, 0]);
run_next_test();
});
//// Parameter.encodeUntypedParameter ////
add_test(function test_Parameter_encodeUntypedParameter() {
function func(data, input) {
WSP.Parameter.encodeUntypedParameter(data, input);
return data.array;
}
wsp_encode_test_ex(func, {name: "q", value: 0}, [113, 0, 0x80]);
wsp_encode_test_ex(func, {name: "name", value: "A"}, [110, 97, 109, 101, 0, 65, 0]);
run_next_test();
});
//// Parameter.encodeMultiple ////
add_test(function test_Parameter_encodeMultiple() {
function func(data, input) {
WSP.Parameter.encodeMultiple(data, input);
return data.array;
}
wsp_encode_test_ex(func, {q: 0, n: "A"}, [0x80, 1, 110, 0, 65, 0]);
run_next_test();
});
//// Parameter.encode ////
add_test(function test_Parameter_encode() {
wsp_encode_test(WSP.Parameter, {name: "q", value: 0}, [0x80, 1]);
wsp_encode_test(WSP.Parameter, {name: "n", value: "A"}, [110, 0, 65, 0]);
run_next_test();
});
//
// Test target: Header
//
//// Header.decode ////
add_test(function test_Header_decode() {
wsp_decode_test(WSP.Header, [0x34 | 0x80, 0x80], {name: "push-flag", value: 0});
wsp_decode_test(WSP.Header, [65, 0, 66, 0], {name: "a", value: "B"});
run_next_test();
});
//
// Test target: WellKnownHeader
//
//// WellKnownHeader.decode ////
add_test(function test_WellKnownHeader_decode() {
wsp_decode_test(WSP.WellKnownHeader, [0xFF], null, "NotWellKnownEncodingError");
let (entry = WSP.WSP_HEADER_FIELDS["push-flag"]) {
// Test for Short-Integer
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 0x80],
{name: entry.name, value: 0});
// Test for NoValue
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 0],
{name: entry.name, value: null});
// Test for TokenText
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 65, 0],
{name: entry.name, value: "A"});
// Test for QuotedString
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 34, 128, 0],
{name: entry.name, value: String.fromCharCode(128)});
// Test for skipValue
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 2, 0, 0], null);
}
run_next_test();
});
//
// Test target: ApplicationHeader
//
//// ApplicationHeader.decode ////
add_test(function test_ApplicationHeader_decode() {
wsp_decode_test(WSP.ApplicationHeader, [5, 0, 66, 0], null, "CodeError");
wsp_decode_test(WSP.ApplicationHeader, [65, 0, 66, 0], {name: "a", value: "B"});
// Test for skipValue
wsp_decode_test(WSP.ApplicationHeader, [65, 0, 2, 0, 0], null);
run_next_test();
});
//// ApplicationHeader.encode ////
add_test(function test_ApplicationHeader_encode() {
// Test invalid header name string:
wsp_encode_test(WSP.ApplicationHeader, {name: undefined, value: "asdf"}, null, "CodeError");
wsp_encode_test(WSP.ApplicationHeader, {name: null, value: "asdf"}, null, "CodeError");
wsp_encode_test(WSP.ApplicationHeader, {name: "", value: "asdf"}, null, "CodeError");
wsp_encode_test(WSP.ApplicationHeader, {name: "a b", value: "asdf"}, null, "CodeError");
// Test value string:
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: undefined},
strToCharCodeArray("asdf").concat([0]));
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: null},
strToCharCodeArray("asdf").concat([0]));
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: ""},
strToCharCodeArray("asdf").concat([0]));
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: "fdsa"},
strToCharCodeArray("asdf").concat(strToCharCodeArray("fdsa")));
run_next_test();
});
//
// Test target: FieldName
//
//// FieldName.decode ////
add_test(function test_FieldName_decode() {
wsp_decode_test(WSP.FieldName, [0], "");
wsp_decode_test(WSP.FieldName, [65, 0], "a");
wsp_decode_test(WSP.FieldName, [97, 0], "a");
let (entry = WSP.WSP_HEADER_FIELDS["content-length"]) {
wsp_decode_test(WSP.FieldName, [entry.number | 0x80], entry.name);
}
wsp_decode_test(WSP.FieldName, [0xFF], null, "NotWellKnownEncodingError");
run_next_test();
});
//// FieldName.encode ////
add_test(function test_FieldName_encode() {
wsp_encode_test(WSP.FieldName, "", [0]);
wsp_encode_test(WSP.FieldName, "date", [0x92]);
run_next_test();
});
//
// Test target: AcceptCharsetValue
//
@ -1103,7 +403,7 @@ add_test(function test_ContentTypeValue_decodeConstrainedMedia() {
// Test for string-typed return value from ConstrainedEncoding
wsp_decode_test_ex(func, [65, 0], {media: "a", params: null});
// Test for number-typed return value from ConstrainedEncoding
for(let ix = 0; ix <WSP.WSP_WELL_KNOWN_CONTENT_TYPES.length ; ++ix){
for (let ix = 0; ix <WSP.WSP_WELL_KNOWN_CONTENT_TYPES.length ; ++ix) {
wsp_decode_test_ex(func, [WSP.WSP_WELL_KNOWN_CONTENT_TYPES[ix].number | 0x80],
{media: WSP.WSP_WELL_KNOWN_CONTENT_TYPES[ix].value, params: null});
}
@ -1185,7 +485,7 @@ add_test(function test_ContentTypeValue_encodeConstrainedMedia() {
wsp_encode_test_ex(func, {media: "a", params: [{a: "b"}]}, null, "CodeError");
wsp_encode_test_ex(func, {media: "no/such.type"},
[110, 111, 47, 115, 117, 99, 104, 46, 116, 121, 112, 101, 0]);
for(let ix = 0; ix <WSP.WSP_WELL_KNOWN_CONTENT_TYPES.length ; ++ix){
for (let ix = 0; ix <WSP.WSP_WELL_KNOWN_CONTENT_TYPES.length ; ++ix) {
wsp_encode_test_ex(func, {media: WSP.WSP_WELL_KNOWN_CONTENT_TYPES[ix].value},
[WSP.WSP_WELL_KNOWN_CONTENT_TYPES[ix].number | 0x80]);
}
@ -1259,99 +559,3 @@ add_test(function test_ApplicationIdValue_decode() {
run_next_test();
});
//
// Test target: PduHelper
//
//// PduHelper.parseHeaders ////
add_test(function test_PduHelper_parseHeaders() {
wsp_decode_test_ex(function(data) {
return WSP.PduHelper.parseHeaders(data, data.array.length);
}, [0x80 | 0x05, 2, 0x23, 0x28, 0x80 | 0x2F, 0x80 | 0x04],
{"age": 9000, "x-wap-application-id": "x-wap-application:mms.ua"}
);
run_next_test();
});
//// PduHelper.decodeStringContent ////
add_test(function StringContent_decode() {
//Test for utf-8
let (entry = WSP.WSP_WELL_KNOWN_CHARSETS["utf-8"]) {
// "Mozilla" in full width.
let str = "\uff2d\uff4f\uff5a\uff49\uff4c\uff4c\uff41";
let conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Ci.nsIScriptableUnicodeConverter);
conv.charset = entry.converter;
let raw = conv.convertToByteArray(str);
let data = {array: raw, offset: 0};
let octetArray = WSP.Octet.decodeMultiple(data, data.array.length);
wsp_decode_test_ex(function(data) {
return WSP.PduHelper.decodeStringContent(data.array, "utf-8");
}, octetArray, str);
}
let (entry = WSP.WSP_WELL_KNOWN_CHARSETS["utf-16"]) {
// "Mozilla" in full width.
let str = "\u004d\u006F\u007A\u0069\u006C\u006C\u0061";
let conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Ci.nsIScriptableUnicodeConverter);
conv.charset = entry.converter;
let raw = conv.convertToByteArray(str);
let data = {array: raw, offset: 0};
let octetArray = WSP.Octet.decodeMultiple(data, data.array.length);
wsp_decode_test_ex(function(data) {
return WSP.PduHelper.decodeStringContent(data.array, "utf-16");
}, raw, str);
}
run_next_test();
});
//// PduHelper.composeMultiPart ////
add_test(function test_PduHelper_composeMultiPart() {
let multiStream = Components.classes["@mozilla.org/io/multiplex-input-stream;1"]
.createInstance(Ci.nsIMultiplexInputStream);
let uint8Array = new Uint8Array(5);
uint8Array[0] = 0x00;
uint8Array[1] = 0x01;
uint8Array[2] = 0x02;
uint8Array[3] = 0x03;
uint8Array[4] = 0x04;
let parts = [
{
content: "content",
headers: {
"content-type": {
media: "text/plain",
params: {}
}
}
},
{
content: uint8Array,
headers: {
"content-type": {
media: "text/plain",
params: {}
}
}
}
];
let beforeCompose = JSON.stringify(parts);
WSP.PduHelper.composeMultiPart(multiStream, parts);
let afterCompose = JSON.stringify(parts);
do_check_eq(beforeCompose, afterCompose);
run_next_test();
});

View File

@ -0,0 +1,223 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
let WSP = {};
subscriptLoader.loadSubScript("resource://gre/modules/WspPduHelper.jsm", WSP);
WSP.debug = do_print;
function run_test() {
run_next_test();
}
//
// Test target: ensureHeader
//
add_test(function test_ensureHeader() {
do_check_throws(function() {
WSP.ensureHeader({}, "no-such-property");
}, "FatalCodeError"
);
run_next_test();
});
//
// Test target: Header
//
//// Header.decode ////
add_test(function test_Header_decode() {
wsp_decode_test(WSP.Header, [0x34 | 0x80, 0x80], {name: "push-flag", value: 0});
wsp_decode_test(WSP.Header, [65, 0, 66, 0], {name: "a", value: "B"});
run_next_test();
});
//
// Test target: WellKnownHeader
//
//// WellKnownHeader.decode ////
add_test(function test_WellKnownHeader_decode() {
wsp_decode_test(WSP.WellKnownHeader, [0xFF], null, "NotWellKnownEncodingError");
let (entry = WSP.WSP_HEADER_FIELDS["push-flag"]) {
// Test for Short-Integer
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 0x80],
{name: entry.name, value: 0});
// Test for NoValue
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 0],
{name: entry.name, value: null});
// Test for TokenText
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 65, 0],
{name: entry.name, value: "A"});
// Test for QuotedString
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 34, 128, 0],
{name: entry.name, value: String.fromCharCode(128)});
// Test for skipValue
wsp_decode_test(WSP.WellKnownHeader, [entry.number | 0x80, 2, 0, 0], null);
}
run_next_test();
});
//
// Test target: ApplicationHeader
//
//// ApplicationHeader.decode ////
add_test(function test_ApplicationHeader_decode() {
wsp_decode_test(WSP.ApplicationHeader, [5, 0, 66, 0], null, "CodeError");
wsp_decode_test(WSP.ApplicationHeader, [65, 0, 66, 0], {name: "a", value: "B"});
// Test for skipValue
wsp_decode_test(WSP.ApplicationHeader, [65, 0, 2, 0, 0], null);
run_next_test();
});
//// ApplicationHeader.encode ////
add_test(function test_ApplicationHeader_encode() {
// Test invalid header name string:
wsp_encode_test(WSP.ApplicationHeader, {name: undefined, value: "asdf"}, null, "CodeError");
wsp_encode_test(WSP.ApplicationHeader, {name: null, value: "asdf"}, null, "CodeError");
wsp_encode_test(WSP.ApplicationHeader, {name: "", value: "asdf"}, null, "CodeError");
wsp_encode_test(WSP.ApplicationHeader, {name: "a b", value: "asdf"}, null, "CodeError");
// Test value string:
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: undefined},
strToCharCodeArray("asdf").concat([0]));
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: null},
strToCharCodeArray("asdf").concat([0]));
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: ""},
strToCharCodeArray("asdf").concat([0]));
wsp_encode_test(WSP.ApplicationHeader, {name: "asdf", value: "fdsa"},
strToCharCodeArray("asdf").concat(strToCharCodeArray("fdsa")));
run_next_test();
});
//
// Test target: FieldName
//
//// FieldName.decode ////
add_test(function test_FieldName_decode() {
wsp_decode_test(WSP.FieldName, [0], "");
wsp_decode_test(WSP.FieldName, [65, 0], "a");
wsp_decode_test(WSP.FieldName, [97, 0], "a");
let (entry = WSP.WSP_HEADER_FIELDS["content-length"]) {
wsp_decode_test(WSP.FieldName, [entry.number | 0x80], entry.name);
}
wsp_decode_test(WSP.FieldName, [0xFF], null, "NotWellKnownEncodingError");
run_next_test();
});
//// FieldName.encode ////
add_test(function test_FieldName_encode() {
wsp_encode_test(WSP.FieldName, "", [0]);
wsp_encode_test(WSP.FieldName, "date", [0x92]);
run_next_test();
});
//
// Test target: PduHelper
//
//// PduHelper.parseHeaders ////
add_test(function test_PduHelper_parseHeaders() {
wsp_decode_test_ex(function(data) {
return WSP.PduHelper.parseHeaders(data, data.array.length);
}, [0x80 | 0x05, 2, 0x23, 0x28, 0x80 | 0x2F, 0x80 | 0x04],
{"age": 9000, "x-wap-application-id": "x-wap-application:mms.ua"}
);
run_next_test();
});
//// PduHelper.decodeStringContent ////
add_test(function StringContent_decode() {
//Test for utf-8
let (entry = WSP.WSP_WELL_KNOWN_CHARSETS["utf-8"]) {
// "Mozilla" in full width.
let str = "\uff2d\uff4f\uff5a\uff49\uff4c\uff4c\uff41";
let conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Ci.nsIScriptableUnicodeConverter);
conv.charset = entry.converter;
let raw = conv.convertToByteArray(str);
let data = {array: raw, offset: 0};
let octetArray = WSP.Octet.decodeMultiple(data, data.array.length);
wsp_decode_test_ex(function(data) {
return WSP.PduHelper.decodeStringContent(data.array, "utf-8");
}, octetArray, str);
}
let (entry = WSP.WSP_WELL_KNOWN_CHARSETS["utf-16"]) {
// "Mozilla" in full width.
let str = "\u004d\u006F\u007A\u0069\u006C\u006C\u0061";
let conv = Cc["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Ci.nsIScriptableUnicodeConverter);
conv.charset = entry.converter;
let raw = conv.convertToByteArray(str);
let data = {array: raw, offset: 0};
let octetArray = WSP.Octet.decodeMultiple(data, data.array.length);
wsp_decode_test_ex(function(data) {
return WSP.PduHelper.decodeStringContent(data.array, "utf-16");
}, raw, str);
}
run_next_test();
});
//// PduHelper.composeMultiPart ////
add_test(function test_PduHelper_composeMultiPart() {
let multiStream = Components.classes["@mozilla.org/io/multiplex-input-stream;1"]
.createInstance(Ci.nsIMultiplexInputStream);
let uint8Array = new Uint8Array(5);
uint8Array[0] = 0x00;
uint8Array[1] = 0x01;
uint8Array[2] = 0x02;
uint8Array[3] = 0x03;
uint8Array[4] = 0x04;
let parts = [
{
content: "content",
headers: {
"content-type": {
media: "text/plain",
params: {}
}
}
},
{
content: uint8Array,
headers: {
"content-type": {
media: "text/plain",
params: {}
}
}
}
];
let beforeCompose = JSON.stringify(parts);
WSP.PduHelper.composeMultiPart(multiStream, parts);
let afterCompose = JSON.stringify(parts);
do_check_eq(beforeCompose, afterCompose);
run_next_test();
});

View File

@ -0,0 +1,240 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
let WSP = {};
subscriptLoader.loadSubScript("resource://gre/modules/WspPduHelper.jsm", WSP);
WSP.debug = do_print;
function run_test() {
run_next_test();
}
//
// Test target: Octet
//
//// Octet.decode ////
add_test(function test_Octet_decode() {
wsp_decode_test(WSP.Octet, [1], 1);
wsp_decode_test(WSP.Octet, [], null, "RangeError");
run_next_test();
});
//// Octet.decodeMultiple ////
add_test(function test_Octet_decodeMultiple() {
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeMultiple(data, 3);
}, [0, 1, 2], [0, 1, 2], null
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeMultiple(data, 3);
}, new Uint8Array([0, 1, 2]), new Uint8Array([0, 1, 2]), null
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeMultiple(data, 4);
}, [0, 1, 2], null, "RangeError"
);
run_next_test();
});
//// Octet.decodeEqualTo ////
add_test(function test_Octet_decodeEqualTo() {
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeEqualTo(data, 1);
}, [1], 1, null
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeEqualTo(data, 2);
}, [1], null, "CodeError"
);
wsp_decode_test_ex(function(data) {
return WSP.Octet.decodeEqualTo(data, 2);
}, [], null, "RangeError"
);
run_next_test();
});
//// Octet.encode ////
add_test(function test_Octet_encode() {
for (let i = 0; i < 256; i++) {
wsp_encode_test(WSP.Octet, i, [i]);
}
run_next_test();
});
//// Octet.encodeMultiple ////
add_test(function test_Octet_encodeMultiple() {
wsp_encode_test_ex(function(data, input) {
WSP.Octet.encodeMultiple(data, input);
return data.array;
}, [0, 1, 2, 3], [0, 1, 2, 3]);
run_next_test();
});
//
// Test target: ShortInteger
//
//// ShortInteger.decode ////
add_test(function test_ShortInteger_decode() {
for (let i = 0; i < 256; i++) {
if (i & 0x80) {
wsp_decode_test(WSP.ShortInteger, [i], i & 0x7F);
} else {
wsp_decode_test(WSP.ShortInteger, [i], null, "CodeError");
}
}
run_next_test();
});
//// ShortInteger.encode ////
add_test(function test_ShortInteger_encode() {
for (let i = 0; i < 256; i++) {
if (i & 0x80) {
wsp_encode_test(WSP.ShortInteger, i, null, "CodeError");
} else {
wsp_encode_test(WSP.ShortInteger, i, [0x80 | i]);
}
}
run_next_test();
});
//
// Test target: LongInteger
//
//// LongInteger.decode ////
function LongInteger_decode_testcases(target) {
// Test LongInteger of zero octet
wsp_decode_test(target, [0, 0], null, "CodeError");
wsp_decode_test(target, [1, 0x80], 0x80);
wsp_decode_test(target, [2, 0x80, 2], 0x8002);
wsp_decode_test(target, [3, 0x80, 2, 3], 0x800203);
wsp_decode_test(target, [4, 0x80, 2, 3, 4], 0x80020304);
wsp_decode_test(target, [5, 0x80, 2, 3, 4, 5], 0x8002030405);
wsp_decode_test(target, [6, 0x80, 2, 3, 4, 5, 6], 0x800203040506);
// Test LongInteger of more than 6 octets
wsp_decode_test(target, [7, 0x80, 2, 3, 4, 5, 6, 7], [0x80, 2, 3, 4, 5, 6, 7]);
// Test LongInteger of more than 30 octets
wsp_decode_test(target, [31], null, "CodeError");
}
add_test(function test_LongInteger_decode() {
LongInteger_decode_testcases(WSP.LongInteger);
run_next_test();
});
//// LongInteger.encode ////
function LongInteger_encode_testcases(target) {
wsp_encode_test(target, 0x80, [1, 0x80]);
wsp_encode_test(target, 0x8002, [2, 0x80, 2]);
wsp_encode_test(target, 0x800203, [3, 0x80, 2, 3]);
wsp_encode_test(target, 0x80020304, [4, 0x80, 2, 3, 4]);
wsp_encode_test(target, 0x8002030405, [5, 0x80, 2, 3, 4, 5]);
wsp_encode_test(target, 0x800203040506, [6, 0x80, 2, 3, 4, 5, 6]);
// Test LongInteger of more than 6 octets
wsp_encode_test(target, 0x1000000000000, null, "CodeError");
// Test input empty array
wsp_encode_test(target, [], null, "CodeError");
// Test input octets array of length 1..30
let array = [];
for (let i = 1; i <= 30; i++) {
array.push(i);
wsp_encode_test(target, array, [i].concat(array));
}
// Test input octets array of 31 elements.
array.push(31);
wsp_encode_test(target, array, null, "CodeError");
}
add_test(function test_LongInteger_encode() {
wsp_encode_test(WSP.LongInteger, 0, [1, 0]);
LongInteger_encode_testcases(WSP.LongInteger);
run_next_test();
});
//
// Test target: UintVar
//
//// UintVar.decode ////
add_test(function test_UintVar_decode() {
wsp_decode_test(WSP.UintVar, [0x80], null, "RangeError");
// Test up to max 53 bits integer
wsp_decode_test(WSP.UintVar, [0x7F], 0x7F);
wsp_decode_test(WSP.UintVar, [0xFF, 0x7F], 0x3FFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0x7F], 0x1FFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0x7F], 0xFFFFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x7FFFFFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x3FFFFFFFFFF);
wsp_decode_test(WSP.UintVar, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x1FFFFFFFFFFFF);
wsp_decode_test(WSP.UintVar, [0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F], 0x1FFFFFFFFFFFFF);
wsp_decode_test(WSP.UintVar, [0x01, 0x02], 1);
wsp_decode_test(WSP.UintVar, [0x80, 0x01, 0x02], 1);
wsp_decode_test(WSP.UintVar, [0x80, 0x80, 0x80, 0x01, 0x2], 1);
run_next_test();
});
//// UintVar.encode ////
add_test(function test_UintVar_encode() {
// Test up to max 53 bits integer
wsp_encode_test(WSP.UintVar, 0, [0]);
wsp_encode_test(WSP.UintVar, 0x7F, [0x7F]);
wsp_encode_test(WSP.UintVar, 0x3FFF, [0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x1FFFFF, [0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0xFFFFFFF, [0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x7FFFFFFFF, [0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x3FFFFFFFFFF, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x1FFFFFFFFFFFF, [0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
wsp_encode_test(WSP.UintVar, 0x1FFFFFFFFFFFFF, [0x8F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F]);
run_next_test();
});
//
// Test target: IntegerValue
//
//// IntegerValue.decode ////
add_test(function test_IntegerValue_decode() {
for (let i = 128; i < 256; i++) {
wsp_decode_test(WSP.IntegerValue, [i], i & 0x7F);
}
LongInteger_decode_testcases(WSP.IntegerValue);
run_next_test();
});
//// IntegerValue.decode ////
add_test(function test_IntegerValue_encode() {
for (let i = 0; i < 128; i++) {
wsp_encode_test(WSP.IntegerValue, i, [0x80 | i]);
}
LongInteger_encode_testcases(WSP.IntegerValue);
run_next_test();
});

View File

@ -0,0 +1,132 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
let WSP = {};
subscriptLoader.loadSubScript("resource://gre/modules/WspPduHelper.jsm", WSP);
WSP.debug = do_print;
function run_test() {
run_next_test();
}
//
// Test target: Parameter
//
//// Parameter.decodeTypedParameter ////
add_test(function test_Parameter_decodeTypedParameter() {
function func(data) {
return WSP.Parameter.decodeTypedParameter(data);
}
// Test for array-typed return value from IntegerValue
wsp_decode_test_ex(func, [7, 0, 0, 0, 0, 0, 0, 0], null, "CodeError");
// Test for number-typed return value from IntegerValue
wsp_decode_test_ex(func, [1, 0, 0], {name: "q", value: null});
// Test for NotWellKnownEncodingError
wsp_decode_test_ex(func, [1, 0xFF], null, "NotWellKnownEncodingError");
// Test for parameter specific decoder
wsp_decode_test_ex(func, [1, 0, 100], {name: "q", value: 0.99});
// Test for TextValue
wsp_decode_test_ex(func, [1, 0x10, 48, 46, 57, 57, 0],
{name: "secure", value: "0.99"});
// Test for TextString
wsp_decode_test_ex(func, [1, 0x0A, 60, 115, 109, 105, 108, 62, 0],
{name: "start", value: "<smil>"});
// Test for skipValue
wsp_decode_test_ex(func, [1, 0x0A, 128], null);
run_next_test();
});
//// Parameter.decodeUntypedParameter ////
add_test(function test_Parameter_decodeUntypedParameter() {
function func (data) {
return WSP.Parameter.decodeUntypedParameter(data);
}
wsp_decode_test_ex(func, [1], null, "CodeError");
wsp_decode_test_ex(func, [65, 0, 0], {name: "a", value: null});
// Test for IntegerValue
wsp_decode_test_ex(func, [65, 0, 1, 0], {name: "a", value: 0});
// Test for TextValue
wsp_decode_test_ex(func, [65, 0, 66, 0], {name: "a", value: "B"});
run_next_test();
});
//// Parameter.decode ////
add_test(function test_Parameter_decode() {
wsp_decode_test(WSP.Parameter, [1, 0x0A, 60, 115, 109, 105, 108, 62, 0],
{name: "start", value: "<smil>"});
wsp_decode_test(WSP.Parameter, [65, 0, 66, 0], {name: "a", value: "B"});
run_next_test();
});
//// Parameter.decodeMultiple ////
add_test(function test_Parameter_decodeMultiple() {
wsp_decode_test_ex(function(data) {
return WSP.Parameter.decodeMultiple(data, 13);
}, [1, 0x0A, 60, 115, 109, 105, 108, 62, 0, 65, 0, 66, 0], {start: "<smil>", a: "B"}
);
run_next_test();
});
//// Parameter.encodeTypedParameter ////
add_test(function test_Parameter_encodeTypedParameter() {
function func(data, input) {
WSP.Parameter.encodeTypedParameter(data, input);
return data.array;
}
// Test for NotWellKnownEncodingError
wsp_encode_test_ex(func, {name: "xxx", value: 0}, null, "NotWellKnownEncodingError");
wsp_encode_test_ex(func, {name: "q", value: 0}, [0x80, 1]);
wsp_encode_test_ex(func, {name: "name", value: "A"}, [0x85, 65, 0]);
run_next_test();
});
//// Parameter.encodeUntypedParameter ////
add_test(function test_Parameter_encodeUntypedParameter() {
function func(data, input) {
WSP.Parameter.encodeUntypedParameter(data, input);
return data.array;
}
wsp_encode_test_ex(func, {name: "q", value: 0}, [113, 0, 0x80]);
wsp_encode_test_ex(func, {name: "name", value: "A"}, [110, 97, 109, 101, 0, 65, 0]);
run_next_test();
});
//// Parameter.encodeMultiple ////
add_test(function test_Parameter_encodeMultiple() {
function func(data, input) {
WSP.Parameter.encodeMultiple(data, input);
return data.array;
}
wsp_encode_test_ex(func, {q: 0, n: "A"}, [0x80, 1, 110, 0, 65, 0]);
run_next_test();
});
//// Parameter.encode ////
add_test(function test_Parameter_encode() {
wsp_encode_test(WSP.Parameter, {name: "q", value: 0}, [0x80, 1]);
wsp_encode_test(WSP.Parameter, {name: "n", value: "A"}, [110, 0, 65, 0]);
run_next_test();
});

View File

@ -0,0 +1,241 @@
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
let WSP = {};
subscriptLoader.loadSubScript("resource://gre/modules/WspPduHelper.jsm", WSP);
WSP.debug = do_print;
function run_test() {
run_next_test();
}
//
// Test target: Text
//
//// Text.decode ////
add_test(function test_Text_decode() {
for (let i = 0; i < 256; i++) {
if (i == 0) {
wsp_decode_test(WSP.Text, [0], null, "NullCharError");
} else if ((i < WSP.CTLS) || (i == WSP.DEL)) {
wsp_decode_test(WSP.Text, [i], null, "CodeError");
} else {
wsp_decode_test(WSP.Text, [i], String.fromCharCode(i));
}
}
// Test \r\n(SP|HT)* sequence:
wsp_decode_test(WSP.Text, strToCharCodeArray("\r\n \t \t \t", true), " ");
wsp_decode_test(WSP.Text, strToCharCodeArray("\r\n \t \t \t"), " ");
wsp_decode_test(WSP.Text, strToCharCodeArray("\r\n \t \t \tA"), " ");
run_next_test();
});
//// Text.encode ////
add_test(function test_Text_encode() {
for (let i = 0; i < 256; i++) {
if ((i < WSP.CTLS) || (i == WSP.DEL)) {
wsp_encode_test(WSP.Text, String.fromCharCode(i), null, "CodeError");
} else {
wsp_encode_test(WSP.Text, String.fromCharCode(i), [i]);
}
}
run_next_test();
});
//
// Test target: NullTerminatedTexts
//
//// NullTerminatedTexts.decode ////
add_test(function test_NullTerminatedTexts_decode() {
// Test incompleted string:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray(" ", true), null, "RangeError");
// Test control char:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray(" \n"), null, "CodeError");
// Test normal string:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray(""), "");
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray("oops"), "oops");
// Test \r\n(SP|HT)* sequence:
wsp_decode_test(WSP.NullTerminatedTexts, strToCharCodeArray("A\r\n \t \t \tB"), "A B");
run_next_test();
});
//// NullTerminatedTexts.encode ////
add_test(function test_NullTerminatedTexts_encode() {
wsp_encode_test(WSP.NullTerminatedTexts, "", [0]);
wsp_encode_test(WSP.NullTerminatedTexts, "Hello, World!",
strToCharCodeArray("Hello, World!"));
run_next_test();
});
//
// Test target: Token
//
let TOKEN_SEPS = "()<>@,;:\\\"/[]?={} \t";
//// Token.decode ////
add_test(function test_Token_decode() {
for (let i = 0; i < 256; i++) {
if (i == 0) {
wsp_decode_test(WSP.Token, [i], null, "NullCharError");
} else if ((i < WSP.CTLS) || (i >= WSP.ASCIIS)
|| (TOKEN_SEPS.indexOf(String.fromCharCode(i)) >= 0)) {
wsp_decode_test(WSP.Token, [i], null, "CodeError");
} else {
wsp_decode_test(WSP.Token, [i], String.fromCharCode(i));
}
}
run_next_test();
});
//// Token.encode ////
add_test(function test_Token_encode() {
for (let i = 0; i < 256; i++) {
if ((i < WSP.CTLS) || (i >= WSP.ASCIIS)
|| (TOKEN_SEPS.indexOf(String.fromCharCode(i)) >= 0)) {
wsp_encode_test(WSP.Token, String.fromCharCode(i), null, "CodeError");
} else {
wsp_encode_test(WSP.Token, String.fromCharCode(i), [i]);
}
}
run_next_test();
});
//
// Test target: URIC
//
//// URIC.decode ////
add_test(function test_URIC_decode() {
let uric = "!#$%&'()*+,-./0123456789:;=?@ABCDEFGHIJKLMN"
+ "OPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz~";
for (let i = 0; i < 256; i++) {
if (i == 0) {
wsp_decode_test(WSP.URIC, [i], null, "NullCharError");
} else if (uric.indexOf(String.fromCharCode(i)) >= 0) {
wsp_decode_test(WSP.URIC, [i], String.fromCharCode(i));
} else {
wsp_decode_test(WSP.URIC, [i], null, "CodeError");
}
}
run_next_test();
});
//
// Test target: TextString
//
//// TextString.decode ////
add_test(function test_TextString_decode() {
// Test quoted string
wsp_decode_test(WSP.TextString, [127, 128, 0], String.fromCharCode(128));
// Test illegal quoted string
wsp_decode_test(WSP.TextString, [127, 32, 0], null, "CodeError");
// Test illegal unquoted string
wsp_decode_test(WSP.TextString, [128, 0], null, "CodeError");
// Test normal string
wsp_decode_test(WSP.TextString, [32, 0], " ");
run_next_test();
});
//// TextString.encode ////
add_test(function test_TextString_encode() {
// Test quoted string
wsp_encode_test(WSP.TextString, String.fromCharCode(128), [127, 128, 0]);
// Test normal string
wsp_encode_test(WSP.TextString, "Mozilla", strToCharCodeArray("Mozilla"));
run_next_test();
});
//
// Test target: TokenText
//
//// TokenText.decode ////
add_test(function test_TokenText_decode() {
wsp_decode_test(WSP.TokenText, [65], null, "RangeError");
wsp_decode_test(WSP.TokenText, [0], "");
wsp_decode_test(WSP.TokenText, [65, 0], "A");
run_next_test();
});
//// TokenText.encode ////
add_test(function test_TokenText_encode() {
wsp_encode_test(WSP.TokenText, "B2G", strToCharCodeArray("B2G"));
run_next_test();
});
//
// Test target: QuotedString
//
//// QuotedString.decode ////
add_test(function test_QuotedString_decode() {
// Test non-quoted string
wsp_decode_test(WSP.QuotedString, [32, 0], null, "CodeError");
// Test incompleted string
wsp_decode_test(WSP.QuotedString, [34, 32], null, "RangeError");
wsp_decode_test(WSP.QuotedString, [34, 32, 0], " ");
run_next_test();
});
//// QuotedString.encode ////
add_test(function test_QuotedString_encode() {
wsp_encode_test(WSP.QuotedString, "B2G", [34].concat(strToCharCodeArray("B2G")));
run_next_test();
});
//
// Test target: TextValue
//
//// TextValue.decode ////
add_test(function test_TextValue_decode() {
wsp_decode_test(WSP.TextValue, [0], null);
wsp_decode_test(WSP.TextValue, [65, 0], "A");
wsp_decode_test(WSP.TextValue, [32, 0], null, "CodeError");
wsp_decode_test(WSP.TextValue, [34, 32, 0], " ");
run_next_test();
});
//// TextValue.encode ////
add_test(function test_TextValue_encode() {
wsp_encode_test(WSP.TextValue, undefined, [0]);
wsp_encode_test(WSP.TextValue, null, [0]);
wsp_encode_test(WSP.TextValue, "", [0]);
wsp_encode_test(WSP.TextValue, "A", [65, 0]);
wsp_encode_test(WSP.TextValue, "\x80", [34, 128, 0]);
run_next_test();
});

View File

@ -5,6 +5,14 @@ tail =
[test_smsservice_createsmsmessage.js]
[test_wsp_pdu_helper.js]
run-if = toolkit == "gonk"
[test_wsp_pdu_helper_header.js]
run-if = toolkit == "gonk"
[test_wsp_pdu_helper_numeric.js]
run-if = toolkit == "gonk"
[test_wsp_pdu_helper_parameter.js]
run-if = toolkit == "gonk"
[test_wsp_pdu_helper_text.js]
run-if = toolkit == "gonk"
[test_mms_pdu_helper.js]
run-if = toolkit == "gonk"
[test_mms_service.js]

View File

@ -21,7 +21,7 @@ var gData = [
perm: ["sms"],
needParentPerm: true,
obj: "mozMobileMessage",
idl: "nsIDOMMozMobileMessageManager",
webidl: "MozMobileMessageManager",
settings: [["dom.sms.enabled", true]],
},
]

View File

@ -672,7 +672,7 @@ var interfaceNamesInGlobalScope =
// IMPORTANT: Do not change this list without review from a DOM peer!
{name: "MozMobileNetworkInfo", b2g: true, pref: "dom.mobileconnection.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozMobileMessageManager",
{name: "MozMobileMessageManager", b2g: true, pref: "dom.sms.enabled"},
// IMPORTANT: Do not change this list without review from a DOM peer!
"MozMobileMessageThread",
// IMPORTANT: Do not change this list without review from a DOM peer!

View File

@ -1,24 +0,0 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*/
dictionary MmsParameters {
sequence<DOMString> receivers;
DOMString? subject = null;
DOMString? smil = null;
sequence<MmsAttachment> attachments;
};
// If we start using MmsParameters here, remove it from DummyBinding.
dictionary SmsSendParameters {
unsigned long serviceId; // The ID of the RIL service which needs to be
// specified under the multi-sim scenario.
};
dictionary MmsSendParameters {
unsigned long serviceId; // The ID of the RIL service which needs to be
// specified under the multi-sim scenario.
};

View File

@ -4,13 +4,6 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
// If this is changed, change the MmsMessage.h structure as well.
dictionary MmsAttachment {
DOMString? id = null;
DOMString? location = null;
Blob? content = null;
};
dictionary MmsDeliveryInfo {
DOMString? receiver = null;
DOMString? deliveryStatus = null;
@ -20,5 +13,3 @@ dictionary MmsDeliveryInfo {
DOMTimeStamp readTimestamp = 0; // 0 if not available (e.g.,
// |delivery| = "received" or not yet read).
};
// If we start using MmsParameters here, remove it from DummyBinding.

View File

@ -0,0 +1,123 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/.
*/
interface MozMmsMessage;
interface MozSmsFilter;
interface MozSmsMessage;
dictionary MmsAttachment {
DOMString? id = null;
DOMString? location = null;
Blob? content = null;
};
dictionary MmsParameters {
sequence<DOMString> receivers;
DOMString? subject = null;
DOMString? smil = null;
sequence<MmsAttachment> attachments;
};
dictionary SmsSendParameters {
unsigned long serviceId; // The ID of the RIL service which needs to be
// specified under the multi-sim scenario.
};
dictionary MmsSendParameters {
unsigned long serviceId; // The ID of the RIL service which needs to be
// specified under the multi-sim scenario.
};
[Pref="dom.sms.enabled"]
interface MozMobileMessageManager : EventTarget
{
[Throws]
DOMRequest getSegmentInfoForText(DOMString text);
/**
* Send SMS.
*
* @param number
* Either a DOMString (only one number) or an array of numbers.
* @param text
* The text message to be sent.
* @param sendParameters
* A SmsSendParameters object.
*
* @return
* A DOMRequest object indicating the sending result if one number
* has been passed; an array of DOMRequest objects otherwise.
*/
[Throws]
DOMRequest send(DOMString number,
DOMString text,
optional SmsSendParameters sendParameters);
[Throws]
sequence<DOMRequest> send(sequence<DOMString> numbers,
DOMString text,
optional SmsSendParameters sendParameters);
/**
* Send MMS.
*
* @param parameters
* A MmsParameters object.
* @param sendParameters
* A MmsSendParameters object.
*
* @return
* A DOMRequest object indicating the sending result.
*/
[Throws]
DOMRequest sendMMS(optional MmsParameters parameters,
optional MmsSendParameters sendParameters);
[Throws]
DOMRequest getMessage(long id);
// The parameter can be either a message id, or a Moz{Mms,Sms}Message, or an
// array of Moz{Mms,Sms}Message objects.
[Throws]
DOMRequest delete(long id);
[Throws]
DOMRequest delete(MozSmsMessage message);
[Throws]
DOMRequest delete(MozMmsMessage message);
[Throws]
DOMRequest delete(sequence<(long or MozSmsMessage or MozMmsMessage)> params);
// Iterates through Moz{Mms,Sms}Message.
[Throws]
DOMCursor getMessages(optional MozSmsFilter? filter = null,
optional boolean reverse = false);
[Throws]
DOMRequest markMessageRead(long id,
boolean read,
optional boolean sendReadReport = false);
// Iterates through nsIDOMMozMobileMessageThread.
[Throws]
DOMCursor getThreads();
[Throws]
DOMRequest retrieveMMS(long id);
[Throws]
DOMRequest retrieveMMS(MozMmsMessage message);
[Throws]
DOMRequest getSmscAddress(optional unsigned long serviceId);
attribute EventHandler onreceived;
attribute EventHandler onretrieving;
attribute EventHandler onsending;
attribute EventHandler onsent;
attribute EventHandler onfailed;
attribute EventHandler ondeliverysuccess;
attribute EventHandler ondeliveryerror;
attribute EventHandler onreadsuccess;
attribute EventHandler onreaderror;
};

View File

@ -245,8 +245,6 @@ partial interface Navigator {
boolean mozIsLocallyAvailable(DOMString uri, boolean whenOffline);
};
// nsIDOMMozNavigatorMobileMessage
interface MozMobileMessageManager;
partial interface Navigator {
[Func="Navigator::HasMobileMessageSupport"]
readonly attribute MozMobileMessageManager? mozMobileMessage;

View File

@ -251,11 +251,11 @@ WEBIDL_FILES = [
'MessagePortList.webidl',
'MimeType.webidl',
'MimeTypeArray.webidl',
'MobileMessageManager.webidl',
'MouseEvent.webidl',
'MouseScrollEvent.webidl',
'MozActivity.webidl',
'MozMmsMessage.webidl',
'MozMobileMessageManager.webidl',
'MozNamedAttrMap.webidl',
'MozPowerManager.webidl',
'MozTimeManager.webidl',

View File

@ -8,5 +8,5 @@
# Tests for RLE4 with an invalid BPP
== wrapper.html?invalid-compression-RLE4.bmp about:blank
# Tests for RLE8 with an invalid BPP
random-if(B2G&&browserIsRemote) == wrapper.html?invalid-compression-RLE8.bmp about:blank # Bug 921207
== wrapper.html?invalid-compression-RLE8.bmp about:blank

View File

@ -3,9 +3,9 @@
# Invalid value for bits per pixel (BPP)
== wrapper.html?invalid-bpp.ico about:blank
# Invalid BPP values for RLE4
random-if(B2G&&browserIsRemote) == wrapper.html?invalid-compression-RLE4.ico about:blank
== wrapper.html?invalid-compression-RLE4.ico about:blank
# Invalid BPP values for RLE8
random-if(B2G&&browserIsRemote) == wrapper.html?invalid-compression-RLE8.ico about:blank
== wrapper.html?invalid-compression-RLE8.ico about:blank
# Invalid compression value
== wrapper.html?invalid-compression.ico about:blank

View File

@ -1,4 +1,4 @@
random-if(B2G&&browserIsRemote) == font-size-wrap.html font-size-wrap-ref.html
== font-size-wrap.html font-size-wrap-ref.html
== abs-pos-auto-margin-1.html abs-pos-auto-margin-1-ref.html
fuzzy-if(/^Windows\x20NT\x206\.1/.test(http.oscpu)&&!layersGPUAccelerated&&!azureSkia,73,1) == auto-offset-inline-block-1.html auto-offset-inline-block-1-ref.html # bug 696670
== fieldset-1.html fieldset-1-ref.html

View File

@ -10,7 +10,7 @@
== transparent-image-1.html transparent-image-1-ref.html
!= repeat-image-1.html repeat-image-1-ref.html
== 470250-1.html 470250-1-ref.html
random-if(B2G&&browserIsRemote) == 470250-2.html 470250-2-ref.html
== 470250-2.html 470250-2-ref.html
!= different-h-v-1.html different-h-v-ref.html
!= different-h-v-2.html different-h-v-ref.html
!= different-h-v-1.html different-h-v-2.html

View File

@ -1,4 +1,4 @@
skip-if(B2G&&browserIsRemote) == box-ordinal-with-out-of-flow-1.html box-ordinal-with-out-of-flow-1-ref.html
== box-ordinal-with-out-of-flow-1.html box-ordinal-with-out-of-flow-1-ref.html
skip-if(B2G&&browserIsRemote) == dynamic-1-remove-to-none-grouped.xul dynamic-1-ref.xul
skip-if(B2G&&browserIsRemote) == dynamic-1-add-to-one-grouped.xul dynamic-1-ref.xul
skip-if(B2G&&browserIsRemote) == dynamic-1-remove-to-one-grouped-1.xul dynamic-1-ref.xul

View File

@ -1,4 +1,4 @@
random-if(B2G&&browserIsRemote) == outline-radius-percent-1.html outline-radius-percent-1-ref.html
== outline-radius-percent-1.html outline-radius-percent-1-ref.html
== min-width-1.html min-width-1-ref.html
== min-height-1.html min-height-1-ref.html
== max-width-1.html max-width-1-ref.html

View File

@ -306,7 +306,7 @@ skip-if(B2G) == 291078-1.html 291078-1-ref.html
== 291262-1.html 291262-1-ref.html
== 294306-1.html 294306-1a-ref.html
!= 294306-1.html 294306-1b-ref.html
random-if(B2G&&browserIsRemote) == 296361-1.html 296361-ref.html
== 296361-1.html 296361-ref.html
== 296904-1.html 296904-1-ref.html
skip-if(B2G) == 299136-1.html 299136-1-ref.html
== 299837-1.html 299837-1-ref.html
@ -466,7 +466,7 @@ skip-if(B2G&&browserIsRemote) == 348049-1.xhtml 348049-1-ref.xhtml
== 348516-2.html 348516-2-ref.html
!= 348516-2.html 348516-2-notref.html
!= 348516-3.html 348516-3-notref.html
random-if(B2G&&browserIsRemote) == 348597-1.html 348597-ref.html
== 348597-1.html 348597-ref.html
== 348809-1a.html 348809-1-ref.html
== 348809-1b.html 348809-1-ref.html
== 348809-1c.html 348809-1-ref.html
@ -540,7 +540,7 @@ skip-if(B2G) == 359903-1.html 359903-1-ref.html
== 363247-1.html 363247-1-ref.html
== 363329-1.html 363329-1-ref.html
== 363329-2.html 363329-2-ref.html
random-if(B2G&&browserIsRemote) == 363370-1.html 363370-1-ref.html
== 363370-1.html 363370-1-ref.html
== 363402-1.html 363402-1-ref.html
== 363637-1.html 363637-1-ref.html
skip-if(Android) == 363706-1.html 363706-1-ref.html
@ -698,12 +698,12 @@ skip-if(B2G) == 379349-3b.xhtml 379349-3-ref.xhtml
== 379461-2.xhtml 379461-2.html
skip-if(B2G) == 379461-3-container-xhtml.html 379461-3-container-html.html
skip-if(B2G) fails-if(Android) != 379461-3-container-xhtml.html 379461-3-container-blank.html # there is a scrollbar
random-if(B2G&&browserIsRemote) == 380004-1.html 380004-1-ref.html
random-if(B2G&&browserIsRemote) == 380227-1.html 380227-1-ref.html
== 380004-1.html 380004-1-ref.html
== 380227-1.html 380227-1-ref.html
== 380825-1.html 380825-1-ref.html
== 380842-1.html 380842-1-ref.html
== 381130-1.html 381130-1-ref.html
random-if(B2G&&browserIsRemote) == 381507-1.html 381507-1-ref.html
== 381507-1.html 381507-1-ref.html
== 381746-1.html 381746-1-ref.html
== 382600-1.html 382600-1-ref.html
== 382916-1.html 382916-1-ref.html
@ -741,8 +741,8 @@ skip-if(B2G) fails == 386147-1.html 386147-1-ref.html # bug 447460
== 386310-1b.html 386310-1-ref.html
== 386310-1c.html 386310-1-ref.html
== 386310-1d.html 386310-1-ref.html
random-if(B2G&&browserIsRemote) == 386401-1.html 386401-1-ref.html
random-if(B2G&&browserIsRemote) == 386401-2.html 386401-2-ref.html
== 386401-1.html 386401-1-ref.html
== 386401-2.html 386401-2-ref.html
== 386401-3.html 386401-3-ref.html
== 386470-1a.html 386470-1-ref.html
== 386470-1b.html 386470-1-ref.html
@ -760,8 +760,8 @@ fails == 387344-1.html 387344-1-ref.html # scrolling rowgroups were removed in b
== 387876-3b.html 387876-3-ref.html
== 388026-1.html 388026-1-ref.html
== 389074-1.html 389074-1-ref.html
random-if(B2G&&browserIsRemote) == 389224-1.html 389224-1-ref.html
random-if(B2G&&browserIsRemote) == 389224-2.html about:blank
== 389224-1.html 389224-1-ref.html
== 389224-2.html about:blank
skip-if(B2G) == 389468-1.html 389468-1-ref.html
== 389623-1.html 389623-1-ref.html
skip-if(B2G&&browserIsRemote) == 389636-1.html about:blank # assertion test # bug 975911
@ -846,9 +846,9 @@ skip-if(B2G&&browserIsRemote) == 401946-1.xul about:blank # bug 974780
== 402567-2.html 402567-2-ref.html
== 402567-3.html 402567-3-ref.html
skip-if(B2G) fuzzy-if(gtk2Widget,2,40) == 402567-4.html 402567-4-ref.html
random-if(B2G&&browserIsRemote) == 402629-1.html 402629-1-ref.html
random-if(B2G&&browserIsRemote) == 402629-2.html 402629-2-ref.html
random-if(B2G&&browserIsRemote) == 402629-3.html 402629-3-ref.html
== 402629-1.html 402629-1-ref.html
== 402629-2.html 402629-2-ref.html
== 402629-3.html 402629-3-ref.html
skip-if(B2G) == 402807-1.html 402807-1-ref.html
== 402940-1.html 402940-1-ref.html
== 402940-1b.html 402940-1-ref.html
@ -963,7 +963,7 @@ fails == 413027-3.html 413027-3-ref.html
== 413286-4b.html 413286-4-ref.html
== 413286-5.html 413286-5-ref.html
== 413286-6.html 413286-6-ref.html
skip-if(cocoaWidget) random-if(B2G&&browserIsRemote) == 413292-1.html 413292-1-ref.html # disabling due to failure loading on some mac tinderboxes. See bug 432954
skip-if(cocoaWidget) == 413292-1.html 413292-1-ref.html # disabling due to failure loading on some mac tinderboxes. See bug 432954
== 413361-1.html 413361-1-ref.html
== 413840-background-unchanged.html 413840-background-unchanged-ref.html
== 413840-ltr-offsets.html 413840-ltr-offsets-ref.html
@ -1005,7 +1005,7 @@ skip-if(B2G) == 421234-1.html 421234-1-ref.html
== 421419-1.html 421419-1-ref.html
== 421436-1a.html 421436-1-ref.html
== 421436-1b.html 421436-1-ref.html
random-if(B2G&&browserIsRemote) == 421632-1.html 421632-1-ref.html
== 421632-1.html 421632-1-ref.html
!= 421710-1.html about:blank
skip-if(B2G) fails-if(Android) == 421885-1.xml 421885-1-ref.xml
== 421955-1.html 421955-1-ref.html
@ -1032,7 +1032,7 @@ random-if(gtk2Widget) skip-if(B2G&&browserIsRemote) == 424074-1-ref2.xul 424074-
== 424236-10.html 424236-10-ref.html
== 424236-11.html 424236-3-ref.html
== 424434-1.html 424434-1-ref.html
random-if(B2G&&browserIsRemote) == 424465-1.html 424465-1-ref.html
== 424465-1.html 424465-1-ref.html
== 424631-1.html 424631-1-ref.html
== 424710-1.html 424710-1-ref.html
skip-if(B2G) == 424766-1.html 424766-1-ref.html
@ -1131,7 +1131,7 @@ skip-if(B2G) == 430412-1.html 430412-1-ref.html
== 433700.html 433700-ref.html
== 436356-1.html 436356-1-ref.html
== 436356-2.html 436356-2-ref.html
random-if(B2G&&browserIsRemote) == 438537-1.html 438537-1-ref.html
== 438537-1.html 438537-1-ref.html
== 438981-1.xhtml about:blank
== 438987-1.html 438987-1-ref.html
== 438987-2a.html 438987-2-ref.html
@ -1174,7 +1174,7 @@ test-pref(dom.use_xbl_scopes_for_remote_xul,true) != 449149-1a.html about:blank
test-pref(dom.use_xbl_scopes_for_remote_xul,true) != 449149-1b.html about:blank
== 449149-2.html 449149-2-ref.html
== 449171-1.html 449171-ref.html
random-if(B2G&&browserIsRemote) == 449362-1.html 449362-1-ref.html
== 449362-1.html 449362-1-ref.html
== 449519-1.html 449519-1-ref.html
== 450670-1.html 450670-1-ref.html
== 451168-1.html 451168-1-ref.html
@ -1252,7 +1252,7 @@ skip-if(B2G&&browserIsRemote) == 472500-1.xul 472500-1-ref.xul # bug 974780
skip-if(B2G&&browserIsRemote) == 473847-1.xul 473847-1-ref.xul # bug 974780
skip-if(B2G&&browserIsRemote) == 474336-1.xul 474336-1-ref.xul # bug 974780
skip-if(B2G) == 474417-1.html 474417-1-ref.html
random-if(B2G&&browserIsRemote) == 474472-1.html 474472-1-ref.html
== 474472-1.html 474472-1-ref.html
== 475986-1a.html 475986-1-ref.html
== 475986-1b.html 475986-1-ref.html
== 475986-1c.html 475986-1-ref.html
@ -1316,10 +1316,10 @@ skip-if(B2G) fails-if(Android) random-if(winWidget) fails-if(gtk2Widget) == 4819
== 482398-1.html 482398-1-ref.html
random-if(d2d) skip-if(B2G&&browserIsRemote) == 482592-1a.xhtml 482592-1-ref.html # bug 586771
random-if(d2d) skip-if(B2G&&browserIsRemote) == 482592-1b.xhtml 482592-1-ref.html # bug 586771
random-if(winWidget||(B2G&&browserIsRemote)) == 482659-1a.html 482659-1-ref.html
random-if(B2G&&browserIsRemote) == 482659-1b.html 482659-1-ref.html
random-if(B2G&&browserIsRemote) == 482659-1c.html 482659-1-ref.html
random-if(B2G&&browserIsRemote) == 482659-1d.html 482659-1-ref.html
random-if(winWidget) == 482659-1a.html 482659-1-ref.html
== 482659-1b.html 482659-1-ref.html
== 482659-1c.html 482659-1-ref.html
== 482659-1d.html 482659-1-ref.html
skip-if(B2G&&browserIsRemote) == 483565.xul 483565-ref.xul # bug 974780
== 484256-1.html 484256-1-ref.html
== 484256-2.html 484256-1-ref.html
@ -1336,7 +1336,7 @@ skip-if(B2G&&browserIsRemote) == 483565.xul 483565-ref.xul # bug 974780
== 486052-2g.html 486052-2-ref.html
== 486065-1.html 486065-1-ref.html
skip-if(B2G&&browserIsRemote) == 486848-1.xul 486848-1-ref.xul # bug 974780
random-if(B2G&&browserIsRemote) == 487539-1.html about:blank
== 487539-1.html about:blank
== 488390-1.html 488390-1-ref.html
== 488649-1.html 488649-1-ref.html
== 488685-1.html 488685-1-ref.html
@ -1366,7 +1366,7 @@ skip-if(B2G&&browserIsRemote) == 495354-1b.xhtml 495354-1-ref.xhtml # bug 974780
== 495385-1e.html 495385-1-ref.html
== 495385-1f.html 495385-1-ref.html
== 495385-2a.html 495385-2-ref.html
random-if(B2G&&browserIsRemote) == 495385-2b.html 495385-2-ref.html
== 495385-2b.html 495385-2-ref.html
== 495385-2c.html 495385-2-ref.html
== 495385-2d.html 495385-2-ref.html
== 495385-2e.html 495385-2-ref.html
@ -1384,8 +1384,8 @@ skip-if(B2G&&browserIsRemote) == 498228-1.xul 498228-1-ref.xul # bug 974780
== 501257-1a.html 501257-1-ref.html
== 501257-1b.html 501257-1-ref.html
== 501257-1.xhtml 501257-1-ref.xhtml
skip-if(B2G&&browserIsRemote) == 501627-1.html 501627-1-ref.html # Bug 989165
random-if(B2G&&browserIsRemote) == 502288-1.html 502288-1-ref.html
== 501627-1.html 501627-1-ref.html
== 502288-1.html 502288-1-ref.html
skip-if(B2G) == 502447-1.html 502447-1-ref.html
== 502795-1.html 502795-1-ref.html
== 502942-1.html 502942-1-ref.html
@ -1396,7 +1396,7 @@ skip-if(B2G) == 502447-1.html 502447-1-ref.html
# bug 607548 gets resolved.
needs-focus fails == 503531-1.html 503531-1-ref.html
== 504032-1.html 504032-1-ref.html
random-if(B2G&&browserIsRemote) == 505743-1.html about:blank
== 505743-1.html about:blank
skip-if(B2G) == 506481-1.html 506481-1-ref.html
== 507187-1.html 507187-1-ref.html
== 507487-1.html 507487-1-ref.html
@ -1408,14 +1408,14 @@ skip-if(B2G) == 506481-1.html 506481-1-ref.html
skip-if(B2G) random-if(cocoaWidget) == 508816-1.xul 508816-1-ref.xul # Bug 631982
skip-if(B2G) == 508816-2.html 508816-2-ref.html
skip-if(B2G&&browserIsRemote) == 508908-1.xul 508908-1-ref.xul # bug 974780
random-if(B2G&&browserIsRemote) == 508919-1.xhtml 508919-1-ref.xhtml
random-if(B2G&&browserIsRemote) == 509155-1.xhtml 509155-1-ref.xhtml
== 508919-1.xhtml 508919-1-ref.xhtml
== 509155-1.xhtml 509155-1-ref.xhtml
skip-if(B2G) == 512410.html 512410-ref.html
== 512631-1.html 512631-1-ref.html
random-if(B2G&&browserIsRemote) == 513153-1a.html 513153-1-ref.html
random-if(B2G&&browserIsRemote) == 513153-1b.html 513153-1-ref.html
random-if(B2G&&browserIsRemote) == 513153-2a.html 513153-2-ref.html
random-if(B2G&&browserIsRemote) == 513153-2b.html 513153-2-ref.html
== 513153-1a.html 513153-1-ref.html
== 513153-1b.html 513153-1-ref.html
== 513153-2a.html 513153-2-ref.html
== 513153-2b.html 513153-2-ref.html
skip-if(B2G&&browserIsRemote) == 513318-1.xul 513318-1-ref.xul # bug 974780
skip-if(B2G) fails-if(Android) != 513318-2.xul 513318-2-ref.xul
== 514917-1.html 514917-1-ref.html
@ -1423,7 +1423,7 @@ HTTP(..) == 518172-1a.html 518172-a-ref.html
HTTP(..) == 518172-1b.html 518172-b-ref.html
HTTP(..) == 518172-2a.html 518172-a-ref.html
HTTP(..) == 518172-2b.html 518172-b-ref.html
random-if(B2G&&browserIsRemote) == 520421-1.html 520421-1-ref.html
== 520421-1.html 520421-1-ref.html
== 520563-1.xhtml 520563-1-ref.xhtml
== 521525-1.html 521525-1-ref.html
== 521525-2.html 521525-2-ref.html
@ -1435,7 +1435,7 @@ random-if(B2G&&browserIsRemote) == 520421-1.html 520421-1-ref.html
== 523096-1.html 523096-1-ref.html
random-if(d2d) == 523468-1.html 523468-1-ref.html
== 524175-1.html 524175-1-ref.html
random-if(B2G&&browserIsRemote) == 526463-1.html 526463-1-ref.html
== 526463-1.html 526463-1-ref.html
== 527464-1.html 527464-ref.html
== 528038-1a.html 528038-1-ref.html
== 528038-1b.html 528038-1-ref.html
@ -1461,7 +1461,7 @@ skip-if(B2G&&browserIsRemote) == 537507-1.xul 537507-1-ref.xul # bug 974780
skip-if(B2G&&browserIsRemote) == 537507-2.html 537507-2-ref.html # bug 974780
== 538909-1.html 538909-1-ref.html
== 538935-1.html 538935-1-ref.html
random-if(B2G&&browserIsRemote) == 539226-1.html about:blank
== 539226-1.html about:blank
== 539323-1.html 539323-1-ref.html
== 539323-2.html 539323-2-ref.html
== 539323-3.html 539323-3-ref.html
@ -1476,7 +1476,7 @@ needs-focus != 542116-3.html 542116-3-ref.html
== 542317-1.html 542317-1-ref.html
fuzzy-if(Android,17,2) skip-if(B2G&&browserIsRemote) == 542605-hidden-unscrollable.xul 542605-hidden-unscrollable-ref.xul # bug 974780
== 542620-1.html 542620-1-ref.html
random-if(B2G&&browserIsRemote) == 545049-1.html 545049-1-ref.html
== 545049-1.html 545049-1-ref.html
== 546033-1.html 546033-1-ref.html
random-if(!haveTestPlugin) == 546071-1.html 546071-1-ref.html
== 549184-1.html 549184-1-ref.html
@ -1561,7 +1561,7 @@ random-if(!winWidget) == 574907-2.html 574907-2-ref.html
random-if(!winWidget) fails-if(winWidget&&!d2d) random-if(winWidget&&d2d) != 574907-3.html 574907-3-notref.html
== 577838-1.html 577838-1-ref.html
== 577838-2.html 577838-2-ref.html
random-if(B2G&&browserIsRemote) == 579323-1.html 579323-1-ref.html
== 579323-1.html 579323-1-ref.html
== 579349-1.html 579349-1-ref.html
== 579655-1.html 579655-1-ref.html
skip-if(B2G) fails-if(Android) == 579808-1.html 579808-1-ref.html
@ -1570,14 +1570,14 @@ skip-if(B2G) skip-if(Android) == 580160-1.html 580160-1-ref.html # bug 920927 fo
HTTP(..) == 580863-1.html 580863-1-ref.html
skip-if(B2G) fails-if(Android) random-if(layersGPUAccelerated) == 581317-1.html 581317-1-ref.html
== 581579-1.html 581579-1-ref.html
random-if(B2G&&browserIsRemote) == 582037-1a.html 582037-1-ref.html
== 582037-1a.html 582037-1-ref.html
== 582037-1b.html 582037-1-ref.html
skip-if(B2G) == 582037-2a.html 582037-2-ref.html
skip-if(B2G) == 582037-2b.html 582037-2-ref.html
asserts(1-2) == 582146-1.html about:blank
skip-if(B2G) == 582476-1.svg 582476-1-ref.svg
== 584400-dash-length.svg 584400-dash-length-ref.svg
random-if(B2G&&browserIsRemote) == 584699-1.html 584699-1-ref.html
== 584699-1.html 584699-1-ref.html
== 585598-2.xhtml 585598-2-ref.xhtml
== 586400-1.html 586400-1-ref.html
skip-if(B2G) fuzzy-if(d2d,52,1051) fuzzy-if(OSX==10.8,129,1068) == 586683-1.html 586683-1-ref.html
@ -1585,11 +1585,11 @@ skip-if(B2G) fuzzy-if(d2d,52,1051) fuzzy-if(OSX==10.8,129,1068) == 586683-1.html
== 589615-1b.html 589615-1-ref.html
== 589672-1.html 589672-1-ref.html
!= 589682-1.html 589682-1-notref.html
skip-if(!browserIsRemote) random-if(B2G&&browserIsRemote) == 593243-1.html 593243-1-ref.html # bug 593168
skip-if(!browserIsRemote) random-if(B2G&&browserIsRemote) == 593243-2.html 593243-2-ref.html # bug 593168
skip-if(!browserIsRemote) == 593243-1.html 593243-1-ref.html # bug 593168
skip-if(!browserIsRemote) == 593243-2.html 593243-2-ref.html # bug 593168
== 593544-1.html 593544-1-ref.html
random-if(Android||(B2G&&browserIsRemote)) == 594333-1.html 594333-1-ref.html
random-if(B2G&&browserIsRemote) == 594624-1.html 594624-1-ref.html
random-if(Android) == 594333-1.html 594333-1-ref.html
== 594624-1.html 594624-1-ref.html
== 594737-1.html 594737-1-ref.html
== 597721-1.html 597721-1-ref.html
random-if(winWidget) fuzzy-if(B2G,1,35) fuzzy-if(Android,38,539) needs-focus == 598726-1.html 598726-1-ref.html # Fails on Windows, bug 782196
@ -1609,7 +1609,7 @@ fuzzy-if(Android&&AndroidVersion>=15,8,20) == 602200-3.html 602200-3-ref.html
== 602200-4.html 602200-4-ref.html
== 603423-1.html 603423-1-ref.html
== 604737.html 604737-ref.html
random-if(B2G&&browserIsRemote) == 605138-1.html 605138-1-ref.html # Bug 988758
== 605138-1.html 605138-1-ref.html
== 605157-1.xhtml 605157-1-ref.xhtml
== 607267-1.html 607267-1-ref.html
== 608636-1.html 608636-1-ref.html
@ -1631,18 +1631,18 @@ HTTP(..) == 615121-1.html 615121-1-ref.html
HTTP(..) != 615121-2.html 615121-2-notref.html
fails-if(Android&&AndroidVersion!=10&&AndroidVersion!=17) == 617242-1.html 617242-1-ref.html
!= 618071.html 618071-notref.html
random-if(B2G&&browserIsRemote) == 619117-1.html 619117-1-ref.html
== 619117-1.html 619117-1-ref.html
HTTP(..) == 619511-1.html 619511-1-ref.html
skip-if(Android||(B2G&&browserIsRemote)) HTTP(..) == 621253-1-externalFilter.html 621253-1-ref.html
skip-if(Android||(B2G&&browserIsRemote)) == 621253-1-internalFilter.html 621253-1-ref.html
random-if(B2G&&browserIsRemote) HTTP(..) == 621253-2-externalFilter.html 621253-2-ref.html
HTTP(..) == 621253-2-externalFilter.html 621253-2-ref.html
== 621253-2-internalFilter.html 621253-2-ref.html
skip-if(B2G) random-if(winWidget) fuzzy-if(OSX==10.8,19,17) == 621918-1.svg 621918-1-ref.svg # 1-pixel diacritic positioning discrepancy in rotated text (may depend on platform fonts)
random-if(winWidget) HTTP(..) == 621918-2.svg 621918-2-ref.svg # same 1px issue as above, and HTTP(..) for filters.svg, used to mask antialiasing issues where glyphs touch
fuzzy-if(d2d,5,1) == 622585-1.html 622585-1-ref.html # bug 789402
fuzzy-if(Android&&AndroidVersion>=15,8,300) == 625409-1.html 625409-1-ref.html
random-if(B2G&&browserIsRemote) == 627393-1.html about:blank
random-if(B2G&&browserIsRemote) == 630835-1.html about:blank
== 627393-1.html about:blank
== 630835-1.html about:blank
== 631352-1.html 631352-1-ref.html
skip-if(B2G) fails-if(Android) == 632423-1.html 632423-1-ref.html
skip-if(Android||B2G) random-if(winWidget) == 632781-verybig.html 632781-ref.html
@ -1663,7 +1663,7 @@ skip-if(B2G) == 641770-1.html 641770-1-ref.html
== 641856-1.html 641856-1-ref.html
== 645491-1.html 645491-1-ref.html
== 645768-1.html 645768-1-ref.html
fails-if(layersGPUAccelerated&&cocoaWidget) fails-if(Android&&AndroidVersion<15&&AndroidVersion!=10) random-if(B2G&&browserIsRemote) == 650228-1.html 650228-1-ref.html # Quartz alpha blending doesn't match GL alpha blending
fails-if(layersGPUAccelerated&&cocoaWidget) fails-if(Android&&AndroidVersion<15&&AndroidVersion!=10) == 650228-1.html 650228-1-ref.html # Quartz alpha blending doesn't match GL alpha blending
needs-focus == 652301-1a.html 652301-1-ref.html
needs-focus == 652301-1b.html 652301-1-ref.html
== 652775-1.html 652775-1-ref.html
@ -1701,10 +1701,10 @@ needs-focus != 703186-1.html 703186-2.html
== 714519-2-as.html 714519-2-ref.html
== 714519-2-q.html 714519-2-ref.html
skip-if(B2G) fuzzy-if(true,1,21) fuzzy-if(cocoaWidget,1,170) fuzzy-if(Android&&browserIsRemote,7,157) fails-if(Android&&!browserIsRemote&&AndroidVersion!=17&&AndroidVersion!=10) == 718521.html 718521-ref.html # bug 760270 # bug 773482
random-if(B2G&&browserIsRemote) == 720987.html 720987-ref.html
random-if(B2G&&browserIsRemote) == 722888-1.html 722888-1-ref.html
random-if(B2G&&browserIsRemote) == 722923-1.html 722923-1-ref.html
random-if(B2G&&browserIsRemote) == 723484-1.html 723484-1-ref.html
== 720987.html 720987-ref.html
== 722888-1.html 722888-1-ref.html
== 722923-1.html 722923-1-ref.html
== 723484-1.html 723484-1-ref.html
random-if(Android||(B2G&&browserIsRemote)) == 728983-1.html 728983-1-ref.html
skip-if(B2G) == 729143-1.html 729143-1-ref.html
== 731521-1.html 731521-1-ref.html
@ -1717,7 +1717,7 @@ skip-if(B2G) == 748803-1.html 748803-1-ref.html
== 750551-1.html 750551-1-ref.html
skip-if(B2G) == 751012-1a.html 751012-1-ref.html
skip-if(B2G) == 751012-1b.html 751012-1-ref.html
random-if(Android||(B2G&&browserIsRemote)) == 753329-1.html about:blank
random-if(Android) == 753329-1.html about:blank
== 758561-1.html 758561-1-ref.html
fuzzy-if(true,1,90) random-if(Android&&AndroidVersion<15) == 759036-1.html 759036-1-ref.html
fuzzy-if(true,17,5879) random-if(Android&&AndroidVersion<15) == 759036-2.html 759036-2-ref.html
@ -1733,31 +1733,31 @@ random-if(Android&&AndroidVersion<15) == 776265-1a.html 776265-1-ref.html
== 776443-2.html 776443-2-ref.html
== 786254-1.html 786254-1-ref.html
== 787947-1.html 787947-1-ref.html
random-if(B2G&&browserIsRemote) == 796847-1.svg 796847-1-ref.svg
== 796847-1.svg 796847-1-ref.svg
fuzzy(40,850) fuzzy-if(azureQuartz,73,542) == 797797-1.html 797797-1-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
fuzzy(40,850) fuzzy-if(azureQuartz,68,586) == 797797-2.html 797797-2-ref.html # 'opacity:N' and rgba(,,,N) text don't match precisely
== 801681-1.html 801681-1-ref.html
== 801681-2.html 801681-2-ref.html
== 801994-1.html 801994-1-ref.html
== 804323-1.html 804323-1-ref.html
fuzzy-if(Android,8,608) skip-if(B2G&&browserIsRemote) == 811301-1.html 811301-1-ref.html
fuzzy-if(Android,8,608) == 811301-1.html 811301-1-ref.html
== 812824-1.html 812824-1-ref.html
== 814677.html 814677-ref.html
skip-if(B2G) == 814952-1.html 814952-1-ref.html
skip-if(B2G) fuzzy-if(Android,4,400) == 815593-1.html 815593-1-ref.html
== 816359-1.html 816359-1-ref.html
random-if(B2G&&browserIsRemote) == 816458-1.html 816458-1-ref.html
== 816458-1.html 816458-1-ref.html
== 816948-1.html 816948-1-ref.html
== 817019-1.html about:blank
skip-if(B2G) == 818276-1.html 818276-1-ref.html
== 825999.html 825999-ref.html
== 827577-1a.html 827577-1-ref.html
random-if(B2G&&browserIsRemote) == 827577-1b.html 827577-1-ref.html
== 827577-1b.html 827577-1-ref.html
== 827799-1.html about:blank
== 829958.html 829958-ref.html
== 836844-1.html 836844-1-ref.html
== 841192-1.html 841192-1-ref.html
random-if(B2G&&browserIsRemote) == 844178.html 844178-ref.html
== 844178.html 844178-ref.html
== 846144-1.html 846144-1-ref.html
== 847850-1.html 847850-1-ref.html
== 848421-1.html 848421-1-ref.html
@ -1775,15 +1775,15 @@ skip-if(B2G&&browserIsRemote) == 858803-1.html 858803-1-ref.html # bug 974780
== 883987-1e.html 883987-1-ref.html
== 883987-1f.html 883987-1-ref.html
== 890495-1.html 890495-1-ref.html
random-if(B2G&&browserIsRemote) == 894931-1.html 894931-1-ref.html
== 894931-1.html 894931-1-ref.html
== 897491-1.html 897491-1-ref.html
== 897491-2.html 897491-2-ref.html
fuzzy(2,10000) fuzzy-if(Android&&AndroidVersion>=15,5,10000) == 902330-1.html 902330-1-ref.html
fuzzy-if(Android,8,400) == 906199-1.html 906199-1-ref.html
== 921716-1.html 921716-1-ref.html
test-pref(layout.css.sticky.enabled,true) random-if(B2G&&browserIsRemote) == 926155-1.html 926155-1-ref.html
fuzzy-if(cocoaWidget,1,40) random-if(B2G&&browserIsRemote) == 928607-1.html 928607-1-ref.html
random-if(B2G&&browserIsRemote) == 931464-1.html 931464-1-ref.html
test-pref(layout.css.sticky.enabled,true) == 926155-1.html 926155-1-ref.html
fuzzy-if(cocoaWidget,1,40) == 928607-1.html 928607-1-ref.html
== 931464-1.html 931464-1-ref.html
== 931853.html 931853-ref.html
== 931853-quirks.html 931853-quirks-ref.html
fuzzy-if(OSX==10.6,2,30) skip-if(B2G&&browserIsRemote) == 933264-1.html 933264-1-ref.html
@ -1793,17 +1793,17 @@ fails == 942017.html 942017-ref.html # bug 942017
== 942672-1.html 942672-1-ref.html
== 953334-win32-clipping.html 953334-win32-clipping-ref.html
== 956513-1.svg 956513-1-ref.svg
random-if(B2G&&browserIsRemote) == 944291-1.html 944291-1-ref.html
== 944291-1.html 944291-1-ref.html
== 950436-1.html 950436-1-ref.html
== 957770-1.svg 957770-1-ref.svg
== 960277-1.html 960277-1-ref.html
pref(layout.css.overflow-clip-box.enabled,true) fuzzy(50,31) == 966992-1.html 966992-1-ref.html
skip-if(Android) == 966510-1.html 966510-1-ref.html # scrollable elements other than the root probably won't work well on android until bug 776030 is fixed
skip-if(Android) == 966510-2.html 966510-2-ref.html # same as above
random-if(B2G&&browserIsRemote) == 978911-1.svg 978911-1-ref.svg
== 978911-1.svg 978911-1-ref.svg
== 983084-1.html 983084-1-ref.html
random-if(B2G&&browserIsRemote) == 983084-2.html 983084-2-ref.html
random-if(B2G&&browserIsRemote) == 983084-3.html 983084-1-ref.html
== 983084-2.html 983084-2-ref.html
== 983084-3.html 983084-1-ref.html
== 983691-1.html 983691-ref.html
== 985303-1a.html 985303-1-ref.html
== 985303-1b.html 985303-1-ref.html

View File

@ -1,7 +1,7 @@
== default-size.html default-size-ref.html
skip-if(B2G) fuzzy-if(Android&&AndroidVersion>=15,8,1000) == size-1.html size-1-ref.html
random-if(B2G&&browserIsRemote) == empty-transaction-1.html empty-transaction-1-ref.html
== empty-transaction-1.html empty-transaction-1-ref.html
== image-rendering-test.html image-rendering-ref.html
== image-shadow.html image-shadow-ref.html

View File

@ -19,8 +19,8 @@
== column-box-alignment-rtl.html column-box-alignment-rtl-ref.html
HTTP(..) == columnfill-balance.html columnfill-balance-ref.html
HTTP(..) == columnfill-auto.html columnfill-auto-ref.html
random-if(B2G&&browserIsRemote) HTTP(..) == columnfill-auto-2.html columnfill-auto-2-ref.html
random-if(B2G&&browserIsRemote) HTTP(..) == columnfill-auto-3.html columnfill-auto-2-ref.html
HTTP(..) == columnfill-auto-2.html columnfill-auto-2-ref.html
HTTP(..) == columnfill-auto-3.html columnfill-auto-2-ref.html
skip-if(B2G) == columnrule-basic.html columnrule-basic-ref.html # bug 773482
skip-if(B2G) == columnrule-complex.html columnrule-complex-ref.html # bug 773482
!= columnrule-linestyles.html columnrule-linestyles-notref.html

View File

@ -38,16 +38,16 @@
== t1204-implied-00-b-test.html t1204-implied-00-b-reference.html
== t1204-implied-01-c-test.html t1204-implied-01-c-reference.html
== t1204-implied-02-d-test.html t1204-implied-02-d-reference.html
random-if(B2G&&browserIsRemote) == t1204-increment-00-c-o-test.html t1204-increment-00-c-o-reference.html
random-if(B2G&&browserIsRemote) == t1204-increment-01-c-o-test.html t1204-increment-01-c-o-reference.html
random-if(B2G&&browserIsRemote) == t1204-increment-02-c-o-test.html t1204-increment-02-c-o-reference.html
== t1204-increment-00-c-o-test.html t1204-increment-00-c-o-reference.html
== t1204-increment-01-c-o-test.html t1204-increment-01-c-o-reference.html
== t1204-increment-02-c-o-test.html t1204-increment-02-c-o-reference.html
== t1204-multiple-00-c-test.html t1204-multiple-00-c-reference.html
== t1204-multiple-01-c-test.html t1204-multiple-01-c-reference.html
== t1204-order-00-c-test.html t1204-order-00-c-reference.html
== t1204-order-01-d-test.html t1204-order-01-d-reference.html
random-if(B2G&&browserIsRemote) == t1204-reset-00-c-o-test.html t1204-reset-00-c-o-reference.html
random-if(B2G&&browserIsRemote) == t1204-reset-01-c-o-test.html t1204-reset-01-c-o-reference.html
random-if(B2G&&browserIsRemote) == t1204-reset-02-c-o-test.html t1204-reset-02-c-o-reference.html
== t1204-reset-00-c-o-test.html t1204-reset-00-c-o-reference.html
== t1204-reset-01-c-o-test.html t1204-reset-01-c-o-reference.html
== t1204-reset-02-c-o-test.html t1204-reset-02-c-o-reference.html
== t1204-root-e-test.html t1204-root-e-reference.html
== t120401-scope-00-b-test.html t120401-scope-00-b-reference.html
== t120401-scope-01-c-test.html t120401-scope-01-c-reference.html

View File

@ -1,5 +1,5 @@
== input-valid.html input-ref.html
fuzzy(11,4) random-if(B2G&&browserIsRemote) == input-customerror.html input-ref.html
fuzzy(11,4) == input-customerror.html input-ref.html
skip-if(B2G) fails-if(Android) == input-disabled.html input-ref.html
skip-if(B2G) fails-if(Android) == input-dyn-disabled.html input-ref.html
== input-dyn-not-disabled.html input-ref.html
@ -19,7 +19,7 @@ skip-if(B2G) fails-if(Android) == input-dyn-disabled.html input-ref.html
== input-pattern-valid.html input-withtext-ref.html
== input-pattern-invalid.html input-withtext-ref.html
== input-type-barred.html input-button-ref.html
fuzzy(11,4) random-if(B2G&&browserIsRemote) == input-type-invalid.html input-ref.html
fuzzy(11,4) == input-type-invalid.html input-ref.html
== input-disabled-fieldset-1.html input-fieldset-ref.html
== input-disabled-fieldset-2.html input-fieldset-ref.html
== input-fieldset-legend.html input-fieldset-legend-ref.html

View File

@ -1,11 +1,11 @@
== textarea-valid.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-customerror.html textarea-ref.html
== textarea-customerror.html textarea-ref.html
fails-if(Android||B2G) == textarea-disabled.html textarea-ref.html
fails-if(Android||B2G) == textarea-dyn-disabled.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-disabled.html textarea-ref.html
== textarea-dyn-not-disabled.html textarea-ref.html
== textarea-readonly.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-readonly.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-readonly.html textarea-ref.html
== textarea-dyn-readonly.html textarea-ref.html
== textarea-dyn-not-readonly.html textarea-ref.html
== textarea-maxlength-valid.html textarea-ref.html
== textarea-maxlength-invalid.html textarea-withtext-ref.html
== textarea-required-valid.html textarea-withtext-ref.html

View File

@ -15,5 +15,5 @@ skip-if(B2G) == mq_print_maxheight_updown.xhtml mq_print-ref.xhtml # bug 773482
skip-if(B2G) == mq_print_minheight_updown.xhtml mq_print-ref.xhtml # bug 773482
skip-if(B2G) == mq_print_minwidth_updown.xhtml mq_print-ref.xhtml # bug 773482
random-if(B2G&&browserIsRemote) == scoped-mq-update.html scoped-mq-update-ref.html
== scoped-mq-update.html scoped-mq-update-ref.html
== system-metrics-1.html system-metrics-1-ref.html

View File

@ -1,5 +1,5 @@
== input-valid.html input-ref.html
fuzzy(64,4) random-if(B2G&&browserIsRemote) == input-customerror.html input-ref.html
fuzzy(64,4) == input-customerror.html input-ref.html
skip-if(B2G) fails-if(Android) == input-disabled.html input-ref.html
skip-if(B2G) fails-if(Android) == input-dyn-disabled.html input-ref.html
== input-dyn-not-disabled.html input-ref.html
@ -25,7 +25,7 @@ skip-if(B2G) fails-if(Android) == input-dyn-disabled.html input-ref.html
== input-pattern-invalid-default.html input-withtext-ref.html
== input-pattern-invalid-changed.html input-withtext-ref.html
== input-type-barred.html input-button-ref.html
fuzzy(64,4) random-if(B2G&&browserIsRemote) == input-type-invalid.html input-ref.html
fuzzy(64,4) == input-type-invalid.html input-ref.html
== input-disabled-fieldset-1.html input-fieldset-ref.html
== input-disabled-fieldset-2.html input-fieldset-ref.html
== input-fieldset-legend.html input-fieldset-legend-ref.html

View File

@ -1,18 +1,18 @@
== textarea-valid.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-customerror.html textarea-ref.html
== textarea-customerror.html textarea-ref.html
skip-if(B2G) fails-if(Android) == textarea-disabled.html textarea-ref.html
fails-if(Android||B2G) == textarea-dyn-disabled.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-disabled.html textarea-ref.html
== textarea-dyn-not-disabled.html textarea-ref.html
== textarea-readonly.html textarea-ref.html
== textarea-dyn-readonly.html textarea-ref.html
== textarea-dyn-not-readonly-not-changed.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-readonly-changed.html textarea-ref.html
== textarea-dyn-not-readonly-changed.html textarea-ref.html
== textarea-maxlength-valid.html textarea-ref.html
== textarea-maxlength-invalid.html textarea-withtext-ref.html
== textarea-maxlength-default-value-invalid.html textarea-withtext-ref.html
== textarea-required-valid.html textarea-withtext-ref.html
== textarea-required-invalid.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-required-invalid-changed.html textarea-ref.html
== textarea-required-invalid-changed.html textarea-ref.html
== textarea-disabled-fieldset-1.html textarea-fieldset-ref.html
== textarea-disabled-fieldset-2.html textarea-fieldset-ref.html
== textarea-novalidate.html textarea-ref.html

View File

@ -26,7 +26,7 @@ fails-if(Android||B2G) == input-dyn-disabled.html input-ref.html
== input-pattern-valid-changed.html input-withtext-ref.html
== input-pattern-invalid.html input-withtext-ref.html
== input-type-barred.html input-button-ref.html
fuzzy(64,4) random-if(B2G&&browserIsRemote) == input-type-invalid.html input-ref.html
fuzzy(64,4) == input-type-invalid.html input-ref.html
== input-disabled-fieldset-1.html input-fieldset-ref.html
== input-disabled-fieldset-2.html input-fieldset-ref.html
== input-fieldset-legend.html input-fieldset-legend-ref.html

View File

@ -11,7 +11,7 @@ needs-focus == select-required-valid-changed-1.html select-required-ref.html
needs-focus == select-required-valid-changed-2.html select-required-ref.html
needs-focus == select-required-multiple-invalid.html select-required-multiple-ref.html
needs-focus == select-required-multiple-valid.html select-required-multiple-ref.html
fuzzy(64,4) random-if(B2G&&browserIsRemote) needs-focus == select-required-multiple-valid-changed.html select-required-multiple-ref.html
fuzzy(64,4) needs-focus == select-required-multiple-valid-changed.html select-required-multiple-ref.html
fails-if(Android||B2G) needs-focus == select-disabled-fieldset-1.html select-fieldset-ref.html
fails-if(Android||B2G) needs-focus == select-disabled-fieldset-2.html select-fieldset-ref.html
needs-focus == select-fieldset-legend.html select-fieldset-legend-ref.html

View File

@ -2,14 +2,14 @@
== textarea-customerror.html textarea-ref.html
fails-if(Android||B2G) == textarea-disabled.html textarea-ref.html
random-if(Android||B2G) == textarea-dyn-disabled.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-disabled.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-disabled-changed.html textarea-ref.html
== textarea-dyn-not-disabled.html textarea-ref.html
== textarea-dyn-not-disabled-changed.html textarea-ref.html
== textarea-readonly.html textarea-ref.html
== textarea-dyn-readonly.html textarea-ref.html
== textarea-dyn-not-readonly.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-readonly-changed.html textarea-ref.html
== textarea-dyn-not-readonly-changed.html textarea-ref.html
== textarea-maxlength-valid.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-maxlength-valid-changed.html textarea-ref.html
== textarea-maxlength-valid-changed.html textarea-ref.html
== textarea-maxlength-invalid.html textarea-withtext-ref.html
== textarea-required-valid.html textarea-withtext-ref.html
== textarea-required-valid-changed.html textarea-withtext-ref.html

View File

@ -1,5 +1,5 @@
== input-valid.html input-ref.html
fuzzy(64,4) random-if(B2G&&browserIsRemote) == input-customerror.html input-ref.html
fuzzy(64,4) == input-customerror.html input-ref.html
fails-if(Android||B2G) == input-disabled.html input-ref.html
fails-if(Android||B2G) == input-dyn-disabled.html input-ref.html
== input-dyn-not-disabled.html input-ref.html
@ -19,7 +19,7 @@ fails-if(Android||B2G) == input-dyn-disabled.html input-ref.html
== input-pattern-valid.html input-withtext-ref.html
== input-pattern-invalid.html input-withtext-ref.html
== input-type-barred.html input-button-ref.html
fuzzy(64,4) random-if(B2G&&browserIsRemote) == input-type-invalid.html input-ref.html
fuzzy(64,4) == input-type-invalid.html input-ref.html
== input-disabled-fieldset-1.html input-fieldset-ref.html
== input-disabled-fieldset-2.html input-fieldset-ref.html
== input-fieldset-legend.html input-fieldset-legend-ref.html

View File

@ -1,11 +1,11 @@
== textarea-valid.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-customerror.html textarea-ref.html
== textarea-customerror.html textarea-ref.html
fails-if(Android||B2G) == textarea-disabled.html textarea-ref.html
fails-if(Android||B2G) == textarea-dyn-disabled.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-disabled.html textarea-ref.html
== textarea-dyn-not-disabled.html textarea-ref.html
== textarea-readonly.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-readonly.html textarea-ref.html
random-if(B2G&&browserIsRemote) == textarea-dyn-not-readonly.html textarea-ref.html
== textarea-dyn-readonly.html textarea-ref.html
== textarea-dyn-not-readonly.html textarea-ref.html
== textarea-maxlength-valid.html textarea-ref.html
== textarea-maxlength-invalid.html textarea-withtext-ref.html
== textarea-required-valid.html textarea-withtext-ref.html

View File

@ -31,7 +31,7 @@
== insertmultiplemultiple-2.html insertmultiplemultiple-ref.html
# testing bindings that have multiple insertion points
random-if(B2G&&browserIsRemote) == multipleinsertionpoints-ref2.xhtml multipleinsertionpoints-ref.xhtml #Bug 988759
random-if(B2G&&browserIsRemote) == multipleinsertionpoints-ref2.xhtml multipleinsertionpoints-ref.xhtml # Bug 988759
# append a single element
skip-if(B2G) == multipleinsertionpoints-appendsingle-1.xhtml multipleinsertionpoints-ref.xhtml # bug 773482
skip-if(B2G) == multipleinsertionpoints-appendsingle-2.xhtml multipleinsertionpoints-ref.xhtml # bug 773482

View File

@ -26,7 +26,7 @@ load stress-10.html # crash test
== stress-11.xhtml stress-11-ref.xhtml
== border-not-apply.html border-not-apply-ref.html
skip-if(B2G&&browserIsRemote) == 287088-1.html 287088-1-ref.html # Bug 975254
== 287088-1.html 287088-1-ref.html
== 287088-2.html 287088-2-ref.html
== 403177-1.html 403177-1-ref.html
== 469227-2.html 469227-2-ref.html

View File

@ -56,30 +56,30 @@ fuzzy-if(B2G,10,3) random-if(winWidget) == flexbox-align-self-baseline-horiz-3.x
== flexbox-box-sizing-on-items-vert-1b.html flexbox-box-sizing-on-items-vert-1-ref.html
# Tests for dynamic modifications of content inside/around a flex container
random-if(B2G&&browserIsRemote) == flexbox-dyn-changeFrameWidth-1.xhtml flexbox-dyn-changeFrameWidth-1-ref.xhtml
== flexbox-dyn-changeFrameWidth-1.xhtml flexbox-dyn-changeFrameWidth-1-ref.xhtml
== flexbox-dyn-changeFrameWidth-2.xhtml flexbox-dyn-changeFrameWidth-2-ref.xhtml
== flexbox-dyn-changeFrameWidth-3.xhtml flexbox-dyn-changeFrameWidth-3-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-changeFrameWidth-4.xhtml flexbox-dyn-changeFrameWidth-4-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-changePadding-1a.xhtml flexbox-dyn-changePadding-1-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-changePadding-1b.xhtml flexbox-dyn-changePadding-1-ref.xhtml
== flexbox-dyn-changeFrameWidth-4.xhtml flexbox-dyn-changeFrameWidth-4-ref.xhtml
== flexbox-dyn-changePadding-1a.xhtml flexbox-dyn-changePadding-1-ref.xhtml
== flexbox-dyn-changePadding-1b.xhtml flexbox-dyn-changePadding-1-ref.xhtml
# Tests for dynamic insertions of content into a flex container
# (with existing [div | span | text] inside the flexbox, and new content
# inserted adjacent to that existing content.)
== flexbox-dyn-insertAroundDiv-1.xhtml flexbox-dyn-insertAroundDiv-1-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-insertAroundDiv-2.xhtml flexbox-dyn-insertAroundDiv-2-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-insertAroundDiv-3.xhtml flexbox-dyn-insertAroundDiv-3-ref.xhtml
== flexbox-dyn-insertAroundDiv-2.xhtml flexbox-dyn-insertAroundDiv-2-ref.xhtml
== flexbox-dyn-insertAroundDiv-3.xhtml flexbox-dyn-insertAroundDiv-3-ref.xhtml
== flexbox-dyn-insertAroundSpan-1.xhtml flexbox-dyn-insertAroundDiv-1-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-insertAroundSpan-2.xhtml flexbox-dyn-insertAroundDiv-2-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-insertAroundSpan-3.xhtml flexbox-dyn-insertAroundDiv-3-ref.xhtml
== flexbox-dyn-insertAroundSpan-2.xhtml flexbox-dyn-insertAroundDiv-2-ref.xhtml
== flexbox-dyn-insertAroundSpan-3.xhtml flexbox-dyn-insertAroundDiv-3-ref.xhtml
== flexbox-dyn-insertAroundText-1.xhtml flexbox-dyn-insertAroundText-1-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-insertAroundText-2.xhtml flexbox-dyn-insertAroundText-2-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-dyn-insertAroundText-3.xhtml flexbox-dyn-insertAroundText-3-ref.xhtml
== flexbox-dyn-insertAroundText-2.xhtml flexbox-dyn-insertAroundText-2-ref.xhtml
== flexbox-dyn-insertAroundText-3.xhtml flexbox-dyn-insertAroundText-3-ref.xhtml
# Variant of one of the above tests, to regression-test an invalidation issue
random-if(B2G&&browserIsRemote) == flexbox-dyn-insertEmptySpan-1.xhtml flexbox-dyn-insertEmptySpan-1-ref.xhtml
== flexbox-dyn-insertEmptySpan-1.xhtml flexbox-dyn-insertEmptySpan-1-ref.xhtml
# Tests for empty flexboxes (with no flex items)
== flexbox-empty-1a.xhtml flexbox-empty-1-ref.xhtml
@ -114,10 +114,10 @@ fuzzy-if(Android&&AndroidVersion>=15,16,400) == flexbox-position-fixed-2.xhtml
# Tests for inline content in a flexbox that gets wrapped in an anonymous block
fails == flexbox-inlinecontent-horiz-1a.xhtml flexbox-inlinecontent-horiz-1-ref.xhtml # reference case rendering is incorrect; bug 858333
fails == flexbox-inlinecontent-horiz-1b.xhtml flexbox-inlinecontent-horiz-1-ref.xhtml # reference case rendering is incorrect; bug 858333
random-if(B2G&&browserIsRemote) == flexbox-inlinecontent-horiz-2.xhtml flexbox-inlinecontent-horiz-2-ref.xhtml
== flexbox-inlinecontent-horiz-2.xhtml flexbox-inlinecontent-horiz-2-ref.xhtml
== flexbox-inlinecontent-horiz-3a.xhtml flexbox-inlinecontent-horiz-3-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-inlinecontent-horiz-3b.xhtml flexbox-inlinecontent-horiz-3-ref.xhtml
random-if(B2G&&browserIsRemote) == flexbox-inlinecontent-horiz-3c.xhtml flexbox-inlinecontent-horiz-3-ref.xhtml
== flexbox-inlinecontent-horiz-3b.xhtml flexbox-inlinecontent-horiz-3-ref.xhtml
== flexbox-inlinecontent-horiz-3c.xhtml flexbox-inlinecontent-horiz-3-ref.xhtml
== flexbox-inlinecontent-horiz-4.xhtml flexbox-inlinecontent-horiz-4-ref.xhtml
== flexbox-inlinecontent-horiz-5.xhtml flexbox-inlinecontent-horiz-5-ref.xhtml
@ -128,7 +128,7 @@ random-if(B2G&&browserIsRemote) == flexbox-inlinecontent-horiz-3c.xhtml flexbox-
== flexbox-intrinsic-sizing-horiz-2b.xhtml flexbox-intrinsic-sizing-horiz-2-ref.xhtml
# Tests for invalidation after dynamic modifications
random-if(B2G&&browserIsRemote) == flexbox-invalidation-1.html flexbox-invalidation-1-ref.html
== flexbox-invalidation-1.html flexbox-invalidation-1-ref.html
# Tests for flexbox in an iframe that gets resized.
skip-if(B2G) == flexbox-resizeviewport-1.xhtml flexbox-resizeviewport-1-ref.xhtml

View File

@ -17,4 +17,4 @@ fails == 345369-2.html 345369-2-ref.html
== 345369-5.html 345369-5-ref.html
== 429974-1.html 429974-1-ref.html
== 546048-1.html 546048-1-ref.html
random-if(B2G&&browserIsRemote) == 775350-1.html 775350-1-ref.html
== 775350-1.html 775350-1-ref.html

View File

@ -1,9 +1,9 @@
random-if(B2G&&browserIsRemote) == dynamic-legend-scroll-1.html dynamic-legend-scroll-1-ref.html
== dynamic-legend-scroll-1.html dynamic-legend-scroll-1-ref.html
== fieldset-hidden-1.html fieldset-hidden-1-ref.html
== fieldset-intrinsic-width-1.html fieldset-intrinsic-width-1-ref.html
== fieldset-percentage-padding-1.html fieldset-percentage-padding-1-ref.html
== fieldset-scroll-1.html fieldset-scroll-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-scrolled-1.html fieldset-scrolled-1-ref.html
== fieldset-scrolled-1.html fieldset-scrolled-1-ref.html
random-if(B2G) == fieldset-overflow-auto-1.html fieldset-overflow-auto-1-ref.html
== positioned-container-1.html positioned-container-1-ref.html
== relpos-legend-1.html relpos-legend-1-ref.html

View File

@ -11,8 +11,8 @@ skip-if(!Android&&!B2G) == number-same-as-text-unthemed.html number-same-as-text
== number-similar-to-text-unthemed.html number-similar-to-text-unthemed-ref.html
# dynamic type changes:
fuzzy-if(/^Windows\x20NT\x205\.1/.test(http.oscpu),64,4) fuzzy-if(cocoaWidget,63,4) random-if(B2G&&browserIsRemote) == to-number-from-other-type-unthemed-1.html to-number-from-other-type-unthemed-1-ref.html
random-if(B2G&&browserIsRemote) == from-number-to-other-type-unthemed-1.html from-number-to-other-type-unthemed-1-ref.html
fuzzy-if(/^Windows\x20NT\x205\.1/.test(http.oscpu),64,4) fuzzy-if(cocoaWidget,63,4) == to-number-from-other-type-unthemed-1.html to-number-from-other-type-unthemed-1-ref.html
== from-number-to-other-type-unthemed-1.html from-number-to-other-type-unthemed-1-ref.html
# dynamic value changes:
== show-value.html show-value-ref.html
@ -21,7 +21,7 @@ random-if(B2G&&browserIsRemote) == from-number-to-other-type-unthemed-1.html fro
== number-disabled.html number-disabled-ref.html
# auto width:
random-if(B2G&&browserIsRemote) == number-auto-width-1.html number-auto-width-1-ref.html
== number-auto-width-1.html number-auto-width-1-ref.html
# min-height/max-height tests:
skip-if(B2G||Android) == number-min-height-1.html number-min-height-1-ref.html

View File

@ -1,26 +1,27 @@
# sanity checks:
!= not-other-type-unthemed-1.html not-other-type-unthemed-1a-notref.html
!= not-other-type-unthemed-1.html not-other-type-unthemed-1b-notref.html
!= not-other-type-unthemed-1.html not-other-type-unthemed-1c-notref.html
# dynamic type changes:
random-if(B2G&&browserIsRemote) == to-range-from-other-type-unthemed-1.html to-range-from-other-type-unthemed-1-ref.html
random-if(B2G&&browserIsRemote) == from-range-to-other-type-unthemed-1.html from-range-to-other-type-unthemed-1-ref.html
== to-range-from-other-type-unthemed-1.html to-range-from-other-type-unthemed-1-ref.html
== from-range-to-other-type-unthemed-1.html from-range-to-other-type-unthemed-1-ref.html
# for different values:
!= different-fraction-of-range-unthemed-1.html different-fraction-of-range-unthemed-1-notref.html
== same-fraction-of-range-unthemed-1.html same-fraction-of-range-unthemed-1-ref.html
# dynamic value changes:
random-if(B2G&&browserIsRemote) == value-prop-unthemed.html 75pct-unthemed-common-ref.html
random-if(B2G&&browserIsRemote) == value-prop.html 75pct-common-ref.html
random-if(B2G&&browserIsRemote) == valueAsNumber-prop-unthemed.html 75pct-unthemed-common-ref.html
random-if(B2G&&browserIsRemote) == valueAsNumber-prop.html 75pct-common-ref.html
random-if(B2G&&browserIsRemote) == stepDown-unthemed.html 75pct-unthemed-common-ref.html # Bug 878916
random-if(B2G&&browserIsRemote) == stepDown.html 75pct-common-ref.html # Bug 878916
random-if(B2G&&browserIsRemote) == stepUp-unthemed.html 75pct-unthemed-common-ref.html # Bug 969256
random-if(B2G&&browserIsRemote) == stepUp.html 75pct-common-ref.html # Bug 969256
fuzzy-if(B2G,1,1) random-if(B2G&&browserIsRemote) == max-prop.html 100pct-common-ref.html
== value-prop-unthemed.html 75pct-unthemed-common-ref.html
== value-prop.html 75pct-common-ref.html
== valueAsNumber-prop-unthemed.html 75pct-unthemed-common-ref.html
== valueAsNumber-prop.html 75pct-common-ref.html
== stepDown-unthemed.html 75pct-unthemed-common-ref.html
== stepDown.html 75pct-common-ref.html
== stepUp-unthemed.html 75pct-unthemed-common-ref.html
== stepUp.html 75pct-common-ref.html
fuzzy-if(B2G,1,1) == max-prop.html 100pct-common-ref.html
# 'direction' property:
== direction-unthemed-1.html direction-unthemed-1-ref.html

View File

@ -22,6 +22,6 @@ skip-if(B2G) == bar-pseudo-element-vertical.html bar-pseudo-element-vertical-ref
include default-style/reftest.list
# Tests for bugs:
random-if(B2G&&browserIsRemote) == block-invalidate.html block-invalidate-ref.html
== block-invalidate.html block-invalidate-ref.html
== in-cells.html in-cells-ref.html
== max-height.html max-height-ref.html

View File

@ -9,5 +9,5 @@ skip-if(B2G) fails-if(Android) fails-if(gtk2Widget) != rtl.html no-resize.html #
== rtl.html rtl-dynamic-attr.html
== rtl.html rtl-dynamic-style.html
== rtl.html in-dynamic-rtl-doc.html
random-if(B2G&&browserIsRemote) == setvalue-framereconstruction-1.html setvalue-framereconstruction-ref.html
== setvalue-framereconstruction-1.html setvalue-framereconstruction-ref.html
== padding-scrollbar-placement.html padding-scrollbar-placement-ref.html

View File

@ -64,7 +64,7 @@
== insert-into-split-inline-16a.html insert-into-split-inline-16-ref.html
== insert-into-split-inline-16b.html insert-into-split-inline-16-ref.html
== insert-into-split-inline-16-ref.html insert-into-split-inline-16-noib-ref.html
random-if(B2G&&browserIsRemote) == float-inside-inline-between-blocks-1.html float-inside-inline-between-blocks-1-ref.html
== float-inside-inline-between-blocks-1.html float-inside-inline-between-blocks-1-ref.html
== table-pseudo-in-part3-1.html table-pseudo-in-part3-1-ref.html
== emptyspan-1.html emptyspan-1-ref.html
== emptyspan-2.html emptyspan-2-ref.html

View File

@ -1,7 +1,7 @@
== table-repaint-a.html table-repaint-a-ref.html
random-if(B2G&&browserIsRemote) == table-repaint-b.html table-repaint-b-ref.html
== table-repaint-b.html table-repaint-b-ref.html
== table-repaint-c.html table-repaint-c-ref.html
random-if(B2G&&browserIsRemote) == table-repaint-d.html table-repaint-d-ref.html
== table-repaint-d.html table-repaint-d-ref.html
skip-if(B2G&&browserIsRemote) == 540247-1.xul 540247-1-ref.xul # bug 974780
skip-if(B2G&&browserIsRemote) == 543681-1.html 543681-1-ref.html
== test-image-layers.html test-image-layers-ref.html
@ -20,24 +20,24 @@ pref(layout.animated-image-layers.enabled,true) == test-animated-image-layers-ba
== filter-userspace-offset.svg?offsetContainer=use&filter=matrix-boundingBox filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=innerSVG&filter=matrix-boundingBox filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=foreignObject&filter=matrix-boundingBox filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=rect&filter=flood-userSpace-at100 filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=use&filter=flood-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=rect&filter=flood-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=use&filter=flood-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=innerSVG&filter=flood-userSpace-atZero filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=foreignObject&filter=flood-userSpace-at100 filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-userSpace-at100 filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=use&filter=matrix-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=foreignObject&filter=flood-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=use&filter=matrix-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=innerSVG&filter=matrix-userSpace-atZero filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=foreignObject&filter=matrix-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=foreignObject&filter=matrix-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=rect&mask=boundingBox filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=use&mask=boundingBox filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=innerSVG&mask=boundingBox filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=foreignObject&mask=boundingBox filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=rect&mask=userSpace-at100 filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=use&mask=userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=rect&mask=userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=use&mask=userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=innerSVG&mask=userSpace-atZero filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=foreignObject&mask=userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=foreignObject&mask=userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-fillPaint-boundingBox filter-userspace-offset.svg
random-if(B2G&&browserIsRemote) == filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-fillPaint-userSpace-at100 filter-userspace-offset.svg
== filter-userspace-offset.svg?offsetContainer=rect&filter=matrix-fillPaint-userSpace-at100 filter-userspace-offset.svg
== scroll-inactive-layers.html scroll-inactive-layers.html
== scroll-inactive-layers-2.html scroll-inactive-layers-2.html
!= inactive-layertree-visible-region-1.html about:blank

View File

@ -1,2 +1,2 @@
random-if(B2G&&browserIsRemote) == move-to-background-1.html move-to-background-1-ref.html
fuzzy-if(cocoaWidget,2,6) random-if((Android&&!browserIsRemote)||(B2G&&browserIsRemote)) == component-alpha-exit-1.html component-alpha-exit-1-ref.html # bug 760275
== move-to-background-1.html move-to-background-1-ref.html
fuzzy-if(cocoaWidget,2,6) random-if(Android&&!browserIsRemote) == component-alpha-exit-1.html component-alpha-exit-1-ref.html # bug 760275

View File

@ -78,21 +78,21 @@ skip-if(B2G) == inline-table-horizontal-1-dyn.html inline-table-horizontal-1-ref
== block-sibling-3.html block-sibling-1-ref.html
== block-sibling-3.html block-sibling-1-ref2.html
!= block-sibling-3.html block-sibling-1-noref.html
random-if(B2G&&browserIsRemote) == block-sibling-1a-dyn.html block-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == block-sibling-1a-dyn.html block-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) != block-sibling-1a-dyn.html block-sibling-1-noref.html
random-if(B2G&&browserIsRemote) == block-sibling-1b-dyn.html block-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == block-sibling-1b-dyn.html block-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) != block-sibling-1b-dyn.html block-sibling-1-noref.html
random-if(B2G&&browserIsRemote) == block-sibling-1c-dyn.html block-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == block-sibling-1c-dyn.html block-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) != block-sibling-1c-dyn.html block-sibling-1-noref2.html
== block-sibling-1a-dyn.html block-sibling-1-ref.html
== block-sibling-1a-dyn.html block-sibling-1-ref2.html
!= block-sibling-1a-dyn.html block-sibling-1-noref.html
== block-sibling-1b-dyn.html block-sibling-1-ref.html
== block-sibling-1b-dyn.html block-sibling-1-ref2.html
!= block-sibling-1b-dyn.html block-sibling-1-noref.html
== block-sibling-1c-dyn.html block-sibling-1-ref.html
== block-sibling-1c-dyn.html block-sibling-1-ref2.html
!= block-sibling-1c-dyn.html block-sibling-1-noref2.html
skip-if(B2G) == block-sibling-2-dyn.html block-sibling-2-ref.html # bug 773482
random-if(B2G&&browserIsRemote) == block-sibling-2-dyn.html block-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) != block-sibling-2-dyn.html block-sibling-2-noref.html
random-if(B2G&&browserIsRemote) == block-sibling-3-dyn.html block-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == block-sibling-3-dyn.html block-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) != block-sibling-3-dyn.html block-sibling-1-noref.html
== block-sibling-2-dyn.html block-sibling-2-ref2.html
!= block-sibling-2-dyn.html block-sibling-2-noref.html
== block-sibling-3-dyn.html block-sibling-1-ref.html
== block-sibling-3-dyn.html block-sibling-1-ref2.html
!= block-sibling-3-dyn.html block-sibling-1-noref.html
# "In the case of negative margins, the maximum of the absolute values of the
# negative adjoining margins is deducted from the maximum of the positive
# adjoining margins. If there are no positive margins, the maximum of the
@ -131,70 +131,70 @@ random-if(B2G&&browserIsRemote) != block-sibling-3-dyn.html block-sibling-1-nore
== block-negative-5.html block-negative-5-ref2.html
!= block-negative-5.html block-negative-5-noref1.html
!= block-negative-5.html block-negative-5-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-1a-dyn1.html block-negative-1-ref.html
random-if(B2G&&browserIsRemote) != block-negative-1a-dyn1.html block-negative-1-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-1a-dyn1.html block-negative-1-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-1a-dyn2.html block-negative-1-ref.html
random-if(B2G&&browserIsRemote) != block-negative-1a-dyn2.html block-negative-1-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-1a-dyn2.html block-negative-1-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-1b-dyn1.html block-negative-1-ref.html
random-if(B2G&&browserIsRemote) != block-negative-1b-dyn1.html block-negative-1-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-1b-dyn1.html block-negative-1-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-1b-dyn2.html block-negative-1-ref.html
random-if(B2G&&browserIsRemote) != block-negative-1b-dyn2.html block-negative-1-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-1b-dyn2.html block-negative-1-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-2a-dyn1.html block-negative-2-ref.html
random-if(B2G&&browserIsRemote) != block-negative-2a-dyn1.html block-negative-2-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-2a-dyn1.html block-negative-2-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-2a-dyn2.html block-negative-2-ref.html
random-if(B2G&&browserIsRemote) != block-negative-2a-dyn2.html block-negative-2-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-2a-dyn2.html block-negative-2-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-2b-dyn1.html block-negative-2-ref.html
random-if(B2G&&browserIsRemote) != block-negative-2b-dyn1.html block-negative-2-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-2b-dyn1.html block-negative-2-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-2b-dyn2.html block-negative-2-ref.html
random-if(B2G&&browserIsRemote) != block-negative-2b-dyn2.html block-negative-2-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-2b-dyn2.html block-negative-2-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-3a-dyn1.html block-negative-3-ref.html
random-if(B2G&&browserIsRemote) == block-negative-3a-dyn1.html block-negative-3-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-3a-dyn1.html block-negative-3-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-3a-dyn1.html block-negative-3-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-3a-dyn2.html block-negative-3-ref.html
random-if(B2G&&browserIsRemote) == block-negative-3a-dyn2.html block-negative-3-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-3a-dyn2.html block-negative-3-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-3a-dyn2.html block-negative-3-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-3b-dyn1.html block-negative-3-ref.html
random-if(B2G&&browserIsRemote) == block-negative-3b-dyn1.html block-negative-3-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-3b-dyn1.html block-negative-3-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-3b-dyn1.html block-negative-3-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-3b-dyn2.html block-negative-3-ref.html
random-if(B2G&&browserIsRemote) == block-negative-3b-dyn2.html block-negative-3-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-3b-dyn2.html block-negative-3-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-3b-dyn2.html block-negative-3-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-4a-dyn1.html block-negative-4-ref.html
random-if(B2G&&browserIsRemote) == block-negative-4a-dyn1.html block-negative-4-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-4a-dyn1.html block-negative-4-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-4a-dyn1.html block-negative-4-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-4a-dyn2.html block-negative-4-ref.html
random-if(B2G&&browserIsRemote) == block-negative-4a-dyn2.html block-negative-4-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-4a-dyn2.html block-negative-4-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-4a-dyn2.html block-negative-4-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-4b-dyn1.html block-negative-4-ref.html
random-if(B2G&&browserIsRemote) == block-negative-4b-dyn1.html block-negative-4-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-4b-dyn1.html block-negative-4-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-4b-dyn1.html block-negative-4-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-4b-dyn2.html block-negative-4-ref.html
random-if(B2G&&browserIsRemote) == block-negative-4b-dyn2.html block-negative-4-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-4b-dyn2.html block-negative-4-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-4b-dyn2.html block-negative-4-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-5-dyn1.html block-negative-5-ref.html
random-if(B2G&&browserIsRemote) == block-negative-5-dyn1.html block-negative-5-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-5-dyn1.html block-negative-5-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-5-dyn1.html block-negative-5-noref2.html
random-if(B2G&&browserIsRemote) == block-negative-5-dyn2.html block-negative-5-ref.html
random-if(B2G&&browserIsRemote) == block-negative-5-dyn2.html block-negative-5-ref2.html
random-if(B2G&&browserIsRemote) != block-negative-5-dyn2.html block-negative-5-noref1.html
random-if(B2G&&browserIsRemote) != block-negative-5-dyn2.html block-negative-5-noref2.html
== block-negative-1a-dyn1.html block-negative-1-ref.html
!= block-negative-1a-dyn1.html block-negative-1-noref1.html
!= block-negative-1a-dyn1.html block-negative-1-noref2.html
== block-negative-1a-dyn2.html block-negative-1-ref.html
!= block-negative-1a-dyn2.html block-negative-1-noref1.html
!= block-negative-1a-dyn2.html block-negative-1-noref2.html
== block-negative-1b-dyn1.html block-negative-1-ref.html
!= block-negative-1b-dyn1.html block-negative-1-noref1.html
!= block-negative-1b-dyn1.html block-negative-1-noref2.html
== block-negative-1b-dyn2.html block-negative-1-ref.html
!= block-negative-1b-dyn2.html block-negative-1-noref1.html
!= block-negative-1b-dyn2.html block-negative-1-noref2.html
== block-negative-2a-dyn1.html block-negative-2-ref.html
!= block-negative-2a-dyn1.html block-negative-2-noref1.html
!= block-negative-2a-dyn1.html block-negative-2-noref2.html
== block-negative-2a-dyn2.html block-negative-2-ref.html
!= block-negative-2a-dyn2.html block-negative-2-noref1.html
!= block-negative-2a-dyn2.html block-negative-2-noref2.html
== block-negative-2b-dyn1.html block-negative-2-ref.html
!= block-negative-2b-dyn1.html block-negative-2-noref1.html
!= block-negative-2b-dyn1.html block-negative-2-noref2.html
== block-negative-2b-dyn2.html block-negative-2-ref.html
!= block-negative-2b-dyn2.html block-negative-2-noref1.html
!= block-negative-2b-dyn2.html block-negative-2-noref2.html
== block-negative-3a-dyn1.html block-negative-3-ref.html
== block-negative-3a-dyn1.html block-negative-3-ref2.html
!= block-negative-3a-dyn1.html block-negative-3-noref1.html
!= block-negative-3a-dyn1.html block-negative-3-noref2.html
== block-negative-3a-dyn2.html block-negative-3-ref.html
== block-negative-3a-dyn2.html block-negative-3-ref2.html
!= block-negative-3a-dyn2.html block-negative-3-noref1.html
!= block-negative-3a-dyn2.html block-negative-3-noref2.html
== block-negative-3b-dyn1.html block-negative-3-ref.html
== block-negative-3b-dyn1.html block-negative-3-ref2.html
!= block-negative-3b-dyn1.html block-negative-3-noref1.html
!= block-negative-3b-dyn1.html block-negative-3-noref2.html
== block-negative-3b-dyn2.html block-negative-3-ref.html
== block-negative-3b-dyn2.html block-negative-3-ref2.html
!= block-negative-3b-dyn2.html block-negative-3-noref1.html
!= block-negative-3b-dyn2.html block-negative-3-noref2.html
== block-negative-4a-dyn1.html block-negative-4-ref.html
== block-negative-4a-dyn1.html block-negative-4-ref2.html
!= block-negative-4a-dyn1.html block-negative-4-noref1.html
!= block-negative-4a-dyn1.html block-negative-4-noref2.html
== block-negative-4a-dyn2.html block-negative-4-ref.html
== block-negative-4a-dyn2.html block-negative-4-ref2.html
!= block-negative-4a-dyn2.html block-negative-4-noref1.html
!= block-negative-4a-dyn2.html block-negative-4-noref2.html
== block-negative-4b-dyn1.html block-negative-4-ref.html
== block-negative-4b-dyn1.html block-negative-4-ref2.html
!= block-negative-4b-dyn1.html block-negative-4-noref1.html
!= block-negative-4b-dyn1.html block-negative-4-noref2.html
== block-negative-4b-dyn2.html block-negative-4-ref.html
== block-negative-4b-dyn2.html block-negative-4-ref2.html
!= block-negative-4b-dyn2.html block-negative-4-noref1.html
!= block-negative-4b-dyn2.html block-negative-4-noref2.html
== block-negative-5-dyn1.html block-negative-5-ref.html
== block-negative-5-dyn1.html block-negative-5-ref2.html
!= block-negative-5-dyn1.html block-negative-5-noref1.html
!= block-negative-5-dyn1.html block-negative-5-noref2.html
== block-negative-5-dyn2.html block-negative-5-ref.html
== block-negative-5-dyn2.html block-negative-5-ref2.html
!= block-negative-5-dyn2.html block-negative-5-noref1.html
!= block-negative-5-dyn2.html block-negative-5-noref2.html
# "Two margins are adjoining if and only if:" [...]
# "both belong to vertically-adjacent box edges,
# i.e. form one of the following pairs:" [...]
@ -242,23 +242,23 @@ random-if(B2G&&browserIsRemote) != block-negative-5-dyn2.html block-negative-5-n
== block-non-sibling-3d.html block-non-sibling-3-ref2.html
== block-non-sibling-4.html block-non-sibling-4-ref.html
== block-non-sibling-4.html block-non-sibling-4-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-1a-dyn.html block-non-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-1b-dyn.html block-non-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-1c-dyn.html block-non-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-1d-dyn.html block-non-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-1e-dyn.html block-non-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-1f-dyn.html block-non-sibling-1-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-2a-dyn.html block-non-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-2b-dyn.html block-non-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-2c-dyn.html block-non-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-2d-dyn.html block-non-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-2e-dyn.html block-non-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-2f-dyn.html block-non-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-3a-dyn.html block-non-sibling-3-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-3b-dyn.html block-non-sibling-3-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-3c-dyn.html block-non-sibling-3-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-3d-dyn.html block-non-sibling-3-ref2.html
random-if(B2G&&browserIsRemote) == block-non-sibling-4-dyn.html block-non-sibling-4-ref2.html
== block-non-sibling-1a-dyn.html block-non-sibling-1-ref2.html
== block-non-sibling-1b-dyn.html block-non-sibling-1-ref2.html
== block-non-sibling-1c-dyn.html block-non-sibling-1-ref2.html
== block-non-sibling-1d-dyn.html block-non-sibling-1-ref2.html
== block-non-sibling-1e-dyn.html block-non-sibling-1-ref2.html
== block-non-sibling-1f-dyn.html block-non-sibling-1-ref2.html
== block-non-sibling-2a-dyn.html block-non-sibling-2-ref2.html
== block-non-sibling-2b-dyn.html block-non-sibling-2-ref2.html
== block-non-sibling-2c-dyn.html block-non-sibling-2-ref2.html
== block-non-sibling-2d-dyn.html block-non-sibling-2-ref2.html
== block-non-sibling-2e-dyn.html block-non-sibling-2-ref2.html
== block-non-sibling-2f-dyn.html block-non-sibling-2-ref2.html
== block-non-sibling-3a-dyn.html block-non-sibling-3-ref2.html
== block-non-sibling-3b-dyn.html block-non-sibling-3-ref2.html
== block-non-sibling-3c-dyn.html block-non-sibling-3-ref2.html
== block-non-sibling-3d-dyn.html block-non-sibling-3-ref2.html
== block-non-sibling-4-dyn.html block-non-sibling-4-ref2.html
# The first-child series tests cases where the top margin of a box collapses
# with the top margin of its parent element.
# This series is more extensive than the non-sibling series, because
@ -275,18 +275,18 @@ random-if(B2G&&browserIsRemote) == block-non-sibling-4-dyn.html block-non-siblin
== block-first-child-8a.html block-first-child-8-ref.html
== block-first-child-8b.html block-first-child-8-ref.html
== block-first-child-8c.html block-first-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-1a-dyn.html block-first-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-1b-dyn.html block-first-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-1c-dyn.html block-first-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-2-dyn.html block-first-child-2-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-3-dyn.html block-first-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-4-dyn.html block-first-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-5-dyn.html block-first-child-5-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-6-dyn.html block-first-child-6-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-7-dyn.html block-first-child-7-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-8a-dyn.html block-first-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-8b-dyn.html block-first-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-first-child-8c-dyn.html block-first-child-8-ref.html
== block-first-child-1a-dyn.html block-first-child-1-ref.html
== block-first-child-1b-dyn.html block-first-child-1-ref.html
== block-first-child-1c-dyn.html block-first-child-1-ref.html
== block-first-child-2-dyn.html block-first-child-2-ref.html
== block-first-child-3-dyn.html block-first-child-3-ref.html
== block-first-child-4-dyn.html block-first-child-4-ref.html
== block-first-child-5-dyn.html block-first-child-5-ref.html
== block-first-child-6-dyn.html block-first-child-6-ref.html
== block-first-child-7-dyn.html block-first-child-7-ref.html
== block-first-child-8a-dyn.html block-first-child-8-ref.html
== block-first-child-8b-dyn.html block-first-child-8-ref.html
== block-first-child-8c-dyn.html block-first-child-8-ref.html
# "The bottom margin of an in-flow block box with a 'height' of 'auto'
# collapses with its last in-flow block-level child's bottom margin"
# Note: The block-auto-height-last-child series automatically covers
@ -304,18 +304,18 @@ random-if(B2G&&browserIsRemote) == block-first-child-8c-dyn.html block-first-chi
== block-auto-height-last-child-8a.html block-auto-height-last-child-8-ref.html
== block-auto-height-last-child-8b.html block-auto-height-last-child-8-ref.html
== block-auto-height-last-child-8c.html block-auto-height-last-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-1a-dyn.html block-auto-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-1b-dyn.html block-auto-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-1c-dyn.html block-auto-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-2-dyn.html block-auto-height-last-child-2-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-3-dyn.html block-auto-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-4-dyn.html block-auto-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-5-dyn.html block-auto-height-last-child-5-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-6-dyn.html block-auto-height-last-child-6-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-7-dyn.html block-auto-height-last-child-7-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-8a-dyn.html block-auto-height-last-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-8b-dyn.html block-auto-height-last-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-auto-height-last-child-8c-dyn.html block-auto-height-last-child-8-ref.html
== block-auto-height-last-child-1a-dyn.html block-auto-height-last-child-1-ref.html
== block-auto-height-last-child-1b-dyn.html block-auto-height-last-child-1-ref.html
== block-auto-height-last-child-1c-dyn.html block-auto-height-last-child-1-ref.html
== block-auto-height-last-child-2-dyn.html block-auto-height-last-child-2-ref.html
== block-auto-height-last-child-3-dyn.html block-auto-height-last-child-3-ref.html
== block-auto-height-last-child-4-dyn.html block-auto-height-last-child-4-ref.html
== block-auto-height-last-child-5-dyn.html block-auto-height-last-child-5-ref.html
== block-auto-height-last-child-6-dyn.html block-auto-height-last-child-6-ref.html
== block-auto-height-last-child-7-dyn.html block-auto-height-last-child-7-ref.html
== block-auto-height-last-child-8a-dyn.html block-auto-height-last-child-8-ref.html
== block-auto-height-last-child-8b-dyn.html block-auto-height-last-child-8-ref.html
== block-auto-height-last-child-8c-dyn.html block-auto-height-last-child-8-ref.html
# The last-child series is an older variant of the
# block-auto-height-last-child tests.
== block-last-child-1a.html block-last-child-1-ref.html
@ -393,29 +393,29 @@ fails == block-min-height-last-child-3a.html block-min-height-last-child-3-ref.h
== block-min-height-last-child-9b.html block-min-height-last-child-9-ref.html
== block-min-height-last-child-9c.html block-min-height-last-child-9-ref.html
fails == block-min-height-last-child-1a-dyn.html block-min-height-last-child-1-ref.html # Bug 616339
random-if(B2G&&browserIsRemote) == block-min-height-last-child-1b-dyn.html block-min-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-1c-dyn.html block-min-height-last-child-1-ref.html
== block-min-height-last-child-1b-dyn.html block-min-height-last-child-1-ref.html
== block-min-height-last-child-1c-dyn.html block-min-height-last-child-1-ref.html
fails == block-min-height-last-child-2a-dyn.html block-min-height-last-child-2-ref.html # Bug 616339
fails == block-min-height-last-child-2b-dyn.html block-min-height-last-child-2-ref.html # Bug 616339
fails == block-min-height-last-child-3a-dyn.html block-min-height-last-child-3-ref.html # Bug 616339
random-if(B2G&&browserIsRemote) == block-min-height-last-child-3b-dyn.html block-min-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-3c-dyn.html block-min-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-4a-dyn.html block-min-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-4b-dyn.html block-min-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-4c-dyn.html block-min-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-5a-dyn.html block-min-height-last-child-5-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-5b-dyn.html block-min-height-last-child-5-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-6a-dyn.html block-min-height-last-child-6-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-6b-dyn.html block-min-height-last-child-6-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-6c-dyn.html block-min-height-last-child-6-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-7a-dyn.html block-min-height-last-child-7-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-7b-dyn.html block-min-height-last-child-7-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-7c-dyn.html block-min-height-last-child-7-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-8a-dyn.html block-min-height-last-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-8b-dyn.html block-min-height-last-child-8-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-9a-dyn.html block-min-height-last-child-9-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-9b-dyn.html block-min-height-last-child-9-ref.html
random-if(B2G&&browserIsRemote) == block-min-height-last-child-9c-dyn.html block-min-height-last-child-9-ref.html
== block-min-height-last-child-3b-dyn.html block-min-height-last-child-3-ref.html
== block-min-height-last-child-3c-dyn.html block-min-height-last-child-3-ref.html
== block-min-height-last-child-4a-dyn.html block-min-height-last-child-4-ref.html
== block-min-height-last-child-4b-dyn.html block-min-height-last-child-4-ref.html
== block-min-height-last-child-4c-dyn.html block-min-height-last-child-4-ref.html
== block-min-height-last-child-5a-dyn.html block-min-height-last-child-5-ref.html
== block-min-height-last-child-5b-dyn.html block-min-height-last-child-5-ref.html
== block-min-height-last-child-6a-dyn.html block-min-height-last-child-6-ref.html
== block-min-height-last-child-6b-dyn.html block-min-height-last-child-6-ref.html
== block-min-height-last-child-6c-dyn.html block-min-height-last-child-6-ref.html
== block-min-height-last-child-7a-dyn.html block-min-height-last-child-7-ref.html
== block-min-height-last-child-7b-dyn.html block-min-height-last-child-7-ref.html
== block-min-height-last-child-7c-dyn.html block-min-height-last-child-7-ref.html
== block-min-height-last-child-8a-dyn.html block-min-height-last-child-8-ref.html
== block-min-height-last-child-8b-dyn.html block-min-height-last-child-8-ref.html
== block-min-height-last-child-9a-dyn.html block-min-height-last-child-9-ref.html
== block-min-height-last-child-9b-dyn.html block-min-height-last-child-9-ref.html
== block-min-height-last-child-9c-dyn.html block-min-height-last-child-9-ref.html
# If a parent box's height is 'auto' and its 'max-height' is not 'none'
# then its bottom margin collapses with its last-child's bottom margin.
# According to CSS 2.1 §10.7 (Minimum and maximum heights) this is true,
@ -444,30 +444,30 @@ fails == block-max-height-last-child-8b.html block-max-height-last-child-8-ref.h
fails == block-max-height-last-child-9a.html block-max-height-last-child-9-ref.html # Bug 616339
== block-max-height-last-child-9b.html block-max-height-last-child-9-ref.html
== block-max-height-last-child-9c.html block-max-height-last-child-9-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-1a-dyn.html block-max-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-1b-dyn.html block-max-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-1c-dyn.html block-max-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-2a-dyn.html block-max-height-last-child-2-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-2b-dyn.html block-max-height-last-child-2-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-3a-dyn.html block-max-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-3b-dyn.html block-max-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-3c-dyn.html block-max-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-4a-dyn.html block-max-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-4b-dyn.html block-max-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-4c-dyn.html block-max-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-5a-dyn.html block-max-height-last-child-5-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-5b-dyn.html block-max-height-last-child-5-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-6a-dyn.html block-max-height-last-child-6-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-6b-dyn.html block-max-height-last-child-6-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-6c-dyn.html block-max-height-last-child-6-ref.html
== block-max-height-last-child-1a-dyn.html block-max-height-last-child-1-ref.html
== block-max-height-last-child-1b-dyn.html block-max-height-last-child-1-ref.html
== block-max-height-last-child-1c-dyn.html block-max-height-last-child-1-ref.html
== block-max-height-last-child-2a-dyn.html block-max-height-last-child-2-ref.html
== block-max-height-last-child-2b-dyn.html block-max-height-last-child-2-ref.html
== block-max-height-last-child-3a-dyn.html block-max-height-last-child-3-ref.html
== block-max-height-last-child-3b-dyn.html block-max-height-last-child-3-ref.html
== block-max-height-last-child-3c-dyn.html block-max-height-last-child-3-ref.html
== block-max-height-last-child-4a-dyn.html block-max-height-last-child-4-ref.html
== block-max-height-last-child-4b-dyn.html block-max-height-last-child-4-ref.html
== block-max-height-last-child-4c-dyn.html block-max-height-last-child-4-ref.html
== block-max-height-last-child-5a-dyn.html block-max-height-last-child-5-ref.html
== block-max-height-last-child-5b-dyn.html block-max-height-last-child-5-ref.html
== block-max-height-last-child-6a-dyn.html block-max-height-last-child-6-ref.html
== block-max-height-last-child-6b-dyn.html block-max-height-last-child-6-ref.html
== block-max-height-last-child-6c-dyn.html block-max-height-last-child-6-ref.html
fails == block-max-height-last-child-7a-dyn.html block-max-height-last-child-7-ref.html # Bug 616339
random-if(B2G&&browserIsRemote) == block-max-height-last-child-7b-dyn.html block-max-height-last-child-7-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-7c-dyn.html block-max-height-last-child-7-ref.html
== block-max-height-last-child-7b-dyn.html block-max-height-last-child-7-ref.html
== block-max-height-last-child-7c-dyn.html block-max-height-last-child-7-ref.html
fails == block-max-height-last-child-8a-dyn.html block-max-height-last-child-8-ref.html # Bug 616339
fails == block-max-height-last-child-8b-dyn.html block-max-height-last-child-8-ref.html # Bug 616339
fails == block-max-height-last-child-9a-dyn.html block-max-height-last-child-9-ref.html # Bug 616339
random-if(B2G&&browserIsRemote) == block-max-height-last-child-9b-dyn.html block-max-height-last-child-9-ref.html
random-if(B2G&&browserIsRemote) == block-max-height-last-child-9c-dyn.html block-max-height-last-child-9-ref.html
== block-max-height-last-child-9b-dyn.html block-max-height-last-child-9-ref.html
== block-max-height-last-child-9c-dyn.html block-max-height-last-child-9-ref.html
# If a parent box's height is not 'auto' then its bottom margin
# never collapses with its last-child's bottom margin,
# as these margins are not considered 'adjoining'.
@ -487,20 +487,20 @@ random-if(B2G&&browserIsRemote) == block-max-height-last-child-9c-dyn.html block
== block-fix-height-last-child-4f.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4g.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4h.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-1a-dyn.html block-fix-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-1b-dyn.html block-fix-height-last-child-1-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-2a-dyn.html block-fix-height-last-child-2-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-2b-dyn.html block-fix-height-last-child-2-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-3a-dyn.html block-fix-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-3b-dyn.html block-fix-height-last-child-3-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4a-dyn.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4b-dyn.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4c-dyn.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4d-dyn.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4e-dyn.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4f-dyn.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4g-dyn.html block-fix-height-last-child-4-ref.html
random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4h-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-1a-dyn.html block-fix-height-last-child-1-ref.html
== block-fix-height-last-child-1b-dyn.html block-fix-height-last-child-1-ref.html
== block-fix-height-last-child-2a-dyn.html block-fix-height-last-child-2-ref.html
== block-fix-height-last-child-2b-dyn.html block-fix-height-last-child-2-ref.html
== block-fix-height-last-child-3a-dyn.html block-fix-height-last-child-3-ref.html
== block-fix-height-last-child-3b-dyn.html block-fix-height-last-child-3-ref.html
== block-fix-height-last-child-4a-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4b-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4c-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4d-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4e-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4f-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4g-dyn.html block-fix-height-last-child-4-ref.html
== block-fix-height-last-child-4h-dyn.html block-fix-height-last-child-4-ref.html
# "Two margins are adjoining if and only if:" [...]
# "both belong to vertically-adjacent box edges,
# i.e. form one of the following pairs:" [...]
@ -535,26 +535,26 @@ random-if(B2G&&browserIsRemote) == block-fix-height-last-child-4h-dyn.html block
# child, then the child's bottom margin does not collapse with the parent's
# bottom margin."
== block-no-content-8.html block-no-content-8-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-1a-dyn.html block-no-content-1-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-1b-dyn.html block-no-content-1-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-1c-dyn.html block-no-content-1-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-1d-dyn.html block-no-content-1-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-2a-dyn.html block-no-content-2-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-2b-dyn.html block-no-content-2-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-2c-dyn.html block-no-content-2-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-2d-dyn.html block-no-content-2-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-2e-dyn.html block-no-content-2-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-3a-dyn.html block-no-content-3-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-3b-dyn.html block-no-content-3-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-3c-dyn.html block-no-content-3-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-4a-dyn.html block-no-content-4-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-4b-dyn.html block-no-content-4-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-4c-dyn.html block-no-content-4-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-5a-dyn.html block-no-content-5-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-5b-dyn.html block-no-content-5-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-6-dyn.html block-no-content-6-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-7-dyn.html block-no-content-7-ref.html
random-if(B2G&&browserIsRemote) == block-no-content-8-dyn.html block-no-content-8-ref.html
== block-no-content-1a-dyn.html block-no-content-1-ref.html
== block-no-content-1b-dyn.html block-no-content-1-ref.html
== block-no-content-1c-dyn.html block-no-content-1-ref.html
== block-no-content-1d-dyn.html block-no-content-1-ref.html
== block-no-content-2a-dyn.html block-no-content-2-ref.html
== block-no-content-2b-dyn.html block-no-content-2-ref.html
== block-no-content-2c-dyn.html block-no-content-2-ref.html
== block-no-content-2d-dyn.html block-no-content-2-ref.html
== block-no-content-2e-dyn.html block-no-content-2-ref.html
== block-no-content-3a-dyn.html block-no-content-3-ref.html
== block-no-content-3b-dyn.html block-no-content-3-ref.html
== block-no-content-3c-dyn.html block-no-content-3-ref.html
== block-no-content-4a-dyn.html block-no-content-4-ref.html
== block-no-content-4b-dyn.html block-no-content-4-ref.html
== block-no-content-4c-dyn.html block-no-content-4-ref.html
== block-no-content-5a-dyn.html block-no-content-5-ref.html
== block-no-content-5b-dyn.html block-no-content-5-ref.html
== block-no-content-6-dyn.html block-no-content-6-ref.html
== block-no-content-7-dyn.html block-no-content-7-ref.html
== block-no-content-8-dyn.html block-no-content-8-ref.html
# These tests are similar to the no-content ones, except that some boxes
# have height: 0; declared on them.
== block-zero-height-1a.html block-zero-height-1a-ref.html
@ -587,8 +587,8 @@ skip-if(B2G) == block-overflow-4.html block-overflow-4-ref2.html
== block-overflow-5c.html block-overflow-5c-ref2.html
== block-overflow-5d.html block-overflow-5-ref.html
== block-overflow-5d.html block-overflow-5-ref2.html
random-if(B2G&&browserIsRemote) == block-overflow-1-dyn.html block-overflow-1-ref2.html
random-if(B2G&&browserIsRemote) == block-overflow-2-dyn.html block-overflow-2-ref2.html
== block-overflow-1-dyn.html block-overflow-1-ref2.html
== block-overflow-2-dyn.html block-overflow-2-ref2.html
skip-if(B2G) == block-overflow-3-dyn.html block-overflow-3-ref2.html # bug 773482
skip-if(B2G) == block-overflow-4-dyn.html block-overflow-4-ref2.html
== block-overflow-5a-dyn.html block-overflow-5-ref2.html
@ -598,23 +598,23 @@ skip-if(B2G) == block-overflow-4-dyn.html block-overflow-4-ref2.html
# * 'fieldset' elements, per HTML5 (Candidate Recommendation 6 August 2013):
# §10.3.13 (The fieldset and legend elements): "The fieldset element is
# expected to establish a new block formatting context."
random-if(B2G&&browserIsRemote) == fieldset-sibling-1a.html fieldset-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-1b.html fieldset-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-1c.html fieldset-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2a.html fieldset-sibling-2-ref1.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2b.html fieldset-sibling-2-ref1.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2c.html fieldset-sibling-2-ref1.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2a.html fieldset-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2b.html fieldset-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2c.html fieldset-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-1a-dyn.html fieldset-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-1b-dyn.html fieldset-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-1c-dyn.html fieldset-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2a-dyn.html fieldset-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2b-dyn.html fieldset-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == fieldset-sibling-2c-dyn.html fieldset-sibling-2-ref2.html
random-if(B2G&&browserIsRemote) == fieldset-child-1.html fieldset-child-1-ref.html
random-if(B2G&&browserIsRemote) == fieldset-child-1-dyn.html fieldset-child-1-ref.html
== fieldset-sibling-1a.html fieldset-sibling-1-ref.html
== fieldset-sibling-1b.html fieldset-sibling-1-ref.html
== fieldset-sibling-1c.html fieldset-sibling-1-ref.html
== fieldset-sibling-2a.html fieldset-sibling-2-ref1.html
== fieldset-sibling-2b.html fieldset-sibling-2-ref1.html
== fieldset-sibling-2c.html fieldset-sibling-2-ref1.html
== fieldset-sibling-2a.html fieldset-sibling-2-ref2.html
== fieldset-sibling-2b.html fieldset-sibling-2-ref2.html
== fieldset-sibling-2c.html fieldset-sibling-2-ref2.html
== fieldset-sibling-1a-dyn.html fieldset-sibling-1-ref.html
== fieldset-sibling-1b-dyn.html fieldset-sibling-1-ref.html
== fieldset-sibling-1c-dyn.html fieldset-sibling-1-ref.html
== fieldset-sibling-2a-dyn.html fieldset-sibling-2-ref2.html
== fieldset-sibling-2b-dyn.html fieldset-sibling-2-ref2.html
== fieldset-sibling-2c-dyn.html fieldset-sibling-2-ref2.html
== fieldset-child-1.html fieldset-child-1-ref.html
== fieldset-child-1-dyn.html fieldset-child-1-ref.html
# * Tables, per CSS 2.1 §17.4 (Tables in the visual formatting model):
# "The table wrapper box establishes a block formatting context."
# "The table wrapper box is a 'block' box if the table is block-level [...]"
@ -656,12 +656,12 @@ skip-if(B2G) == table-sibling-3-dyn.html table-sibling-3-ref.html # bug 773482
== table-caption-2a.html table-caption-2-ref.html
== table-caption-2b.html table-caption-2-ref.html
== table-caption-2c.html table-caption-2-ref.html
random-if(B2G&&browserIsRemote) == table-caption-1a-dyn.html table-caption-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-1b-dyn.html table-caption-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-1c-dyn.html table-caption-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-2a-dyn.html table-caption-2-ref.html
random-if(B2G&&browserIsRemote) == table-caption-2b-dyn.html table-caption-2-ref.html
random-if(B2G&&browserIsRemote) == table-caption-2c-dyn.html table-caption-2-ref.html
== table-caption-1a-dyn.html table-caption-1-ref.html
== table-caption-1b-dyn.html table-caption-1-ref.html
== table-caption-1c-dyn.html table-caption-1-ref.html
== table-caption-2a-dyn.html table-caption-2-ref.html
== table-caption-2b-dyn.html table-caption-2-ref.html
== table-caption-2c-dyn.html table-caption-2-ref.html
# Note: CSS 2.1 suggests that the 'caption-side' values 'top-outside' and
# 'bottom-outside' will be used in a future CSS Module to restore the
# CSS 2 definition of 'top' and 'bottom' (which is different from CSS 2.1's).
@ -675,14 +675,14 @@ random-if(B2G&&browserIsRemote) == table-caption-2c-dyn.html table-caption-2-ref
== table-caption-bottom-2.html table-caption-bottom-2-ref.html
== table-caption-bottom-outside-1.html table-caption-bottom-1-ref.html
== table-caption-bottom-outside-2.html table-caption-bottom-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-top-1-dyn.html table-caption-top-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-top-2-dyn.html table-caption-top-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-top-outside-1-dyn.html table-caption-top-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-top-outside-2-dyn.html table-caption-top-2-ref.html
random-if(B2G&&browserIsRemote) == table-caption-bottom-1-dyn.html table-caption-bottom-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-bottom-2-dyn.html table-caption-bottom-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-bottom-outside-1-dyn.html table-caption-bottom-1-ref.html
random-if(B2G&&browserIsRemote) == table-caption-bottom-outside-2-dyn.html table-caption-bottom-1-ref.html
== table-caption-top-1-dyn.html table-caption-top-1-ref.html
== table-caption-top-2-dyn.html table-caption-top-1-ref.html
== table-caption-top-outside-1-dyn.html table-caption-top-1-ref.html
== table-caption-top-outside-2-dyn.html table-caption-top-2-ref.html
== table-caption-bottom-1-dyn.html table-caption-bottom-1-ref.html
== table-caption-bottom-2-dyn.html table-caption-bottom-1-ref.html
== table-caption-bottom-outside-1-dyn.html table-caption-bottom-1-ref.html
== table-caption-bottom-outside-2-dyn.html table-caption-bottom-1-ref.html
fails == caption-sibling-1a.html caption-sibling-1-ref.html # Bug 144517
!= caption-sibling-1a.html caption-sibling-1-noref.html
fails == caption-sibling-1b.html caption-sibling-1-ref.html # Bug 144517
@ -705,17 +705,17 @@ fails == caption-sibling-2-dyn.html caption-sibling-2-ref.html # Bug 144517
== column-sibling-1a.html column-sibling-1-ref.html
== column-sibling-1b.html column-sibling-1-ref.html
== column-sibling-1c.html column-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-1a-dyn.html column-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-1b-dyn.html column-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-1c-dyn.html column-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-2a.html column-sibling-2-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-2b.html column-sibling-2-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-2c.html column-sibling-2-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-2a-dyn.html column-sibling-2-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-2b-dyn.html column-sibling-2-ref.html
random-if(B2G&&browserIsRemote) == column-sibling-2c-dyn.html column-sibling-2-ref.html
random-if(B2G&&browserIsRemote) == column-child-1.html column-child-1-ref.html
random-if(B2G&&browserIsRemote) == column-child-1-dyn.html column-child-1-ref.html
== column-sibling-1a-dyn.html column-sibling-1-ref.html
== column-sibling-1b-dyn.html column-sibling-1-ref.html
== column-sibling-1c-dyn.html column-sibling-1-ref.html
== column-sibling-2a.html column-sibling-2-ref.html
== column-sibling-2b.html column-sibling-2-ref.html
== column-sibling-2c.html column-sibling-2-ref.html
== column-sibling-2a-dyn.html column-sibling-2-ref.html
== column-sibling-2b-dyn.html column-sibling-2-ref.html
== column-sibling-2c-dyn.html column-sibling-2-ref.html
== column-child-1.html column-child-1-ref.html
== column-child-1-dyn.html column-child-1-ref.html
# * inline-block boxes
# "Margins of inline-block boxes do not collapse
# (not even with their in-flow children)."
@ -724,25 +724,25 @@ random-if(B2G&&browserIsRemote) == column-child-1-dyn.html column-child-1-ref.ht
== inline-block-sibling-1c.html inline-block-sibling-1-ref.html
== inline-block-sibling-2.html inline-block-sibling-2-ref.html
!= inline-block-sibling-2.html inline-block-sibling-2-noref.html
random-if(B2G&&browserIsRemote) == inline-block-sibling-1a-dyn.html inline-block-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == inline-block-sibling-1b-dyn.html inline-block-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == inline-block-sibling-1c-dyn.html inline-block-sibling-1-ref.html
random-if(B2G&&browserIsRemote) == inline-block-sibling-2-dyn.html inline-block-sibling-2-ref.html
== inline-block-sibling-1a-dyn.html inline-block-sibling-1-ref.html
== inline-block-sibling-1b-dyn.html inline-block-sibling-1-ref.html
== inline-block-sibling-1c-dyn.html inline-block-sibling-1-ref.html
== inline-block-sibling-2-dyn.html inline-block-sibling-2-ref.html
== inline-block-child-1.html inline-block-child-1-ref.html
== inline-block-child-2.html inline-block-child-2-ref.html
!= inline-block-child-2.html inline-block-child-2-noref.html
== inline-block-child-3.html inline-block-child-3-ref.html
== inline-block-child-1-dyn.html inline-block-child-1-ref.html
random-if(B2G&&browserIsRemote) == inline-block-child-2-dyn.html inline-block-child-2-ref.html
random-if(B2G&&browserIsRemote) == inline-block-child-3-dyn.html inline-block-child-3-ref.html
== inline-block-child-2-dyn.html inline-block-child-2-ref.html
== inline-block-child-3-dyn.html inline-block-child-3-ref.html
# * absolutely positioned elements
# "Margins of absolutely positioned boxes do not collapse
# (not even with their in-flow children)."
== block-abs-pos-1.html block-abs-pos-1-ref.html
== block-abs-pos-2.html block-abs-pos-2-ref.html
== block-abs-pos-2.html block-abs-pos-2-ref2.html
random-if(B2G&&browserIsRemote) == block-abs-pos-1-dyn.html block-abs-pos-1-ref.html
random-if(B2G&&browserIsRemote) == block-abs-pos-2-dyn.html block-abs-pos-2-ref2.html
== block-abs-pos-1-dyn.html block-abs-pos-1-ref.html
== block-abs-pos-2-dyn.html block-abs-pos-2-ref2.html
# * Floats
# "Margins between a floated box and any other box do not collapse
# (not even between a float and its in-flow children)."
@ -758,12 +758,12 @@ random-if(B2G&&browserIsRemote) == block-abs-pos-2-dyn.html block-abs-pos-2-ref2
!= block-float-2b.html block-float-2b-noref.html
== block-float-3a.html block-float-3a-ref.html
== block-float-3b.html block-float-3b-ref.html
random-if(B2G&&browserIsRemote) == block-float-1a-dyn.html block-float-1a-ref.html
random-if(B2G&&browserIsRemote) == block-float-1b-dyn.html block-float-1b-ref.html
random-if(B2G&&browserIsRemote) == block-float-2a-dyn.html block-float-2a-ref.html
random-if(B2G&&browserIsRemote) == block-float-2b-dyn.html block-float-2b-ref.html
random-if(B2G&&browserIsRemote) == block-float-3a-dyn.html block-float-3a-ref.html
random-if(B2G&&browserIsRemote) == block-float-3b-dyn.html block-float-3b-ref.html
== block-float-1a-dyn.html block-float-1a-ref.html
== block-float-1b-dyn.html block-float-1b-ref.html
== block-float-2a-dyn.html block-float-2a-ref.html
== block-float-2b-dyn.html block-float-2b-ref.html
== block-float-3a-dyn.html block-float-3a-ref.html
== block-float-3b-dyn.html block-float-3b-ref.html
# Tests for various cases where clearance is applied and collapsing is
# prevented or only allows for certain margins.
fails == block-clear-1a.html block-clear-1a-ref.html # Bug 451791
@ -853,11 +853,11 @@ fails == block-clear-7g-left.html block-clear-7efgh-left-ref2.html # Bug 493380
!= block-html-body-1.html block-html-body-1-noref.html
# Some basic tests for margins given in percent and em.
== block-percent-1.html block-percent-1-ref.html
random-if(B2G&&browserIsRemote) == block-percent-1-dyn.html block-percent-1-ref.html
random-if(B2G&&browserIsRemote) == block-percent-2.html block-percent-2-ref.html
random-if(B2G&&browserIsRemote) == block-percent-2-dyn.html block-percent-2-ref.html
== block-percent-1-dyn.html block-percent-1-ref.html
== block-percent-2.html block-percent-2-ref.html
== block-percent-2-dyn.html block-percent-2-ref.html
== block-em-length-1.html block-em-length-1-ref.html
random-if(B2G&&browserIsRemote) == block-em-length-1-dyn.html block-em-length-1-ref.html
== block-em-length-1-dyn.html block-em-length-1-ref.html
# Other tests.
== dynamic-add-text-1.html dynamic-add-text-1-ref.html # Bug 467321
== scrollable-vertical-margin.html scrollable-vertical-margin-ref.html

View File

@ -43,7 +43,7 @@ fails-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == mfenced-10.html mfenced-1
!= non-spacing-accent-1.xhtml non-spacing-accent-1-ref.xhtml
== overbar-width-1.xhtml overbar-width-1-ref.xhtml
skip-if(B2G) == quotes-1.xhtml quotes-1-ref.xhtml
!= stretchy-underbar-1.xhtml stretchy-underbar-1-ref.xhtml
!= stretchy-underbar-1.xhtml stretchy-underbar-1-ref.xhtml
== table-width-1.xhtml table-width-1-ref.xhtml
== table-width-2.html table-width-2-ref.html
== table-width-3.html table-width-3-ref.html
@ -100,9 +100,9 @@ random-if(winWidget&&!/^Windows\x20NT\x205\.1/.test(http.oscpu)) == semantics-1.
== mpadded-5.html mpadded-5-ref.html
== mpadded-1-2.html mpadded-1-2-ref.html
== mpadded-6.html mpadded-6-ref.html
random-if(B2G&&browserIsRemote) == mpadded-7.html mpadded-7-ref.html # B2G: slight character width variation
random-if(B2G&&browserIsRemote) == mpadded-8.html mpadded-8-ref.html # B2G: slight character width variation
random-if(B2G&&browserIsRemote) == mpadded-9.html mpadded-9-ref.html # B2G: slight character width variation
fails-if(B2G) == mpadded-7.html mpadded-7-ref.html # B2G: slight character width variation
fails-if(B2G) == mpadded-8.html mpadded-8-ref.html # B2G: slight character width variation
fails-if(B2G) == mpadded-9.html mpadded-9-ref.html # B2G: slight character width variation
== math-display.html math-display-ref.html
== scriptlevel-1.html scriptlevel-1-ref.html
== scriptlevel-movablelimits-1.html scriptlevel-movablelimits-1-ref.html
@ -120,24 +120,24 @@ random-if(B2G&&browserIsRemote) == mpadded-9.html mpadded-9-ref.html # B2G: slig
== positive-namedspace.html positive-namedspace-ref.html
== mtable-align-whitespace.html mtable-align-whitespace-ref.html
== mtable-width.html mtable-width-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowlines-single-mtable-dynamic.html mtable-rowlines-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowlines-multi-mtable-dynamic.html mtable-rowlines-multi-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowalign-single-mtr.html mtable-rowalign-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowalign-single-mtr-dynamic.html mtable-rowalign-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowalign-single-mtable.html mtable-rowalign-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowalign-single-mtable-dynamic.html mtable-rowalign-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowalign-multi-mtable.html mtable-rowalign-multi-ref.html
random-if(B2G&&browserIsRemote) == mtable-rowalign-multi-mtable-dynamic.html mtable-rowalign-multi-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnlines-single-mtable-dynamic.html mtable-columnlines-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnlines-multi-mtable-dynamic.html mtable-columnlines-multi-ref.html
== mtable-rowlines-single-mtable-dynamic.html mtable-rowlines-single-ref.html
== mtable-rowlines-multi-mtable-dynamic.html mtable-rowlines-multi-ref.html
== mtable-rowalign-single-mtr.html mtable-rowalign-single-ref.html
== mtable-rowalign-single-mtr-dynamic.html mtable-rowalign-single-ref.html
== mtable-rowalign-single-mtable.html mtable-rowalign-single-ref.html
== mtable-rowalign-single-mtable-dynamic.html mtable-rowalign-single-ref.html
== mtable-rowalign-multi-mtable.html mtable-rowalign-multi-ref.html
== mtable-rowalign-multi-mtable-dynamic.html mtable-rowalign-multi-ref.html
== mtable-columnlines-single-mtable-dynamic.html mtable-columnlines-single-ref.html
== mtable-columnlines-multi-mtable-dynamic.html mtable-columnlines-multi-ref.html
== mtable-columnalign-single-mtr.html mtable-columnalign-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnalign-single-mtr-dynamic.html mtable-columnalign-single-ref.html
== mtable-columnalign-single-mtr-dynamic.html mtable-columnalign-single-ref.html
== mtable-columnalign-single-mtable.html mtable-columnalign-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnalign-single-mtable-dynamic.html mtable-columnalign-single-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnalign-multi-mtr.html mtable-columnalign-multi-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnalign-multi-mtr-dynamic.html mtable-columnalign-multi-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnalign-multi-mtable.html mtable-columnalign-multi-ref.html
random-if(B2G&&browserIsRemote) == mtable-columnalign-multi-mtable-dynamic.html mtable-columnalign-multi-ref.html
== mtable-columnalign-single-mtable-dynamic.html mtable-columnalign-single-ref.html
== mtable-columnalign-multi-mtr.html mtable-columnalign-multi-ref.html
== mtable-columnalign-multi-mtr-dynamic.html mtable-columnalign-multi-ref.html
== mtable-columnalign-multi-mtable.html mtable-columnalign-multi-ref.html
== mtable-columnalign-multi-mtable-dynamic.html mtable-columnalign-multi-ref.html
== maction-selection.html maction-selection-ref.html
== maction-dynamic-embellished-op.html maction-dynamic-embellished-op-ref.html
skip-if(B2G) == maction-dynamic-1.html maction-dynamic-1-ref.html # bug 773482
@ -181,7 +181,7 @@ random-if(B2G&&browserIsRemote) == multiscripts-1.html multiscripts-1-ref.html #
fails-if(B2G) == menclose-2-actuarial.html menclose-2-actuarial-ref.html # B2G slight thickness variation
== menclose-2-bottom.html menclose-2-bottom-ref.html
fails-if(B2G) == menclose-2-box.html menclose-2-box-ref.html # B2G slight thickness variation
fails-if(B2G) == menclose-2-circle.html menclose-2-circle-ref.html
== menclose-2-circle.html menclose-2-circle-ref.html
== menclose-2-downdiagonalstrike.html menclose-2-downdiagonalstrike-ref.html
== menclose-2-horizontalstrike.html menclose-2-horizontalstrike-ref.html
fails-if(B2G) == menclose-2-left.html menclose-2-left-ref.html # B2G slight thickness variation
@ -201,41 +201,41 @@ fails-if(B2G||Android||OSX==10.6) == menclose-3-radical.html menclose-3-radical-
== menclose-3-invalid.html menclose-3-invalid-ref.html
== menclose-3-multiple.html menclose-3-multiple-ref.html
== menclose-3-unknown.html menclose-3-unknown.html
random-if(B2G&&browserIsRemote) == menclose-4.html data:text/html,<body>Pass
random-if(B2G&&browserIsRemote) == menclose-5-actuarial.html menclose-5-actuarial-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-bottom.html menclose-5-bottom-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-box.html menclose-5-box-ref.html
fuzzy-if(OSX,1,100) random-if(B2G&&browserIsRemote) == menclose-5-circle.html menclose-5-circle-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-downdiagonalstrike.html menclose-5-downdiagonalstrike-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-horizontalstrike.html menclose-5-horizontalstrike-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-left.html menclose-5-left-ref.html
== menclose-4.html data:text/html,<body>Pass
== menclose-5-actuarial.html menclose-5-actuarial-ref.html
== menclose-5-bottom.html menclose-5-bottom-ref.html
== menclose-5-box.html menclose-5-box-ref.html
fuzzy-if(OSX,1,100) == menclose-5-circle.html menclose-5-circle-ref.html
== menclose-5-downdiagonalstrike.html menclose-5-downdiagonalstrike-ref.html
== menclose-5-horizontalstrike.html menclose-5-horizontalstrike-ref.html
== menclose-5-left.html menclose-5-left-ref.html
== menclose-5-longdiv.html menclose-5-longdiv-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-madruwb.html menclose-5-madruwb-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-radical.html menclose-5-radical-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-right.html menclose-5-right-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-roundedbox.html menclose-5-roundedbox-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-top.html menclose-5-top-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-updiagonalarrow.html menclose-5-updiagonalarrow-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-updiagonalstrike.html menclose-5-updiagonalstrike-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-verticalstrike.html menclose-5-verticalstrike-ref.html
random-if(B2G&&browserIsRemote) == menclose-5-phasorangle.html menclose-5-phasorangle-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-actuarial.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-bottom.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-box.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-circle.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-downdiagonalstrike.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-horizontalstrike.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-left.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-longdiv.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-madruwb.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-radical.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-right.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-roundedbox.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-top.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-updiagonalarrow.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-updiagonalstrike.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-verticalstrike.html menclose-6-ref.html
random-if(B2G&&browserIsRemote) == menclose-6-phasorangle.html menclose-6-ref.html
== menclose-5-madruwb.html menclose-5-madruwb-ref.html
== menclose-5-radical.html menclose-5-radical-ref.html
== menclose-5-right.html menclose-5-right-ref.html
== menclose-5-roundedbox.html menclose-5-roundedbox-ref.html
== menclose-5-top.html menclose-5-top-ref.html
== menclose-5-updiagonalarrow.html menclose-5-updiagonalarrow-ref.html
== menclose-5-updiagonalstrike.html menclose-5-updiagonalstrike-ref.html
== menclose-5-verticalstrike.html menclose-5-verticalstrike-ref.html
== menclose-5-phasorangle.html menclose-5-phasorangle-ref.html
== menclose-6-actuarial.html menclose-6-ref.html
== menclose-6-bottom.html menclose-6-ref.html
== menclose-6-box.html menclose-6-ref.html
== menclose-6-circle.html menclose-6-ref.html
== menclose-6-downdiagonalstrike.html menclose-6-ref.html
== menclose-6-horizontalstrike.html menclose-6-ref.html
== menclose-6-left.html menclose-6-ref.html
== menclose-6-longdiv.html menclose-6-ref.html
== menclose-6-madruwb.html menclose-6-ref.html
== menclose-6-radical.html menclose-6-ref.html
== menclose-6-right.html menclose-6-ref.html
== menclose-6-roundedbox.html menclose-6-ref.html
== menclose-6-top.html menclose-6-ref.html
== menclose-6-updiagonalarrow.html menclose-6-ref.html
== menclose-6-updiagonalstrike.html menclose-6-ref.html
== menclose-6-verticalstrike.html menclose-6-ref.html
== menclose-6-phasorangle.html menclose-6-ref.html
== mmultiscript-align.html mmultiscript-align-ref.html
fails-if(winWidget&&!/^Windows\x20NT\x205\.1/.test(http.oscpu)) == subscript-italic-correction.html subscript-italic-correction-ref.html # Windows versions with Cambria Math, bug 961482
fails-if(B2G||Android||/^Windows\x20NT\x205\.1/.test(http.oscpu)||OSX==10.6) == mathvariant-1a.html mathvariant-1a-ref.html # Bug 1010679
@ -245,17 +245,17 @@ fails-if(B2G||Android||/^Windows\x20NT\x205\.1/.test(http.oscpu)||OSX==10.6) ==
fails-if(B2G||Android||/^Windows\x20NT\x205\.1/.test(http.oscpu)||OSX) == mathvariant-2.html mathvariant-2-ref.html # Bugs 1010678, 1010679
== mathvariant-3.html mathvariant-3-ref.html
== mathvariant-4.html mathvariant-4-ref.html
random-if(B2G&&browserIsRemote) == mathvariant-5.html mathvariant-5-ref.html
== mathvariant-5.html mathvariant-5-ref.html
== ssty-1.html ssty-1-ref.html
== ssty-2.html ssty-2-ref.html
== ssty-3.html ssty-3-ref.html
random-if(B2G&&browserIsRemote) == ssty-4.html ssty-4-ref.html
== ssty-4.html ssty-4-ref.html
== mathscript-1.html mathscript-1-ref.html
== mathscript-2.html mathscript-2-ref.html
random-if(B2G&&browserIsRemote) == mo-accent-dynamic.html mo-accent-dynamic-ref.html
random-if(B2G&&browserIsRemote) == mo-movablelimits-dynamic.html mo-movablelimits-dynamic-ref.html
random-if(B2G&&browserIsRemote) == munderover-accent-dynamic.html munderover-accent-dynamic-ref.html
random-if(B2G&&browserIsRemote) == munderover-accentunder-dynamic.html munderover-accentunder-dynamic-ref.html
== mo-accent-dynamic.html mo-accent-dynamic-ref.html
== mo-movablelimits-dynamic.html mo-movablelimits-dynamic-ref.html
== munderover-accent-dynamic.html munderover-accent-dynamic-ref.html
== munderover-accentunder-dynamic.html munderover-accentunder-dynamic-ref.html
== columnlines-1a.html columnlines-1-ref.html
!= columnlines-1b.html columnlines-1-ref.html
!= columnlines-1c.html columnlines-1-ref.html
@ -273,10 +273,10 @@ random-if(B2G&&browserIsRemote) == munderover-accentunder-dynamic.html munderove
== tablespacing-1.html tablespacing-1-ref.html
== tablespacing-2.html tablespacing-2-ref.html
== tablespacing-3.html tablespacing-3-ref.html
fails-if(B2G&&browserIsRemote) == tablespacing-4.html tablespacing-4-ref.html
fails-if(B2G&&browserIsRemote) == tablespacing-5.html tablespacing-5-ref.html
fails-if(B2G&&browserIsRemote) == tablespacing-5a.html tablespacing-5a-ref.html
fails-if(B2G&&browserIsRemote) == tablespacing-6.html tablespacing-6-ref.html
== tablespacing-4.html tablespacing-4-ref.html
== tablespacing-5.html tablespacing-5-ref.html
== tablespacing-5a.html tablespacing-5a-ref.html
== tablespacing-6.html tablespacing-6-ref.html
== tablespacing-7.html tablespacing-7-ref.html
!= tablespacing-8a.html tablespacing-8-ref.html
!= tablespacing-8b.html tablespacing-8-ref.html
@ -301,19 +301,19 @@ fails-if(B2G&&browserIsRemote) == tablespacing-6.html tablespacing-6-ref.html
== mfrac-A-6.html mfrac-A-6-ref.html
== mfrac-A-7.html mfrac-A-7-ref.html
== mfrac-A-8.html mfrac-A-8-ref.html
random-if(B2G&&browserIsRemote) == mfrac-B-1.html mfrac-B-1-ref.html
random-if(B2G&&browserIsRemote) == mfrac-B-2.html mfrac-B-2-3-ref.html
random-if(B2G&&browserIsRemote) == mfrac-B-3.html mfrac-B-2-3-ref.html
random-if(B2G&&browserIsRemote) == mfrac-B-4.html mfrac-B-4-5-ref.html
random-if(B2G&&browserIsRemote) == mfrac-B-5.html mfrac-B-4-5-ref.html
random-if(B2G&&browserIsRemote) == mfrac-B-6.html mfrac-B-6-7-ref.html
random-if(B2G&&browserIsRemote) == mfrac-B-7.html mfrac-B-6-7-ref.html
fuzzy-if(OSX,1,100) random-if(B2G&&browserIsRemote) == mfrac-C-1.html mfrac-C-1-ref.html
random-if(B2G&&browserIsRemote) == mfrac-C-2.html mfrac-C-2-ref.html
random-if(B2G&&browserIsRemote) == mfrac-C-3.html mfrac-C-3-ref.html
random-if(B2G&&browserIsRemote) == mfrac-C-4.html mfrac-C-4-ref.html
fuzzy-if(OSX,1,100) random-if(B2G&&browserIsRemote) == mfrac-D-1.html mfrac-D-1-ref.html
random-if(B2G&&browserIsRemote) == mfrac-D-2.html mfrac-D-2-ref.html
random-if(B2G&&browserIsRemote) == mfrac-D-3.html mfrac-D-3-ref.html
random-if(B2G&&browserIsRemote) == mfrac-D-4.html mfrac-D-4-ref.html
random-if(B2G&&browserIsRemote) == mfrac-E-1.html mfrac-E-1-ref.html
== mfrac-B-1.html mfrac-B-1-ref.html
== mfrac-B-2.html mfrac-B-2-3-ref.html
== mfrac-B-3.html mfrac-B-2-3-ref.html
== mfrac-B-4.html mfrac-B-4-5-ref.html
== mfrac-B-5.html mfrac-B-4-5-ref.html
== mfrac-B-6.html mfrac-B-6-7-ref.html
== mfrac-B-7.html mfrac-B-6-7-ref.html
fuzzy-if(OSX,1,100) == mfrac-C-1.html mfrac-C-1-ref.html
== mfrac-C-2.html mfrac-C-2-ref.html
== mfrac-C-3.html mfrac-C-3-ref.html
== mfrac-C-4.html mfrac-C-4-ref.html
fuzzy-if(OSX,1,100) == mfrac-D-1.html mfrac-D-1-ref.html
== mfrac-D-2.html mfrac-D-2-ref.html
== mfrac-D-3.html mfrac-D-3-ref.html
== mfrac-D-4.html mfrac-D-4-ref.html
== mfrac-E-1.html mfrac-E-1-ref.html

View File

@ -54,4 +54,4 @@ fails == svg-with-type.html svg-with-type-ref.html
# XXX missing test 034 from http://biesi.damowmow.com/object/ here; would
# need to require Flash on the test machine to run them
#
random-if(B2G&&browserIsRemote) == malformed-uri.html malformed-uri-ref.html
== malformed-uri.html malformed-uri-ref.html

View File

@ -1,12 +1,12 @@
# Please see the comment at the beginning of reftest.list
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA.html?border_abspos leftN-widthA-rightA-ref.html?border_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA-2.html?border_abspos leftN-widthA-rightA-2-ref.html?border_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN.html?border_abspos leftN-widthA-rightN-ref.html?border_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN-2.html?border_abspos leftN-widthA-rightN-2-ref.html?border_abspos
random-if(B2G&&browserIsRemote) == leftA-widthN-rightA.html?border_abspos leftA-widthN-rightA-ref.html?border_abspos
random-if(B2G&&browserIsRemote) == leftN-widthN-rightA.html?border_abspos leftN-widthN-rightA-ref.html?border_abspos
random-if(B2G&&browserIsRemote) == leftA-widthN-rightN.html?border_abspos leftA-widthN-rightN-ref.html?border_abspos
random-if(B2G&&browserIsRemote) == leftA-widthA-rightN.html?border_abspos leftA-widthA-rightN-ref.html?border_abspos
== leftN-widthA-rightA.html?border_abspos leftN-widthA-rightA-ref.html?border_abspos
== leftN-widthA-rightA-2.html?border_abspos leftN-widthA-rightA-2-ref.html?border_abspos
== leftN-widthA-rightN.html?border_abspos leftN-widthA-rightN-ref.html?border_abspos
== leftN-widthA-rightN-2.html?border_abspos leftN-widthA-rightN-2-ref.html?border_abspos
== leftA-widthN-rightA.html?border_abspos leftA-widthN-rightA-ref.html?border_abspos
== leftN-widthN-rightA.html?border_abspos leftN-widthN-rightA-ref.html?border_abspos
== leftA-widthN-rightN.html?border_abspos leftA-widthN-rightN-ref.html?border_abspos
== leftA-widthA-rightN.html?border_abspos leftA-widthA-rightN-ref.html?border_abspos
== toauto-leftN-widthA-rightA.html?border_abspos toauto-leftN-widthA-rightA-ref.html?border_abspos
== toauto-leftN-widthA-rightA-2.html?border_abspos toauto-leftN-widthA-rightA-2-ref.html?border_abspos
== toauto-leftN-widthA-rightN.html?border_abspos toauto-leftN-widthA-rightN-ref.html?border_abspos

View File

@ -1,13 +1,13 @@
# Please see the comment at the beginning of reftest.list
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA.html?border_parent leftN-widthA-rightA-ref.html?border_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA-2.html?border_parent leftN-widthA-rightA-2-ref.html?border_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN.html?border_parent leftN-widthA-rightN-ref.html?border_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN-2.html?border_parent leftN-widthA-rightN-2-ref.html?border_parent
random-if(B2G&&browserIsRemote) == leftA-widthN-rightA.html?border_parent leftA-widthN-rightA-ref.html?border_parent
random-if(B2G&&browserIsRemote) == leftN-widthN-rightA.html?border_parent leftN-widthN-rightA-ref.html?border_parent
random-if(B2G&&browserIsRemote) == leftA-widthN-rightN.html?border_parent leftA-widthN-rightN-ref.html?border_parent
random-if(B2G&&browserIsRemote) == leftA-widthA-rightN.html?border_parent leftA-widthA-rightN-ref.html?border_parent
== leftN-widthA-rightA.html?border_parent leftN-widthA-rightA-ref.html?border_parent
== leftN-widthA-rightA-2.html?border_parent leftN-widthA-rightA-2-ref.html?border_parent
== leftN-widthA-rightN.html?border_parent leftN-widthA-rightN-ref.html?border_parent
== leftN-widthA-rightN-2.html?border_parent leftN-widthA-rightN-2-ref.html?border_parent
== leftA-widthN-rightA.html?border_parent leftA-widthN-rightA-ref.html?border_parent
== leftN-widthN-rightA.html?border_parent leftN-widthN-rightA-ref.html?border_parent
== leftA-widthN-rightN.html?border_parent leftA-widthN-rightN-ref.html?border_parent
== leftA-widthA-rightN.html?border_parent leftA-widthA-rightN-ref.html?border_parent
== toauto-leftN-widthA-rightA.html?border_parent toauto-leftN-widthA-rightA-ref.html?border_parent
== toauto-leftN-widthA-rightA-2.html?border_parent toauto-leftN-widthA-rightA-2-ref.html?border_parent
== toauto-leftN-widthA-rightN.html?border_parent toauto-leftN-widthA-rightN-ref.html?border_parent

View File

@ -1,13 +1,13 @@
# Please see the comment at the beginning of reftest.list
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA.html?margin_abspos leftN-widthA-rightA-ref.html?margin_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA-2.html?margin_abspos leftN-widthA-rightA-2-ref.html?margin_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN.html?margin_abspos leftN-widthA-rightN-ref.html?margin_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN-2.html?margin_abspos leftN-widthA-rightN-2-ref.html?margin_abspos
random-if(B2G&&browserIsRemote) == leftA-widthN-rightA.html?margin_abspos leftA-widthN-rightA-ref.html?margin_abspos
random-if(B2G&&browserIsRemote) == leftN-widthN-rightA.html?margin_abspos leftN-widthN-rightA-ref.html?margin_abspos
random-if(B2G&&browserIsRemote) == leftA-widthN-rightN.html?margin_abspos leftA-widthN-rightN-ref.html?margin_abspos
random-if(B2G&&browserIsRemote) == leftA-widthA-rightN.html?margin_abspos leftA-widthA-rightN-ref.html?margin_abspos
== leftN-widthA-rightA.html?margin_abspos leftN-widthA-rightA-ref.html?margin_abspos
== leftN-widthA-rightA-2.html?margin_abspos leftN-widthA-rightA-2-ref.html?margin_abspos
== leftN-widthA-rightN.html?margin_abspos leftN-widthA-rightN-ref.html?margin_abspos
== leftN-widthA-rightN-2.html?margin_abspos leftN-widthA-rightN-2-ref.html?margin_abspos
== leftA-widthN-rightA.html?margin_abspos leftA-widthN-rightA-ref.html?margin_abspos
== leftN-widthN-rightA.html?margin_abspos leftN-widthN-rightA-ref.html?margin_abspos
== leftA-widthN-rightN.html?margin_abspos leftA-widthN-rightN-ref.html?margin_abspos
== leftA-widthA-rightN.html?margin_abspos leftA-widthA-rightN-ref.html?margin_abspos
== toauto-leftN-widthA-rightA.html?margin_abspos toauto-leftN-widthA-rightA-ref.html?margin_abspos
== toauto-leftN-widthA-rightA-2.html?margin_abspos toauto-leftN-widthA-rightA-2-ref.html?margin_abspos
== toauto-leftN-widthA-rightN.html?margin_abspos toauto-leftN-widthA-rightN-ref.html?margin_abspos

View File

@ -1,13 +1,13 @@
# Please see the comment at the beginning of reftest.list
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA.html?margin_parent leftN-widthA-rightA-ref.html?margin_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA-2.html?margin_parent leftN-widthA-rightA-2-ref.html?margin_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN.html?margin_parent leftN-widthA-rightN-ref.html?margin_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN-2.html?margin_parent leftN-widthA-rightN-2-ref.html?margin_parent
random-if(B2G&&browserIsRemote) == leftA-widthN-rightA.html?margin_parent leftA-widthN-rightA-ref.html?margin_parent
random-if(B2G&&browserIsRemote) == leftN-widthN-rightA.html?margin_parent leftN-widthN-rightA-ref.html?margin_parent
random-if(B2G&&browserIsRemote) == leftA-widthN-rightN.html?margin_parent leftA-widthN-rightN-ref.html?margin_parent
random-if(B2G&&browserIsRemote) == leftA-widthA-rightN.html?margin_parent leftA-widthA-rightN-ref.html?margin_parent
== leftN-widthA-rightA.html?margin_parent leftN-widthA-rightA-ref.html?margin_parent
== leftN-widthA-rightA-2.html?margin_parent leftN-widthA-rightA-2-ref.html?margin_parent
== leftN-widthA-rightN.html?margin_parent leftN-widthA-rightN-ref.html?margin_parent
== leftN-widthA-rightN-2.html?margin_parent leftN-widthA-rightN-2-ref.html?margin_parent
== leftA-widthN-rightA.html?margin_parent leftA-widthN-rightA-ref.html?margin_parent
== leftN-widthN-rightA.html?margin_parent leftN-widthN-rightA-ref.html?margin_parent
== leftA-widthN-rightN.html?margin_parent leftA-widthN-rightN-ref.html?margin_parent
== leftA-widthA-rightN.html?margin_parent leftA-widthA-rightN-ref.html?margin_parent
== toauto-leftN-widthA-rightA.html?margin_parent toauto-leftN-widthA-rightA-ref.html?margin_parent
== toauto-leftN-widthA-rightA-2.html?margin_parent toauto-leftN-widthA-rightA-2-ref.html?margin_parent
== toauto-leftN-widthA-rightN.html?margin_parent toauto-leftN-widthA-rightN-ref.html?margin_parent

View File

@ -1,13 +1,13 @@
# Please see the comment at the beginning of reftest.list
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA.html?padding_abspos leftN-widthA-rightA-ref.html?padding_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA-2.html?padding_abspos leftN-widthA-rightA-2-ref.html?padding_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN.html?padding_abspos leftN-widthA-rightN-ref.html?padding_abspos
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN-2.html?padding_abspos leftN-widthA-rightN-2-ref.html?padding_abspos
random-if(B2G&&browserIsRemote) == leftA-widthN-rightA.html?padding_abspos leftA-widthN-rightA-ref.html?padding_abspos
random-if(B2G&&browserIsRemote) == leftN-widthN-rightA.html?padding_abspos leftN-widthN-rightA-ref.html?padding_abspos
random-if(B2G&&browserIsRemote) == leftA-widthN-rightN.html?padding_abspos leftA-widthN-rightN-ref.html?padding_abspos
random-if(B2G&&browserIsRemote) == leftA-widthA-rightN.html?padding_abspos leftA-widthA-rightN-ref.html?padding_abspos
== leftN-widthA-rightA.html?padding_abspos leftN-widthA-rightA-ref.html?padding_abspos
== leftN-widthA-rightA-2.html?padding_abspos leftN-widthA-rightA-2-ref.html?padding_abspos
== leftN-widthA-rightN.html?padding_abspos leftN-widthA-rightN-ref.html?padding_abspos
== leftN-widthA-rightN-2.html?padding_abspos leftN-widthA-rightN-2-ref.html?padding_abspos
== leftA-widthN-rightA.html?padding_abspos leftA-widthN-rightA-ref.html?padding_abspos
== leftN-widthN-rightA.html?padding_abspos leftN-widthN-rightA-ref.html?padding_abspos
== leftA-widthN-rightN.html?padding_abspos leftA-widthN-rightN-ref.html?padding_abspos
== leftA-widthA-rightN.html?padding_abspos leftA-widthA-rightN-ref.html?padding_abspos
== toauto-leftN-widthA-rightA.html?padding_abspos toauto-leftN-widthA-rightA-ref.html?padding_abspos
== toauto-leftN-widthA-rightA-2.html?padding_abspos toauto-leftN-widthA-rightA-2-ref.html?padding_abspos
== toauto-leftN-widthA-rightN.html?padding_abspos toauto-leftN-widthA-rightN-ref.html?padding_abspos

View File

@ -1,13 +1,13 @@
# Please see the comment at the beginning of reftest.list
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA.html?padding_parent leftN-widthA-rightA-ref.html?padding_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA-2.html?padding_parent leftN-widthA-rightA-2-ref.html?padding_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN.html?padding_parent leftN-widthA-rightN-ref.html?padding_parent
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN-2.html?padding_parent leftN-widthA-rightN-2-ref.html?padding_parent
random-if(B2G&&browserIsRemote) == leftA-widthN-rightA.html?padding_parent leftA-widthN-rightA-ref.html?padding_parent
random-if(B2G&&browserIsRemote) == leftN-widthN-rightA.html?padding_parent leftN-widthN-rightA-ref.html?padding_parent
random-if(B2G&&browserIsRemote) == leftA-widthN-rightN.html?padding_parent leftA-widthN-rightN-ref.html?padding_parent
random-if(B2G&&browserIsRemote) == leftA-widthA-rightN.html?padding_parent leftA-widthA-rightN-ref.html?padding_parent
== leftN-widthA-rightA.html?padding_parent leftN-widthA-rightA-ref.html?padding_parent
== leftN-widthA-rightA-2.html?padding_parent leftN-widthA-rightA-2-ref.html?padding_parent
== leftN-widthA-rightN.html?padding_parent leftN-widthA-rightN-ref.html?padding_parent
== leftN-widthA-rightN-2.html?padding_parent leftN-widthA-rightN-2-ref.html?padding_parent
== leftA-widthN-rightA.html?padding_parent leftA-widthN-rightA-ref.html?padding_parent
== leftN-widthN-rightA.html?padding_parent leftN-widthN-rightA-ref.html?padding_parent
== leftA-widthN-rightN.html?padding_parent leftA-widthN-rightN-ref.html?padding_parent
== leftA-widthA-rightN.html?padding_parent leftA-widthA-rightN-ref.html?padding_parent
== toauto-leftN-widthA-rightA.html?padding_parent toauto-leftN-widthA-rightA-ref.html?padding_parent
== toauto-leftN-widthA-rightA-2.html?padding_parent toauto-leftN-widthA-rightA-2-ref.html?padding_parent
== toauto-leftN-widthA-rightN.html?padding_parent toauto-leftN-widthA-rightN-ref.html?padding_parent

View File

@ -1,13 +1,13 @@
# Please see the comment at the beginning of reftest.list
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA.html leftN-widthA-rightA-ref.html
random-if(B2G&&browserIsRemote) == leftN-widthA-rightA-2.html leftN-widthA-rightA-2-ref.html
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN.html leftN-widthA-rightN-ref.html
random-if(B2G&&browserIsRemote) == leftN-widthA-rightN-2.html leftN-widthA-rightN-2-ref.html
random-if(B2G&&browserIsRemote) == leftA-widthN-rightA.html leftA-widthN-rightA-ref.html
random-if(B2G&&browserIsRemote) == leftN-widthN-rightA.html leftN-widthN-rightA-ref.html
random-if(B2G&&browserIsRemote) == leftA-widthN-rightN.html leftA-widthN-rightN-ref.html
random-if(B2G&&browserIsRemote) == leftA-widthA-rightN.html leftA-widthA-rightN-ref.html
== leftN-widthA-rightA.html leftN-widthA-rightA-ref.html
== leftN-widthA-rightA-2.html leftN-widthA-rightA-2-ref.html
== leftN-widthA-rightN.html leftN-widthA-rightN-ref.html
== leftN-widthA-rightN-2.html leftN-widthA-rightN-2-ref.html
== leftA-widthN-rightA.html leftA-widthN-rightA-ref.html
== leftN-widthN-rightA.html leftN-widthN-rightA-ref.html
== leftA-widthN-rightN.html leftA-widthN-rightN-ref.html
== leftA-widthA-rightN.html leftA-widthA-rightN-ref.html
== toauto-leftN-widthA-rightA.html toauto-leftN-widthA-rightA-ref.html
== toauto-leftN-widthA-rightA-2.html toauto-leftN-widthA-rightA-2-ref.html
== toauto-leftN-widthA-rightN.html toauto-leftN-widthA-rightN-ref.html

View File

@ -1,10 +1,10 @@
include horizontal/reftest.list
skip-if(B2G&&browserIsRemote) include vertical/reftest.list
skip-if(B2G&&browserIsRemote) include mixed/reftest.list
skip-if(B2G&&browserIsRemote) include mixed-abspos-root/reftest.list
skip-if(B2G&&browserIsRemote) include relative/reftest.list
include vertical/reftest.list
include mixed/reftest.list
include mixed-abspos-root/reftest.list
include relative/reftest.list
random-if(B2G&&browserIsRemote) == multiple-changes.html multiple-changes-ref.html
random-if(B2G&&browserIsRemote) == shrink-wrap.html shrink-wrap-ref.html
random-if(B2G&&browserIsRemote) == max-width.html max-width-ref.html
fuzzy-if(cocoaWidget&&layersGPUAccelerated,1,2) random-if(B2G&&browserIsRemote) == min-width.html min-width-ref.html # Bug 761770
== multiple-changes.html multiple-changes-ref.html
== shrink-wrap.html shrink-wrap-ref.html
== max-width.html max-width-ref.html
fuzzy-if(cocoaWidget&&layersGPUAccelerated,1,2) == min-width.html min-width-ref.html # Bug 761770

View File

@ -42,7 +42,7 @@ fuzzy-if(Android,4,810) == containing-block-1.html containing-block-1-ref.html
== overconstrained-2.html overconstrained-2-ref.html
== overconstrained-3.html overconstrained-3-ref.html
== inline-1.html inline-1-ref.html
random-if(B2G&&browserIsRemote) == inline-2.html inline-2-ref.html
== inline-2.html inline-2-ref.html
fuzzy-if(OSX==10.6||OSX==10.7,64,100) fuzzy-if(OSX==10.8,99,210) == inline-3.html inline-3-ref.html
fails == column-contain-1a.html column-contain-1-ref.html
== column-contain-1b.html column-contain-1-ref.html

View File

@ -20,9 +20,9 @@ fails-if(B2G) == 609227-2b.html 609227-2-ref.html # reftest-print doesn't work o
== 626395-2c.html 626395-2-ref.html
== 626395-2d.html 626395-2-ref.html
== 652178-1.html 652178-1-ref.html
random-if(B2G&&browserIsRemote) == 115199-1.html 115199-1-ref.html # reftest-print doesn't work on B2G
random-if(B2G&&browserIsRemote) == 115199-2a.html 115199-2-ref.html
random-if(B2G&&browserIsRemote) == 115199-2b.html 115199-2-ref.html
fails-if(B2G) == 115199-1.html 115199-1-ref.html # reftest-print doesn't work on B2G
== 115199-2a.html 115199-2-ref.html
== 115199-2b.html 115199-2-ref.html
== 652178-1.html 652178-1-ref2.html
skip-if(B2G) fuzzy-if(cocoaWidget,1,5000) == 745025-1.html 745025-1-ref.html # reftest-print doesn't work on B2G
== 820496-1.html 820496-1-ref.html

View File

@ -267,11 +267,11 @@ include pagination/reftest.list
# <style scoped>
include scoped-style/reftest.list
# scrolling
# scrolling
include scrolling/reftest.list
# selection
skip-if(B2G&&browserIsRemote) include selection/reftest.list
include selection/reftest.list
# sticky positioning
include position-sticky/reftest.list

View File

@ -5,15 +5,15 @@ skip-if(B2G) HTTP == fixed-opacity-2.html fixed-opacity-2.html?ref
skip-if(B2G) random-if(gtk2Widget) fuzzy-if(Android,3,60) HTTP == fixed-text-1.html fixed-text-1.html?ref
HTTP == fixed-text-2.html fixed-text-2.html?ref
random-if(Android&&!browserIsRemote) skip-if(B2G&&browserIsRemote) == iframe-border-radius.html iframe-border-radius-ref.html # bug 760269
random-if(Android||(B2G&&browserIsRemote)) HTTP == image-1.html image-1.html?ref
random-if((Android&&!browserIsRemote)||(B2G&&browserIsRemote)) HTTP == opacity-mixed-scrolling-1.html opacity-mixed-scrolling-1.html?ref # bug 760269
random-if(Android) HTTP == image-1.html image-1.html?ref
random-if(Android&&!browserIsRemote) HTTP == opacity-mixed-scrolling-1.html opacity-mixed-scrolling-1.html?ref # bug 760269
skip-if(B2G) random-if(cocoaWidget) HTTP == opacity-mixed-scrolling-2.html opacity-mixed-scrolling-2.html?ref # see bug 625357
skip-if(B2G&&browserIsRemote) HTTP == simple-1.html simple-1.html?ref
skip-if(B2G) HTTP == subpixel-1.html#d subpixel-1-ref.html#d
fuzzy-if(Android,4,120) random-if(B2G&&browserIsRemote) HTTP == text-1.html text-1.html?ref
fuzzy-if(Android,4,120) random-if(B2G&&browserIsRemote) HTTP == text-2.html?up text-2.html?ref
fuzzy-if(Android,4,120) HTTP == text-1.html text-1.html?ref
fuzzy-if(Android,4,120) HTTP == text-2.html?up text-2.html?ref
skip-if(B2G) fuzzy-if(Android&&AndroidVersion<15,251,722) HTTP == transformed-1.html transformed-1.html?ref
random-if(B2G&&browserIsRemote) HTTP == transformed-1.html?up transformed-1.html?ref
HTTP == transformed-1.html?up transformed-1.html?ref
fuzzy-if(Android,5,20000) == uncovering-1.html uncovering-1-ref.html
fuzzy-if(Android,5,20000) == uncovering-2.html uncovering-2-ref.html
skip-if(B2G) == less-than-scrollbar-height.html less-than-scrollbar-height-ref.html

View File

@ -12,10 +12,10 @@ skip-if(B2G) == background-simple-1.html lime100x100-ref.html # bug 773482
== background-viewBox-1.html lime100x100-ref.html
# background tests with the background area getting resized
random-if(B2G&&browserIsRemote) == background-resize-1.html lime100x100-ref.html
random-if(B2G&&browserIsRemote) == background-resize-2.html lime100x100-ref.html
random-if(B2G&&browserIsRemote) == background-resize-3.html lime100x100-ref.html
random-if(B2G&&browserIsRemote) == background-resize-4.html lime100x100-ref.html
== background-resize-1.html lime100x100-ref.html
== background-resize-2.html lime100x100-ref.html
== background-resize-3.html lime100x100-ref.html
== background-resize-4.html lime100x100-ref.html
# Test for stretching background images by different amounts in each dimension
== background-stretch-1.html background-stretch-1-ref.html
@ -42,11 +42,11 @@ skip-if(B2G) == canvas-drawImage-scale-1b.html lime100x100-ref.html
skip-if(B2G) == canvas-drawImage-scale-1c.html lime100x100-ref.html
# Fuzzyness and fails for scaling should be fixed by bug 941467
fuzzy(1,2) fails-if(Android&&AndroidVersion<15&&AndroidVersion!=10) random-if(B2G&&browserIsRemote) == canvas-drawImage-scale-2a.html canvas-drawImage-scale-2-ref.html
fuzzy(1,2) fails-if(Android&&AndroidVersion<15&&AndroidVersion!=10) == canvas-drawImage-scale-2a.html canvas-drawImage-scale-2-ref.html
fails == canvas-drawImage-scale-2b.html canvas-drawImage-scale-2-ref.html
skip-if(B2G) == canvas-drawImage-slice-1a.html lime100x100-ref.html
random-if(B2G&&browserIsRemote) == canvas-drawImage-slice-1b.html lime100x100-ref.html
== canvas-drawImage-slice-1b.html lime100x100-ref.html
== canvas-drawImage-origin-clean-1.html lime100x100-ref.html
@ -64,7 +64,7 @@ skip-if(B2G) == img-simple-6.html lime100x100-ref.html # bug 773482
random == img-and-image-1.html img-and-image-1-ref.svg # bug 645267
# More complex <img> tests
random-if(B2G&&browserIsRemote) == img-blobURI-1.html lime100x100-ref.html
== img-blobURI-1.html lime100x100-ref.html
random == img-blobURI-2.html lime100x100-ref.html
== img-content-outside-viewBox-1.html img-content-outside-viewBox-1-ref.html
== img-display-none-1.html about:blank

View File

@ -6,7 +6,7 @@
include svg-filter-chains/reftest.list
skip-if(B2G) == dynamic-filtered-foreignObject-01.svg pass.svg # bug 773482
random-if(B2G&&browserIsRemote) == dynamic-filter-invalidation-01.svg pass.svg
== dynamic-filter-invalidation-01.svg pass.svg
== dynamic-filter-invalidation-02.svg pass.svg
== feBlend-1.svg feBlend-1-ref.svg

View File

@ -38,4 +38,4 @@ skip-if(B2G) == image-preserveAspectRatio-02-raster.svg image-preserveAspectRati
skip-if(B2G) == image-preserveAspectRatio-02-svg.svg image-preserveAspectRatio-02-ref.svg # bug 773482
skip-if(B2G) == image-preserveAspectRatio-03.svg image-preserveAspectRatio-03-ref.svg # bug 773482
skip-if(B2G) == image-preserveAspectRatio-04.svg image-preserveAspectRatio-04-ref.svg # bug 773482
random-if(B2G&&browserIsRemote) == image-preserveAspectRatio-05.svg ../pass.svg
== image-preserveAspectRatio-05.svg ../pass.svg

View File

@ -77,7 +77,7 @@ fuzzy-if(Android,4,87) skip-if(B2G) == dynamic-clipPath-01.svg pass.svg
== dynamic-clipPath-02.svg pass.svg
== dynamic-feFlood-01.svg pass.svg
asserts(0-1) == dynamic-feImage-01.svg pass.svg # intermittent assertions (bug 886080)
random-if(B2G&&browserIsRemote) == dynamic-fill-01.svg dynamic-fill-01-ref.svg
== dynamic-fill-01.svg dynamic-fill-01-ref.svg
skip-if(B2G) fuzzy-if(d2d,1,10000) == dynamic-filter-contents-01a.svg dynamic-filter-contents-01-ref.svg
skip-if(B2G) fuzzy-if(d2d,1,10000) == dynamic-filter-contents-01b.svg dynamic-filter-contents-01-ref.svg
skip-if(B2G) == dynamic-gradient-contents-01.svg pass.svg
@ -89,7 +89,7 @@ skip-if(B2G) == dynamic-marker-02.svg dynamic-marker-02-ref.svg
skip-if(B2G) == dynamic-marker-03.svg pass.svg
== dynamic-mask-01.svg pass.svg
skip-if(B2G) == dynamic-mask-contents-01.svg pass.svg
random-if(B2G&&browserIsRemote) == dynamic-opacity-property-01.svg pass.svg
== dynamic-opacity-property-01.svg pass.svg
skip-if(B2G) == dynamic-pattern-01.svg pass.svg
skip-if(B2G) == dynamic-pattern-02.svg pass.svg
skip-if(B2G) == dynamic-pattern-contents-01.svg pass.svg
@ -115,15 +115,15 @@ skip-if(B2G) == dynamic-text-06.svg pass.svg
== dynamic-text-07.svg dynamic-text-07-ref.svg
== dynamic-text-08.svg dynamic-text-08-ref.svg
skip-if(B2G) == dynamic-textPath-01.svg dynamic-textPath-01-ref.svg
random-if(B2G&&browserIsRemote) == dynamic-textPath-02.svg dynamic-textPath-02-ref.svg
random-if(B2G&&browserIsRemote) == dynamic-textPath-03.svg dynamic-textPath-03-ref.svg
== dynamic-textPath-02.svg dynamic-textPath-02-ref.svg
== dynamic-textPath-03.svg dynamic-textPath-03-ref.svg
== dynamic-use-01.svg pass.svg
== dynamic-use-02.svg pass.svg
skip-if(B2G) == dynamic-use-03.svg pass.svg
skip-if(B2G) == dynamic-use-04.svg pass.svg
skip-if(B2G) == dynamic-use-05.svg pass.svg
random-if(B2G&&browserIsRemote) == dynamic-use-06.svg pass.svg
random-if(B2G&&browserIsRemote) == dynamic-use-07.svg pass.svg
== dynamic-use-06.svg pass.svg
== dynamic-use-07.svg pass.svg
random == dynamic-use-nested-01a.svg dynamic-use-nested-01-ref.svg
random == dynamic-use-nested-01b.svg dynamic-use-nested-01-ref.svg
== dynamic-use-remove-width.svg dynamic-use-remove-width-ref.svg
@ -210,9 +210,9 @@ pref(layout.css.masking.enabled,true) fuzzy-if(d2d,1,6400) == mask-type-03.svg m
pref(layout.css.masking.enabled,true) fuzzy-if(d2d,1,6400) == mask-type-04.svg mask-type-01-ref.svg
== nested-viewBox-01.svg pass.svg
== nesting-invalid-01.svg nesting-invalid-01-ref.svg
== non-scaling-stroke-01.svg non-scaling-stroke-01-ref.svg
== non-scaling-stroke-01.svg non-scaling-stroke-01-ref.svg
fuzzy-if(Android||B2G,1,99) fuzzy-if(!contentSameGfxBackendAsCanvas,9,99) == non-scaling-stroke-02.svg non-scaling-stroke-02-ref.svg
random-if(B2G&&browserIsRemote) == non-scaling-stroke-03.svg non-scaling-stroke-03-ref.svg
== non-scaling-stroke-03.svg non-scaling-stroke-03-ref.svg
== objectBoundingBox-and-clipPath.svg pass.svg
# Bug 588684
random-if(gtk2Widget) == objectBoundingBox-and-fePointLight-01.svg objectBoundingBox-and-fePointLight-01-ref.svg
@ -233,16 +233,16 @@ fuzzy-if(Android&&AndroidVersion>=15,8,200) random-if(B2G&&browserIsRemote) == o
== overflow-on-outer-svg-02a.xhtml overflow-on-outer-svg-02-ref.xhtml
== overflow-on-outer-svg-02b.xhtml overflow-on-outer-svg-02-ref.xhtml
== overflow-on-outer-svg-02c.xhtml overflow-on-outer-svg-02-ref.xhtml
random-if(B2G&&browserIsRemote) == overflow-on-outer-svg-02d.xhtml overflow-on-outer-svg-02-ref.xhtml
random-if(B2G&&browserIsRemote) == overflow-on-outer-svg-03a.xhtml overflow-on-outer-svg-03-ref.xhtml
random-if(B2G&&browserIsRemote) == overflow-on-outer-svg-03b.xhtml overflow-on-outer-svg-03-ref.xhtml
== overflow-on-outer-svg-02d.xhtml overflow-on-outer-svg-02-ref.xhtml
== overflow-on-outer-svg-03a.xhtml overflow-on-outer-svg-03-ref.xhtml
== overflow-on-outer-svg-03b.xhtml overflow-on-outer-svg-03-ref.xhtml
pref(svg.paint-order.enabled,true) == paint-order-01.svg paint-order-01-ref.svg
pref(svg.paint-order.enabled,true) == paint-order-02.svg paint-order-02-ref.svg
pref(svg.paint-order.enabled,true) == paint-order-03.svg paint-order-03-ref.svg
fuzzy-if(azureQuartz,6,47) == path-01.svg path-01-ref.svg
== path-02.svg pass.svg
== path-03.svg pass.svg
random-if(B2G&&browserIsRemote) == path-04.svg pass.svg
== path-04.svg pass.svg
== path-05.svg pass.svg
== path-06.svg path-06-ref.svg
== path-07.svg path-07-ref.svg
@ -251,9 +251,9 @@ random-if(B2G&&browserIsRemote) == path-04.svg pass.svg
== pathLength-02.svg pass.svg
== pattern-basic-01.svg pass.svg
== pattern-invalid-01.svg pattern-invalid-01-ref.svg
random-if(B2G&&browserIsRemote) == pattern-live-01a.svg pattern-live-01-ref.svg
random-if(B2G&&browserIsRemote) == pattern-live-01b.svg pattern-live-01-ref.svg
random-if(B2G&&browserIsRemote) == pattern-live-01c.svg pattern-live-01-ref.svg
== pattern-live-01a.svg pattern-live-01-ref.svg
== pattern-live-01b.svg pattern-live-01-ref.svg
== pattern-live-01c.svg pattern-live-01-ref.svg
== pattern-scale-01a.svg pattern-scale-01-ref.svg
== pattern-scale-01b.svg pattern-scale-01-ref.svg
== pattern-scale-01c.svg pattern-scale-01-ref.svg
@ -281,9 +281,9 @@ random-if(B2G&&browserIsRemote) == pattern-live-01c.svg pattern-live-01-ref.svg
== script-empty-01.svg pass.svg
== selector-01.svg pass.svg
== stroke-width-percentage-01.svg pass.svg
random-if(B2G&&browserIsRemote) == stroke-width-percentage-02a.svg stroke-width-percentage-02-ref.svg
random-if(B2G&&browserIsRemote) == stroke-width-percentage-02b.svg stroke-width-percentage-02-ref.svg
random-if(B2G&&browserIsRemote) == stroke-width-percentage-03.xhtml stroke-width-percentage-03-ref.xhtml
== stroke-width-percentage-02a.svg stroke-width-percentage-02-ref.svg
== stroke-width-percentage-02b.svg stroke-width-percentage-02-ref.svg
== stroke-width-percentage-03.xhtml stroke-width-percentage-03-ref.xhtml
== style-property-on-script-element-01.svg pass.svg
== style-without-type-attribute.svg pass.svg
== svg-in-foreignObject-01.xhtml svg-in-foreignObject-01-ref.xhtml

Some files were not shown because too many files have changed in this diff Show More