mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Merge m-c to fx-team.
This commit is contained in:
commit
230ec65231
2
CLOBBER
2
CLOBBER
@ -22,4 +22,4 @@
|
||||
# changes to stick? As of bug 928195, this shouldn't be necessary! Please
|
||||
# don't change CLOBBER for WebIDL changes any more.
|
||||
|
||||
Update CLOBBER for bug 939672 moves file location and requires clobber build.
|
||||
Update CLOBBER for bug 978784 because it touches the ICU build system.
|
||||
|
@ -38,7 +38,6 @@
|
||||
|
||||
#announce-box:not(.showing) {
|
||||
opacity: 0.0;
|
||||
margin: 0.1em;
|
||||
-moz-transition: opacity 0.4s linear;
|
||||
}
|
||||
|
||||
|
@ -134,6 +134,11 @@ this.AccessFu = {
|
||||
this.readyCallback();
|
||||
delete this.readyCallback;
|
||||
}
|
||||
|
||||
if (Utils.MozBuildApp !== 'mobile/android') {
|
||||
this.announce(
|
||||
Utils.stringBundle.GetStringFromName('screenReaderStarted'));
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
@ -149,6 +154,11 @@ this.AccessFu = {
|
||||
|
||||
Utils.win.document.removeChild(this.stylesheet.get());
|
||||
|
||||
if (Utils.MozBuildApp !== 'mobile/android') {
|
||||
this.announce(
|
||||
Utils.stringBundle.GetStringFromName('screenReaderStopped'));
|
||||
}
|
||||
|
||||
for each (let mm in Utils.AllMessageManagers) {
|
||||
mm.sendAsyncMessage('AccessFu:Stop');
|
||||
this._removeMessageListeners(mm);
|
||||
@ -368,8 +378,7 @@ this.AccessFu = {
|
||||
},
|
||||
|
||||
announce: function announce(aAnnouncement) {
|
||||
this._output(Presentation.announce(aAnnouncement),
|
||||
Utils.CurrentBrowser);
|
||||
this._output(Presentation.announce(aAnnouncement), Utils.CurrentBrowser);
|
||||
},
|
||||
|
||||
// So we don't enable/disable twice
|
||||
@ -515,7 +524,8 @@ var Output = {
|
||||
|
||||
init: function init() {
|
||||
let window = Utils.win;
|
||||
this.webspeechEnabled = !!window.speechSynthesis;
|
||||
this.webspeechEnabled = !!window.speechSynthesis &&
|
||||
!!window.SpeechSynthesisUtterance;
|
||||
|
||||
let settingsToGet = 2;
|
||||
let settingsCallback = (aName, aSetting) => {
|
||||
|
@ -33,10 +33,6 @@ XPCOMUtils.defineLazyModuleGetter(this, 'Roles',
|
||||
XPCOMUtils.defineLazyModuleGetter(this, 'States',
|
||||
'resource://gre/modules/accessibility/Constants.jsm');
|
||||
|
||||
var gStringBundle = Cc['@mozilla.org/intl/stringbundle;1'].
|
||||
getService(Ci.nsIStringBundleService).
|
||||
createBundle('chrome://global/locale/AccessFu.properties');
|
||||
|
||||
this.EXPORTED_SYMBOLS = ['UtteranceGenerator', 'BrailleGenerator'];
|
||||
|
||||
this.OutputGenerator = {
|
||||
@ -194,7 +190,7 @@ this.OutputGenerator = {
|
||||
return;
|
||||
}
|
||||
|
||||
let landmark = gStringBundle.GetStringFromName(landmarkName);
|
||||
let landmark = Utils.stringBundle.GetStringFromName(landmarkName);
|
||||
if (!landmark) {
|
||||
return;
|
||||
}
|
||||
@ -221,7 +217,7 @@ this.OutputGenerator = {
|
||||
}
|
||||
typeName = 'textInputType_' + typeName;
|
||||
try {
|
||||
aDesc.push(gStringBundle.GetStringFromName(typeName));
|
||||
aDesc.push(Utils.stringBundle.GetStringFromName(typeName));
|
||||
} catch (x) {
|
||||
Logger.warning('Failed to get a string from a bundle for', typeName);
|
||||
}
|
||||
@ -244,7 +240,7 @@ this.OutputGenerator = {
|
||||
_getLocalizedState: function _getLocalizedState(aState) {},
|
||||
|
||||
_getPluralFormString: function _getPluralFormString(aString, aCount) {
|
||||
let str = gStringBundle.GetStringFromName(this._getOutputName(aString));
|
||||
let str = Utils.stringBundle.GetStringFromName(this._getOutputName(aString));
|
||||
str = PluralForm.get(aCount, str);
|
||||
return str.replace('#1', aCount);
|
||||
},
|
||||
@ -378,7 +374,7 @@ this.OutputGenerator = {
|
||||
let output = [];
|
||||
let desc = this._getLocalizedState(aState);
|
||||
desc.push(
|
||||
gStringBundle.formatStringFromName(
|
||||
Utils.stringBundle.formatStringFromName(
|
||||
'objItemOf', [localizedRole, itemno.value, itemof.value], 3));
|
||||
output.push(desc.join(' '));
|
||||
|
||||
@ -406,7 +402,7 @@ this.OutputGenerator = {
|
||||
table.columnCount);
|
||||
let tableRowInfo = this._getPluralFormString('tableRowInfo',
|
||||
table.rowCount);
|
||||
output.push(gStringBundle.formatStringFromName(
|
||||
output.push(Utils.stringBundle.formatStringFromName(
|
||||
this._getOutputName('tableInfo'), [this._getLocalizedRole(aRoleStr),
|
||||
tableColumnInfo, tableRowInfo], 3));
|
||||
this._addName(output, aAccessible, aFlags);
|
||||
@ -455,13 +451,13 @@ this.UtteranceGenerator = {
|
||||
|
||||
//TODO: May become more verbose in the future.
|
||||
genForAction: function genForAction(aObject, aActionName) {
|
||||
return [gStringBundle.GetStringFromName(this.gActionMap[aActionName])];
|
||||
return [Utils.stringBundle.GetStringFromName(this.gActionMap[aActionName])];
|
||||
},
|
||||
|
||||
genForLiveRegion: function genForLiveRegion(aContext, aIsHide, aModifiedText) {
|
||||
let utterance = [];
|
||||
if (aIsHide) {
|
||||
utterance.push(gStringBundle.GetStringFromName('hidden'));
|
||||
utterance.push(Utils.stringBundle.GetStringFromName('hidden'));
|
||||
}
|
||||
return utterance.concat(
|
||||
aModifiedText || this.genForContext(aContext).output);
|
||||
@ -469,7 +465,7 @@ this.UtteranceGenerator = {
|
||||
|
||||
genForAnnouncement: function genForAnnouncement(aAnnouncement) {
|
||||
try {
|
||||
return [gStringBundle.GetStringFromName(aAnnouncement)];
|
||||
return [Utils.stringBundle.GetStringFromName(aAnnouncement)];
|
||||
} catch (x) {
|
||||
return [aAnnouncement];
|
||||
}
|
||||
@ -478,24 +474,24 @@ this.UtteranceGenerator = {
|
||||
genForTabStateChange: function genForTabStateChange(aObject, aTabState) {
|
||||
switch (aTabState) {
|
||||
case 'newtab':
|
||||
return [gStringBundle.GetStringFromName('tabNew')];
|
||||
return [Utils.stringBundle.GetStringFromName('tabNew')];
|
||||
case 'loading':
|
||||
return [gStringBundle.GetStringFromName('tabLoading')];
|
||||
return [Utils.stringBundle.GetStringFromName('tabLoading')];
|
||||
case 'loaded':
|
||||
return [aObject.name || '',
|
||||
gStringBundle.GetStringFromName('tabLoaded')];
|
||||
Utils.stringBundle.GetStringFromName('tabLoaded')];
|
||||
case 'loadstopped':
|
||||
return [gStringBundle.GetStringFromName('tabLoadStopped')];
|
||||
return [Utils.stringBundle.GetStringFromName('tabLoadStopped')];
|
||||
case 'reload':
|
||||
return [gStringBundle.GetStringFromName('tabReload')];
|
||||
return [Utils.stringBundle.GetStringFromName('tabReload')];
|
||||
default:
|
||||
return [];
|
||||
}
|
||||
},
|
||||
|
||||
genForEditingMode: function genForEditingMode(aIsEditing) {
|
||||
return [gStringBundle.GetStringFromName(
|
||||
aIsEditing ? 'editingMode' : 'navigationMode')];
|
||||
return [Utils.stringBundle.GetStringFromName(
|
||||
aIsEditing ? 'editingMode' : 'navigationMode')];
|
||||
},
|
||||
|
||||
objectOutputFunctions: {
|
||||
@ -510,7 +506,8 @@ this.UtteranceGenerator = {
|
||||
let level = {};
|
||||
aAccessible.groupPosition(level, {}, {});
|
||||
let utterance =
|
||||
[gStringBundle.formatStringFromName('headingLevel', [level.value], 1)];
|
||||
[Utils.stringBundle.formatStringFromName(
|
||||
'headingLevel', [level.value], 1)];
|
||||
|
||||
this._addName(utterance, aAccessible, aFlags);
|
||||
this._addLandmark(utterance, aAccessible);
|
||||
@ -524,9 +521,9 @@ this.UtteranceGenerator = {
|
||||
aAccessible.groupPosition({}, itemof, itemno);
|
||||
let utterance = [];
|
||||
if (itemno.value == 1) // Start of list
|
||||
utterance.push(gStringBundle.GetStringFromName('listStart'));
|
||||
utterance.push(Utils.stringBundle.GetStringFromName('listStart'));
|
||||
else if (itemno.value == itemof.value) // last item
|
||||
utterance.push(gStringBundle.GetStringFromName('listEnd'));
|
||||
utterance.push(Utils.stringBundle.GetStringFromName('listEnd'));
|
||||
|
||||
this._addName(utterance, aAccessible, aFlags);
|
||||
this._addLandmark(utterance, aAccessible);
|
||||
@ -560,13 +557,13 @@ this.UtteranceGenerator = {
|
||||
let desc = [];
|
||||
let addCellChanged = function addCellChanged(aDesc, aChanged, aString, aIndex) {
|
||||
if (aChanged) {
|
||||
aDesc.push(gStringBundle.formatStringFromName(aString,
|
||||
aDesc.push(Utils.stringBundle.formatStringFromName(aString,
|
||||
[aIndex + 1], 1));
|
||||
}
|
||||
};
|
||||
let addExtent = function addExtent(aDesc, aExtent, aString) {
|
||||
if (aExtent > 1) {
|
||||
aDesc.push(gStringBundle.formatStringFromName(aString,
|
||||
aDesc.push(Utils.stringBundle.formatStringFromName(aString,
|
||||
[aExtent], 1));
|
||||
}
|
||||
};
|
||||
@ -609,7 +606,8 @@ this.UtteranceGenerator = {
|
||||
|
||||
_getLocalizedRole: function _getLocalizedRole(aRoleStr) {
|
||||
try {
|
||||
return gStringBundle.GetStringFromName(this._getOutputName(aRoleStr));
|
||||
return Utils.stringBundle.GetStringFromName(
|
||||
this._getOutputName(aRoleStr));
|
||||
} catch (x) {
|
||||
return '';
|
||||
}
|
||||
@ -619,7 +617,8 @@ this.UtteranceGenerator = {
|
||||
let stateUtterances = [];
|
||||
|
||||
if (aState.contains(States.UNAVAILABLE)) {
|
||||
stateUtterances.push(gStringBundle.GetStringFromName('stateUnavailable'));
|
||||
stateUtterances.push(
|
||||
Utils.stringBundle.GetStringFromName('stateUnavailable'));
|
||||
}
|
||||
|
||||
// Don't utter this in Jelly Bean, we let TalkBack do it for us there.
|
||||
@ -629,29 +628,33 @@ this.UtteranceGenerator = {
|
||||
if (Utils.AndroidSdkVersion < 16 && aState.contains(States.CHECKABLE)) {
|
||||
let statetr = aState.contains(States.CHECKED) ?
|
||||
'stateChecked' : 'stateNotChecked';
|
||||
stateUtterances.push(gStringBundle.GetStringFromName(statetr));
|
||||
stateUtterances.push(Utils.stringBundle.GetStringFromName(statetr));
|
||||
}
|
||||
|
||||
if (aState.contains(States.EXPANDABLE)) {
|
||||
let statetr = aState.contains(States.EXPANDED) ?
|
||||
'stateExpanded' : 'stateCollapsed';
|
||||
stateUtterances.push(gStringBundle.GetStringFromName(statetr));
|
||||
stateUtterances.push(Utils.stringBundle.GetStringFromName(statetr));
|
||||
}
|
||||
|
||||
if (aState.contains(States.REQUIRED)) {
|
||||
stateUtterances.push(gStringBundle.GetStringFromName('stateRequired'));
|
||||
stateUtterances.push(
|
||||
Utils.stringBundle.GetStringFromName('stateRequired'));
|
||||
}
|
||||
|
||||
if (aState.contains(States.TRAVERSED)) {
|
||||
stateUtterances.push(gStringBundle.GetStringFromName('stateTraversed'));
|
||||
stateUtterances.push(
|
||||
Utils.stringBundle.GetStringFromName('stateTraversed'));
|
||||
}
|
||||
|
||||
if (aState.contains(States.HASPOPUP)) {
|
||||
stateUtterances.push(gStringBundle.GetStringFromName('stateHasPopup'));
|
||||
stateUtterances.push(
|
||||
Utils.stringBundle.GetStringFromName('stateHasPopup'));
|
||||
}
|
||||
|
||||
if (aState.contains(States.SELECTED)) {
|
||||
stateUtterances.push(gStringBundle.GetStringFromName('stateSelected'));
|
||||
stateUtterances.push(
|
||||
Utils.stringBundle.GetStringFromName('stateSelected'));
|
||||
}
|
||||
|
||||
return stateUtterances;
|
||||
@ -744,7 +747,7 @@ this.BrailleGenerator = {
|
||||
}
|
||||
};
|
||||
|
||||
desc.push(gStringBundle.formatStringFromName(
|
||||
desc.push(Utils.stringBundle.formatStringFromName(
|
||||
this._getOutputName('cellInfo'), [cell.columnIndex + 1,
|
||||
cell.rowIndex + 1], 2));
|
||||
|
||||
@ -815,10 +818,11 @@ this.BrailleGenerator = {
|
||||
|
||||
_getLocalizedRole: function _getLocalizedRole(aRoleStr) {
|
||||
try {
|
||||
return gStringBundle.GetStringFromName(this._getOutputName(aRoleStr));
|
||||
return Utils.stringBundle.GetStringFromName(
|
||||
this._getOutputName(aRoleStr));
|
||||
} catch (x) {
|
||||
try {
|
||||
return gStringBundle.GetStringFromName(
|
||||
return Utils.stringBundle.GetStringFromName(
|
||||
OutputGenerator._getOutputName(aRoleStr));
|
||||
} catch (y) {
|
||||
return '';
|
||||
|
@ -499,6 +499,17 @@ SpeechPresenter.prototype = {
|
||||
}]
|
||||
}
|
||||
};
|
||||
},
|
||||
|
||||
announce: function SpeechPresenter_announce(aAnnouncement) {
|
||||
return {
|
||||
type: this.type,
|
||||
details: {
|
||||
actions: [{
|
||||
method: 'speak', data: aAnnouncement, options: { enqueue: false }
|
||||
}]
|
||||
}
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
@ -513,10 +524,10 @@ HapticPresenter.prototype = {
|
||||
|
||||
type: 'Haptic',
|
||||
|
||||
PIVOT_CHANGE_PATTHERN: [20],
|
||||
PIVOT_CHANGE_PATTERN: [40],
|
||||
|
||||
pivotChanged: function HapticPresenter_pivotChanged(aContext, aReason) {
|
||||
return { type: this.type, details: { pattern: this.PIVOT_CHANGE_PATTHERN } };
|
||||
return { type: this.type, details: { pattern: this.PIVOT_CHANGE_PATTERN } };
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -169,6 +169,13 @@ this.Utils = {
|
||||
return this.isContentProcess;
|
||||
},
|
||||
|
||||
get stringBundle() {
|
||||
delete this.stringBundle;
|
||||
this.stringBundle = Services.strings.createBundle(
|
||||
'chrome://global/locale/AccessFu.properties');
|
||||
return this.stringBundle;
|
||||
},
|
||||
|
||||
getMessageManager: function getMessageManager(aBrowser) {
|
||||
try {
|
||||
return aBrowser.QueryInterface(Ci.nsIFrameLoaderOwner).
|
||||
@ -775,18 +782,23 @@ this.PrefCache = function PrefCache(aName, aCallback, aRunCallbackNow) {
|
||||
|
||||
PrefCache.prototype = {
|
||||
_getValue: function _getValue(aBranch) {
|
||||
if (!this.type) {
|
||||
this.type = aBranch.getPrefType(this.name);
|
||||
}
|
||||
switch (this.type) {
|
||||
case Ci.nsIPrefBranch.PREF_STRING:
|
||||
return aBranch.getCharPref(this.name);
|
||||
case Ci.nsIPrefBranch.PREF_INT:
|
||||
return aBranch.getIntPref(this.name);
|
||||
case Ci.nsIPrefBranch.PREF_BOOL:
|
||||
return aBranch.getBoolPref(this.name);
|
||||
default:
|
||||
return null;
|
||||
try {
|
||||
if (!this.type) {
|
||||
this.type = aBranch.getPrefType(this.name);
|
||||
}
|
||||
switch (this.type) {
|
||||
case Ci.nsIPrefBranch.PREF_STRING:
|
||||
return aBranch.getCharPref(this.name);
|
||||
case Ci.nsIPrefBranch.PREF_INT:
|
||||
return aBranch.getIntPref(this.name);
|
||||
case Ci.nsIPrefBranch.PREF_BOOL:
|
||||
return aBranch.getBoolPref(this.name);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
} catch (x) {
|
||||
// Pref does not exist.
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -2,6 +2,8 @@
|
||||
support-files = zoom_tree.xul
|
||||
|
||||
[test_browser.html]
|
||||
[text_canvas_hitregion.html]
|
||||
skip-if = os == "android" || appname == "b2g"
|
||||
[test_general.html]
|
||||
[test_menu.xul]
|
||||
[test_zoom.html]
|
||||
|
@ -0,0 +1,88 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>nsIAccessible::childAtPoint() for canvas from browser tests</title>
|
||||
<link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
|
||||
|
||||
<script type="application/javascript"
|
||||
src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
|
||||
|
||||
<script type="application/javascript"
|
||||
src="../common.js"></script>
|
||||
<script type="application/javascript"
|
||||
src="../layout.js"></script>
|
||||
|
||||
<script type="application/javascript">
|
||||
SpecialPowers.setBoolPref("canvas.hitregions.enabled", true);
|
||||
|
||||
function redrawCheckbox(context, element, x, y)
|
||||
{
|
||||
context.save();
|
||||
context.font = '10px sans-serif';
|
||||
context.textAlign = 'left';
|
||||
context.textBaseline = 'middle';
|
||||
var metrics = context.measureText(element.parentNode.textContent);
|
||||
context.beginPath();
|
||||
context.strokeStyle = 'black';
|
||||
context.rect(x-5, y-5, 10, 10);
|
||||
context.stroke();
|
||||
if (element.checked) {
|
||||
context.fillStyle = 'black';
|
||||
context.fill();
|
||||
}
|
||||
context.fillText(element.parentNode.textContent, x+5, y);
|
||||
|
||||
context.beginPath();
|
||||
context.rect(x-7, y-7, 12 + metrics.width+2, 14);
|
||||
|
||||
if (document.activeElement == element)
|
||||
context.drawFocusIfNeeded(element);
|
||||
context.addHitRegion({control: element});
|
||||
context.restore();
|
||||
}
|
||||
|
||||
function doTest()
|
||||
{
|
||||
getNode("hittest").scrollIntoView(true);
|
||||
|
||||
var context = document.getElementById("hitcanvas").getContext('2d');
|
||||
redrawCheckbox(context, document.getElementById('hitcheck'), 20, 40);
|
||||
|
||||
var hitcanvas = getAccessible("hitcanvas");
|
||||
var hitcheck = getAccessible("hitcheck");
|
||||
|
||||
var [hitX, hitY, hitWidth, hitHeight] = getBounds(hitcanvas);
|
||||
|
||||
var docAcc = getAccessible(document);
|
||||
var tgtX = hitX+25;
|
||||
var tgtY = hitY+45;
|
||||
hitAcc = docAcc.getDeepestChildAtPoint(tgtX, tgtY);
|
||||
// test if we hit the region associated with the shadow dom checkbox
|
||||
is(hitAcc, hitcheck, "Hit match at " + tgtX + "," + tgtY +
|
||||
". Found: " + prettyName(hitAcc));
|
||||
|
||||
tgtY = hitY+75;
|
||||
hitAcc = docAcc.getDeepestChildAtPoint(tgtX, tgtY);
|
||||
// test that we don't hit the region associated with the shadow dom checkbox
|
||||
is(hitAcc, hitcanvas, "Hit match at " + tgtX + "," + tgtY +
|
||||
". Found: " + prettyName(hitAcc));
|
||||
|
||||
SpecialPowers.setBoolPref("canvas.hitregions.enabled", false);
|
||||
SimpleTest.finish();
|
||||
}
|
||||
|
||||
SimpleTest.waitForExplicitFinish();
|
||||
addA11yLoadEvent(doTest);
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<a target="_blank"
|
||||
href="https://bugzilla.mozilla.org/show_bug.cgi?id=966591"
|
||||
title="nsIAccessible::childAtPoint() for canvas hit regions from browser tests">Mozilla Bug 966591</a>
|
||||
|
||||
<canvas id="hitcanvas">
|
||||
<input id="hitcheck" type="checkbox"><label for="showA"> Show A </label>
|
||||
</canvas>
|
||||
</body>
|
||||
</html>
|
@ -93,16 +93,11 @@ var AccessFuTest = {
|
||||
// Disable the console service logging.
|
||||
Logger.test = false;
|
||||
Logger.logLevel = Logger.INFO;
|
||||
AccessFu.doneCallback = function doneCallback() {
|
||||
// This is being called once AccessFu has been shut down.
|
||||
// Detach AccessFu from everything it attached itself to.
|
||||
// Finish through idle callback to let AccessFu._disable complete.
|
||||
SimpleTest.executeSoon(function () {
|
||||
AccessFu.detach();
|
||||
// and finish the test run.
|
||||
SimpleTest.finish();
|
||||
};
|
||||
// Tear down accessibility and make AccessFu stop.
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.notify_output", 0);
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.activate", 0);
|
||||
});
|
||||
},
|
||||
|
||||
nextTest: function AccessFuTest_nextTest() {
|
||||
@ -138,8 +133,12 @@ var AccessFuTest = {
|
||||
// Enable logging to the console service.
|
||||
Logger.test = true;
|
||||
Logger.logLevel = Logger.DEBUG;
|
||||
// This is being called once accessibility has been turned on.
|
||||
};
|
||||
|
||||
SpecialPowers.pushPrefEnv({
|
||||
'set': [['accessibility.accessfu.notify_output', 1],
|
||||
['dom.mozSettings.enabled', true]]
|
||||
}, function () {
|
||||
if (AccessFuTest._waitForExplicitFinish) {
|
||||
// Run all test functions asynchronously.
|
||||
AccessFuTest.nextTest();
|
||||
@ -148,11 +147,7 @@ var AccessFuTest = {
|
||||
[testFunc() for (testFunc of gTestFuncs)];
|
||||
AccessFuTest.finish();
|
||||
}
|
||||
};
|
||||
|
||||
// Invoke the whole thing.
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.activate", 1);
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.notify_output", 1);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -13,43 +13,57 @@
|
||||
src="./jsatcommon.js"></script>
|
||||
<script type="application/javascript">
|
||||
|
||||
function confirmAccessFuStart() {
|
||||
ok(AccessFu._enabled, "AccessFu was started and enabled.");
|
||||
AccessFuTest.nextTest();
|
||||
function prefStart() {
|
||||
// Start AccessFu via pref.
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.activate", 1);
|
||||
AccessFuTest.once_log("EventManager.start", AccessFuTest.nextTest);
|
||||
}
|
||||
|
||||
// Listen for 'EventManager.stop' and enable AccessFu again.
|
||||
function onStop() {
|
||||
function settingsStart() {
|
||||
ok(true, "EventManager was stopped.");
|
||||
isnot(AccessFu._enabled, true, "AccessFu was disabled.");
|
||||
AccessFuTest.once_log("EventManager.start", AccessFuTest.nextTest);
|
||||
AccessFu._enable();
|
||||
AccessFuTest.once([{
|
||||
"method": "speak",
|
||||
"data": "Screen reader started",
|
||||
"options": {
|
||||
"enqueue": false
|
||||
}
|
||||
}], AccessFuTest.nextTest);
|
||||
// XXX: Bug 978076 - test start with SettingsManager.
|
||||
//navigator.mozSettings.createLock().set(
|
||||
// {'accessibility.screenreader': false});
|
||||
AccessFu._enable()
|
||||
}
|
||||
|
||||
// Make sure EventManager is started again.
|
||||
function onFinalStart() {
|
||||
ok(true, "EventManager was started again.");
|
||||
function settingsStop() {
|
||||
ok(AccessFu._enabled, "AccessFu was enabled again.");
|
||||
AccessFuTest.finish();
|
||||
}
|
||||
|
||||
// Listen for initial 'EventManager.start' and disable AccessFu.
|
||||
function onInitialStart() {
|
||||
ok(true, "EventManager was started.");
|
||||
AccessFuTest.once_log("EventManager.stop", AccessFuTest.nextTest);
|
||||
AccessFuTest.once([{
|
||||
"method": "speak",
|
||||
"data": "Screen reader stopped",
|
||||
"options": {
|
||||
"enqueue": false
|
||||
}
|
||||
}], AccessFuTest.finish);
|
||||
// XXX: Bug 978076 - test stop with SettingsManager.
|
||||
//navigator.mozSettings.createLock().set(
|
||||
// {'accessibility.screenreader': false});
|
||||
AccessFu._disable();
|
||||
}
|
||||
|
||||
function init() {
|
||||
AccessFuTest.once_log("EventManager.start", AccessFuTest.nextTest);
|
||||
// Listen for initial 'EventManager.start' and disable AccessFu.
|
||||
function prefStop() {
|
||||
ok(AccessFu._enabled, "AccessFu was started via preference.");
|
||||
AccessFuTest.once_log("EventManager.stop", AccessFuTest.nextTest);
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.activate", 0);
|
||||
}
|
||||
|
||||
function doTest() {
|
||||
AccessFuTest.addFunc(confirmAccessFuStart);
|
||||
AccessFuTest.addFunc(init);
|
||||
AccessFuTest.addFunc(onInitialStart);
|
||||
AccessFuTest.addFunc(onStop);
|
||||
AccessFuTest.addFunc(onFinalStart);
|
||||
AccessFuTest.addFunc(prefStart);
|
||||
AccessFuTest.addFunc(prefStop);
|
||||
AccessFuTest.addFunc(settingsStart);
|
||||
AccessFuTest.addFunc(settingsStop);
|
||||
AccessFuTest.waitForExplicitFinish();
|
||||
AccessFuTest.runTests(); // Will call SimpleTest.finish();
|
||||
}
|
||||
|
@ -13,10 +13,16 @@
|
||||
src="./jsatcommon.js"></script>
|
||||
<script type="application/javascript">
|
||||
|
||||
function EventManagerStarted() {
|
||||
function startAccessFu() {
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.activate", 1);
|
||||
AccessFuTest.once_log("EventManager.start", AccessFuTest.nextTest);
|
||||
}
|
||||
|
||||
function stopAccessFu() {
|
||||
SpecialPowers.setIntPref("accessibility.accessfu.activate", 0);
|
||||
AccessFuTest.once_log("EventManager.stop", AccessFuTest.finish);
|
||||
}
|
||||
|
||||
function hide(id) {
|
||||
var element = document.getElementById(id);
|
||||
element.style.display = "none";
|
||||
@ -245,14 +251,14 @@
|
||||
}];
|
||||
|
||||
function doTest() {
|
||||
AccessFuTest.addFunc(EventManagerStarted);
|
||||
AccessFuTest.addFunc(startAccessFu);
|
||||
tests.forEach(function addTest(test) {
|
||||
AccessFuTest.addFunc(function () {
|
||||
AccessFuTest.once(test.expected, AccessFuTest.nextTest);
|
||||
test.action();
|
||||
});
|
||||
});
|
||||
AccessFuTest.addFunc(AccessFuTest.finish);
|
||||
AccessFuTest.addFunc(stopAccessFu);
|
||||
AccessFuTest.waitForExplicitFinish();
|
||||
AccessFuTest.runTests();
|
||||
}
|
||||
|
@ -122,51 +122,6 @@ SettingsListener.observe('language.current', 'en-US', function(value) {
|
||||
});
|
||||
});
|
||||
|
||||
SettingsListener.observe('ril.mms.retrieval_mode', 'manual',
|
||||
function(value) {
|
||||
Services.prefs.setCharPref('dom.mms.retrieval_mode', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('ril.sms.strict7BitEncoding.enabled', false,
|
||||
function(value) {
|
||||
Services.prefs.setBoolPref('dom.sms.strict7BitEncoding', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('ril.sms.requestStatusReport.enabled', false,
|
||||
function(value) {
|
||||
Services.prefs.setBoolPref('dom.sms.requestStatusReport', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('ril.mms.requestStatusReport.enabled', false,
|
||||
function(value) {
|
||||
Services.prefs.setBoolPref('dom.mms.requestStatusReport', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('ril.mms.requestReadReport.enabled', true,
|
||||
function(value) {
|
||||
Services.prefs.setBoolPref('dom.mms.requestReadReport', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('ril.cellbroadcast.disabled', false,
|
||||
function(value) {
|
||||
Services.prefs.setBoolPref('ril.cellbroadcast.disabled', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('ril.radio.disabled', false,
|
||||
function(value) {
|
||||
Services.prefs.setBoolPref('ril.radio.disabled', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('wap.UAProf.url', '',
|
||||
function(value) {
|
||||
Services.prefs.setCharPref('wap.UAProf.url', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('wap.UAProf.tagname', 'x-wap-profile',
|
||||
function(value) {
|
||||
Services.prefs.setCharPref('wap.UAProf.tagname', value);
|
||||
});
|
||||
|
||||
// DSDS default service IDs
|
||||
['mms', 'sms', 'telephony', 'voicemail'].forEach(function(key) {
|
||||
SettingsListener.observe('ril.' + key + '.defaultServiceId', 0,
|
||||
@ -235,10 +190,6 @@ SettingsListener.observe('devtools.overlay', false, (value) => {
|
||||
}
|
||||
});
|
||||
|
||||
SettingsListener.observe('devtools.eventlooplag.threshold', 100, function(value) {
|
||||
Services.prefs.setIntPref('devtools.eventlooplag.threshold', value);
|
||||
});
|
||||
|
||||
// =================== Debugger / ADB ====================
|
||||
|
||||
#ifdef MOZ_WIDGET_GONK
|
||||
@ -525,11 +476,6 @@ SettingsListener.observe('debugger.remote-mode', false, function(value) {
|
||||
#endif
|
||||
});
|
||||
|
||||
|
||||
SettingsListener.observe('debug.log-animations.enabled', false, function(value) {
|
||||
Services.prefs.setBoolPref('layers.offmainthreadcomposition.log-animations', value);
|
||||
});
|
||||
|
||||
// =================== Device Storage ====================
|
||||
SettingsListener.observe('device.storage.writable.name', 'sdcard', function(value) {
|
||||
if (Services.prefs.getPrefType('device.storage.writable.name') != Ci.nsIPrefBranch.PREF_STRING) {
|
||||
@ -541,10 +487,6 @@ SettingsListener.observe('device.storage.writable.name', 'sdcard', function(valu
|
||||
});
|
||||
|
||||
// =================== Privacy ====================
|
||||
SettingsListener.observe('privacy.donottrackheader.enabled', false, function(value) {
|
||||
Services.prefs.setBoolPref('privacy.donottrackheader.enabled', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('privacy.donottrackheader.value', 1, function(value) {
|
||||
Services.prefs.setIntPref('privacy.donottrackheader.value', value);
|
||||
// If the user specifically disallows tracking, we set the value of
|
||||
@ -604,22 +546,7 @@ function setUpdateTrackingId() {
|
||||
}
|
||||
setUpdateTrackingId();
|
||||
|
||||
SettingsListener.observe('app.update.interval', 86400, function(value) {
|
||||
Services.prefs.setIntPref('app.update.interval', value);
|
||||
});
|
||||
|
||||
// ================ Debug ================
|
||||
// XXX could factor out into a settings->pref map.
|
||||
SettingsListener.observe("debug.fps.enabled", false, function(value) {
|
||||
Services.prefs.setBoolPref("layers.acceleration.draw-fps", value);
|
||||
});
|
||||
SettingsListener.observe("debug.paint-flashing.enabled", false, function(value) {
|
||||
Services.prefs.setBoolPref("nglayout.debug.paint_flashing", value);
|
||||
});
|
||||
SettingsListener.observe("layers.draw-borders", false, function(value) {
|
||||
Services.prefs.setBoolPref("layers.draw-borders", value);
|
||||
});
|
||||
|
||||
(function Composer2DSettingToPref() {
|
||||
//layers.composer.enabled can be enabled in three ways
|
||||
//In order of precedence they are:
|
||||
@ -675,11 +602,6 @@ SettingsListener.observe("accessibility.screenreader", false, function(value) {
|
||||
})();
|
||||
|
||||
// =================== AsyncPanZoom ======================
|
||||
|
||||
SettingsListener.observe('apz.force-enable', false, function(value) {
|
||||
Services.prefs.setBoolPref('dom.browser_frames.useAsyncPanZoom', value);
|
||||
});
|
||||
|
||||
SettingsListener.observe('apz.displayport.heuristics', 'default', function(value) {
|
||||
// first reset everything to default
|
||||
Services.prefs.clearUserPref('apz.velocity_bias');
|
||||
@ -711,19 +633,89 @@ SettingsListener.observe('apz.displayport.heuristics', 'default', function(value
|
||||
}
|
||||
});
|
||||
|
||||
SettingsListener.observe('layers.enable-tiles', false, function(value) {
|
||||
Services.prefs.setBoolPref('layers.enable-tiles', value);
|
||||
});
|
||||
// =================== Various simple mapping ======================
|
||||
let settingsToObserve = {
|
||||
'ril.mms.retrieval_mode': {
|
||||
prefName: 'dom.mms.retrieval_mode',
|
||||
defaultValue: 'manual'
|
||||
},
|
||||
'ril.sms.strict7BitEncoding.enabled': {
|
||||
prefName: 'dom.sms.strict7BitEncoding',
|
||||
defaultValue: false
|
||||
},
|
||||
'ril.sms.requestStatusReport.enabled': {
|
||||
prefName: 'dom.sms.requestStatusReport',
|
||||
defaultValue: false
|
||||
},
|
||||
'ril.mms.requestStatusReport.enabled': {
|
||||
prefName: 'dom.mms.requestStatusReport',
|
||||
defaultValue: false
|
||||
},
|
||||
'ril.mms.requestReadReport.enabled': {
|
||||
prefName: 'dom.mms.requestReadReport',
|
||||
defaultValue: true
|
||||
},
|
||||
'ril.cellbroadcast.disabled': false,
|
||||
'ril.radio.disabled': false,
|
||||
'wap.UAProf.url': '',
|
||||
'wap.UAProf.tagname': 'x-wap-profile',
|
||||
'devtools.eventlooplag.threshold': 100,
|
||||
'privacy.donottrackheader.enabled': false,
|
||||
'apz.force-enable': {
|
||||
prefName: 'dom.browser_frames.useAsyncPanZoom',
|
||||
defaultValue: false
|
||||
},
|
||||
'layers.enable-tiles': false,
|
||||
'layers.progressive-paint': false,
|
||||
'layers.draw-tile-borders': false,
|
||||
'layers.dump': false,
|
||||
'debug.fps.enabled': {
|
||||
prefName: 'layers.acceleration.draw-fps',
|
||||
defaultValue: false
|
||||
},
|
||||
'debug.paint-flashing.enabled': {
|
||||
prefName: 'nglayout.debug.paint_flashing',
|
||||
defaultValue: false
|
||||
},
|
||||
'layers.draw-borders': false,
|
||||
'app.update.interval': 86400,
|
||||
'debug.log-animations.enabled': {
|
||||
prefName: 'layers.offmainthreadcomposition.log-animations',
|
||||
defaultValue: false
|
||||
}
|
||||
};
|
||||
|
||||
SettingsListener.observe('layers.progressive-paint', false, function(value) {
|
||||
Services.prefs.setBoolPref('layers.progressive-paint', value);
|
||||
});
|
||||
for (let key in settingsToObserve) {
|
||||
let setting = settingsToObserve[key];
|
||||
|
||||
SettingsListener.observe('layers.draw-tile-borders', false, function(value) {
|
||||
Services.prefs.setBoolPref('layers.draw-tile-borders', value);
|
||||
});
|
||||
// By default, assume the setting name and the pref name are the same.
|
||||
let prefName = key;
|
||||
let defaultValue = setting;
|
||||
|
||||
SettingsListener.observe('layers.dump', false, function(value) {
|
||||
Services.prefs.setBoolPref('layers.dump', value);
|
||||
});
|
||||
// Check if the pref name has been overidden.
|
||||
if (typeof setting == 'object') {
|
||||
prefName = setting.prefName;
|
||||
defaultValue = setting.defaultValue;
|
||||
}
|
||||
|
||||
switch (typeof defaultValue) {
|
||||
case 'boolean':
|
||||
SettingsListener.observe(key, defaultValue, function(value) {
|
||||
Services.prefs.setBoolPref(prefName, value);
|
||||
});
|
||||
break;
|
||||
|
||||
case 'string':
|
||||
SettingsListener.observe(key, defaultValue, function(value) {
|
||||
Services.prefs.setCharPref(prefName, value);
|
||||
});
|
||||
break;
|
||||
|
||||
case 'number':
|
||||
SettingsListener.observe(key, defaultValue, function(value) {
|
||||
Services.prefs.setIntPref(prefName, value);
|
||||
});
|
||||
break;
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d11f524d00cacf5ba0dfbf25e4aa2158b1c3a036"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="3d5c964015967ca8c86abe6dbbebee3cb82b1609"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b2f773d8320d30648b89767dfe5b25ef94bc7e62"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="platform_hardware_ril" path="hardware/ril" remote="b2g" revision="d11f524d00cacf5ba0dfbf25e4aa2158b1c3a036"/>
|
||||
|
@ -4,6 +4,6 @@
|
||||
"branch": "",
|
||||
"revision": ""
|
||||
},
|
||||
"revision": "020bf0df084e3e80e51f9dfd5fdeef2e8ab90452",
|
||||
"revision": "61e8a88f301aea77f22abdde19a85f0af27ab7f4",
|
||||
"repo_path": "/integration/gaia-central"
|
||||
}
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
|
||||
|
@ -15,7 +15,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
|
||||
|
@ -19,7 +19,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
</project>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="fake-libdvm" path="dalvik" remote="b2g" revision="d50ae982b19f42f0b66d08b9eb306be81687869f"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="moztt" path="external/moztt" remote="b2g" revision="3d5c964015967ca8c86abe6dbbebee3cb82b1609"/>
|
||||
<project name="apitrace" path="external/apitrace" remote="apitrace" revision="b2f773d8320d30648b89767dfe5b25ef94bc7e62"/>
|
||||
|
@ -17,7 +17,7 @@
|
||||
<copyfile dest="Makefile" src="core/root.mk"/>
|
||||
</project>
|
||||
<project name="fake-dalvik" path="dalvik" remote="b2g" revision="ca1f327d5acc198bb4be62fa51db2c039032c9ce"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="71f78f7f68fcf5e23cc5965fee0dad45289c438b"/>
|
||||
<project name="gaia.git" path="gaia" remote="mozillaorg" revision="6781459a49642ca0eb7ec3e95667808d5d77b656"/>
|
||||
<project name="gonk-misc" path="gonk-misc" remote="b2g" revision="15e8982284c4560f9c74c2b9fe8bb361ebfe0cb6"/>
|
||||
<project name="rilproxy" path="rilproxy" remote="b2g" revision="827214fcf38d6569aeb5c6d6f31cb296d1f09272"/>
|
||||
<project name="librecovery" path="librecovery" remote="b2g" revision="84f2f2fce22605e17d511ff1767e54770067b5b5"/>
|
||||
|
@ -130,7 +130,7 @@ var gPluginHandler = {
|
||||
return false;
|
||||
}
|
||||
|
||||
let contentWindow = plugin.ownerDocument.defaultView.top;
|
||||
let contentWindow = plugin.ownerDocument.defaultView;
|
||||
let cwu = contentWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindowUtils);
|
||||
|
||||
|
@ -6,15 +6,9 @@ support-files =
|
||||
app_bug575561.html
|
||||
app_subframe_bug575561.html
|
||||
authenticate.sjs
|
||||
blockNoPlugins.xml
|
||||
blockPluginHard.xml
|
||||
blockPluginVulnerableNoUpdate.xml
|
||||
blockPluginVulnerableUpdatable.xml
|
||||
browser_bug479408_sample.html
|
||||
browser_bug678392-1.html
|
||||
browser_bug678392-2.html
|
||||
browser_clearplugindata.html
|
||||
browser_clearplugindata_noage.html
|
||||
browser_registerProtocolHandler_notification.html
|
||||
browser_star_hsts.sjs
|
||||
browser_tab_dragdrop2_frame1.xul
|
||||
@ -65,32 +59,6 @@ support-files =
|
||||
offlineQuotaNotification.cacheManifest
|
||||
offlineQuotaNotification.html
|
||||
page_style_sample.html
|
||||
plugin_add_dynamically.html
|
||||
plugin_alternate_content.html
|
||||
plugin_big.html
|
||||
plugin_both.html
|
||||
plugin_both2.html
|
||||
plugin_bug744745.html
|
||||
plugin_bug749455.html
|
||||
plugin_bug752516.html
|
||||
plugin_bug787619.html
|
||||
plugin_bug797677.html
|
||||
plugin_bug820497.html
|
||||
plugin_clickToPlayAllow.html
|
||||
plugin_clickToPlayDeny.html
|
||||
plugin_data_url.html
|
||||
plugin_hidden_to_visible.html
|
||||
plugin_outsideScrollArea.html
|
||||
plugin_overlayed.html
|
||||
plugin_positioned.html
|
||||
plugin_small.html
|
||||
plugin_syncRemoved.html
|
||||
plugin_test.html
|
||||
plugin_test2.html
|
||||
plugin_test3.html
|
||||
plugin_two_types.html
|
||||
plugin_unknown.html
|
||||
pluginCrashCommentAndURL.html
|
||||
print_postdata.sjs
|
||||
redirect_bug623155.sjs
|
||||
test-mixedcontent-securityerrors.html
|
||||
@ -111,19 +79,8 @@ support-files =
|
||||
test_no_mcb_on_http_site_font2.css
|
||||
xul_tooltiptext.xhtml
|
||||
|
||||
[browser_CTP_context_menu.js]
|
||||
skip-if = toolkit == "gtk2" || toolkit == "gtk3" # browser_CTP_context_menu.js fails intermittently on Linux (bug 909342)
|
||||
[browser_CTP_crashreporting.js]
|
||||
run-if = crashreporter
|
||||
[browser_CTP_data_urls.js]
|
||||
[browser_CTP_drag_drop.js]
|
||||
[browser_CTP_hide_overlay.js]
|
||||
[browser_CTP_multi_allow.js]
|
||||
[browser_CTP_nonplugins.js]
|
||||
[browser_CTP_notificationBar.js]
|
||||
[browser_CTP_outsideScrollArea.js]
|
||||
[browser_CTP_resize.js]
|
||||
[browser_URLBarSetURI.js]
|
||||
skip-if = (os == "linux" || os == "mac") && debug # bug 970052, bug 970053
|
||||
[browser_aboutAccounts.js]
|
||||
skip-if = os == "linux" # Bug 958026
|
||||
[browser_aboutHealthReport.js]
|
||||
@ -229,21 +186,13 @@ skip-if = os == "mac" # Intermittent failures, bug 925225
|
||||
[browser_bug724239.js]
|
||||
[browser_bug734076.js]
|
||||
[browser_bug735471.js]
|
||||
[browser_bug743421.js]
|
||||
[browser_bug744745.js]
|
||||
[browser_bug749738.js]
|
||||
[browser_bug752516.js]
|
||||
[browser_bug763468_perwindowpb.js]
|
||||
[browser_bug767836_perwindowpb.js]
|
||||
[browser_bug771331.js]
|
||||
[browser_bug783614.js]
|
||||
[browser_bug787619.js]
|
||||
[browser_bug797677.js]
|
||||
[browser_bug812562.js]
|
||||
[browser_bug816527.js]
|
||||
[browser_bug817947.js]
|
||||
[browser_bug818118.js]
|
||||
[browser_bug820497.js]
|
||||
[browser_bug822367.js]
|
||||
[browser_bug832435.js]
|
||||
[browser_bug839103.js]
|
||||
@ -252,7 +201,6 @@ skip-if = os == "mac" # Intermittent failures, bug 925225
|
||||
[browser_bug902156.js]
|
||||
[browser_bug906190.js]
|
||||
[browser_canonizeURL.js]
|
||||
[browser_clearplugindata.js]
|
||||
[browser_contentAreaClick.js]
|
||||
[browser_contextSearchTabPosition.js]
|
||||
skip-if = os == "mac" # bug 967013, bug 926729
|
||||
@ -288,16 +236,9 @@ skip-if = os != "win" # The Fitts Law menu button is only supported on Windows (
|
||||
[browser_offlineQuotaNotification.js]
|
||||
[browser_overflowScroll.js]
|
||||
[browser_pageInfo.js]
|
||||
[browser_pageInfo_plugins.js]
|
||||
[browser_page_style_menu.js]
|
||||
[browser_pinnedTabs.js]
|
||||
[browser_plainTextLinks.js]
|
||||
[browser_pluginnotification.js]
|
||||
[browser_pluginplaypreview.js]
|
||||
[browser_pluginplaypreview2.js]
|
||||
[browser_pluginCrashCommentAndURL.js]
|
||||
run-if = crashreporter
|
||||
[browser_plugins_added_dynamically.js]
|
||||
[browser_popupNotification.js]
|
||||
skip-if = toolkit == "windows" # Disabled on Windows due to frequent failures (bugs 825739, 841341)
|
||||
[browser_popupUI.js]
|
||||
|
@ -1,45 +0,0 @@
|
||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
var gTestBrowser = null;
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
registerCleanupFunction(function() {
|
||||
Services.prefs.clearUserPref("plugins.click_to_play");
|
||||
gBrowser.removeCurrentTab();
|
||||
window.focus();
|
||||
});
|
||||
|
||||
Services.prefs.setBoolPref("plugins.click_to_play", true);
|
||||
setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY);
|
||||
|
||||
gBrowser.selectedTab = gBrowser.addTab();
|
||||
gTestBrowser = gBrowser.selectedBrowser;
|
||||
let gHttpTestRoot = getRootDirectory(gTestPath).replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
|
||||
gTestBrowser.contentWindow.location = gHttpTestRoot + "plugin_bug752516.html";
|
||||
|
||||
gTestBrowser.addEventListener("load", tabLoad, true);
|
||||
}
|
||||
|
||||
function tabLoad() {
|
||||
// Due to layout being async, "PluginBindAttached" may trigger later.
|
||||
// This forces a layout flush, thus triggering it, and schedules the
|
||||
// test so it is definitely executed afterwards.
|
||||
gTestBrowser.contentDocument.getElementById('test').clientTop;
|
||||
executeSoon(actualTest);
|
||||
}
|
||||
|
||||
function actualTest() {
|
||||
let doc = gTestBrowser.contentDocument;
|
||||
let plugin = doc.getElementById("test");
|
||||
ok(!plugin.activated, "Plugin should not be activated");
|
||||
ok(PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser).dismissed, "Doorhanger should not be open");
|
||||
|
||||
EventUtils.synthesizeMouseAtCenter(plugin, {}, gTestBrowser.contentWindow);
|
||||
let condition = function() !PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser).dismissed;
|
||||
waitForCondition(condition, finish, "Waited too long for plugin doorhanger to activate");
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<style type="text/css">
|
||||
div {
|
||||
padding: 2%;
|
||||
position: absolute;
|
||||
top: 0; bottom: 0;
|
||||
left: 0; right: 0;
|
||||
text-align: center;
|
||||
border: 4px solid red;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container">
|
||||
<object id="test" type="application/x-test" width="159" height="91"></object>
|
||||
</div>
|
||||
<div id="overlay">
|
||||
<h1>overlay</h1>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
64
browser/base/content/test/plugins/browser.ini
Normal file
64
browser/base/content/test/plugins/browser.ini
Normal file
@ -0,0 +1,64 @@
|
||||
[DEFAULT]
|
||||
support-files =
|
||||
blockNoPlugins.xml
|
||||
blockPluginHard.xml
|
||||
blockPluginVulnerableNoUpdate.xml
|
||||
blockPluginVulnerableUpdatable.xml
|
||||
browser_clearplugindata.html
|
||||
browser_clearplugindata_noage.html
|
||||
head.js
|
||||
plugin_add_dynamically.html
|
||||
plugin_alternate_content.html
|
||||
plugin_big.html
|
||||
plugin_both.html
|
||||
plugin_both2.html
|
||||
plugin_bug744745.html
|
||||
plugin_bug749455.html
|
||||
plugin_bug787619.html
|
||||
plugin_bug797677.html
|
||||
plugin_bug820497.html
|
||||
plugin_clickToPlayAllow.html
|
||||
plugin_clickToPlayDeny.html
|
||||
plugin_data_url.html
|
||||
plugin_hidden_to_visible.html
|
||||
plugin_iframe.html
|
||||
plugin_outsideScrollArea.html
|
||||
plugin_overlayed.html
|
||||
plugin_positioned.html
|
||||
plugin_small.html
|
||||
plugin_syncRemoved.html
|
||||
plugin_test.html
|
||||
plugin_test2.html
|
||||
plugin_test3.html
|
||||
plugin_two_types.html
|
||||
plugin_unknown.html
|
||||
plugin_crashCommentAndURL.html
|
||||
|
||||
[browser_bug743421.js]
|
||||
[browser_bug744745.js]
|
||||
[browser_bug787619.js]
|
||||
[browser_bug797677.js]
|
||||
[browser_bug812562.js]
|
||||
[browser_bug818118.js]
|
||||
[browser_bug820497.js]
|
||||
[browser_clearplugindata.js]
|
||||
[browser_CTP_context_menu.js]
|
||||
skip-if = toolkit == "gtk2" || toolkit == "gtk3" # browser_CTP_context_menu.js fails intermittently on Linux (bug 909342)
|
||||
[browser_CTP_crashreporting.js]
|
||||
run-if = crashreporter
|
||||
[browser_CTP_data_urls.js]
|
||||
[browser_CTP_drag_drop.js]
|
||||
[browser_CTP_hide_overlay.js]
|
||||
[browser_CTP_iframe.js]
|
||||
[browser_CTP_multi_allow.js]
|
||||
[browser_CTP_nonplugins.js]
|
||||
[browser_CTP_notificationBar.js]
|
||||
[browser_CTP_outsideScrollArea.js]
|
||||
[browser_CTP_resize.js]
|
||||
[browser_pageInfo_plugins.js]
|
||||
[browser_pluginnotification.js]
|
||||
[browser_pluginplaypreview.js]
|
||||
[browser_pluginplaypreview2.js]
|
||||
[browser_pluginCrashCommentAndURL.js]
|
||||
run-if = crashreporter
|
||||
[browser_plugins_added_dynamically.js]
|
102
browser/base/content/test/plugins/browser_CTP_iframe.js
Normal file
102
browser/base/content/test/plugins/browser_CTP_iframe.js
Normal file
@ -0,0 +1,102 @@
|
||||
let rootDir = getRootDirectory(gTestPath);
|
||||
const gTestRoot = rootDir;
|
||||
const gHttpTestRoot = rootDir.replace("chrome://mochitests/content/", "http://127.0.0.1:8888/");
|
||||
|
||||
let gTestBrowser = null;
|
||||
let gNextTest = null;
|
||||
|
||||
Components.utils.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
function test() {
|
||||
waitForExplicitFinish();
|
||||
registerCleanupFunction(function() {
|
||||
clearAllPluginPermissions();
|
||||
Services.prefs.clearUserPref("extensions.blocklist.suppressUI");
|
||||
});
|
||||
Services.prefs.setBoolPref("extensions.blocklist.suppressUI", true);
|
||||
|
||||
let newTab = gBrowser.addTab();
|
||||
gBrowser.selectedTab = newTab;
|
||||
gTestBrowser = gBrowser.selectedBrowser;
|
||||
gTestBrowser.addEventListener("load", pageLoad, true);
|
||||
|
||||
Services.prefs.setBoolPref("plugins.click_to_play", true);
|
||||
setTestPluginEnabledState(Ci.nsIPluginTag.STATE_CLICKTOPLAY);
|
||||
|
||||
prepareTest(delayTest(runAfterPluginBindingAttached(test1)), gHttpTestRoot + "plugin_iframe.html");
|
||||
}
|
||||
|
||||
function finishTest() {
|
||||
clearAllPluginPermissions();
|
||||
gTestBrowser.removeEventListener("load", pageLoad, true);
|
||||
gBrowser.removeCurrentTab();
|
||||
window.focus();
|
||||
finish();
|
||||
}
|
||||
|
||||
function pageLoad() {
|
||||
gNextTest();
|
||||
}
|
||||
|
||||
function prepareTest(nextTest, url) {
|
||||
gNextTest = nextTest;
|
||||
gTestBrowser.contentWindow.location = url;
|
||||
}
|
||||
|
||||
// Delay executing a test for one load event to wait for frame loads.
|
||||
function delayTest(nextTest) {
|
||||
return () => {
|
||||
gNextTest = nextTest;
|
||||
}
|
||||
}
|
||||
|
||||
// Due to layout being async, "PluginBindAttached" may trigger later.
|
||||
// This wraps a function to force a layout flush, thus triggering it,
|
||||
// and schedules the function execution so they're definitely executed
|
||||
// afterwards.
|
||||
function runAfterPluginBindingAttached(func) {
|
||||
return () => {
|
||||
let frame = gTestBrowser.contentDocument.getElementById("frame");
|
||||
let doc = frame.contentDocument;
|
||||
let elems = doc.getElementsByTagName('embed');
|
||||
if (elems.length < 1) {
|
||||
elems = doc.getElementsByTagName('object');
|
||||
}
|
||||
elems[0].clientTop;
|
||||
executeSoon(func);
|
||||
};
|
||||
}
|
||||
|
||||
// Tests that the overlays are visible and actionable if the plugin is in an iframe.
|
||||
function test1() {
|
||||
let frame = gTestBrowser.contentDocument.getElementById("frame");
|
||||
let doc = frame.contentDocument;
|
||||
let plugin = doc.getElementById("test");
|
||||
ok(plugin, "Test 1, Found plugin in page");
|
||||
|
||||
let overlay = doc.getAnonymousElementByAttribute(plugin, "anonid", "main");
|
||||
ok(overlay.classList.contains("visible"), "Test 1, Plugin overlay should exist, not be hidden");
|
||||
let closeIcon = doc.getAnonymousElementByAttribute(plugin, "anonid", "closeIcon")
|
||||
|
||||
EventUtils.synthesizeMouseAtCenter(closeIcon, {}, frame.contentWindow);
|
||||
let condition = () => !overlay.classList.contains("visible");
|
||||
waitForCondition(condition, test2, "Test 1, Waited too long for the overlay to become invisible.");
|
||||
}
|
||||
|
||||
function test2() {
|
||||
prepareTest(delayTest(runAfterPluginBindingAttached(test3)), gHttpTestRoot + "plugin_iframe.html");
|
||||
}
|
||||
|
||||
function test3() {
|
||||
let frame = gTestBrowser.contentDocument.getElementById("frame");
|
||||
let doc = frame.contentDocument;
|
||||
let plugin = doc.getElementById("test");
|
||||
ok(plugin, "Test 3, Found plugin in page");
|
||||
|
||||
let overlay = doc.getAnonymousElementByAttribute(plugin, "anonid", "main");
|
||||
ok(overlay.classList.contains("visible"), "Test 3, Plugin overlay should exist, not be hidden");
|
||||
|
||||
EventUtils.synthesizeMouseAtCenter(plugin, {}, frame.contentWindow);
|
||||
let condition = () => PopupNotifications.getNotification("click-to-play-plugins", gTestBrowser);
|
||||
waitForCondition(condition, finishTest, "Test 3, Waited too long for the doorhanger to pop up.");
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
const gTestRoot = "http://mochi.test:8888/browser/browser/base/content/test/general/";
|
||||
var rootDir = getRootDirectory(gTestPath);
|
||||
const gTestRoot = rootDir.replace("chrome://mochitests/content/", "http://mochi.test:8888/");
|
||||
|
||||
var gTestBrowser = null;
|
||||
var gNextTest = null;
|
@ -3,9 +3,12 @@
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
var rootDir = getRootDirectory(gTestPath);
|
||||
const gHttpTestRoot = rootDir.replace("chrome://mochitests/content/", "http://mochi.test:8888/");
|
||||
|
||||
// Test clearing plugin data using sanitize.js.
|
||||
const testURL1 = "http://mochi.test:8888/browser/browser/base/content/test/general/browser_clearplugindata.html";
|
||||
const testURL2 = "http://mochi.test:8888/browser/browser/base/content/test/general/browser_clearplugindata_noage.html";
|
||||
const testURL1 = gHttpTestRoot + "browser_clearplugindata.html";
|
||||
const testURL2 = gHttpTestRoot + "browser_clearplugindata_noage.html";
|
||||
|
||||
let tempScope = {};
|
||||
Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader)
|
@ -4,7 +4,7 @@
|
||||
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
|
||||
const CRASH_URL = "http://example.com/browser/browser/base/content/test/general/pluginCrashCommentAndURL.html";
|
||||
const CRASH_URL = "http://example.com/browser/browser/base/content/test/plugins/plugin_crashCommentAndURL.html";
|
||||
|
||||
const SERVER_URL = "http://example.com/browser/toolkit/crashreporter/test/browser/crashreport.sjs";
|
||||
|
@ -1,4 +1,5 @@
|
||||
const gTestRoot = "http://mochi.test:8888/browser/browser/base/content/test/general/";
|
||||
var rootDir = getRootDirectory(gTestPath);
|
||||
const gTestRoot = rootDir.replace("chrome://mochitests/content/", "http://mochi.test:8888/");
|
||||
|
||||
let gTestBrowser = null;
|
||||
let gNextTest = null;
|
110
browser/base/content/test/plugins/head.js
Normal file
110
browser/base/content/test/plugins/head.js
Normal file
@ -0,0 +1,110 @@
|
||||
Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Promise",
|
||||
"resource://gre/modules/commonjs/sdk/core/promise.js");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "Task",
|
||||
"resource://gre/modules/Task.jsm");
|
||||
XPCOMUtils.defineLazyModuleGetter(this, "PlacesUtils",
|
||||
"resource://gre/modules/PlacesUtils.jsm");
|
||||
|
||||
function whenDelayedStartupFinished(aWindow, aCallback) {
|
||||
Services.obs.addObserver(function observer(aSubject, aTopic) {
|
||||
if (aWindow == aSubject) {
|
||||
Services.obs.removeObserver(observer, aTopic);
|
||||
executeSoon(aCallback);
|
||||
}
|
||||
}, "browser-delayed-startup-finished", false);
|
||||
}
|
||||
|
||||
function findChromeWindowByURI(aURI) {
|
||||
let windows = Services.wm.getEnumerator(null);
|
||||
while (windows.hasMoreElements()) {
|
||||
let win = windows.getNext();
|
||||
if (win.location.href == aURI)
|
||||
return win;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function waitForCondition(condition, nextTest, errorMsg) {
|
||||
var tries = 0;
|
||||
var interval = setInterval(function() {
|
||||
if (tries >= 30) {
|
||||
ok(false, errorMsg);
|
||||
moveOn();
|
||||
}
|
||||
var conditionPassed;
|
||||
try {
|
||||
conditionPassed = condition();
|
||||
} catch (e) {
|
||||
ok(false, e + "\n" + e.stack);
|
||||
conditionPassed = false;
|
||||
}
|
||||
if (conditionPassed) {
|
||||
moveOn();
|
||||
}
|
||||
tries++;
|
||||
}, 100);
|
||||
var moveOn = function() { clearInterval(interval); nextTest(); };
|
||||
}
|
||||
|
||||
function getTestPlugin(aName) {
|
||||
var pluginName = aName || "Test Plug-in";
|
||||
var ph = Cc["@mozilla.org/plugin/host;1"].getService(Ci.nsIPluginHost);
|
||||
var tags = ph.getPluginTags();
|
||||
|
||||
// Find the test plugin
|
||||
for (var i = 0; i < tags.length; i++) {
|
||||
if (tags[i].name == pluginName)
|
||||
return tags[i];
|
||||
}
|
||||
ok(false, "Unable to find plugin");
|
||||
return null;
|
||||
}
|
||||
|
||||
// call this to set the test plugin(s) initially expected enabled state.
|
||||
// it will automatically be reset to it's previous value after the test
|
||||
// ends
|
||||
function setTestPluginEnabledState(newEnabledState, pluginName) {
|
||||
var plugin = getTestPlugin(pluginName);
|
||||
var oldEnabledState = plugin.enabledState;
|
||||
plugin.enabledState = newEnabledState;
|
||||
SimpleTest.registerCleanupFunction(function() {
|
||||
getTestPlugin(pluginName).enabledState = oldEnabledState;
|
||||
});
|
||||
}
|
||||
|
||||
// after a test is done using the plugin doorhanger, we should just clear
|
||||
// any permissions that may have crept in
|
||||
function clearAllPluginPermissions() {
|
||||
let perms = Services.perms.enumerator;
|
||||
while (perms.hasMoreElements()) {
|
||||
let perm = perms.getNext();
|
||||
if (perm.type.startsWith('plugin')) {
|
||||
Services.perms.remove(perm.host, perm.type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function updateBlocklist(aCallback) {
|
||||
var blocklistNotifier = Cc["@mozilla.org/extensions/blocklist;1"]
|
||||
.getService(Ci.nsITimerCallback);
|
||||
var observer = function() {
|
||||
Services.obs.removeObserver(observer, "blocklist-updated");
|
||||
SimpleTest.executeSoon(aCallback);
|
||||
};
|
||||
Services.obs.addObserver(observer, "blocklist-updated", false);
|
||||
blocklistNotifier.notify(null);
|
||||
}
|
||||
|
||||
var _originalTestBlocklistURL = null;
|
||||
function setAndUpdateBlocklist(aURL, aCallback) {
|
||||
if (!_originalTestBlocklistURL)
|
||||
_originalTestBlocklistURL = Services.prefs.getCharPref("extensions.blocklist.url");
|
||||
Services.prefs.setCharPref("extensions.blocklist.url", aURL);
|
||||
updateBlocklist(aCallback);
|
||||
}
|
||||
|
||||
function resetBlocklist() {
|
||||
Services.prefs.setCharPref("extensions.blocklist.url", _originalTestBlocklistURL);
|
||||
}
|
9
browser/base/content/test/plugins/plugin_iframe.html
Normal file
9
browser/base/content/test/plugins/plugin_iframe.html
Normal file
@ -0,0 +1,9 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
</head>
|
||||
<body>
|
||||
<iframe id="frame" with="400" height="400" src="plugin_test.html">
|
||||
</body>
|
||||
</html>
|
@ -325,7 +325,7 @@ function resetBlocklist(aCallback) {
|
||||
// XXX - this has "forked" from the head.js helpers in our parent directory :(
|
||||
// But let's reuse their blockNoPlugins.xml. Later, we should arrange to
|
||||
// use their head.js helpers directly
|
||||
let noBlockedURL = "http://example.com/browser/browser/base/content/test/general/blockNoPlugins.xml";
|
||||
let noBlockedURL = "http://example.com/browser/browser/base/content/test/plugins/blockNoPlugins.xml";
|
||||
setAndUpdateBlocklist(noBlockedURL, function() {
|
||||
Services.prefs.setCharPref("extensions.blocklist.url", _originalTestBlocklistURL);
|
||||
if (aCallback)
|
||||
|
@ -15,6 +15,7 @@ MOCHITEST_CHROME_MANIFESTS += [
|
||||
BROWSER_CHROME_MANIFESTS += [
|
||||
'content/test/general/browser.ini',
|
||||
'content/test/newtab/browser.ini',
|
||||
'content/test/plugins/browser.ini',
|
||||
'content/test/social/browser.ini',
|
||||
]
|
||||
|
||||
|
@ -28,6 +28,7 @@ pref("app.update.checkInstallTime.days", 2);
|
||||
|
||||
// Search codes belong only in builds with official branding
|
||||
pref("browser.search.param.yahoo-fr", "");
|
||||
pref("browser.search.param.yahoo-fr-metro", "");
|
||||
pref("browser.search.param.yahoo-fr-cjkt", ""); // now unused
|
||||
pref("browser.search.param.yahoo-fr-ja", "");
|
||||
pref("browser.search.param.yahoo-f-CN", "");
|
||||
|
@ -25,6 +25,7 @@ pref("app.update.checkInstallTime.days", 2);
|
||||
|
||||
// Search codes belong only in builds with official branding
|
||||
pref("browser.search.param.yahoo-fr", "");
|
||||
pref("browser.search.param.yahoo-fr-metro", "");
|
||||
pref("browser.search.param.yahoo-fr-cjkt", ""); // now unused
|
||||
pref("browser.search.param.yahoo-fr-ja", "");
|
||||
pref("browser.search.param.yahoo-f-CN", "");
|
||||
|
@ -24,6 +24,8 @@ pref("app.update.url.details", "https://www.mozilla.org/%LOCALE%/firefox/notes")
|
||||
pref("app.update.checkInstallTime.days", 63);
|
||||
|
||||
pref("browser.search.param.ms-pc", "MOZI");
|
||||
pref("browser.search.param.ms-pc-metro", "MOZW");
|
||||
pref("browser.search.param.yahoo-fr", "moz35");
|
||||
pref("browser.search.param.yahoo-fr-metro", "mozilla_metro_search");
|
||||
pref("browser.search.param.yahoo-fr-cjkt", "moz35"); // now unused
|
||||
pref("browser.search.param.yahoo-fr-ja", "mozff");
|
||||
|
@ -25,6 +25,7 @@ pref("app.update.checkInstallTime.days", 2);
|
||||
|
||||
// Search codes belong only in builds with official branding
|
||||
pref("browser.search.param.yahoo-fr", "");
|
||||
pref("browser.search.param.yahoo-fr-metro", "");
|
||||
pref("browser.search.param.yahoo-fr-cjkt", ""); // now unused
|
||||
pref("browser.search.param.yahoo-fr-ja", "");
|
||||
pref("browser.search.param.yahoo-f-CN", "");
|
||||
|
@ -12,6 +12,12 @@ let gAttached = promise.defer();
|
||||
let gNewGlobal = promise.defer()
|
||||
let gNewChromeSource = promise.defer()
|
||||
|
||||
let { DevToolsLoader } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {});
|
||||
let loader = new DevToolsLoader();
|
||||
loader.invisibleToDebugger = true;
|
||||
loader.main("devtools/server/main");
|
||||
let DebuggerServer = loader.DebuggerServer;
|
||||
|
||||
function test() {
|
||||
if (!DebuggerServer.initialized) {
|
||||
DebuggerServer.init(() => true);
|
||||
@ -89,4 +95,7 @@ registerCleanupFunction(function() {
|
||||
gAttached = null;
|
||||
gNewGlobal = null;
|
||||
gNewChromeSource = null;
|
||||
|
||||
loader = null;
|
||||
DebuggerServer = null;
|
||||
});
|
||||
|
@ -10,13 +10,13 @@
|
||||
<Image width="74" height="74">data:image/png;base64,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</Image>
|
||||
<Url type="application/x-suggestions+json" template="http://api.bing.com/osjson.aspx">
|
||||
<Param name="query" value="{searchTerms}"/>
|
||||
<Param name="form" value="MOZW"/>
|
||||
<Param name="form" value="OSDJAS"/>
|
||||
<Param name="language" value="{moz:locale}"/>
|
||||
</Url>
|
||||
<Url type="text/html" method="GET" template="http://www.bing.com/search">
|
||||
<Param name="q" value="{searchTerms}"/>
|
||||
<MozParam name="pc" condition="pref" pref="ms-pc"/>
|
||||
<Param name="form" value="MOZW"/>
|
||||
<MozParam name="pc" condition="pref" pref="ms-pc-metro"/>
|
||||
<Param name="form" value="MOZWSB"/>
|
||||
</Url>
|
||||
<SearchForm>http://www.bing.com/search</SearchForm>
|
||||
</SearchPlugin>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<Description>Google Search</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Image width="16" height="16">data:image/x-icon;base64,AAABAAIAEBAAAAAAAAB9AQAAJgAAACAgAAAAAAAA8gIAAKMBAACJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAFESURBVDjLpZNJSwNBEIXnt4lE4kHxovgT9BDwJHqPy0HEEOJBiAuCRg+KUdC4QS4KrpC4gCBGE3NQ48JsnZ6eZ3UOM6gjaePhQU93v6+qq2q0pqgeJj2S8EdJT1hr0OxBtKCD5iEd8QxDYpvhvOBAuMDKURX9C9aPu4GA1GEVkzvMg10UBfYveWAWgYAP00V01fa+R9M2bA51wJvhIn3qR+ybt3D3JNQBE5sMjCIOLFpoHzOwdsLRO22qA6R6kiZiWwxUvy/PUQZIhYZ1vFM9cvcOOsYNdcBgysISdSJBnZjJMlR0Fw8vAp0xoz5gao/h+NZBy4i/10XGwrPA+hmvDyhVRG2Avu/LwcrkFADZa16L1h330w1RNgc3DiJzCpPYRm1bpveXX11clQR28xwblHpk1vq1iP/5mcoS0CoXDZiL0vsJ+dzfl+3T/VYAAAAASUVORK5CYIKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAK5SURBVFjDxVfrSxRRFJ9/Jta/oyWjF5XQm6D6EkHRgygIIgjUTcueVgqVWSRRkppEUQYWWB8ye1iGWilWlo/Ude489s7M6Zw7D9dlt53dmd29cFiWvXvO77x+51xpaaUsoSxBaUWZQ4ECy5xji2xKZDyCMlMEw6lCNiOSgwZKJK1SkcKeSealfP64t0mBjl4Ow39MkDUL0p2RSROOtqhZdeUEYM1pBl39XCg/fEeFtWcY7G9W4csvUxjlBkCsQ4Nt9QyWVfvT6RsAKXw3aoDGATZeYIt+W1kjw7cJG0RctWDTRebbKd8A6h5pwsDb70ba3w/eUr3wt/cmwgfw6Yft4TNMQaY7o1P2ncm4FT4ANQH/jQBJ2xv7kqIXEADDql8eS3+n8bku7oxNm+EDIM/dU92upb3T/NJGeaNbDx/AsbsLRUY5Xn92caWXY5d8RV6gWllxSg4fAEnTC90DQW13BLlgXR2D3dcUeDVkwOthA1bXspxILWcm3HdThcfvufB26LcJpkOEAz9NKI/lzqpSEC7feol5EWnpSeSlIxCALUkApmULdjUqxQVAQnl3D/X/yQda4QBEq2TYc12By091MQ17Bg3R88nHKlQbVmHvj89awNBLYrwT9zXY2aBAxTkGFdiSxP/Jp6FLDw+AS7GfsdJTJ2EqSO5khD43nGfBARy/ZxOQgZHe7GPM1jzUvChUtmnBAXQPcKGMJp3fdFGq6NByEhiAO4b/YptFfQJwNyQ/bZkVQGcf90Ja25ndIyrKBOa/f8wIpwi3X1G8UcxNu7ozUS7tiH0jBswwS3RIaF1w6LYKU/ML2+8sGnjygQswtKrVIy/Qd9qQP6LnO64q4fPAKpxyZIymHo1jWk6p1ag2BsdNwQMHcC+M5kHFJX+YlPxpVlbCx2mZ5DzPI04k4kUwHHdskU3pH76iftG8yWlkAAAAAElFTkSuQmCC</Image>
|
||||
<Image width="74" height="74">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAABKCAIAAACTslUmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpBN0E5NEYwRUYzMDQxMUUyQjUzMEMyNEUyNjY3NEQyNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpBN0E5NEYwRkYzMDQxMUUyQjUzMEMyNEUyNjY3NEQyNyI%2BIDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkE3QTk0RjBDRjMwNDExRTJCNTMwQzI0RTI2Njc0RDI3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkE3QTk0RjBERjMwNDExRTJCNTMwQzI0RTI2Njc0RDI3Ii8%2BIDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY%2BIDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8%2BTc4b7gAAA3xJREFUeNrs2WtIU1EcAPBz7r17XKdrEVNpc4qGsqz5IFOhUMikB2JIEvQUoi%2BRHzT6sIiiIrOIiIK%2B9PhSSZAVEfUlUb9VYhphqDOdZpqv%2BWxzj3t2OjclyUcQeefuOOfDOGyw7Xf%2F5%2FzP%2F38v3FQ6AUJ3MCCkB%2BVRHuVRHuVRHuVRHuVRHuVRHuVRHuVRnix5eLn%2FGA4qHlxuHgwSHpZyceEV58Fg3ntcYH4m0cTszFClJTAxaxgt%2F8cVsfWja888zTZBimsnOS9MBcuL1WYjc%2BWp5%2B4rZIpmy4tUqXGsTwBnHk232AXHOEZ%2BeR4MLAMqj%2FH5aYrS265PHYLTjVu7hRO3nG19SMEBa7EaISCdTXLe9s2K7ESuqVMYnZxLEh4fqHziIRNdGDyQp5Txsb4nS%2Fz3w5PzE%2BDnLqFjAJFJnkXOPLOBJa967SIZ4m2bmEu0vPyLMkssy7Hz3xwYE0M6OOGXMa%2FZLoYogodbUxTzPuKVYkhfNPhkzHtY652ZlBWqIzRzS5RjwLYU7kMXqq7zSpu612Zapfv2%2FhG%2FC%2BGsRI4EMNPM2YfwDzc2RDKn9vFOD7DemfZIGzwAA%2FDwOSmWK8xWJJsYPwZmI8tCsmjR8ZtOAYVEUdbeI1ztETehXgdfX4ggk%2Fc2IQC2QLezv4%2B%2FomxlTBQTaryRcVzbIoYxUgsfnNRsWZBO5bc4IQTxBsYSz5n0bJQOxuln86dGDa8f5W%2B8hFVvvHLl5aYrSgvUqzXg%2BTtvQ7vQO4QmXZis0ZIdykM5KgItK1B7faC6XiqhhJmztEh1OFfVZEfWe67RBWUnkVcc5EnfQDqj3eemxqawnPZeZjJHbCQ9nr6%2FiI2M%2Bibf2appMiFCyzpOZqllV4aYNuzDyDGxZFhqGn1fHXimLZQZL0rH%2FOromL%2FfThidEkvqjm9IZjxbv3%2BmFcrLWDL7a8PheiPb%2BEXoHfTLjFdV63GJHTk4v5%2Ffm6tc2BCRg%2BHiEX5yGl967JZlzbkhgbtcwkevEpenYwrXtQid3xEpqdVKmGRg81O5tn5UUeXuG%2FbLkkcGkeSmczkbFclGVhcOOQjGXXhgzP%2BxW6hpRq1dgqT3gAPUMfxflQpXdu%2FhIL46wX4THq44bzaGcJlNQfYADC%2FrhgueB2AgtPce5VEe5VEe5VEe5VEe5VEe5VEe5VEe5VHeP4yfAgwAufYl8QJfZAAAAAAASUVORK5CYII%3D</Image>
|
||||
<Image width="74" height="74">data:image/png;base64,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</Image>
|
||||
<Url type="application/x-suggestions+json" method="GET" template="https://www.google.com/complete/search?client=metrofirefox&q={searchTerms}"/>
|
||||
<Url type="text/html" method="GET" template="https://www.google.com/search">
|
||||
<Param name="q" value="{searchTerms}"/>
|
||||
|
@ -7,7 +7,7 @@
|
||||
<Description>Wikipedia, the free encyclopedia</Description>
|
||||
<InputEncoding>UTF-8</InputEncoding>
|
||||
<Image width="16" height="16">data:image/x-icon;base64,AAABAAIAEBAAAAAAAAA4AQAAJgAAACAgAAAAAAAAJAMAAGQBAACJUE5HDQoaCgAAAA1JSERSAAAAEAAAABAIBgAAAB/z/2EAAAEFSURBVDjLxZPRDYJAEESJoQjpgBoM/9IBtoAl4KcUQQlSAjYgJWAH0gPmyNtkzEEuxkQTPzawc3Ozc3MQTc/JfVPR/wW6a+eKQ+Hyfe54B2wvrfXVqXLDfTCMd3j0VHksrTcH9bl2aZq+BCgEwCCPj9E4TdPYGj0C9CYAKdkmBrIIxiIYbvpbb2sSl8AiA+ywAbJE5YLpCImLU/WRDyIAWRgu4k1s4v50ODru4haYSCk4ntkuM0wcMAINXiPKTJQ9CfgB40phBr8DyFjGKkKEhYhCY4iCDgpAYAM2EZBlhJnsZxQUYBNkSkfBvjDd0ttPeR0mxREQ+OhfYOJ6EmL+l/qzn2kGli9cAF3BOfkAAAAASUVORK5CYIKJUE5HDQoaCgAAAA1JSERSAAAAIAAAACAIBgAAAHN6evQAAAIKSURBVFjD7ZdBSgNRDIYLguAB7FLwAkXwBl0JgiDYjQcY8ARduBJKu3I5C0EoWDxAT9AL9AK9QBeCIHQlCM/3DZOSmeZNZ2r1bQyEGV7yXv7kJZlJq6XIOXfs+crzwPPTnvnR863n05ZFufDD/T595Q4eauM37u/pWYwfeX53cegcABcuHg0AkEQE8AKAu4gAXv8BrAEMh0PXbrddt9t1vV4v406nk62laeqm02n2LjKYIuK5WCyyfeiLDF32yLn6TJ5mBFarlev3+9nBMMqsabkYhmezWcEd2ctTE/tYBwhgt14BhtmAV2VaLpdrAHioCW+VdwWy9IMAUBQjJcQFTwGqvcTD+Xy+oc8askZJyAYrnKEokCeWLpQkSSZvBIANYgSDVVEQQJaeyHQu1QIgiQNb6AmrTtaQ9+RFSLa1D4iXgfsrVITloeSFFZlaAEjAUMaXo2DJWQtVRe1OKF5aJUkf0NdglXO5VzQGoI2USwwD3LEl590CtdO3QBoT5WSFV+Q63Oha17ITgMlkslGSGBWPdeNiDR2SL1B6zQFINmOAkFOW5eTSURCdvX6OdUlapaWjsKX0dgOg26/VWHSUKhrPz35ISKwq76R9Wx+kKgC1f0o5mISsypUG3kPj2L/lDzKYvEUwzoh2JtPRdQQAo1jD6afne88H1oTMeH6ZK+x7PB/lQ/CJtvkNEgDh1dr/bVYAAAAASUVORK5CYII=</Image>
|
||||
<Image width="74" height="74">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAABKCAIAAACTslUmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFOUFERjZERUY0MkExMUUyQjUzMEMyNEUyNjY3NEQyNyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFOUFERjZERkY0MkExMUUyQjUzMEMyNEUyNjY3NEQyNyI%2BIDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkU5QURGNkRDRjQyQTExRTJCNTMwQzI0RTI2Njc0RDI3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkU5QURGNkRERjQyQTExRTJCNTMwQzI0RTI2Njc0RDI3Ii8%2BIDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY%2BIDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8%2B0WY7JQAAAuJJREFUeNrs2j1IamEYB3BTTLAQ%2BqKhgkgJbSilhqAGlyYzUiRqKSmCcKwlnFqkIXERggSjkGgMpxoikNAlcwpSCJIoKroJFZWCt3P%2FdOAgd%2Fa9F%2BP%2FDHJ8zgf8fN7zPs9gnSRJqp8batWPDvLII4888sgjjzzyyCOPPPLII4888sgjjzzyyCOPvP%2FK29zcHBkZsdlsQ0NDDofj8PBQTprN5sHBwdHR0YODg3K5vLGxgWt6e3tdLtev71hYWOjv7%2B%2Fr6xseHsb1VfZJVYrX19ejoyOdTodn7u%2FvF4tFJF9eXpaXl5Fxu90fHx%2FIvL29gWGxWG5ubn5%2FR6FQALirqyubzeKsVNVQVfdxXq8XmJWVla%2BvLznz%2BPjY3d3d1NR0dnaGr%2Bl0uqOj4%2BTkRLnl%2Bvq6s7Nze3tbEhBV5iUSifr6egCurq6UZCgUgnlpaQnHs7OzY2NjlbcEg0H4Ufwa4CEmJiaACQQCSub%2B%2Fh6rsbGxcXd312QyJZNJ5RRW78DAwPr6uiQmqs%2FDG4gCGo3Gp6cnJRkOh2HW6%2FV%2Bv19Zt4h4PN7T04P1WTO89%2Fd3u90OTCQSUZKgooBIHh8fV17sdDp9Pp8kLFQiHhqLxSCxWq2VO6HH45F3HSWTyWSwqWCzqTEeuhlaGTBwyhkY5N2%2Fra3t4uJCTs7Pz09OTkoiQ8jU0tLSMjMzg4O9vb3Pz08cRKPRqamp1dVVrNKdnR1kbm9vT09P5%2BbmxI4tgn62h4cH1Eqj0aRSqVwuB3A%2Bn0cPbG5ubm1tfX5%2B3trawnxTKpWEVk%2BztrYm4ldDG8A4gjaI6uEToxk6fkNDAzZJFA0qtAeUDsKarB7i8vKyvb1dq9UaDIbz83M5CRW%2BqtVqDKLwS4JDJfTpi4uLyrwiB5oemgGSGFYk8SGWh6KNj4%2Fj3atMYuCcnp6%2Bu7v7B7w6%2FmWOPPLII4888sgjjzzyyCOPPPLII4888sgjjzzyyCPv7%2FgjwAC5b9U654qBRwAAAABJRU5ErkJggg%3D%3D</Image>
|
||||
<Image width="74" height="74">data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAABKCAIAAACTslUmAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3NpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNS1jMDIxIDc5LjE1NDkxMSwgMjAxMy8xMC8yOS0xMTo0NzoxNiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDo5ZWJkNTlmMy02ZDIzLTRjZWUtOWQyOS01OWY4ODY2OTRmNzMiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6NTA2MTE5RkU5QjQwMTFFM0IwODREMENBREVCMTMxOUIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6NTA2MTE5RkQ5QjQwMTFFM0IwODREMENBREVCMTMxOUIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIChNYWNpbnRvc2gpIj4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6MGIwYjJiY2EtNDlhOS00ZTNmLThiMzAtYTViMGFjZTQ3OTVjIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjllYmQ1OWYzLTZkMjMtNGNlZS05ZDI5LTU5Zjg4NjY5NGY3MyIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PpbYde4AAATqSURBVHja7JpZKG1fHMeveYhMIXPodAxRElFmXlAyTw+eSBGivBiSPFCmPDhekJDiAZEiUaIQh8wiccpM5lm43+6u9d+dc/a5HMf/urf1e1p7re9e+/ux9t6/39qH0tvb249/N5R//NNB8SgexaN4FI/iUTyKR/EoHsWjeBSP4lE8ikfxKN47Q/X9Uk9Pz+fnZx6PZ2VlZWBgoKmp+fj4eHNzc3d3d3V1tb6+fnZ2trCw0NfXV1hYaGdn5+zsbGRkBBnOury8PDk52djY2NvbGxoagj4uLs7W1tbBwQFT6erqYqr9/f3Nzc2dnZ3+/v6Hh4fY2Fh7e3s+n49JtLW1b29vce7i4qKSktL09PR7Tb+9O3A9gHHNo6KiEhAQAJcjIyMeHh5SNUD18fERiUQrKytoSAqA4efnt7u7yyUwMzNLTEx8v+cP4DGxvLwcGBgodtXMzEwxGVYyJCSErcnIyBDTYFXZmo6ODjEB/lj+/v7MqIaGxuDg4EfdfhiPCdxUxJaamtrT05OkBub09PSIrKWlRVLT3t7OjHZ1dUm9EBEMDAzI4VNOPKFQ+N/bSVl5bW1NqkwgEBAZ7lhJQXp6OoZSUlK4LlRRUQFBaGiofD7lxEOw76usrCwumaWlJZGNjo6yhy4uLlR+xfX1NdfpTk5OOHF+fv7/xhsbGyO+8WDgFSpV1tTUxLWAzNJVVlZyXWJychICd3d3uU3Kjyf2BFZVVUnVvLy8GBsbE9nExATTjzSAQ0NDQxnz456U+6lTAB57ZSwsLLhk1dXVRIbXPdMZExODw7a2Nq6zGH4TE5PPOPwUHt6NSMrEemdnp1TZ/f09+xUK3+hBA2ldxuT5+fnQ1NfX/zE8REFBAfHt5ubGJSstLSWyhISE+Ph4NIaHh7n0SImoAVRVVVG+/Em8w8NDdu5GuSRVhioMdtlKX19fGdM2NzdDk5eX90l7n8VjijViOioqikuWm5vLruBQo8qY08bGBrKDg4M/jzczM8NeFtTEUmXHx8eob0ihg+qZa8KpqSlowsPDP+9NAXgIdg2dk5PDJSsuLiaysLAw2QUDNh/fBa+7u5u9LeBK8bW1tex1XlpaktRgu4AhV1dXhRhTDB7C1NSU+AaGpABbPuzr2HgRERGSsuzsbAxhy/e98MrLy4lvbAslBWlpaRhCNkOlQpSrq6tsDXYeKND19fUV5UpheOfn5+rq6sR3T08Pe/To6Aidjo6OaCclJXG9aRsbG9FZU1Pz7fAQqampXNVzdHQ0yYpzc3PsW3RjY4PIzM3N0YNi6DviIZWxfc/OzjL9W1tbOAwICCBKtNlFDNM5Pj4udVP/XfAQ5NsBAumeDbO9vU1k2DdIpkrm48rnU/kX4g0ODop9pzo9PUUjOTlZTOnl5UVkhYWFuCHRCA4OVqwfBeMh7O3tie+ysrLIyEg0kBXEZKiniQyPHMDQEAqF3x2voaFB7DtaSUmJVKWLiwtb5u3trXAzisfDXk5HR4eYRpZ7fX39ba2D6O3t/QvwENjIENOtra0ylDwej5FZW1t/hZMvwROJRIxpPp8vWwl4RllXV/fX4CGCgoJgemRk5PcOfsXd3d1X2FD9op9mioqKUIIxkLJDIBBgy6+lpfUVNpTe6L+KUzyKR/EoHsWjeBSP4lE8ikfxKB7Fo3gUj+JRvHfFTwEGAAgMbrUkfQalAAAAAElFTkSuQmCC</Image>
|
||||
<Url type="application/x-suggestions+json" method="GET" template="http://en.wikipedia.org/w/api.php">
|
||||
<Param name="action" value="opensearch"/>
|
||||
<Param name="search" value="{searchTerms}"/>
|
||||
|
@ -13,7 +13,7 @@
|
||||
<Url type="text/html" method="GET" template="http://search.yahoo.com/search">
|
||||
<Param name="p" value="{searchTerms}"/>
|
||||
<Param name="ei" value="UTF-8"/>
|
||||
<MozParam name="fr" condition="pref" pref="yahoo-fr" />
|
||||
<MozParam name="fr" condition="pref" pref="yahoo-fr-metro" />
|
||||
</Url>
|
||||
<SearchForm>http://search.yahoo.com/</SearchForm>
|
||||
</SearchPlugin>
|
||||
|
@ -122,8 +122,6 @@ if test -n "$ENABLE_INTL_API" -a -z "$MOZ_NATIVE_ICU"; then
|
||||
dnl We build ICU as a static library for non-shared js builds and as a shared library for shared js builds.
|
||||
if test -z "$MOZ_SHARED_ICU"; then
|
||||
AC_DEFINE(U_STATIC_IMPLEMENTATION)
|
||||
else
|
||||
AC_DEFINE(U_COMBINED_IMPLEMENTATION)
|
||||
fi
|
||||
dnl Source files that use ICU should have control over which parts of the ICU
|
||||
dnl namespace they want to use.
|
||||
|
@ -456,8 +456,8 @@ def environment(xrePath, env=None, crashreporter=True, debugger=False, dmdPath=N
|
||||
env['MOZ_CRASHREPORTER_DISABLE'] = '1'
|
||||
|
||||
# Set WebRTC logging in case it is not set yet
|
||||
env.setdefault('NSPR_LOG_MODULES', 'signaling:5,mtransport:3')
|
||||
env.setdefault('R_LOG_LEVEL', '5')
|
||||
env.setdefault('NSPR_LOG_MODULES', 'signaling:5,mtransport:5,datachannel:5')
|
||||
env.setdefault('R_LOG_LEVEL', '6')
|
||||
env.setdefault('R_LOG_DESTINATION', 'stderr')
|
||||
env.setdefault('R_LOG_VERBOSE', '1')
|
||||
|
||||
|
@ -49,5 +49,3 @@ libs:: dummy
|
||||
GARBAGE += dummy
|
||||
endif
|
||||
endif
|
||||
|
||||
test.$(OBJ_SUFFIX): CFLAGS := -O0
|
||||
|
@ -972,7 +972,7 @@ $(HOST_CMMOBJS):
|
||||
$(COBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CC)
|
||||
$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(ELOG) $(CC) $(OUTOPTION)$@ -c $(COMPILE_CFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
# DEFINES and ACDEFINES are needed here to enable conditional compilation of Q_OBJECTs:
|
||||
# 'moc' only knows about #defines it gets on the command line (-D...), not in
|
||||
@ -994,55 +994,55 @@ ifdef ASFILES
|
||||
# a '-c' flag.
|
||||
$(ASOBJS):
|
||||
$(REPORT_BUILD)
|
||||
$(AS) $(ASOUTOPTION)$@ $(ASFLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
|
||||
$(AS) $(ASOUTOPTION)$@ $(ASFLAGS) $($(notdir $<)_FLAGS) $(AS_DASH_C_FLAG) $(_VPATH_SRCS)
|
||||
endif
|
||||
|
||||
$(SOBJS):
|
||||
$(REPORT_BUILD)
|
||||
$(AS) -o $@ $(ASFLAGS) $(LOCAL_INCLUDES) $(TARGET_LOCAL_INCLUDES) -c $<
|
||||
$(AS) -o $@ $(ASFLAGS) $($(notdir $<)_FLAGS) $(LOCAL_INCLUDES) $(TARGET_LOCAL_INCLUDES) -c $<
|
||||
|
||||
$(CPPOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(ELOG) $(CCC) $(OUTOPTION)$@ -c $(COMPILE_CXXFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CMMOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CXX)
|
||||
$(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(ELOG) $(CCC) -o $@ -c $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(CMOBJS):
|
||||
$(REPORT_BUILD)
|
||||
@$(MAKE_DEPS_AUTO_CC)
|
||||
$(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(ELOG) $(CC) -o $@ -c $(COMPILE_CFLAGS) $(COMPILE_CMFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(filter %.s,$(CPPSRCS:%.cpp=%.s)): %.s: %.cpp $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
$(CCC) -S $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(CCC) -S $(COMPILE_CXXFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(filter %.s,$(CPPSRCS:%.cc=%.s)): %.s: %.cc $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
$(CCC) -S $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(CCC) -S $(COMPILE_CXXFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(filter %.s,$(CSRCS:%.c=%.s)): %.s: %.c $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
$(CC) -S $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(CC) -S $(COMPILE_CFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(filter %.i,$(CPPSRCS:%.cpp=%.i)): %.i: %.cpp $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(filter %.i,$(CPPSRCS:%.cc=%.i)): %.i: %.cc $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(filter %.i,$(CSRCS:%.c=%.i)): %.i: %.c $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
$(CC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(CC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(filter %.i,$(CMMSRCS:%.mm=%.i)): %.i: %.mm $(call mkdir_deps,$(MDDEPDIR))
|
||||
$(REPORT_BUILD)
|
||||
$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
$(CCC) -C $(PREPROCESS_OPTION)$@ $(COMPILE_CXXFLAGS) $(COMPILE_CMMFLAGS) $($(notdir $<)_FLAGS) $(TARGET_LOCAL_INCLUDES) $(_VPATH_SRCS)
|
||||
|
||||
$(RESFILE): %.res: %.rc
|
||||
$(REPORT_BUILD)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user