mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-01-25 06:10:35 +00:00
merge mozilla-central to autoland. r=merge a=merge
This commit is contained in:
commit
cf1d58517f
@ -63,9 +63,6 @@ pref("extensions.hotfix.certs.2.sha1Fingerprint", "39:E7:2B:7A:5B:CF:37:78:F9:5D
|
||||
// Check AUS for system add-on updates.
|
||||
pref("extensions.systemAddon.update.url", "https://aus5.mozilla.org/update/3/SystemAddons/%VERSION%/%BUILD_ID%/%BUILD_TARGET%/%LOCALE%/%CHANNEL%/%OS_VERSION%/%DISTRIBUTION%/%DISTRIBUTION_VERSION%/update.xml");
|
||||
|
||||
// Disable screenshots for now, Shield will enable this.
|
||||
pref("extensions.screenshots.system-disabled", true);
|
||||
|
||||
// Disable add-ons that are not installed by the user in all scopes by default.
|
||||
// See the SCOPE constants in AddonManager.jsm for values to use here.
|
||||
pref("extensions.autoDisableScopes", 15);
|
||||
|
@ -72,7 +72,8 @@
|
||||
class="accessory-button"
|
||||
label="&updateHistory2.label;"
|
||||
accesskey="&updateHistory2.accesskey;"
|
||||
preference="app.update.disable_button.showUpdateHistory"/>
|
||||
preference="app.update.disable_button.showUpdateHistory"
|
||||
searchkeywords="&history.title; &history.intro;"/>
|
||||
</vbox>
|
||||
#endif
|
||||
</hbox>
|
||||
|
@ -44,7 +44,7 @@ var gSearchResultsPane = {
|
||||
*/
|
||||
stringMatchesFilters(str, filter) {
|
||||
if (!filter || !str) {
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
let searchStr = str.toLowerCase();
|
||||
let filterStrings = filter.toLowerCase().split(/\s+/);
|
||||
@ -284,8 +284,6 @@ var gSearchResultsPane = {
|
||||
let nodeSizes = [];
|
||||
let allNodeText = "";
|
||||
let runningSize = 0;
|
||||
let labelResult = false;
|
||||
let valueResult = false;
|
||||
let accessKeyTextNodes = this.textNodeDescendants(nodeObject.boxObject);
|
||||
|
||||
for (let node of accessKeyTextNodes) {
|
||||
@ -298,9 +296,7 @@ var gSearchResultsPane = {
|
||||
let complexTextNodesResult = this.highlightMatches(accessKeyTextNodes, nodeSizes, allNodeText.toLowerCase(), searchPhrase);
|
||||
|
||||
// Searching some elements, such as xul:button, have a 'label' attribute that contains the user-visible text.
|
||||
if (nodeObject.getAttribute("label")) {
|
||||
labelResult = this.stringMatchesFilters(nodeObject.getAttribute("label"), searchPhrase);
|
||||
}
|
||||
let labelResult = this.stringMatchesFilters(nodeObject.getAttribute("label"), searchPhrase);
|
||||
|
||||
// Creating tooltips for buttons
|
||||
if (labelResult && nodeObject.tagName === "button") {
|
||||
@ -308,21 +304,26 @@ var gSearchResultsPane = {
|
||||
}
|
||||
|
||||
// Searching some elements, such as xul:label, store their user-visible text in a "value" attribute.
|
||||
if (nodeObject.getAttribute("value")) {
|
||||
valueResult = this.stringMatchesFilters(nodeObject.getAttribute("value"), searchPhrase);
|
||||
}
|
||||
|
||||
if ((nodeObject.tagName == "button" || nodeObject.tagName == "menulist" || nodeObject.tagName == "menuitem") &&
|
||||
(labelResult || valueResult)) {
|
||||
nodeObject.setAttribute("highlightable", "true");
|
||||
}
|
||||
let valueResult = this.stringMatchesFilters(nodeObject.getAttribute("value"), searchPhrase);
|
||||
|
||||
// Creating tooltips for buttons
|
||||
if (valueResult && nodeObject.tagName === "button") {
|
||||
this.listSearchTooltips.push(nodeObject);
|
||||
}
|
||||
|
||||
matchesFound = matchesFound || complexTextNodesResult || labelResult || valueResult;
|
||||
// Searching some elements, such as xul:button, buttons to open subdialogs.
|
||||
let keywordsResult = this.stringMatchesFilters(nodeObject.getAttribute("searchkeywords"), searchPhrase);
|
||||
|
||||
// Creating tooltips for buttons
|
||||
if (keywordsResult && nodeObject.tagName === "button") {
|
||||
this.listSearchTooltips.push(nodeObject);
|
||||
}
|
||||
|
||||
if (nodeObject.tagName == "button" && (labelResult || valueResult || keywordsResult)) {
|
||||
nodeObject.setAttribute("highlightable", "true");
|
||||
}
|
||||
|
||||
matchesFound = matchesFound || complexTextNodesResult || labelResult || valueResult || keywordsResult;
|
||||
}
|
||||
|
||||
for (let i = 0; i < nodeObject.childNodes.length; i++) {
|
||||
|
@ -315,7 +315,8 @@
|
||||
class="content-cell-item"
|
||||
label="&chooseBookmark.label;"
|
||||
accesskey="&chooseBookmark.accesskey;"
|
||||
preference="pref.browser.homepage.disable_button.bookmark_page"/>
|
||||
preference="pref.browser.homepage.disable_button.bookmark_page"
|
||||
searchkeywords="&selectBookmark.title; &selectBookmark.label;"/>
|
||||
<button id="restoreDefaultHomePage"
|
||||
class="content-cell-item"
|
||||
label="&restoreDefault.label;"
|
||||
@ -452,7 +453,14 @@
|
||||
<button id="chooseLanguage"
|
||||
class="accessory-button"
|
||||
label="&chooseButton.label;"
|
||||
accesskey="&chooseButton.accesskey;"/>
|
||||
accesskey="&chooseButton.accesskey;"
|
||||
searchkeywords="&languages.customize.Header;
|
||||
&languages.customize.description;
|
||||
&languages.customize.moveUp.label;
|
||||
&languages.customize.moveDown.label;
|
||||
&languages.customize.deleteButton.label;
|
||||
&languages.customize.selectLanguage.label;
|
||||
&languages.customize.addButton.label;"/>
|
||||
</hbox>
|
||||
|
||||
<hbox id="translationBox" hidden="true">
|
||||
@ -529,7 +537,67 @@
|
||||
class="accessory-button"
|
||||
icon="select-font"
|
||||
label="&advancedFonts.label;"
|
||||
accesskey="&advancedFonts.accesskey;"/>
|
||||
accesskey="&advancedFonts.accesskey;"
|
||||
searchkeywords="&fontsDialog.title;
|
||||
&language.label;
|
||||
&size.label;
|
||||
&proportional.label;
|
||||
&serif.label;
|
||||
&sans-serif.label;
|
||||
&monospace.label;
|
||||
&font.langGroup.latin;
|
||||
&font.langGroup.japanese;
|
||||
&font.langGroup.trad-chinese;
|
||||
&font.langGroup.simpl-chinese;
|
||||
&font.langGroup.trad-chinese-hk;
|
||||
&font.langGroup.korean;
|
||||
&font.langGroup.cyrillic;
|
||||
&font.langGroup.el;
|
||||
&font.langGroup.other;
|
||||
&font.langGroup.thai;
|
||||
&font.langGroup.hebrew;
|
||||
&font.langGroup.arabic;
|
||||
&font.langGroup.devanagari;
|
||||
&font.langGroup.tamil;
|
||||
&font.langGroup.armenian;
|
||||
&font.langGroup.bengali;
|
||||
&font.langGroup.canadian;
|
||||
&font.langGroup.ethiopic;
|
||||
&font.langGroup.georgian;
|
||||
&font.langGroup.gujarati;
|
||||
&font.langGroup.gurmukhi;
|
||||
&font.langGroup.khmer;
|
||||
&font.langGroup.malayalam;
|
||||
&font.langGroup.math;
|
||||
&font.langGroup.odia;
|
||||
&font.langGroup.telugu;
|
||||
&font.langGroup.kannada;
|
||||
&font.langGroup.sinhala;
|
||||
&font.langGroup.tibetan;
|
||||
&minSize.label;
|
||||
&minSize.none;
|
||||
&useDefaultFontSerif.label;
|
||||
&useDefaultFontSansSerif.label;
|
||||
&allowPagesToUseOwn.label;
|
||||
&languages.customize.Fallback2.grouplabel;
|
||||
&languages.customize.Fallback2.label;
|
||||
&languages.customize.Fallback2.desc;
|
||||
&languages.customize.Fallback.auto;
|
||||
&languages.customize.Fallback.arabic;
|
||||
&languages.customize.Fallback.baltic;
|
||||
&languages.customize.Fallback.ceiso;
|
||||
&languages.customize.Fallback.cewindows;
|
||||
&languages.customize.Fallback.simplified;
|
||||
&languages.customize.Fallback.traditional;
|
||||
&languages.customize.Fallback.cyrillic;
|
||||
&languages.customize.Fallback.greek;
|
||||
&languages.customize.Fallback.hebrew;
|
||||
&languages.customize.Fallback.japanese;
|
||||
&languages.customize.Fallback.korean;
|
||||
&languages.customize.Fallback.thai;
|
||||
&languages.customize.Fallback.turkish;
|
||||
&languages.customize.Fallback.vietnamese;
|
||||
&languages.customize.Fallback.other;"/>
|
||||
</hbox>
|
||||
<hbox id="colorsSettings">
|
||||
<spacer flex="1" />
|
||||
@ -537,7 +605,15 @@
|
||||
class="accessory-button"
|
||||
icon="select-color"
|
||||
label="&colors.label;"
|
||||
accesskey="&colors.accesskey;"/>
|
||||
accesskey="&colors.accesskey;"
|
||||
searchkeywords="&overrideDefaultPageColors.label;
|
||||
&overrideDefaultPageColors.always.label;
|
||||
&overrideDefaultPageColors.auto.label;
|
||||
&overrideDefaultPageColors.never.label;
|
||||
&useSystemColors.label;
|
||||
&underlineLinks.label;
|
||||
&linkColor.label;
|
||||
&visitedLinkColor.label;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
|
@ -20,6 +20,19 @@
|
||||
<!ENTITY % globalPreferencesDTD SYSTEM "chrome://global/locale/preferences.dtd">
|
||||
<!ENTITY % preferencesDTD SYSTEM
|
||||
"chrome://browser/locale/preferences/preferences.dtd">
|
||||
<!ENTITY % selectBookmarkDTD SYSTEM
|
||||
"chrome://browser/locale/preferences/selectBookmark.dtd">
|
||||
<!ENTITY % languagesDTD SYSTEM "chrome://browser/locale/preferences/languages.dtd">
|
||||
<!ENTITY % fontDTD SYSTEM "chrome://browser/locale/preferences/fonts.dtd">
|
||||
<!ENTITY % colorsDTD SYSTEM "chrome://browser/locale/preferences/colors.dtd">
|
||||
<!ENTITY % permissionsDTD SYSTEM "chrome://browser/locale/preferences/permissions.dtd">
|
||||
<!ENTITY % passwordManagerDTD SYSTEM "chrome://passwordmgr/locale/passwordManager.dtd">
|
||||
<!ENTITY % historyDTD SYSTEM "chrome://mozapps/locale/update/history.dtd">
|
||||
<!ENTITY % certManagerDTD SYSTEM "chrome://pippki/locale/certManager.dtd">
|
||||
<!ENTITY % deviceManangerDTD SYSTEM "chrome://pippki/locale/deviceManager.dtd">
|
||||
<!ENTITY % connectionDTD SYSTEM "chrome://browser/locale/preferences/connection.dtd">
|
||||
<!ENTITY % siteDataSettingsDTD SYSTEM
|
||||
"chrome://browser/locale/preferences/siteDataSettings.dtd" >
|
||||
<!ENTITY % privacyDTD SYSTEM "chrome://browser/locale/preferences/privacy.dtd">
|
||||
<!ENTITY % tabsDTD SYSTEM "chrome://browser/locale/preferences/tabs.dtd">
|
||||
<!ENTITY % searchDTD SYSTEM "chrome://browser/locale/preferences/search.dtd">
|
||||
@ -42,6 +55,17 @@
|
||||
%brandDTD;
|
||||
%globalPreferencesDTD;
|
||||
%preferencesDTD;
|
||||
%selectBookmarkDTD;
|
||||
%languagesDTD;
|
||||
%fontDTD;
|
||||
%colorsDTD;
|
||||
%permissionsDTD;
|
||||
%passwordManagerDTD;
|
||||
%historyDTD;
|
||||
%certManagerDTD;
|
||||
%deviceManangerDTD;
|
||||
%connectionDTD;
|
||||
%siteDataSettingsDTD;
|
||||
%privacyDTD;
|
||||
%tabsDTD;
|
||||
%searchDTD;
|
||||
@ -84,6 +108,10 @@
|
||||
src="chrome://branding/locale/brand.properties"/>
|
||||
<stringbundle id="bundlePreferences"
|
||||
src="chrome://browser/locale/preferences/preferences.properties"/>
|
||||
<stringbundle id="pkiBundle"
|
||||
src="chrome://pippki/locale/pippki.properties"/>
|
||||
<stringbundle id="browserBundle"
|
||||
src="chrome://browser/locale/browser.properties"/>
|
||||
|
||||
<stringbundleset id="appManagerBundleset">
|
||||
<stringbundle id="appManagerBundle"
|
||||
|
@ -150,6 +150,13 @@ var gPrivacyPane = {
|
||||
.addEventListener(aEventType, aCallback.bind(gPrivacyPane));
|
||||
}
|
||||
|
||||
function appendSearchKeywords(aId, keywords) {
|
||||
let element = document.getElementById(aId);
|
||||
let searchKeywords = element.getAttribute("searchkeywords");
|
||||
searchKeywords && keywords.push(searchKeywords);
|
||||
element.setAttribute("searchkeywords", keywords.join(" "));
|
||||
}
|
||||
|
||||
this._updateSanitizeSettingsButton();
|
||||
this.initializeHistoryMode();
|
||||
this.updateHistoryModePane();
|
||||
@ -319,6 +326,53 @@ var gPrivacyPane = {
|
||||
setEventListener("submitHealthReportBox", "command",
|
||||
gPrivacyPane.updateSubmitHealthReport);
|
||||
}
|
||||
|
||||
// Append search keywords into the elements could open subdialogs.
|
||||
let bundlePrefs = document.getElementById("bundlePreferences");
|
||||
let signonBundle = document.getElementById("signonBundle");
|
||||
let pkiBundle = document.getElementById("pkiBundle");
|
||||
let browserBundle = document.getElementById("browserBundle");
|
||||
appendSearchKeywords("passwordExceptions", [
|
||||
bundlePrefs.getString("savedLoginsExceptions_title"),
|
||||
bundlePrefs.getString("savedLoginsExceptions_desc"),
|
||||
]);
|
||||
appendSearchKeywords("showPasswords", [
|
||||
signonBundle.getString("loginsDescriptionAll"),
|
||||
]);
|
||||
appendSearchKeywords("trackingProtectionExceptions", [
|
||||
bundlePrefs.getString("trackingprotectionpermissionstitle"),
|
||||
bundlePrefs.getString("trackingprotectionpermissionstext"),
|
||||
]);
|
||||
appendSearchKeywords("changeBlockList", [
|
||||
bundlePrefs.getString("blockliststitle"),
|
||||
bundlePrefs.getString("blockliststext"),
|
||||
]);
|
||||
appendSearchKeywords("popupPolicyButton", [
|
||||
bundlePrefs.getString("popuppermissionstitle"),
|
||||
bundlePrefs.getString("popuppermissionstext"),
|
||||
]);
|
||||
appendSearchKeywords("notificationsPolicyButton", [
|
||||
bundlePrefs.getString("notificationspermissionstitle"),
|
||||
bundlePrefs.getString("notificationspermissionstext4"),
|
||||
]);
|
||||
appendSearchKeywords("addonExceptions", [
|
||||
bundlePrefs.getString("addons_permissions_title"),
|
||||
bundlePrefs.getString("addonspermissionstext"),
|
||||
]);
|
||||
appendSearchKeywords("viewSecurityDevicesButton", [
|
||||
pkiBundle.getString("enable_fips"),
|
||||
]);
|
||||
appendSearchKeywords("browserContainersSettings", [
|
||||
browserBundle.getString("userContextPersonal.label"),
|
||||
browserBundle.getString("userContextWork.label"),
|
||||
browserBundle.getString("userContextBanking.label"),
|
||||
browserBundle.getString("userContextShopping.label"),
|
||||
]);
|
||||
appendSearchKeywords("siteDataSettings", [
|
||||
bundlePrefs.getString("siteDataSettings.description"),
|
||||
bundlePrefs.getString("removeAllCookies.label"),
|
||||
bundlePrefs.getString("removeSelectedCookies.label"),
|
||||
]);
|
||||
},
|
||||
|
||||
// TRACKING PROTECTION MODE
|
||||
|
@ -171,6 +171,7 @@
|
||||
</preferences>
|
||||
|
||||
<stringbundle id="bundlePreferences" src="chrome://browser/locale/preferences/preferences.properties"/>
|
||||
<stringbundle id="signonBundle" src="chrome://passwordmgr/locale/passwordmgr.properties"/>
|
||||
|
||||
<hbox id="header-privacy"
|
||||
class="header"
|
||||
@ -317,20 +318,22 @@
|
||||
class="accessory-button"
|
||||
label="&passwordExceptions.label;"
|
||||
accesskey="&passwordExceptions.accesskey;"
|
||||
preference="pref.privacy.disable_button.view_passwords_exceptions"/>
|
||||
preference="pref.privacy.disable_button.view_passwords_exceptions"
|
||||
searchkeywords="&address.label;"/>
|
||||
</hbox>
|
||||
<hbox id="showPasswordBox" pack="end">
|
||||
<button id="showPasswords"
|
||||
class="accessory-button"
|
||||
label="&savedLogins.label;" accesskey="&savedLogins.accesskey;"
|
||||
preference="pref.privacy.disable_button.view_passwords"/>
|
||||
preference="pref.privacy.disable_button.view_passwords"
|
||||
searchkeywords="&savedLogins.title;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
<hbox id="masterPasswordRow">
|
||||
<checkbox id="useMasterPassword"
|
||||
label="&useMasterPassword.label;"
|
||||
accesskey="&useMasterPassword.accesskey;"
|
||||
flex="1" />
|
||||
flex="1"/>
|
||||
<button id="changeMasterPassword"
|
||||
class="accessory-button"
|
||||
label="&changeMasterPassword.label;"
|
||||
@ -359,12 +362,17 @@
|
||||
class="accessory-button"
|
||||
label="&trackingProtectionExceptions.label;"
|
||||
accesskey="&trackingProtectionExceptions.accesskey;"
|
||||
preference="pref.privacy.disable_button.tracking_protection_exceptions"/>
|
||||
preference="pref.privacy.disable_button.tracking_protection_exceptions"
|
||||
searchkeywords="&removepermission.label;
|
||||
&removeallpermissions.label;
|
||||
&button.cancel.label;
|
||||
&button.ok.label;"/>
|
||||
<button id="changeBlockList"
|
||||
class="accessory-button"
|
||||
label="&changeBlockList.label;"
|
||||
accesskey="&changeBlockList.accesskey;"
|
||||
preference="pref.privacy.disable_button.change_blocklist"/>
|
||||
preference="pref.privacy.disable_button.change_blocklist"
|
||||
searchkeywords="&button.cancel.label; &button.ok.label;"/>
|
||||
</vbox>
|
||||
</hbox>
|
||||
<radiogroup id="trackingProtectionRadioGroup" aria-labelledby="trackingProtectionDesc">
|
||||
@ -413,7 +421,8 @@
|
||||
<button id="popupPolicyButton"
|
||||
class="accessory-button"
|
||||
label="&popupExceptions.label;"
|
||||
accesskey="&popupExceptions.accesskey;"/>
|
||||
accesskey="&popupExceptions.accesskey;"
|
||||
searchkeywords="&address.label; &button.cancel.label; &button.ok.label;"/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
@ -436,7 +445,11 @@
|
||||
<button id="notificationsPolicyButton"
|
||||
class="accessory-button"
|
||||
label="¬ificationsPolicyButton.label;"
|
||||
accesskey="¬ificationsPolicyButton.accesskey;"/>
|
||||
accesskey="¬ificationsPolicyButton.accesskey;"
|
||||
searchkeywords="&removepermission.label;
|
||||
&removeallpermissions.label;
|
||||
&button.cancel.label;
|
||||
&button.ok.label;"/>
|
||||
</hbox>
|
||||
</row>
|
||||
</rows>
|
||||
@ -483,7 +496,13 @@
|
||||
<button id="addonExceptions"
|
||||
class="accessory-button"
|
||||
label="&addonExceptions.label;"
|
||||
accesskey="&addonExceptions.accesskey;"/>
|
||||
accesskey="&addonExceptions.accesskey;"
|
||||
searchkeywords="&address.label;
|
||||
&allow.label;
|
||||
&removepermission.label;
|
||||
&removeallpermissions.label;
|
||||
&button.cancel.label;
|
||||
&button.ok.label;"/>
|
||||
</hbox>
|
||||
|
||||
<separator class="thin"/>
|
||||
@ -534,12 +553,36 @@
|
||||
class="accessory-button"
|
||||
label="&viewCerts.label;"
|
||||
accesskey="&viewCerts.accesskey;"
|
||||
preference="security.disable_button.openCertManager"/>
|
||||
preference="security.disable_button.openCertManager"
|
||||
searchkeywords="&certmgr.tab.mine;
|
||||
&certmgr.tab.others2;
|
||||
&certmgr.tab.websites3;
|
||||
&certmgr.tab.ca;
|
||||
&certmgr.tab.orphan2;
|
||||
&certmgr.mine;
|
||||
&certmgr.others;
|
||||
&certmgr.websites2;
|
||||
&certmgr.cas;
|
||||
&certmgr.orphans;
|
||||
&certmgr.certname;
|
||||
&certmgr.tokenname;
|
||||
&certmgr.view2.label;
|
||||
&certmgr.export.label;
|
||||
&certmgr.delete2.label;"/>
|
||||
<button id="viewSecurityDevicesButton"
|
||||
class="accessory-button"
|
||||
label="&viewSecurityDevices.label;"
|
||||
accesskey="&viewSecurityDevices.accesskey;"
|
||||
preference="security.disable_button.openDeviceManager"/>
|
||||
preference="security.disable_button.openDeviceManager"
|
||||
searchkeywords="&devmgr.title;
|
||||
&devmgr.devlist.label;
|
||||
&devmgr.details.title;
|
||||
&devmgr.details.title2;
|
||||
&devmgr.button.login.label;
|
||||
&devmgr.button.logout.label;
|
||||
&devmgr.button.changepw.label;
|
||||
&devmgr.button.load.label;
|
||||
&devmgr.button.unload.label;"/>
|
||||
</vbox>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
@ -583,7 +626,10 @@
|
||||
<button id="browserContainersSettings"
|
||||
class="accessory-button"
|
||||
label="&browserContainersSettings.label;"
|
||||
accesskey="&browserContainersSettings.accesskey;"/>
|
||||
accesskey="&browserContainersSettings.accesskey;"
|
||||
searchkeywords="&addButton.label;
|
||||
&preferencesButton.label;
|
||||
&removeButton.label;"/>
|
||||
</hbox>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
@ -599,7 +645,25 @@
|
||||
class="accessory-button"
|
||||
icon="network"
|
||||
label="&connectionSettings.label;"
|
||||
accesskey="&connectionSettings.accesskey;"/>
|
||||
accesskey="&connectionSettings.accesskey;"
|
||||
searchkeywords="&connectionsDialog.title;
|
||||
&noProxyTypeRadio.label;
|
||||
&WPADTypeRadio.label;
|
||||
&systemTypeRadio.label;
|
||||
&manualTypeRadio.label;
|
||||
&http.label;
|
||||
&ssl.label;
|
||||
&ftp.label;
|
||||
&socks.label;
|
||||
&socks4.label;
|
||||
&socks5.label;
|
||||
&noproxy.label;
|
||||
&noproxyExplain.label;
|
||||
&shareproxy.label;
|
||||
&autoTypeRadio.label;
|
||||
&reload.label;
|
||||
&autologinproxy.label;
|
||||
&socksRemoteDNS.label2;"/>
|
||||
</hbox>
|
||||
</groupbox>
|
||||
|
||||
@ -687,7 +751,11 @@
|
||||
<button id="siteDataSettings"
|
||||
class="accessory-button"
|
||||
label="&siteDataSettings.label;"
|
||||
accesskey="&siteDataSettings.accesskey;"/>
|
||||
accesskey="&siteDataSettings.accesskey;"
|
||||
searchkeywords="&window.title;
|
||||
&hostCol.label;
|
||||
&statusCol.label;
|
||||
&usageCol.label;"/>
|
||||
</vbox>
|
||||
</groupbox>
|
||||
|
||||
|
@ -14,6 +14,10 @@ skip-if = !updater
|
||||
[browser_bug705422.js]
|
||||
[browser_bug731866.js]
|
||||
[browser_search_within_preferences.js]
|
||||
[browser_search_subdialogs_within_preferences_1.js]
|
||||
[browser_search_subdialogs_within_preferences_2.js]
|
||||
[browser_search_subdialogs_within_preferences_3.js]
|
||||
[browser_search_subdialogs_within_preferences_4.js]
|
||||
[browser_bug795764_cachedisabled.js]
|
||||
[browser_bug1018066_resetScrollPosition.js]
|
||||
[browser_bug1020245_openPreferences_to_paneContent.js]
|
||||
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* This file contains tests for the Preferences search bar.
|
||||
*/
|
||||
|
||||
// Enabling Searching functionatily. Will display search bar form this testcase forward.
|
||||
add_task(async function() {
|
||||
await SpecialPowers.pushPrefEnv({"set": [["browser.preferences.search", true]]});
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Set Home Page" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("Set Home Page", "startupGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Languages" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("Choose languages", "languagesGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Fonts" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("Text Encoding", "fontsGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Colors" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("Link Colors", "fontsGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Exceptions - Saved Logins" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("sites will not be saved", "passwordsGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* This file contains tests for the Preferences search bar.
|
||||
*/
|
||||
|
||||
// Enabling Searching functionatily. Will display search bar form this testcase forward.
|
||||
add_task(async function() {
|
||||
await SpecialPowers.pushPrefEnv({"set": [["browser.preferences.search", true]]});
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Saved Logins" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("sites are stored", "passwordsGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Exceptions - Tracking Protection" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("disabled Tracking Protection", "trackingGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Block Lists" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("block Web elements", "trackingGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Allowed Sites - Pop-ups" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("open pop-up windows", "miscGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Notification Permissions" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("request permission again", "notificationsGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* This file contains tests for the Preferences search bar.
|
||||
*/
|
||||
|
||||
// Enabling Searching functionatily. Will display search bar form this testcase forward.
|
||||
add_task(async function() {
|
||||
await SpecialPowers.pushPrefEnv({"set": [["browser.preferences.search", true]]});
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Allowed Sites - Add-ons Installation" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("allowed to install add-ons", "addonsPhishingGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Certificate Manager" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("identify these certificate authorities", "certSelection");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Device Manager" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("Security Modules and Devices", "certSelection");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Connection Settings" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("Use system proxy settings", "connectionGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Settings - Site Data" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("store site data on your computer", "siteDataGroup");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
@ -0,0 +1,17 @@
|
||||
/*
|
||||
* This file contains tests for the Preferences search bar.
|
||||
*/
|
||||
|
||||
// Enabling Searching functionatily. Will display search bar form this testcase forward.
|
||||
add_task(async function() {
|
||||
await SpecialPowers.pushPrefEnv({"set": [["browser.preferences.search", true]]});
|
||||
});
|
||||
|
||||
/**
|
||||
* Test for searching for the "Update History" subdialog.
|
||||
*/
|
||||
add_task(async function() {
|
||||
await openPreferencesViaOpenPreferencesAPI("paneGeneral", {leaveOpen: true});
|
||||
evaluateSearchResults("updates have been installed", "updateApp");
|
||||
await BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
||||
});
|
@ -89,7 +89,11 @@ add_task(async function() {
|
||||
|
||||
for (let i = 0; i < mainPrefTag.childElementCount; i++) {
|
||||
let child = mainPrefTag.children[i]
|
||||
if (child.id == "passwordsGroup" || child.id == "weavePrefsDeck" || child.id == "header-searchResults") {
|
||||
if (child.id == "passwordsGroup" ||
|
||||
child.id == "weavePrefsDeck" ||
|
||||
child.id == "header-searchResults" ||
|
||||
child.id == "certSelection" ||
|
||||
child.id == "connectionGroup") {
|
||||
is_element_visible(child, "Should be in search results");
|
||||
} else if (child.id) {
|
||||
is_element_hidden(child, "Should not be in search results");
|
||||
|
@ -218,6 +218,26 @@ function assertSitesListed(doc, hosts) {
|
||||
is(removeAllBtn.disabled, false, "Should enable the removeAllBtn button");
|
||||
}
|
||||
|
||||
function evaluateSearchResults(keyword, searchReults) {
|
||||
searchReults = Array.isArray(searchReults) ? searchReults : [searchReults];
|
||||
searchReults.push("header-searchResults");
|
||||
|
||||
let searchInput = gBrowser.contentDocument.getElementById("searchInput");
|
||||
searchInput.focus();
|
||||
searchInput.value = keyword;
|
||||
searchInput.doCommand();
|
||||
|
||||
let mainPrefTag = gBrowser.contentDocument.getElementById("mainPrefPane");
|
||||
for (let i = 0; i < mainPrefTag.childElementCount; i++) {
|
||||
let child = mainPrefTag.children[i];
|
||||
if (searchReults.includes(child.id)) {
|
||||
is_element_visible(child, "Should be in search results");
|
||||
} else if (child.id) {
|
||||
is_element_hidden(child, "Should not be in search results");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const mockSiteDataManager = {
|
||||
|
||||
_SiteDataManager: null,
|
||||
|
@ -1068,6 +1068,7 @@ html .arrow.expanded svg {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sources-panel * {
|
||||
@ -1127,6 +1128,10 @@ html .arrow.expanded svg {
|
||||
padding-top: 5px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
.outline-list {
|
||||
list-style-type: "-";
|
||||
}
|
||||
@ -1287,7 +1292,7 @@ html .toggle-button-end.vertical svg {
|
||||
left: 0;
|
||||
right: 1px;
|
||||
opacity: 1;
|
||||
z-index: 100;
|
||||
z-index: 1;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
height: var(--editor-footer-height);
|
||||
@ -1312,7 +1317,7 @@ html .toggle-button-end.vertical svg {
|
||||
transition: opacity 200ms;
|
||||
border: none;
|
||||
background: transparent;
|
||||
padding: 8px 0.7em;
|
||||
padding: 6px 0.7em;
|
||||
}
|
||||
|
||||
.source-footer > .commands > .action i {
|
||||
@ -1440,14 +1445,10 @@ html .toggle-button-end.vertical svg {
|
||||
fill: white;
|
||||
}
|
||||
|
||||
.search-bottom-bar .search-modifiers button.disabled svg {
|
||||
fill: var(--theme-comment-alt);
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.search-bottom-bar .search-type-toggles {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
max-width: 68%;
|
||||
}
|
||||
|
||||
.search-bottom-bar .search-type-toggles .search-toggle-title {
|
||||
@ -1455,10 +1456,13 @@ html .toggle-button-end.vertical svg {
|
||||
font-size: 11px;
|
||||
font-weight: normal;
|
||||
margin: 0;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.search-bottom-bar .search-type-toggles .search-type-btn {
|
||||
margin: 0 6px;
|
||||
margin: 0 0 0 6px;
|
||||
border: none;
|
||||
background: transparent;
|
||||
color: var(--theme-comment-alt);
|
||||
@ -1594,7 +1598,7 @@ html .toggle-button-end.vertical svg {
|
||||
|
||||
.tooltip .preview {
|
||||
background: var(--theme-toolbar-background);
|
||||
max-width: 350px;
|
||||
max-width: inherit;
|
||||
min-height: 80px;
|
||||
border: 1px solid var(--theme-splitter-color);
|
||||
box-shadow: 1px 2px 4px 1px var(--theme-toolbar-background-alt);
|
||||
@ -1845,6 +1849,47 @@ html[dir="rtl"] .editor-mount {
|
||||
.visible {
|
||||
visibility: visible;
|
||||
}
|
||||
.cm-highlight {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.cm-highlight::before {
|
||||
position: absolute;
|
||||
border-top-style: solid;
|
||||
border-bottom-style: solid;
|
||||
border-top-color: var(--theme-comment-alt);
|
||||
border-bottom-color: var(--theme-comment-alt);
|
||||
border-top-width: 1px;
|
||||
border-bottom-width: 1px;
|
||||
top: -1px;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
content: "";
|
||||
margin-bottom: -1px;
|
||||
}
|
||||
|
||||
.cm-highlight-full::before {
|
||||
border: 1px solid var(--theme-comment-alt);
|
||||
}
|
||||
|
||||
.cm-highlight-start::before {
|
||||
border-left-width: 1px;
|
||||
border-left-style: solid;
|
||||
border-left-color: var(--theme-comment-alt);
|
||||
margin: 0 0 -1px -1px;
|
||||
border-top-left-radius: 2px;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
|
||||
.cm-highlight-end::before {
|
||||
border-right-width: 1px;
|
||||
border-right-style: solid;
|
||||
border-right-color: var(--theme-comment-alt);
|
||||
margin: 0 -1px -1px 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
}
|
||||
|
||||
.why-paused {
|
||||
background-color: var(--theme-body-background);
|
||||
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
@ -24,8 +24,8 @@ add_task(function*() {
|
||||
|
||||
// The pretty-print button should go away in the pretty-printed
|
||||
// source.
|
||||
ok(!findElement(dbg, "sourceFooter"), "Footer is hidden");
|
||||
ok(!findElement(dbg, "editorFooter"), "Footer is hidden");
|
||||
|
||||
yield selectSource(dbg, "math.min.js");
|
||||
ok(findElement(dbg, "sourceFooter"), "Footer is hidden");
|
||||
ok(findElement(dbg, "editorFooter"), "Footer is hidden");
|
||||
});
|
||||
|
@ -645,7 +645,8 @@ const selectors = {
|
||||
stepIn: ".stepIn.active",
|
||||
toggleBreakpoints: ".breakpoints-toggle",
|
||||
prettyPrintButton: ".prettyPrint",
|
||||
sourceFooter: ".source-footer",
|
||||
sourcesFooter: ".sources-panel .source-footer",
|
||||
editorFooter: ".editor-pane .source-footer",
|
||||
sourceNode: i => `.sources-list .tree-node:nth-child(${i})`,
|
||||
sourceNodes: ".sources-list .tree-node",
|
||||
sourceArrow: i => `.sources-list .tree-node:nth-child(${i}) .arrow`
|
||||
|
@ -140,6 +140,14 @@ sources.search.alt.key=CmdOrCtrl+O
|
||||
# does not have any sources.
|
||||
sources.noSourcesAvailable=This page has no sources
|
||||
|
||||
# LOCALIZATION NOTE (sourcesPane.showSourcesTooltip): The tooltip shown when
|
||||
# the user will navigate to the source tree view.
|
||||
sourcesPane.showSourcesTooltip=Show sources
|
||||
|
||||
# LOCALIZATION NOTE (sourcesPane.showOutlineTooltip): The tooltip shown when
|
||||
# the user will navigate to the source outline view.
|
||||
sourcesPane.showOutlineTooltip=Show outline
|
||||
|
||||
# LOCALIZATION NOTE (sourceSearch.search.key2): Key shortcut to open the search
|
||||
# for searching within a the currently opened files in the editor
|
||||
sourceSearch.search.key2=CmdOrCtrl+F
|
||||
@ -310,13 +318,17 @@ editor.jumpToMappedLocation1=Jump to %S location
|
||||
# context menu to disable framework grouping.
|
||||
framework.disableGrouping=Disable Framework Grouping
|
||||
|
||||
# LOCALIZATION NOTE (framework.disableGrouping.accesskey): Access key to toggle
|
||||
# framework grouping from the context menu.
|
||||
framework.disableGrouping.accesskey=u
|
||||
|
||||
# LOCALIZATION NOTE (framework.enableGrouping): This is the text that appears in the
|
||||
# context menu to enable framework grouping.
|
||||
framework.enableGrouping=Enable Framework Grouping
|
||||
|
||||
# LOCALIZATION NOTE (framework.accesskey): Access key to toggle framework grouping from
|
||||
# the context menu.
|
||||
framework.accesskey=u
|
||||
# LOCALIZATION NOTE (framework.enableGrouping.accesskey): Access key to toggle
|
||||
# framework grouping from the context menu.
|
||||
framework.enableGrouping.accesskey=u
|
||||
|
||||
# LOCALIZATION NOTE (generated): Source Map term for a server source location
|
||||
generated=generated
|
||||
@ -392,6 +404,10 @@ sourceFooter.blackbox=Blackbox Source
|
||||
# with the blackbox button
|
||||
sourceFooter.unblackbox=Unblackbox Source
|
||||
|
||||
# LOCALIZATION NOTE (sourceFooter.unblackbox.accesskey): Access key to blackbox
|
||||
# an associated source
|
||||
sourceFooter.unblackbox.accesskey=b
|
||||
|
||||
# LOCALIZATION NOTE (sourceFooter.blackbox.accesskey): Access key to blackbox
|
||||
# an associated source
|
||||
sourceFooter.blackbox.accesskey=b
|
||||
|
@ -39,3 +39,6 @@ pref("devtools.debugger.tabs", "[]");
|
||||
pref("devtools.debugger.pending-selected-location", "{}");
|
||||
pref("devtools.debugger.pending-breakpoints", "[]");
|
||||
pref("devtools.debugger.expressions", "[]");
|
||||
pref("devtools.debugger.file-search-case-sensitive", true);
|
||||
pref("devtools.debugger.file-search-whole-word", false );
|
||||
pref("devtools.debugger.file-search-regex-match", false);
|
||||
|
@ -901,6 +901,13 @@ GLContext::InitWithPrefixImpl(const char* prefix, bool trygl)
|
||||
mMaxRenderbufferSize /= 2;
|
||||
mNeedsTextureSizeChecks = true;
|
||||
}
|
||||
// Bug 1367570. Explicitly set vertex attributes [1,3] to opaque
|
||||
// black because Nvidia doesn't do it for us.
|
||||
if (mVendor == GLVendor::NVIDIA) {
|
||||
for (size_t i = 1; i <= 3; ++i) {
|
||||
mSymbols.fVertexAttrib4f(i, 0, 0, 0, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
if (mWorkAroundDriverBugs &&
|
||||
|
@ -1682,7 +1682,7 @@ static SK_ALWAYS_INLINE void aaa_fill_path(const SkPath& path, const SkIRect& cl
|
||||
rightBound = SkTMin(rightBound, SkIntToFixed(ir.fRight));
|
||||
}
|
||||
|
||||
if (!path.isInverseFillType() && path.isConvex()) {
|
||||
if (!path.isInverseFillType() && path.isConvex() && count >= 2) {
|
||||
SkASSERT(count >= 2); // convex walker does not handle missing right edges
|
||||
aaa_walk_convex_edges(&headEdge, blitter, start_y, stop_y,
|
||||
leftBound, rightBound, isUsingMask);
|
||||
|
@ -467,7 +467,7 @@ void sk_fill_path(const SkPath& path, const SkIRect& clipRect, SkBlitter* blitte
|
||||
proc = PrePostInverseBlitterProc;
|
||||
}
|
||||
|
||||
if (path.isConvex() && (nullptr == proc)) {
|
||||
if (path.isConvex() && (nullptr == proc) && count >= 2) {
|
||||
SkASSERT(count >= 2); // convex walker does not handle missing right edges
|
||||
walk_convex_edges(&headEdge, path.getFillType(), blitter, start_y, stop_y, nullptr);
|
||||
} else {
|
||||
|
@ -138,6 +138,8 @@ static const uint32_t kMinTelemetryIPCWriteLatencyMs = 1;
|
||||
|
||||
// Note: we round the time we spend waiting for a response to the nearest
|
||||
// millisecond. So a min value of 1 ms actually captures from 500us and above.
|
||||
// This is used for both the sending and receiving side telemetry for sync IPC,
|
||||
// (IPC_SYNC_MAIN_LATENCY_MS and IPC_SYNC_RECEIVE_MS).
|
||||
static const uint32_t kMinTelemetrySyncIPCLatencyMs = 1;
|
||||
|
||||
const int32_t MessageChannel::kNoTimeout = INT32_MIN;
|
||||
@ -2019,6 +2021,8 @@ MessageChannel::DispatchSyncMessage(const Message& aMsg, Message*& aReply)
|
||||
{
|
||||
AssertWorkerThread();
|
||||
|
||||
mozilla::TimeStamp start = TimeStamp::Now();
|
||||
|
||||
int nestedLevel = aMsg.nested_level();
|
||||
|
||||
MOZ_RELEASE_ASSERT(nestedLevel == IPC::Message::NOT_NESTED || NS_IsMainThread());
|
||||
@ -2035,6 +2039,13 @@ MessageChannel::DispatchSyncMessage(const Message& aMsg, Message*& aReply)
|
||||
rv = mListener->OnMessageReceived(aMsg, aReply);
|
||||
}
|
||||
|
||||
uint32_t latencyMs = round((TimeStamp::Now() - start).ToMilliseconds());
|
||||
if (latencyMs >= kMinTelemetrySyncIPCLatencyMs) {
|
||||
Telemetry::Accumulate(Telemetry::IPC_SYNC_RECEIVE_MS,
|
||||
nsDependentCString(aMsg.name()),
|
||||
latencyMs);
|
||||
}
|
||||
|
||||
if (!MaybeHandleError(rv, aMsg, "DispatchSyncMessage")) {
|
||||
aReply = new Message();
|
||||
aReply->set_sync();
|
||||
|
@ -283,7 +283,7 @@ ProcessLink::OnChannelOpened()
|
||||
mExistingListener = mTransport->set_listener(this);
|
||||
#ifdef DEBUG
|
||||
if (mExistingListener) {
|
||||
queue<Message> pending;
|
||||
std::queue<Message> pending;
|
||||
mExistingListener->GetQueuedMessages(pending);
|
||||
MOZ_ASSERT(pending.empty());
|
||||
}
|
||||
@ -300,7 +300,7 @@ ProcessLink::OnTakeConnectedChannel()
|
||||
{
|
||||
AssertIOThread();
|
||||
|
||||
queue<Message> pending;
|
||||
std::queue<Message> pending;
|
||||
{
|
||||
MonitorAutoLock lock(*mChan->mMonitor);
|
||||
|
||||
|
@ -1013,6 +1013,8 @@ nsFrame::DidSetStyleContext(nsStyleContext* aOldStyleContext)
|
||||
|
||||
RemoveStateBits(NS_FRAME_SIMPLE_EVENT_REGIONS |
|
||||
NS_FRAME_SIMPLE_DISPLAYLIST);
|
||||
|
||||
mMayHaveRoundedCorners = true;
|
||||
}
|
||||
|
||||
void
|
||||
@ -1587,6 +1589,11 @@ nsIFrame::OutsetBorderRadii(nscoord aRadii[8], const nsMargin &aOffsets)
|
||||
nsIFrame::GetBorderRadii(const nsSize& aFrameSize, const nsSize& aBorderArea,
|
||||
Sides aSkipSides, nscoord aRadii[8]) const
|
||||
{
|
||||
if (!mMayHaveRoundedCorners) {
|
||||
memset(aRadii, 0, sizeof(nscoord) * 8);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (IsThemed()) {
|
||||
// When we're themed, the native theme code draws the border and
|
||||
// background, and therefore it doesn't make sense to tell other
|
||||
@ -1600,9 +1607,12 @@ nsIFrame::GetBorderRadii(const nsSize& aFrameSize, const nsSize& aBorderArea,
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return ComputeBorderRadii(StyleBorder()->mBorderRadius,
|
||||
aFrameSize, aBorderArea,
|
||||
aSkipSides, aRadii);
|
||||
|
||||
const_cast<nsIFrame*>(this)->mMayHaveRoundedCorners =
|
||||
ComputeBorderRadii(StyleBorder()->mBorderRadius,
|
||||
aFrameSize, aBorderArea,
|
||||
aSkipSides, aRadii);
|
||||
return mMayHaveRoundedCorners;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -616,6 +616,7 @@ public:
|
||||
, mPrevSibling(nullptr)
|
||||
, mState(NS_FRAME_FIRST_REFLOW | NS_FRAME_IS_DIRTY)
|
||||
, mClass(aID)
|
||||
, mMayHaveRoundedCorners(false)
|
||||
{
|
||||
mozilla::PodZero(&mOverflow);
|
||||
}
|
||||
@ -3921,6 +3922,9 @@ protected:
|
||||
/** The ClassID of the concrete class of this instance. */
|
||||
ClassID mClass; // 1 byte
|
||||
|
||||
bool mMayHaveRoundedCorners : 1;
|
||||
// There should be a 15-bit gap left here.
|
||||
|
||||
// Helpers
|
||||
/**
|
||||
* Can we stop inside this frame when we're skipping non-rendered whitespace?
|
||||
|
@ -167,30 +167,6 @@ ComputeLinearRGBLuminanceMask(const uint8_t *aSourceData,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ComputeAlphaMask(const uint8_t *aSourceData,
|
||||
int32_t aSourceStride,
|
||||
uint8_t *aDestData,
|
||||
int32_t aDestStride,
|
||||
const IntSize &aSize,
|
||||
float aOpacity)
|
||||
{
|
||||
int32_t sourceOffset = aSourceStride - 4 * aSize.width;
|
||||
const uint8_t *sourcePixel = aSourceData;
|
||||
int32_t destOffset = aDestStride - aSize.width;
|
||||
uint8_t *destPixel = aDestData;
|
||||
|
||||
for (int32_t y = 0; y < aSize.height; y++) {
|
||||
for (int32_t x = 0; x < aSize.width; x++) {
|
||||
*destPixel = sourcePixel[GFX_ARGB32_OFFSET_A] * aOpacity;
|
||||
sourcePixel += 4;
|
||||
destPixel++;
|
||||
}
|
||||
sourcePixel += sourceOffset;
|
||||
destPixel += destOffset;
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------------------
|
||||
// Implementation
|
||||
|
||||
@ -236,9 +212,22 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams)
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
RefPtr<DrawTarget> maskDT =
|
||||
gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
|
||||
maskSurfaceSize, SurfaceFormat::B8G8R8A8);
|
||||
uint8_t maskType;
|
||||
if (aParams.maskMode == NS_STYLE_MASK_MODE_MATCH_SOURCE) {
|
||||
maskType = StyleSVGReset()->mMaskType;
|
||||
} else {
|
||||
maskType = aParams.maskMode == NS_STYLE_MASK_MODE_LUMINANCE
|
||||
? NS_STYLE_MASK_TYPE_LUMINANCE : NS_STYLE_MASK_TYPE_ALPHA;
|
||||
}
|
||||
|
||||
RefPtr<DrawTarget> maskDT;
|
||||
if (maskType == NS_STYLE_MASK_TYPE_LUMINANCE) {
|
||||
maskDT = gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
|
||||
maskSurfaceSize, SurfaceFormat::B8G8R8A8);
|
||||
} else {
|
||||
maskDT = gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
|
||||
maskSurfaceSize, SurfaceFormat::A8);
|
||||
}
|
||||
|
||||
if (!maskDT || !maskDT->IsValid()) {
|
||||
return nullptr;
|
||||
@ -269,37 +258,30 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams)
|
||||
nsSVGUtils::PaintFrameWithEffects(kid, *tmpCtx, m, aParams.imgParams);
|
||||
}
|
||||
|
||||
RefPtr<SourceSurface> maskSnapshot = maskDT->Snapshot();
|
||||
if (!maskSnapshot) {
|
||||
return nullptr;
|
||||
}
|
||||
RefPtr<DataSourceSurface> maskSurface = maskSnapshot->GetDataSurface();
|
||||
DataSourceSurface::MappedSurface map;
|
||||
if (!maskSurface ||
|
||||
!maskSurface->Map(DataSourceSurface::MapType::READ, &map)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Create alpha channel mask for output
|
||||
RefPtr<DataSourceSurface> destMaskSurface =
|
||||
Factory::CreateDataSourceSurface(maskSurfaceSize, SurfaceFormat::A8);
|
||||
if (!destMaskSurface) {
|
||||
return nullptr;
|
||||
}
|
||||
DataSourceSurface::MappedSurface destMap;
|
||||
if (!destMaskSurface->Map(DataSourceSurface::MapType::WRITE, &destMap)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
uint8_t maskType;
|
||||
if (aParams.maskMode == NS_STYLE_MASK_MODE_MATCH_SOURCE) {
|
||||
maskType = StyleSVGReset()->mMaskType;
|
||||
} else {
|
||||
maskType = aParams.maskMode == NS_STYLE_MASK_MODE_LUMINANCE
|
||||
? NS_STYLE_MASK_TYPE_LUMINANCE : NS_STYLE_MASK_TYPE_ALPHA;
|
||||
}
|
||||
|
||||
RefPtr<SourceSurface> surface;
|
||||
if (maskType == NS_STYLE_MASK_TYPE_LUMINANCE) {
|
||||
RefPtr<SourceSurface> maskSnapshot = maskDT->Snapshot();
|
||||
if (!maskSnapshot) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
RefPtr<DataSourceSurface> maskSurface = maskSnapshot->GetDataSurface();
|
||||
DataSourceSurface::MappedSurface map;
|
||||
if (!maskSurface->Map(DataSourceSurface::MapType::READ, &map)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Create alpha channel mask for output
|
||||
RefPtr<DataSourceSurface> destMaskSurface =
|
||||
Factory::CreateDataSourceSurface(maskSurfaceSize, SurfaceFormat::A8);
|
||||
if (!destMaskSurface) {
|
||||
return nullptr;
|
||||
}
|
||||
DataSourceSurface::MappedSurface destMap;
|
||||
if (!destMaskSurface->Map(DataSourceSurface::MapType::WRITE, &destMap)) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
if (StyleSVG()->mColorInterpolation ==
|
||||
NS_STYLE_COLOR_INTERPOLATION_LINEARRGB) {
|
||||
ComputeLinearRGBLuminanceMask(map.mData, map.mStride,
|
||||
@ -310,14 +292,19 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams)
|
||||
destMap.mData, destMap.mStride,
|
||||
maskSurfaceSize, aParams.opacity);
|
||||
}
|
||||
} else {
|
||||
ComputeAlphaMask(map.mData, map.mStride,
|
||||
destMap.mData, destMap.mStride,
|
||||
maskSurfaceSize, aParams.opacity);
|
||||
}
|
||||
|
||||
maskSurface->Unmap();
|
||||
destMaskSurface->Unmap();
|
||||
maskSurface->Unmap();
|
||||
destMaskSurface->Unmap();
|
||||
surface = destMaskSurface.forget();
|
||||
} else {
|
||||
maskDT->SetTransform(Matrix());
|
||||
maskDT->FillRect(Rect(0, 0, maskSurfaceSize.width, maskSurfaceSize.height), ColorPattern(Color(1.0f, 1.0f, 1.0f, aParams.opacity)), DrawOptions(1, CompositionOp::OP_IN));
|
||||
RefPtr<SourceSurface> maskSnapshot = maskDT->Snapshot();
|
||||
if (!maskSnapshot) {
|
||||
return nullptr;
|
||||
}
|
||||
surface = maskSnapshot.forget();
|
||||
}
|
||||
|
||||
// Moz2D transforms in the opposite direction to Thebes
|
||||
if (!maskSurfaceMatrix.Invert()) {
|
||||
@ -325,7 +312,7 @@ nsSVGMaskFrame::GetMaskForMaskedFrame(MaskParams& aParams)
|
||||
}
|
||||
|
||||
*aParams.maskTransform = ToMatrix(maskSurfaceMatrix);
|
||||
return destMaskSurface.forget();
|
||||
return surface.forget();
|
||||
}
|
||||
|
||||
gfxRect
|
||||
|
@ -1245,8 +1245,8 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
|
||||
mSpoofReferrerSource = cVar;
|
||||
}
|
||||
|
||||
if (PREF_CHANGED(HTTP_PREF("referer.spoofOnionSource"))) {
|
||||
rv = prefs->GetBoolPref(HTTP_PREF("referer.spoofOnionSource"), &cVar);
|
||||
if (PREF_CHANGED(HTTP_PREF("referer.hideOnionSource"))) {
|
||||
rv = prefs->GetBoolPref(HTTP_PREF("referer.hideOnionSource"), &cVar);
|
||||
if (NS_SUCCEEDED(rv))
|
||||
mHideOnionReferrerSource = cVar;
|
||||
}
|
||||
|
@ -264,7 +264,7 @@ class BaseBootstrapper(object):
|
||||
'%s does not yet implement suggest_mobile_android_artifact_mode_mozconfig()'
|
||||
% __name__)
|
||||
|
||||
def ensure_stylo_packages(self, state_dir):
|
||||
def ensure_stylo_packages(self, state_dir, checkout_root):
|
||||
'''
|
||||
Install any necessary packages needed for Stylo development.
|
||||
'''
|
||||
@ -272,52 +272,24 @@ class BaseBootstrapper(object):
|
||||
'%s does not yet implement ensure_stylo_packages()'
|
||||
% __name__)
|
||||
|
||||
def install_tooltool_clang_package(self, state_dir,
|
||||
package_filename, package_sha512sum):
|
||||
TOOLTOOL_API = 'https://api.pub.build.mozilla.org/tooltool/sha512/'
|
||||
def install_tooltool_clang_package(self, state_dir, checkout_root, manifest_file):
|
||||
abs_manifest_file = os.path.join(checkout_root, manifest_file)
|
||||
|
||||
# XXX this is similar to the Android NDK download. We should unify them.
|
||||
download_path = os.path.join(state_dir, 'mozboot')
|
||||
try:
|
||||
os.makedirs(download_path)
|
||||
except OSError as e:
|
||||
if e.errno == errno.EEXIST and os.path.isdir(download_path):
|
||||
pass
|
||||
else:
|
||||
raise
|
||||
mach_binary = os.path.join(checkout_root, 'mach')
|
||||
if not os.path.exists(mach_binary):
|
||||
raise ValueError("mach not found at %s" % mach_binary)
|
||||
|
||||
try:
|
||||
package_url = TOOLTOOL_API + package_sha512sum
|
||||
downloaded_filename = os.path.join(download_path, package_sha512sum)
|
||||
print('Downloading clang package from', package_url)
|
||||
self.http_download_and_save(package_url, downloaded_filename,
|
||||
package_sha512sum, 'sha512')
|
||||
# If Python can't figure out what its own executable is, there's little
|
||||
# chance we're going to be able to execute mach on its own, particularly
|
||||
# on Windows.
|
||||
if not sys.executable:
|
||||
raise ValueError("cannot determine path to Python executable")
|
||||
|
||||
# We don't have to handle a great variety of archive types here.
|
||||
if package_filename.endswith('tar.gz'):
|
||||
cmd = ['tar', 'zxf', downloaded_filename]
|
||||
elif package_filename.endswith('.tar.bz2'):
|
||||
cmd = ['tar', 'jxf', downloaded_filename]
|
||||
elif package_filename.endswith('.tar.xz'):
|
||||
cmd = ['tar', 'Jxf', downloaded_filename]
|
||||
else:
|
||||
raise NotImplementedError("Don't know how to unpack file: %s"
|
||||
% package_filename)
|
||||
cmd = [sys.executable, mach_binary, 'artifact', 'toolchain',
|
||||
'--tooltool-manifest', abs_manifest_file,
|
||||
'clang']
|
||||
|
||||
print('Download complete!')
|
||||
print('Unpacking %s...' % downloaded_filename)
|
||||
|
||||
with open(os.devnull, 'w') as stdout:
|
||||
subprocess.check_call(cmd, stdout=stdout, cwd=state_dir)
|
||||
|
||||
print('Unpacking %s...DONE' % downloaded_filename)
|
||||
|
||||
finally:
|
||||
try:
|
||||
os.remove(downloaded_filename)
|
||||
except OSError as e:
|
||||
if e.errno != errno.ENOENT:
|
||||
raise
|
||||
subprocess.check_call(cmd, cwd=state_dir)
|
||||
|
||||
def which(self, name):
|
||||
"""Python implementation of which.
|
||||
|
@ -113,6 +113,12 @@ On this machine, that directory is:
|
||||
Please restart bootstrap and create that directory when prompted.
|
||||
'''
|
||||
|
||||
STYLO_REQUIRES_CLONE = '''
|
||||
Installing Stylo packages requires a checkout of mozilla-central. Once you
|
||||
have such a checkout, please re-run `./mach bootstrap` from the checkout
|
||||
directory.
|
||||
'''
|
||||
|
||||
FINISHED = '''
|
||||
Your system should be ready to build %s!
|
||||
'''
|
||||
@ -272,30 +278,9 @@ class Bootstrapper(object):
|
||||
|
||||
state_dir_available = os.path.exists(state_dir)
|
||||
|
||||
# Install the clang packages needed for developing stylo.
|
||||
if not self.instance.no_interactive:
|
||||
choice = self.instance.prompt_int(
|
||||
prompt=STYLO_DEVELOPMENT_INFO,
|
||||
low=1,
|
||||
high=2)
|
||||
|
||||
# The best place to install our packages is in the state directory
|
||||
# we have. If the user doesn't have one, we need them to re-run
|
||||
# bootstrap and create the directory.
|
||||
#
|
||||
# XXX Android bootstrap just assumes the existence of the state
|
||||
# directory and writes the NDK into it. Should we do the same?
|
||||
if choice == 1:
|
||||
if not state_dir_available:
|
||||
print(STYLO_DIRECTORY_MESSAGE.format(statedir=state_dir))
|
||||
sys.exit(1)
|
||||
|
||||
self.instance.stylo = True
|
||||
self.instance.state_dir = state_dir
|
||||
self.instance.ensure_stylo_packages(state_dir)
|
||||
|
||||
checkout_type = current_firefox_checkout(check_output=self.instance.check_output,
|
||||
hg=self.instance.which('hg'))
|
||||
r = current_firefox_checkout(check_output=self.instance.check_output,
|
||||
hg=self.instance.which('hg'))
|
||||
(checkout_type, checkout_root) = r
|
||||
|
||||
# Possibly configure Mercurial, but not if the current checkout is Git.
|
||||
# TODO offer to configure Git.
|
||||
@ -323,10 +308,37 @@ class Bootstrapper(object):
|
||||
if dest:
|
||||
dest = os.path.expanduser(dest)
|
||||
have_clone = clone_firefox(self.instance.which('hg'), dest)
|
||||
checkout_root = dest
|
||||
|
||||
if not have_clone:
|
||||
print(SOURCE_ADVERTISE)
|
||||
|
||||
# Install the clang packages needed for developing stylo.
|
||||
if not self.instance.no_interactive:
|
||||
choice = self.instance.prompt_int(
|
||||
prompt=STYLO_DEVELOPMENT_INFO,
|
||||
low=1,
|
||||
high=2)
|
||||
|
||||
# The best place to install our packages is in the state directory
|
||||
# we have. If the user doesn't have one, we need them to re-run
|
||||
# bootstrap and create the directory.
|
||||
#
|
||||
# XXX Android bootstrap just assumes the existence of the state
|
||||
# directory and writes the NDK into it. Should we do the same?
|
||||
wants_stylo = choice == 1
|
||||
if wants_stylo and not state_dir_available:
|
||||
print(STYLO_DIRECTORY_MESSAGE.format(statedir=state_dir))
|
||||
sys.exit(1)
|
||||
|
||||
if wants_stylo and not have_clone:
|
||||
print(STYLO_REQUIRES_CLONE)
|
||||
sys.exit(1)
|
||||
|
||||
self.instance.stylo = True
|
||||
self.instance.state_dir = state_dir
|
||||
self.instance.ensure_stylo_packages(state_dir, checkout_root)
|
||||
|
||||
print(self.finished % name)
|
||||
if not (self.instance.which('rustc') and self.instance._parse_version('rustc') >= MODERN_RUST_VERSION):
|
||||
print("To build %s, please restart the shell (Start a new terminal window)" % name)
|
||||
@ -466,7 +478,7 @@ def current_firefox_checkout(check_output, hg=None):
|
||||
try:
|
||||
node = check_output([hg, 'log', '-r', '0', '--template', '{node}'], cwd=path)
|
||||
if node in HG_ROOT_REVISIONS:
|
||||
return 'hg'
|
||||
return ('hg', path)
|
||||
# Else the root revision is different. There could be nested
|
||||
# repos. So keep traversing the parents.
|
||||
except subprocess.CalledProcessError:
|
||||
@ -475,10 +487,10 @@ def current_firefox_checkout(check_output, hg=None):
|
||||
# TODO check git remotes or `git rev-parse -q --verify $sha1^{commit}`
|
||||
# for signs of Firefox.
|
||||
elif os.path.exists(git_dir):
|
||||
return 'git'
|
||||
return ('git', path)
|
||||
|
||||
path, child = os.path.split(path)
|
||||
if child == '':
|
||||
break
|
||||
|
||||
return None
|
||||
return (None, None)
|
||||
|
@ -70,7 +70,7 @@ class FreeBSDBootstrapper(BaseBootstrapper):
|
||||
# TODO: Figure out what not to install for artifact mode
|
||||
self.pkg_install(*self.browser_packages)
|
||||
|
||||
def ensure_stylo_packages(self, state_dir):
|
||||
def ensure_stylo_packages(self, state_dir, checkout_root):
|
||||
self.pkg_install('llvm40')
|
||||
|
||||
def suggest_browser_mozconfig(self):
|
||||
|
@ -9,6 +9,6 @@ class StyloInstall(object):
|
||||
def __init__(self, **kwargs):
|
||||
pass
|
||||
|
||||
def ensure_stylo_packages(self, state_dir):
|
||||
def ensure_stylo_packages(self, state_dir, checkout_root):
|
||||
import stylo
|
||||
self.install_tooltool_clang_package(state_dir, **stylo.LINUX)
|
||||
self.install_tooltool_clang_package(state_dir, checkout_root, stylo.LINUX)
|
||||
|
@ -17,8 +17,8 @@ To enable Stylo in your builds, paste the lines between the chevrons
|
||||
<<<
|
||||
ac_add_options --enable-stylo
|
||||
|
||||
ac_add_options --with-libclang-path={state_dir}/clang/lib
|
||||
ac_add_options --with-clang-path={state_dir}/clang/bin/clang.exe
|
||||
ac_add_options --with-libclang-path="{state_dir}/clang/bin"
|
||||
ac_add_options --with-clang-path="{state_dir}/clang/bin/clang.exe"
|
||||
>>>
|
||||
'''
|
||||
|
||||
@ -89,9 +89,9 @@ class MozillaBuildBootstrapper(BaseBootstrapper):
|
||||
if self.stylo:
|
||||
print(STYLO_MOZCONFIG.format(state_dir=self.state_dir))
|
||||
|
||||
def ensure_stylo_packages(self, state_dir):
|
||||
def ensure_stylo_packages(self, state_dir, checkout_root):
|
||||
import stylo
|
||||
self.install_tooltool_clang_package(state_dir, **stylo.WINDOWS)
|
||||
self.install_tooltool_clang_package(state_dir, checkout_root, stylo.WINDOWS)
|
||||
|
||||
def _update_package_manager(self):
|
||||
pass
|
||||
|
@ -521,9 +521,9 @@ class OSXBootstrapper(BaseBootstrapper):
|
||||
|
||||
return active_name.lower()
|
||||
|
||||
def ensure_stylo_packages(self, state_dir):
|
||||
def ensure_stylo_packages(self, state_dir, checkout_root):
|
||||
import stylo
|
||||
self.install_tooltool_clang_package(state_dir, **stylo.OSX)
|
||||
self.install_tooltool_clang_package(state_dir, checkout_root, stylo.OSX)
|
||||
|
||||
def install_homebrew(self):
|
||||
print(PACKAGE_MANAGER_INSTALL % ('Homebrew', 'Homebrew', 'Homebrew', 'brew'))
|
||||
|
@ -4,67 +4,6 @@
|
||||
|
||||
from __future__ import print_function, unicode_literals
|
||||
|
||||
# Tooltool packages generated from the script below.
|
||||
WINDOWS = {
|
||||
'package_filename': 'clang.tar.bz2',
|
||||
'package_sha512sum': 'cd3ed31acefd185f441632158dde73538c62bab7ebf2a8ec630985ab345938ec522983721ddb1bead1de22d5ac1571d50a958ae002364d739f2a78c6e7244222',
|
||||
}
|
||||
|
||||
OSX = {
|
||||
'package_filename': 'clang.tar.bz2',
|
||||
'package_sha512sum': '0e1a556b65d6398fa812b9ceb5ce5e2dec3eda77d4a032a818182b34fc8ce602412f42388bb1fda6bea265d35c1dde3847a730b264fec01cd7e3dcfd39941660',
|
||||
}
|
||||
|
||||
LINUX = {
|
||||
'package_filename': 'clang.tar.xz',
|
||||
'package_sha512sum': '52f3fc23f0f5c98050f8b0ac7c92a6752d067582a16f712a5a58074be98975d594f9e36249fc2be7f1cc2ca6d509c663faaf2bea66f949243cc1f41651638ba6',
|
||||
}
|
||||
|
||||
if __name__ == '__main__':
|
||||
'''Allow invoking the module as a utility to update tooltool downloads.'''
|
||||
import json
|
||||
import os
|
||||
import sys
|
||||
|
||||
mod_path = os.path.dirname(__file__)
|
||||
browser_config_dir = os.path.join('browser', 'config', 'tooltool-manifests')
|
||||
|
||||
os_map = {
|
||||
'WINDOWS': ('win64', 'clang.manifest'),
|
||||
'OSX': ('macosx64', 'releng.manifest'),
|
||||
'LINUX': ('linux64', 'releng.manifest'),
|
||||
}
|
||||
|
||||
for os_name, (os_dir, f) in os_map.iteritems():
|
||||
manifest_file = os.path.join(browser_config_dir, os_dir, f)
|
||||
abspath = os.path.join(mod_path, '..', '..', '..', manifest_file)
|
||||
with open(abspath, 'r') as s:
|
||||
manifest = json.load(s)
|
||||
entries = filter(lambda x: x['filename'].startswith('clang'), manifest)
|
||||
if not entries:
|
||||
print('ERROR: could not find clang tooltool entry in %s' % manifest_file)
|
||||
sys.exit(1)
|
||||
if len(entries) > 1:
|
||||
print('ERROR: too many clang entries in %s' % manifest_file)
|
||||
sys.exit(1)
|
||||
|
||||
clang = entries[0]
|
||||
if clang['algorithm'] != 'sha512':
|
||||
print("ERROR: don't know how to handle digest %s in %s" % (clang['algorithm'],
|
||||
manifest_file))
|
||||
sys.exit(1)
|
||||
|
||||
FORMAT_STRING = """{os} = {{
|
||||
'package_filename': '{filename}',
|
||||
'package_sha512sum': '{digest}',
|
||||
}}
|
||||
"""
|
||||
digest = clang['digest']
|
||||
if os_name == 'WINDOWS':
|
||||
# The only clang version we can retrieve from the tooltool manifest
|
||||
# doesn't work with Stylo bindgen due to regressions in LLVM. This
|
||||
# is an older version that works.
|
||||
digest = 'cd3ed31acefd185f441632158dde73538c62bab7ebf2a8ec630985ab345938ec522983721ddb1bead1de22d5ac1571d50a958ae002364d739f2a78c6e7244222'
|
||||
print(FORMAT_STRING.format(os=os_name,
|
||||
filename=clang['filename'],
|
||||
digest=digest))
|
||||
WINDOWS = 'browser/config/tooltool-manifests/win64/clang.manifest'
|
||||
OSX = 'browser/config/tooltool-manifests/macosx64/releng.manifest'
|
||||
LINUX = 'browser/config/tooltool-manifests/linux64/clang.manifest'
|
||||
|
@ -15,8 +15,8 @@ To enable Stylo in your builds, paste the lines between the chevrons
|
||||
<<<
|
||||
ac_add_options --enable-stylo
|
||||
|
||||
ac_add_options --with-libclang-path={state_dir}/clang/lib
|
||||
ac_add_options --with-clang-path={state_dir}/clang/bin/clang.exe
|
||||
ac_add_options --with-libclang-path="{state_dir}/clang/bin"
|
||||
ac_add_options --with-clang-path="{state_dir}/clang/bin/clang.exe"
|
||||
>>>
|
||||
'''
|
||||
|
||||
@ -84,9 +84,9 @@ class WindowsBootstrapper(BaseBootstrapper):
|
||||
if self.stylo:
|
||||
print(STYLO_MOZCONFIG.format(state_dir=self.state_dir))
|
||||
|
||||
def ensure_stylo_packages(self, state_dir):
|
||||
def ensure_stylo_packages(self, state_dir, checkout_root):
|
||||
import stylo
|
||||
self.install_tooltool_clang_package(state_dir, **stylo.WINDOWS)
|
||||
self.install_tooltool_clang_package(state_dir, checkout_root, stylo.WINDOWS)
|
||||
|
||||
def _update_package_manager(self):
|
||||
self.pacman_update()
|
||||
|
@ -1308,6 +1308,7 @@ talos-g2:
|
||||
run-on-projects:
|
||||
by-test-platform:
|
||||
linux64-stylo/.*: ['mozilla-central', 'try']
|
||||
linux64-stylo-sequential/.*: ['try']
|
||||
default: ['mozilla-beta', 'mozilla-aurora', 'mozilla-central', 'mozilla-inbound', 'autoland', 'try']
|
||||
e10s: true
|
||||
mozharness:
|
||||
|
@ -15,11 +15,10 @@ from taskgraph.transforms.task import task_description_schema
|
||||
from voluptuous import Any, Required, Optional
|
||||
|
||||
|
||||
# For developers: if you are adding any new artifacts here that need to be
|
||||
# transfered to S3, please be aware you also need to follow-up with patch in
|
||||
# the actual beetmoverscript logic that lies under
|
||||
# https://github.com/mozilla-releng/beetmoverscript/. See example in bug
|
||||
# 1348286
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US = [
|
||||
"balrog_props.json",
|
||||
"target.common.tests.zip",
|
||||
@ -42,16 +41,32 @@ _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US = [
|
||||
"host/bin/mar",
|
||||
"host/bin/mbsdiff",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_EN_US = [
|
||||
"update/target.complete.mar",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_L10N = [
|
||||
"target.langpack.xpi",
|
||||
"balrog_props.json",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_L10N = [
|
||||
"target.complete.mar",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US = [
|
||||
"en-US/target.common.tests.zip",
|
||||
"en-US/target.cppunittest.tests.zip",
|
||||
@ -72,6 +87,10 @@ _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US = [
|
||||
"en-US/robocop.apk",
|
||||
"en-US/target.jsshell.zip",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_MULTI = [
|
||||
"balrog_props.json",
|
||||
"target.common.tests.zip",
|
||||
@ -92,14 +111,26 @@ _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_MULTI = [
|
||||
"robocop.apk",
|
||||
"target.jsshell.zip",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_MOBILE_UPSTREAM_ARTIFACTS_SIGNED_EN_US = [
|
||||
"en-US/target.apk",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_MOBILE_UPSTREAM_ARTIFACTS_SIGNED_MULTI = [
|
||||
"target.apk",
|
||||
]
|
||||
|
||||
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
UPSTREAM_ARTIFACT_UNSIGNED_PATHS = {
|
||||
'linux64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
|
||||
'linux-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
|
||||
@ -122,6 +153,10 @@ UPSTREAM_ARTIFACT_UNSIGNED_PATHS = {
|
||||
'android-api-15-old-id-nightly-multi': _MOBILE_UPSTREAM_ARTIFACTS_UNSIGNED_MULTI,
|
||||
'macosx64-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_L10N,
|
||||
}
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
UPSTREAM_ARTIFACT_SIGNED_PATHS = {
|
||||
'linux64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_EN_US + [
|
||||
"target.tar.bz2",
|
||||
|
@ -92,6 +92,10 @@ def make_beetmover_checksums_description(config, jobs):
|
||||
|
||||
|
||||
def generate_upstream_artifacts(refs, platform, locale=None):
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
common_paths = [
|
||||
"public/target.checksums",
|
||||
"public/target.checksums.asc",
|
||||
|
@ -17,11 +17,10 @@ from voluptuous import Any, Required, Optional
|
||||
import logging
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
# For developers: if you are adding any new artifacts here that need to be
|
||||
# transfered to S3, please be aware you also need to follow-up with patch in
|
||||
# the actual beetmoverscript logic that lies under
|
||||
# https://github.com/mozilla-releng/beetmoverscript/. See example in bug
|
||||
# 1348286
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US = [
|
||||
"balrog_props.json",
|
||||
"target.common.tests.zip",
|
||||
@ -44,25 +43,49 @@ _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US = [
|
||||
"host/bin/mar",
|
||||
"host/bin/mbsdiff",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_EN_US = [
|
||||
"update/target.complete.mar",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_L10N = [
|
||||
"target.langpack.xpi",
|
||||
"balrog_props.json",
|
||||
]
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
_DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_L10N = [
|
||||
"target.complete.mar",
|
||||
]
|
||||
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
UPSTREAM_ARTIFACT_UNSIGNED_PATHS = {
|
||||
'macosx64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_EN_US,
|
||||
'macosx64-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_UNSIGNED_L10N,
|
||||
}
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
UPSTREAM_ARTIFACT_SIGNED_PATHS = {
|
||||
'macosx64-nightly': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_EN_US,
|
||||
'macosx64-nightly-l10n': _DESKTOP_UPSTREAM_ARTIFACTS_SIGNED_L10N,
|
||||
}
|
||||
# Until bug 1331141 is fixed, if you are adding any new artifacts here that
|
||||
# need to be transfered to S3, please be aware you also need to follow-up
|
||||
# with a beetmover patch in https://github.com/mozilla-releng/beetmoverscript/.
|
||||
# See example in bug 1348286
|
||||
UPSTREAM_ARTIFACT_REPACKAGE_PATHS = {
|
||||
'macosx64-nightly': ["target.dmg"],
|
||||
'macosx64-nightly-l10n': ["target.dmg"],
|
||||
|
@ -1,3 +1,5 @@
|
||||
[display-none.html]
|
||||
type: testharness
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1358668
|
||||
[Intersecting notification after first rAF.]
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359318
|
||||
|
@ -1,3 +1,5 @@
|
||||
[multiple-thresholds.html]
|
||||
type: testharness
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359318
|
||||
[First rAF.]
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
|
@ -1,3 +1,5 @@
|
||||
[root-margin.html]
|
||||
type: testharness
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359318
|
||||
[First rAF.]
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
|
@ -1,3 +1,5 @@
|
||||
[same-document-no-root.html]
|
||||
type: testharness
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359318
|
||||
[First rAF.]
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
|
@ -1,3 +1,5 @@
|
||||
[same-document-zero-size-target.html]
|
||||
type: testharness
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
disabled: https://bugzilla.mozilla.org/show_bug.cgi?id=1359318
|
||||
[First rAF.]
|
||||
https://bugzilla.mozilla.org/show_bug.cgi?id=1335644
|
||||
|
@ -13233,5 +13233,17 @@
|
||||
"n_buckets": 100,
|
||||
"bug_numbers": [1366640],
|
||||
"description": "Time (ms) VideoFrameContainer::ClearFutureFrames spent holding a lock."
|
||||
},
|
||||
"IPC_SYNC_RECEIVE_MS": {
|
||||
"record_in_processes": ["main", "content", "gpu"],
|
||||
"alert_emails": ["michael@thelayzells.com"],
|
||||
"bug_numbers": [1365719],
|
||||
"expires_in_version": "60",
|
||||
"kind": "exponential",
|
||||
"low": 32,
|
||||
"high": 750,
|
||||
"n_buckets": 40,
|
||||
"keyed": true,
|
||||
"description": "Measures the number of milliseconds we spend processing sync IPC messages in the receiving process, keyed by message name. Note: only messages that take over 500 microseconds are included in this probe."
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user