mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-09 03:15:11 +00:00
Merge m-c to inbound a=merge
MozReview-Commit-ID: G24aq5fbYNd
This commit is contained in:
commit
105aea2522
@ -32,7 +32,6 @@ function dumpAccessibleNode(aNode, level) {
|
||||
|
||||
|
||||
function dumpAccessibleTree(aNode, level) {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
level = level || 0;
|
||||
|
||||
dumpAccessibleNode(aNode, level);
|
||||
@ -48,14 +47,12 @@ netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
}
|
||||
|
||||
function A(o) {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
var acc = Components.classes['@mozilla.org/accessibilityService;1']
|
||||
.getService(Components.interfaces.nsIAccessibilityService);
|
||||
var acc = SpecialPowers.Cc['@mozilla.org/accessibilityService;1']
|
||||
.getService(SpecialPowers.Ci.nsIAccessibilityService);
|
||||
return acc.getAccessibleFor(o);
|
||||
}
|
||||
|
||||
function beginAccessible() {
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
dumpAccessibleTree(A(document),0);
|
||||
}
|
||||
setTimeout(beginAccessible, 100);
|
||||
|
129
browser/extensions/formautofill/ProfileAutoCompleteResult.jsm
Normal file
129
browser/extensions/formautofill/ProfileAutoCompleteResult.jsm
Normal file
@ -0,0 +1,129 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
this.EXPORTED_SYMBOLS = ["ProfileAutoCompleteResult"];
|
||||
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
this.ProfileAutoCompleteResult = function(searchString,
|
||||
fieldName,
|
||||
matchingProfiles,
|
||||
{resultCode = null}) {
|
||||
this.searchString = searchString;
|
||||
this._fieldName = fieldName;
|
||||
this._matchingProfiles = matchingProfiles;
|
||||
|
||||
if (resultCode) {
|
||||
this.searchResult = resultCode;
|
||||
} else if (matchingProfiles.length > 0) {
|
||||
this.searchResult = Ci.nsIAutoCompleteResult.RESULT_SUCCESS;
|
||||
} else {
|
||||
this.searchResult = Ci.nsIAutoCompleteResult.RESULT_NOMATCH;
|
||||
}
|
||||
};
|
||||
|
||||
ProfileAutoCompleteResult.prototype = {
|
||||
|
||||
// The user's query string
|
||||
searchString: "",
|
||||
|
||||
// The default item that should be entered if none is selected
|
||||
defaultIndex: 0,
|
||||
|
||||
// The reason the search failed
|
||||
errorDescription: "",
|
||||
|
||||
// The result code of this result object.
|
||||
searchResult: null,
|
||||
|
||||
// The autocomplete attribute of the focused input field
|
||||
_fieldName: "",
|
||||
|
||||
// The matching profiles contains the information for filling forms.
|
||||
_matchingProfiles: null,
|
||||
|
||||
/**
|
||||
* @returns {number} The number of results
|
||||
*/
|
||||
get matchCount() {
|
||||
return this._matchingProfiles.length;
|
||||
},
|
||||
|
||||
_checkIndexBounds(index) {
|
||||
if (index < 0 || index >= this._matchingProfiles.length) {
|
||||
throw Components.Exception("Index out of range.", Cr.NS_ERROR_ILLEGAL_VALUE);
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieves a result
|
||||
* @param {number} index The index of the result requested
|
||||
* @returns {string} The result at the specified index
|
||||
*/
|
||||
getValueAt(index) {
|
||||
this._checkIndexBounds(index);
|
||||
return this._matchingProfiles[index].guid;
|
||||
},
|
||||
|
||||
getLabelAt(index) {
|
||||
this._checkIndexBounds(index);
|
||||
return this._matchingProfiles[index].organization;
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieves a comment (metadata instance)
|
||||
* @param {number} index The index of the comment requested
|
||||
* @returns {string} The comment at the specified index
|
||||
*/
|
||||
getCommentAt(index) {
|
||||
this._checkIndexBounds(index);
|
||||
return this._matchingProfiles[index].streetAddress;
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieves a style hint specific to a particular index.
|
||||
* @param {number} index The index of the style hint requested
|
||||
* @returns {string} The style hint at the specified index
|
||||
*/
|
||||
getStyleAt(index) {
|
||||
this._checkIndexBounds(index);
|
||||
return "autofill-profile";
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieves an image url.
|
||||
* @param {number} index The index of the image url requested
|
||||
* @returns {string} The image url at the specified index
|
||||
*/
|
||||
getImageAt(index) {
|
||||
this._checkIndexBounds(index);
|
||||
return "";
|
||||
},
|
||||
|
||||
/**
|
||||
* Retrieves a result
|
||||
* @param {number} index The index of the result requested
|
||||
* @returns {string} The result at the specified index
|
||||
*/
|
||||
getFinalCompleteValueAt(index) {
|
||||
return this.getValueAt(index);
|
||||
},
|
||||
|
||||
/**
|
||||
* Removes a result from the resultset
|
||||
* @param {number} index The index of the result to remove
|
||||
* @param {boolean} removeFromDatabase TRUE for removing data from DataBase
|
||||
* as well.
|
||||
*/
|
||||
removeValueAt(index, removeFromDatabase) {
|
||||
// There is no plan to support removing profiles via autocomplete.
|
||||
},
|
||||
|
||||
// nsISupports
|
||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIAutoCompleteResult]),
|
||||
};
|
@ -11,8 +11,9 @@
|
||||
const {classes: Cc, interfaces: Ci, utils: Cu, results: Cr, manager: Cm} = Components;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/nsFormAutoCompleteResult.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "ProfileAutoCompleteResult",
|
||||
"resource://formautofill/ProfileAutoCompleteResult.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "FormLikeFactory",
|
||||
"resource://gre/modules/FormLikeFactory.jsm");
|
||||
|
||||
@ -227,13 +228,19 @@ AutofillProfileAutoCompleteSearch.prototype = {
|
||||
*/
|
||||
startSearch(searchString, searchParam, previousResult, listener) {
|
||||
// TODO: These mock data should be replaced by form autofill API
|
||||
let labels = ["Mary", "John"];
|
||||
let values = ["Mary S.", "John S."];
|
||||
let comments = ["123 Sesame Street.", "331 E. Evelyn Avenue"];
|
||||
let result = new FormAutoCompleteResult(searchString,
|
||||
Ci.nsIAutoCompleteResult.RESULT_SUCCESS,
|
||||
0, "", values, labels,
|
||||
comments);
|
||||
let fieldName = "name";
|
||||
let profiles = [{
|
||||
guid: "test-guid-1",
|
||||
organization: "Sesame Street",
|
||||
streetAddress: "123 Sesame Street.",
|
||||
tel: "1-345-345-3456.",
|
||||
}, {
|
||||
guid: "test-guid-2",
|
||||
organization: "Mozilla",
|
||||
streetAddress: "331 E. Evelyn Avenue",
|
||||
tel: "1-650-903-0800",
|
||||
}];
|
||||
let result = new ProfileAutoCompleteResult(searchString, fieldName, profiles, {});
|
||||
|
||||
listener.onSearchResult(this, result);
|
||||
},
|
||||
|
@ -0,0 +1,82 @@
|
||||
"use strict";
|
||||
|
||||
Cu.import("resource://formautofill/ProfileAutoCompleteResult.jsm");
|
||||
|
||||
let matchingProfiles = [{
|
||||
guid: "test-guid-1",
|
||||
organization: "Sesame Street",
|
||||
streetAddress: "123 Sesame Street.",
|
||||
tel: "1-345-345-3456.",
|
||||
}, {
|
||||
guid: "test-guid-2",
|
||||
organization: "Mozilla",
|
||||
streetAddress: "331 E. Evelyn Avenue",
|
||||
tel: "1-650-903-0800",
|
||||
}];
|
||||
|
||||
let testCases = [{
|
||||
options: {},
|
||||
matchingProfiles: matchingProfiles,
|
||||
searchString: "",
|
||||
fieldName: "",
|
||||
expected: {
|
||||
searchResult: Ci.nsIAutoCompleteResult.RESULT_SUCCESS,
|
||||
defaultIndex: 0,
|
||||
items: [{
|
||||
style: "autofill-profile",
|
||||
image: "",
|
||||
}, {
|
||||
style: "autofill-profile",
|
||||
image: "",
|
||||
}],
|
||||
},
|
||||
}, {
|
||||
options: {},
|
||||
matchingProfiles: [],
|
||||
searchString: "",
|
||||
fieldName: "",
|
||||
expected: {
|
||||
searchResult: Ci.nsIAutoCompleteResult.RESULT_NOMATCH,
|
||||
defaultIndex: 0,
|
||||
items: [],
|
||||
},
|
||||
}, {
|
||||
options: {resultCode: Ci.nsIAutoCompleteResult.RESULT_FAILURE},
|
||||
matchingProfiles: [],
|
||||
searchString: "",
|
||||
fieldName: "",
|
||||
expected: {
|
||||
searchResult: Ci.nsIAutoCompleteResult.RESULT_FAILURE,
|
||||
defaultIndex: 0,
|
||||
items: [],
|
||||
},
|
||||
}];
|
||||
|
||||
add_task(function* test_all_patterns() {
|
||||
testCases.forEach(pattern => {
|
||||
let actual = new ProfileAutoCompleteResult(pattern.searchString,
|
||||
pattern.fieldName,
|
||||
pattern.matchingProfiles,
|
||||
pattern.options);
|
||||
let expectedValue = pattern.expected;
|
||||
equal(actual.searchResult, expectedValue.searchResult);
|
||||
equal(actual.defaultIndex, expectedValue.defaultIndex);
|
||||
equal(actual.matchCount, expectedValue.items.length);
|
||||
expectedValue.items.forEach((item, index) => {
|
||||
// TODO: getValueAt, getLabelAt, and getCommentAt should be verified here.
|
||||
equal(actual.getStyleAt(index), item.style);
|
||||
equal(actual.getImageAt(index), item.image);
|
||||
});
|
||||
|
||||
if (expectedValue.items.length != 0) {
|
||||
Assert.throws(() => actual.getValueAt(expectedValue.items.length),
|
||||
/Index out of range\./);
|
||||
|
||||
Assert.throws(() => actual.getLabelAt(expectedValue.items.length),
|
||||
/Index out of range\./);
|
||||
|
||||
Assert.throws(() => actual.getCommentAt(expectedValue.items.length),
|
||||
/Index out of range\./);
|
||||
}
|
||||
});
|
||||
});
|
@ -6,6 +6,7 @@ support-files =
|
||||
|
||||
[test_autofillFormFields.js]
|
||||
[test_collectFormFields.js]
|
||||
[test_populateFieldValues.js]
|
||||
[test_profileStorage.js]
|
||||
[test_markAsAutofillField.js]
|
||||
[test_populateFieldValues.js]
|
||||
[test_profileAutocompleteResult.js]
|
||||
[test_profileStorage.js]
|
||||
|
@ -33,7 +33,7 @@
|
||||
</dl>
|
||||
<p><dt><h3>@firefox_heading@</h3></dt>
|
||||
<dl><p>
|
||||
<dt><a href="https://www.mozilla.org/@AB_CD@/firefox/help/" icon="@mozilla_icon@">@firefox_help@</a>
|
||||
<dt><a href="https://support.mozilla.org/@AB_CD@/products/firefox" icon="@mozilla_icon@">@firefox_help@</a>
|
||||
<dt><a href="https://www.mozilla.org/@AB_CD@/firefox/customize/" icon="@mozilla_icon@">@firefox_customize@</a>
|
||||
<dt><a href="https://www.mozilla.org/@AB_CD@/contribute/" icon="@mozilla_icon@">@firefox_community@</a>
|
||||
<dt><a href="https://www.mozilla.org/@AB_CD@/about/" icon="@mozilla_icon@">@firefox_about@</a>
|
||||
|
@ -10,7 +10,10 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { createFactories } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { Caption } = createFactories(require("./caption"));
|
||||
const { MODE } = require("./constants");
|
||||
|
||||
@ -116,7 +119,7 @@ define(function (require, exports, module) {
|
||||
onClickBracket: function (event) {
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let {
|
||||
object,
|
||||
mode = MODE.SHORT,
|
||||
@ -158,7 +161,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
/**
|
||||
@ -167,7 +170,7 @@ define(function (require, exports, module) {
|
||||
let ItemRep = React.createFactory(React.createClass({
|
||||
displayName: "ItemRep",
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
const { Rep } = createFactories(require("./rep"));
|
||||
|
||||
let object = this.props.object;
|
||||
@ -179,7 +182,7 @@ define(function (require, exports, module) {
|
||||
delim
|
||||
)
|
||||
);
|
||||
}
|
||||
})
|
||||
}));
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { createFactories, isGrip } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { StringRep } = require("./string");
|
||||
|
||||
// Shortcuts
|
||||
@ -32,7 +36,7 @@ define(function (require, exports, module) {
|
||||
return grip.preview.nodeName;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let object = this.props.object;
|
||||
let value = object.preview.value;
|
||||
let objectLink = this.props.objectLink || span;
|
||||
@ -50,7 +54,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -12,6 +12,8 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const DOM = React.DOM;
|
||||
|
||||
const { wrapRender } = require("./rep-utils");
|
||||
|
||||
/**
|
||||
* Renders a caption. This template is used by other components
|
||||
* that needs to distinguish between a simple text/value and a label.
|
||||
@ -19,11 +21,11 @@ define(function (require, exports, module) {
|
||||
const Caption = React.createClass({
|
||||
displayName: "Caption",
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
return (
|
||||
DOM.span({"className": "caption"}, this.props.object)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Exports from this module
|
||||
|
@ -9,7 +9,12 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { isGrip, cropString, cropMultipleLines } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
cropString,
|
||||
cropMultipleLines,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { MODE } = require("./constants");
|
||||
const nodeConstants = require("devtools/shared/dom-node-constants");
|
||||
|
||||
@ -28,7 +33,7 @@ define(function (require, exports, module) {
|
||||
mode: React.PropTypes.oneOf(Object.keys(MODE).map(key => MODE[key])),
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let {
|
||||
object,
|
||||
mode = MODE.SHORT
|
||||
@ -42,7 +47,7 @@ define(function (require, exports, module) {
|
||||
}
|
||||
|
||||
return span({className: "objectBox theme-comment"}, `<!-- ${textContent} -->`);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,7 +11,10 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -35,7 +38,7 @@ define(function (require, exports, module) {
|
||||
return "";
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
let date;
|
||||
try {
|
||||
@ -48,8 +51,9 @@ define(function (require, exports, module) {
|
||||
} catch (e) {
|
||||
date = span({className: "objectBox"}, "Invalid Date");
|
||||
}
|
||||
|
||||
return date;
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip, getURLDisplayString } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
getURLDisplayString,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -46,7 +50,7 @@ define(function (require, exports, module) {
|
||||
return doc.location.href;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
|
||||
return (
|
||||
@ -57,7 +61,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,7 +11,10 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Utils
|
||||
const { isGrip } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { MODE } = require("./constants");
|
||||
const nodeConstants = require("devtools/shared/dom-node-constants");
|
||||
|
||||
@ -88,7 +91,7 @@ define(function (require, exports, module) {
|
||||
];
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let {
|
||||
object,
|
||||
mode,
|
||||
@ -114,7 +117,7 @@ define(function (require, exports, module) {
|
||||
return objectLink({object},
|
||||
span(baseConfig, ...elements)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -8,7 +8,10 @@ define(function (require, exports, module) {
|
||||
// ReactJS
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
// Utils
|
||||
const { isGrip } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { MODE } = require("./constants");
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -25,7 +28,7 @@ define(function (require, exports, module) {
|
||||
mode: React.PropTypes.oneOf(Object.keys(MODE).map(key => MODE[key])),
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let object = this.props.object;
|
||||
let preview = object.preview;
|
||||
let name = preview && preview.name
|
||||
@ -51,7 +54,7 @@ define(function (require, exports, module) {
|
||||
span({}, content)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { createFactories, isGrip } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { rep } = createFactories(require("./grip").Grip);
|
||||
|
||||
/**
|
||||
@ -34,7 +38,7 @@ define(function (require, exports, module) {
|
||||
return title;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
// Use `Object.assign` to keep `this.props` without changes because:
|
||||
// 1. JSON.stringify/JSON.parse is slow.
|
||||
// 2. Immutable.js is planned for the future.
|
||||
@ -80,7 +84,7 @@ define(function (require, exports, module) {
|
||||
}
|
||||
|
||||
return rep(props);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip, cropString } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
cropString,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -40,7 +44,7 @@ define(function (require, exports, module) {
|
||||
return cropString(name + "()", 100);
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
|
||||
return (
|
||||
@ -51,7 +55,7 @@ define(function (require, exports, module) {
|
||||
this.summarizeFunction(grip)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -10,7 +10,11 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { createFactories, isGrip } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { Caption } = createFactories(require("./caption"));
|
||||
const { MODE } = require("./constants");
|
||||
|
||||
@ -109,7 +113,7 @@ define(function (require, exports, module) {
|
||||
return items;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let {
|
||||
object,
|
||||
mode = MODE.SHORT
|
||||
@ -154,7 +158,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
/**
|
||||
|
@ -9,7 +9,11 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { createFactories, isGrip } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { Caption } = createFactories(require("./caption"));
|
||||
const { PropRep } = createFactories(require("./prop-rep"));
|
||||
const { MODE } = require("./constants");
|
||||
@ -144,7 +148,7 @@ define(function (require, exports, module) {
|
||||
}, []);
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let object = this.props.object;
|
||||
let props = this.safeEntriesIterator(object,
|
||||
(this.props.mode === MODE.LONG) ? 10 : 3);
|
||||
@ -176,7 +180,7 @@ define(function (require, exports, module) {
|
||||
}, " }")
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
function supportsObject(grip, type) {
|
||||
|
@ -10,7 +10,11 @@ define(function (require, exports, module) {
|
||||
// ReactJS
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
// Dependencies
|
||||
const { createFactories, isGrip } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { Caption } = createFactories(require("./caption"));
|
||||
const { PropRep } = createFactories(require("./prop-rep"));
|
||||
const { MODE } = require("./constants");
|
||||
@ -198,7 +202,7 @@ define(function (require, exports, module) {
|
||||
return value;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let object = this.props.object;
|
||||
let props = this.safePropIterator(object,
|
||||
(this.props.mode === MODE.LONG) ? 10 : 3);
|
||||
@ -230,7 +234,7 @@ define(function (require, exports, module) {
|
||||
}, " }")
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,6 +11,8 @@ define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
const { wrapRender } = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
|
||||
@ -20,13 +22,13 @@ define(function (require, exports, module) {
|
||||
const InfinityRep = React.createClass({
|
||||
displayName: "Infinity",
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
return (
|
||||
span({className: "objectBox objectBox-number"},
|
||||
this.props.object.type
|
||||
)
|
||||
);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -8,7 +8,11 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { sanitizeString, isGrip } = require("./rep-utils");
|
||||
const {
|
||||
sanitizeString,
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
|
||||
@ -29,7 +33,7 @@ define(function (require, exports, module) {
|
||||
};
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let {
|
||||
cropLimit,
|
||||
member,
|
||||
@ -53,7 +57,7 @@ define(function (require, exports, module) {
|
||||
}
|
||||
let formattedString = useQuotes ? `"${string}"` : string;
|
||||
return span(config, sanitizeString(formattedString));
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,6 +11,8 @@ define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
const { wrapRender } = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
|
||||
@ -20,13 +22,13 @@ define(function (require, exports, module) {
|
||||
const NaNRep = React.createClass({
|
||||
displayName: "NaN",
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
return (
|
||||
span({className: "objectBox objectBox-nan"},
|
||||
"NaN"
|
||||
)
|
||||
);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,6 +11,8 @@ define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
const { wrapRender } = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
|
||||
@ -20,13 +22,13 @@ define(function (require, exports, module) {
|
||||
const Null = React.createClass({
|
||||
displayName: "NullRep",
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
return (
|
||||
span({className: "objectBox objectBox-null"},
|
||||
"null"
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,6 +11,8 @@ define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
const { wrapRender } = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
|
||||
@ -27,7 +29,7 @@ define(function (require, exports, module) {
|
||||
return (isNegativeZero ? "-0" : String(object));
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let value = this.props.object;
|
||||
|
||||
return (
|
||||
@ -35,7 +37,7 @@ define(function (require, exports, module) {
|
||||
this.stringify(value)
|
||||
)
|
||||
);
|
||||
}
|
||||
})
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,7 +11,10 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -45,7 +48,7 @@ define(function (require, exports, module) {
|
||||
return "\"" + grip.preview.text + "\"";
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
return (
|
||||
span({className: "objectBox objectBox-" + this.getType(grip)},
|
||||
@ -55,7 +58,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip, getURLDisplayString } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
getURLDisplayString,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -45,7 +49,7 @@ define(function (require, exports, module) {
|
||||
return getURLDisplayString(grip.preview.url);
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
return (
|
||||
span({className: "objectBox objectBox-" + this.getType(grip)},
|
||||
@ -55,7 +59,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -9,7 +9,10 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { createFactories } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { Caption } = createFactories(require("./caption"));
|
||||
const { PropRep } = createFactories(require("./prop-rep"));
|
||||
const { MODE } = require("./constants");
|
||||
@ -132,7 +135,7 @@ define(function (require, exports, module) {
|
||||
return props;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let object = this.props.object;
|
||||
let props = this.safePropIterator(object);
|
||||
let objectLink = this.props.objectLink || span;
|
||||
@ -159,7 +162,7 @@ define(function (require, exports, module) {
|
||||
}, " }")
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
function supportsObject(object, type) {
|
||||
return true;
|
||||
|
@ -10,7 +10,12 @@ define(function (require, exports, module) {
|
||||
// ReactJS
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
// Dependencies
|
||||
const { createFactories, isGrip } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
const { PropRep } = createFactories(require("./prop-rep"));
|
||||
const { MODE } = require("./constants");
|
||||
// Shortcuts
|
||||
@ -55,7 +60,7 @@ define(function (require, exports, module) {
|
||||
});
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
const object = this.props.object;
|
||||
const {promiseState} = object;
|
||||
let objectLink = this.props.objectLink || span;
|
||||
@ -94,7 +99,7 @@ define(function (require, exports, module) {
|
||||
}, " }")
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -9,7 +9,10 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { createFactories } = require("./rep-utils");
|
||||
const {
|
||||
createFactories,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { MODE } = require("./constants");
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -19,7 +22,7 @@ define(function (require, exports, module) {
|
||||
* and GripMap (remote JS maps and weakmaps) reps.
|
||||
* It's used to render object properties.
|
||||
*/
|
||||
let PropRep = React.createFactory(React.createClass({
|
||||
let PropRep = React.createClass({
|
||||
displayName: "PropRep",
|
||||
|
||||
propTypes: {
|
||||
@ -36,7 +39,7 @@ define(function (require, exports, module) {
|
||||
mode: React.PropTypes.oneOf(Object.keys(MODE).map(key => MODE[key])),
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
const { Grip } = require("./grip");
|
||||
let { Rep } = createFactories(require("./rep"));
|
||||
|
||||
@ -66,8 +69,8 @@ define(function (require, exports, module) {
|
||||
}, this.props.delim)
|
||||
)
|
||||
);
|
||||
}
|
||||
}));
|
||||
})
|
||||
});
|
||||
|
||||
// Exports from this module
|
||||
exports.PropRep = PropRep;
|
||||
|
@ -11,7 +11,10 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -30,7 +33,7 @@ define(function (require, exports, module) {
|
||||
return grip.displayString;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
let objectLink = this.props.objectLink || span;
|
||||
|
||||
@ -42,7 +45,7 @@ define(function (require, exports, module) {
|
||||
}, this.getSource(grip))
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -147,6 +147,27 @@ define(function (require, exports, module) {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Wrap the provided render() method of a rep in a try/catch block that will render a
|
||||
* fallback rep if the render fails.
|
||||
*/
|
||||
function wrapRender(renderMethod) {
|
||||
return function () {
|
||||
try {
|
||||
return renderMethod.call(this);
|
||||
} catch (e) {
|
||||
return React.DOM.span(
|
||||
{
|
||||
className: "objectBox objectBox-failure",
|
||||
title: "This object could not be rendered, " +
|
||||
"please file a bug on bugzilla.mozilla.org"
|
||||
},
|
||||
/* Labels have to be hardcoded for reps, see Bug 1317038. */
|
||||
"Invalid object");
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
// Exports from this module
|
||||
exports.createFactories = createFactories;
|
||||
exports.isGrip = isGrip;
|
||||
@ -156,5 +177,6 @@ define(function (require, exports, module) {
|
||||
exports.parseURLEncodedText = parseURLEncodedText;
|
||||
exports.getFileName = getFileName;
|
||||
exports.getURLDisplayString = getURLDisplayString;
|
||||
exports.wrapRender = wrapRender;
|
||||
exports.sanitizeString = sanitizeString;
|
||||
});
|
||||
|
@ -96,6 +96,15 @@
|
||||
color: var(--source-link-color);
|
||||
}
|
||||
|
||||
.objectBox-failure {
|
||||
color: var(--string-color);
|
||||
border-width: 1px;
|
||||
border-style: solid;
|
||||
border-radius: 2px;
|
||||
font-size: 0.8em;
|
||||
padding: 0 2px;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
.objectLink-event,
|
||||
|
@ -10,7 +10,11 @@
|
||||
define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
const { cropString } = require("./rep-utils");
|
||||
|
||||
const {
|
||||
cropString,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
@ -32,7 +36,7 @@ define(function (require, exports, module) {
|
||||
};
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let text = this.props.object;
|
||||
let member = this.props.member;
|
||||
let style = this.props.style;
|
||||
@ -53,7 +57,7 @@ define(function (require, exports, module) {
|
||||
"\"" + croppedString + "\"" : croppedString;
|
||||
|
||||
return span(config, formattedString);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip, getURLDisplayString } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
getURLDisplayString,
|
||||
wrapRender
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const DOM = React.DOM;
|
||||
@ -44,7 +48,7 @@ define(function (require, exports, module) {
|
||||
return url ? getURLDisplayString(url) : "";
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
|
||||
return (
|
||||
@ -55,7 +59,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,6 +11,8 @@ define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
const { wrapRender } = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
|
||||
@ -24,7 +26,7 @@ define(function (require, exports, module) {
|
||||
object: React.PropTypes.object.isRequired
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let {object} = this.props;
|
||||
let {name} = object;
|
||||
|
||||
@ -33,7 +35,7 @@ define(function (require, exports, module) {
|
||||
`Symbol(${name || ""})`
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip, cropString } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
cropString,
|
||||
wrapRender,
|
||||
} = require("./rep-utils");
|
||||
const { MODE } = require("./constants");
|
||||
|
||||
// Shortcuts
|
||||
@ -43,7 +47,7 @@ define(function (require, exports, module) {
|
||||
return title;
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let {
|
||||
object: grip,
|
||||
mode = MODE.SHORT,
|
||||
@ -75,7 +79,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -11,6 +11,8 @@ define(function (require, exports, module) {
|
||||
// Dependencies
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
const { wrapRender } = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const { span } = React.DOM;
|
||||
|
||||
@ -20,13 +22,13 @@ define(function (require, exports, module) {
|
||||
const Undefined = React.createClass({
|
||||
displayName: "UndefinedRep",
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
return (
|
||||
span({className: "objectBox objectBox-undefined"},
|
||||
"undefined"
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
function supportsObject(object, type) {
|
||||
|
@ -11,7 +11,11 @@ define(function (require, exports, module) {
|
||||
const React = require("devtools/client/shared/vendor/react");
|
||||
|
||||
// Reps
|
||||
const { isGrip, getURLDisplayString } = require("./rep-utils");
|
||||
const {
|
||||
isGrip,
|
||||
getURLDisplayString,
|
||||
wrapRender
|
||||
} = require("./rep-utils");
|
||||
|
||||
// Shortcuts
|
||||
const DOM = React.DOM;
|
||||
@ -41,7 +45,7 @@ define(function (require, exports, module) {
|
||||
return getURLDisplayString(grip.preview.url);
|
||||
},
|
||||
|
||||
render: function () {
|
||||
render: wrapRender(function () {
|
||||
let grip = this.props.object;
|
||||
|
||||
return (
|
||||
@ -52,7 +56,7 @@ define(function (require, exports, module) {
|
||||
)
|
||||
)
|
||||
);
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
// Registration
|
||||
|
@ -15,6 +15,7 @@ support-files =
|
||||
[test_reps_element-node.html]
|
||||
[test_reps_error.html]
|
||||
[test_reps_event.html]
|
||||
[test_reps_failure.html]
|
||||
[test_reps_function.html]
|
||||
[test_reps_grip.html]
|
||||
[test_reps_grip-array.html]
|
||||
|
@ -0,0 +1,60 @@
|
||||
<!-- 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>
|
||||
<!--
|
||||
Test fallback for rep rendering when a rep fails to render.
|
||||
-->
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Rep test - Failure</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>
|
||||
<pre id="test">
|
||||
<script src="head.js" type="application/javascript;version=1.8"></script>
|
||||
<script type="application/javascript;version=1.8">
|
||||
window.onload = Task.async(function* () {
|
||||
try {
|
||||
let { Rep } = browserRequire("devtools/client/shared/components/reps/rep");
|
||||
let { ArrayRep } = browserRequire("devtools/client/shared/components/reps/array");
|
||||
let { RegExp } = browserRequire("devtools/client/shared/components/reps/regexp");
|
||||
|
||||
// Force the RegExp rep to crash by creating RegExp grip that throws when accessing
|
||||
// the displayString property
|
||||
let gripStub = {
|
||||
"type": "object",
|
||||
"class": "RegExp",
|
||||
"actor": "server1.conn22.obj39",
|
||||
"extensible": true,
|
||||
"frozen": false,
|
||||
"sealed": false,
|
||||
"ownPropertyLength": 1,
|
||||
get displayString() {
|
||||
throw new Error("failure");
|
||||
}
|
||||
};
|
||||
|
||||
// Test that correct rep is chosen.
|
||||
const renderedRep = shallowRenderComponent(Rep, { object: gripStub });
|
||||
is(renderedRep.type, RegExp.rep, `Rep correctly selects ${RegExp.rep.displayName}`);
|
||||
|
||||
// Test fallback message is displayed when rendering bad rep directly.
|
||||
let renderedComponent = renderComponent(RegExp.rep, { object: gripStub });
|
||||
is(renderedComponent.textContent, "Invalid object", "Fallback rendering has expected text content");
|
||||
|
||||
// Test fallback message is displayed when bad rep is nested in another rep.
|
||||
renderedComponent = renderComponent(ArrayRep.rep, { object: [1, gripStub, 2] });
|
||||
is(renderedComponent.textContent, "[ 1, Invalid object, 2 ]", "Fallback rendering has expected text content");
|
||||
} catch(e) {
|
||||
ok(false, "Got an error: " + DevToolsUtils.safeErrorString(e));
|
||||
} finally {
|
||||
SimpleTest.finish();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
@ -576,9 +576,10 @@ Location::GetPathname(nsAString& aPathname)
|
||||
aPathname.Truncate();
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsresult result = NS_OK;
|
||||
|
||||
result = GetURI(getter_AddRefs(uri));
|
||||
nsresult result = GetURI(getter_AddRefs(uri));
|
||||
if (NS_FAILED(result) || !uri) {
|
||||
return result;
|
||||
}
|
||||
|
||||
nsAutoCString file;
|
||||
|
||||
|
@ -885,9 +885,12 @@ private:
|
||||
}
|
||||
|
||||
SetSuspended(nsISuspendedTypes::NONE_SUSPENDED);
|
||||
nsresult rv = mOwner->Play();
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) {
|
||||
return;
|
||||
IgnoredErrorResult rv;
|
||||
RefPtr<Promise> toBeIgnored = mOwner->Play(rv);
|
||||
MOZ_ASSERT_IF(toBeIgnored && toBeIgnored->State() == Promise::PromiseState::Rejected,
|
||||
rv.Failed());
|
||||
if (rv.Failed()) {
|
||||
NS_WARNING("Not able to resume from AudioChannel.");
|
||||
}
|
||||
}
|
||||
|
||||
@ -3867,23 +3870,6 @@ HTMLMediaElement::MaybeDoLoad()
|
||||
}
|
||||
}
|
||||
|
||||
NS_IMETHODIMP HTMLMediaElement::Play()
|
||||
{
|
||||
if (mAudioChannelWrapper && mAudioChannelWrapper->IsPlaybackBlocked()) {
|
||||
MaybeDoLoad();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
ErrorResult rv;
|
||||
RefPtr<Promise> toBeIgnored = PlayInternal(rv);
|
||||
if (rv.Failed()) {
|
||||
return rv.StealNSResult();
|
||||
}
|
||||
|
||||
UpdateCustomPolicyAfterPlayed();
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
HTMLMediaElement::WakeLockBoolWrapper&
|
||||
HTMLMediaElement::WakeLockBoolWrapper::operator=(bool val)
|
||||
{
|
||||
|
@ -65,7 +65,6 @@ interface nsIDOMHTMLMediaElement : nsISupports
|
||||
readonly attribute boolean mozAutoplayEnabled;
|
||||
attribute boolean autoplay;
|
||||
attribute boolean loop;
|
||||
void play();
|
||||
void pause();
|
||||
|
||||
// controls
|
||||
|
@ -633,9 +633,6 @@ void
|
||||
MediaDecoder::SetStateMachineParameters()
|
||||
{
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
if (mMinimizePreroll) {
|
||||
mDecoderStateMachine->DispatchMinimizePrerollUntilPlaybackStarts();
|
||||
}
|
||||
if (mPlaybackRate != 1 && mPlaybackRate != 0) {
|
||||
mDecoderStateMachine->DispatchSetPlaybackRate(mPlaybackRate);
|
||||
}
|
||||
|
@ -192,6 +192,8 @@ public:
|
||||
// not be played. Note that seeking also doesn't cause us start prerolling.
|
||||
void SetMinimizePrerollUntilPlaybackStarts();
|
||||
|
||||
bool GetMinimizePreroll() const { return mMinimizePreroll; }
|
||||
|
||||
// All MediaStream-related data is protected by mReentrantMonitor.
|
||||
// We have at most one DecodedStreamData per MediaDecoder. Its stream
|
||||
// is used as the input for each ProcessedMediaStream created by calls to
|
||||
|
@ -592,14 +592,14 @@ public:
|
||||
void HandleAudioDecoded(MediaData* aAudio) override
|
||||
{
|
||||
mMaster->PushAudio(aAudio);
|
||||
mMaster->DispatchDecodeTasksIfNeeded();
|
||||
DispatchDecodeTasksIfNeeded();
|
||||
MaybeStopPrerolling();
|
||||
}
|
||||
|
||||
void HandleVideoDecoded(MediaData* aVideo, TimeStamp aDecodeStart) override
|
||||
{
|
||||
mMaster->PushVideo(aVideo);
|
||||
mMaster->DispatchDecodeTasksIfNeeded();
|
||||
DispatchDecodeTasksIfNeeded();
|
||||
MaybeStopPrerolling();
|
||||
CheckSlowDecoding(aDecodeStart);
|
||||
}
|
||||
@ -632,6 +632,8 @@ public:
|
||||
if (aPlayState == MediaDecoder::PLAY_STATE_PLAYING) {
|
||||
// Schedule Step() to check if we can start playback.
|
||||
mMaster->ScheduleStateMachine();
|
||||
// Try to dispatch decoding tasks for mMinimizePreroll might be reset.
|
||||
DispatchDecodeTasksIfNeeded();
|
||||
}
|
||||
|
||||
if (aPlayState == MediaDecoder::PLAY_STATE_PAUSED) {
|
||||
@ -647,6 +649,7 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
void DispatchDecodeTasksIfNeeded();
|
||||
void MaybeStartBuffering();
|
||||
|
||||
void CheckSlowDecoding(TimeStamp aDecodeStart)
|
||||
@ -1501,6 +1504,8 @@ public:
|
||||
}
|
||||
|
||||
private:
|
||||
void DispatchDecodeTasksIfNeeded();
|
||||
|
||||
TimeStamp mBufferingStart;
|
||||
|
||||
// The maximum number of second we spend buffering when we are short on
|
||||
@ -2016,7 +2021,7 @@ DecodingState::Enter()
|
||||
MaybeStopPrerolling();
|
||||
|
||||
// Ensure that we've got tasks enqueued to decode data if we need to.
|
||||
mMaster->DispatchDecodeTasksIfNeeded();
|
||||
DispatchDecodeTasksIfNeeded();
|
||||
|
||||
mMaster->ScheduleStateMachine();
|
||||
|
||||
@ -2037,6 +2042,23 @@ DecodingState::HandleEndOfStream()
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecoderStateMachine::
|
||||
DecodingState::DispatchDecodeTasksIfNeeded()
|
||||
{
|
||||
if (mMaster->IsAudioDecoding() &&
|
||||
!mMaster->mMinimizePreroll &&
|
||||
!mMaster->HaveEnoughDecodedAudio()) {
|
||||
mMaster->EnsureAudioDecodeTaskQueued();
|
||||
}
|
||||
|
||||
if (mMaster->IsVideoDecoding() &&
|
||||
!mMaster->mMinimizePreroll &&
|
||||
!mMaster->HaveEnoughDecodedVideo()) {
|
||||
mMaster->EnsureVideoDecodeTaskQueued();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecoderStateMachine::
|
||||
DecodingState::MaybeStartBuffering()
|
||||
@ -2210,6 +2232,21 @@ NextFrameSeekingState::HandleVideoNotDecoded(const MediaResult& aError)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecoderStateMachine::
|
||||
BufferingState::DispatchDecodeTasksIfNeeded()
|
||||
{
|
||||
if (mMaster->IsAudioDecoding() &&
|
||||
!mMaster->HaveEnoughDecodedAudio()) {
|
||||
mMaster->EnsureAudioDecodeTaskQueued();
|
||||
}
|
||||
|
||||
if (mMaster->IsVideoDecoding() &&
|
||||
!mMaster->HaveEnoughDecodedVideo()) {
|
||||
mMaster->EnsureVideoDecodeTaskQueued();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecoderStateMachine::
|
||||
BufferingState::Step()
|
||||
@ -2230,17 +2267,15 @@ BufferingState::Step()
|
||||
SLOG("Buffering: wait %ds, timeout in %.3lfs",
|
||||
mBufferingWait, mBufferingWait - elapsed.ToSeconds());
|
||||
mMaster->ScheduleStateMachineIn(USECS_PER_S);
|
||||
mMaster->DispatchDecodeTasksIfNeeded();
|
||||
DispatchDecodeTasksIfNeeded();
|
||||
return;
|
||||
}
|
||||
} else if (mMaster->OutOfDecodedAudio() || mMaster->OutOfDecodedVideo()) {
|
||||
mMaster->DispatchDecodeTasksIfNeeded();
|
||||
MOZ_ASSERT(mMaster->mMinimizePreroll ||
|
||||
!mMaster->OutOfDecodedAudio() ||
|
||||
DispatchDecodeTasksIfNeeded();
|
||||
MOZ_ASSERT(!mMaster->OutOfDecodedAudio() ||
|
||||
mMaster->IsRequestingAudioData() ||
|
||||
mMaster->IsWaitingAudioData());
|
||||
MOZ_ASSERT(mMaster->mMinimizePreroll ||
|
||||
!mMaster->OutOfDecodedVideo() ||
|
||||
MOZ_ASSERT(!mMaster->OutOfDecodedVideo() ||
|
||||
mMaster->IsRequestingVideoData() ||
|
||||
mMaster->IsWaitingVideoData());
|
||||
SLOG("In buffering mode, waiting to be notified: outOfAudio: %d, "
|
||||
@ -2359,7 +2394,7 @@ MediaDecoderStateMachine::MediaDecoderStateMachine(MediaDecoder* aDecoder,
|
||||
mLowAudioThresholdUsecs(detail::LOW_AUDIO_USECS),
|
||||
mAmpleAudioThresholdUsecs(detail::AMPLE_AUDIO_USECS),
|
||||
mAudioCaptured(false),
|
||||
mMinimizePreroll(false),
|
||||
mMinimizePreroll(aDecoder->GetMinimizePreroll()),
|
||||
mSentLoadedMetadataEvent(false),
|
||||
mSentFirstFrameLoadedEvent(false),
|
||||
mVideoDecodeSuspended(false),
|
||||
@ -2832,7 +2867,6 @@ void MediaDecoderStateMachine::PlayStateChanged()
|
||||
// assume the user is likely to want to keep playing in future. This needs to
|
||||
// happen before we invoke StartDecoding().
|
||||
mMinimizePreroll = false;
|
||||
DispatchDecodeTasksIfNeeded();
|
||||
}
|
||||
|
||||
mStateObj->HandlePlayStateChanged(mPlayState);
|
||||
@ -2929,39 +2963,6 @@ void MediaDecoderStateMachine::StopMediaSink()
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecoderStateMachine::DispatchDecodeTasksIfNeeded()
|
||||
{
|
||||
MOZ_ASSERT(OnTaskQueue());
|
||||
|
||||
if (mState != DECODER_STATE_DECODING &&
|
||||
mState != DECODER_STATE_DECODING_FIRSTFRAME &&
|
||||
mState != DECODER_STATE_BUFFERING) {
|
||||
return;
|
||||
}
|
||||
|
||||
const bool needToDecodeAudio =
|
||||
IsAudioDecoding() &&
|
||||
((!mSentFirstFrameLoadedEvent && AudioQueue().GetSize() == 0) ||
|
||||
(!mMinimizePreroll && !HaveEnoughDecodedAudio()));
|
||||
|
||||
const bool needToDecodeVideo =
|
||||
IsVideoDecoding() &&
|
||||
((!mSentFirstFrameLoadedEvent && VideoQueue().GetSize() == 0) ||
|
||||
(!mMinimizePreroll && !HaveEnoughDecodedVideo()));
|
||||
|
||||
SAMPLE_LOG("DispatchDecodeTasksIfNeeded needAudio=%d audioStatus=%s needVideo=%d videoStatus=%s",
|
||||
needToDecodeAudio, AudioRequestStatus(),
|
||||
needToDecodeVideo, VideoRequestStatus());
|
||||
|
||||
if (needToDecodeAudio) {
|
||||
EnsureAudioDecodeTaskQueued();
|
||||
}
|
||||
if (needToDecodeVideo) {
|
||||
EnsureVideoDecodeTaskQueued();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MediaDecoderStateMachine::EnsureAudioDecodeTaskQueued()
|
||||
{
|
||||
|
@ -178,26 +178,6 @@ public:
|
||||
|
||||
RefPtr<ShutdownPromise> BeginShutdown();
|
||||
|
||||
// Notifies the state machine that should minimize the number of samples
|
||||
// decoded we preroll, until playback starts. The first time playback starts
|
||||
// the state machine is free to return to prerolling normally. Note
|
||||
// "prerolling" in this context refers to when we decode and buffer decoded
|
||||
// samples in advance of when they're needed for playback.
|
||||
void DispatchMinimizePrerollUntilPlaybackStarts()
|
||||
{
|
||||
RefPtr<MediaDecoderStateMachine> self = this;
|
||||
nsCOMPtr<nsIRunnable> r = NS_NewRunnableFunction([self] () -> void
|
||||
{
|
||||
MOZ_ASSERT(self->OnTaskQueue());
|
||||
self->mMinimizePreroll = true;
|
||||
|
||||
// Make sure that this arrives before playback starts, otherwise this won't
|
||||
// have the intended effect.
|
||||
MOZ_DIAGNOSTIC_ASSERT(self->mPlayState == MediaDecoder::PLAY_STATE_LOADING);
|
||||
});
|
||||
OwnerThread()->Dispatch(r.forget());
|
||||
}
|
||||
|
||||
// Set the media fragment end time. aEndTime is in microseconds.
|
||||
void DispatchSetFragmentEndTime(int64_t aEndTime)
|
||||
{
|
||||
@ -448,12 +428,6 @@ protected:
|
||||
bool IsWaitingAudioData() const { return mAudioWaitRequest.Exists(); }
|
||||
bool IsWaitingVideoData() const { return mVideoWaitRequest.Exists(); }
|
||||
|
||||
// Re-evaluates the state and determines whether we need to dispatch
|
||||
// events to run the decode, or if not whether we should set the reader
|
||||
// to idle mode. This is threadsafe, and can be called from any thread.
|
||||
// The decoder monitor must be held.
|
||||
void DispatchDecodeTasksIfNeeded();
|
||||
|
||||
// Returns the "media time". This is the absolute time which the media
|
||||
// playback has reached. i.e. this returns values in the range
|
||||
// [mStartTime, mEndTime], and mStartTime will not be 0 if the media does
|
||||
|
@ -1,6 +1,6 @@
|
||||
<script>
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
window.opener.opener.postMessage(window.opener.testNum + " - " + window.x, "http://mochi.test:8888");
|
||||
window.opener.close();
|
||||
window.close();
|
||||
var win = SpecialPowers.wrap(window).wrappedJSObject;
|
||||
win.opener.opener.postMessage(win.opener.testNum + " - " + win.x, "http://mochi.test:8888");
|
||||
win.opener.close();
|
||||
win.close();
|
||||
</script>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<script>
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
window.parent.opener.postMessage(window.parent.testNum + " - " + window.x, "http://mochi.test:8888");
|
||||
window.parent.close();
|
||||
var win = SpecialPowers.wrap(window).wrappedJSObject;
|
||||
win.parent.opener.postMessage(win.parent.testNum + " - " + win.x, "http://mochi.test:8888");
|
||||
win.parent.close();
|
||||
</script>
|
||||
|
@ -37,14 +37,11 @@ function handleCmd(evt) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Grab privileges so we can access cross-domain windows
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
|
||||
if ("load" in cmd) {
|
||||
var testNum = cmd.load;
|
||||
var win = wins[testNum];
|
||||
var win = SpecialPowers.wrap(wins[testNum]).wrappedJSObject;
|
||||
win.childWin.x = testNum;
|
||||
if (win.childWin.opener == win) {
|
||||
if (SpecialPowers.unwrap(win.childWin.opener) == SpecialPowers.unwrap(win)) {
|
||||
if ("xsite" in cmd) {
|
||||
var loc = r(window.location.href, "bug346659-opener-echoer.html");
|
||||
} else {
|
||||
|
@ -29,12 +29,11 @@ var promptState;
|
||||
|
||||
function registerMockPromptService()
|
||||
{
|
||||
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
||||
var XPCOMUtils = SpecialPowers.Cu.import("resource://gre/modules/XPCOMUtils.jsm").XPCOMUtils;
|
||||
var Ci = SpecialPowers.Ci;
|
||||
|
||||
function MockPrompt(aDOMWindow) {
|
||||
this.domWindow = aDOMWindow;
|
||||
this.domWindow = SpecialPowers.unwrap(aDOMWindow);
|
||||
}
|
||||
|
||||
MockPrompt.prototype = {
|
||||
|
@ -92,7 +92,6 @@ function persistDocument(aDoc) {
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
|
||||
addLoadEvent(function() {
|
||||
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
||||
var srcDoc = document.getElementById('source').contentDocument;
|
||||
persistDocument(srcDoc);
|
||||
});
|
||||
|
@ -42,8 +42,8 @@ skip-if(Android) load 394751.xhtml # bug 922976
|
||||
load 395335-1.xhtml
|
||||
load 395458-1.html
|
||||
load 396321-1.svg
|
||||
skip-if(stylo) load 398042-1.xhtml # bug 1323665
|
||||
skip-if(stylo) load 398042-2.xhtml # bug 1323665
|
||||
load 398042-1.xhtml
|
||||
load 398042-2.xhtml
|
||||
load 402307-1.html
|
||||
load 403464-1.html
|
||||
load 404112-1.html
|
||||
|
@ -231,10 +231,8 @@ JS_FOR_EACH_TYPED_ARRAY(OBJECT_MOVED_TYPED_ARRAY)
|
||||
|
||||
// Set a forwarding pointer for the element buffers in case they were
|
||||
// preserved on the stack by Ion.
|
||||
if (nbytes > 0) {
|
||||
nursery.maybeSetForwardingPointer(trc, oldObj->elements(), newObj->elements(),
|
||||
/* direct = */nbytes >= sizeof(uintptr_t));
|
||||
}
|
||||
nursery.maybeSetForwardingPointer(trc, oldObj->elements(), newObj->elements(),
|
||||
/* direct = */nbytes >= sizeof(uintptr_t));
|
||||
|
||||
return newObj->hasInlineElements() ? 0 : nbytes;
|
||||
}
|
||||
|
@ -27,7 +27,7 @@ asserts-if(stylo,13) load 191272-1.html # bug 1324636
|
||||
load 199696-1.html
|
||||
load 217903-1.html
|
||||
load 223064-1.html
|
||||
skip-if(stylo) load 234851-1.html # bug 1323665
|
||||
load 234851-1.html
|
||||
load 234851-2.html
|
||||
load 241300-1.html
|
||||
load 243159-1.html
|
||||
@ -83,7 +83,7 @@ load 331204-1.html
|
||||
load 331679-1.xhtml
|
||||
load 331679-2.xml
|
||||
load 331679-3.xml
|
||||
asserts-if(stylo,186) load 331883-1.html # bug 1324673
|
||||
asserts-if(stylo,10) load 331883-1.html # bug 1324663
|
||||
load 335140-1.html
|
||||
load 336291-1.html
|
||||
load 336999-1.xul
|
||||
@ -103,7 +103,7 @@ asserts-if(stylo,3) load 343293-2.xhtml # bug 1324663
|
||||
load 343540-1.html
|
||||
load 344057-1.xhtml
|
||||
load 344064-1.html
|
||||
asserts-if(stylo,1-9) load 344300-1.html # bug 1324673
|
||||
asserts-if(stylo,1-9) load 344300-1.html # bug 1324663
|
||||
load 344300-2.html
|
||||
load 344340-1.xul
|
||||
load 347898-1.html
|
||||
@ -172,7 +172,7 @@ load 384649-1.xhtml
|
||||
load 385354.html
|
||||
load 385866-1.xhtml
|
||||
load 385880-1.xhtml
|
||||
skip-if(stylo) load 386266-1.html # bug 1323665
|
||||
load 386266-1.html
|
||||
load 386476.html
|
||||
load 387195-1.html
|
||||
load 387195-2.xhtml
|
||||
@ -276,7 +276,7 @@ load 455171-4.html
|
||||
skip-if(stylo) load 455623-1.html # bug 1323652
|
||||
load 457362-1.xhtml
|
||||
load 457514.html
|
||||
skip-if(stylo) asserts(0-1) load 460389-1.html # Bug 1323665, bug 780985
|
||||
asserts(0-1) load 460389-1.html # bug 780985
|
||||
asserts-if(stylo,1) load 462392.html # bug 1324683
|
||||
load 466763-1.html
|
||||
load 467881-1.html
|
||||
@ -313,7 +313,7 @@ asserts-if(stylo,4) load 490747.html # bug 1324663
|
||||
load 491547-1.xul
|
||||
load 491547-2.xul
|
||||
load 492014.xhtml
|
||||
skip-if(stylo) load 492112-1.xhtml # bug 1323665
|
||||
load 492112-1.xhtml
|
||||
asserts-if(stylo,1) load 492163-1.xhtml # bug 1324663
|
||||
load 495350-1.html
|
||||
skip-if(stylo) load 496011-1.xhtml # bug 1323649
|
||||
@ -443,7 +443,7 @@ pref(layers.progressive-paint,false) pref(layers.low-precision-buffer,false) loa
|
||||
pref(layers.force-active,true) load 859526-1.html
|
||||
pref(layers.force-active,true) load 859630-1.html
|
||||
load 860579-1.html
|
||||
asserts-if(stylo,2) load 866588.html # bug 1324705
|
||||
load 866588.html
|
||||
load 876092.html
|
||||
load 876221.html
|
||||
load 897852.html
|
||||
@ -456,7 +456,7 @@ load 931460-1.html
|
||||
load 931464.html
|
||||
load 935765-1.html
|
||||
load 936988-1.html
|
||||
asserts-if(stylo,2) load 942690.html # bug 1324705
|
||||
load 942690.html
|
||||
load 973390-1.html
|
||||
load 1001237.html
|
||||
load 1009036.html
|
||||
|
@ -52,7 +52,7 @@ load 348510-1.html
|
||||
load 348510-2.html
|
||||
load 348887-1.html
|
||||
load 348991-1.xhtml
|
||||
asserts-if(stylo,7-8) load 350370.html # bug 1324673
|
||||
asserts-if(stylo,7) load 350370.html # bug 1324663
|
||||
load 354458-1.html
|
||||
load 354458-2.html
|
||||
load 355426-1.html
|
||||
@ -125,7 +125,7 @@ load 385344-2.html
|
||||
load 385414-1.html
|
||||
load 385414-2.html
|
||||
load 385426-1.html
|
||||
asserts-if(stylo,351) load 385526.html # bug 1324673
|
||||
asserts-if(stylo,4) load 385526.html # bug 1324663
|
||||
load 385681.html
|
||||
load 385885-1.xul
|
||||
load 386799-1.html
|
||||
@ -298,7 +298,7 @@ load 445288.html
|
||||
load 448903-1.html
|
||||
skip-if(stylo) load 448996-1.html # bug 1323652
|
||||
asserts-if(stylo,5) load 451315-1.html # bug 1324672
|
||||
asserts-if(stylo,8) load 451317-1.html # bug 1324665
|
||||
asserts-if(stylo,7) load 451317-1.html # bug 1324665
|
||||
load 451334-1.html
|
||||
load 452157-1.html
|
||||
load 452157-2.html
|
||||
@ -392,8 +392,8 @@ load 526217.html
|
||||
load 533379-1.html
|
||||
load 533379-2.html
|
||||
load 534082-1.html
|
||||
asserts-if(stylo,2) load 534366-1.html # bug 1324705
|
||||
asserts-if(stylo,2) load 534366-2.html # bug 1324705
|
||||
load 534366-1.html
|
||||
load 534366-2.html
|
||||
load 536692-1.xhtml
|
||||
load 537645.xhtml
|
||||
load 541277-1.html
|
||||
|
@ -3212,7 +3212,7 @@ nsCSSRendering::PaintGradient(nsPresContext* aPresContext,
|
||||
if (aGradient->mShape == NS_STYLE_GRADIENT_SHAPE_LINEAR && !isRepeat &&
|
||||
RectIsBeyondLinearGradientEdge(fillRectRelativeToTile, matrix, stops,
|
||||
gradientStart, gradientEnd, &edgeColor)) {
|
||||
edgeColor.a = aOpacity;
|
||||
edgeColor.a *= aOpacity;
|
||||
ctx->SetColor(edgeColor);
|
||||
} else {
|
||||
ctx->SetMatrix(
|
||||
|
@ -0,0 +1,17 @@
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<meta charset="utf-8">
|
||||
<title>Make sure that gradient masks are painted correctly with translucent end-color</title>
|
||||
|
||||
<style>
|
||||
|
||||
html {
|
||||
background: rgba(255, 0, 0, 0.5);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
</style>
|
@ -0,0 +1,34 @@
|
||||
<!--
|
||||
Any copyright is dedicated to the Public Domain.
|
||||
http://creativecommons.org/publicdomain/zero/1.0/
|
||||
-->
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" class="reftest-wait">
|
||||
<meta charset="utf-8">
|
||||
<title>Make sure that gradient masks are painted correctly with translucent end-color</title>
|
||||
<!-- See https://bugzilla.mozilla.org/show_bug.cgi?id=1329411 -->
|
||||
|
||||
<style>
|
||||
|
||||
html {
|
||||
background: white;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
div {
|
||||
height: 5000px;
|
||||
background-color: red;
|
||||
mask-image: linear-gradient(transparent 0px, rgba(255, 0, 0, 0.5) 2000px);
|
||||
}
|
||||
|
||||
</style>
|
||||
<body style="margin: 0px;">
|
||||
<div></div>
|
||||
|
||||
<script>
|
||||
window.addEventListener("MozReftestInvalidate", function () {
|
||||
document.documentElement.scrollTop = 3000; // > 2000
|
||||
document.documentElement.removeAttribute("class");
|
||||
});
|
||||
</script>
|
||||
</body>
|
@ -152,3 +152,5 @@ fuzzy(1,800000) == large-gradient-3.html large-gradient-3-ref.html
|
||||
== large-gradient-4.html large-gradient-4-ref.html
|
||||
fuzzy(2,800000) == large-gradient-5.html large-gradient-5-ref.html
|
||||
== 1224761-1.html 1224761-1-ref.html
|
||||
|
||||
fuzzy(1,800000) == mask-gradient-translucent-end-color-1.html mask-gradient-translucent-end-color-1-ref.html
|
||||
|
@ -318,7 +318,6 @@ ServoStyleSet::RemoveStyleSheet(SheetType aType,
|
||||
ServoStyleSheet* aSheet)
|
||||
{
|
||||
MOZ_ASSERT(aSheet);
|
||||
MOZ_ASSERT(aSheet->IsApplicable());
|
||||
MOZ_ASSERT(nsStyleSet::IsCSSSheetType(aType));
|
||||
|
||||
mSheets[aType].RemoveElement(aSheet);
|
||||
@ -413,6 +412,8 @@ nsresult
|
||||
ServoStyleSet::AddDocStyleSheet(ServoStyleSheet* aSheet,
|
||||
nsIDocument* aDocument)
|
||||
{
|
||||
MOZ_ASSERT(aSheet->IsApplicable());
|
||||
|
||||
RefPtr<StyleSheet> strong(aSheet);
|
||||
|
||||
mSheets[SheetType::Doc].RemoveElement(aSheet);
|
||||
|
@ -169,11 +169,7 @@ StyleSheet::SetDisabled(bool aDisabled)
|
||||
{
|
||||
// DOM method, so handle BeginUpdate/EndUpdate
|
||||
MOZ_AUTO_DOC_UPDATE(mDocument, UPDATE_STYLE, true);
|
||||
if (IsGecko()) {
|
||||
AsGecko()->SetEnabled(!aDisabled);
|
||||
} else {
|
||||
MOZ_CRASH("stylo: unimplemented SetEnabled");
|
||||
}
|
||||
SetEnabled(!aDisabled);
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
|
@ -38,7 +38,7 @@ skip-if(stylo) load 456196.html # bug 132652
|
||||
load 460209-1.html
|
||||
load 460217-1.html
|
||||
asserts-if(stylo,2) load 460323-1.html # bug 1324634
|
||||
asserts-if(stylo,2) load 466845-1.html # bug 1324705
|
||||
load 466845-1.html
|
||||
skip-if(stylo) load 469432-1.xhtml # bug 1323649
|
||||
load 472195-1.html
|
||||
load 472237-1.html # will fail, test for leak (474704)
|
||||
@ -68,7 +68,7 @@ load 580685.html
|
||||
load 585185-1.html
|
||||
load 588627-1.html
|
||||
load 592698-1.html
|
||||
skip-if(stylo) load 601437-1.html # bug 1323706
|
||||
asserts-if(stylo,2) load 601437-1.html # bug 1324634
|
||||
load 601439-1.html
|
||||
load 605689-1.html
|
||||
load 611922-1.html
|
||||
|
@ -89,7 +89,7 @@ load 474700-1.svg
|
||||
load 475181-1.svg
|
||||
load 475193-1.html
|
||||
load 475302-1.svg
|
||||
skip-if(stylo) load 477935-1.html # bug 1323665
|
||||
load 477935-1.html
|
||||
load 478128-1.svg
|
||||
load 478511-1.svg
|
||||
load 483439-1.svg
|
||||
|
@ -918,6 +918,11 @@ public class BrowserApp extends GeckoApp
|
||||
* @param intent Intent that launched this activity
|
||||
*/
|
||||
private void checkFirstrun(Context context, SafeIntent intent) {
|
||||
if (getProfile().inGuestMode()) {
|
||||
// We do not want to show any first run tour for guest profiles.
|
||||
return;
|
||||
}
|
||||
|
||||
if (intent.getBooleanExtra(EXTRA_SKIP_STARTPANE, false)) {
|
||||
// Note that we don't set the pref, so subsequent launches can result
|
||||
// in the firstrun pane being shown.
|
||||
|
@ -1,3 +1,3 @@
|
||||
skip-if(stylo) load 785753-1.html # bug 1323665
|
||||
asserts-if(stylo,5) load 785753-1.html # bug 1324634
|
||||
asserts-if(stylo,4) load 785753-2.html # bug 1324634
|
||||
load 1274044-1.html
|
||||
|
@ -1149,4 +1149,4 @@ static const TransportSecurityPreload kPublicKeyPinningPreloadList[] = {
|
||||
|
||||
static const int32_t kUnknownId = -1;
|
||||
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1492354316032000);
|
||||
static const PRTime kPreloadPKPinsExpirationTime = INT64_C(1492439650280000);
|
||||
|
@ -20,6 +20,7 @@
|
||||
206rc.net: max-age too low: 2592000
|
||||
25daysof.io: could not connect to host
|
||||
2859cc.com: could not connect to host
|
||||
2kgwf.fi: could not connect to host
|
||||
2or3.tk: could not connect to host
|
||||
300651.ru: did not receive HSTS header
|
||||
302.nyc: could not connect to host
|
||||
@ -29,7 +30,6 @@
|
||||
365.or.jp: did not receive HSTS header
|
||||
3chit.cf: could not connect to host
|
||||
404.sh: max-age too low: 0
|
||||
4096bit.de: could not connect to host
|
||||
420dongstorm.com: could not connect to host
|
||||
42ms.org: could not connect to host
|
||||
4455software.com: did not receive HSTS header
|
||||
@ -127,7 +127,6 @@ ahabingo.com: did not receive HSTS header
|
||||
ahoynetwork.com: could not connect to host
|
||||
ahri.ovh: could not connect to host
|
||||
aidanwoods.com: did not receive HSTS header
|
||||
aimeeandalec.com: did not receive HSTS header
|
||||
airbnb.com: did not receive HSTS header
|
||||
aircomms.com: did not receive HSTS header
|
||||
airproto.com: did not receive HSTS header
|
||||
@ -149,8 +148,6 @@ alariel.de: did not receive HSTS header
|
||||
alarmsystemreviews.com: did not receive HSTS header
|
||||
albertopimienta.com: did not receive HSTS header
|
||||
alcazaar.com: could not connect to host
|
||||
alecpap.com: did not receive HSTS header
|
||||
alecpapierniak.com: did not receive HSTS header
|
||||
alecvannoten.be: did not receive HSTS header
|
||||
alenan.org: could not connect to host
|
||||
alessandro.pw: did not receive HSTS header
|
||||
@ -160,6 +157,7 @@ alexei.su: could not connect to host
|
||||
alexhaydock.co.uk: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
alexisabarca.com: did not receive HSTS header
|
||||
alittlebitcheeky.com: did not receive HSTS header
|
||||
aljaspod.com: could not connect to host
|
||||
alkami.com: did not receive HSTS header
|
||||
all-subtitles.com: did not receive HSTS header
|
||||
all.tf: could not connect to host
|
||||
@ -181,7 +179,6 @@ american-truck-simulator.de: could not connect to host
|
||||
american-truck-simulator.net: could not connect to host
|
||||
americanworkwear.nl: did not receive HSTS header
|
||||
amigogeek.net: could not connect to host
|
||||
amihub.com: could not connect to host
|
||||
amilx.com: could not connect to host
|
||||
amilx.org: could not connect to host
|
||||
amitube.com: could not connect to host
|
||||
@ -277,6 +274,7 @@ as9178.net: could not connect to host
|
||||
asasuou.pw: could not connect to host
|
||||
asc16.com: could not connect to host
|
||||
asdpress.cn: could not connect to host
|
||||
ashleymedway.com: could not connect to host
|
||||
ashutoshmishra.org: did not receive HSTS header
|
||||
asianodor.com: could not connect to host
|
||||
askfit.cz: did not receive HSTS header
|
||||
@ -326,13 +324,14 @@ auverbox.ovh: could not connect to host
|
||||
av.de: did not receive HSTS header
|
||||
avec-ou-sans-ordonnance.fr: could not connect to host
|
||||
avinet.com: max-age too low: 0
|
||||
avqueen.cn: could not connect to host
|
||||
avqueen.cn: did not receive HSTS header
|
||||
awg-mode.de: did not receive HSTS header
|
||||
axado.com.br: did not receive HSTS header
|
||||
axeny.com: did not receive HSTS header
|
||||
az.search.yahoo.com: did not receive HSTS header
|
||||
azabani.com: could not connect to host
|
||||
azprep.us: could not connect to host
|
||||
b1c1l1.com: could not connect to host
|
||||
b3orion.com: max-age too low: 0
|
||||
baby-click.de: did not receive HSTS header
|
||||
babybic.hu: did not receive HSTS header
|
||||
@ -533,7 +532,6 @@ bsquared.org: could not connect to host
|
||||
btcdlc.com: could not connect to host
|
||||
buchheld.at: did not receive HSTS header
|
||||
bucket.tk: could not connect to host
|
||||
budger.nl: could not connect to host
|
||||
budgetthostels.nl: did not receive HSTS header
|
||||
budskap.eu: could not connect to host
|
||||
bugtrack.io: did not receive HSTS header
|
||||
@ -547,10 +545,13 @@ bumarkamoda.com: could not connect to host
|
||||
bunaken.asia: could not connect to host
|
||||
burian-server.cz: could not connect to host
|
||||
burrow.ovh: could not connect to host
|
||||
burtrum.family: could not connect to host
|
||||
burtrum.me: could not connect to host
|
||||
burtrum.name: could not connect to host
|
||||
burtrum.org: could not connect to host
|
||||
burtrum.top: could not connect to host
|
||||
business.lookout.com: could not connect to host
|
||||
business.medbank.com.mt: max-age too low: 10615978
|
||||
business.medbank.com.mt: max-age too low: 10529578
|
||||
businesshosting.nl: did not receive HSTS header
|
||||
busold.ws: could not connect to host
|
||||
bustimes.org: could not connect to host
|
||||
@ -572,7 +573,6 @@ cabarave.com: could not connect to host
|
||||
cabusar.fr: could not connect to host
|
||||
caconnect.org: could not connect to host
|
||||
cadao.me: did not receive HSTS header
|
||||
cadusilva.com: could not connect to host
|
||||
cafe-scientifique.org.ec: could not connect to host
|
||||
caim.cz: did not receive HSTS header
|
||||
cainhosting.com: did not receive HSTS header
|
||||
@ -767,7 +767,6 @@ comparejewelleryprices.co.uk: could not connect to host
|
||||
completeid.com: max-age too low: 86400
|
||||
completionist.audio: could not connect to host
|
||||
compucorner.com.mx: could not connect to host
|
||||
computeremergency.com.au: did not receive HSTS header
|
||||
concord-group.co.jp: did not receive HSTS header
|
||||
condesaelectronics.com: max-age too low: 0
|
||||
confirm365.com: could not connect to host
|
||||
@ -794,6 +793,7 @@ correctpaardbatterijnietje.nl: did not receive HSTS header
|
||||
corruption-mc.net: could not connect to host
|
||||
corruption-rsps.net: could not connect to host
|
||||
corruption-server.net: could not connect to host
|
||||
cosmeticasimple.com: could not connect to host
|
||||
count.sh: could not connect to host
|
||||
couragewhispers.ca: did not receive HSTS header
|
||||
coursdeprogrammation.com: could not connect to host
|
||||
@ -849,6 +849,7 @@ ct.search.yahoo.com: did not receive HSTS header
|
||||
cthulhuden.com: could not connect to host
|
||||
cubeserver.eu: could not connect to host
|
||||
cubewano.com: could not connect to host
|
||||
cubua.com: could not connect to host
|
||||
cujanovic.com: did not receive HSTS header
|
||||
cumshots-video.ru: could not connect to host
|
||||
cupidmentor.com: did not receive HSTS header
|
||||
@ -864,7 +865,7 @@ cyphertite.com: could not connect to host
|
||||
dad256.tk: could not connect to host
|
||||
dadtheimpaler.com: could not connect to host
|
||||
dah5.com: did not receive HSTS header
|
||||
dailystormerpodcasts.com: could not connect to host
|
||||
dailystormerpodcasts.com: did not receive HSTS header
|
||||
daimadi.com: could not connect to host
|
||||
dakrib.net: could not connect to host
|
||||
dalingk.co: could not connect to host
|
||||
@ -944,6 +945,7 @@ demuzere.net: could not connect to host
|
||||
demuzere.org: could not connect to host
|
||||
denh.am: did not receive HSTS header
|
||||
denisjean.fr: could not connect to host
|
||||
dennisdoes.net: could not connect to host
|
||||
dentaldomain.org: did not receive HSTS header
|
||||
dentaldomain.ph: could not connect to host
|
||||
depeche-mode.moscow: max-age too low: 7200
|
||||
@ -957,10 +959,11 @@ designthinking.or.jp: did not receive HSTS header
|
||||
despora.de: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
destinationbijoux.fr: could not connect to host
|
||||
detector.exposed: could not connect to host
|
||||
devct.cz: could not connect to host
|
||||
devcu.net: did not receive HSTS header
|
||||
devincrow.me: could not connect to host
|
||||
devinfo.net: did not receive HSTS header
|
||||
devmsg.com: did not receive HSTS header
|
||||
devmsg.com: could not connect to host
|
||||
devtub.com: could not connect to host
|
||||
devuan.org: did not receive HSTS header
|
||||
diablotine.rocks: could not connect to host
|
||||
@ -1114,6 +1117,7 @@ elemprendedor.com.ve: could not connect to host
|
||||
elenag.ga: could not connect to host
|
||||
elenoon.ir: did not receive HSTS header
|
||||
elgacien.de: could not connect to host
|
||||
elgosblanc.com: could not connect to host
|
||||
elimdengelen.com: did not receive HSTS header
|
||||
elisabeth-kostecki.de: did not receive HSTS header
|
||||
elisabethkostecki.de: did not receive HSTS header
|
||||
@ -1166,6 +1170,7 @@ equatetechnologies.com.au: max-age too low: 3600
|
||||
equilibre-yoga-jennifer-will.com: could not connect to host
|
||||
erawanarifnugroho.com: did not receive HSTS header
|
||||
eressea.xyz: could not connect to host
|
||||
eriner.me: could not connect to host
|
||||
ernesto.at: could not connect to host
|
||||
eromixx.com: did not receive HSTS header
|
||||
erotalia.es: could not connect to host
|
||||
@ -1293,6 +1298,7 @@ fitbylo.com: did not receive HSTS header
|
||||
fitiapp.com: could not connect to host
|
||||
fitnesswerk.de: could not connect to host
|
||||
five.vn: did not receive HSTS header
|
||||
fivestarsitters.com: did not receive HSTS header
|
||||
fixatom.com: did not receive HSTS header
|
||||
fixingdns.com: did not receive HSTS header
|
||||
fj.search.yahoo.com: did not receive HSTS header
|
||||
@ -1346,7 +1352,7 @@ franta.email: did not receive HSTS header
|
||||
franzt.de: could not connect to host
|
||||
frasys.io: max-age too low: 7776000
|
||||
freeflow.tv: could not connect to host
|
||||
freematthale.net: could not connect to host
|
||||
freematthale.net: did not receive HSTS header
|
||||
freemedforms.com: did not receive HSTS header
|
||||
freesoftwaredriver.com: did not receive HSTS header
|
||||
freesounding.com: could not connect to host
|
||||
@ -1411,7 +1417,6 @@ gampenhof.de: did not receive HSTS header
|
||||
gancedo.com.es: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
gaptek.id: did not receive HSTS header
|
||||
garciamartin.me: could not connect to host
|
||||
gasnews.net: did not receive HSTS header
|
||||
gatilagata.com.br: did not receive HSTS header
|
||||
gchq.wtf: could not connect to host
|
||||
gdpventure.com: max-age too low: 0
|
||||
@ -1421,6 +1426,7 @@ geekcast.co.uk: did not receive HSTS header
|
||||
geeky.software: could not connect to host
|
||||
geli-graphics.com: did not receive HSTS header
|
||||
gem-indonesia.net: could not connect to host
|
||||
gendrin.com: could not connect to host
|
||||
genuu.com: could not connect to host
|
||||
genuxation.com: could not connect to host
|
||||
genyaa.com: could not connect to host
|
||||
@ -1459,7 +1465,7 @@ gipsamsfashion.com: could not connect to host
|
||||
gipsic.com: did not receive HSTS header
|
||||
gistfy.com: could not connect to host
|
||||
github.party: could not connect to host
|
||||
givemyanswer.com: could not connect to host
|
||||
givemyanswer.com: did not receive HSTS header
|
||||
gizzo.sk: could not connect to host
|
||||
gkralik.eu: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
gl.search.yahoo.com: did not receive HSTS header
|
||||
@ -1514,8 +1520,8 @@ gpsfix.cz: could not connect to host
|
||||
gpstuner.com: did not receive HSTS header
|
||||
gracesofgrief.com: max-age too low: 86400
|
||||
grandmascookieblog.com: did not receive HSTS header
|
||||
grandmasfridge.org: could not connect to host
|
||||
graph.no: did not receive HSTS header
|
||||
grassenberg.de: could not connect to host
|
||||
gravito.nl: did not receive HSTS header
|
||||
gravity-net.de: could not connect to host
|
||||
grazetech.com: could not connect to host
|
||||
@ -1542,6 +1548,7 @@ gtlfsonlinepay.com: did not receive HSTS header
|
||||
gtraxapp.com: could not connect to host
|
||||
guava.studio: did not receive HSTS header
|
||||
guilde-vindicta.fr: did not receive HSTS header
|
||||
guoqiang.info: did not receive HSTS header
|
||||
gurusupe.com: could not connect to host
|
||||
gussi.is: could not connect to host
|
||||
gvt2.com: could not connect to host (error ignored - included regardless)
|
||||
@ -1564,7 +1571,6 @@ hack.cz: could not connect to host
|
||||
hack.li: did not receive HSTS header
|
||||
hacker.one: could not connect to host
|
||||
hackerforever.com: did not receive HSTS header
|
||||
hackernet.se: could not connect to host
|
||||
hackerone-ext-adroll.com: could not connect to host
|
||||
hackest.org: did not receive HSTS header
|
||||
hackit.im: could not connect to host
|
||||
@ -1597,7 +1603,6 @@ harz.cloud: could not connect to host
|
||||
has.vision: could not connect to host
|
||||
hash-list.com: could not connect to host
|
||||
hasilocke.de: did not receive HSTS header
|
||||
hasinase.de: did not receive HSTS header
|
||||
haste.ch: could not connect to host
|
||||
hastherebeenamassshooting.today: could not connect to host
|
||||
hatoko.net: could not connect to host
|
||||
@ -1618,7 +1623,6 @@ hdwallpapers.net: did not receive HSTS header
|
||||
healtious.com: did not receive HSTS header
|
||||
heart.ge: did not receive HSTS header
|
||||
heartlandrentals.com: did not receive HSTS header
|
||||
heartsucker.com: could not connect to host
|
||||
heftkaufen.de: did not receive HSTS header
|
||||
hejahanif.se: could not connect to host
|
||||
helloworldhost.com: did not receive HSTS header
|
||||
@ -1704,7 +1708,7 @@ i-partners.sk: did not receive HSTS header
|
||||
iamokay.nl: did not receive HSTS header
|
||||
iamusingtheinter.net: could not connect to host
|
||||
iamveto.com: could not connect to host
|
||||
iapws.com: could not connect to host
|
||||
iapws.com: did not receive HSTS header
|
||||
iban.is: could not connect to host
|
||||
icebat.dyndns.org: could not connect to host
|
||||
icewoman.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
@ -1840,7 +1844,6 @@ itos.asia: did not receive HSTS header
|
||||
itos.pl: did not receive HSTS header
|
||||
itsadog.co.uk: did not receive HSTS header
|
||||
itsamurai.ru: max-age too low: 2592000
|
||||
itsatrap.nl: could not connect to host
|
||||
itsecurityassurance.pw: did not receive HSTS header
|
||||
itsg-faq.de: could not connect to host
|
||||
itshost.ru: could not connect to host
|
||||
@ -1868,6 +1871,7 @@ jamesconroyfinn.com: did not receive HSTS header
|
||||
jamesdoell.com: could not connect to host
|
||||
jamesdoylephoto.com: did not receive HSTS header
|
||||
jamesf.xyz: could not connect to host
|
||||
jamesmaurer.com: did not receive HSTS header
|
||||
jamesmorrison.me: did not receive HSTS header
|
||||
jamessan.com: did not receive HSTS header
|
||||
jamourtney.com: could not connect to host
|
||||
@ -1893,7 +1897,6 @@ jayscoaching.com: could not connect to host
|
||||
jayshao.com: did not receive HSTS header
|
||||
jazzinutrecht.info: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
jazzncheese.com: could not connect to host
|
||||
jbbd.fr: could not connect to host
|
||||
jbn.mx: could not connect to host
|
||||
jcch.de: could not connect to host
|
||||
jcor.me: did not receive HSTS header
|
||||
@ -1943,7 +1946,6 @@ joretapo.fr: could not connect to host
|
||||
josahrens.me: could not connect to host
|
||||
joshstroup.me: could not connect to host
|
||||
jottit.com: could not connect to host
|
||||
jpaglier.com: could not connect to host
|
||||
jpbike.cz: could not connect to host
|
||||
jrc9.ca: did not receive HSTS header
|
||||
jrgold.me: could not connect to host
|
||||
@ -1960,7 +1962,6 @@ junge-selbsthilfe.info: could not connect to host
|
||||
juniwalk.cz: could not connect to host
|
||||
junqtion.com: could not connect to host
|
||||
jupp0r.de: did not receive HSTS header
|
||||
justinlemay.com: could not connect to host
|
||||
justlikethat.hosting: did not receive HSTS header
|
||||
justnaw.co.uk: could not connect to host
|
||||
justudin.com: did not receive HSTS header
|
||||
@ -1973,6 +1974,7 @@ jznet.org: max-age too low: 86400
|
||||
k-dev.de: could not connect to host
|
||||
ka-clan.com: could not connect to host
|
||||
kabuabc.com: did not receive HSTS header
|
||||
kabus.org: could not connect to host
|
||||
kadioglumakina.com.tr: did not receive HSTS header
|
||||
kaela.design: did not receive HSTS header
|
||||
kahopoon.net: could not connect to host
|
||||
@ -2006,7 +2008,6 @@ kerangalam.com: could not connect to host
|
||||
kerksanders.nl: did not receive HSTS header
|
||||
kermadec.net: could not connect to host
|
||||
kernl.us: did not receive HSTS header
|
||||
keybored.me: could not connect to host
|
||||
keymaster.lookout.com: did not receive HSTS header
|
||||
kgxtech.com: max-age too low: 2592000
|
||||
ki-on.net: did not receive HSTS header
|
||||
@ -2047,11 +2048,9 @@ kleertjesvoordelig.nl: did not receive HSTS header
|
||||
kleinblogje.nl: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
kletterkater.com: did not receive HSTS header
|
||||
klicktojob.de: could not connect to host
|
||||
klingeletest.de: could not connect to host
|
||||
klustekeningen.nl: did not receive HSTS header
|
||||
kmartin.io: did not receive HSTS header
|
||||
knccloud.com: could not connect to host
|
||||
kngkng.com: could not connect to host
|
||||
kngk-transavto.ru: could not connect to host
|
||||
knowledgesnap.com: did not receive HSTS header
|
||||
kodokushi.fr: could not connect to host
|
||||
koen.io: did not receive HSTS header
|
||||
@ -2071,10 +2070,10 @@ korsanparti.org: could not connect to host
|
||||
kotonehoko.net: could not connect to host
|
||||
kotovstyle.ru: could not connect to host
|
||||
kr.search.yahoo.com: did not receive HSTS header
|
||||
kraiwan.com: did not receive HSTS header
|
||||
krayx.com: could not connect to host
|
||||
kredite.sale: could not connect to host
|
||||
kriegt.es: could not connect to host
|
||||
kristikala.nl: could not connect to host
|
||||
krmela.com: could not connect to host
|
||||
kroetenfuchs.de: could not connect to host
|
||||
kropkait.pl: could not connect to host
|
||||
@ -2118,6 +2117,7 @@ landscape.canonical.com: max-age too low: 2592000
|
||||
langenbach.rocks: could not connect to host
|
||||
langhun.me: did not receive HSTS header
|
||||
laozhu.me: did not receive HSTS header
|
||||
lasereyess.net: could not connect to host
|
||||
laserfuchs.de: did not receive HSTS header
|
||||
lashstuff.com: did not receive HSTS header
|
||||
lask.in: did not receive HSTS header
|
||||
@ -2159,7 +2159,6 @@ lesperlesdunet.fr: could not connect to host
|
||||
letras.mus.br: did not receive HSTS header
|
||||
letsmultiplayerplay.com: did not receive HSTS header
|
||||
letustravel.tk: could not connect to host
|
||||
lewis.li: could not connect to host
|
||||
lfullerdesign.com: did not receive HSTS header
|
||||
lgiswa.com.au: did not receive HSTS header
|
||||
lgrs.com.au: did not receive HSTS header
|
||||
@ -2197,7 +2196,6 @@ lindberg.io: did not receive HSTS header
|
||||
lingotaxi.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
lingros-test.tk: could not connect to host
|
||||
linguaquote.com: did not receive HSTS header
|
||||
linksanitizer.com: could not connect to host
|
||||
linmi.cc: did not receive HSTS header
|
||||
linorman1997.me: could not connect to host
|
||||
lintmx.com: could not connect to host
|
||||
@ -2263,6 +2261,8 @@ lukeng.me: could not connect to host
|
||||
lukeng.net: could not connect to host
|
||||
lukonet.com: did not receive HSTS header
|
||||
lumi.do: did not receive HSTS header
|
||||
lunarift.com: could not connect to host
|
||||
lunarrift.net: could not connect to host
|
||||
luody.info: could not connect to host
|
||||
luoe.ml: could not connect to host
|
||||
luoxiao.im: could not connect to host
|
||||
@ -2273,7 +2273,6 @@ luther.fi: could not connect to host
|
||||
luxus-russen.de: did not receive HSTS header
|
||||
luxwatch.com: could not connect to host
|
||||
lv.search.yahoo.com: did not receive HSTS header
|
||||
lyonl.com: did not receive HSTS header
|
||||
lzkill.com: could not connect to host
|
||||
m-ali.xyz: did not receive HSTS header
|
||||
m.gparent.org: could not connect to host
|
||||
@ -2314,6 +2313,7 @@ managemynetsuite.com: could not connect to host
|
||||
mannsolutions.co.uk: did not receive HSTS header
|
||||
mansion-note.com: could not connect to host
|
||||
marchagen.nl: did not receive HSTS header
|
||||
marcofinke.de: could not connect to host
|
||||
marcontrol.com: did not receive HSTS header
|
||||
marcuskoh.com: could not connect to host
|
||||
mariannematthew.com: could not connect to host
|
||||
@ -2325,7 +2325,6 @@ markayapilandirma.com: could not connect to host
|
||||
market.android.com: did not receive HSTS header (error ignored - included regardless)
|
||||
markrego.com: could not connect to host
|
||||
markus-dev.com: did not receive HSTS header
|
||||
markusehrlicher.de: could not connect to host
|
||||
markusweimar.de: did not receive HSTS header
|
||||
marleyresort.com: did not receive HSTS header
|
||||
marshut.net: could not connect to host
|
||||
@ -2414,6 +2413,7 @@ michaelwaite.org: could not connect to host
|
||||
michal-kral.cz: could not connect to host
|
||||
michalborka.cz: could not connect to host
|
||||
michelchouinard.ca: could not connect to host
|
||||
miconware.de: did not receive HSTS header
|
||||
micro-dv.ru: could not connect to host
|
||||
micro-rain-systems.com: did not receive HSTS header
|
||||
microme.ga: could not connect to host
|
||||
@ -2434,6 +2434,7 @@ mikonmaa.fi: could not connect to host
|
||||
mikrom.cz: did not receive HSTS header
|
||||
miku.be: could not connect to host
|
||||
miku.hatsune.my: max-age too low: 5184000
|
||||
milahendri.com: could not connect to host
|
||||
milang.xyz: could not connect to host
|
||||
milesgeek.com: did not receive HSTS header
|
||||
mindcraft.ga: could not connect to host
|
||||
@ -2475,6 +2476,7 @@ mocloud.eu: could not connect to host
|
||||
moddedark.com: could not connect to host
|
||||
modemagazines.co.uk: could not connect to host
|
||||
moebel-nagel.de: did not receive HSTS header
|
||||
moegirl.org: did not receive HSTS header
|
||||
moelord.org: could not connect to host
|
||||
moen.io: did not receive HSTS header
|
||||
mogry.net: could not connect to host
|
||||
@ -2579,11 +2581,10 @@ nanogeneinc.com: could not connect to host
|
||||
nanto.eu: could not connect to host
|
||||
narada.com.ua: could not connect to host
|
||||
nargileh.nl: could not connect to host
|
||||
narindal.ch: did not receive HSTS header
|
||||
nascher.org: max-age too low: 7884000
|
||||
nascher.org: could not connect to host
|
||||
nasreddine.xyz: could not connect to host
|
||||
natalia.io: could not connect to host
|
||||
natalt.org: could not connect to host
|
||||
natalt.org: did not receive HSTS header
|
||||
nathanmfarrugia.com: did not receive HSTS header
|
||||
natural-progesterone.net: did not receive HSTS header
|
||||
naturesystems.cz: max-age too low: 0
|
||||
@ -2645,7 +2646,7 @@ nibiisclaim.com: could not connect to host
|
||||
nicestresser.fr: could not connect to host
|
||||
nicky.io: did not receive HSTS header
|
||||
nicoborghuis.nl: could not connect to host
|
||||
nicolasbettag.me: could not connect to host
|
||||
nicolasbettag.me: did not receive HSTS header
|
||||
niconiconi.xyz: could not connect to host
|
||||
niconode.com: could not connect to host
|
||||
nien.chat: could not connect to host
|
||||
@ -2668,8 +2669,8 @@ no17sifangjie.cc: could not connect to host
|
||||
nocallaghan.com: could not connect to host
|
||||
nocs.cn: could not connect to host
|
||||
nodebrewery.com: could not connect to host
|
||||
nodelia.com: could not connect to host
|
||||
nodetemple.com: could not connect to host
|
||||
nodi.at: did not receive HSTS header
|
||||
noexpect.org: could not connect to host
|
||||
noima.com: did not receive HSTS header
|
||||
nojestorget.se: could not connect to host
|
||||
@ -2677,7 +2678,6 @@ nolatepayments.com: [Exception... "Component returned failure code: 0x80004005 (
|
||||
nolte.work: could not connect to host
|
||||
nomorebytes.de: did not receive HSTS header
|
||||
noobunbox.net: did not receive HSTS header
|
||||
nootropicsource.com: did not receive HSTS header
|
||||
nope.website: could not connect to host
|
||||
nopex.no: could not connect to host
|
||||
nopol.de: did not receive HSTS header
|
||||
@ -2836,7 +2836,7 @@ overclockers.ge: could not connect to host
|
||||
override.io: did not receive HSTS header
|
||||
oversight.io: could not connect to host
|
||||
overthinkingit.com: max-age too low: 3600
|
||||
ovvy.net: could not connect to host
|
||||
ovvy.net: did not receive HSTS header
|
||||
owncloud.help: could not connect to host
|
||||
ownmovies.fr: could not connect to host
|
||||
oxygenabsorbers.com: did not receive HSTS header
|
||||
@ -2886,11 +2886,11 @@ paste.linode.com: could not connect to host
|
||||
pastebin.linode.com: could not connect to host
|
||||
pastenib.com: could not connect to host
|
||||
paster.li: did not receive HSTS header
|
||||
patflix.com: could not connect to host
|
||||
patientinsight.net: could not connect to host
|
||||
patt.us: did not receive HSTS header
|
||||
patterson.mp: could not connect to host
|
||||
paulchen.at: could not connect to host
|
||||
paulewen.ca: could not connect to host
|
||||
paulyang.cn: did not receive HSTS header
|
||||
paxwinkel.nl: did not receive HSTS header
|
||||
pay.gigahost.dk: did not receive HSTS header
|
||||
@ -2931,6 +2931,7 @@ pettitcoat.com: could not connect to host
|
||||
pettsy.com: could not connect to host
|
||||
pewboards.com: could not connect to host
|
||||
pgpm.io: could not connect to host
|
||||
phantasie.cc: could not connect to host
|
||||
pharmgkb.org: could not connect to host
|
||||
phonenumberinfo.co.uk: could not connect to host
|
||||
phongmay24h.com: could not connect to host
|
||||
@ -2948,7 +2949,7 @@ pinesandneedles.com: did not receive HSTS header
|
||||
pippen.io: could not connect to host
|
||||
piratedb.com: could not connect to host
|
||||
piratedot.com: could not connect to host
|
||||
piratelist.online: could not connect to host
|
||||
piratelist.online: did not receive HSTS header
|
||||
piratenlogin.de: could not connect to host
|
||||
pirateproxy.sx: could not connect to host
|
||||
pirati.cz: max-age too low: 604800
|
||||
@ -2983,6 +2984,8 @@ plothost.com: did not receive HSTS header
|
||||
ploup.net: could not connect to host
|
||||
pmnts.io: could not connect to host
|
||||
po.gl: did not receive HSTS header
|
||||
pocketsix.com: did not receive HSTS header
|
||||
pocloud.homelinux.net: could not connect to host
|
||||
poiema.com.sg: did not receive HSTS header
|
||||
pol.in.th: could not connect to host
|
||||
poleartschool.com: could not connect to host
|
||||
@ -3048,8 +3051,7 @@ proximato.com: could not connect to host
|
||||
proxybay.al: could not connect to host
|
||||
proxybay.club: could not connect to host
|
||||
proxybay.info: did not receive HSTS header
|
||||
prxio.date: could not connect to host
|
||||
prxio.site: did not receive HSTS header
|
||||
prxio.site: could not connect to host
|
||||
prytkov.com: did not receive HSTS header
|
||||
psicologia.co.ve: could not connect to host
|
||||
psw.academy: did not receive HSTS header
|
||||
@ -3095,7 +3097,6 @@ qwilink.me: did not receive HSTS header
|
||||
r10n.com: did not receive HSTS header
|
||||
r15.me: could not connect to host
|
||||
r3bl.me: did not receive HSTS header
|
||||
r40.us: could not connect to host
|
||||
raajheshkannaa.com: could not connect to host
|
||||
radicaleducation.net: could not connect to host
|
||||
rafaelcz.de: could not connect to host
|
||||
@ -3238,7 +3239,6 @@ rubyshop.nl: max-age too low: 604800
|
||||
rudeotter.com: could not connect to host
|
||||
rudloff.pro: did not receive HSTS header
|
||||
rugirlfriend.com: could not connect to host
|
||||
rugk.dedyn.io: could not connect to host
|
||||
ruiming.me: did not receive HSTS header
|
||||
runawebinar.nl: could not connect to host
|
||||
runementors.com: could not connect to host
|
||||
@ -3266,7 +3266,7 @@ sakurabuff.com: did not receive HSTS header
|
||||
salesmachine.io: did not receive HSTS header
|
||||
salserocafe.com: did not receive HSTS header
|
||||
salserototal.com: did not receive HSTS header
|
||||
salud.top: did not receive HSTS header
|
||||
salud.top: could not connect to host
|
||||
sametovymesic.cz: could not connect to host
|
||||
saml2.com: could not connect to host
|
||||
sampoznay.ru: did not receive HSTS header
|
||||
@ -3348,6 +3348,7 @@ sehenderson.com: did not receive HSTS header
|
||||
seiko-dojo.com: could not connect to host
|
||||
selecadm.name: could not connect to host
|
||||
selectruckscalltrackingreports.com: could not connect to host
|
||||
selent.me: could not connect to host
|
||||
selfcarecentral.com: did not receive HSTS header
|
||||
selfie-france.fr: could not connect to host
|
||||
selldorado.com: did not receive HSTS header
|
||||
@ -3391,6 +3392,7 @@ shanesage.com: could not connect to host
|
||||
shanewadleigh.com: could not connect to host
|
||||
sharepass.pw: could not connect to host
|
||||
sharescope.co.uk: max-age too low: 14400
|
||||
sharevari.com: did not receive HSTS header
|
||||
shauncrowley.co.uk: could not connect to host
|
||||
shaunwheelhou.se: could not connect to host
|
||||
shawnh.net: could not connect to host
|
||||
@ -3408,6 +3410,7 @@ shoprose.ru: could not connect to host
|
||||
shops.neonisi.com: could not connect to host
|
||||
shortr.li: could not connect to host
|
||||
showkeeper.tv: did not receive HSTS header
|
||||
shtorku.com: could not connect to host
|
||||
shukatsu-note.com: could not connect to host
|
||||
shv25.se: could not connect to host
|
||||
shwongacc.com: could not connect to host
|
||||
@ -3418,14 +3421,15 @@ sig6.org: could not connect to host
|
||||
silentcircle.org: could not connect to host
|
||||
silicagelpackets.ca: did not receive HSTS header
|
||||
silver-drachenkrieger.de: did not receive HSTS header
|
||||
silverhome.ninja: could not connect to host
|
||||
silverpvp.com: could not connect to host
|
||||
silverwind.io: did not receive HSTS header
|
||||
silvistefi.com: could not connect to host
|
||||
simbast.com: could not connect to host
|
||||
simbolo.co.uk: could not connect to host
|
||||
simod.org: could not connect to host
|
||||
simon.butcher.name: max-age too low: 2629743
|
||||
simongong.net: did not receive HSTS header
|
||||
simonhirscher.de: could not connect to host
|
||||
simpleai.net: max-age too low: 600
|
||||
simplefraud.com: could not connect to host
|
||||
simplelearner.com: could not connect to host
|
||||
@ -3440,6 +3444,7 @@ sitesten.com: did not receive HSTS header
|
||||
sitsy.ru: did not receive HSTS header
|
||||
skhosting.eu: did not receive HSTS header
|
||||
skile.ru: could not connect to host
|
||||
skills2services.com: did not receive HSTS header
|
||||
skk.io: could not connect to host
|
||||
skoda-clever-lead.de: could not connect to host
|
||||
skoda-im-dialog.de: could not connect to host
|
||||
@ -3472,6 +3477,7 @@ smkn1lengkong.sch.id: did not receive HSTS header
|
||||
smksi2.com: could not connect to host
|
||||
smm.im: could not connect to host
|
||||
smove.sg: did not receive HSTS header
|
||||
smpetrey.com: could not connect to host
|
||||
smusg.com: did not receive HSTS header
|
||||
snailing.org: could not connect to host
|
||||
snapappts.com: could not connect to host
|
||||
@ -3505,7 +3511,6 @@ someshit.xyz: could not connect to host
|
||||
somethingnew.xyz: did not receive HSTS header
|
||||
sonic.sk: max-age too low: 0
|
||||
sonicrainboom.rocks: did not receive HSTS header
|
||||
sortaweird.net: could not connect to host
|
||||
sotiran.com: did not receive HSTS header
|
||||
sotor.de: did not receive HSTS header
|
||||
soulboy.io: did not receive HSTS header
|
||||
@ -3604,6 +3609,7 @@ str0.at: did not receive HSTS header
|
||||
strasweb.fr: did not receive HSTS header
|
||||
streamingmagazin.de: could not connect to host
|
||||
streams.dyndns.org: could not connect to host
|
||||
streetspotr.com: did not receive HSTS header
|
||||
stressfreehousehold.com: did not receive HSTS header
|
||||
strictlysudo.com: could not connect to host
|
||||
stroeercrm.de: could not connect to host
|
||||
@ -3630,7 +3636,6 @@ suksit.com: could not connect to host
|
||||
sumoatm.com: did not receive HSTS header
|
||||
sumoscout.de: did not receive HSTS header
|
||||
suncountrymarine.com: did not receive HSTS header
|
||||
sunflyer.cn: did not receive HSTS header
|
||||
sunnyfruit.ru: did not receive HSTS header
|
||||
sunshinepress.org: could not connect to host
|
||||
suos.io: could not connect to host
|
||||
@ -3760,7 +3765,7 @@ thecharlestonwaldorf.com: did not receive HSTS header
|
||||
theclementinebutchers.com: could not connect to host
|
||||
thecoffeehouse.xyz: could not connect to host
|
||||
thediaryofadam.com: did not receive HSTS header
|
||||
theendofzion.com: could not connect to host
|
||||
theendofzion.com: did not receive HSTS header
|
||||
theeyeopener.com: did not receive HSTS header
|
||||
theflowerbasketonline.com: could not connect to host
|
||||
thefootballanalyst.com: could not connect to host
|
||||
@ -3775,7 +3780,6 @@ themicrocapital.com: could not connect to host
|
||||
themillerslive.com: could not connect to host
|
||||
theodorejones.info: could not connect to host
|
||||
thepartywarehouse.co.uk: did not receive HSTS header
|
||||
thepasteb.in: could not connect to host
|
||||
thepiratebay.al: could not connect to host
|
||||
thepiratebay.tech: could not connect to host
|
||||
therapyportal.com: did not receive HSTS header
|
||||
@ -3790,7 +3794,6 @@ thevintagenews.com: [Exception... "Component returned failure code: 0x80004005 (
|
||||
thewebfellas.com: did not receive HSTS header
|
||||
thezonders.com: did not receive HSTS header
|
||||
thierfreund.de: could not connect to host
|
||||
thijsvanderveen.net: could not connect to host
|
||||
thinkcoding.de: could not connect to host
|
||||
thirdpartytrade.com: did not receive HSTS header
|
||||
thirty5.net: did not receive HSTS header
|
||||
@ -3850,6 +3853,7 @@ tomcort.com: could not connect to host
|
||||
tomeara.net: could not connect to host
|
||||
tomharling.co.uk: max-age too low: 86400
|
||||
tomharling.uk: max-age too low: 86400
|
||||
tomharris.tech: could not connect to host
|
||||
tomlankhorst.nl: did not receive HSTS header
|
||||
tommsy.com: did not receive HSTS header
|
||||
tommyads.com: could not connect to host
|
||||
@ -3927,8 +3931,6 @@ tx041cap.org: did not receive HSTS header
|
||||
txclimbers.com: could not connect to host
|
||||
txf.pw: could not connect to host
|
||||
ty2u.com: did not receive HSTS header
|
||||
tyler.rs: could not connect to host
|
||||
tyleromeara.com: could not connect to host
|
||||
tylian.net: max-age too low: 0
|
||||
typingrevolution.com: did not receive HSTS header
|
||||
tyrelius.com: did not receive HSTS header
|
||||
@ -3937,11 +3939,12 @@ tzappa.net: could not connect to host
|
||||
u-blox.com: max-age too low: 0
|
||||
ua.search.yahoo.com: did not receive HSTS header
|
||||
ubicloud.de: could not connect to host
|
||||
ubicv.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
ublox.com: did not receive HSTS header
|
||||
ubuntuhot.com: did not receive HSTS header
|
||||
uega.net: did not receive HSTS header
|
||||
ufgaming.com: did not receive HSTS header
|
||||
ufotable.uk: max-age too low: 0
|
||||
ufotable.uk: did not receive HSTS header
|
||||
ugcdn.com: could not connect to host
|
||||
ui8.net: max-age too low: 86400
|
||||
ukas.com: did not receive HSTS header
|
||||
@ -3952,7 +3955,6 @@ ulmo.dk: could not connect to host
|
||||
ultros.io: did not receive HSTS header
|
||||
umidev.com: could not connect to host
|
||||
umie.cc: did not receive HSTS header
|
||||
unart.info: could not connect to host
|
||||
unbanthe.net: could not connect to host
|
||||
unblocked-networks.org: could not connect to host
|
||||
unblocked.host: could not connect to host
|
||||
@ -3960,11 +3962,9 @@ unblocked.win: could not connect to host
|
||||
unccdesign.club: could not connect to host
|
||||
unclegen.xyz: could not connect to host
|
||||
undernet.uy: did not receive HSTS header
|
||||
underskatten.tk: could not connect to host
|
||||
unfiltered.nyc: did not receive HSTS header
|
||||
uni-games.com: could not connect to host
|
||||
unicooo.com: did not receive HSTS header
|
||||
uniform-agri.com: did not receive HSTS header
|
||||
unison.com: could not connect to host
|
||||
unitedcyberdevelopment.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
unitel2000.de: could not connect to host
|
||||
@ -3982,7 +3982,6 @@ up1.ca: could not connect to host
|
||||
upaknship.com: did not receive HSTS header
|
||||
upani.net: did not receive HSTS header
|
||||
upldr.pw: could not connect to host
|
||||
upr.com.ua: could not connect to host
|
||||
uprotect.it: could not connect to host
|
||||
upstats.eu: could not connect to host
|
||||
urandom.eu.org: did not receive HSTS header
|
||||
@ -3993,7 +3992,7 @@ usaa.com: did not receive HSTS header
|
||||
uscitizenship.info: did not receive HSTS header
|
||||
used-in.jp: did not receive HSTS header
|
||||
usercare.com: did not receive HSTS header
|
||||
userify.com: max-age too low: 0
|
||||
userify.com: did not receive HSTS header
|
||||
ustr.gov: max-age too low: 86400
|
||||
utleieplassen.no: could not connect to host
|
||||
utopiagalaxy.space: did not receive HSTS header
|
||||
@ -4037,12 +4036,12 @@ vetmgmt.com: could not connect to host
|
||||
vfree.org: could not connect to host
|
||||
vglimg.com: could not connect to host
|
||||
vhost.co.id: could not connect to host
|
||||
vibrant-america.com: could not connect to host
|
||||
videnskabsklubben.dk: did not receive HSTS header
|
||||
videomuz.com: did not receive HSTS header
|
||||
vidz.ga: could not connect to host
|
||||
vieaw.com: could not connect to host
|
||||
viewsea.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
vigilo.cf: could not connect to host
|
||||
viktorsvantesson.net: did not receive HSTS header
|
||||
vincentkooijman.at: did not receive HSTS header
|
||||
vincentkooijman.nl: did not receive HSTS header
|
||||
@ -4101,6 +4100,7 @@ wavefrontsystemstech.com: could not connect to host
|
||||
wealthfactory.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
wear2work.nl: did not receive HSTS header
|
||||
wearandcare.net: could not connect to host
|
||||
weather-and-climate.com: could not connect to host
|
||||
weaverhairextensions.nl: could not connect to host
|
||||
web.cc: did not receive HSTS header
|
||||
web4all.fr: max-age too low: 0
|
||||
@ -4165,6 +4165,7 @@ willosagiede.com: did not receive HSTS header
|
||||
winaes.com: did not receive HSTS header
|
||||
winclient.cn: could not connect to host
|
||||
winecodeavocado.com: could not connect to host
|
||||
wingos.net: could not connect to host
|
||||
wingumd.net: could not connect to host
|
||||
winhistory-forum.net: did not receive HSTS header
|
||||
winpack.cf: could not connect to host
|
||||
@ -4185,6 +4186,7 @@ witzemaschine.com: max-age too low: 0
|
||||
wiz.biz: could not connect to host
|
||||
wlzhiyin.cn: could not connect to host
|
||||
wmcuk.net: could not connect to host
|
||||
wmfinanz.com: max-age too low: 86400
|
||||
wohnungsbau-ludwigsburg.de: did not receive HSTS header
|
||||
woima.fi: max-age too low: 604800
|
||||
wolfesden.com: could not connect to host
|
||||
@ -4225,7 +4227,6 @@ www.neonisi.com: could not connect to host
|
||||
www.paycheckrecords.com: did not receive HSTS header
|
||||
www.rme.li: did not receive HSTS header
|
||||
www.sandbox.mydigipass.com: could not connect to host
|
||||
www.simbolo.co.uk: could not connect to host
|
||||
www.surfeasy.com: did not receive HSTS header
|
||||
www.zenpayroll.com: did not receive HSTS header
|
||||
www3.info: did not receive HSTS header
|
||||
@ -4270,7 +4271,6 @@ xn--neb-tma3u8u.xyz: could not connect to host
|
||||
xnode.org: did not receive HSTS header
|
||||
xoffy.com: did not receive HSTS header
|
||||
xombra.com: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
xpi.fr: could not connect to host
|
||||
xplore-dna.net: [Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [nsISiteSecurityService.processHeader]" nsresult: "0x80004005 (NS_ERROR_FAILURE)" location: "JS frame :: /builds/slave/m-cen-l64-periodicupdate-00000/getHSTSPreloadList.js :: processStsHeader :: line 121" data: no]
|
||||
xsmobile.de: could not connect to host
|
||||
xtream-hosting.com: could not connect to host
|
||||
@ -4306,7 +4306,7 @@ ynode.co: did not receive HSTS header
|
||||
ynsn.nl: did not receive HSTS header
|
||||
yntongji.com: did not receive HSTS header
|
||||
yoga.is-an-engineer.com: could not connect to host
|
||||
yokeepo.com: could not connect to host
|
||||
yokeepo.com: max-age too low: 0
|
||||
yoloboatrentals.com: did not receive HSTS header
|
||||
yoloprod.fr: could not connect to host
|
||||
yoloseo.com: could not connect to host
|
||||
@ -4341,7 +4341,7 @@ zefiris.org: did not receive HSTS header
|
||||
zefu.ca: could not connect to host
|
||||
zeitpunkt-kulturmagazin.de: did not receive HSTS header
|
||||
zelezny.uk: did not receive HSTS header
|
||||
zelfstandigemakelaars.net: did not receive HSTS header
|
||||
zelfstandigemakelaars.net: could not connect to host
|
||||
zenpayroll.com: did not receive HSTS header
|
||||
zentraler-kreditausschuss.de: did not receive HSTS header
|
||||
zentralwolke.de: did not receive HSTS header
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -13,10 +13,17 @@ from marionette_harness import MarionetteTestCase, skip_if_e10s
|
||||
class TestTabModals(MarionetteTestCase):
|
||||
|
||||
def setUp(self):
|
||||
MarionetteTestCase.setUp(self)
|
||||
self.marionette.enforce_gecko_prefs({"prompts.tab_modal.enabled": True})
|
||||
super(TestTabModals, self).setUp()
|
||||
self.marionette.set_pref("prompts.tab_modal.enabled", True)
|
||||
self.marionette.navigate(self.marionette.absolute_url('modal_dialogs.html'))
|
||||
|
||||
def tearDown(self):
|
||||
# Ensure an alert is absent before proceeding past this test.
|
||||
Wait(self.marionette).until(lambda _: not self.alert_present())
|
||||
self.marionette.execute_script("window.onbeforeunload = null;")
|
||||
self.marionette.clear_pref("prompts.tab_modal.enabled")
|
||||
super(TestTabModals, self).tearDown()
|
||||
|
||||
def alert_present(self):
|
||||
try:
|
||||
Alert(self.marionette).text
|
||||
@ -24,11 +31,6 @@ class TestTabModals(MarionetteTestCase):
|
||||
except NoAlertPresentException:
|
||||
return False
|
||||
|
||||
def tearDown(self):
|
||||
# Ensure an alert is absent before proceeding past this test.
|
||||
Wait(self.marionette).until(lambda _: not self.alert_present())
|
||||
self.marionette.execute_script("window.onbeforeunload = null;")
|
||||
|
||||
def wait_for_alert(self):
|
||||
Wait(self.marionette).until(lambda _: self.alert_present())
|
||||
|
||||
@ -187,9 +189,8 @@ class TestTabModals(MarionetteTestCase):
|
||||
class TestGlobalModals(TestTabModals):
|
||||
|
||||
def setUp(self):
|
||||
MarionetteTestCase.setUp(self)
|
||||
self.marionette.enforce_gecko_prefs({"prompts.tab_modal.enabled": False})
|
||||
self.marionette.navigate(self.marionette.absolute_url('modal_dialogs.html'))
|
||||
super(TestGlobalModals, self).setUp()
|
||||
self.marionette.set_pref("prompts.tab_modal.enabled", False)
|
||||
|
||||
def test_unrelated_command_when_alert_present(self):
|
||||
# The assumptions in this test do not hold on certain platforms, and not when
|
||||
|
@ -103,7 +103,6 @@ skip-if = os == "linux" || appname == 'fennec' # Bug 1085717
|
||||
[test_with_using_context.py]
|
||||
|
||||
[test_modal_dialogs.py]
|
||||
skip-if = manage_instance == false || appname == 'fennec' # Bug 1328696
|
||||
[test_key_actions.py]
|
||||
[test_mouse_action.py]
|
||||
skip-if = appname == 'fennec'
|
||||
|
@ -37,21 +37,30 @@ MockObjectRegisterer.prototype = {
|
||||
throw new Exception("Invalid object state when calling register()");
|
||||
|
||||
// Define a factory that creates a new object using the given constructor.
|
||||
var isChrome = location.protocol == "chrome:";
|
||||
var providedConstructor = this._replacementCtor;
|
||||
this._mockFactory = {
|
||||
createInstance: function MF_createInstance(aOuter, aIid) {
|
||||
if (aOuter != null)
|
||||
throw SpecialPowers.Cr.NS_ERROR_NO_AGGREGATION;
|
||||
return new providedConstructor().QueryInterface(aIid);
|
||||
var inst = new providedConstructor();
|
||||
if (!isChrome) {
|
||||
var QI = inst.QueryInterface;
|
||||
inst = SpecialPowers.wrapCallbackObject(inst);
|
||||
inst.QueryInterface = QI;
|
||||
}
|
||||
return inst.QueryInterface(aIid);
|
||||
}
|
||||
};
|
||||
if (!isChrome) {
|
||||
this._mockFactory = SpecialPowers.wrapCallbackObject(this._mockFactory);
|
||||
}
|
||||
|
||||
var retVal = SpecialPowers.swapFactoryRegistration(this._cid, this._contractID, this._mockFactory, this._originalFactory);
|
||||
var retVal = SpecialPowers.swapFactoryRegistration(null, this._contractID, this._mockFactory, this._originalFactory);
|
||||
if ('error' in retVal) {
|
||||
throw new Exception("ERROR: " + retVal.error);
|
||||
} else {
|
||||
this._cid = retVal.cid;
|
||||
this._originalFactory = retVal.originalFactory;
|
||||
this._originalFactory = SpecialPowers.wrap(retVal).originalFactory;
|
||||
}
|
||||
},
|
||||
|
||||
@ -63,10 +72,9 @@ MockObjectRegisterer.prototype = {
|
||||
throw new Exception("Invalid object state when calling unregister()");
|
||||
|
||||
// Free references to the mock factory.
|
||||
SpecialPowers.swapFactoryRegistration(this._cid, this._contractID, this._mockFactory, this._originalFactory);
|
||||
SpecialPowers.swapFactoryRegistration(null, this._contractID, this._originalFactory, this._mockFactory);
|
||||
|
||||
// Allow registering a mock factory again later.
|
||||
this._cid = null;
|
||||
this._originalFactory = null;
|
||||
this._mockFactory = null;
|
||||
},
|
||||
@ -78,11 +86,6 @@ MockObjectRegisterer.prototype = {
|
||||
*/
|
||||
_originalFactory: null,
|
||||
|
||||
/**
|
||||
* The CID under which the mock contractID was registered.
|
||||
*/
|
||||
_cid: null,
|
||||
|
||||
/**
|
||||
* The nsIFactory that was automatically generated by this object.
|
||||
*/
|
||||
|
@ -17,9 +17,18 @@
|
||||
</form>
|
||||
|
||||
<script>
|
||||
var parentOrigin = "http://mochi.test:8888";
|
||||
window.addEventListener("message", receiveMessage, false);
|
||||
function receiveMessage(event) {
|
||||
if (event.origin !== parentOrigin) {
|
||||
parent.postMessage({error: "unexpected origin " + event.origin}, parentOrigin);
|
||||
return;
|
||||
}
|
||||
clickButton(+event.data);
|
||||
}
|
||||
|
||||
function checkSubmit(num) {
|
||||
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
||||
return parent.checkSubmit(num);
|
||||
return parent.postMessage({num}, parentOrigin);
|
||||
}
|
||||
|
||||
function clickButton(num) {
|
||||
|
@ -256,6 +256,16 @@
|
||||
<pre id="test">
|
||||
<script class="testbody" type="text/javascript">
|
||||
/* import-globals-from satchel_common.js */
|
||||
var iframeOrigin = "https://example.com";
|
||||
window.addEventListener("message", receiveMessage, false);
|
||||
function receiveMessage(event) {
|
||||
is(event.origin, iframeOrigin, "checking origin");
|
||||
if (event.data.error) {
|
||||
ok(false, event.data.error);
|
||||
}
|
||||
checkSubmit(+event.data.num);
|
||||
}
|
||||
|
||||
var numSubmittedForms = 0;
|
||||
|
||||
var ccNumbers = {
|
||||
@ -365,7 +375,6 @@ function startTest() {
|
||||
|
||||
// Called by each form's onsubmit handler.
|
||||
function checkSubmit(formNum) {
|
||||
netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
|
||||
|
||||
ok(true, "form " + formNum + " submitted");
|
||||
numSubmittedForms++;
|
||||
@ -501,7 +510,7 @@ function submitForm(formNum) {
|
||||
// from an HTTPS domain in an iframe.
|
||||
if (nextFormNum == 21 || nextFormNum == 100) {
|
||||
ok(true, "submitting iframe test " + nextFormNum);
|
||||
document.getElementById("iframe").contentWindow.clickButton(nextFormNum);
|
||||
document.getElementById("iframe").contentWindow.postMessage(nextFormNum, iframeOrigin);
|
||||
} else {
|
||||
var button = getFormSubmitButton(nextFormNum);
|
||||
button.click();
|
||||
|
@ -16,17 +16,16 @@
|
||||
<div id="date-picker">
|
||||
<div class="calendar-container">
|
||||
<div class="nav">
|
||||
<button class="left"><</button>
|
||||
<button class="right">></button>
|
||||
<button class="left"/>
|
||||
<button class="right"/>
|
||||
</div>
|
||||
<div class="week-header"></div>
|
||||
<div class="days-viewport">
|
||||
<div class="days-view"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="month-year">
|
||||
<div class="month-year-label"></div>
|
||||
<div class="month-year-arrow"></div>
|
||||
<div class="month-year-container">
|
||||
<button class="month-year"/>
|
||||
</div>
|
||||
<div class="month-year-view"></div>
|
||||
</div>
|
||||
|
@ -174,7 +174,8 @@ function DatePicker(context) {
|
||||
*/
|
||||
_attachEventListeners() {
|
||||
window.addEventListener("message", this);
|
||||
document.addEventListener("click", this);
|
||||
document.addEventListener("mouseup", this, { passive: true });
|
||||
document.addEventListener("mousedown", this);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -188,16 +189,28 @@ function DatePicker(context) {
|
||||
this.handleMessage(event);
|
||||
break;
|
||||
}
|
||||
case "click": {
|
||||
case "mousedown": {
|
||||
// Use preventDefault to keep focus on input boxes
|
||||
event.preventDefault();
|
||||
event.target.setCapture();
|
||||
|
||||
if (event.target == this.context.buttonLeft) {
|
||||
event.target.classList.add("active");
|
||||
this.state.dateKeeper.setMonthByOffset(-1);
|
||||
this._update();
|
||||
} else if (event.target == this.context.buttonRight) {
|
||||
event.target.classList.add("active");
|
||||
this.state.dateKeeper.setMonthByOffset(1);
|
||||
this._update();
|
||||
}
|
||||
break;
|
||||
}
|
||||
case "mouseup": {
|
||||
if (event.target == this.context.buttonLeft || event.target == this.context.buttonRight) {
|
||||
event.target.classList.remove("active");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@ -307,6 +320,7 @@ function DatePicker(context) {
|
||||
this.context.monthYear.textContent = this.state.dateFormat(props.dateObj);
|
||||
|
||||
if (props.isVisible) {
|
||||
this.context.monthYear.classList.add("active");
|
||||
this.components.month.setState({
|
||||
value: props.month,
|
||||
items: props.months,
|
||||
@ -323,6 +337,7 @@ function DatePicker(context) {
|
||||
});
|
||||
this.state.firstOpened = false;
|
||||
} else {
|
||||
this.context.monthYear.classList.remove("active");
|
||||
this.state.isMonthSet = false;
|
||||
this.state.isYearSet = false;
|
||||
this.state.firstOpened = true;
|
||||
|
@ -266,11 +266,11 @@ function Spinner(props, context) {
|
||||
* Attach event listeners to the spinner and buttons.
|
||||
*/
|
||||
_attachEventListeners() {
|
||||
const { spinner } = this.elements;
|
||||
const { spinner, container } = this.elements;
|
||||
|
||||
spinner.addEventListener("scroll", this, { passive: true });
|
||||
document.addEventListener("mouseup", this, { passive: true });
|
||||
document.addEventListener("mousedown", this);
|
||||
container.addEventListener("mouseup", this, { passive: true });
|
||||
container.addEventListener("mousedown", this, { passive: true });
|
||||
},
|
||||
|
||||
/**
|
||||
@ -288,9 +288,6 @@ function Spinner(props, context) {
|
||||
break;
|
||||
}
|
||||
case "mousedown": {
|
||||
// Use preventDefault to keep focus on input boxes
|
||||
event.preventDefault();
|
||||
event.target.setCapture();
|
||||
this.state.mouseState = {
|
||||
down: true,
|
||||
layerX: event.layerX,
|
||||
|
@ -216,6 +216,7 @@ function TimePicker(context) {
|
||||
},
|
||||
_attachEventListeners() {
|
||||
window.addEventListener("message", this);
|
||||
document.addEventListener("mousedown", this);
|
||||
},
|
||||
|
||||
/**
|
||||
@ -229,6 +230,12 @@ function TimePicker(context) {
|
||||
this.handleMessage(event);
|
||||
break;
|
||||
}
|
||||
case "mousedown": {
|
||||
// Use preventDefault to keep focus on input boxes
|
||||
event.preventDefault();
|
||||
event.target.setCapture();
|
||||
break;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -16,6 +16,7 @@
|
||||
|
||||
--border: 0.1rem solid #D6D6D6;
|
||||
--border-radius: 0.3rem;
|
||||
--border-active-color: #B1B1B1;
|
||||
|
||||
--font-color: #191919;
|
||||
--fill-color: #EBEBEB;
|
||||
@ -26,6 +27,7 @@
|
||||
--button-font-color: #858585;
|
||||
--button-font-color-hover: #4D4D4D;
|
||||
--button-font-color-active: #191919;
|
||||
--button-fill-color-active: #D4D4D4;
|
||||
|
||||
--weekday-font-color: #6C6C6C;
|
||||
--weekday-outside-font-color: #6C6C6C;
|
||||
@ -46,6 +48,12 @@ body {
|
||||
font-size: var(--font-size-default);
|
||||
}
|
||||
|
||||
button {
|
||||
-moz-appearance: none;
|
||||
background: none;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.nav {
|
||||
display: flex;
|
||||
width: var(--calendar-width);
|
||||
@ -54,15 +62,30 @@ body {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.nav button {
|
||||
-moz-appearance: none;
|
||||
background: none;
|
||||
border: none;
|
||||
.nav > button {
|
||||
width: 3rem;
|
||||
height: var(--date-picker-item-height);
|
||||
filter: url("chrome://global/skin/filters.svg#fill");
|
||||
fill: var(--button-font-color);
|
||||
}
|
||||
|
||||
.month-year {
|
||||
.nav > button:hover {
|
||||
fill: var(--button-font-color-hover);
|
||||
}
|
||||
|
||||
.nav > button.active {
|
||||
fill: var(--button-font-color-active);
|
||||
}
|
||||
|
||||
.nav > button.left {
|
||||
background: url("chrome://global/skin/icons/calendar-arrows.svg#left") no-repeat 50% 50%;
|
||||
}
|
||||
|
||||
.nav > button.right {
|
||||
background: url("chrome://global/skin/icons/calendar-arrows.svg#right") no-repeat 50% 50%;
|
||||
}
|
||||
|
||||
.month-year-container {
|
||||
position: absolute;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
@ -74,6 +97,36 @@ body {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
button.month-year {
|
||||
font-size: 1.3rem;
|
||||
border: var(--border);
|
||||
border-radius: 0.3rem;
|
||||
padding: 0.2rem 2.6rem 0.2rem 1.2rem;
|
||||
}
|
||||
|
||||
button.month-year:hover {
|
||||
background: var(--fill-color);
|
||||
}
|
||||
|
||||
button.month-year.active {
|
||||
border-color: var(--border-active-color);
|
||||
background: var(--button-fill-color-active);
|
||||
}
|
||||
|
||||
button.month-year::after {
|
||||
position: absolute;
|
||||
content: "";
|
||||
width: 2.6rem;
|
||||
height: 1.6rem;
|
||||
background: url("chrome://global/skin/icons/spinner-arrows.svg#down") no-repeat 50% 50%;
|
||||
filter: url("chrome://global/skin/filters.svg#fill");
|
||||
fill: var(--button-font-color);
|
||||
}
|
||||
|
||||
button.month-year.active::after {
|
||||
background: url("chrome://global/skin/icons/spinner-arrows.svg#up") no-repeat 50% 50%;
|
||||
}
|
||||
|
||||
.month-year-view {
|
||||
position: absolute;
|
||||
z-index: 5;
|
||||
@ -187,9 +240,6 @@ body {
|
||||
}
|
||||
|
||||
.spinner-container > button {
|
||||
-moz-appearance: none;
|
||||
border: none;
|
||||
background: none;
|
||||
height: var(--spinner-button-height);
|
||||
filter: url("chrome://global/skin/filters.svg#fill");
|
||||
fill: var(--button-font-color);
|
||||
|
13
toolkit/themes/shared/icons/calendar-arrows.svg
Normal file
13
toolkit/themes/shared/icons/calendar-arrows.svg
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 14 14">
|
||||
<style>
|
||||
path:not(:target) {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
||||
<path id="right" d="M4.8 14L3 12.3 8.5 7 3 1.7 4.8 0 12 7"/>
|
||||
<path id="left" d="M9.2 0L11 1.7 5.5 7 11 12.3 9.2 14 2 7"/>
|
||||
</svg>
|
After Width: | Height: | Size: 540 B |
@ -24,6 +24,7 @@ toolkit.jar:
|
||||
skin/classic/global/datetimeinputpickers.css (../../shared/datetimeinputpickers.css)
|
||||
skin/classic/global/datetimepopup.css (../../shared/datetimepopup.css)
|
||||
skin/classic/global/filters.svg (../../shared/filters.svg)
|
||||
skin/classic/global/icons/calendar-arrows.svg (../../shared/icons/calendar-arrows.svg)
|
||||
skin/classic/global/icons/find-arrows.svg (../../shared/icons/find-arrows.svg)
|
||||
skin/classic/global/icons/info.svg (../../shared/incontent-icons/info.svg)
|
||||
skin/classic/global/icons/input-clear.svg (../../shared/icons/input-clear.svg)
|
||||
|
@ -1,6 +1,6 @@
|
||||
load 38589-1.xul
|
||||
load 64049-1.html
|
||||
skip-if(stylo) load 281743-1.html # bug 1323665
|
||||
load 281743-1.html
|
||||
load 323497-1.html
|
||||
load 382756-1.xul
|
||||
load 387745-1.svg
|
||||
|
@ -16,6 +16,9 @@ support-files = window_bug478536.xul
|
||||
[test_bug517396.xul]
|
||||
[test_bug538242.xul]
|
||||
support-files = window_bug538242.xul
|
||||
[test_bug565392.html]
|
||||
subsuite = clipboard
|
||||
skip-if = toolkit != "windows"
|
||||
[test_bug593307.xul]
|
||||
support-files = window_bug593307_offscreen.xul window_bug593307_centerscreen.xul
|
||||
[test_bug1151186.html]
|
||||
|
@ -4,9 +4,6 @@ support-files = utils.js
|
||||
[test_assign_event_data.html]
|
||||
subsuite = clipboard
|
||||
skip-if = toolkit == "cocoa" # Mac: Bug 933303
|
||||
[test_bug565392.html]
|
||||
subsuite = clipboard
|
||||
skip-if = toolkit != "windows" || e10s # Bug 1267406
|
||||
[test_picker_no_crash.html]
|
||||
skip-if = toolkit != "windows" || e10s # Bug 1267491
|
||||
support-files = window_picker_no_crash_child.html
|
||||
|
@ -5,8 +5,8 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=565392
|
||||
-->
|
||||
<head>
|
||||
<title>Test for Bug 565392</title>
|
||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
||||
<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=565392">Mozilla Bug 565392</a>
|
||||
@ -19,7 +19,6 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=565392
|
||||
|
||||
/** Test for Bug 565392 **/
|
||||
|
||||
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
|
||||
const Cc = SpecialPowers.Cc;
|
||||
const Ci = SpecialPowers.Ci;
|
||||
var ds = Cc["@mozilla.org/file/directory_service;1"]
|
||||
|
Loading…
Reference in New Issue
Block a user