Merge m-c to b2g-inbound.

This commit is contained in:
Ryan VanderMeulen 2014-03-12 11:33:22 -04:00
commit f06b210e1a
70 changed files with 1124 additions and 556 deletions

View File

@ -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.

View File

@ -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)

View File

@ -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

View File

@ -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.

View File

@ -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();

View File

@ -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

View File

@ -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);
}

View File

@ -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();

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -1,4 +1,5 @@
[DEFAULT]
skip-if = toolkit == 'android' #bug 781789 & bug 782275
support-files = ../test/devicestorage_common.js
[test_ipc.html]

View File

@ -1,4 +1,5 @@
[DEFAULT]
skip-if = toolkit == 'android' #bug 781789 & bug 782275
support-files = devicestorage_common.js
[test_823965.html]

View File

@ -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");

View File

@ -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;
},

View File

@ -0,0 +1,6 @@
[DEFAULT]
support-files=
file_declareAudience.html
[test_declareAudience.html]

View 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>

View 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>

View File

@ -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']

View File

@ -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]

View File

@ -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

View File

@ -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]

View File

@ -1,4 +1,5 @@
[DEFAULT]
skip-if = toolkit == 'android' #Not supported on Android
support-files =
inputmethod_common.js
file_inputmethod.html

View File

@ -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)) {

View File

@ -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

View File

@ -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)

View File

@ -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;
}

View File

@ -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;

View File

@ -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!");

View File

@ -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

View File

@ -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; }

View File

@ -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);

View File

@ -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; }

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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).
*/

View File

@ -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,

View File

@ -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.

View File

@ -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.

View File

@ -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);

View File

@ -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.");

View File

@ -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;

View File

@ -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"
}
}

View File

@ -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",

View File

@ -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": ""
}
}

View File

@ -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

View File

@ -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 => {

View File

@ -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();
}

View File

@ -368,6 +368,7 @@ private:
{
return (aMessage == WM_SYSCHAR || aMessage == WM_SYSDEADCHAR);
}
bool MayBeSameCharMessage(const MSG& aCharMsg1, const MSG& aCharMsg2) const;
bool IsFollowedByDeadCharMessage() const;
/**