mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-09 17:31:47 +09:00
Merge remote-tracking branch 'origin/tracking' into custom
This commit is contained in:
commit
629eeda1f1
28 changed files with 25688 additions and 13368 deletions
|
|
@ -17,12 +17,6 @@
|
|||
# define MOZ_INCLUDE_MOZALLOC_H_FROM_${HEADER}
|
||||
#endif
|
||||
|
||||
// Code built with !_HAS_EXCEPTIONS calls std::_Throw(), but the win2k
|
||||
// CRT doesn't export std::_Throw(). So we define it.
|
||||
#ifndef mozilla_Throw_h
|
||||
# include "mozilla/throw_msvc.h"
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
// From
|
||||
// http://msdn.microsoft.com/en-us/library/aa985982%28VS.80%29.aspx
|
||||
|
|
|
|||
37490
db/sqlite3/src/sqlite3.c
37490
db/sqlite3/src/sqlite3.c
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -16,10 +16,6 @@ if CONFIG['WRAP_STL_INCLUDES']:
|
|||
elif CONFIG['_MSC_VER']:
|
||||
DEFINES['_HAS_EXCEPTIONS'] = 0
|
||||
if CONFIG['MOZ_MSVC_STL_WRAP_RAISE']:
|
||||
EXPORTS.mozilla += [
|
||||
'msvc_raise_wrappers.h',
|
||||
'throw_msvc.h',
|
||||
]
|
||||
SOURCES += [
|
||||
'msvc_raise_wrappers.cpp',
|
||||
]
|
||||
|
|
|
|||
|
|
@ -3,59 +3,18 @@
|
|||
* 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/. */
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
#include <exception>
|
||||
#include "mozalloc_abort.h"
|
||||
|
||||
__declspec(noreturn) static void abort_from_exception(const char* const which,
|
||||
const char* const what);
|
||||
static void
|
||||
abort_from_exception(const char* const which, const char* const what)
|
||||
{
|
||||
fprintf(stderr, "fatal: STL threw %s: ", which);
|
||||
mozalloc_abort(what);
|
||||
}
|
||||
|
||||
namespace std {
|
||||
|
||||
// NB: user code is not supposed to touch the std:: namespace. We're
|
||||
// doing this after careful review because we want to define our own
|
||||
// exception throwing semantics. Don't try this at home!
|
||||
|
||||
MFBT_API __declspec(noreturn) void
|
||||
moz_Xinvalid_argument(const char* what)
|
||||
{
|
||||
abort_from_exception("invalid_argument", what);
|
||||
}
|
||||
|
||||
MFBT_API __declspec(noreturn) void
|
||||
moz_Xlength_error(const char* what)
|
||||
{
|
||||
abort_from_exception("length_error", what);
|
||||
}
|
||||
|
||||
MFBT_API __declspec(noreturn) void
|
||||
moz_Xout_of_range(const char* what)
|
||||
{
|
||||
abort_from_exception("out_of_range", what);
|
||||
}
|
||||
|
||||
MFBT_API __declspec(noreturn) void
|
||||
moz_Xoverflow_error(const char* what)
|
||||
{
|
||||
abort_from_exception("overflow_error", what);
|
||||
}
|
||||
|
||||
MFBT_API __declspec(noreturn) void
|
||||
moz_Xruntime_error(const char* what)
|
||||
{
|
||||
abort_from_exception("runtime_error", what);
|
||||
}
|
||||
|
||||
MFBT_API __declspec(noreturn) void
|
||||
moz_Xbad_function_call()
|
||||
{
|
||||
static void __cdecl
|
||||
RaiseHandler(const std::exception& e)
|
||||
{
|
||||
abort_from_exception("bad_function_call", "bad function call");
|
||||
}
|
||||
mozalloc_abort(e.what());
|
||||
}
|
||||
|
||||
} // namespace std
|
||||
static struct StaticScopeStruct final {
|
||||
StaticScopeStruct() {
|
||||
std::exception::_Set_raise_handler(RaiseHandler);
|
||||
}
|
||||
} StaticScopeInvoke;
|
||||
|
|
|
|||
|
|
@ -1,41 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
* vim: sw=4 ts=4 et :
|
||||
*/
|
||||
/* 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/. */
|
||||
|
||||
#ifndef mozilla_msvc_raise_wrappers_h
|
||||
#define mozilla_msvc_raise_wrappers_h
|
||||
|
||||
#ifdef _XSTDDEF_
|
||||
# error "Unable to wrap _RAISE(); CRT _RAISE() already defined"
|
||||
#endif
|
||||
#ifdef _XUTILITY_
|
||||
# error "Unable to wrap _X[exception](); CRT versions already declared"
|
||||
#endif
|
||||
#ifdef _FUNCTIONAL_
|
||||
# error "Unable to wrap _Xbad_function_call(); CRT version already declared"
|
||||
#endif
|
||||
|
||||
#include "mozilla/mozalloc_abort.h"
|
||||
|
||||
// xutility will declare the following functions in the std namespace.
|
||||
// We #define them to be named differently so we can ensure the exception
|
||||
// throwing semantics of these functions work exactly the way we want, by
|
||||
// defining our own versions in msvc_raise_wrappers.cpp.
|
||||
# define _Xinvalid_argument moz_Xinvalid_argument
|
||||
# define _Xlength_error moz_Xlength_error
|
||||
# define _Xout_of_range moz_Xout_of_range
|
||||
# define _Xoverflow_error moz_Xoverflow_error
|
||||
# define _Xruntime_error moz_Xruntime_error
|
||||
// used by <functional>
|
||||
# define _Xbad_function_call moz_Xbad_function_call
|
||||
|
||||
# include <xstddef>
|
||||
# include <xutility>
|
||||
|
||||
# undef _RAISE
|
||||
# define _RAISE(x) mozalloc_abort((x).what())
|
||||
|
||||
#endif // ifndef mozilla_msvc_raise_wrappers_h
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
|
||||
* vim: sw=4 ts=4 et :
|
||||
*/
|
||||
/* 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/. */
|
||||
|
||||
#ifndef mozilla_throw_msvc_h
|
||||
#define mozilla_throw_msvc_h
|
||||
|
||||
#if defined(MOZ_MSVC_STL_WRAP_RAISE)
|
||||
# include "msvc_raise_wrappers.h"
|
||||
#else
|
||||
# error "Unknown STL wrapper tactic"
|
||||
#endif
|
||||
|
||||
#endif // mozilla_throw_msvc_h
|
||||
|
|
@ -1212,7 +1212,10 @@ pref("dom.sysmsg.enabled", false);
|
|||
// Enable pre-installed applications.
|
||||
pref("dom.webapps.useCurrentProfile", false);
|
||||
|
||||
pref("dom.cycle_collector.incremental", true);
|
||||
// Use incremental cycle collection?
|
||||
// In practice this gave a noticeable performance hit. Default off.
|
||||
// See forum topic https://forum.palemoon.org/viewtopic.php?f=62&t=29887
|
||||
pref("dom.cycle_collector.incremental", false);
|
||||
|
||||
// Parsing perf prefs. For now just mimic what the old code did.
|
||||
#ifndef XP_WIN
|
||||
|
|
|
|||
|
|
@ -265,35 +265,8 @@ case "$target" in
|
|||
|
||||
unset _MSVC_VER_FILTER
|
||||
|
||||
AC_CACHE_CHECK(for overridable _RAISE,
|
||||
ac_cv_have__RAISE,
|
||||
[
|
||||
AC_LANG_SAVE
|
||||
AC_LANG_CPLUSPLUS
|
||||
_SAVE_CXXFLAGS="$CXXFLAGS"
|
||||
CXXFLAGS="${CXXFLAGS} -D_HAS_EXCEPTIONS=0"
|
||||
AC_TRY_COMPILE([#include <xstddef>
|
||||
#undef _RAISE
|
||||
#define _RAISE(x) externallyDefinedFunction((x).what())
|
||||
#include <vector>
|
||||
],
|
||||
[std::vector<int> v; return v.at(1);],
|
||||
ac_cv_have__RAISE="no",
|
||||
ac_cv_have__RAISE="yes")
|
||||
CXXFLAGS="$_SAVE_CXXFLAGS"
|
||||
AC_LANG_RESTORE
|
||||
])
|
||||
if test "$ac_cv_have__RAISE" = "yes"; then
|
||||
WRAP_STL_INCLUDES=1
|
||||
MOZ_MSVC_STL_WRAP_RAISE=1
|
||||
AC_DEFINE(MOZ_MSVC_STL_WRAP_RAISE)
|
||||
else
|
||||
AC_MSG_ERROR([Gecko exception wrapping doesn't understand your your MSVC/SDK. Please file a bug describing this error and your build configuration.])
|
||||
fi
|
||||
|
||||
if test "$WRAP_STL_INCLUDES" = "1"; then
|
||||
STL_FLAGS="-I${DIST}/stl_wrappers"
|
||||
fi
|
||||
WRAP_STL_INCLUDES=1
|
||||
STL_FLAGS="-I${DIST}/stl_wrappers"
|
||||
CFLAGS="$CFLAGS -D_HAS_EXCEPTIONS=0"
|
||||
CXXFLAGS="$CXXFLAGS -D_HAS_EXCEPTIONS=0"
|
||||
else
|
||||
|
|
@ -380,7 +353,6 @@ AC_SUBST(GNU_CXX)
|
|||
|
||||
AC_SUBST(STL_FLAGS)
|
||||
AC_SUBST(WRAP_STL_INCLUDES)
|
||||
AC_SUBST(MOZ_MSVC_STL_WRAP_RAISE)
|
||||
|
||||
dnl ========================================================
|
||||
dnl Checks for programs.
|
||||
|
|
|
|||
|
|
@ -25,15 +25,6 @@ This is likely the same like id.heading in crashes.dtd. -->
|
|||
<!ENTITY aboutSupport.extensionVersion "Version">
|
||||
<!ENTITY aboutSupport.extensionId "ID">
|
||||
|
||||
<!ENTITY aboutSupport.experimentsTitle "Experimental Features">
|
||||
<!ENTITY aboutSupport.experimentName "Name">
|
||||
<!ENTITY aboutSupport.experimentId "ID">
|
||||
<!ENTITY aboutSupport.experimentDescription "Description">
|
||||
<!ENTITY aboutSupport.experimentActive "Active">
|
||||
<!ENTITY aboutSupport.experimentEndDate "End Date">
|
||||
<!ENTITY aboutSupport.experimentHomepage "Homepage">
|
||||
<!ENTITY aboutSupport.experimentBranch "Branch">
|
||||
|
||||
<!ENTITY aboutSupport.appBasicsTitle "Application Basics">
|
||||
<!ENTITY aboutSupport.appBasicsName "Name">
|
||||
<!ENTITY aboutSupport.appBasicsVersion "Version">
|
||||
|
|
|
|||
|
|
@ -226,17 +226,6 @@
|
|||
|
||||
<!ENTITY settings.path.button.label "Browse…">
|
||||
|
||||
<!-- LOCALIZATION NOTE (experiment.info.label): The strings related to
|
||||
experiments are present on the "Experiments" tab of the add-ons manager.
|
||||
This tab won't be displayed unless an Experiment add-on is installed.
|
||||
Install https://people.mozilla.org/~gszorc/dummy-experiment-addon.xpi
|
||||
to cause this tab to appear. -->
|
||||
<!ENTITY experiment.info.label "What's this? Telemetry may install and run experiments from time to time.">
|
||||
<!ENTITY experiment.info.learnmore "Learn More">
|
||||
<!ENTITY experiment.info.learnmore.accesskey "L">
|
||||
<!ENTITY experiment.info.changetelemetry "Telemetry Settings">
|
||||
<!ENTITY experiment.info.changetelemetry.accesskey "T">
|
||||
|
||||
<!ENTITY setting.learnmore "Learn More…">
|
||||
|
||||
#ifdef MOZ_WEBEXTENSIONS
|
||||
|
|
|
|||
|
|
@ -103,44 +103,6 @@ details.notification.upgrade=%1$S will be updated after you restart %2$S.
|
|||
#LOCALIZATION NOTE (details.notification.gmpPending) %1$S is the add-on name
|
||||
details.notification.gmpPending=%1$S will be installed shortly.
|
||||
|
||||
# LOCALIZATION NOTE (details.experiment.time.daysRemaining):
|
||||
# Semicolon-separated list of plural forms.
|
||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
# #1 is the number of days from now that the experiment will remain active (detail view).
|
||||
details.experiment.time.daysRemaining=#1 day remaining;#1 days remaining
|
||||
#LOCALIZATION NOTE (details.experiment.time.endsToday) The experiment will end in less than a day (detail view).
|
||||
details.experiment.time.endsToday=Less than a day remaining
|
||||
# LOCALIZATION NOTE (details.experiment.time.daysPassed):
|
||||
# Semicolon-separated list of plural forms.
|
||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
# #1 is the number of days since the experiment ran (detail view).
|
||||
details.experiment.time.daysPassed=#1 day ago;#1 days ago
|
||||
#LOCALIZATION NOTE (details.experiment.time.endedToday) The experiment ended less than a day ago (detail view).
|
||||
details.experiment.time.endedToday=Less than a day ago
|
||||
#LOCALIZATION NOTE (details.experiment.state.active) This experiment is active (detail view).
|
||||
details.experiment.state.active=Active
|
||||
#LOCALIZATION NOTE (details.experiment.state.complete) This experiment is complete (it was previously active) (detail view).
|
||||
details.experiment.state.complete=Complete
|
||||
|
||||
# LOCALIZATION NOTE (experiment.time.daysRemaining):
|
||||
# Semicolon-separated list of plural forms.
|
||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
# #1 is the number of days from now that the experiment will remain active (list view item).
|
||||
experiment.time.daysRemaining=#1 day remaining;#1 days remaining
|
||||
#LOCALIZATION NOTE (experiment.time.endsToday) The experiment will end in less than a day (list view item).
|
||||
experiment.time.endsToday=Less than a day remaining
|
||||
# LOCALIZATION NOTE (experiment.time.daysPassed):
|
||||
# Semicolon-separated list of plural forms.
|
||||
# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
|
||||
# #1 is the number of days since the experiment ran (list view item).
|
||||
experiment.time.daysPassed=#1 day ago;#1 days ago
|
||||
#LOCALIZATION NOTE (experiment.time.endedToday) The experiment ended less than a day ago (list view item).
|
||||
experiment.time.endedToday=Less than a day ago
|
||||
#LOCALIZATION NOTE (experiment.state.active) This experiment is active (list view item).
|
||||
experiment.state.active=Active
|
||||
#LOCALIZATION NOTE (experiment.state.complete) This experiment is complete (it was previously active) (list view item).
|
||||
experiment.state.complete=Complete
|
||||
|
||||
installFromFile.dialogTitle=Select add-on to install
|
||||
installFromFile.filterName=Add-ons
|
||||
|
||||
|
|
@ -174,4 +136,3 @@ type.locale.name=Languages
|
|||
type.plugin.name=Plugins
|
||||
type.dictionary.name=Dictionaries
|
||||
type.service.name=Services
|
||||
type.experiment.name=Experiments
|
||||
|
|
|
|||
|
|
@ -202,10 +202,6 @@ setting[type="menulist"] {
|
|||
display: none;
|
||||
}
|
||||
|
||||
#addons-page .view-pane:not([type="experiment"]) .experiment-info-container {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.addon .relnotes {
|
||||
-moz-user-select: text;
|
||||
}
|
||||
|
|
@ -236,36 +232,6 @@ richlistitem:not([selected]) * {
|
|||
display: none;
|
||||
}
|
||||
|
||||
#experiments-learn-more[disabled="true"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#experiments-change-telemetry[disabled="true"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.view-pane[type="experiment"] .error,
|
||||
.view-pane[type="experiment"] .warning,
|
||||
.view-pane[type="experiment"] .addon:not([pending="uninstall"]) .pending,
|
||||
.view-pane[type="experiment"] .disabled-postfix,
|
||||
.view-pane[type="experiment"] .update-postfix,
|
||||
.view-pane[type="experiment"] .version,
|
||||
#detail-view[type="experiment"] .alert-container,
|
||||
#detail-view[type="experiment"] #detail-version,
|
||||
#detail-view[type="experiment"] #detail-creator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.view-pane:not([type="experiment"]) .experiment-container,
|
||||
.view-pane:not([type="experiment"]) #detail-experiment-container {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.addon[type="experiment"][status="installing"] .experiment-time,
|
||||
.addon[type="experiment"][status="installing"] .experiment-state {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/* Indicator style for extension target application */
|
||||
.addon[native] .nativeIndicator {
|
||||
margin-left: 5pt;
|
||||
|
|
|
|||
|
|
@ -868,15 +868,6 @@
|
|||
<xul:label anonid="date-updated" class="date-updated"
|
||||
unknown="&addon.unknownDate;"/>
|
||||
</xul:hbox>
|
||||
<xul:hbox class="experiment-container">
|
||||
<svg width="6" height="6" viewBox="0 0 6 6" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="experiment-bullet-container">
|
||||
<circle cx="3" cy="3" r="3" class="experiment-bullet"/>
|
||||
</svg>
|
||||
<xul:label anonid="experiment-state" class="experiment-state"/>
|
||||
<xul:label anonid="experiment-time" class="experiment-time"/>
|
||||
</xul:hbox>
|
||||
|
||||
<xul:hbox class="advancedinfo-container" flex="1">
|
||||
<xul:vbox class="description-outer-container" flex="1">
|
||||
|
|
@ -1042,12 +1033,6 @@
|
|||
<field name="_version">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "version");
|
||||
</field>
|
||||
<field name="_experimentState">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "experiment-state");
|
||||
</field>
|
||||
<field name="_experimentTime">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "experiment-time");
|
||||
</field>
|
||||
<field name="_icon">
|
||||
document.getAnonymousElementByAttribute(this, "anonid", "icon");
|
||||
</field>
|
||||
|
|
@ -1420,37 +1405,6 @@
|
|||
var showProgress = this.mAddon.purchaseURL || (this.mAddon.install &&
|
||||
this.mAddon.install.state != AddonManager.STATE_INSTALLED);
|
||||
this._showStatus(showProgress ? "progress" : "none");
|
||||
|
||||
if (this.mAddon.type == "experiment") {
|
||||
this.removeAttribute("notification");
|
||||
let prefix = "experiment.";
|
||||
let active = this.mAddon.isActive;
|
||||
|
||||
if (!showProgress) {
|
||||
let stateKey = prefix + "state." + (active ? "active" : "complete");
|
||||
this._experimentState.value = gStrings.ext.GetStringFromName(stateKey);
|
||||
|
||||
let now = Date.now();
|
||||
let end = this.endDate;
|
||||
let days = Math.abs(end - now) / (24 * 60 * 60 * 1000);
|
||||
|
||||
let timeKey = prefix + "time.";
|
||||
let timeMessage;
|
||||
|
||||
if (days < 1) {
|
||||
timeKey += (active ? "endsToday" : "endedToday");
|
||||
timeMessage = gStrings.ext.GetStringFromName(timeKey);
|
||||
} else {
|
||||
timeKey += (active ? "daysRemaining" : "daysPassed");
|
||||
days = Math.round(days);
|
||||
let timeString = gStrings.ext.GetStringFromName(timeKey);
|
||||
timeMessage = PluralForm.get(days, timeString)
|
||||
.replace("#1", days);
|
||||
}
|
||||
|
||||
this._experimentTime.value = timeMessage;
|
||||
}
|
||||
}
|
||||
]]></body>
|
||||
</method>
|
||||
|
||||
|
|
|
|||
|
|
@ -91,8 +91,6 @@
|
|||
<command id="cmd_enableUpdateSecurity"/>
|
||||
<command id="cmd_toggleAutoUpdateDefault"/>
|
||||
<command id="cmd_resetAddonAutoUpdate"/>
|
||||
<command id="cmd_experimentsLearnMore"/>
|
||||
<command id="cmd_experimentsOpenTelemetryPreferences"/>
|
||||
</commandset>
|
||||
|
||||
<!-- view commands - these act on the selected addon -->
|
||||
|
|
@ -354,22 +352,6 @@
|
|||
<spacer flex="5000"/> <!-- Necessary to allow the message to wrap -->
|
||||
</hbox>
|
||||
</hbox>
|
||||
<hbox class="view-header global-info-container experiment-info-container">
|
||||
<hbox class="global-info" flex="1" align="center">
|
||||
<label value="&experiment.info.label;"/>
|
||||
<button id="experiments-learn-more"
|
||||
label="&experiment.info.learnmore;"
|
||||
tooltiptext="&experiment.info.learnmore;"
|
||||
accesskey="&experiment.info.learnmore.accesskey;"
|
||||
command="cmd_experimentsLearnMore"/>
|
||||
<button id="experiments-change-telemetry"
|
||||
label="&experiment.info.changetelemetry;"
|
||||
tooltiptext="&experiment.info.changetelemetry;"
|
||||
accesskey="&experiment.info.changetelemetry.accesskey;"
|
||||
command="cmd_experimentsOpenTelemetryPreferences"/>
|
||||
<spacer flex="5000"/> <!-- Necessary to allow the message to wrap. -->
|
||||
</hbox>
|
||||
</hbox>
|
||||
<vbox id="addon-list-empty" class="alert-container"
|
||||
flex="1" hidden="true">
|
||||
<spacer class="alert-spacer-before"/>
|
||||
|
|
@ -530,15 +512,6 @@
|
|||
<label id="detail-creator" class="creator"/>
|
||||
<label id="detail-translators" class="translators"/>
|
||||
</vbox>
|
||||
<hbox id="detail-experiment-container">
|
||||
<svg width="8" height="8" viewBox="0 0 8 8" version="1.1"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
id="detail-experiment-bullet-container">
|
||||
<circle cx="4" cy="4" r="4" id="detail-experiment-bullet"/>
|
||||
</svg>
|
||||
<label id="detail-experiment-state"/>
|
||||
<label id="detail-experiment-time"/>
|
||||
</hbox>
|
||||
<hbox id="detail-desc-container" align="start">
|
||||
<vbox pack="center"> <!-- Necessary to work around bug 394738 -->
|
||||
<image id="detail-screenshot" hidden="true"/>
|
||||
|
|
|
|||
|
|
@ -197,12 +197,10 @@ const TYPES = {
|
|||
locale: 8,
|
||||
multipackage: 32,
|
||||
dictionary: 64,
|
||||
experiment: 128,
|
||||
};
|
||||
|
||||
const RESTARTLESS_TYPES = new Set([
|
||||
"dictionary",
|
||||
"experiment",
|
||||
"locale",
|
||||
]);
|
||||
|
||||
|
|
@ -944,30 +942,13 @@ function loadManifestFromRDF(aUri, aStream) {
|
|||
if (addon.type == "theme") {
|
||||
addon.userDisabled = !!LightweightThemeManager.currentTheme ||
|
||||
addon.internalName != XPIProvider.selectedSkin;
|
||||
}
|
||||
// Experiments are disabled by default. It is up to the Experiments Manager
|
||||
// to enable them (it drives installation).
|
||||
else if (addon.type == "experiment") {
|
||||
addon.userDisabled = true;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
addon.userDisabled = false;
|
||||
addon.softDisabled = addon.blocklistState == Blocklist.STATE_SOFTBLOCKED;
|
||||
}
|
||||
|
||||
addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DEFAULT;
|
||||
|
||||
// Experiments are managed and updated through an external "experiments
|
||||
// manager." So disable some built-in mechanisms.
|
||||
if (addon.type == "experiment") {
|
||||
addon.applyBackgroundUpdates = AddonManager.AUTOUPDATE_DISABLE;
|
||||
addon.updateURL = null;
|
||||
addon.updateKey = null;
|
||||
|
||||
addon.targetApplications = [];
|
||||
addon.targetPlatforms = [];
|
||||
}
|
||||
|
||||
// Load the storage service before NSS (nsIRandomGenerator),
|
||||
// to avoid a SQLite initialization error (bug 717904).
|
||||
let storage = Services.storage;
|
||||
|
|
@ -1828,8 +1809,6 @@ this.XPIProvider = {
|
|||
// Keep track of the newest file in each add-on, in case we want to
|
||||
// report it.
|
||||
_mostRecentlyModifiedFile: {},
|
||||
// Experiments are disabled by default. Track ones that are locally enabled.
|
||||
_enabledExperiments: null,
|
||||
// A Map from an add-on install to its ID
|
||||
_addonFileMap: new Map(),
|
||||
#ifdef MOZ_DEVTOOLS
|
||||
|
|
@ -2003,8 +1982,6 @@ this.XPIProvider = {
|
|||
this.installLocationsByName = {};
|
||||
// Hook for tests to detect when saving database at shutdown time fails
|
||||
this._shutdownError = null;
|
||||
// Clear the set of enabled experiments (experiments disabled by default).
|
||||
this._enabledExperiments = new Set();
|
||||
|
||||
let hasRegistry = ("nsIWindowsRegKey" in Ci);
|
||||
|
||||
|
|
@ -2317,19 +2294,8 @@ this.XPIProvider = {
|
|||
* Persists changes to XPIProvider.bootstrappedAddons to its store (a pref).
|
||||
*/
|
||||
persistBootstrappedAddons: function XPI_persistBootstrappedAddons() {
|
||||
// Experiments are disabled upon app load, so don't persist references.
|
||||
let filtered = {};
|
||||
for (let id in this.bootstrappedAddons) {
|
||||
let entry = this.bootstrappedAddons[id];
|
||||
if (entry.type == "experiment") {
|
||||
continue;
|
||||
}
|
||||
|
||||
filtered[id] = entry;
|
||||
}
|
||||
|
||||
Services.prefs.setCharPref(PREF_BOOTSTRAP_ADDONS,
|
||||
JSON.stringify(filtered));
|
||||
JSON.stringify(this.bootstrappedAddons));
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
@ -4487,15 +4453,11 @@ this.XPIProvider = {
|
|||
let appDisabledChanged = aAddon.appDisabled != appDisabled;
|
||||
|
||||
// Update the properties in the database.
|
||||
// We never persist this for experiments because the disabled flags
|
||||
// are controlled by the Experiments Manager.
|
||||
if (aAddon.type != "experiment") {
|
||||
XPIDatabase.setAddonProperties(aAddon, {
|
||||
userDisabled: aUserDisabled,
|
||||
appDisabled: appDisabled,
|
||||
softDisabled: aSoftDisabled
|
||||
});
|
||||
}
|
||||
XPIDatabase.setAddonProperties(aAddon, {
|
||||
userDisabled: aUserDisabled,
|
||||
appDisabled: appDisabled,
|
||||
softDisabled: aSoftDisabled
|
||||
});
|
||||
|
||||
if (appDisabledChanged) {
|
||||
AddonManagerPrivate.callAddonListeners("onPropertyChanged",
|
||||
|
|
@ -6389,17 +6351,6 @@ AddonInternal.prototype = {
|
|||
},
|
||||
|
||||
isCompatibleWith: function AddonInternal_isCompatibleWith(aAppVersion, aPlatformVersion) {
|
||||
// Experiments are installed through an external mechanism that
|
||||
// limits target audience to compatible clients. We trust it knows what
|
||||
// it's doing and skip compatibility checks.
|
||||
//
|
||||
// This decision does forfeit defense in depth. If the experiments system
|
||||
// is ever wrong about targeting an add-on to a specific application
|
||||
// or platform, the client will likely see errors.
|
||||
if (this.type == "experiment") {
|
||||
return true;
|
||||
}
|
||||
|
||||
let app = this.matchingTargetApplication;
|
||||
if (!app)
|
||||
return false;
|
||||
|
|
@ -6610,13 +6561,6 @@ AddonInternal.prototype = {
|
|||
if (!(this.inDatabase))
|
||||
return permissions;
|
||||
|
||||
// Experiments can only be uninstalled. An uninstall reflects the user
|
||||
// intent of "disable this experiment." This is partially managed by the
|
||||
// experiments manager.
|
||||
if (this.type == "experiment") {
|
||||
return AddonManager.PERM_CAN_UNINSTALL;
|
||||
}
|
||||
|
||||
if (!this.appDisabled) {
|
||||
if (this.userDisabled || this.softDisabled) {
|
||||
permissions |= AddonManager.PERM_CAN_ENABLE;
|
||||
|
|
@ -6879,11 +6823,6 @@ function AddonWrapper(aAddon) {
|
|||
return aAddon.applyBackgroundUpdates;
|
||||
});
|
||||
this.__defineSetter__("applyBackgroundUpdates", function AddonWrapper_applyBackgroundUpdatesSetter(val) {
|
||||
if (this.type == "experiment") {
|
||||
logger.warn("Setting applyBackgroundUpdates on an experiment is not supported.");
|
||||
return;
|
||||
}
|
||||
|
||||
if (val != AddonManager.AUTOUPDATE_DEFAULT &&
|
||||
val != AddonManager.AUTOUPDATE_DISABLE &&
|
||||
val != AddonManager.AUTOUPDATE_ENABLE) {
|
||||
|
|
@ -6948,15 +6887,10 @@ function AddonWrapper(aAddon) {
|
|||
return AddonManager.PENDING_UNINSTALL;
|
||||
}
|
||||
|
||||
// Extensions have an intentional inconsistency between what the DB says is
|
||||
// enabled and what we say to the ouside world. so we need to cover up that
|
||||
// lie here as well.
|
||||
if (aAddon.type != "experiment") {
|
||||
if (aAddon.active && aAddon.disabled)
|
||||
pending |= AddonManager.PENDING_DISABLE;
|
||||
else if (!aAddon.active && !aAddon.disabled)
|
||||
pending |= AddonManager.PENDING_ENABLE;
|
||||
}
|
||||
if (aAddon.active && aAddon.disabled)
|
||||
pending |= AddonManager.PENDING_DISABLE;
|
||||
else if (!aAddon.active && !aAddon.disabled)
|
||||
pending |= AddonManager.PENDING_ENABLE;
|
||||
|
||||
if (aAddon.pendingUpgrade)
|
||||
pending |= AddonManager.PENDING_UPGRADE;
|
||||
|
|
@ -6993,10 +6927,6 @@ function AddonWrapper(aAddon) {
|
|||
});
|
||||
|
||||
this.__defineGetter__("userDisabled", function AddonWrapper_userDisabledGetter() {
|
||||
if (XPIProvider._enabledExperiments.has(aAddon.id)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return aAddon.softDisabled || aAddon.userDisabled;
|
||||
});
|
||||
this.__defineSetter__("userDisabled", function AddonWrapper_userDisabledSetter(val) {
|
||||
|
|
@ -7004,14 +6934,6 @@ function AddonWrapper(aAddon) {
|
|||
return val;
|
||||
}
|
||||
|
||||
if (aAddon.type == "experiment") {
|
||||
if (val) {
|
||||
XPIProvider._enabledExperiments.delete(aAddon.id);
|
||||
} else {
|
||||
XPIProvider._enabledExperiments.add(aAddon.id);
|
||||
}
|
||||
}
|
||||
|
||||
if (aAddon.inDatabase) {
|
||||
if (aAddon.type == "theme" && val) {
|
||||
if (aAddon.internalName == XPIProvider.defaultSkin)
|
||||
|
|
@ -7069,14 +6991,6 @@ function AddonWrapper(aAddon) {
|
|||
};
|
||||
|
||||
this.findUpdates = function AddonWrapper_findUpdates(aListener, aReason, aAppVersion, aPlatformVersion) {
|
||||
// Short-circuit updates for experiments because updates are handled
|
||||
// through the Experiments Manager.
|
||||
if (this.type == "experiment") {
|
||||
AddonManagerPrivate.callNoUpdateListeners(this, aListener, aReason,
|
||||
aAppVersion, aPlatformVersion);
|
||||
return;
|
||||
}
|
||||
|
||||
new UpdateChecker(aAddon, aListener, aReason, aAppVersion, aPlatformVersion);
|
||||
};
|
||||
|
||||
|
|
@ -7813,17 +7727,4 @@ var addonTypes = [
|
|||
AddonManager.TYPE_UI_HIDE_EMPTY | AddonManager.TYPE_SUPPORTS_UNDO_RESTARTLESS_UNINSTALL),
|
||||
];
|
||||
|
||||
// We only register experiments support if the application supports them.
|
||||
// Ideally, we would install an observer to watch the pref. Installing
|
||||
// an observer for this pref is not necessary here and may be buggy with
|
||||
// regards to registering this XPIProvider twice.
|
||||
if (Preferences.get("experiments.supported", false)) {
|
||||
addonTypes.push(
|
||||
new AddonManagerPrivate.AddonType("experiment",
|
||||
URI_EXTENSION_STRINGS,
|
||||
STRING_TYPE_NAME,
|
||||
AddonManager.VIEW_TYPE_LIST, 11000,
|
||||
AddonManager.TYPE_UI_HIDE_EMPTY | AddonManager.TYPE_SUPPORTS_UNDO_RESTARTLESS_UNINSTALL));
|
||||
}
|
||||
|
||||
AddonManagerPrivate.registerProvider(XPIProvider, addonTypes);
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 822 B |
Binary file not shown.
|
Before Width: | Height: | Size: 822 B |
|
|
@ -226,9 +226,6 @@
|
|||
#category-dictionary > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-dictionaries.png");
|
||||
}
|
||||
#category-experiment > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-experiments.png");
|
||||
}
|
||||
#category-availableUpdates > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-available.png");
|
||||
}
|
||||
|
|
@ -420,10 +417,6 @@
|
|||
list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png");
|
||||
}
|
||||
|
||||
.addon-view[type="experiment"] .icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/experimentGeneric.png");
|
||||
}
|
||||
|
||||
.name-container {
|
||||
font-size: 150%;
|
||||
margin-bottom: 0;
|
||||
|
|
@ -927,30 +920,3 @@ setting[type="radio"] > radiogroup {
|
|||
.header-button .toolbarbutton-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*** telemetry experiments ***/
|
||||
|
||||
#detail-experiment-container {
|
||||
font-size: 80%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#detail-experiment-bullet-container,
|
||||
#detail-experiment-state,
|
||||
#detail-experiment-time,
|
||||
.experiment-bullet-container,
|
||||
.experiment-state,
|
||||
.experiment-time {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.addon .experiment-bullet,
|
||||
#detail-experiment-bullet {
|
||||
fill: rgb(158, 158, 158);
|
||||
}
|
||||
|
||||
.addon[active="true"] .experiment-bullet,
|
||||
#detail-view[active="true"] #detail-experiment-bullet {
|
||||
fill: rgb(106, 201, 20);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -32,14 +32,12 @@ toolkit.jar:
|
|||
skin/classic/mozapps/extensions/category-plugins.png (extensions/category-plugins.png)
|
||||
skin/classic/mozapps/extensions/category-service.png (extensions/category-service.png)
|
||||
skin/classic/mozapps/extensions/category-dictionaries.png (extensions/category-dictionaries.png)
|
||||
skin/classic/mozapps/extensions/category-experiments.png (extensions/category-experiments.png)
|
||||
skin/classic/mozapps/extensions/category-recent.png (extensions/category-recent.png)
|
||||
skin/classic/mozapps/extensions/category-available.png (extensions/category-available.png)
|
||||
skin/classic/mozapps/extensions/extensionGeneric.png (extensions/extensionGeneric.png)
|
||||
skin/classic/mozapps/extensions/extensionGeneric-16.png (extensions/extensionGeneric-16.png)
|
||||
skin/classic/mozapps/extensions/dictionaryGeneric.png (extensions/dictionaryGeneric.png)
|
||||
skin/classic/mozapps/extensions/dictionaryGeneric-16.png (extensions/dictionaryGeneric-16.png)
|
||||
skin/classic/mozapps/extensions/experimentGeneric.png (extensions/experimentGeneric.png)
|
||||
skin/classic/mozapps/extensions/themeGeneric.png (extensions/themeGeneric.png)
|
||||
skin/classic/mozapps/extensions/themeGeneric-16.png (extensions/themeGeneric-16.png)
|
||||
skin/classic/mozapps/extensions/localeGeneric.png (extensions/localeGeneric.png)
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 822 B |
Binary file not shown.
|
Before Width: | Height: | Size: 822 B |
|
|
@ -258,9 +258,6 @@
|
|||
#category-dictionary > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-dictionaries.png");
|
||||
}
|
||||
#category-experiment > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-experiments.png");
|
||||
}
|
||||
#category-availableUpdates > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-available.png");
|
||||
}
|
||||
|
|
@ -485,10 +482,6 @@
|
|||
list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png");
|
||||
}
|
||||
|
||||
.addon-view[type="experiment"] .icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/experimentGeneric.png");
|
||||
}
|
||||
|
||||
.name-container {
|
||||
font-size: 150%;
|
||||
margin-bottom: 0;
|
||||
|
|
@ -1177,30 +1170,3 @@ button.button-link:not([disabled="true"]):active:hover {
|
|||
box-shadow: inset 0 0 4px rgb(45,54,71), 0 1px rgba(255,255,255,0.25);
|
||||
background-image: linear-gradient(rgba(45,54,71,0.6), transparent);
|
||||
}
|
||||
|
||||
/*** telemetry experiments ***/
|
||||
|
||||
#detail-experiment-container {
|
||||
font-size: 80%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#detail-experiment-bullet-container,
|
||||
#detail-experiment-state,
|
||||
#detail-experiment-time,
|
||||
.experiment-bullet-container,
|
||||
.experiment-state,
|
||||
.experiment-time {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.addon .experiment-bullet,
|
||||
#detail-experiment-bullet {
|
||||
fill: rgb(158, 158, 158);
|
||||
}
|
||||
|
||||
.addon[active="true"] .experiment-bullet,
|
||||
#detail-view[active="true"] #detail-experiment-bullet {
|
||||
fill: rgb(106, 201, 20);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,7 +17,6 @@ toolkit.jar:
|
|||
skin/classic/mozapps/extensions/category-plugins.png (extensions/category-plugins.png)
|
||||
skin/classic/mozapps/extensions/category-service.png (extensions/category-service.png)
|
||||
skin/classic/mozapps/extensions/category-dictionaries.png (extensions/category-dictionaries.png)
|
||||
skin/classic/mozapps/extensions/category-experiments.png (extensions/category-experiments.png)
|
||||
skin/classic/mozapps/extensions/category-recent.png (extensions/category-recent.png)
|
||||
skin/classic/mozapps/extensions/category-available.png (extensions/category-available.png)
|
||||
skin/classic/mozapps/extensions/discover-logo.png (extensions/discover-logo.png)
|
||||
|
|
@ -27,7 +26,6 @@ toolkit.jar:
|
|||
skin/classic/mozapps/extensions/themeGeneric-16.png (extensions/themeGeneric-16.png)
|
||||
skin/classic/mozapps/extensions/dictionaryGeneric.png (extensions/dictionaryGeneric.png)
|
||||
skin/classic/mozapps/extensions/dictionaryGeneric-16.png (extensions/dictionaryGeneric-16.png)
|
||||
skin/classic/mozapps/extensions/experimentGeneric.png (extensions/experimentGeneric.png)
|
||||
skin/classic/mozapps/extensions/localeGeneric.png (extensions/localeGeneric.png)
|
||||
skin/classic/mozapps/extensions/rating-won.png (extensions/rating-won.png)
|
||||
skin/classic/mozapps/extensions/rating-not-won.png (extensions/rating-not-won.png)
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 822 B |
|
|
@ -276,9 +276,6 @@
|
|||
#category-dictionary > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-dictionaries.png");
|
||||
}
|
||||
#category-experiment > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-experiments.png");
|
||||
}
|
||||
#category-availableUpdates > .category-icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/category-available.png");
|
||||
}
|
||||
|
|
@ -499,10 +496,6 @@
|
|||
list-style-image: url("chrome://mozapps/skin/extensions/dictionaryGeneric.png");
|
||||
}
|
||||
|
||||
.addon-view[type="experiment"] .icon {
|
||||
list-style-image: url("chrome://mozapps/skin/extensions/experimentGeneric.png");
|
||||
}
|
||||
|
||||
.name-container {
|
||||
font-size: 150%;
|
||||
font-weight: bold;
|
||||
|
|
@ -1205,30 +1198,3 @@ button.button-link:not([disabled="true"]):active:hover {
|
|||
.header-button > .toolbarbutton-text {
|
||||
display: none;
|
||||
}
|
||||
|
||||
/*** telemetry experiments ***/
|
||||
|
||||
#detail-experiment-container {
|
||||
font-size: 80%;
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
#detail-experiment-bullet-container,
|
||||
#detail-experiment-state,
|
||||
#detail-experiment-time,
|
||||
.experiment-bullet-container,
|
||||
.experiment-state,
|
||||
.experiment-time {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.addon .experiment-bullet,
|
||||
#detail-experiment-bullet {
|
||||
fill: rgb(158, 158, 158);
|
||||
}
|
||||
|
||||
.addon[active="true"] .experiment-bullet,
|
||||
#detail-view[active="true"] #detail-experiment-bullet {
|
||||
fill: rgb(106, 201, 20);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -55,7 +55,6 @@ toolkit.jar:
|
|||
skin/classic/mozapps/extensions/themeGeneric-16.png (extensions/themeGeneric-16.png)
|
||||
skin/classic/mozapps/extensions/dictionaryGeneric.png (extensions/dictionaryGeneric.png)
|
||||
skin/classic/mozapps/extensions/dictionaryGeneric-16.png (extensions/dictionaryGeneric-16.png)
|
||||
skin/classic/mozapps/extensions/experimentGeneric.png (extensions/experimentGeneric.png)
|
||||
skin/classic/mozapps/extensions/localeGeneric.png (extensions/localeGeneric.png)
|
||||
skin/classic/mozapps/extensions/rating-won.png (extensions/rating-won.png)
|
||||
skin/classic/mozapps/extensions/rating-not-won.png (extensions/rating-not-won.png)
|
||||
|
|
|
|||
|
|
@ -622,13 +622,12 @@ PtrInfo::AnnotatedReleaseAssert(bool aCondition, const char* aMessage)
|
|||
return;
|
||||
}
|
||||
|
||||
#ifdef MOZ_CRASHREPORTER
|
||||
#ifdef MOZ_DEBUG
|
||||
const char* piName = "Unknown";
|
||||
if (mParticipant) {
|
||||
piName = mParticipant->ClassName();
|
||||
}
|
||||
nsPrintfCString msg("%s, for class %s", aMessage, piName);
|
||||
CrashReporter::AnnotateCrashReport(NS_LITERAL_CSTRING("CycleCollector"), msg);
|
||||
printf("cc: %s, for class %s\n", aMessage, piName);
|
||||
#endif
|
||||
|
||||
MOZ_CRASH();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue