mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge m-c to b2g-inbound.
This commit is contained in:
commit
f06b210e1a
2
CLOBBER
2
CLOBBER
@ -22,4 +22,4 @@
|
||||
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
|
||||
# don't change CLOBBER for WebIDL changes any more.
|
||||
|
||||
Update CLOBBER for bug 978784 because it touches the ICU build system.
|
||||
Intermittent Android startup crashes leading to test bustage.
|
||||
|
@ -17,4 +17,4 @@ support-files =
|
||||
skipped_tests_winxp.txt
|
||||
|
||||
[test_webgl_conformance_test_suite.html]
|
||||
skip-if = buildapp == 'b2g'
|
||||
skip-if = (toolkit == 'android') || (buildapp == 'b2g') #android(bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests)
|
||||
|
@ -10,7 +10,12 @@ support-files =
|
||||
[test_no_arr_points.html]
|
||||
[test_privileged_exts.html]
|
||||
[test_webgl_available.html]
|
||||
skip-if = toolkit == 'android' #bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests
|
||||
[test_webgl_conformance.html]
|
||||
skip-if = toolkit == 'android' #bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests
|
||||
[test_webgl_request_context.html]
|
||||
skip-if = toolkit == 'android' #bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests
|
||||
[test_webgl_request_mismatch.html]
|
||||
skip-if = toolkit == 'android' #bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests
|
||||
[test_webgl2_not_exposed.html]
|
||||
skip-if = toolkit == 'android' #bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests
|
||||
|
@ -475,7 +475,7 @@ skip-if = buildapp == 'b2g'
|
||||
skip-if = appname == "seamonkey" # See bug 598252
|
||||
|
||||
[test_buffered.html]
|
||||
skip-if = os == "win" # See bug 832768 and 864682
|
||||
skip-if = toolkit == 'android' || os == "win" # See bug 832768 and 864682
|
||||
[test_bug465498.html]
|
||||
skip-if = os == "win" # See bug 832768 and 864682
|
||||
[test_bug493187.html]
|
||||
@ -483,7 +483,7 @@ skip-if = os == "win" || (buildapp=='b2g'&&debug) # See bug 707777, #b2g-emulato
|
||||
[test_media_selection.html]
|
||||
skip-if = os == "win" # See bug 897843
|
||||
[test_seek.html]
|
||||
skip-if = os == "win" # See bug 832678, 795271, and 857424
|
||||
skip-if = toolkit == 'android' || os == "win" # See bug 832678, 795271, and 857424 # android(bug 845162) androidx86(bug 845162)
|
||||
|
||||
# The tests below contain backend-specific tests. Write backend independent
|
||||
# tests rather than adding to this list.
|
||||
|
@ -140,8 +140,7 @@ SVGFETurbulenceElement::GetPrimitiveDescription(nsSVGFilterInstance* aInstance,
|
||||
// units wide and 1 / fY user space units high. We do not scale the frequency
|
||||
// depending on the filter primitive region.
|
||||
gfxRect firstPeriodInUserSpace(0, 0, 1 / fX, 1 / fY);
|
||||
gfxMatrix m = aInstance->GetUserSpaceToFilterSpaceTransform();
|
||||
gfxRect firstPeriodInFilterSpace = m.TransformBounds(firstPeriodInUserSpace);
|
||||
gfxRect firstPeriodInFilterSpace = aInstance->UserSpaceToFilterSpace(firstPeriodInUserSpace);
|
||||
Size frequencyInFilterSpace(1 / firstPeriodInFilterSpace.width,
|
||||
1 / firstPeriodInFilterSpace.height);
|
||||
gfxPoint offset = firstPeriodInFilterSpace.TopLeft();
|
||||
|
@ -15,6 +15,6 @@ skip-if(B2G) == bug591981-1.html bug591981-ref.html
|
||||
== bug591981-2.html bug591981-ref.html
|
||||
== bug592366-1.html bug592366-ref.html
|
||||
skip-if(B2G) == bug592366-2.html bug592366-ref.html
|
||||
== bug592366-1.xhtml bug592366-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == bug592366-1.xhtml bug592366-ref.xhtml
|
||||
skip-if(B2G) == bug592366-2.xhtml bug592366-ref.xhtml
|
||||
== bug798068.xhtml bug798068-ref.xhtml
|
||||
|
@ -715,17 +715,24 @@ BrowserElementParent.prototype = {
|
||||
|
||||
// Deactivate the old input method if needed.
|
||||
if (activeInputFrame && isActive) {
|
||||
let reqOld = XPCNativeWrapper.unwrap(activeInputFrame)
|
||||
.setInputMethodActive(false);
|
||||
reqOld.onsuccess = function() {
|
||||
if (Cu.isDeadWrapper(activeInputFrame)) {
|
||||
// If the activeInputFrame is already a dead object,
|
||||
// we should simply set it to null directly.
|
||||
activeInputFrame = null;
|
||||
this._sendSetInputMethodActiveDOMRequest(req, isActive);
|
||||
}.bind(this);
|
||||
reqOld.onerror = function() {
|
||||
Services.DOMRequest.fireErrorAsync(req,
|
||||
'Failed to deactivate the old input method: ' +
|
||||
reqOld.error + '.');
|
||||
};
|
||||
} else {
|
||||
let reqOld = XPCNativeWrapper.unwrap(activeInputFrame)
|
||||
.setInputMethodActive(false);
|
||||
reqOld.onsuccess = function() {
|
||||
activeInputFrame = null;
|
||||
this._sendSetInputMethodActiveDOMRequest(req, isActive);
|
||||
}.bind(this);
|
||||
reqOld.onerror = function() {
|
||||
Services.DOMRequest.fireErrorAsync(req,
|
||||
'Failed to deactivate the old input method: ' +
|
||||
reqOld.error + '.');
|
||||
};
|
||||
}
|
||||
} else {
|
||||
this._sendSetInputMethodActiveDOMRequest(req, isActive);
|
||||
}
|
||||
|
@ -10,6 +10,12 @@ browserElementTestHelpers.setEnabledPref(true);
|
||||
browserElementTestHelpers.addPermission();
|
||||
|
||||
function setup() {
|
||||
let appInfo = SpecialPowers.Cc['@mozilla.org/xre/app-info;1']
|
||||
.getService(SpecialPowers.Ci.nsIXULAppInfo);
|
||||
if (appInfo.name != 'B2G') {
|
||||
SpecialPowers.Cu.import("resource://gre/modules/Keyboard.jsm", window);
|
||||
}
|
||||
|
||||
SpecialPowers.setBoolPref("dom.mozInputMethod.enabled", true);
|
||||
SpecialPowers.setBoolPref("dom.mozInputMethod.testing", true);
|
||||
SpecialPowers.addPermission('input-manage', true, document);
|
||||
@ -18,78 +24,154 @@ function setup() {
|
||||
function tearDown() {
|
||||
SpecialPowers.setBoolPref("dom.mozInputMethod.enabled", false);
|
||||
SpecialPowers.setBoolPref("dom.mozInputMethod.testing", false);
|
||||
SpecialPowers.removePermission("input-manage", document);
|
||||
SpecialPowers.removePermission('input-manage', document);
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
function runTest() {
|
||||
// Create an input field to receive string from input method iframes.
|
||||
let input = document.createElement('input');
|
||||
input.type = 'text';
|
||||
document.body.appendChild(input);
|
||||
let path = location.pathname;
|
||||
let imeUrl = location.protocol + '//' + location.host +
|
||||
path.substring(0, path.lastIndexOf('/')) +
|
||||
'/file_inputmethod.html';
|
||||
SpecialPowers.pushPermissions([{
|
||||
type: 'input',
|
||||
allow: true,
|
||||
context: {
|
||||
url: imeUrl,
|
||||
appId: SpecialPowers.Ci.nsIScriptSecurityManager.NO_APP_ID,
|
||||
isInBrowserElement: true
|
||||
}
|
||||
}], createFrames);
|
||||
}
|
||||
|
||||
var gFrames = [];
|
||||
var gInputFrame;
|
||||
|
||||
function createFrames() {
|
||||
// Create two input method iframes.
|
||||
let frames = [];
|
||||
let loadendCount = 0;
|
||||
let countLoadend = function() {
|
||||
ok(this.setInputMethodActive, 'Can access setInputMethodActive.');
|
||||
|
||||
if (this === gInputFrame) {
|
||||
// The frame script running in the frame where the input is hosted.
|
||||
let appFrameScript = function appFrameScript() {
|
||||
let input = content.document.body.firstElementChild;
|
||||
input.oninput = function() {
|
||||
sendAsyncMessage('test:InputMethod:oninput', this.value);
|
||||
};
|
||||
|
||||
/*
|
||||
* Bug 957213. Sometimes we need to refocus the input field to avoid
|
||||
* intermittent test failure.
|
||||
*/
|
||||
content.setInterval(function() {
|
||||
input.focus();
|
||||
}, 500);
|
||||
}
|
||||
|
||||
// Inject frame script to receive input.
|
||||
let mm = SpecialPowers.getBrowserFrameMessageManager(gInputFrame);
|
||||
mm.loadFrameScript('data:,(' + appFrameScript.toString() + ')();', false);
|
||||
mm.addMessageListener("test:InputMethod:oninput", next);
|
||||
}
|
||||
|
||||
loadendCount++;
|
||||
if (loadendCount === 3) {
|
||||
startTest();
|
||||
}
|
||||
};
|
||||
|
||||
// Create an input field to receive string from input method iframes.
|
||||
gInputFrame = document.createElement('iframe');
|
||||
SpecialPowers.wrap(gInputFrame).mozbrowser = true;
|
||||
gInputFrame.src =
|
||||
'data:text/html,<input autofocus value="hello" />' +
|
||||
'<p>This is targetted mozbrowser frame.</p>';
|
||||
document.body.appendChild(gInputFrame);
|
||||
gInputFrame.addEventListener('mozbrowserloadend', countLoadend);
|
||||
|
||||
for (let i = 0; i < 2; i++) {
|
||||
frames[i] = document.createElement('iframe');
|
||||
SpecialPowers.wrap(frames[i]).mozbrowser = true;
|
||||
let frame = gFrames[i] = document.createElement('iframe');
|
||||
SpecialPowers.wrap(gFrames[i]).mozbrowser = true;
|
||||
// When the input method iframe is activated, it will send the URL
|
||||
// hash to current focused element. We set different hash to each
|
||||
// iframe so that iframes can be differentiated by their hash.
|
||||
frames[i].src = 'file_inputmethod.html#' + i;
|
||||
frames[i].setAttribute('mozapp', location.href.replace(/[^/]+$/, 'file_inputmethod.webapp'));
|
||||
document.body.appendChild(frames[i]);
|
||||
frame.src = 'file_inputmethod.html#' + i;
|
||||
document.body.appendChild(frame);
|
||||
frame.addEventListener('mozbrowserloadend', countLoadend);
|
||||
}
|
||||
}
|
||||
|
||||
let count = 0;
|
||||
|
||||
function startTest() {
|
||||
// Set focus to the input field and wait for input methods' inputting.
|
||||
SpecialPowers.DOMWindowUtils.focus(input);
|
||||
var timerId = null;
|
||||
input.oninput = function() {
|
||||
// The texts sent from the first and the second input method are '#0' and
|
||||
// '#1' respectively.
|
||||
switch (count) {
|
||||
case 1:
|
||||
is(input.value, '#0', 'Failed to get correct input from the first iframe.');
|
||||
testNextInputMethod();
|
||||
break;
|
||||
case 2:
|
||||
is(input.value, '#0#1', 'Failed to get correct input from the second iframe.');
|
||||
// Do nothing and wait for the next input from the second iframe.
|
||||
count++;
|
||||
break;
|
||||
case 3:
|
||||
is(input.value, '#0#1#1', 'Failed to get correct input from the second iframe.');
|
||||
// Receive the second input from the second iframe.
|
||||
count++;
|
||||
// Deactive the second iframe.
|
||||
frames[1].setInputMethodActive(false);
|
||||
// Wait for a short while to ensure the second iframe is not active any
|
||||
// more.
|
||||
timerId = setTimeout(function() {
|
||||
ok(true, 'Successfully deactivate the second iframe.');
|
||||
tearDown();
|
||||
}, 1000);
|
||||
break;
|
||||
default:
|
||||
ok(false, 'Failed to deactivate the second iframe.');
|
||||
clearTimeout(timerId);
|
||||
SpecialPowers.DOMWindowUtils.focus(gInputFrame);
|
||||
|
||||
let req0 = gFrames[0].setInputMethodActive(true);
|
||||
req0.onsuccess = function() {
|
||||
ok(true, 'setInputMethodActive succeeded (0).');
|
||||
};
|
||||
|
||||
req0.onerror = function() {
|
||||
ok(false, 'setInputMethodActive failed (0): ' + this.error.name);
|
||||
};
|
||||
}
|
||||
|
||||
var gTimerId = null;
|
||||
var gCount = 0;
|
||||
|
||||
function next(msg) {
|
||||
gCount++;
|
||||
let wrappedMsg = SpecialPowers.wrap(msg);
|
||||
let value = wrappedMsg.data;
|
||||
// The texts sent from the first and the second input method are '#0' and
|
||||
// '#1' respectively.
|
||||
switch (gCount) {
|
||||
case 1:
|
||||
is(value, '#0hello',
|
||||
'Failed to get correct input from the first iframe.');
|
||||
let req1 = gFrames[1].setInputMethodActive(true);
|
||||
req1.onsuccess = function() {
|
||||
ok(true, 'setInputMethodActive succeeded (1).');
|
||||
};
|
||||
req1.onerror = function() {
|
||||
ok(false, 'setInputMethodActive failed (1): ' + this.error.name);
|
||||
};
|
||||
break;
|
||||
|
||||
case 2:
|
||||
is(value, '#0#1hello',
|
||||
'Failed to get correct input from the second iframe.');
|
||||
// Do nothing and wait for the next input from the second iframe.
|
||||
break;
|
||||
|
||||
case 3:
|
||||
is(value, '#0#1#1hello',
|
||||
'Failed to get correct input from the second iframe.');
|
||||
// Receive the second input from the second iframe.
|
||||
// Deactive the second iframe.
|
||||
let req3 = gFrames[1].setInputMethodActive(false);
|
||||
req3.onsuccess = function() {
|
||||
ok(true, 'setInputMethodActive(false) succeeded (3).');
|
||||
};
|
||||
req3.onerror = function() {
|
||||
ok(false, 'setInputMethodActive(false) failed (3): ' + this.error.name);
|
||||
};
|
||||
|
||||
// Wait for a short while to ensure the second iframe is not active any
|
||||
// more.
|
||||
gTimerId = setTimeout(function() {
|
||||
ok(true, 'Successfully deactivate the second iframe.');
|
||||
tearDown();
|
||||
break;
|
||||
}
|
||||
}, 1000);
|
||||
break;
|
||||
|
||||
case 4:
|
||||
ok(false, 'Failed to deactivate the second iframe in time.');
|
||||
clearTimeout(gTimerId);
|
||||
tearDown();
|
||||
break;
|
||||
}
|
||||
|
||||
ok(frames[0].setInputMethodActive, 'Cannot access setInputMethodActive.');
|
||||
|
||||
function testNextInputMethod() {
|
||||
frames[count++].setInputMethodActive(true);
|
||||
}
|
||||
|
||||
// Wait for a short while to let input method get ready.
|
||||
setTimeout(function() {
|
||||
testNextInputMethod();
|
||||
}, 500);
|
||||
}
|
||||
|
||||
setup();
|
||||
|
@ -1,3 +1,4 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<body>
|
||||
<script>
|
||||
@ -8,14 +9,18 @@
|
||||
im.oninputcontextchange = function() {
|
||||
var ctx = im.inputcontext;
|
||||
if (ctx) {
|
||||
dump('inputcontext is received for input method ' + location.hash + '\n');
|
||||
intervalId = setInterval(function() {
|
||||
dump('sending text in input method ' + location.hash + '\n');
|
||||
ctx.replaceSurroundingText(location.hash);
|
||||
}, 500);
|
||||
} else {
|
||||
dump('inputcontext is removed for input method ' + location.hash + '\n');
|
||||
clearInterval(intervalId);
|
||||
}
|
||||
};
|
||||
}
|
||||
</script>
|
||||
<p>This frame representing the input method frame.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
@ -50,7 +50,9 @@ skip-if = toolkit=='gonk'
|
||||
[test_browserElement_oop_RemoveBrowserElement.html]
|
||||
[test_browserElement_oop_ScrollEvent.html]
|
||||
[test_browserElement_oop_SecurityChange.html]
|
||||
skip-if = toolkit == 'android' #TIMED_OUT, bug 766586
|
||||
[test_browserElement_oop_SendEvent.html]
|
||||
[test_browserElement_oop_SetInputMethodActive.html]
|
||||
[test_browserElement_oop_SetVisible.html]
|
||||
[test_browserElement_oop_SetVisibleFrames.html]
|
||||
[test_browserElement_oop_SetVisibleFrames2.html]
|
||||
@ -74,6 +76,3 @@ disabled = bug 924771
|
||||
disabled = bug 924771
|
||||
[test_browserElement_oop_ExposableURI.html]
|
||||
disabled = bug 924771
|
||||
# Disabled until we fix bug 906096.
|
||||
[test_browserElement_oop_SetInputMethodActive.html]
|
||||
disabled = bug 906096
|
||||
|
@ -47,6 +47,7 @@ support-files =
|
||||
browserElement_ScrollEvent.js
|
||||
browserElement_SecurityChange.js
|
||||
browserElement_SendEvent.js
|
||||
browserElement_SetInputMethodActive.js
|
||||
browserElement_SetVisible.js
|
||||
browserElement_SetVisibleFrames.js
|
||||
browserElement_SetVisibleFrames2.js
|
||||
@ -97,6 +98,7 @@ support-files =
|
||||
file_empty_script.js
|
||||
file_focus.html
|
||||
file_http_401_response.sjs
|
||||
file_inputmethod.html
|
||||
file_post_request.html
|
||||
file_wyciwyg.html
|
||||
|
||||
@ -110,9 +112,9 @@ support-files =
|
||||
skip-if = buildapp == 'b2g'
|
||||
[test_browserElement_inproc_AlertInFrame.html]
|
||||
[test_browserElement_inproc_AppFramePermission.html]
|
||||
skip-if = buildapp == 'b2g'
|
||||
skip-if = toolkit == 'android' || buildapp == 'b2g'
|
||||
[test_browserElement_inproc_AppWindowNamespace.html]
|
||||
skip-if = buildapp == 'b2g'
|
||||
skip-if = toolkit == 'android' || buildapp == 'b2g' # android(TIMED_OUT, bug 783509) androidx86(TIMED_OUT, bug 783509)
|
||||
[test_browserElement_inproc_Auth.html]
|
||||
skip-if = buildapp == 'b2g'
|
||||
[test_browserElement_inproc_BackForward.html]
|
||||
@ -122,7 +124,7 @@ skip-if = buildapp == 'b2g'
|
||||
[test_browserElement_inproc_BrowserWindowResize.html]
|
||||
[test_browserElement_inproc_Close.html]
|
||||
[test_browserElement_inproc_CloseApp.html]
|
||||
skip-if = buildapp == 'b2g'
|
||||
skip-if = toolkit == 'android' || buildapp == 'b2g' # android(FAILS, bug 796982) androidx86(FAILS, bug 796982)
|
||||
[test_browserElement_inproc_CloseFromOpener.html]
|
||||
skip-if = buildapp == 'b2g'
|
||||
[test_browserElement_inproc_ContextmenuEvents.html]
|
||||
@ -161,8 +163,11 @@ skip-if = (toolkit == 'gonk' && !debug)
|
||||
[test_browserElement_inproc_RemoveBrowserElement.html]
|
||||
[test_browserElement_inproc_ScrollEvent.html]
|
||||
[test_browserElement_inproc_SecurityChange.html]
|
||||
skip-if = (toolkit == 'gonk' && !debug)
|
||||
skip-if = toolkit == 'android' || (toolkit == 'gonk' && !debug) # android(TIMED_OUT, bug 766586) androidx86(TIMED_OUT, bug 766586)
|
||||
[test_browserElement_inproc_SendEvent.html]
|
||||
# The setInputMethodActive() tests will timed out on Android
|
||||
[test_browserElement_inproc_SetInputMethodActive.html]
|
||||
skip-if = (os == "android")
|
||||
[test_browserElement_inproc_SetVisible.html]
|
||||
[test_browserElement_inproc_SetVisibleFrames.html]
|
||||
[test_browserElement_inproc_SetVisibleFrames2.html]
|
||||
@ -178,10 +183,6 @@ skip-if = (toolkit == 'gonk' && !debug)
|
||||
[test_browserElement_inproc_XFrameOptionsDeny.html]
|
||||
[test_browserElement_inproc_XFrameOptionsSameOrigin.html]
|
||||
[test_browserElement_oop_NextPaint.html]
|
||||
# Disabled until we fix bug 906096.
|
||||
[test_browserElement_inproc_SetInputMethodActive.html]
|
||||
disabled = bug 906096
|
||||
support-files = browserElement_SetInputMethodActive.js file_inputmethod.html
|
||||
# Disabled due to https://bugzilla.mozilla.org/show_bug.cgi?id=774100
|
||||
[test_browserElement_inproc_Reload.html]
|
||||
disabled = bug 774100
|
||||
|
@ -1,4 +1,5 @@
|
||||
[DEFAULT]
|
||||
skip-if = toolkit == 'android' #bug 781789 & bug 782275
|
||||
support-files = ../test/devicestorage_common.js
|
||||
|
||||
[test_ipc.html]
|
||||
|
@ -1,4 +1,5 @@
|
||||
[DEFAULT]
|
||||
skip-if = toolkit == 'android' #bug 781789 & bug 782275
|
||||
support-files = devicestorage_common.js
|
||||
|
||||
[test_823965.html]
|
||||
|
@ -10,14 +10,6 @@ Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
const PREF_FXA_ENABLED = "identity.fxaccounts.enabled";
|
||||
let _fxa_enabled = false;
|
||||
try {
|
||||
if (Services.prefs.getPrefType(PREF_FXA_ENABLED) === Ci.nsIPrefBranch.PREF_BOOL) {
|
||||
_fxa_enabled = Services.prefs.getBoolPref(PREF_FXA_ENABLED);
|
||||
}
|
||||
} catch(noPref) {
|
||||
}
|
||||
const FXA_ENABLED = _fxa_enabled;
|
||||
|
||||
// This is the parent process corresponding to nsDOMIdentity.
|
||||
this.EXPORTED_SYMBOLS = ["DOMIdentity"];
|
||||
@ -120,14 +112,6 @@ function RPWatchContext(aOptions, aTargetMM) {
|
||||
// Maybe internal. For hosted b2g identity shim.
|
||||
this._internal = aOptions._internal;
|
||||
|
||||
// By default, set the audience of the assertion to the origin of the RP. Bug
|
||||
// 947374 will make it possible for certified apps and packaged apps on
|
||||
// FirefoxOS to request a different audience from their origin.
|
||||
//
|
||||
// For BrowserID on b2g, this audience value is consumed by a hosted identity
|
||||
// shim, set up by b2g/components/SignInToWebsite.jsm.
|
||||
this.audience = this.origin;
|
||||
|
||||
this._mm = aTargetMM;
|
||||
}
|
||||
|
||||
@ -160,7 +144,7 @@ RPWatchContext.prototype = {
|
||||
},
|
||||
|
||||
doError: function RPWatchContext_onerror(aMessage) {
|
||||
log("doError: " + this.id + ": " + aMessage);
|
||||
log("doError: " + this.id + ": " + JSON.stringify(aMessage));
|
||||
let message = new IDDOMMessage({id: this.id, message: aMessage});
|
||||
this._mm.sendAsyncMessage("Identity:RP:Watch:OnError", message);
|
||||
}
|
||||
@ -209,7 +193,8 @@ this.DOMIdentity = {
|
||||
|
||||
let context = this._serviceContexts.get(message.id);
|
||||
if (context.wantIssuer == "firefox-accounts") {
|
||||
if (FXA_ENABLED) {
|
||||
if (Services.prefs.getPrefType(PREF_FXA_ENABLED) === Ci.nsIPrefBranch.PREF_BOOL
|
||||
&& Services.prefs.getBoolPref(PREF_FXA_ENABLED)) {
|
||||
return FirefoxAccounts;
|
||||
}
|
||||
log("WARNING: Firefox Accounts is not enabled; Defaulting to BrowserID");
|
||||
|
@ -38,6 +38,14 @@ XPCOMUtils.defineLazyServiceGetter(this, "cpmm",
|
||||
"@mozilla.org/childprocessmessagemanager;1",
|
||||
"nsIMessageSender");
|
||||
|
||||
|
||||
const ERRORS = {
|
||||
"ERROR_NOT_AUTHORIZED_FOR_FIREFOX_ACCOUNTS":
|
||||
"Only privileged and certified apps may use Firefox Accounts",
|
||||
"ERROR_INVALID_ASSERTION_AUDIENCE":
|
||||
"Assertion audience may not differ from origin",
|
||||
};
|
||||
|
||||
function nsDOMIdentity(aIdentityInternal) {
|
||||
this._identityInternal = aIdentityInternal;
|
||||
}
|
||||
@ -64,12 +72,29 @@ nsDOMIdentity.prototype = {
|
||||
|
||||
// require native events unless syntheticEventsOk is set
|
||||
get nativeEventsRequired() {
|
||||
if (Services.prefs.prefHasUserValue(PREF_SYNTHETIC_EVENTS_OK)) {
|
||||
if (Services.prefs.prefHasUserValue(PREF_SYNTHETIC_EVENTS_OK) &&
|
||||
(Services.prefs.getPrefType(PREF_SYNTHETIC_EVENTS_OK) ===
|
||||
Ci.nsIPrefBranch.PREF_BOOL)) {
|
||||
return !Services.prefs.getBoolPref(PREF_SYNTHETIC_EVENTS_OK);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
|
||||
reportErrors: function(message) {
|
||||
let onerror = function() {};
|
||||
if (this._rpWatcher && this._rpWatcher.onerror) {
|
||||
onerror = this._rpWatcher.onerror;
|
||||
}
|
||||
|
||||
message.errors.forEach((error) => {
|
||||
// Report an error string to content
|
||||
Cu.reportError(ERRORS[error]);
|
||||
|
||||
// Report error code to RP callback, if available
|
||||
onerror(error);
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Relying Party (RP) APIs
|
||||
*/
|
||||
@ -106,7 +131,7 @@ nsDOMIdentity.prototype = {
|
||||
}
|
||||
|
||||
// Optional callbacks
|
||||
for (let cb of ["onready", "onlogout"]) {
|
||||
for (let cb of ["onready", "onerror", "onlogout"]) {
|
||||
if (aOptions[cb] && typeof(aOptions[cb]) != "function") {
|
||||
throw new Error(cb + " must be a function");
|
||||
}
|
||||
@ -140,10 +165,19 @@ nsDOMIdentity.prototype = {
|
||||
this._log("loggedInUser: " + message.loggedInUser);
|
||||
|
||||
this._rpWatcher = aOptions;
|
||||
this._rpWatcher.audience = message.audience;
|
||||
|
||||
if (message.errors.length) {
|
||||
this.reportErrors(message);
|
||||
// We don't delete the rpWatcher object, because we don't want the
|
||||
// broken client to be able to call watch() any more. It's broken.
|
||||
return;
|
||||
}
|
||||
this._identityInternal._mm.sendAsyncMessage("Identity:RP:Watch", message);
|
||||
},
|
||||
|
||||
request: function nsDOMIdentity_request(aOptions = {}) {
|
||||
this._log("request: " + JSON.stringify(aOptions));
|
||||
let util = this._window.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
|
||||
@ -166,6 +200,12 @@ nsDOMIdentity.prototype = {
|
||||
|
||||
let message = this.DOMIdentityMessage(aOptions);
|
||||
|
||||
// Report and fail hard on any errors.
|
||||
if (message.errors.length) {
|
||||
this.reportErrors(message);
|
||||
return;
|
||||
}
|
||||
|
||||
if (aOptions) {
|
||||
// Optional string properties
|
||||
let optionalStringProps = ["privacyPolicy", "termsOfService"];
|
||||
@ -204,6 +244,13 @@ nsDOMIdentity.prototype = {
|
||||
|
||||
this._rpCalls++;
|
||||
let message = this.DOMIdentityMessage();
|
||||
|
||||
// Report and fail hard on any errors.
|
||||
if (message.errors.length) {
|
||||
this.reportErrors(message);
|
||||
return;
|
||||
}
|
||||
|
||||
this._identityInternal._mm.sendAsyncMessage("Identity:RP:Logout", message);
|
||||
},
|
||||
|
||||
@ -394,6 +441,7 @@ nsDOMIdentity.prototype = {
|
||||
this._window = aWindow;
|
||||
this._origin = aWindow.document.nodePrincipal.origin;
|
||||
this._appStatus = aWindow.document.nodePrincipal.appStatus;
|
||||
this._appId = aWindow.document.nodePrincipal.appId;
|
||||
|
||||
// Setup identifiers for current window.
|
||||
let util = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
@ -547,11 +595,15 @@ nsDOMIdentity.prototype = {
|
||||
/**
|
||||
* Helper to create messages to send using a message manager.
|
||||
* Pass through user options if they are not functions. Always
|
||||
* overwrite id and origin. Caller does not get to set those.
|
||||
* overwrite id, origin, audience, and appStatus. The caller
|
||||
* does not get to set those.
|
||||
*/
|
||||
DOMIdentityMessage: function DOMIdentityMessage(aOptions) {
|
||||
aOptions = aOptions || {};
|
||||
let message = {};
|
||||
let message = {
|
||||
errors: []
|
||||
};
|
||||
let principal = Ci.nsIPrincipal;
|
||||
|
||||
objectCopy(aOptions, message);
|
||||
|
||||
@ -566,6 +618,38 @@ nsDOMIdentity.prototype = {
|
||||
// Ci.nsIPrincipal.APP_STATUS_*.
|
||||
message.appStatus = this._appStatus;
|
||||
|
||||
// Currently, we only permit certified and privileged apps to use
|
||||
// Firefox Accounts.
|
||||
if (this._appStatus !== principal.APP_STATUS_PRIVILEGED &&
|
||||
this._appStatus !== principal.APP_STATUS_CERTIFIED) {
|
||||
message.errors.push("ERROR_NOT_AUTHORIZED_FOR_FIREFOX_ACCOUNTS");
|
||||
}
|
||||
|
||||
// Normally the window origin will be the audience in assertions. On b2g,
|
||||
// certified apps have the power to override this and declare any audience
|
||||
// the want. Privileged apps can also declare a different audience, as
|
||||
// long as it is the same as the origin specified in their manifest files.
|
||||
// All other apps are stuck with b2g origins of the form app://{guid}.
|
||||
// Since such an origin is meaningless for the purposes of verification,
|
||||
// they will have to jump through some hoops to sign in: Specifically, they
|
||||
// will have to host their sign-in flows and DOM API requests in an iframe,
|
||||
// have the iframe xhr post assertions up to their server for verification,
|
||||
// and then post-message the results down to their app.
|
||||
let _audience = message.origin;
|
||||
if (message.audience && message.audience != message.origin) {
|
||||
if (this._appStatus === principal.APP_STATUS_CERTIFIED) {
|
||||
_audience = message.audience;
|
||||
this._log("Certified app setting assertion audience: " + _audience);
|
||||
} else {
|
||||
message.errors.push("ERROR_INVALID_ASSERTION_AUDIENCE");
|
||||
}
|
||||
}
|
||||
|
||||
// Replace any audience supplied by the RP with one that has been sanitised
|
||||
message.audience = _audience;
|
||||
|
||||
this._log("Generated message: " + JSON.stringify(message));
|
||||
|
||||
return message;
|
||||
},
|
||||
|
||||
|
6
dom/identity/tests/mochitest/chrome.ini
Normal file
6
dom/identity/tests/mochitest/chrome.ini
Normal file
@ -0,0 +1,6 @@
|
||||
[DEFAULT]
|
||||
|
||||
support-files=
|
||||
file_declareAudience.html
|
||||
|
||||
[test_declareAudience.html]
|
51
dom/identity/tests/mochitest/file_declareAudience.html
Normal file
51
dom/identity/tests/mochitest/file_declareAudience.html
Normal file
@ -0,0 +1,51 @@
|
||||
<!--
|
||||
* 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/. */
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<!--
|
||||
Certified and packaged apps should be able to declare assertion audience.
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=947374
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Test app for bug 947374</title>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id='test'>
|
||||
<script type="application/javascript;version=1.8">
|
||||
|
||||
function postResults(message) {
|
||||
window.realParent.postMessage(JSON.stringify(message), "*");
|
||||
}
|
||||
|
||||
function onready() {
|
||||
navigator.mozId.request();
|
||||
}
|
||||
|
||||
function onlogin(backedAssertion) {
|
||||
postResults({success: true, backedAssertion: backedAssertion});
|
||||
}
|
||||
|
||||
function onerror(error) {
|
||||
postResults({success: false, error: error});
|
||||
}
|
||||
|
||||
onmessage = function(event) {
|
||||
navigator.mozId.watch({
|
||||
wantIssuer: "firefox-accounts",
|
||||
audience: event.data.audience,
|
||||
onready: onready,
|
||||
onlogin: onlogin,
|
||||
onerror: onerror,
|
||||
onlogout: function() {},
|
||||
});
|
||||
};
|
||||
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
270
dom/identity/tests/mochitest/test_declareAudience.html
Normal file
270
dom/identity/tests/mochitest/test_declareAudience.html
Normal file
@ -0,0 +1,270 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
<!--
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=947374
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Certified apps can changed the default audience of an assertion -- Bug 947374</title>
|
||||
<script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
|
||||
</head>
|
||||
<body>
|
||||
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=947374">Mozilla Bug 947374</a>
|
||||
<p id="display"></p>
|
||||
<div id="content">
|
||||
|
||||
</div>
|
||||
<pre id="test">
|
||||
<script type="application/javascript;version=1.8">
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
Components.utils.import("resource://gre/modules/Promise.jsm");
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
Components.utils.import("resource://gre/modules/identity/jwcrypto.jsm");
|
||||
Components.utils.import("resource://gre/modules/identity/FirefoxAccounts.jsm");
|
||||
|
||||
// quick check to make sure we can test apps:
|
||||
is("appStatus" in document.nodePrincipal, true,
|
||||
"appStatus should be present in nsIPrincipal, if not the rest of this test will fail");
|
||||
|
||||
// Mock the Firefox Accounts manager to generate a keypair and provide a fake
|
||||
// cert for the caller on each getAssertion request.
|
||||
function MockFXAManager() {}
|
||||
|
||||
MockFXAManager.prototype = {
|
||||
getAssertion: function(audience) {
|
||||
let deferred = Promise.defer();
|
||||
jwcrypto.generateKeyPair("DS160", (err, kp) => {
|
||||
if (err) {
|
||||
return deferred.reject(err);
|
||||
}
|
||||
jwcrypto.generateAssertion("fake-cert", kp, audience, (err, assertion) => {
|
||||
if (err) {
|
||||
return deferred.reject(err);
|
||||
}
|
||||
return deferred.resolve(assertion);
|
||||
});
|
||||
});
|
||||
return deferred.promise;
|
||||
}
|
||||
};
|
||||
|
||||
let originalManager = FirefoxAccounts.fxAccountsManager;
|
||||
FirefoxAccounts.fxAccountsManager = new MockFXAManager();
|
||||
|
||||
// The manifests for these apps are all declared in
|
||||
// /testing/profiles/webapps_mochitest.json. They are injected into the profile
|
||||
// by /testing/mochitest/runtests.py with the appropriate appStatus. So we don't
|
||||
// have to manually install any apps.
|
||||
//
|
||||
// For each app, we will use the file_declareAudience.html content to populate an
|
||||
// iframe. The iframe will request() a firefox accounts assertion. It will then
|
||||
// postMessage the results of this experiment back down to us, and we will
|
||||
// compare it with the expected results.
|
||||
let apps = [
|
||||
{
|
||||
title: "an installed app, which should neither be able to use FxA, nor change audience",
|
||||
manifest: "https://example.com/manifest.webapp",
|
||||
appStatus: Components.interfaces.nsIPrincipal.APP_STATUS_INSTALLED,
|
||||
origin: "https://example.com",
|
||||
wantAudience: "https://i-cant-have-this.com",
|
||||
uri: "https://example.com/chrome/dom/identity/tests/mochitest/file_declareAudience.html",
|
||||
expected: {
|
||||
success: false,
|
||||
underprivileged: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "an app's assertion audience should be its origin by default",
|
||||
manifest: "https://example.com/manifest_priv.webapp",
|
||||
appStatus: Components.interfaces.nsIPrincipal.APP_STATUS_PRIVILEGED,
|
||||
origin: "https://example.com",
|
||||
uri: "https://example.com/chrome/dom/identity/tests/mochitest/file_declareAudience.html",
|
||||
expected: {
|
||||
success: true,
|
||||
underprivileged: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "a privileged app, which may not have an audience other than its origin",
|
||||
manifest: "https://example.com/manifest_priv.webapp",
|
||||
appStatus: Components.interfaces.nsIPrincipal.APP_STATUS_PRIVILEGED,
|
||||
origin: "https://example.com",
|
||||
wantAudience: "https://i-like-pie.com",
|
||||
uri: "https://example.com/chrome/dom/identity/tests/mochitest/file_declareAudience.html",
|
||||
expected: {
|
||||
success: false,
|
||||
underprivileged: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "a privileged app, which may declare an audience the same as its origin",
|
||||
manifest: "https://example.com/manifest_priv.webapp",
|
||||
appStatus: Components.interfaces.nsIPrincipal.APP_STATUS_PRIVILEGED,
|
||||
origin: "https://example.com",
|
||||
wantAudience: "https://example.com",
|
||||
uri: "https://example.com/chrome/dom/identity/tests/mochitest/file_declareAudience.html",
|
||||
expected: {
|
||||
success: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "a certified app, which may do whatever it damn well pleases",
|
||||
manifest: "https://example.com/manifest_cert.webapp",
|
||||
appStatus: Components.interfaces.nsIPrincipal.APP_STATUS_CERTIFIED,
|
||||
origin: "https://example.com",
|
||||
wantAudience: "https://whatever-i-want.com",
|
||||
uri: "https://example.com/chrome/dom/identity/tests/mochitest/file_declareAudience.html",
|
||||
expected: {
|
||||
success: true,
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
let appIndex = 0;
|
||||
let expectedErrors = 0;
|
||||
let receivedErrors = [];
|
||||
let testRunner = runTest();
|
||||
|
||||
// Successful tests will send exactly one message. But for error tests, we may
|
||||
// have more than one message from the onerror handler in the client. So we keep
|
||||
// track of received errors; once they reach the expected count, we are done.
|
||||
function receiveMessage(event) {
|
||||
let result = JSON.parse(event.data);
|
||||
let app = apps[appIndex];
|
||||
let expected = app.expected;
|
||||
|
||||
is(result.success, expected.success,
|
||||
"Assertion request " + (expected.success ? "succeeds" : "fails"));
|
||||
|
||||
if (expected.success) {
|
||||
// Confirm that the assertion audience and origin are as expected
|
||||
let components = extractAssertionComponents(result.backedAssertion);
|
||||
is(components.payload.aud, app.wantAudience || app.origin,
|
||||
"Got desired assertion audience");
|
||||
|
||||
} else {
|
||||
receivedErrors.push(result.error);
|
||||
}
|
||||
|
||||
if (receivedErrors.length === expectedErrors) {
|
||||
|
||||
if (expected.underprivileged) {
|
||||
ok(receivedErrors.indexOf("ERROR_NOT_AUTHORIZED_FOR_FIREFOX_ACCOUNTS") > -1,
|
||||
"Expect a complaint that this app cannot use FxA.");
|
||||
}
|
||||
if (!expected.success) {
|
||||
ok(receivedErrors.indexOf("ERROR_INVALID_ASSERTION_AUDIENCE") > -1,
|
||||
"Expect an error getting an assertion");
|
||||
}
|
||||
|
||||
appIndex += 1;
|
||||
|
||||
if (appIndex === apps.length) {
|
||||
window.removeEventListener("message", receiveMessage);
|
||||
|
||||
FirefoxAccounts.fxAccountsManager = originalManager;
|
||||
|
||||
SimpleTest.finish();
|
||||
return;
|
||||
}
|
||||
|
||||
testRunner.next();
|
||||
}
|
||||
}
|
||||
|
||||
window.addEventListener("message", receiveMessage, false, true);
|
||||
|
||||
function runTest() {
|
||||
for (let app of apps) {
|
||||
dump("** Testing " + app.title + "\n");
|
||||
|
||||
// Set up state for message handler
|
||||
expectedErrors = 0;
|
||||
receivedErrors = [];
|
||||
if (!app.expected.success) {
|
||||
expectedErrors += 1;
|
||||
}
|
||||
if (app.expected.underprivileged) {
|
||||
expectedErrors += 1;
|
||||
}
|
||||
|
||||
let iframe = document.createElement("iframe");
|
||||
|
||||
iframe.setAttribute("mozapp", app.manifest);
|
||||
iframe.setAttribute("mozbrowser", "true");
|
||||
iframe.src = app.uri;
|
||||
|
||||
document.getElementById("content").appendChild(iframe);
|
||||
|
||||
iframe.addEventListener("load", function onLoad() {
|
||||
iframe.removeEventListener("load", onLoad);
|
||||
|
||||
let principal = iframe.contentDocument.nodePrincipal;
|
||||
is(principal.appStatus, app.appStatus,
|
||||
"Iframe's document.nodePrincipal has expected appStatus");
|
||||
|
||||
// Because the <iframe mozapp> can't parent its way back to us, we
|
||||
// provide this handle to our window so it can postMessage to us.
|
||||
iframe.contentWindow.wrappedJSObject.realParent = window;
|
||||
|
||||
// Test what we want to test, viz. whether or not the app can request
|
||||
// an assertion with an audience the same as or different from its
|
||||
// origin. The client will post back its success or failure in procuring
|
||||
// an identity assertion from Firefox Accounts.
|
||||
iframe.contentWindow.postMessage({audience: app.wantAudience}, "*");
|
||||
}, false);
|
||||
|
||||
yield undefined;
|
||||
}
|
||||
}
|
||||
|
||||
function extractAssertionComponents(backedAssertion) {
|
||||
let [_, signedObject] = backedAssertion.split("~");
|
||||
let parts = signedObject.split(".");
|
||||
|
||||
let headerSegment = parts[0];
|
||||
let payloadSegment = parts[1];
|
||||
let cryptoSegment = parts[2];
|
||||
|
||||
let header = JSON.parse(base64UrlDecode(headerSegment));
|
||||
let payload = JSON.parse(base64UrlDecode(payloadSegment));
|
||||
|
||||
return {header: header,
|
||||
payload: payload,
|
||||
headerSegment: headerSegment,
|
||||
payloadSegment: payloadSegment,
|
||||
cryptoSegment: cryptoSegment};
|
||||
};
|
||||
|
||||
function base64UrlDecode(s) {
|
||||
s = s.replace(/-/g, "+");
|
||||
s = s.replace(/_/g, "/");
|
||||
// Don't need to worry about reintroducing padding ('=='), since
|
||||
// jwcrypto provides that.
|
||||
return atob(s);
|
||||
}
|
||||
|
||||
SpecialPowers.pushPrefEnv({"set":
|
||||
[
|
||||
["dom.mozBrowserFramesEnabled", true],
|
||||
["dom.identity.enabled", true],
|
||||
["identity.fxaccounts.enabled", true],
|
||||
["toolkit.identity.debug", true],
|
||||
["dom.identity.syntheticEventsOk", true],
|
||||
|
||||
["security.apps.privileged.CSP.default", ""],
|
||||
["security.apps.certified.CSP.default", ""],
|
||||
]},
|
||||
function() {
|
||||
testRunner.next();
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
@ -4,3 +4,5 @@
|
||||
# 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/.
|
||||
|
||||
MOCHITEST_CHROME_MANIFESTS += ['mochitest/chrome.ini']
|
||||
|
||||
|
@ -10,8 +10,10 @@ support-files =
|
||||
|
||||
[conformancetest/test_event.html]
|
||||
[conformancetest/test_runtest.html]
|
||||
skip-if = toolkit == 'android'
|
||||
[selecttest/test_Document-open.html]
|
||||
[selecttest/test_addRange.html]
|
||||
skip-if = toolkit == 'android' #bug 775227
|
||||
[selecttest/test_collapse.html]
|
||||
[selecttest/test_collapseToStartEnd.html]
|
||||
[selecttest/test_deleteFromDocument.html]
|
||||
|
@ -271,8 +271,14 @@ skip-if = true # bug 859075
|
||||
[microdata/microdata-dom-api/test_001.html]
|
||||
[typedarrays/test_constructors.html]
|
||||
[webgl/test_bufferSubData.html]
|
||||
skip-if = toolkit == 'android' #WebGL
|
||||
[webgl/test_compressedTexImage2D.html]
|
||||
skip-if = toolkit == 'android' #WebGL
|
||||
[webgl/test_compressedTexSubImage2D.html]
|
||||
skip-if = toolkit == 'android' #WebGL
|
||||
[webgl/test_texImage2D.html]
|
||||
skip-if = toolkit == 'android' #WebGL
|
||||
[webgl/test_texSubImage2D.html]
|
||||
skip-if = toolkit == 'android' #WebGL
|
||||
[webgl/test_uniformMatrixNfv.html]
|
||||
skip-if = toolkit == 'android' #WebGL
|
||||
|
@ -27,6 +27,7 @@ support-files =
|
||||
[WebStorage/tests/submissions/Infraware/test_storage_local_clear.html]
|
||||
[WebStorage/tests/submissions/Infraware/test_storage_local_getitem.html]
|
||||
[WebStorage/tests/submissions/Infraware/test_storage_local_key.html]
|
||||
skip-if = toolkit == 'android' #bug 775227
|
||||
[WebStorage/tests/submissions/Infraware/test_storage_local_length.html]
|
||||
[WebStorage/tests/submissions/Infraware/test_storage_local_removeitem.html]
|
||||
[WebStorage/tests/submissions/Infraware/test_storage_local_security.html]
|
||||
|
@ -1,4 +1,5 @@
|
||||
[DEFAULT]
|
||||
skip-if = toolkit == 'android' #Not supported on Android
|
||||
support-files =
|
||||
inputmethod_common.js
|
||||
file_inputmethod.html
|
||||
|
@ -672,7 +672,8 @@ CairoImage::GetTextureClient(CompositableClient *aClient)
|
||||
MOZ_ASSERT(surface);
|
||||
|
||||
textureClient = aClient->CreateTextureClientForDrawing(surface->GetFormat(),
|
||||
TEXTURE_FLAGS_DEFAULT);
|
||||
TEXTURE_FLAGS_DEFAULT,
|
||||
surface->GetSize());
|
||||
MOZ_ASSERT(textureClient->AsTextureClientDrawTarget());
|
||||
if (!textureClient->AsTextureClientDrawTarget()->AllocateForSurface(surface->GetSize()) ||
|
||||
!textureClient->Lock(OPEN_WRITE_ONLY)) {
|
||||
|
@ -177,10 +177,12 @@ CompositableClient::CreateBufferTextureClient(SurfaceFormat aFormat,
|
||||
|
||||
TemporaryRef<TextureClient>
|
||||
CompositableClient::CreateTextureClientForDrawing(SurfaceFormat aFormat,
|
||||
TextureFlags aTextureFlags)
|
||||
TextureFlags aTextureFlags,
|
||||
const IntSize& aSizeHint)
|
||||
{
|
||||
return TextureClient::CreateTextureClientForDrawing(GetForwarder(), aFormat,
|
||||
aTextureFlags | mTextureFlags);
|
||||
aTextureFlags | mTextureFlags,
|
||||
aSizeHint);
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -93,7 +93,8 @@ public:
|
||||
// always be non-null.
|
||||
TemporaryRef<TextureClient>
|
||||
CreateTextureClientForDrawing(gfx::SurfaceFormat aFormat,
|
||||
TextureFlags aTextureFlags);
|
||||
TextureFlags aTextureFlags,
|
||||
const gfx::IntSize& aSizeHint);
|
||||
|
||||
virtual void SetDescriptorFromReply(TextureIdentifier aTextureId,
|
||||
const SurfaceDescriptor& aDescriptor)
|
||||
|
@ -169,14 +169,16 @@ ContentClientRemoteBuffer::CreateAndAllocateTextureClient(RefPtr<TextureClient>&
|
||||
TextureFlags aFlags)
|
||||
{
|
||||
aClient = CreateTextureClientForDrawing(mSurfaceFormat,
|
||||
mTextureInfo.mTextureFlags | aFlags);
|
||||
mTextureInfo.mTextureFlags | aFlags,
|
||||
mSize);
|
||||
if (!aClient) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!aClient->AsTextureClientDrawTarget()->AllocateForSurface(mSize, ALLOC_CLEAR_BUFFER)) {
|
||||
aClient = CreateTextureClientForDrawing(mSurfaceFormat,
|
||||
mTextureInfo.mTextureFlags | TEXTURE_ALLOC_FALLBACK | aFlags);
|
||||
mTextureInfo.mTextureFlags | TEXTURE_ALLOC_FALLBACK | aFlags,
|
||||
mSize);
|
||||
if (!aClient) {
|
||||
return false;
|
||||
}
|
||||
|
@ -240,7 +240,7 @@ ImageClientSingle::UpdateImageInternal(ImageContainer* aContainer,
|
||||
gfxImageFormat format
|
||||
= gfxPlatform::GetPlatform()->OptimalFormatForContent(gfx::ContentForFormat(surface->GetFormat()));
|
||||
mFrontBuffer = CreateTextureClientForDrawing(gfx::ImageFormatToSurfaceFormat(format),
|
||||
mTextureFlags);
|
||||
mTextureFlags, size);
|
||||
MOZ_ASSERT(mFrontBuffer->AsTextureClientDrawTarget());
|
||||
if (!mFrontBuffer->AsTextureClientDrawTarget()->AllocateForSurface(size)) {
|
||||
mFrontBuffer = nullptr;
|
||||
|
@ -72,7 +72,7 @@ SimpleTextureClientPool::GetTextureClient(bool aAutoRecycle)
|
||||
if (gfxPrefs::ForceShmemTiles()) {
|
||||
textureClient = TextureClient::CreateBufferTextureClient(mSurfaceAllocator, mFormat, TEXTURE_IMMEDIATE_UPLOAD | TEXTURE_RECYCLE);
|
||||
} else {
|
||||
textureClient = TextureClient::CreateTextureClientForDrawing(mSurfaceAllocator, mFormat, TEXTURE_FLAGS_DEFAULT | TEXTURE_RECYCLE);
|
||||
textureClient = TextureClient::CreateTextureClientForDrawing(mSurfaceAllocator, mFormat, TEXTURE_FLAGS_DEFAULT | TEXTURE_RECYCLE, mSize);
|
||||
}
|
||||
if (!textureClient->AsTextureClientDrawTarget()->AllocateForSurface(mSize, ALLOC_DEFAULT)) {
|
||||
NS_WARNING("TextureClient::AllocateForSurface failed!");
|
||||
|
@ -278,7 +278,8 @@ DisableGralloc(SurfaceFormat aFormat)
|
||||
TemporaryRef<TextureClient>
|
||||
TextureClient::CreateTextureClientForDrawing(ISurfaceAllocator* aAllocator,
|
||||
SurfaceFormat aFormat,
|
||||
TextureFlags aTextureFlags)
|
||||
TextureFlags aTextureFlags,
|
||||
const gfx::IntSize& aSizeHint)
|
||||
{
|
||||
RefPtr<TextureClient> result;
|
||||
|
||||
@ -327,7 +328,12 @@ TextureClient::CreateTextureClientForDrawing(ISurfaceAllocator* aAllocator,
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
if (!DisableGralloc(aFormat)) {
|
||||
result = new GrallocTextureClientOGL(aAllocator, aFormat, aTextureFlags);
|
||||
// Don't allow Gralloc texture clients to exceed the maximum texture size.
|
||||
// BufferTextureClients have code to handle tiling the surface client-side.
|
||||
int32_t maxTextureSize = aAllocator->GetMaxTextureSize();
|
||||
if (aSizeHint.width <= maxTextureSize && aSizeHint.height <= maxTextureSize) {
|
||||
result = new GrallocTextureClientOGL(aAllocator, aFormat, aTextureFlags);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -207,7 +207,8 @@ public:
|
||||
static TemporaryRef<TextureClient>
|
||||
CreateTextureClientForDrawing(ISurfaceAllocator* aAllocator,
|
||||
gfx::SurfaceFormat aFormat,
|
||||
TextureFlags aTextureFlags);
|
||||
TextureFlags aTextureFlags,
|
||||
const gfx::IntSize& aSizeHint);
|
||||
|
||||
virtual TextureClientSurface* AsTextureClientSurface() { return nullptr; }
|
||||
virtual TextureClientDrawTarget* AsTextureClientDrawTarget() { return nullptr; }
|
||||
|
@ -51,7 +51,7 @@ TextureClientPool::GetTextureClient()
|
||||
if (gfxPrefs::ForceShmemTiles()) {
|
||||
textureClient = TextureClient::CreateBufferTextureClient(mSurfaceAllocator, mFormat, TEXTURE_IMMEDIATE_UPLOAD);
|
||||
} else {
|
||||
textureClient = TextureClient::CreateTextureClientForDrawing(mSurfaceAllocator, mFormat, TEXTURE_IMMEDIATE_UPLOAD);
|
||||
textureClient = TextureClient::CreateTextureClientForDrawing(mSurfaceAllocator, mFormat, TEXTURE_IMMEDIATE_UPLOAD, mSize);
|
||||
}
|
||||
textureClient->AsTextureClientDrawTarget()->AllocateForSurface(mSize, ALLOC_DEFAULT);
|
||||
|
||||
|
@ -213,10 +213,10 @@ public:
|
||||
|
||||
void IdentifyTextureHost(const TextureFactoryIdentifier& aIdentifier);
|
||||
|
||||
/**
|
||||
* Returns the maximum texture size supported by the compositor.
|
||||
*/
|
||||
virtual int32_t GetMaxTextureSize() const { return mTextureFactoryIdentifier.mMaxTextureSize; }
|
||||
virtual int32_t GetMaxTextureSize() const MOZ_OVERRIDE
|
||||
{
|
||||
return mTextureFactoryIdentifier.mMaxTextureSize;
|
||||
}
|
||||
|
||||
bool IsOnCompositorSide() const MOZ_OVERRIDE { return false; }
|
||||
|
||||
|
@ -125,6 +125,11 @@ public:
|
||||
uint32_t aCaps,
|
||||
SurfaceDescriptor* aBuffer);
|
||||
|
||||
/**
|
||||
* Returns the maximum texture size supported by the compositor.
|
||||
*/
|
||||
virtual int32_t GetMaxTextureSize() const { return INT32_MAX; }
|
||||
|
||||
virtual void DestroySharedSurface(SurfaceDescriptor* aSurface);
|
||||
|
||||
// method that does the actual allocation work
|
||||
|
@ -926,19 +926,16 @@ js_fun_call(JSContext *cx, unsigned argc, Value *vp)
|
||||
return false;
|
||||
}
|
||||
|
||||
InvokeArgs args2(cx);
|
||||
if (!args2.init(args.length() ? args.length() - 1 : 0))
|
||||
return false;
|
||||
args.setCallee(fval);
|
||||
args.setThis(args.get(0));
|
||||
|
||||
args2.setCallee(fval);
|
||||
args2.setThis(args.get(0));
|
||||
PodCopy(args2.array(), args.array() + 1, args2.length());
|
||||
if (args.length() > 0) {
|
||||
for (size_t i = 0; i < args.length() - 1; i++)
|
||||
args[i].set(args[i + 1]);
|
||||
args = CallArgsFromVp(args.length() - 1, vp);
|
||||
}
|
||||
|
||||
if (!Invoke(cx, args2))
|
||||
return false;
|
||||
|
||||
args.rval().set(args2.rval());
|
||||
return true;
|
||||
return Invoke(cx, args);
|
||||
}
|
||||
|
||||
// ES5 15.3.4.3
|
||||
|
@ -1,4 +1,5 @@
|
||||
[DEFAULT]
|
||||
skip-if = toolkit == 'android' #CRASH_DUMP, RANDOM, ONLY IN CHUNK 10
|
||||
support-files =
|
||||
../../reftests/backgrounds/blue-32x32.png
|
||||
../../reftests/backgrounds/fuchsia-32x32.png
|
||||
|
@ -1,6 +1,5 @@
|
||||
# Please keep this list sorted by bug number (but feel free to use a
|
||||
# logical order for the tests for each bug).
|
||||
|
||||
== 105-1.html 105-1-ref.html
|
||||
== 647-1.html 647-1-ref.html
|
||||
== 9458-basic-1.html 9458-basic-1-ref.html
|
||||
@ -166,20 +165,20 @@ skip-if(B2G) == 192767-24.xul 192767-34.xul
|
||||
skip-if(B2G) == 192767-25.xul 192767-35.xul
|
||||
skip-if(B2G) == 192767-26.xul 192767-36.xul
|
||||
skip-if(B2G) == 192767-27.xul 192767-37.xul
|
||||
!= 192767-01.xul 192767-21.xul
|
||||
!= 192767-02.xul 192767-22.xul
|
||||
skip-if(B2G) fails-if(Android) != 192767-03.xul 192767-23.xul
|
||||
!= 192767-04.xul 192767-24.xul
|
||||
!= 192767-05.xul 192767-25.xul
|
||||
skip-if(B2G) fails-if(Android) != 192767-06.xul 192767-26.xul
|
||||
skip-if(B2G) fails-if(Android) != 192767-07.xul 192767-27.xul
|
||||
!= 192767-11.xul 192767-31.xul
|
||||
!= 192767-12.xul 192767-32.xul
|
||||
skip-if(B2G) fails-if(Android) != 192767-13.xul 192767-33.xul
|
||||
!= 192767-14.xul 192767-34.xul
|
||||
!= 192767-15.xul 192767-35.xul
|
||||
skip-if(B2G) fails-if(Android) != 192767-16.xul 192767-36.xul
|
||||
skip-if(B2G) fails-if(Android) != 192767-17.xul 192767-37.xul
|
||||
skip-if(B2G&&browserIsRemote) != 192767-01.xul 192767-21.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) != 192767-02.xul 192767-22.xul # bug 974780
|
||||
fails-if(Android) skip-if(B2G) != 192767-03.xul 192767-23.xul
|
||||
skip-if(B2G&&browserIsRemote) != 192767-04.xul 192767-24.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) != 192767-05.xul 192767-25.xul # bug 974780
|
||||
fails-if(Android) skip-if(B2G) != 192767-06.xul 192767-26.xul
|
||||
fails-if(Android) skip-if(B2G) != 192767-07.xul 192767-27.xul
|
||||
skip-if(B2G&&browserIsRemote) != 192767-11.xul 192767-31.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) != 192767-12.xul 192767-32.xul # bug 974780
|
||||
fails-if(Android) skip-if(B2G) != 192767-13.xul 192767-33.xul
|
||||
skip-if(B2G&&browserIsRemote) != 192767-14.xul 192767-34.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) != 192767-15.xul 192767-35.xul # bug 974780
|
||||
fails-if(Android) skip-if(B2G) != 192767-16.xul 192767-36.xul
|
||||
fails-if(Android) skip-if(B2G) != 192767-17.xul 192767-37.xul
|
||||
!= 200774-1.html about:blank
|
||||
== 201215-1.html 201215-1-ref.html
|
||||
== 201293-1a.html 201293-1-ref.html
|
||||
@ -201,14 +200,14 @@ skip-if(B2G) fails-if(Android) != 192767-17.xul 192767-37.xul
|
||||
== 214077-1a.html 214077-1-ref.html
|
||||
== 214077-1b.html 214077-1-ref.html
|
||||
== 218473-1.html 218473-1-ref.html
|
||||
== 220165-1.svg 220165-1-ref.svg
|
||||
skip-if(B2G&&browserIsRemote) == 220165-1.svg 220165-1-ref.svg # bug 974780
|
||||
== 223809-1.html 223809-1-ref.html
|
||||
== 228856-1.html 228856-1-ref.html
|
||||
== 228856-2.html 228856-2-ref.html
|
||||
== 229591-1.html 229591-1-ref.html
|
||||
# == 231823-1.html 231823-1-ref.html
|
||||
== 232990-1a.xhtml 232990-1-ref.xhtml
|
||||
== 232990-1b.xhtml 232990-1-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == 232990-1b.xhtml 232990-1-ref.xhtml
|
||||
== 233094-1.html 233094-1-ref.html
|
||||
== 233094-2a.html 233094-2-ref.html
|
||||
== 233094-2b.html 233094-2-ref.html
|
||||
@ -274,7 +273,7 @@ skip-if(B2G) == 249141.xul 249141-ref.xul
|
||||
== 253701-1.html 253701-1-ref.html
|
||||
== 255820-1.html 255820-1-ref.html
|
||||
== 260406-1.html 260406-1-ref.html
|
||||
== 261826-1.xul 261826-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 261826-1.xul 261826-1-ref.xul # bug 974780
|
||||
== 262151-1.html 262151-1-ref.html
|
||||
== 262998-1.html 262998-1-ref.html
|
||||
== 267353-1.html 267353-1-ref.html
|
||||
@ -285,10 +284,10 @@ skip-if(B2G) == 249141.xul 249141-ref.xul
|
||||
== 269908-5.html 269908-5-ref.html
|
||||
== 271747-1a.html 271747-1-ref.html
|
||||
== 271747-1b.html 271747-1-ref.html
|
||||
== 272646-1.xul 272646-1-ref.xul
|
||||
== 272646-2a.xul 272646-2-ref.xul
|
||||
== 272646-2b.xul 272646-2-ref.xul
|
||||
== 272646-2c.xul 272646-2-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 272646-1.xul 272646-1-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 272646-2a.xul 272646-2-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 272646-2b.xul 272646-2-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 272646-2c.xul 272646-2-ref.xul # bug 974780
|
||||
skip-if(B2G) == 273681-1.html 273681-1-ref.html
|
||||
== 278266-1a.html 278266-1-ref.html
|
||||
== 278266-1b.html 278266-1-ref.html
|
||||
@ -300,7 +299,7 @@ skip-if(B2G) == 273681-1.html 273681-1-ref.html
|
||||
== 283686-2.html 283686-2-ref.html
|
||||
== 283686-3.html about:blank
|
||||
== 289384-1.xhtml 289384-ref.xhtml
|
||||
random-if(d2d) fuzzy-if(Android&&AndroidVersion>=15,8,1439) HTTP == 289480.html#top 289480-ref.html # basically-verbatim acid2 test, HTTP for a 404 page -- bug 578114 for the d2d failures
|
||||
random-if(d2d) fuzzy-if(Android&&AndroidVersion>=15,8,1439) skip-if(B2G&&browserIsRemote) HTTP == 289480.html#top 289480-ref.html # basically-verbatim acid2 test, HTTP for a 404 page -- bug 578114 for the d2d failures
|
||||
== 290129-1.html 290129-1-ref.html
|
||||
skip-if(B2G) == 291078-1.html 291078-1-ref.html
|
||||
== 291078-2.html 291078-2-ref.html
|
||||
@ -311,8 +310,8 @@ skip-if(B2G) == 291078-1.html 291078-1-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
|
||||
== 299837-2.xul 299837-2-ref.xul
|
||||
random-if(d2d) == 299837-3.xul 299837-3-ref.xul # bug 587631
|
||||
skip-if(B2G&&browserIsRemote) == 299837-2.xul 299837-2-ref.xul # bug 974780
|
||||
random-if(d2d) skip-if(B2G&&browserIsRemote) == 299837-3.xul 299837-3-ref.xul # bug 587631, 974780
|
||||
== 300691-1a.html 300691-1-ref.html
|
||||
== 300691-1b.html 300691-1-ref.html
|
||||
== 300691-1c.html 300691-1-ref.html
|
||||
@ -334,7 +333,7 @@ skip-if(B2G) == 307076-1.html 307076-1-ref.html
|
||||
== 308406-1.html 308406-1-ref.html
|
||||
== 308406-2.html 308406-2-ref.html
|
||||
== 309550-1.html 309550-1-ref.html
|
||||
== 309914-1.xul 309914-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 309914-1.xul 309914-1-ref.xul # bug 974780
|
||||
== 311366-unknown-inline-1.html 311366-unknown-inline-1-ref.html
|
||||
== 311366-unknown-block-1.html 311366-unknown-block-1-ref.html
|
||||
== 311366-unknown-block-3.html 311366-unknown-block-3-ref.html
|
||||
@ -407,10 +406,10 @@ skip-if(B2G) == 307076-1.html 307076-1-ref.html
|
||||
== 320979-1.html 320979-1-ref.html
|
||||
!= 321402-1.html about:blank
|
||||
!= 321402-2.html about:blank
|
||||
== 321402-3.xul 321402-3-ref.xul
|
||||
== 321402-4.xul 321402-4-ref.xul
|
||||
== 321402-5.xul 321402-5-ref.xul
|
||||
== 321402-6.xul 321402-6-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 321402-3.xul 321402-3-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 321402-4.xul 321402-4-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 321402-5.xul 321402-5-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 321402-6.xul 321402-6-ref.xul # bug 974780
|
||||
== 321738-1.html 321738-1-ref.html
|
||||
== 322436-1.html 322436-1-ref.html
|
||||
== 322461-1.xml 322461-1-ref.html
|
||||
@ -437,8 +436,8 @@ skip-if(B2G) == 332557-1.html 332557-1-ref.html
|
||||
== 334829-1a.xhtml 334829-1-ref.xhtml
|
||||
== 334829-1b.xhtml 334829-1-ref.xhtml
|
||||
== 335628-1.html 335628-1-ref.html
|
||||
!= 335628-2.xul 335628-2-ref.xul
|
||||
== 336096-1.xul 336096-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) != 335628-2.xul 335628-2-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 336096-1.xul 336096-1-ref.xul # bug 974780
|
||||
== 336147-1.html 336147-1-ref.html
|
||||
skip-if(B2G) == 336153-1.html 336153-1-ref.html
|
||||
!= 338251-p.html about:blank
|
||||
@ -455,14 +454,14 @@ skip-if(B2G) == 336153-1.html 336153-1-ref.html
|
||||
== 345267-1c.html 345267-1-ref.html
|
||||
== 345267-1d.html 345267-1-ref.html
|
||||
!= 345563-sub.xhtml 345563-sup.xhtml
|
||||
== 346189-1.xul 346189-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 346189-1.xul 346189-1-ref.xul # bug 974780
|
||||
== 346774-1a.html 346774-1-ref.html
|
||||
== 346774-1b.html 346774-1-ref.html
|
||||
== 346774-1c.html 346774-1-ref.html
|
||||
== 347348-1.xhtml 347348-1-ref.xhtml
|
||||
== 347496-1.xhtml 347496-1-ref.xhtml
|
||||
== 347912-1.html 347912-1-ref.html
|
||||
== 348049-1.xhtml 348049-1-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == 348049-1.xhtml 348049-1-ref.xhtml
|
||||
== 348516-1.html 348516-1-ref.html
|
||||
== 348516-2.html 348516-2-ref.html
|
||||
!= 348516-2.html 348516-2-notref.html
|
||||
@ -566,8 +565,8 @@ skip-if(B2G) == 364862-1.html 364862-1-ref.html
|
||||
skip-if(B2G) == 364968-1.xul 364968-1-ref.html
|
||||
== 364989-1.html 364989-1-ref.html
|
||||
== 365173-1.html 365173-1-ref.html
|
||||
== 366207-1.xul 366207-1-ref.xul
|
||||
== 366616-1.xul 366616-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 366207-1.xul 366207-1-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 366616-1.xul 366616-1-ref.xul # bug 974780
|
||||
== 367220-1.html 367220-1-ref.html
|
||||
== 367247-s-visible.html 367247-s-hidden.html
|
||||
== 367247-s-hidden.html 367247-s-auto.html
|
||||
@ -616,7 +615,7 @@ asserts(4) == 368155-negative-margins-1.html 368155-negative-margins-1-ref.html
|
||||
== 368651-1.html 368651-1-ref.html
|
||||
== 369361-1.html 369361-1-ref.html
|
||||
== 369361-2.html 369361-2-ref.html
|
||||
== 369882.xul 369882-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 369882.xul 369882-ref.xul # bug 974780
|
||||
== 369975-1.html 369975-1.html
|
||||
== 370353-1.html 370353-1-ref.html
|
||||
== 370422-1.html 370422-1-ref.html
|
||||
@ -641,7 +640,7 @@ skip-if(B2G) == 370629-2.html 370629-2-ref.html
|
||||
== 371354-1.html 371354-1-ref.html
|
||||
== 371483-1.html about:blank # assertion test
|
||||
fails-if(Android) == 371561-1.html 371561-1-ref.html
|
||||
!= 371681-1.xhtml about:blank
|
||||
skip-if(B2G&&browserIsRemote) != 371681-1.xhtml about:blank # bug 974780
|
||||
== 371925-1a.html 371925-1-ref.html
|
||||
== 371925-1b.html 371925-1-ref.html
|
||||
skip-if(B2G) == 372037-1.html 372037-1-ref.html
|
||||
@ -659,12 +658,12 @@ skip-if(B2G) fails-if(Android) random-if(d2d) == 373381-3.html 373381-3-ref.html
|
||||
skip-if(B2G) fails-if(Android) == 373381-4.html 373381-4-ref.html
|
||||
== 373383-1.html 373383-1-ref.html
|
||||
== 373433-1.html 373433-1-ref.html
|
||||
== 373533-1.xhtml about:blank
|
||||
== 373533-2.xhtml about:blank
|
||||
== 373533-3.xhtml about:blank
|
||||
== 374038-1.xul 374038-1-ref.xul
|
||||
== 374038-2.xul 374038-2-ref.xul
|
||||
random-if(d2d) == 374719-1.xul 374719-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 373533-1.xhtml about:blank # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 373533-2.xhtml about:blank # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 373533-3.xhtml about:blank # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 374038-1.xul 374038-1-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 374038-2.xul 374038-2-ref.xul # bug 974780
|
||||
random-if(d2d) skip-if(B2G&&browserIsRemote) == 374719-1.xul 374719-1-ref.xul # bug 974780
|
||||
fails == 374927-1.html 374927-1-ref.html # Was broken by patch for bug 368600; fails until bug 400776 is fixed
|
||||
== 375508-1.html 375508-1-ref.html
|
||||
== 375716-1.html 375716-1-ref.html
|
||||
@ -766,7 +765,7 @@ fails == 387344-1.html 387344-1-ref.html # scrolling rowgroups were removed in b
|
||||
== 389224-2.html about:blank
|
||||
skip-if(B2G) == 389468-1.html 389468-1-ref.html
|
||||
== 389623-1.html 389623-1-ref.html
|
||||
== 389636-1.html about:blank # assertion test
|
||||
skip-if(B2G&&browserIsRemote) == 389636-1.html about:blank # assertion test # bug 975911
|
||||
== 389924-1a.html 389924-1-ref.html
|
||||
== 389924-1b.html 389924-1-ref.html
|
||||
!= 389924-1a.html about:blank
|
||||
@ -787,7 +786,7 @@ skip-if(Android) == 391979.html 391979-ref.html
|
||||
== 392435-1.html 392435-1-ref.html
|
||||
== 393330-1.html 393330-1-ref.html
|
||||
== 393490-1.html 393490-1-ref.html
|
||||
== 393517-1.xhtml about:blank # crash test
|
||||
skip-if(B2G&&browserIsRemote) == 393517-1.xhtml about:blank # crash test # bug 974780
|
||||
== 393649-1.html 393649-1-ref.html
|
||||
== 393655-1.html 393655-1-ref.html
|
||||
== 393655-2.html 393655-2-ref.html
|
||||
@ -801,7 +800,7 @@ skip-if(Android) == 391979.html 391979-ref.html
|
||||
== 393760-2.xml 393760-2-ref.xml
|
||||
== 394111-1.html about:blank # Really an assertion test rather than a rendering test
|
||||
== 394534-1.html 394534-1-ref.html
|
||||
== 394676-1.xhtml 394676-1-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == 394676-1.xhtml 394676-1-ref.xhtml # bug 975911
|
||||
== 395107-1.html 395107-1-ref.html
|
||||
== 395107-2.html 395107-2-ref.html
|
||||
== 395107-3.html 395107-3-ref.html
|
||||
@ -809,7 +808,7 @@ skip-if(Android) == 391979.html 391979-ref.html
|
||||
== 395107-5.html 395107-5-ref.html
|
||||
== 395130-1.html 395130-1-ref.html
|
||||
== 395130-2.html 395130-2-ref.html
|
||||
== 395331-1.xml 395331-1-ref.xml
|
||||
skip-if(B2G&&browserIsRemote) == 395331-1.xml 395331-1-ref.xml # bug 974780
|
||||
== 395390-1.html 395390-1-ref.html
|
||||
== 396286-1.html about:blank # crash test
|
||||
== 397428-1.html 397428-1-ref.html
|
||||
@ -842,7 +841,7 @@ fails-if(winWidget) fails-if(cocoaWidget) random-if(!cocoaWidget&&!winWidget) !=
|
||||
== 400421-1.html 400421-1-ref.html
|
||||
== 400813-1.html 400813-1-ref.html
|
||||
== 400826-1.html 400826-1-ref.html
|
||||
== 401946-1.xul about:blank
|
||||
skip-if(B2G&&browserIsRemote) == 401946-1.xul about:blank # bug 974780
|
||||
== 402338-1.html 402338-1-ref.html
|
||||
== 402567-1.html 402567-1-ref.html
|
||||
== 402567-2.html 402567-2-ref.html
|
||||
@ -870,7 +869,7 @@ skip-if(B2G) fails-if(Android) == 403181-1.xml 403181-1-ref.xml
|
||||
== 403328-1.html 403328-1-ref.html
|
||||
== 403426-1.html 403426-1-ref.html
|
||||
== 403455-1.html 403455-1-ref.html
|
||||
== 403505-1.xml 403505-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 403505-1.xml 403505-1-ref.xul # bug 974780
|
||||
#== 403519-1.html 403519-1-ref.html # Fails on Mac, see also discussion in bug
|
||||
== 403519-2.html 403519-2-ref.html
|
||||
== 403656-1.html 403656-1-ref.html
|
||||
@ -888,7 +887,7 @@ skip-if(B2G) fails-if(Android) == 403181-1.xml 403181-1-ref.xml
|
||||
== 404123-2.html 404123-2-ref.html
|
||||
!= 404123-3.html 404123-3-ref.html
|
||||
# may fail "randomly" on OS X, doesn't seem to be rendering usefully anyhow - bug 602469
|
||||
random-if(cocoaWidget) HTTP(..) == 404149-1.xul 404149-1-ref.xul # HTTP for fonts directory access
|
||||
random-if(cocoaWidget) skip-if(B2G&&browserIsRemote) HTTP(..) == 404149-1.xul 404149-1-ref.xul # HTTP for fonts directory access # bug 974780
|
||||
== 404180-1.html 404180-1-ref.html
|
||||
== 404301-1.html 404301-1-ref.html
|
||||
== 404309-1a.html 404309-1-ref.html
|
||||
@ -991,16 +990,16 @@ asserts(1) == 418574-2.html 418574-2-ref.html # bug 478135
|
||||
== 420069-1.html 420069-1-ref.html
|
||||
== 420069-2.html 420069-2-ref.html
|
||||
== 420351-1.html 420351-1-ref.html
|
||||
== 420790-1.xhtml 420790-1-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == 420790-1.xhtml 420790-1-ref.xhtml
|
||||
== 421069.html 421069-ref.html
|
||||
== 421069.html 421069-ref2.html
|
||||
== 421069-ref.html 421069-ref2.html
|
||||
== 421203-1.xul 421203-1-ref.html
|
||||
== 421203-2.xul 421203-1-ref.html
|
||||
== 421203-3.xul 321402-3-ref.xul
|
||||
== 421203-4.xul 321402-4-ref.xul
|
||||
== 421203-5.xul 321402-5-ref.xul
|
||||
== 421203-6.xul 321402-6-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 421203-1.xul 421203-1-ref.html # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 421203-2.xul 421203-1-ref.html # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 421203-3.xul 321402-3-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 421203-4.xul 321402-4-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 421203-5.xul 321402-5-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 421203-6.xul 321402-6-ref.xul # bug 974780
|
||||
skip-if(B2G) == 421234-1.html 421234-1-ref.html
|
||||
== 421239-1.html 421239-1-ref.html
|
||||
== 421239-2.html 421239-2-ref.html
|
||||
@ -1021,7 +1020,7 @@ skip-if(B2G) == 422249-1.html 422249-1-ref.html
|
||||
fails == 423823-1.html 423823-1-ref.html # scrolling rowgroups were removed in bug 28800
|
||||
skip-if(B2G) == 424074-1.xul 424074-1-ref.xul
|
||||
skip-if(B2G) fails-if(Android) != 424074-1.xul 424074-1-ref2.xul
|
||||
random-if(gtk2Widget) == 424074-1-ref2.xul 424074-1-ref3.xul
|
||||
random-if(gtk2Widget) skip-if(B2G&&browserIsRemote) == 424074-1-ref2.xul 424074-1-ref3.xul # bug 974780
|
||||
== 424236-1.html 424236-1-ref.html
|
||||
== 424236-2.html 424236-2-ref.html
|
||||
== 424236-3.html 424236-3-ref.html
|
||||
@ -1163,10 +1162,10 @@ random == 445004-1.html 445004-1-ref.html # bug 472268
|
||||
skip-if(B2G) fails-if(Android) == 446100-1b.html about:blank
|
||||
skip-if(B2G) fails-if(Android) == 446100-1c.html about:blank
|
||||
== 446100-1d.html about:blank
|
||||
== 446100-1e.html about:blank
|
||||
== 446100-1f.html about:blank
|
||||
skip-if(B2G&&browserIsRemote) == 446100-1e.html about:blank
|
||||
skip-if(B2G&&browserIsRemote) == 446100-1f.html about:blank
|
||||
skip-if(B2G) fails-if(Android) == 446100-1g.html about:blank
|
||||
== 446100-1h.html about:blank
|
||||
skip-if(B2G&&browserIsRemote) == 446100-1h.html about:blank
|
||||
skip-if(B2G) == 447749-1.html 447749-1-ref.html
|
||||
fuzzy(127,2) == 448193.html 448193-ref.html
|
||||
!= 449149-1a.html about:blank
|
||||
@ -1228,7 +1227,7 @@ skip-if(B2G) == 458296-1d.html 458296-1-ref.html
|
||||
== 462844-3.html 462844-ref.html
|
||||
== 462844-4.html 462844-ref.html
|
||||
== 463204-1.html 463204-1-ref.html
|
||||
== 463217-1.xul 463217-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 463217-1.xul 463217-1-ref.xul # bug 974780
|
||||
skip-if(B2G) == 463952-1.html 463952-1-ref.html
|
||||
== 464811-1.html 464811-1-ref.html
|
||||
== 466258-1.html 466258-1-ref.html
|
||||
@ -1238,20 +1237,20 @@ skip-if(B2G) == 463952-1.html 463952-1-ref.html
|
||||
== 467084-2.html 467084-2-ref.html
|
||||
== 467444-1.html 467444-1-ref.html
|
||||
== 467460-1.html 467460-1-ref.html
|
||||
== 468473-1.xul 468473-1-ref.xul
|
||||
== 468546-1.xhtml 468546-1-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == 468473-1.xul 468473-1-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 468546-1.xhtml 468546-1-ref.xhtml
|
||||
== 471356-1.html 471356-1-ref.html
|
||||
== 471594-1.xhtml 471594-1-ref.html
|
||||
fuzzy(255,15) == 472020-1a.xul 472020-1-ref.xul
|
||||
fails == 472020-1b.xul 472020-1-ref.xul
|
||||
fails == 472020-2.xul 472020-2-ref.xul
|
||||
== 472500-1.xul 472500-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 471594-1.xhtml 471594-1-ref.html
|
||||
fuzzy(255,15) skip-if(B2G&&browserIsRemote) == 472020-1a.xul 472020-1-ref.xul # bug 974780
|
||||
fails skip-if(B2G&&browserIsRemote) == 472020-1b.xul 472020-1-ref.xul # bug 974780
|
||||
fails skip-if(B2G&&browserIsRemote) == 472020-2.xul 472020-2-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 472500-1.xul 472500-1-ref.xul # bug 974780
|
||||
== 472769-1a.html 472769-1-ref.html
|
||||
== 472769-1b.html 472769-1-ref.html
|
||||
== 472769-2.html 472769-2-ref.html
|
||||
== 472769-3.html 472769-3-ref.html
|
||||
== 473847-1.xul 473847-1-ref.xul
|
||||
== 474336-1.xul 474336-1-ref.xul
|
||||
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
|
||||
== 474472-1.html 474472-1-ref.html
|
||||
== 475986-1a.html 475986-1-ref.html
|
||||
@ -1283,7 +1282,7 @@ skip-if(B2G) == 476063-4.xhtml 476063-4-ref.xhtml
|
||||
== 476598-1b.html 476598-1-ref2.html
|
||||
!= 476598-1-ref.html about:blank
|
||||
== 476856-1.html 476856-1-ref.html
|
||||
random-if(d2d) == 478377-1.xul 478377-1-ref.xul
|
||||
random-if(d2d) skip-if(B2G&&browserIsRemote) == 478377-1.xul 478377-1-ref.xul # bug 974780
|
||||
== 478614-1.html 478614-1-ref.html
|
||||
== 478614-2.html 478614-1-ref.html
|
||||
== 478614-3.html 478614-3-ref.html
|
||||
@ -1315,13 +1314,13 @@ skip-if(B2G) fails-if(Android) == 481024-1c.html 481024-1-ref.html
|
||||
!= 481948-2.html 481948-2-ref.html
|
||||
skip-if(B2G) fails-if(Android) random-if(winWidget) fails-if(gtk2Widget) == 481948-3.html 481948-3-ref.html # questionable test, see bug 488364
|
||||
== 482398-1.html 482398-1-ref.html
|
||||
random-if(d2d) == 482592-1a.xhtml 482592-1-ref.html # bug 586771
|
||||
random-if(d2d) == 482592-1b.xhtml 482592-1-ref.html # bug 586771
|
||||
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) == 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
|
||||
== 483565.xul 483565-ref.xul
|
||||
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
|
||||
== 485012-1.html 485012-1-ref.html
|
||||
@ -1336,7 +1335,7 @@ random-if(winWidget) == 482659-1a.html 482659-1-ref.html
|
||||
== 486052-2f.html 486052-2-ref.html
|
||||
== 486052-2g.html 486052-2-ref.html
|
||||
== 486065-1.html 486065-1-ref.html
|
||||
== 486848-1.xul 486848-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 486848-1.xul 486848-1-ref.xul # bug 974780
|
||||
== 487539-1.html about:blank
|
||||
== 488390-1.html 488390-1-ref.html
|
||||
== 488649-1.html 488649-1-ref.html
|
||||
@ -1351,15 +1350,15 @@ random-if(winWidget) == 482659-1a.html 482659-1-ref.html
|
||||
== 490182-1b.html 490182-1-ref.html
|
||||
== 491180-1.html 491180-1-ref.html
|
||||
== 491180-2.html 491180-2-ref.html
|
||||
== 491323-1.xul 491323-1-ref.xul
|
||||
== 492239-1.xul 492239-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 491323-1.xul 491323-1-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 492239-1.xul 492239-1-ref.xul # bug 974780
|
||||
== 492661-1.html 492661-1-ref.html
|
||||
== 493968-1.html 493968-1-ref.html
|
||||
== 494667-1.html 494667-1-ref.html
|
||||
== 494667-2.html 494667-2-ref.html
|
||||
== 495274-1.html 495274-1-ref.html
|
||||
== 495354-1a.xhtml 495354-1-ref.xhtml
|
||||
== 495354-1b.xhtml 495354-1-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == 495354-1a.xhtml 495354-1-ref.xhtml # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == 495354-1b.xhtml 495354-1-ref.xhtml # bug 974780
|
||||
== 495385-1a.html 495385-1-ref.html
|
||||
== 495385-1b.html 495385-1-ref.html
|
||||
== 495385-1c.html 495385-1-ref.html
|
||||
@ -1371,7 +1370,7 @@ random-if(winWidget) == 482659-1a.html 482659-1-ref.html
|
||||
== 495385-2c.html 495385-2-ref.html
|
||||
== 495385-2d.html 495385-2-ref.html
|
||||
== 495385-2e.html 495385-2-ref.html
|
||||
pref(dom.use_xbl_scopes_for_remote_xul,true) == 495385-2f.xhtml 495385-2-ref.html
|
||||
pref(dom.use_xbl_scopes_for_remote_xul,true) skip-if(B2G&&browserIsRemote) == 495385-2f.xhtml 495385-2-ref.html
|
||||
== 495385-2g.html 495385-2-ref.html
|
||||
== 495385-2h.html 495385-2-ref.html
|
||||
== 495385-2i.html 495385-2-ref.html
|
||||
@ -1380,7 +1379,7 @@ pref(dom.use_xbl_scopes_for_remote_xul,true) == 495385-2f.xhtml 495385-2-ref.htm
|
||||
== 495385-5.html 495385-5-ref.html
|
||||
asserts(1) == 496032-1.html 496032-1-ref.html # bug 399262
|
||||
== 496840-1.html 496840-1-ref.html
|
||||
== 498228-1.xul 498228-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 498228-1.xul 498228-1-ref.xul # bug 974780
|
||||
== 501037.html 501037-ref.html
|
||||
== 501257-1a.html 501257-1-ref.html
|
||||
== 501257-1b.html 501257-1-ref.html
|
||||
@ -1408,7 +1407,7 @@ skip-if(B2G) == 506481-1.html 506481-1-ref.html
|
||||
== 507762-4.html 507762-2-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
|
||||
== 508908-1.xul 508908-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 508908-1.xul 508908-1-ref.xul # bug 974780
|
||||
== 508919-1.xhtml 508919-1-ref.xhtml
|
||||
== 509155-1.xhtml 509155-1-ref.xhtml
|
||||
skip-if(B2G) == 512410.html 512410-ref.html
|
||||
@ -1417,7 +1416,7 @@ skip-if(B2G) == 512410.html 512410-ref.html
|
||||
== 513153-1b.html 513153-1-ref.html
|
||||
== 513153-2a.html 513153-2-ref.html
|
||||
== 513153-2b.html 513153-2-ref.html
|
||||
== 513318-1.xul 513318-1-ref.xul
|
||||
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
|
||||
HTTP(..) == 518172-1a.html 518172-a-ref.html
|
||||
@ -1458,8 +1457,8 @@ skip-if(B2G) == 530686-1.html 530686-1-ref.html # bug 839735
|
||||
fails-if(OSX==10.7) == 534919-1.html 534919-1-ref.html # Bug 705044
|
||||
random == 536061.html 536061-ref.html # fixedpoint division in blur code makes this fail
|
||||
== 537471-1.html 537471-1-ref.html
|
||||
== 537507-1.xul 537507-1-ref.xul
|
||||
== 537507-2.html 537507-2-ref.html
|
||||
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
|
||||
== 539226-1.html about:blank
|
||||
@ -1475,7 +1474,7 @@ needs-focus != 542116-1.html 542116-1-ref.html
|
||||
needs-focus != 542116-2.html 542116-2-ref.html
|
||||
needs-focus != 542116-3.html 542116-3-ref.html
|
||||
== 542317-1.html 542317-1-ref.html
|
||||
fuzzy-if(Android,17,2) == 542605-hidden-unscrollable.xul 542605-hidden-unscrollable-ref.xul
|
||||
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
|
||||
== 545049-1.html 545049-1-ref.html
|
||||
== 546033-1.html 546033-1-ref.html
|
||||
@ -1500,7 +1499,7 @@ fuzzy-if(!contentSameGfxBackendAsCanvas,128,91) random-if(d2d) skip-if(azureSkia
|
||||
skip-if(B2G) fails-if(Android) == 557087-1.html 557087-ref.html
|
||||
skip-if(B2G) fails-if(Android) == 557087-2.html 557087-ref.html
|
||||
== 557736-1.html 557736-1-ref.html
|
||||
!= 558011-1.xul 558011-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) != 558011-1.xul 558011-1-ref.xul # bug 974780
|
||||
== 559284-1.html 559284-1-ref.html
|
||||
skip-if(B2G) fails-if(Android) == 560455-1.xul 560455-1-ref.xul
|
||||
== 561981-1.html 561981-1-ref.html
|
||||
@ -1634,8 +1633,8 @@ fails-if(Android&&AndroidVersion!=17) == 617242-1.html 617242-1-ref.html
|
||||
!= 618071.html 618071-notref.html
|
||||
== 619117-1.html 619117-1-ref.html
|
||||
HTTP(..) == 619511-1.html 619511-1-ref.html
|
||||
skip-if(Android) HTTP(..) == 621253-1-externalFilter.html 621253-1-ref.html
|
||||
skip-if(Android) == 621253-1-internalFilter.html 621253-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
|
||||
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)
|
||||
@ -1676,11 +1675,11 @@ fails-if(layersGPUAccelerated&&cocoaWidget) fails-if(Android&&AndroidVersion!=17
|
||||
!= 656875.html about:blank
|
||||
== 658952.html 658952-ref.html
|
||||
== 660682-1.html 660682-1-ref.html
|
||||
== 664127-1.xul 664127-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 664127-1.xul 664127-1-ref.xul # bug 974780
|
||||
skip-if(B2G) == 665597-1.html 665597-1-ref.html
|
||||
skip-if(B2G) == 665597-2.html 665597-2-ref.html
|
||||
== 668319-1.xul about:blank
|
||||
!= 669015-1.xul 669015-1-notref.xul
|
||||
skip-if(B2G&&browserIsRemote) == 668319-1.xul about:blank # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) != 669015-1.xul 669015-1-notref.xul # bug 974780
|
||||
skip-if(azureSkiaGL) == 670442-1.html 670442-1-ref.html
|
||||
== 670467-1.html 670467-1-ref.html
|
||||
== 670467-2.html 670467-2-ref.html
|
||||
@ -1741,7 +1740,7 @@ fuzzy(40,850) fuzzy-if(azureQuartz,68,586) == 797797-2.html 797797-2-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) == 811301-1.html 811301-1-ref.html
|
||||
fuzzy-if(Android,8,608) skip-if(B2G&&browserIsRemote) == 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
|
||||
@ -1764,7 +1763,7 @@ skip-if(B2G) == 818276-1.html 818276-1-ref.html
|
||||
== 848421-1.html 848421-1-ref.html
|
||||
random-if(B2G) == 849407-1.html 849407-1-ref.html
|
||||
== 849996-1.html 849996-1-ref.html
|
||||
== 858803-1.html 858803-1-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == 858803-1.html 858803-1-ref.html # bug 974780
|
||||
== 860242-1.html 860242-1-ref.html
|
||||
!= 860370.html 860370-notref.html
|
||||
== 871338-1.html 871338-1-ref.html
|
||||
@ -1786,7 +1785,7 @@ 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) == 933264-1.html 933264-1-ref.html
|
||||
fuzzy-if(OSX==10.6,2,30) skip-if(B2G&&browserIsRemote) == 933264-1.html 933264-1-ref.html
|
||||
== 936670-1.svg 936670-1-ref.svg
|
||||
== 941940-1.html 941940-1-ref.html
|
||||
== 942017.html 942017-ref.html
|
||||
|
@ -1,4 +1,4 @@
|
||||
== state-dependent-in-any.html state-dependent-in-any-ref.html
|
||||
== attr-case-insensitive-1.html attr-case-insensitive-1-ref.html
|
||||
== sibling-combinators-on-anon-content-1.xhtml sibling-combinators-on-anon-content-ref.xhtml
|
||||
== sibling-combinators-on-anon-content-2.xhtml sibling-combinators-on-anon-content-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == sibling-combinators-on-anon-content-1.xhtml sibling-combinators-on-anon-content-ref.xhtml
|
||||
skip-if(B2G&&browserIsRemote) == sibling-combinators-on-anon-content-2.xhtml sibling-combinators-on-anon-content-ref.xhtml
|
||||
|
@ -8,6 +8,6 @@ random-if(B2G) == fieldset-overflow-auto-1.html fieldset-overflow-auto-1-ref.htm
|
||||
== positioned-container-1.html positioned-container-1-ref.html
|
||||
== relpos-legend-1.html relpos-legend-1-ref.html
|
||||
== relpos-legend-2.html relpos-legend-2-ref.html
|
||||
test-pref(layout.css.sticky.enabled,true) == sticky-legend-1.html sticky-legend-1-ref.html
|
||||
test-pref(layout.css.sticky.enabled,true) skip-if(B2G&&browserIsRemote) == sticky-legend-1.html sticky-legend-1-ref.html
|
||||
== abs-pos-child-sizing.html abs-pos-child-sizing-ref.html
|
||||
== overflow-hidden.html overflow-hidden-ref.html
|
||||
|
@ -1,8 +1,8 @@
|
||||
# B2G failures: bug 855352.
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,128) == simple.html simple-ref.xul
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,64) == rtl.html rtl-ref.xul
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,128) == size.html simple-ref.xul
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,64) == background.html background-ref.xul
|
||||
fails-if(B2G) == style.html style-ref.xul
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,128) skip-if(B2G&&browserIsRemote) == simple.html simple-ref.xul # bug 974780
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,64) skip-if(B2G&&browserIsRemote) == rtl.html rtl-ref.xul # bug 974780
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,128) skip-if(B2G&&browserIsRemote) == size.html simple-ref.xul # bug 974780
|
||||
fails-if(B2G) fuzzy-if(OSX==10.6,8,64) skip-if(B2G&&browserIsRemote) == background.html background-ref.xul # bug 974780
|
||||
fails-if(B2G) skip-if(B2G&&browserIsRemote) == style.html style-ref.xul # bug 974780
|
||||
!= width-clip.html width-clip-ref.html
|
||||
fails-if(B2G) == color-inherit.html color-inherit-ref.html
|
||||
|
@ -2,7 +2,7 @@
|
||||
== size-1.html size-1-ref.html
|
||||
skip-if(B2G) fails-if(Android) == size-2.html size-2-ref.html
|
||||
HTTP(..) == baseline-1.html baseline-1-ref.html
|
||||
HTTP(..) == centering-1.xul centering-1-ref.xul
|
||||
== dynamic-height-1.xul dynamic-height-1-ref.xul
|
||||
skip-if(B2G&&browserIsRemote) HTTP(..) == centering-1.xul centering-1-ref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == dynamic-height-1.xul dynamic-height-1-ref.xul # bug 974780
|
||||
needs-focus == select.html select-ref.html
|
||||
== intrinsic-size.html intrinsic-size-ref.html
|
||||
|
@ -27,7 +27,7 @@ needs-focus == placeholder-10.html placeholder-visible-ref.html
|
||||
== placeholder-13.html placeholder-visible-ref.html
|
||||
== placeholder-14.html placeholder-visible-ref.html
|
||||
== placeholder-18.html placeholder-overridden-ref.html
|
||||
random-if(winWidget) == placeholder-19.xul placeholder-overridden-ref.xul
|
||||
random-if(winWidget) skip-if(B2G&&browserIsRemote) == placeholder-19.xul placeholder-overridden-ref.xul # bug 974780
|
||||
# needs-focus == placeholder-20.html placeholder-focus-ref.html
|
||||
needs-focus == placeholder-21.html placeholder-blank-ref.html
|
||||
needs-focus == placeholder-22.html placeholder-blank-ref.html
|
||||
|
@ -1,10 +1,10 @@
|
||||
# access-key tests are no use on OS X because access keys are not indicated visually
|
||||
skip-if(cocoaWidget) != accesskey-1.xul accesskey-1-notref.xul
|
||||
skip-if(cocoaWidget) == accesskey-2.xul accesskey-2-ref.xul
|
||||
skip-if(cocoaWidget||(B2G&&browserIsRemote)) != accesskey-1.xul accesskey-1-notref.xul # bug 974780
|
||||
skip-if(cocoaWidget||(B2G&&browserIsRemote)) == accesskey-2.xul accesskey-2-ref.xul # bug 974780
|
||||
# accesskey-3 fails because of defects in XUL bidi support
|
||||
skip-if(cocoaWidget) fails-if(!cocoaWidget) == accesskey-3.xul accesskey-3-ref.xul
|
||||
skip-if(cocoaWidget) != accesskey-3.xul accesskey-3-notref.xul
|
||||
skip-if(cocoaWidget) == accesskey-4.xul accesskey-4-ref.xul
|
||||
skip-if(cocoaWidget) != accesskey-4.xul accesskey-4-notref.xul
|
||||
== align-baseline-1.xul align-baseline-1-ref.xul # test for bug 494901
|
||||
skip-if(B2G) fails-if(Android) == setsize.xul setsize-ref.xul
|
||||
fails-if(!cocoaWidget) skip-if(cocoaWidget||(B2G&&browserIsRemote)) == accesskey-3.xul accesskey-3-ref.xul # bug 974780
|
||||
skip-if(cocoaWidget||(B2G&&browserIsRemote)) != accesskey-3.xul accesskey-3-notref.xul # bug 974780
|
||||
skip-if(cocoaWidget||(B2G&&browserIsRemote)) == accesskey-4.xul accesskey-4-ref.xul # bug 974780
|
||||
skip-if(cocoaWidget||(B2G&&browserIsRemote)) != accesskey-4.xul accesskey-4-notref.xul # bug 974780
|
||||
skip-if(B2G&&browserIsRemote) == align-baseline-1.xul align-baseline-1-ref.xul # test for bug 494901
|
||||
fails-if(Android) skip-if(B2G) == setsize.xul setsize-ref.xul # bug 974780
|
||||
|
@ -3,8 +3,8 @@ fuzzy-if(Android,8,30) == background-image-zoom-1.html background-image-zoom-1-r
|
||||
== image-seam-1a.html image-seam-1-ref.html
|
||||
== image-seam-1b.html image-seam-1-ref.html
|
||||
fails-if(cocoaWidget) == image-seam-2.html image-seam-2-ref.html # Quartz doesn't support EXTEND_PAD (bug 567370)
|
||||
== image-zoom-1.html image-zoom-1-ref.html
|
||||
== image-zoom-2.html image-zoom-1-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == image-zoom-1.html image-zoom-1-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == image-zoom-2.html image-zoom-1-ref.html
|
||||
== invalid-url-image-1.html invalid-url-image-1-ref.html
|
||||
random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == sync-image-switch-1a.html sync-image-switch-1-ref.html # bug 855050 for WinXP
|
||||
random-if(/^Windows\x20NT\x205\.1/.test(http.oscpu)) == sync-image-switch-1b.html sync-image-switch-1-ref.html # bug 855050 for WinXP
|
||||
|
@ -2,8 +2,8 @@
|
||||
== table-repaint-b.html table-repaint-b-ref.html
|
||||
== table-repaint-c.html table-repaint-c-ref.html
|
||||
== table-repaint-d.html table-repaint-d-ref.html
|
||||
== 540247-1.xul 540247-1-ref.xul
|
||||
== 543681-1.html 543681-1-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
|
||||
pref(layout.animated-image-layers.enabled,true) == test-animated-image-layers.html test-animated-image-layers-ref.html
|
||||
pref(layout.animated-image-layers.enabled,true) == test-animated-image-layers-background.html test-animated-image-layers-ref.html
|
||||
|
@ -48,6 +48,6 @@ fails == column-contain-1a.html column-contain-1-ref.html
|
||||
== column-contain-1b.html column-contain-1-ref.html
|
||||
== column-contain-2.html column-contain-2-ref.html
|
||||
== block-in-inline-1.html block-in-inline-1-ref.html
|
||||
fuzzy-if(Android,8,1533) == block-in-inline-2.html block-in-inline-2-ref.html
|
||||
fuzzy-if(Android,8,630) fuzzy-if(OSX==10.8,1,11) == block-in-inline-3.html block-in-inline-3-ref.html
|
||||
fuzzy-if(Android,8,1533) skip-if(B2G&&browserIsRemote) == block-in-inline-2.html block-in-inline-2-ref.html
|
||||
fuzzy-if(Android,8,630) fuzzy-if(OSX==10.8,1,11) skip-if(B2G&&browserIsRemote) == block-in-inline-3.html block-in-inline-3-ref.html
|
||||
== inner-table-1.html inner-table-1-ref.html
|
||||
|
@ -93,7 +93,7 @@ needs-focus == data:text/plain, about:blank
|
||||
random-if(!browserIsRemote) == test-displayport.html test-displayport-ref.html # bug 593168
|
||||
skip-if(!browserIsRemote) != test-displayport-2.html test-displayport-ref.html # bug 593168
|
||||
skip-if(!browserIsRemote) fails-if(OSX&&layersGPUAccelerated) fuzzy-if(layersOMTC,1,1390) random-if(Android&&AndroidVersion<15) random-if(B2G||B2GDT) == 647192-1.html 647192-1-ref.html
|
||||
skip-if(!browserIsRemote) == 656041-1.html 656041-1-ref.html
|
||||
skip-if(!browserIsRemote||(B2G&&browserIsRemote)) == 656041-1.html 656041-1-ref.html
|
||||
skip-if(!browserIsRemote||layersOMTC) == test-displayport-bg.html test-displayport-ref.html # bug 694706
|
||||
|
||||
# IPC Position-fixed frames/layers test
|
||||
|
@ -163,7 +163,7 @@ include font-face/reftest.list
|
||||
skip-if(B2G) include font-features/reftest.list
|
||||
|
||||
# mobile font size inflation
|
||||
include font-inflation/reftest.list
|
||||
skip-if(B2G&&browserIsRemote) include font-inflation/reftest.list
|
||||
|
||||
# font matching
|
||||
skip-if(B2G) include font-matching/reftest.list
|
||||
|
@ -1,14 +1,14 @@
|
||||
HTTP == deferred-anchor.xhtml#d deferred-anchor-ref.xhtml#d
|
||||
skip-if(B2G&&browserIsRemote) HTTP == deferred-anchor.xhtml#d deferred-anchor-ref.xhtml#d
|
||||
HTTP == fixed-1.html fixed-1.html?ref
|
||||
HTTP == fixed-opacity-1.html fixed-opacity-1.html?ref
|
||||
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) == iframe-border-radius.html iframe-border-radius-ref.html # bug 760269
|
||||
random-if(Android&&!browserIsRemote) skip-if(B2G&&browserIsRemote) == iframe-border-radius.html iframe-border-radius-ref.html # 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
|
||||
HTTP == simple-1.html simple-1.html?ref
|
||||
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) HTTP == text-1.html text-1.html?ref
|
||||
fuzzy-if(Android,4,120) HTTP == text-2.html?up text-2.html?ref
|
||||
@ -20,6 +20,6 @@ skip-if(B2G) == less-than-scrollbar-height.html less-than-scrollbar-height-ref.h
|
||||
skip-if(B2G) == huge-horizontal-overflow.html huge-horizontal-overflow-ref.html
|
||||
skip-if(B2G) == huge-vertical-overflow.html huge-vertical-overflow-ref.html
|
||||
== iframe-scrolling-attr-1.html iframe-scrolling-attr-ref.html
|
||||
== iframe-scrolling-attr-2.html iframe-scrolling-attr-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == iframe-scrolling-attr-2.html iframe-scrolling-attr-ref.html
|
||||
== frame-scrolling-attr-1.html frame-scrolling-attr-ref.html
|
||||
== frame-scrolling-attr-2.html frame-scrolling-attr-ref.html
|
||||
|
@ -6,7 +6,7 @@
|
||||
== img-zoomOut-1.html squaredCircle-50x50-ref.html
|
||||
|
||||
# Ensure that scaled SVG images aren't fuzzy when tiled.
|
||||
== img-fuzzy-zoomOut-1.html img-fuzzy-zoomOut-1-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == img-fuzzy-zoomOut-1.html img-fuzzy-zoomOut-1-ref.html
|
||||
== img-fuzzy-zoomIn-1.html img-fuzzy-zoomIn-1-ref.html
|
||||
== img-fuzzy-transform-zoomOut-1.html img-fuzzy-zoomOut-1-ref.html
|
||||
== img-fuzzy-transform-zoomIn-1.html img-fuzzy-zoomIn-1-ref.html
|
||||
|
@ -15,14 +15,14 @@ fuzzy-if(Android,4,34) == image-opacity-02.svg image-opacity-02-ref.svg # Bug 77
|
||||
== image-svg-inline-zoom-in-01b.html ../pass.svg
|
||||
== image-svg-inline-zoom-in-01c.html ../pass.svg
|
||||
== image-svg-inline-zoom-in-01d.html ../pass.svg
|
||||
== image-svg-inline-zoom-out-01a.html ../pass.svg
|
||||
== image-svg-inline-zoom-out-01b.html ../pass.svg
|
||||
== image-svg-inline-zoom-out-01c.html ../pass.svg
|
||||
== image-svg-inline-zoom-out-01d.html ../pass.svg
|
||||
== image-svg-inline-sprite-zoom-in-01a.html image-svg-inline-sprite-zoom-in-01-ref.html
|
||||
== image-svg-inline-sprite-zoom-in-01b.html image-svg-inline-sprite-zoom-in-01-ref.html
|
||||
== image-svg-inline-sprite-zoom-out-01a.html image-svg-inline-sprite-zoom-out-01-ref.html
|
||||
== image-svg-inline-sprite-zoom-out-01b.html image-svg-inline-sprite-zoom-out-01-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-zoom-out-01a.html ../pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-zoom-out-01b.html ../pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-zoom-out-01c.html ../pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-zoom-out-01d.html ../pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-sprite-zoom-in-01a.html image-svg-inline-sprite-zoom-in-01-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-sprite-zoom-in-01b.html image-svg-inline-sprite-zoom-in-01-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-sprite-zoom-out-01a.html image-svg-inline-sprite-zoom-out-01-ref.html
|
||||
skip-if(B2G&&browserIsRemote) == image-svg-inline-sprite-zoom-out-01b.html image-svg-inline-sprite-zoom-out-01-ref.html
|
||||
== image-translate-01.svg image-translate-01-ref.svg
|
||||
== image-x-01.svg image-x-01-ref.svg
|
||||
== image-xy-01.svg image-xy-01-ref.svg
|
||||
|
@ -1,18 +1,18 @@
|
||||
|
||||
# XBL tests
|
||||
== xbl-basic-01.svg pass.svg
|
||||
== xbl-basic-02.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-basic-01.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-basic-02.svg pass.svg
|
||||
skip-if(B2G) == xbl-basic-03.svg pass.svg # bug 773482
|
||||
skip-if(B2G) == xbl-grad-ref--grad-in-binding-01.svg pass.svg
|
||||
== xbl-grad-ref--grad-in-binding-02.svg pass.svg
|
||||
== xbl-grad-ref--grad-in-bound-01.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-grad-ref--grad-in-binding-02.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-grad-ref--grad-in-bound-01.svg pass.svg
|
||||
fails == xbl-grad-ref--grad-in-bound-02.svg pass-black.svg
|
||||
fails == xbl-grad-ref--grad-in-resources-01.svg pass.svg
|
||||
fails == xbl-grad-ref--grad-in-resources-02.svg pass.svg
|
||||
== xbl-grad-ref--grad-in-binding-03.svg pass.svg
|
||||
== xbl-grad-ref--grad-in-bound-03.svg pass.svg
|
||||
== xbl-grad-ref--grad-in-binding-04.svg pass.svg
|
||||
== xbl-grad-ref--grad-in-bound-04.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-grad-ref--grad-in-binding-03.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-grad-ref--grad-in-bound-03.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-grad-ref--grad-in-binding-04.svg pass.svg
|
||||
skip-if(B2G&&browserIsRemote) == xbl-grad-ref--grad-in-bound-04.svg pass.svg
|
||||
|
||||
# Tests for zooming with the full page zoom UI
|
||||
skip-if(B2G) random-if(d2d) == feImage-zoom-01a.svg feImage-zoom-01-ref.svg # bug 773482
|
||||
|
@ -28,7 +28,7 @@ skip-if(B2G) == filter-html-01-extref.xhtml filter-html-01-ref.svg
|
||||
skip-if(B2G) == mask-html-01-extref-01.xhtml mask-html-01-ref.svg
|
||||
skip-if(B2G) == mask-html-01-extref-02.xhtml mask-html-01-ref.svg
|
||||
== mask-html-zoomed-01.xhtml mask-html-01-ref.svg
|
||||
== mask-html-xbl-bound-01.html mask-html-01-ref.svg
|
||||
skip-if(B2G&&browserIsRemote) == mask-html-xbl-bound-01.html mask-html-01-ref.svg
|
||||
== mask-transformed-html-01.xhtml ../pass.svg
|
||||
== mask-transformed-html-02.xhtml ../pass.svg
|
||||
== patterned-svg-under-transformed-html-01.xhtml ../pass.svg
|
||||
|
@ -109,7 +109,7 @@ HTTP(..) == variation-selector-unsupported-1.html variation-selector-unsupported
|
||||
== wordbreak-1.html wordbreak-1-ref.html
|
||||
== wordbreak-2.html wordbreak-2-ref.html
|
||||
== wordbreak-3.html wordbreak-3-ref.html
|
||||
skip-if(Android&&AndroidVersion==17) == wordbreak-4a.html wordbreak-4a-ref.html
|
||||
skip-if((Android&&AndroidVersion==17)||(B2G&&browserIsRemote)) == wordbreak-4a.html wordbreak-4a-ref.html
|
||||
== wordbreak-4b.html wordbreak-4b-ref.html
|
||||
== wordbreak-5.html wordbreak-5-ref.html
|
||||
== wordbreak-6.html wordbreak-6-ref.html
|
||||
|
@ -215,6 +215,12 @@ nsFilterInstance::BuildPrimitivesForFilter(const nsStyleFilter& aFilter)
|
||||
mFilterRegion = svgFilterInstance.GetFilterRegion();
|
||||
mFilterSpaceBounds = svgFilterInstance.GetFilterSpaceBounds();
|
||||
|
||||
// If this overflows, we can at least paint the maximum surface size.
|
||||
bool overflow;
|
||||
gfxIntSize surfaceSize =
|
||||
nsSVGUtils::ConvertToSurfaceSize(mFilterSpaceBounds.Size(), &overflow);
|
||||
mFilterSpaceBounds.SizeTo(surfaceSize);
|
||||
|
||||
return svgFilterInstance.BuildPrimitives(mPrimitiveDescriptions, mInputImages);
|
||||
}
|
||||
|
||||
|
@ -48,8 +48,37 @@ nsSVGFilterInstance::nsSVGFilterInstance(const nsStyleFilter& aFilter,
|
||||
mPrimitiveUnits =
|
||||
mFilterFrame->GetEnumValue(SVGFilterElement::PRIMITIVEUNITS);
|
||||
|
||||
// Get the filter region (in the filtered element's user space):
|
||||
nsresult rv = ComputeUserSpaceToIntermediateSpaceScale();
|
||||
if (NS_FAILED(rv)) {
|
||||
return;
|
||||
}
|
||||
|
||||
rv = ComputeBounds();
|
||||
if (NS_FAILED(rv)) {
|
||||
return;
|
||||
}
|
||||
|
||||
mInitialized = true;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsSVGFilterInstance::ComputeUserSpaceToIntermediateSpaceScale()
|
||||
{
|
||||
gfxMatrix canvasTransform =
|
||||
nsSVGUtils::GetCanvasTM(mTargetFrame, nsISVGChildFrame::FOR_OUTERSVG_TM);
|
||||
if (canvasTransform.IsSingular()) {
|
||||
// Nothing should be rendered.
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
mUserSpaceToIntermediateSpaceScale = canvasTransform.ScaleFactors(true);
|
||||
mIntermediateSpaceToUserSpaceScale = gfxSize(1.0 / mUserSpaceToIntermediateSpaceScale.width,
|
||||
1.0 / mUserSpaceToIntermediateSpaceScale.height);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsSVGFilterInstance::ComputeBounds()
|
||||
{
|
||||
// XXX if filterUnits is set (or has defaulted) to objectBoundingBox, we
|
||||
// should send a warning to the error console if the author has used lengths
|
||||
// with units. This is a common mistake and can result in the filter region
|
||||
@ -60,6 +89,7 @@ nsSVGFilterInstance::nsSVGFilterInstance(const nsStyleFilter& aFilter,
|
||||
// interpreted as a fraction of the bounding box and sometimes as user-space
|
||||
// units). So really only percentage values should be used in this case.
|
||||
|
||||
// Set the user space bounds (i.e. the filter region in user space).
|
||||
nsSVGLength2 XYWH[4];
|
||||
NS_ABORT_IF_FALSE(sizeof(mFilterElement->mLengthAttributes) == sizeof(XYWH),
|
||||
"XYWH size incorrect");
|
||||
@ -71,43 +101,34 @@ nsSVGFilterInstance::nsSVGFilterInstance(const nsStyleFilter& aFilter,
|
||||
XYWH[3] = *mFilterFrame->GetLengthValue(SVGFilterElement::ATTR_HEIGHT);
|
||||
uint16_t filterUnits =
|
||||
mFilterFrame->GetEnumValue(SVGFilterElement::FILTERUNITS);
|
||||
// The filter region in user space, in user units:
|
||||
mFilterRegion = nsSVGUtils::GetRelativeRect(filterUnits,
|
||||
mUserSpaceBounds = nsSVGUtils::GetRelativeRect(filterUnits,
|
||||
XYWH, mTargetBBox, mTargetFrame);
|
||||
|
||||
if (mFilterRegion.Width() <= 0 || mFilterRegion.Height() <= 0) {
|
||||
// Temporarily transform the user space bounds to intermediate space, so we
|
||||
// can align them with the pixel boundries of the offscreen surface.
|
||||
// The offscreen surface has the same scale as intermediate space.
|
||||
mUserSpaceBounds = UserSpaceToIntermediateSpace(mUserSpaceBounds);
|
||||
mUserSpaceBounds.RoundOut();
|
||||
if (mUserSpaceBounds.Width() <= 0 || mUserSpaceBounds.Height() <= 0) {
|
||||
// 0 disables rendering, < 0 is error. dispatch error console warning
|
||||
// or error as appropriate.
|
||||
return;
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
// Calculate the width and height of the pixel buffer of the
|
||||
// temporary offscreen surface that we would/will create to paint into when
|
||||
// painting the entire filtered element and, if necessary, adjust
|
||||
// mFilterRegion out slightly so that it aligns with pixel boundaries of this
|
||||
// buffer:
|
||||
|
||||
// Match filter space as closely as possible to the pixel density of the
|
||||
// nearest outer 'svg' device space:
|
||||
gfxMatrix canvasTM =
|
||||
nsSVGUtils::GetCanvasTM(mTargetFrame, nsISVGChildFrame::FOR_OUTERSVG_TM);
|
||||
if (canvasTM.IsSingular()) {
|
||||
// nothing to draw
|
||||
return;
|
||||
// Set the intermediate space bounds.
|
||||
if (!gfxUtils::GfxRectToIntRect(mUserSpaceBounds, &mIntermediateSpaceBounds)) {
|
||||
// The filter region is way too big if there is float -> int overflow.
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
gfxSize scale = canvasTM.ScaleFactors(true);
|
||||
mFilterRegion.Scale(scale.width, scale.height);
|
||||
mFilterRegion.RoundOut();
|
||||
// Set the filter space bounds.
|
||||
mFilterSpaceBounds = mIntermediateSpaceBounds;
|
||||
mFilterSpaceBounds.MoveTo(0, 0);
|
||||
|
||||
// We don't care if this overflows, because we can handle upscaling/
|
||||
// downscaling to filter space.
|
||||
bool overflow;
|
||||
mFilterSpaceBounds.SetRect(nsIntPoint(0, 0),
|
||||
nsSVGUtils::ConvertToSurfaceSize(mFilterRegion.Size(), &overflow));
|
||||
mFilterRegion.Scale(1.0 / scale.width, 1.0 / scale.height);
|
||||
// Undo the temporary transformation of the user space bounds.
|
||||
mUserSpaceBounds = IntermediateSpaceToUserSpace(mUserSpaceBounds);
|
||||
|
||||
mInitialized = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsSVGFilterFrame*
|
||||
@ -168,14 +189,14 @@ nsSVGFilterInstance::GetPrimitiveNumber(uint8_t aCtxType, float aValue) const
|
||||
|
||||
switch (aCtxType) {
|
||||
case SVGContentUtils::X:
|
||||
return value * mFilterSpaceBounds.width / mFilterRegion.Width();
|
||||
return value * mUserSpaceToIntermediateSpaceScale.width;
|
||||
case SVGContentUtils::Y:
|
||||
return value * mFilterSpaceBounds.height / mFilterRegion.Height();
|
||||
return value * mUserSpaceToIntermediateSpaceScale.height;
|
||||
case SVGContentUtils::XY:
|
||||
default:
|
||||
return value * SVGContentUtils::ComputeNormalizedHypotenuse(
|
||||
mFilterSpaceBounds.width / mFilterRegion.Width(),
|
||||
mFilterSpaceBounds.height / mFilterRegion.Height());
|
||||
mUserSpaceToIntermediateSpaceScale.width,
|
||||
mUserSpaceToIntermediateSpaceScale.height);
|
||||
}
|
||||
}
|
||||
|
||||
@ -200,22 +221,27 @@ nsSVGFilterInstance::ConvertLocation(const Point3D& aPoint) const
|
||||
}
|
||||
|
||||
gfxRect
|
||||
nsSVGFilterInstance::UserSpaceToFilterSpace(const gfxRect& aRect) const
|
||||
nsSVGFilterInstance::UserSpaceToFilterSpace(const gfxRect& aUserSpaceRect) const
|
||||
{
|
||||
gfxRect r = aRect - mFilterRegion.TopLeft();
|
||||
r.Scale(mFilterSpaceBounds.width / mFilterRegion.Width(),
|
||||
mFilterSpaceBounds.height / mFilterRegion.Height());
|
||||
return r;
|
||||
return IntermediateSpaceToUserSpace(aUserSpaceRect - mUserSpaceBounds.TopLeft());
|
||||
}
|
||||
|
||||
gfxMatrix
|
||||
nsSVGFilterInstance::GetUserSpaceToFilterSpaceTransform() const
|
||||
gfxRect
|
||||
nsSVGFilterInstance::UserSpaceToIntermediateSpace(const gfxRect& aUserSpaceRect) const
|
||||
{
|
||||
gfxFloat widthScale = mFilterSpaceBounds.width / mFilterRegion.Width();
|
||||
gfxFloat heightScale = mFilterSpaceBounds.height / mFilterRegion.Height();
|
||||
return gfxMatrix(widthScale, 0.0f,
|
||||
0.0f, heightScale,
|
||||
-mFilterRegion.X() * widthScale, -mFilterRegion.Y() * heightScale);
|
||||
gfxRect intermediateSpaceRect = aUserSpaceRect;
|
||||
intermediateSpaceRect.Scale(mUserSpaceToIntermediateSpaceScale.width,
|
||||
mUserSpaceToIntermediateSpaceScale.height);
|
||||
return intermediateSpaceRect;
|
||||
}
|
||||
|
||||
gfxRect
|
||||
nsSVGFilterInstance::IntermediateSpaceToUserSpace(const gfxRect& aIntermediateSpaceRect) const
|
||||
{
|
||||
gfxRect userSpaceRect = aIntermediateSpaceRect;
|
||||
userSpaceRect.Scale(mIntermediateSpaceToUserSpaceScale.width,
|
||||
mIntermediateSpaceToUserSpaceScale.height);
|
||||
return userSpaceRect;
|
||||
}
|
||||
|
||||
IntRect
|
||||
|
@ -31,6 +31,38 @@ class SVGFilterElement;
|
||||
* In BuildPrimitives, this class iterates through the referenced <filter>
|
||||
* element's primitive elements, creating a FilterPrimitiveDescription for
|
||||
* each one.
|
||||
*
|
||||
* This class uses several different coordinate spaces, defined as follows:
|
||||
*
|
||||
* "user space"
|
||||
* The filtered SVG element's user space or the filtered HTML element's
|
||||
* CSS pixel space. The origin for an HTML element is the top left corner of
|
||||
* its border box.
|
||||
*
|
||||
* "intermediate space"
|
||||
* User space scaled to device pixels. Shares the same origin as user space.
|
||||
* This space is the same across chained SVG and CSS filters. To compute the
|
||||
* overall filter space for a chain, we first need to build each filter's
|
||||
* FilterPrimitiveDescriptions in some common space. That space is
|
||||
* intermediate space.
|
||||
*
|
||||
* "filter space"
|
||||
* Intermediate space translated to the origin of this SVG filter's
|
||||
* filter region. This space may be different for each filter in a chain.
|
||||
*
|
||||
* To understand the spaces better, let's take an example filter that defines a
|
||||
* filter region:
|
||||
* <filter id="f" x="-15" y="-15" width="130" height="130">...</filter>
|
||||
*
|
||||
* And apply the filter to a div element:
|
||||
* <div style="filter: url(#f); ...">...</div>
|
||||
*
|
||||
* And let's say there are 2 device pixels for every 1 CSS pixel.
|
||||
*
|
||||
* Then:
|
||||
* "user space" = the CSS pixel space of the <div>
|
||||
* "intermediate space" = "user space" * 2
|
||||
* "filter space" = "intermediate space" + 15
|
||||
*/
|
||||
class nsSVGFilterInstance
|
||||
{
|
||||
@ -70,7 +102,7 @@ public:
|
||||
* coincide with pixel boundaries of the offscreen surface into which the
|
||||
* filtered output would/will be painted.
|
||||
*/
|
||||
gfxRect GetFilterRegion() const { return mFilterRegion; }
|
||||
gfxRect GetFilterRegion() const { return mUserSpaceBounds; }
|
||||
|
||||
/**
|
||||
* Returns the size of the user specified "filter region", in filter space.
|
||||
@ -95,10 +127,9 @@ public:
|
||||
Point3D ConvertLocation(const Point3D& aPoint) const;
|
||||
|
||||
/**
|
||||
* Returns the transform from the filtered element's user space to filter
|
||||
* space. This will be a simple translation and/or scale.
|
||||
* Transform a rect between user space and filter space.
|
||||
*/
|
||||
gfxMatrix GetUserSpaceToFilterSpaceTransform() const;
|
||||
gfxRect UserSpaceToFilterSpace(const gfxRect& aUserSpaceRect) const;
|
||||
|
||||
private:
|
||||
/**
|
||||
@ -127,7 +158,11 @@ private:
|
||||
*/
|
||||
float GetPrimitiveNumber(uint8_t aCtxType, float aValue) const;
|
||||
|
||||
gfxRect UserSpaceToFilterSpace(const gfxRect& aUserSpace) const;
|
||||
/**
|
||||
* Transform a rect between user space and intermediate space.
|
||||
*/
|
||||
gfxRect UserSpaceToIntermediateSpace(const gfxRect& aUserSpaceRect) const;
|
||||
gfxRect IntermediateSpaceToUserSpace(const gfxRect& aIntermediateSpaceRect) const;
|
||||
|
||||
/**
|
||||
* Returns the transform from frame space to the coordinate space that
|
||||
@ -148,6 +183,17 @@ private:
|
||||
const nsDataHashtable<nsStringHashKey, int32_t>& aImageTable,
|
||||
nsTArray<int32_t>& aSourceIndices);
|
||||
|
||||
/**
|
||||
* Compute the scale factors between user space and intermediate space.
|
||||
*/
|
||||
nsresult ComputeUserSpaceToIntermediateSpaceScale();
|
||||
|
||||
/**
|
||||
* Compute the filter region in user space, intermediate space, and filter
|
||||
* space.
|
||||
*/
|
||||
nsresult ComputeBounds();
|
||||
|
||||
/**
|
||||
* The SVG reference filter originally from the style system.
|
||||
*/
|
||||
@ -174,11 +220,18 @@ private:
|
||||
gfxRect mTargetBBox;
|
||||
|
||||
/**
|
||||
* The "filter region", in the filtered element's user space.
|
||||
* The "filter region" in various spaces.
|
||||
*/
|
||||
gfxRect mFilterRegion;
|
||||
gfxRect mUserSpaceBounds;
|
||||
nsIntRect mIntermediateSpaceBounds;
|
||||
nsIntRect mFilterSpaceBounds;
|
||||
|
||||
/**
|
||||
* The scale factors between user space and intermediate space.
|
||||
*/
|
||||
gfxSize mUserSpaceToIntermediateSpaceScale;
|
||||
gfxSize mIntermediateSpaceToUserSpaceScale;
|
||||
|
||||
/**
|
||||
* The 'primitiveUnits' attribute value (objectBoundingBox or userSpaceOnUse).
|
||||
*/
|
||||
|
@ -597,7 +597,7 @@ class CheckedInt
|
||||
bool mIsValid;
|
||||
|
||||
template<typename U>
|
||||
CheckedInt(U value, bool isValid) : mValue(value), mIsValid(isValid)
|
||||
CheckedInt(U aValue, bool aIsValid) : mValue(aValue), mIsValid(aIsValid)
|
||||
{
|
||||
static_assert(detail::IsSupported<T>::value &&
|
||||
detail::IsSupported<U>::value,
|
||||
@ -619,9 +619,9 @@ class CheckedInt
|
||||
* argument is valid.
|
||||
*/
|
||||
template<typename U>
|
||||
CheckedInt(U value)
|
||||
: mValue(T(value)),
|
||||
mIsValid(detail::IsInRange<T>(value))
|
||||
CheckedInt(U aValue)
|
||||
: mValue(T(aValue)),
|
||||
mIsValid(detail::IsInRange<T>(aValue))
|
||||
{
|
||||
static_assert(detail::IsSupported<T>::value &&
|
||||
detail::IsSupported<U>::value,
|
||||
|
@ -1256,7 +1256,7 @@ pref("network.dnsCacheEntries", 400);
|
||||
pref("network.dnsCacheExpiration", 60);
|
||||
|
||||
// The grace period allows the DNS cache to use expired entries, while kicking off
|
||||
// a revalidation in the background. In seconds, but rounded to minutes in gecko.
|
||||
// a revalidation in the background.
|
||||
pref("network.dnsCacheExpirationGracePeriod", 60);
|
||||
|
||||
// This preference can be used to turn off DNS prefetch.
|
||||
|
@ -122,8 +122,8 @@ nsSocketTransportService::Dispatch(nsIRunnable *event, uint32_t flags)
|
||||
SOCKET_LOG(("STS dispatch [%p]\n", event));
|
||||
|
||||
nsCOMPtr<nsIThread> thread = GetThreadSafely();
|
||||
NS_ENSURE_TRUE(thread, NS_ERROR_NOT_INITIALIZED);
|
||||
nsresult rv = thread->Dispatch(event, flags);
|
||||
nsresult rv;
|
||||
rv = thread ? thread->Dispatch(event, flags) : NS_ERROR_NOT_INITIALIZED;
|
||||
if (rv == NS_ERROR_UNEXPECTED) {
|
||||
// Thread is no longer accepting events. We must have just shut it
|
||||
// down on the main thread. Pretend we never saw it.
|
||||
|
@ -457,8 +457,8 @@ nsDNSService::Init()
|
||||
|
||||
// prefs
|
||||
uint32_t maxCacheEntries = 400;
|
||||
uint32_t maxCacheLifetime = 2; // minutes
|
||||
uint32_t lifetimeGracePeriod = 1;
|
||||
uint32_t maxCacheLifetime = 120; // seconds
|
||||
uint32_t lifetimeGracePeriod = 60; // seconds
|
||||
bool disableIPv6 = false;
|
||||
bool disablePrefetch = false;
|
||||
int proxyType = nsIProtocolProxyService::PROXYCONFIG_DIRECT;
|
||||
@ -473,9 +473,9 @@ nsDNSService::Init()
|
||||
if (NS_SUCCEEDED(prefs->GetIntPref(kPrefDnsCacheEntries, &val)))
|
||||
maxCacheEntries = (uint32_t) val;
|
||||
if (NS_SUCCEEDED(prefs->GetIntPref(kPrefDnsCacheExpiration, &val)))
|
||||
maxCacheLifetime = val / 60; // convert from seconds to minutes
|
||||
maxCacheLifetime = val;
|
||||
if (NS_SUCCEEDED(prefs->GetIntPref(kPrefDnsCacheGrace, &val)))
|
||||
lifetimeGracePeriod = val / 60; // convert from seconds to minutes
|
||||
lifetimeGracePeriod = val;
|
||||
|
||||
// ASSUMPTION: pref branch does not modify out params on failure
|
||||
prefs->GetBoolPref(kPrefDisableIPv6, &disableIPv6);
|
||||
|
@ -415,8 +415,8 @@ nsHostResolver::nsHostResolver(uint32_t maxCacheEntries,
|
||||
uint32_t maxCacheLifetime,
|
||||
uint32_t lifetimeGracePeriod)
|
||||
: mMaxCacheEntries(maxCacheEntries)
|
||||
, mMaxCacheLifetime(TimeDuration::FromSeconds(maxCacheLifetime * 60))
|
||||
, mGracePeriod(lifetimeGracePeriod)
|
||||
, mMaxCacheLifetime(TimeDuration::FromSeconds(maxCacheLifetime))
|
||||
, mGracePeriod(TimeDuration::FromSeconds(lifetimeGracePeriod))
|
||||
, mLock("nsHostResolver.mLock")
|
||||
, mIdleThreadCV(mLock, "nsHostResolver.mIdleThreadCV")
|
||||
, mNumIdleThreads(0)
|
||||
@ -596,7 +596,7 @@ nsHostResolver::ResolveHost(const char *host,
|
||||
// do we have a cached result that we can reuse?
|
||||
else if (!(flags & RES_BYPASS_CACHE) &&
|
||||
he->rec->HasUsableResult(flags) &&
|
||||
TimeStamp::NowLoRes() <= (he->rec->expiration + TimeDuration::FromSeconds(mGracePeriod * 60))) {
|
||||
TimeStamp::NowLoRes() <= (he->rec->expiration + mGracePeriod)) {
|
||||
LOG((" Using cached record for host [%s].\n", host));
|
||||
// put reference to host record on stack...
|
||||
result = he->rec;
|
||||
@ -668,8 +668,7 @@ nsHostResolver::ResolveHost(const char *host,
|
||||
if (PL_DHASH_ENTRY_IS_BUSY(unspecHe) &&
|
||||
unspecHe->rec &&
|
||||
unspecHe->rec->HasUsableResult(flags) &&
|
||||
TimeStamp::NowLoRes() <= (he->rec->expiration +
|
||||
TimeDuration::FromSeconds(mGracePeriod * 60))) {
|
||||
TimeStamp::NowLoRes() <= (he->rec->expiration + mGracePeriod)) {
|
||||
|
||||
MOZ_ASSERT(unspecHe->rec->addr_info || unspecHe->rec->negative,
|
||||
"Entry should be resolved or negative.");
|
||||
|
@ -173,8 +173,8 @@ public:
|
||||
* creates an addref'd instance of a nsHostResolver object.
|
||||
*/
|
||||
static nsresult Create(uint32_t maxCacheEntries, // zero disables cache
|
||||
uint32_t maxCacheLifetime, // minutes
|
||||
uint32_t lifetimeGracePeriod, // minutes
|
||||
uint32_t maxCacheLifetime, // seconds
|
||||
uint32_t lifetimeGracePeriod, // seconds
|
||||
nsHostResolver **resolver);
|
||||
|
||||
/**
|
||||
@ -239,7 +239,7 @@ public:
|
||||
size_t SizeOfIncludingThis(mozilla::MallocSizeOf mallocSizeOf) const;
|
||||
|
||||
private:
|
||||
nsHostResolver(uint32_t maxCacheEntries = 50, uint32_t maxCacheLifetime = 1,
|
||||
nsHostResolver(uint32_t maxCacheEntries = 50, uint32_t maxCacheLifetime = 60,
|
||||
uint32_t lifetimeGracePeriod = 0);
|
||||
~nsHostResolver();
|
||||
|
||||
@ -272,8 +272,8 @@ private:
|
||||
};
|
||||
|
||||
uint32_t mMaxCacheEntries;
|
||||
mozilla::TimeDuration mMaxCacheLifetime;
|
||||
uint32_t mGracePeriod;
|
||||
mozilla::TimeDuration mMaxCacheLifetime; // granularity seconds
|
||||
mozilla::TimeDuration mGracePeriod; // granularity seconds
|
||||
mutable Mutex mLock; // mutable so SizeOfIncludingThis can be const
|
||||
CondVar mIdleThreadCV;
|
||||
uint32_t mNumIdleThreads;
|
||||
|
@ -1,35 +1,6 @@
|
||||
{
|
||||
"runtests": {},
|
||||
"excludetests": {
|
||||
"content/canvas/test/webgl": "bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests",
|
||||
"robocop": "TIMED_OUT",
|
||||
"Harness_sanity/test_bug816847.html": "No test app installed",
|
||||
"dom/imptests/html/webgl": "WebGL",
|
||||
"editor/libeditor/text/tests/test_texteditor_keyevent_handling.html": "",
|
||||
"Harness_sanity/test_sanitySimpletest.html": "bug 688052",
|
||||
"toolkit/content/tests/widgets/test_contextmenu_nested.xul": "",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_AppWindowNamespace.html": "TIMED_OUT, bug 783509",
|
||||
"layout/generic": "CRASH_DUMP, RANDOM, ONLY IN CHUNK 10",
|
||||
"dom/browser-element/mochitest/test_browserElement_oop_SecurityChange.html": "TIMED_OUT, bug 766586",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_SecurityChange.html": "TIMED_OUT, bug 766586",
|
||||
"content/base/test/test_copypaste.xul": "bug 904183",
|
||||
"content/media/test/test_played.html": "bug 751539",
|
||||
"content/media/test/test_playback_rate.html": "bug 845162",
|
||||
"content/media/test/test_seek.html": "bug 845162",
|
||||
"dom/devicestorage": "bug 781789 & bug 782275",
|
||||
"dom/imptests/editing/conformancetest/test_runtest.html": "",
|
||||
"toolkit/content/tests/widgets/test_menubar.xul": "W/SharedBufferStack(21799): waitForCondition(LockCondition) timed out (identity=34, status=0). CPU may be pegged. trying again",
|
||||
"content/media/test/test_buffered.html": "",
|
||||
"toolkit/components/satchel/test/test_form_autocomplete.html": "TIMED_OUT",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_CloseApp.html": "FAILS, bug 796982",
|
||||
"dom/tests/mochitest/geolocation/test_timeoutWatch.html": "TIMED_OUT",
|
||||
"dom/imptests/editing/selecttest/test_addRange.html": "bug 775227",
|
||||
"editor/libeditor/text/tests/test_bug569988.html": "TIMED_OUT",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_AppFramePermission.html": "",
|
||||
"toolkit/components/places/tests/test_bug_411966.html": "RANDOM",
|
||||
"dom/imptests/webapps/WebStorage/tests/submissions/Infraware/test_storage_local_key.html": "bug 775227",
|
||||
"toolkit/components/passwordmgr/test/test_privbrowsing_perwindowpb.html": "",
|
||||
"dom/inputmethod": "Not supported on Android",
|
||||
"Harness_sanity/test_sanityEventUtils.html": "bug 688052"
|
||||
"robocop": "TIMED_OUT"
|
||||
}
|
||||
}
|
||||
|
@ -1,36 +1,7 @@
|
||||
{
|
||||
"runtests": {},
|
||||
"excludetests": {
|
||||
"content/canvas/test/webgl": "bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests",
|
||||
"robocop": "TIMED_OUT",
|
||||
"Harness_sanity/test_bug816847.html": "No test app installed",
|
||||
"dom/imptests/html/webgl": "WebGL",
|
||||
"editor/libeditor/text/tests/test_texteditor_keyevent_handling.html": "",
|
||||
"Harness_sanity/test_sanitySimpletest.html": "bug 688052",
|
||||
"toolkit/content/tests/widgets/test_contextmenu_nested.xul": "",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_AppWindowNamespace.html": "TIMED_OUT, bug 783509",
|
||||
"layout/generic": "CRASH_DUMP, RANDOM, ONLY IN CHUNK 10",
|
||||
"dom/browser-element/mochitest/test_browserElement_oop_SecurityChange.html": "TIMED_OUT, bug 766586",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_SecurityChange.html": "TIMED_OUT, bug 766586",
|
||||
"content/base/test/test_copypaste.xul": "bug 904183",
|
||||
"content/media/test/test_played.html": "bug 751539",
|
||||
"content/media/test/test_playback_rate.html": "bug 845162",
|
||||
"content/media/test/test_seek.html": "bug 845162",
|
||||
"dom/devicestorage": "bug 781789 & bug 782275",
|
||||
"dom/imptests/editing/conformancetest/test_runtest.html": "",
|
||||
"toolkit/content/tests/widgets/test_menubar.xul": "W/SharedBufferStack(21799): waitForCondition(LockCondition) timed out (identity=34, status=0). CPU may be pegged. trying again",
|
||||
"content/media/test/test_buffered.html": "",
|
||||
"toolkit/components/satchel/test/test_form_autocomplete.html": "TIMED_OUT",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_CloseApp.html": "FAILS, bug 796982",
|
||||
"dom/tests/mochitest/geolocation/test_timeoutWatch.html": "TIMED_OUT",
|
||||
"dom/imptests/editing/selecttest/test_addRange.html": "bug 775227",
|
||||
"editor/libeditor/text/tests/test_bug569988.html": "TIMED_OUT",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_AppFramePermission.html": "",
|
||||
"toolkit/components/places/tests/test_bug_411966.html": "RANDOM",
|
||||
"dom/imptests/webapps/WebStorage/tests/submissions/Infraware/test_storage_local_key.html": "bug 775227",
|
||||
"toolkit/components/passwordmgr/test/test_privbrowsing_perwindowpb.html": "",
|
||||
"dom/inputmethod": "Not supported on Android",
|
||||
"Harness_sanity/test_sanityEventUtils.html": "bug 688052",
|
||||
"content/html/content/test/test_ignoreuserfocus.html": "Android 2.3 only; bug 981895",
|
||||
"content/media/test/test_audio_event_adopt.html": "Android 2.3 only; bug 981898",
|
||||
"content/media/test/test_autoplay.html": "Android 2.3 only; bug 981898",
|
||||
|
@ -1,120 +1,111 @@
|
||||
{
|
||||
"runtests": {},
|
||||
"excludetests": {
|
||||
"content/canvas/test/webgl": "bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests",
|
||||
"dom/imptests/html/webgl": "WebGL",
|
||||
"content/base/test/test_ipc_messagemanager_blob.html": "x86 only bug 936226",
|
||||
"content/base/test/test_copypaste.xul": "bug 904183",
|
||||
"toolkit/content/tests/widgets/test_contextmenu_nested.xul": "",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_AppWindowNamespace.html": "TIMED_OUT, bug 783509",
|
||||
"layout/generic": "CRASH_DUMP, RANDOM, ONLY IN CHUNK 10",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_SecurityChange.html": "TIMED_OUT, bug 766586",
|
||||
"dom/browser-element/mochitest/test_browserElement_oop_SecurityChange.html": "TIMED_OUT, bug 766586",
|
||||
"content/canvas/test/test_2d.composite.canvas.luminosity.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.source-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.destination-atop.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.source-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/webgl": "bug 865443- seperate suite - the non_conf* tests pass except for one on armv6 tests",
|
||||
"content/canvas/test/test_2d.composite.canvas.multiply.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.lighten.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.color-dodge.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.destination-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.screen.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.source-out.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.exclusion.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.source-out.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.soft-light.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.destination-atop.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_canvas.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.overlay.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.darken.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.source-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.saturation.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.destination-atop.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.source-out.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.color.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.destination-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.hue.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.difference.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.color-burn.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.destination-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.hard-light.html": "x86 only bug 913662",
|
||||
"content/html/content/test/forms/test_input_textarea_set_value_no_scroll.html": "x86 only",
|
||||
"content/media/test/test_media_selection.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug495300.html": "x86 only bug 914439",
|
||||
"content/media/test/test_new_audio.html": "x86 only bug 914439",
|
||||
"content/media/test/test_seeked.html": "x86 only bug 914439",
|
||||
"content/media/test/test_played.html": "bug 751539",
|
||||
"content/media/test/test_seek.html": "bug 845162",
|
||||
"dom/devicestorage": "bug 781789 & bug 782275",
|
||||
"dom/imptests/editing/conformancetest/test_runtest.html": "",
|
||||
"toolkit/content/tests/widgets/test_menubar.xul": "W/SharedBufferStack(21799): waitForCondition(LockCondition) timed out (identity=34, status=0). CPU may be pegged. trying again",
|
||||
"content/media/test/test_playback_rate.html": "bug 845162",
|
||||
"content/media/test/test_buffered.html": "",
|
||||
"toolkit/components/satchel/test/test_form_autocomplete.html": "TIMED_OUT",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_CloseApp.html": "FAILS, bug 796982",
|
||||
"editor/libeditor/text/tests/test_texteditor_keyevent_handling.html": "",
|
||||
"content/media/test/test_playback_rate_playpause.html": "x86 only bug 914439",
|
||||
"content/media/test/test_loop.html": "x86 only bug 914439",
|
||||
"content/media/test/test_play_twice.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug495145.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug465498.html": "",
|
||||
"content/media/test/test_play_events_2.html": "x86 only bug 914439",
|
||||
"content/media/test/test_media_sniffer.html": "x86 only bug 914439",
|
||||
"content/media/test/test_seek_out_of_range.html": "x86 only bug 914439"
|
||||
"content/media/test/test_load_same_resource.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug493187.html": "x86 only bug 914439",
|
||||
"content/media/test/test_autoplay_contentEditable.html": "x86 only",
|
||||
"content/media/test/test_audio2.html": "x86 only bug 914439",
|
||||
"content/media/test/test_can_play_type_mpeg.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug686942.html": "x86 only bug 914439",
|
||||
"content/media/test/test_standalone.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug448534.html": "x86 only bug 914439",
|
||||
"content/media/test/test_video_to_canvas.html": "x86 only bug 914439",
|
||||
"content/media/test/test_load_candidates.html": "x86 only bug 914439",
|
||||
"content/media/test/test_streams_element_capture_createObjectURL.html": "x86 only bug 914439",
|
||||
"content/media/test/test_progress.html": "x86 only bug 914439",
|
||||
"content/media/test/test_seekable1.html": "timeout x86 only bug 914439",
|
||||
"content/media/test/test_play_events.html": "x86 only bug 914439",
|
||||
"content/media/test/test_reactivate.html": "x86 only bug 914439",
|
||||
"content/media/test/test_referer.html": "x86 only",
|
||||
"content/media/webaudio/test/test_audioBufferSourceNodeNeutered.html": "x86 only",
|
||||
"content/media/test/test_load.html": "x86 only bug 914439",
|
||||
"content/media/test/test_streams_element_capture.html": "x86 only bug 914439",
|
||||
"content/media/test/test_replay_metadata.html": "x86 only bug 914439",
|
||||
"content/media/test/test_unseekable.html": "x86 only",
|
||||
"content/media/test/test_paused_after_ended.html": "x86 only bug 914439",
|
||||
"content/media/test/test_timeupdate_small_files.html": "x86 only bug 914439",
|
||||
"content/media/test/test_playback.html": "x86 only bug 914439",
|
||||
"docshell/test/navigation/test_not-opener.html": "x86 only",
|
||||
"dom/apps/tests/test_packaged_app_update.html": "x86 only",
|
||||
"dom/apps/tests/test_packaged_app_install.html": "x86 only",
|
||||
"dom/browser-element/mochitest/test_browserElement_oop_NextPaint.html": "x86 only bug 936226",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_GetScreenshot.html": "x86 only",
|
||||
"dom/browser-element/mochitest/test_browserElement_NoWhitelist.html": "x86 only bug 936226",
|
||||
"dom/browser-element/mochitest/test_browserElement_oop_SecurityChange.html": "TIMED_OUT, bug 766586",
|
||||
"dom/contacts/tests/test_contacts_getall.html": "x86 only",
|
||||
"dom/datastore/tests/test_oop.html": "x86 only bug 936226",
|
||||
"dom/datastore/tests/test_sync.html": "x86 only bug 936226",
|
||||
"dom/datastore/tests/test_readonly.html": "x86 only bug 936226",
|
||||
"dom/devicestorage": "bug 781789 & bug 782275",
|
||||
"dom/imptests/editing/selecttest/test_addRange.html": "bug 775227",
|
||||
"editor/libeditor/text/tests/test_bug569988.html": "TIMED_OUT",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_AppFramePermission.html": "",
|
||||
"toolkit/components/places/tests/test_bug_411966.html": "RANDOM",
|
||||
"dom/imptests/editing/conformancetest/test_runtest.html": "",
|
||||
"dom/imptests/webapps/WebStorage/tests/submissions/Infraware/test_storage_local_key.html": "bug 775227",
|
||||
"toolkit/components/passwordmgr/test/test_privbrowsing_perwindowpb.html": "",
|
||||
"dom/tests/mochitest/geolocation/test_timeoutWatch.html": "TIMED_OUT",
|
||||
"dom/imptests/html/webgl": "WebGL",
|
||||
"dom/inputmethod": "Not supported on Android",
|
||||
"dom/tests/mochitest/geolocation/test_timeoutWatch.html": "TIMED_OUT",
|
||||
"editor/libeditor/text/tests/test_bug569988.html": "TIMED_OUT",
|
||||
"editor/libeditor/text/tests/test_texteditor_keyevent_handling.html": "",
|
||||
"Harness_sanity/test_sanityWindowSnapshot.html": "x86 only",
|
||||
"image/test/mochitest/test_bug671906.html": "x86 only",
|
||||
"image/test/mochitest/test_bug89419-2.html": "x86 only",
|
||||
"image/test/mochitest/test_bug490949.html": "x86 only",
|
||||
"image/test/mochitest/test_bug497665.html": "x86 only",
|
||||
"image/test/mochitest/test_bug601470.html": "x86 only",
|
||||
"image/test/mochitest/test_bug89419-1.html": "x86 only",
|
||||
"layout/generic": "CRASH_DUMP, RANDOM, ONLY IN CHUNK 10",
|
||||
"MochiKit-1.4.2/tests/test_MochiKit-Async.html": "x86 only",
|
||||
"robocop": "TIMED_OUT",
|
||||
"Harness_sanity/test_bug816847.html": "No test app installed",
|
||||
"Harness_sanity/test_sanityEventUtils.html": "bug 688052",
|
||||
"Harness_sanity/test_sanitySimpletest.html": "bug 688052",
|
||||
"MochiKit-1.4.2/tests/test_MochiKit-Async.html": "x86 only",
|
||||
"content/base/test/test_ipc_messagemanager_blob.html" : "x86 only bug 936226",
|
||||
"content/canvas/test/test_2d.composite.canvas.color-burn.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.color-dodge.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.color.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.darken.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.destination-atop.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.destination-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.difference.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.exclusion.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.hard-light.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.hue.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.lighten.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.luminosity.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.multiply.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.overlay.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.saturation.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.screen.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.soft-light.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.source-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.canvas.source-out.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.destination-atop.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.destination-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.source-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.image.source-out.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.destination-atop.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.destination-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.source-in.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_2d.composite.uncovered.image.source-out.html": "x86 only bug 913662",
|
||||
"content/canvas/test/test_canvas.html": "x86 only bug 913662",
|
||||
"content/html/content/test/forms/test_input_textarea_set_value_no_scroll.html": "x86 only",
|
||||
"content/media/test/test_autoplay_contentEditable.html": "x86 only",
|
||||
"content/media/test/test_bug465498.html": "",
|
||||
"content/media/test/test_bug448534.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug493187.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug495145.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug495300.html": "x86 only bug 914439",
|
||||
"content/media/test/test_bug686942.html": "x86 only bug 914439",
|
||||
"content/media/test/test_can_play_type_mpeg.html": "x86 only bug 914439",
|
||||
"content/media/test/test_audio2.html": "x86 only bug 914439",
|
||||
"content/media/test/test_load.html": "x86 only bug 914439",
|
||||
"content/media/test/test_load_candidates.html": "x86 only bug 914439",
|
||||
"content/media/test/test_load_same_resource.html": "x86 only bug 914439",
|
||||
"content/media/test/test_loop.html": "x86 only bug 914439",
|
||||
"content/media/test/test_media_selection.html": "x86 only bug 914439",
|
||||
"content/media/test/test_media_sniffer.html": "x86 only bug 914439",
|
||||
"content/media/test/test_new_audio.html": "x86 only bug 914439",
|
||||
"content/media/test/test_paused_after_ended.html": "x86 only bug 914439",
|
||||
"content/media/test/test_play_events.html": "x86 only bug 914439",
|
||||
"content/media/test/test_play_events_2.html": "x86 only bug 914439",
|
||||
"content/media/test/test_play_twice.html": "x86 only bug 914439",
|
||||
"content/media/test/test_playback.html": "x86 only bug 914439",
|
||||
"content/media/test/test_playback_rate_playpause.html": "x86 only bug 914439",
|
||||
"content/media/test/test_progress.html": "x86 only bug 914439",
|
||||
"content/media/test/test_reactivate.html": "x86 only bug 914439",
|
||||
"content/media/test/test_referer.html": "x86 only",
|
||||
"content/media/test/test_replay_metadata.html": "x86 only bug 914439",
|
||||
"content/media/test/test_seek_out_of_range.html": "x86 only bug 914439",
|
||||
"content/media/test/test_seekable1.html": "timeout x86 only bug 914439",
|
||||
"content/media/test/test_seeked.html": "x86 only bug 914439",
|
||||
"content/media/test/test_standalone.html": "x86 only bug 914439",
|
||||
"content/media/test/test_streams_element_capture.html": "x86 only bug 914439",
|
||||
"content/media/test/test_streams_element_capture_createObjectURL.html": "x86 only bug 914439",
|
||||
"content/media/test/test_timeupdate_small_files.html": "x86 only bug 914439",
|
||||
"content/media/test/test_unseekable.html": "x86 only",
|
||||
"content/media/test/test_video_to_canvas.html": "x86 only bug 914439",
|
||||
"content/media/webaudio/test/test_audioBufferSourceNodeNeutered.html": "x86 only",
|
||||
"docshell/test/navigation/test_not-opener.html": "x86 only",
|
||||
"dom/apps/tests/test_packaged_app_install.html": "x86 only",
|
||||
"dom/apps/tests/test_packaged_app_update.html": "x86 only",
|
||||
"dom/browser-element/mochitest/test_browserElement_inproc_GetScreenshot.html": "x86 only",
|
||||
"dom/browser-element/mochitest/test_browserElement_NoWhitelist.html": "x86 only bug 936226",
|
||||
"dom/browser-element/mochitest/test_browserElement_oop_NextPaint.html": "x86 only bug 936226",
|
||||
"dom/contacts/tests/test_contacts_getall.html": "x86 only",
|
||||
"dom/datastore/tests/test_oop.html": "x86 only bug 936226",
|
||||
"dom/datastore/tests/test_readonly.html": "x86 only bug 936226",
|
||||
"dom/datastore/tests/test_sync.html": "x86 only bug 936226",
|
||||
"image/test/mochitest/test_bug490949.html": "x86 only",
|
||||
"image/test/mochitest/test_bug497665.html": "x86 only",
|
||||
"image/test/mochitest/test_bug601470.html": "x86 only",
|
||||
"image/test/mochitest/test_bug671906.html": "x86 only",
|
||||
"image/test/mochitest/test_bug89419-1.html": "x86 only",
|
||||
"image/test/mochitest/test_bug89419-2.html": "x86 only",
|
||||
"toolkit/components/alerts/test/test_alerts_noobserve.html": "x86 only",
|
||||
"Harness_sanity/test_sanityWindowSnapshot.html": "x86 only"
|
||||
}
|
||||
"toolkit/components/satchel/test/test_form_autocomplete.html": "TIMED_OUT",
|
||||
"toolkit/components/alerts/test/test_alerts_noobserve.html": "x86 only",
|
||||
"toolkit/components/places/tests/test_bug_411966.html": "RANDOM",
|
||||
"toolkit/components/passwordmgr/test/test_privbrowsing_perwindowpb.html": "",
|
||||
"toolkit/content/tests/widgets/test_menubar.xul": "W/SharedBufferStack(21799",
|
||||
"toolkit/content/tests/widgets/test_contextmenu_nested.xul": ""
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,10 @@ support-files = file_SpecialPowersFrame1.html
|
||||
[test_SpecialPowersLoadChromeScript.html]
|
||||
support-files = SpecialPowersLoadChromeScript.js
|
||||
[test_bug816847.html]
|
||||
skip-if = toolkit == 'android' #No test app installed
|
||||
[test_sanity_cleanup.html]
|
||||
[test_sanity_cleanup2.html]
|
||||
[test_sanityEventUtils.html]
|
||||
skip-if = toolkit == 'android' #bug 688052
|
||||
[test_sanitySimpletest.html]
|
||||
|
||||
skip-if = toolkit == 'android' #bug 688052
|
||||
|
@ -128,7 +128,7 @@ FxAccountsService.prototype = {
|
||||
|
||||
this.fxAccountsManager.getAssertion(rp.audience, options).then(
|
||||
data => {
|
||||
log.debug("got assertion: " + JSON.stringify(data));
|
||||
log.debug("got assertion for " + rp.audience + ": " + data);
|
||||
this.doLogin(aRPId, data);
|
||||
},
|
||||
error => {
|
||||
|
@ -1314,6 +1314,20 @@ GetMessageName(UINT aMessage)
|
||||
|
||||
#endif // #ifdef MOZ_CRASHREPORTER
|
||||
|
||||
bool
|
||||
NativeKey::MayBeSameCharMessage(const MSG& aCharMsg1,
|
||||
const MSG& aCharMsg2) const
|
||||
{
|
||||
// NOTE: Although, we don't know when this case occurs, the scan code value
|
||||
// in lParam may be changed from 0 to something. The changed value
|
||||
// is different from the scan code of handling keydown message.
|
||||
static const LPARAM kScanCodeMask = 0x00FF0000;
|
||||
return
|
||||
aCharMsg1.message == aCharMsg2.message &&
|
||||
aCharMsg1.wParam == aCharMsg2.wParam &&
|
||||
(aCharMsg1.lParam & ~kScanCodeMask) == (aCharMsg2.lParam & ~kScanCodeMask);
|
||||
}
|
||||
|
||||
bool
|
||||
NativeKey::GetFollowingCharMessage(MSG& aCharMsg) const
|
||||
{
|
||||
@ -1351,13 +1365,14 @@ NativeKey::GetFollowingCharMessage(MSG& aCharMsg) const
|
||||
// the message range. So, if it returns WM_NULL, we should retry to get
|
||||
// the following char message it was found above.
|
||||
for (uint32_t i = 0; i < 5; i++) {
|
||||
static const LPARAM kScanCodeMask = 0x00FF0000;
|
||||
|
||||
MSG removedMsg;
|
||||
MSG removedMsg, nextKeyMsgInAllWindows;
|
||||
bool doCrash = false;
|
||||
if (!WinUtils::PeekMessage(&removedMsg, mMsg.hwnd,
|
||||
nextKeyMsg.message, nextKeyMsg.message,
|
||||
PM_REMOVE | PM_NOYIELD)) {
|
||||
MSG nextKeyMsgInAllWindows;
|
||||
// We meets unexpected case. We should collect the message queue state
|
||||
// and crash for reporting the bug.
|
||||
doCrash = true;
|
||||
// The char message is redirected to different thread's window by focus
|
||||
// move or something or just cancelled by external application.
|
||||
if (!WinUtils::PeekMessage(&nextKeyMsgInAllWindows, 0,
|
||||
@ -1365,20 +1380,29 @@ NativeKey::GetFollowingCharMessage(MSG& aCharMsg) const
|
||||
PM_NOREMOVE | PM_NOYIELD)) {
|
||||
return true;
|
||||
}
|
||||
// The char message is redirected to different window created by our
|
||||
// thread.
|
||||
if (nextKeyMsgInAllWindows.message == nextKeyMsg.message &&
|
||||
nextKeyMsgInAllWindows.wParam == nextKeyMsg.wParam &&
|
||||
(nextKeyMsgInAllWindows.lParam & ~kScanCodeMask) ==
|
||||
(nextKeyMsg.lParam & ~kScanCodeMask) &&
|
||||
nextKeyMsgInAllWindows.hwnd != mMsg.hwnd) {
|
||||
aCharMsg = nextKeyMsgInAllWindows;
|
||||
return true;
|
||||
if (MayBeSameCharMessage(nextKeyMsgInAllWindows, nextKeyMsg)) {
|
||||
// The char message is redirected to different window created by our
|
||||
// thread.
|
||||
if (nextKeyMsgInAllWindows.hwnd != mMsg.hwnd) {
|
||||
aCharMsg = nextKeyMsgInAllWindows;
|
||||
return true;
|
||||
}
|
||||
// The found char message still in the queue, but PeekMessage() failed
|
||||
// to remove it only with PM_REMOVE. Although, we don't know why this
|
||||
// occurs. However, this occurs acctually.
|
||||
// Try to remove the char message with GetMessage() again.
|
||||
if (WinUtils::GetMessage(&removedMsg, mMsg.hwnd,
|
||||
nextKeyMsg.message, nextKeyMsg.message)) {
|
||||
// Cancel to crash, but we need to check the removed message value.
|
||||
doCrash = false;
|
||||
}
|
||||
}
|
||||
// Otherwise, perhaps, we meet a PeekMessage()'s bug. Let's crash and
|
||||
// collect the detail.
|
||||
}
|
||||
|
||||
if (doCrash) {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
nsPrintfCString info("\nHandling message: %s (0x%08X), wParam: 0x%08X, "
|
||||
nsPrintfCString info("\nPeekMessage() failed to remove char message! "
|
||||
"\nHandling message: %s (0x%08X), wParam: 0x%08X, "
|
||||
"lParam: 0x%08X, hwnd=0x%p, InSendMessageEx()=%s, \n"
|
||||
"Found message: %s (0x%08X), wParam: 0x%08X, "
|
||||
"lParam: 0x%08X, hwnd=0x%p, "
|
||||
@ -1426,12 +1450,10 @@ NativeKey::GetFollowingCharMessage(MSG& aCharMsg) const
|
||||
// NOTE: Although, we don't know when this case occurs, the scan code value
|
||||
// in lParam may be changed from 0 to something. The changed value
|
||||
// is different from the scan code of handling keydown message.
|
||||
if (removedMsg.message != nextKeyMsg.message ||
|
||||
removedMsg.wParam != nextKeyMsg.wParam ||
|
||||
(removedMsg.lParam & ~kScanCodeMask) !=
|
||||
(nextKeyMsg.lParam & ~kScanCodeMask)) {
|
||||
if (!MayBeSameCharMessage(removedMsg, nextKeyMsg)) {
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
nsPrintfCString info("\nHandling message: %s (0x%08X), wParam: 0x%08X, "
|
||||
nsPrintfCString info("\nPeekMessage() removed unexpcted char message! "
|
||||
"\nHandling message: %s (0x%08X), wParam: 0x%08X, "
|
||||
"lParam: 0x%08X, hwnd=0x%p, InSendMessageEx()=%s, "
|
||||
"\nFound message: %s (0x%08X), wParam: 0x%08X, "
|
||||
"lParam: 0x%08X, hwnd=0x%p, "
|
||||
@ -1489,7 +1511,8 @@ NativeKey::GetFollowingCharMessage(MSG& aCharMsg) const
|
||||
return true;
|
||||
}
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
nsPrintfCString info("\nHandling message: %s (0x%08X), wParam: 0x%08X, "
|
||||
nsPrintfCString info("\nWe lost following char message! "
|
||||
"\nHandling message: %s (0x%08X), wParam: 0x%08X, "
|
||||
"lParam: 0x%08X, InSendMessageEx()=%s, \n"
|
||||
"Found message: %s (0x%08X), wParam: 0x%08X, "
|
||||
"lParam: 0x%08X, removed a lot of WM_NULL",
|
||||
@ -1517,16 +1540,21 @@ NativeKey::DispatchPluginEventsAndDiscardsCharMessages() const
|
||||
bool anyCharMessagesRemoved = false;
|
||||
MSG msg;
|
||||
while (GetFollowingCharMessage(msg)) {
|
||||
if (mWidget->Destroyed()) {
|
||||
MOZ_CRASH(
|
||||
"NativeKey tries to dispatch a plugin event on destroyed widget");
|
||||
if (msg.message == WM_NULL) {
|
||||
continue;
|
||||
}
|
||||
anyCharMessagesRemoved = true;
|
||||
// If the window handle is changed, focused window must be changed.
|
||||
// So, plugin shouldn't handle it anymore.
|
||||
if (msg.hwnd != mMsg.hwnd) {
|
||||
break;
|
||||
}
|
||||
MOZ_RELEASE_ASSERT(!mWidget->Destroyed(),
|
||||
"NativeKey tries to dispatch a plugin event on destroyed widget");
|
||||
mWidget->DispatchPluginEvent(msg);
|
||||
if (mWidget->Destroyed()) {
|
||||
return true;
|
||||
}
|
||||
|
||||
anyCharMessagesRemoved = true;
|
||||
}
|
||||
|
||||
if (!mFakeCharMsgs && !anyCharMessagesRemoved &&
|
||||
@ -1535,15 +1563,12 @@ NativeKey::DispatchPluginEventsAndDiscardsCharMessages() const
|
||||
while (WinUtils::PeekMessage(&msg, mMsg.hwnd, WM_CHAR, WM_CHAR,
|
||||
PM_REMOVE | PM_NOYIELD)) {
|
||||
if (msg.message != WM_CHAR) {
|
||||
if (msg.message != WM_NULL) {
|
||||
MOZ_CRASH("Unexpected message was removed");
|
||||
}
|
||||
MOZ_RELEASE_ASSERT(msg.message == WM_NULL,
|
||||
"Unexpected message was removed");
|
||||
continue;
|
||||
}
|
||||
if (mWidget->Destroyed()) {
|
||||
MOZ_CRASH(
|
||||
"NativeKey tries to dispatch a plugin event on destroyed widget");
|
||||
}
|
||||
MOZ_RELEASE_ASSERT(!mWidget->Destroyed(),
|
||||
"NativeKey tries to dispatch a plugin event on destroyed widget");
|
||||
mWidget->DispatchPluginEvent(msg);
|
||||
return mWidget->Destroyed();
|
||||
}
|
||||
|
@ -368,6 +368,7 @@ private:
|
||||
{
|
||||
return (aMessage == WM_SYSCHAR || aMessage == WM_SYSDEADCHAR);
|
||||
}
|
||||
bool MayBeSameCharMessage(const MSG& aCharMsg1, const MSG& aCharMsg2) const;
|
||||
bool IsFollowedByDeadCharMessage() const;
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user