mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-30 12:27:29 +09:00
Issue #21 - Remove remaining telemetry structs, callers and flags.
This commit is contained in:
parent
2564be2d79
commit
eaf9e756a0
50 changed files with 31 additions and 500 deletions
|
|
@ -23,10 +23,6 @@
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
|
||||||
namespace Telemetry {
|
|
||||||
enum ID : uint32_t;
|
|
||||||
} // namespace Telemetry
|
|
||||||
|
|
||||||
namespace image {
|
namespace image {
|
||||||
|
|
||||||
class imgFrame;
|
class imgFrame;
|
||||||
|
|
@ -57,41 +53,6 @@ struct DecoderFinalStatus final
|
||||||
const bool mShouldReportError : 1;
|
const bool mShouldReportError : 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct DecoderTelemetry final
|
|
||||||
{
|
|
||||||
DecoderTelemetry(Maybe<Telemetry::ID> aSpeedHistogram,
|
|
||||||
size_t aBytesDecoded,
|
|
||||||
uint32_t aChunkCount,
|
|
||||||
TimeDuration aDecodeTime)
|
|
||||||
: mSpeedHistogram(aSpeedHistogram)
|
|
||||||
, mBytesDecoded(aBytesDecoded)
|
|
||||||
, mChunkCount(aChunkCount)
|
|
||||||
, mDecodeTime(aDecodeTime)
|
|
||||||
{ }
|
|
||||||
|
|
||||||
/// @return our decoder's speed, in KBps.
|
|
||||||
int32_t Speed() const
|
|
||||||
{
|
|
||||||
return mBytesDecoded / (1024 * mDecodeTime.ToSeconds());
|
|
||||||
}
|
|
||||||
|
|
||||||
/// @return our decoder's decode time, in microseconds.
|
|
||||||
int32_t DecodeTimeMicros() { return mDecodeTime.ToMicroseconds(); }
|
|
||||||
|
|
||||||
/// The per-image-format telemetry ID for recording our decoder's speed, or
|
|
||||||
/// Nothing() if we don't record speed telemetry for this kind of decoder.
|
|
||||||
const Maybe<Telemetry::ID> mSpeedHistogram;
|
|
||||||
|
|
||||||
/// The number of bytes of input our decoder processed.
|
|
||||||
const size_t mBytesDecoded;
|
|
||||||
|
|
||||||
/// The number of chunks our decoder's input was divided into.
|
|
||||||
const uint32_t mChunkCount;
|
|
||||||
|
|
||||||
/// The amount of time our decoder spent inside DoDecode().
|
|
||||||
const TimeDuration mDecodeTime;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Decoder
|
class Decoder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -359,9 +320,6 @@ public:
|
||||||
/// @return the metadata we collected about this image while decoding.
|
/// @return the metadata we collected about this image while decoding.
|
||||||
const ImageMetadata& GetImageMetadata() { return mImageMetadata; }
|
const ImageMetadata& GetImageMetadata() { return mImageMetadata; }
|
||||||
|
|
||||||
/// @return performance telemetry we collected while decoding.
|
|
||||||
DecoderTelemetry Telemetry() const;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return a weak pointer to the image associated with this decoder. Illegal
|
* @return a weak pointer to the image associated with this decoder. Illegal
|
||||||
* to call if this decoder is not associated with an image.
|
* to call if this decoder is not associated with an image.
|
||||||
|
|
@ -383,7 +341,6 @@ public:
|
||||||
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
friend class AutoRecordDecoderTelemetry;
|
|
||||||
friend class nsICODecoder;
|
friend class nsICODecoder;
|
||||||
friend class PalettedSurfaceSink;
|
friend class PalettedSurfaceSink;
|
||||||
friend class SurfaceSink;
|
friend class SurfaceSink;
|
||||||
|
|
@ -405,13 +362,6 @@ protected:
|
||||||
virtual nsresult FinishInternal();
|
virtual nsresult FinishInternal();
|
||||||
virtual nsresult FinishWithErrorInternal();
|
virtual nsresult FinishWithErrorInternal();
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the per-image-format telemetry ID for recording this decoder's
|
|
||||||
* speed, or Nothing() if we don't record speed telemetry for this kind of
|
|
||||||
* decoder.
|
|
||||||
*/
|
|
||||||
virtual Maybe<Telemetry::ID> SpeedHistogram() const { return Nothing(); }
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Progress notifications.
|
* Progress notifications.
|
||||||
|
|
@ -534,9 +484,6 @@ private:
|
||||||
gfx::IntRect mFirstFrameRefreshArea; // The area of the image that needs to
|
gfx::IntRect mFirstFrameRefreshArea; // The area of the image that needs to
|
||||||
// be invalidated when the animation loops.
|
// be invalidated when the animation loops.
|
||||||
|
|
||||||
// Telemetry data for this decoder.
|
|
||||||
TimeDuration mDecodeTime;
|
|
||||||
|
|
||||||
DecoderFlags mDecoderFlags;
|
DecoderFlags mDecoderFlags;
|
||||||
SurfaceFlags mSurfaceFlags;
|
SurfaceFlags mSurfaceFlags;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,6 @@ namespace image {
|
||||||
|
|
||||||
class Decoder;
|
class Decoder;
|
||||||
struct DecoderFinalStatus;
|
struct DecoderFinalStatus;
|
||||||
struct DecoderTelemetry;
|
|
||||||
class ImageMetadata;
|
class ImageMetadata;
|
||||||
class SourceBuffer;
|
class SourceBuffer;
|
||||||
|
|
||||||
|
|
@ -205,14 +204,13 @@ public:
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Records decoding results, sends out any final notifications, updates the
|
* Records decoding results, sends out any final notifications, updates the
|
||||||
* state of this image, and records telemetry.
|
* state of this image.
|
||||||
*
|
*
|
||||||
* Main-thread only.
|
* Main-thread only.
|
||||||
*
|
*
|
||||||
* @param aStatus Final status information about the decoder. (Whether it
|
* @param aStatus Final status information about the decoder. (Whether it
|
||||||
* encountered an error, etc.)
|
* encountered an error, etc.)
|
||||||
* @param aMetadata Metadata about this image that the decoder gathered.
|
* @param aMetadata Metadata about this image that the decoder gathered.
|
||||||
* @param aTelemetry Telemetry data about the decoder.
|
|
||||||
* @param aProgress Any final progress notifications to send.
|
* @param aProgress Any final progress notifications to send.
|
||||||
* @param aInvalidRect Any final invalidation rect to send.
|
* @param aInvalidRect Any final invalidation rect to send.
|
||||||
* @param aFrameCount If Some(), a final updated count of the number of frames
|
* @param aFrameCount If Some(), a final updated count of the number of frames
|
||||||
|
|
|
||||||
|
|
@ -616,9 +616,6 @@ interface nsIXPCComponents_Utils : nsISupports
|
||||||
*/
|
*/
|
||||||
PRTime getWatchdogTimestamp(in AString aCategory);
|
PRTime getWatchdogTimestamp(in AString aCategory);
|
||||||
|
|
||||||
[implicit_jscontext]
|
|
||||||
jsval getJSEngineTelemetryValue();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Clone an object into a scope.
|
* Clone an object into a scope.
|
||||||
* The 3rd argument is an optional options object:
|
* The 3rd argument is an optional options object:
|
||||||
|
|
|
||||||
|
|
@ -3193,29 +3193,6 @@ nsXPCComponents_Utils::GetWatchdogTimestamp(const nsAString& aCategory, PRTime*
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
nsXPCComponents_Utils::GetJSEngineTelemetryValue(JSContext* cx, MutableHandleValue rval)
|
|
||||||
{
|
|
||||||
RootedObject obj(cx, JS_NewPlainObject(cx));
|
|
||||||
if (!obj)
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
unsigned attrs = JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT;
|
|
||||||
|
|
||||||
size_t i = JS_SetProtoCalled(cx);
|
|
||||||
RootedValue v(cx, DoubleValue(i));
|
|
||||||
if (!JS_DefineProperty(cx, obj, "setProto", v, attrs))
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
i = JS_GetCustomIteratorCount(cx);
|
|
||||||
v.setDouble(i);
|
|
||||||
if (!JS_DefineProperty(cx, obj, "customIter", v, attrs))
|
|
||||||
return NS_ERROR_OUT_OF_MEMORY;
|
|
||||||
|
|
||||||
rval.setObject(*obj);
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool
|
bool
|
||||||
xpc::CloneInto(JSContext* aCx, HandleValue aValue, HandleValue aScope,
|
xpc::CloneInto(JSContext* aCx, HandleValue aValue, HandleValue aScope,
|
||||||
HandleValue aOptions, MutableHandleValue aCloned)
|
HandleValue aOptions, MutableHandleValue aCloned)
|
||||||
|
|
|
||||||
|
|
@ -1236,11 +1236,6 @@ XRE_XPCShellMain(int argc, char** argv, char** envp)
|
||||||
|
|
||||||
mozilla::LogModule::Init();
|
mozilla::LogModule::Init();
|
||||||
|
|
||||||
// A initializer to initialize histogram collection
|
|
||||||
// used by telemetry.
|
|
||||||
UniquePtr<base::StatisticsRecorder> telStats =
|
|
||||||
MakeUnique<base::StatisticsRecorder>();
|
|
||||||
|
|
||||||
if (PR_GetEnv("MOZ_CHAOSMODE")) {
|
if (PR_GetEnv("MOZ_CHAOSMODE")) {
|
||||||
ChaosFeature feature = ChaosFeature::Any;
|
ChaosFeature feature = ChaosFeature::Any;
|
||||||
long featureInt = strtol(PR_GetEnv("MOZ_CHAOSMODE"), nullptr, 16);
|
long featureInt = strtol(PR_GetEnv("MOZ_CHAOSMODE"), nullptr, 16);
|
||||||
|
|
@ -1535,7 +1530,6 @@ XRE_XPCShellMain(int argc, char** argv, char** envp)
|
||||||
bogus = nullptr;
|
bogus = nullptr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
telStats = nullptr;
|
|
||||||
appDir = nullptr;
|
appDir = nullptr;
|
||||||
appFile = nullptr;
|
appFile = nullptr;
|
||||||
dirprovider.ClearGREDirs();
|
dirprovider.ClearGREDirs();
|
||||||
|
|
|
||||||
|
|
@ -937,9 +937,9 @@ const js::ObjectOps XPC_WN_ObjectOpsWithEnumerate = {
|
||||||
// |this| object for a given method (often to the detriment of proper
|
// |this| object for a given method (often to the detriment of proper
|
||||||
// call/apply). When these tricks were removed, a fair amount of chrome
|
// call/apply). When these tricks were removed, a fair amount of chrome
|
||||||
// code broke, because it was relying on being able to grab methods off
|
// code broke, because it was relying on being able to grab methods off
|
||||||
// some XPCOM object (like the nsITelemetry service) and invoke them without
|
// some XPCOM object and invoke them without a proper |this|. So, if it's
|
||||||
// a proper |this|. So, if it's quite clear that we're in this situation and
|
// quite clear that we're in this situation and about to use a |this|
|
||||||
// about to use a |this| argument that just won't work, fix things up.
|
// argument that just won't work, fix things up.
|
||||||
//
|
//
|
||||||
// This hack is only useful for getters/setters if someone sets an XPCOM object
|
// This hack is only useful for getters/setters if someone sets an XPCOM object
|
||||||
// as the prototype for a vanilla JS object and expects the XPCOM attributes to
|
// as the prototype for a vanilla JS object and expects the XPCOM attributes to
|
||||||
|
|
|
||||||
|
|
@ -71,15 +71,6 @@ user_pref("dom.allow_XUL_XBL_for_file", true);
|
||||||
// their protocol with the inner URI of the view-source URI
|
// their protocol with the inner URI of the view-source URI
|
||||||
user_pref("security.view-source.reachable-from-inner-protocol", true);
|
user_pref("security.view-source.reachable-from-inner-protocol", true);
|
||||||
|
|
||||||
// Ensure that telemetry is disabled, so we don't connect to the telemetry
|
|
||||||
// server in the middle of the tests.
|
|
||||||
user_pref("toolkit.telemetry.enabled", false);
|
|
||||||
user_pref("toolkit.telemetry.unified", false);
|
|
||||||
// Likewise for safebrowsing.
|
|
||||||
user_pref("browser.safebrowsing.phishing.enabled", false);
|
|
||||||
user_pref("browser.safebrowsing.malware.enabled", false);
|
|
||||||
user_pref("browser.safebrowsing.forbiddenURIs.enabled", false);
|
|
||||||
user_pref("browser.safebrowsing.blockedURIs.enabled", false);
|
|
||||||
// Likewise for tracking protection.
|
// Likewise for tracking protection.
|
||||||
user_pref("privacy.trackingprotection.enabled", false);
|
user_pref("privacy.trackingprotection.enabled", false);
|
||||||
user_pref("privacy.trackingprotection.pbmode.enabled", false);
|
user_pref("privacy.trackingprotection.pbmode.enabled", false);
|
||||||
|
|
|
||||||
|
|
@ -1030,17 +1030,6 @@ var GlodaDatastore = {
|
||||||
|
|
||||||
var dbConnection;
|
var dbConnection;
|
||||||
|
|
||||||
// Report about the size of the database through telemetry (if there's a
|
|
||||||
// database, naturally).
|
|
||||||
if (dbFile.exists()) {
|
|
||||||
try {
|
|
||||||
let h = Services.telemetry.getHistogramById("THUNDERBIRD_GLODA_SIZE_MB");
|
|
||||||
h.add(dbFile.fileSize/1048576);
|
|
||||||
} catch (e) {
|
|
||||||
this._log.warn("Couldn't report telemetry", e);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create the file if it does not exist
|
// Create the file if it does not exist
|
||||||
if (!dbFile.exists()) {
|
if (!dbFile.exists()) {
|
||||||
this._log.debug("Creating database because it doesn't exist.");
|
this._log.debug("Creating database because it doesn't exist.");
|
||||||
|
|
|
||||||
|
|
@ -1006,10 +1006,6 @@ var GlodaIndexer = {
|
||||||
// make ourselves less responsive by drawing out the period of time we
|
// make ourselves less responsive by drawing out the period of time we
|
||||||
// are dominating the main thread.
|
// are dominating the main thread.
|
||||||
this._perfIndexStopwatch.start();
|
this._perfIndexStopwatch.start();
|
||||||
// For telemetry purposes, we want to know how many messages we've been
|
|
||||||
// processing during that batch, and how long it took, pauses included.
|
|
||||||
let t0 = Date.now();
|
|
||||||
this._indexedMessageCount = 0;
|
|
||||||
batchCount = 0;
|
batchCount = 0;
|
||||||
while (batchCount < this._indexTokens) {
|
while (batchCount < this._indexTokens) {
|
||||||
if ((this._callbackHandle.activeIterator === null) &&
|
if ((this._callbackHandle.activeIterator === null) &&
|
||||||
|
|
@ -1150,21 +1146,6 @@ var GlodaIndexer = {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// All pauses have been taken, how effective were we? Report!
|
|
||||||
// XXX: there's possibly a lot of fluctuation since we go through here
|
|
||||||
// every 5 messages or even less
|
|
||||||
if (this._indexedMessageCount > 0) {
|
|
||||||
let delta = (Date.now() - t0)/1000; // in seconds
|
|
||||||
let v = Math.round(this._indexedMessageCount/delta);
|
|
||||||
try {
|
|
||||||
let h = Services.telemetry
|
|
||||||
.getHistogramById("THUNDERBIRD_INDEXING_RATE_MSG_PER_S");
|
|
||||||
h.add(v);
|
|
||||||
} catch (e) {
|
|
||||||
this._log.warn("Couldn't report telemetry", e, v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (batchCount > 0) {
|
if (batchCount > 0) {
|
||||||
let totalTime = this._perfIndexStopwatch.realTimeSeconds * 1000;
|
let totalTime = this._perfIndexStopwatch.realTimeSeconds * 1000;
|
||||||
let timePerToken = totalTime / batchCount;
|
let timePerToken = totalTime / batchCount;
|
||||||
|
|
|
||||||
|
|
@ -724,13 +724,13 @@ nsresult nsPop3Sink::WriteLineToMailbox(const nsACString& buffer)
|
||||||
nsString folderName;
|
nsString folderName;
|
||||||
if (localFolder)
|
if (localFolder)
|
||||||
localFolder->GetPrettiestName(folderName);
|
localFolder->GetPrettiestName(folderName);
|
||||||
// This merits a console message, it's poor man's telemetry.
|
// This merits a console message.
|
||||||
MsgLogToConsole4(
|
MsgLogToConsole4(
|
||||||
NS_LITERAL_STRING("Unexpected file position change detected") +
|
NS_LITERAL_STRING("Unexpected file position change detected") +
|
||||||
(folderName.IsEmpty() ? EmptyString() : NS_LITERAL_STRING(" in folder ")) +
|
(folderName.IsEmpty() ? EmptyString() : NS_LITERAL_STRING(" in folder ")) +
|
||||||
(folderName.IsEmpty() ? EmptyString() : folderName) + NS_LITERAL_STRING(". "
|
(folderName.IsEmpty() ? EmptyString() : folderName) + NS_LITERAL_STRING(". "
|
||||||
"If you can reliably reproduce this, please report the steps "
|
"If you can reliably reproduce this, please report the steps "
|
||||||
"you used to dev-apps-thunderbird@lists.mozilla.org or to bug 1308335 at bugzilla.mozilla.org. "
|
"you used to the application maintainer. "
|
||||||
"Resolving this problem will allow speeding up message downloads."),
|
"Resolving this problem will allow speeding up message downloads."),
|
||||||
NS_LITERAL_STRING(__FILE__), __LINE__, nsIScriptError::errorFlag);
|
NS_LITERAL_STRING(__FILE__), __LINE__, nsIScriptError::errorFlag);
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
|
|
|
||||||
|
|
@ -88,8 +88,6 @@ static nsresult pref_InitInitialObjects(void);
|
||||||
static nsresult pref_LoadPrefsInDirList(const char *listId);
|
static nsresult pref_LoadPrefsInDirList(const char *listId);
|
||||||
static nsresult ReadExtensionPrefs(nsIFile *aFile);
|
static nsresult ReadExtensionPrefs(nsIFile *aFile);
|
||||||
|
|
||||||
static const char kTelemetryPref[] = "toolkit.telemetry.enabled";
|
|
||||||
static const char kOldTelemetryPref[] = "toolkit.telemetry.enabledPreRelease";
|
|
||||||
static const char kChannelPref[] = "app.update.channel";
|
static const char kChannelPref[] = "app.update.channel";
|
||||||
|
|
||||||
static const char kPrefFileHeader[] =
|
static const char kPrefFileHeader[] =
|
||||||
|
|
@ -644,12 +642,6 @@ Preferences::ReadUserPrefs(nsIFile *aFile)
|
||||||
// Ignore all errors related to it, so we retain 'rv' value :-|
|
// Ignore all errors related to it, so we retain 'rv' value :-|
|
||||||
(void) UseUserPrefFile();
|
(void) UseUserPrefFile();
|
||||||
|
|
||||||
// Migrate the old prerelease telemetry pref
|
|
||||||
if (!Preferences::GetBool(kOldTelemetryPref, true)) {
|
|
||||||
Preferences::SetBool(kTelemetryPref, false);
|
|
||||||
Preferences::ClearUser(kOldTelemetryPref);
|
|
||||||
}
|
|
||||||
|
|
||||||
NotifyServiceObservers(NS_PREFSERVICE_READ_TOPIC_ID);
|
NotifyServiceObservers(NS_PREFSERVICE_READ_TOPIC_ID);
|
||||||
} else {
|
} else {
|
||||||
rv = ReadAndOwnUserPrefFile(aFile);
|
rv = ReadAndOwnUserPrefFile(aFile);
|
||||||
|
|
@ -1336,23 +1328,6 @@ static nsresult pref_InitInitialObjects()
|
||||||
rv = pref_LoadPrefsInDirList(NS_APP_PREFS_DEFAULTS_DIR_LIST);
|
rv = pref_LoadPrefsInDirList(NS_APP_PREFS_DEFAULTS_DIR_LIST);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
// Set up the correct default for toolkit.telemetry.enabled.
|
|
||||||
// If this build has MOZ_TELEMETRY_ON_BY_DEFAULT *or* we're on the beta
|
|
||||||
// channel, telemetry is on by default, otherwise not. This is necessary
|
|
||||||
// so that beta users who are testing final release builds don't flipflop
|
|
||||||
// defaults.
|
|
||||||
if (Preferences::GetDefaultType(kTelemetryPref) == nsIPrefBranch::PREF_INVALID) {
|
|
||||||
bool prerelease = false;
|
|
||||||
#ifdef MOZ_TELEMETRY_ON_BY_DEFAULT
|
|
||||||
prerelease = true;
|
|
||||||
#else
|
|
||||||
if (Preferences::GetDefaultCString(kChannelPref).EqualsLiteral("beta")) {
|
|
||||||
prerelease = true;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
PREF_SetBoolPref(kTelemetryPref, prerelease, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
|
NS_CreateServicesFromCategory(NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID,
|
||||||
nullptr, NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID);
|
nullptr, NS_PREFSERVICE_APPDEFAULTS_TOPIC_ID);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,2 @@
|
||||||
#include ../../netwerk/base/security-prefs.js
|
#include ../../netwerk/base/security-prefs.js
|
||||||
#include init/all.js
|
#include init/all.js
|
||||||
#ifdef MOZ_DATA_REPORTING
|
|
||||||
#include ../../toolkit/components/telemetry/datareporting-prefs.js
|
|
||||||
#endif
|
|
||||||
#ifdef MOZ_SERVICES_HEALTHREPORT
|
|
||||||
#include ../../toolkit/components/telemetry/healthreport-prefs.js
|
|
||||||
#endif
|
|
||||||
|
|
|
||||||
|
|
@ -891,19 +891,6 @@ pref("toolkit.scrollbox.verticalScrollDistance", 3);
|
||||||
pref("toolkit.scrollbox.horizontalScrollDistance", 5);
|
pref("toolkit.scrollbox.horizontalScrollDistance", 5);
|
||||||
pref("toolkit.scrollbox.clickToScroll.scrollDelay", 150);
|
pref("toolkit.scrollbox.clickToScroll.scrollDelay", 150);
|
||||||
|
|
||||||
// Telemetry settings.
|
|
||||||
// Server to submit telemetry pings to.
|
|
||||||
pref("toolkit.telemetry.server", "");
|
|
||||||
// Telemetry server owner. Please change if you set toolkit.telemetry.server to a different server
|
|
||||||
pref("toolkit.telemetry.server_owner", "");
|
|
||||||
// Information page about telemetry (temporary ; will be about:telemetry in the end)
|
|
||||||
pref("toolkit.telemetry.infoURL", "");
|
|
||||||
// Determines whether full SQL strings are returned when they might contain sensitive info
|
|
||||||
// i.e. dynamically constructed SQL strings or SQL executed by addons against addon DBs
|
|
||||||
pref("toolkit.telemetry.debugSlowSql", false);
|
|
||||||
// Whether to use the unified telemetry behavior, requires a restart.
|
|
||||||
pref("toolkit.telemetry.unified", false);
|
|
||||||
|
|
||||||
// Identity module
|
// Identity module
|
||||||
pref("toolkit.identity.enabled", false);
|
pref("toolkit.identity.enabled", false);
|
||||||
pref("toolkit.identity.debug", false);
|
pref("toolkit.identity.debug", false);
|
||||||
|
|
@ -979,9 +966,6 @@ pref("devtools.gcli.imgurUploadURL", "https://api.imgur.com/3/image");
|
||||||
// GCLI commands directory
|
// GCLI commands directory
|
||||||
pref("devtools.commands.dir", "");
|
pref("devtools.commands.dir", "");
|
||||||
|
|
||||||
// Allows setting the performance marks for which telemetry metrics will be recorded.
|
|
||||||
pref("devtools.telemetry.supported_performance_marks", "contentInteractive,navigationInteractive,navigationLoaded,visuallyLoaded,fullyLoaded,mediaEnumerated,scanEnd");
|
|
||||||
|
|
||||||
// Deprecation warnings after DevTools file migration.
|
// Deprecation warnings after DevTools file migration.
|
||||||
pref("devtools.migration.warnings", true);
|
pref("devtools.migration.warnings", true);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -69,8 +69,7 @@ TimeStamp::ProcessCreation(bool& aIsInconsistent)
|
||||||
|
|
||||||
if ((ts > sInitOnce.mFirstTimeStamp) || (uptime == 0)) {
|
if ((ts > sInitOnce.mFirstTimeStamp) || (uptime == 0)) {
|
||||||
/* If the process creation timestamp was inconsistent replace it with
|
/* If the process creation timestamp was inconsistent replace it with
|
||||||
* the first one instead and notify that a telemetry error was
|
* the first one instead. */
|
||||||
* detected. */
|
|
||||||
aIsInconsistent = true;
|
aIsInconsistent = true;
|
||||||
ts = sInitOnce.mFirstTimeStamp;
|
ts = sInitOnce.mFirstTimeStamp;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -492,13 +492,6 @@ Predictor::GetParallelSpeculativeConnectLimit(
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
Predictor::GetIsFromPredictor(bool *isFromPredictor)
|
|
||||||
{
|
|
||||||
*isFromPredictor = true;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
Predictor::GetAllow1918(bool *allow1918)
|
Predictor::GetAllow1918(bool *allow1918)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
/* vim:set ts=4 sw=4 et cindent: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* 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
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -29,20 +28,6 @@ interface nsIAuthModule : nsISupports
|
||||||
*/
|
*/
|
||||||
const unsigned long REQ_PROXY_AUTH = (1 << 2);
|
const unsigned long REQ_PROXY_AUTH = (1 << 2);
|
||||||
|
|
||||||
/**
|
|
||||||
* Flags used for telemetry.
|
|
||||||
*/
|
|
||||||
const unsigned long NTLM_MODULE_SAMBA_AUTH_PROXY = 0;
|
|
||||||
const unsigned long NTLM_MODULE_SAMBA_AUTH_DIRECT = 1;
|
|
||||||
const unsigned long NTLM_MODULE_WIN_API_PROXY = 2;
|
|
||||||
const unsigned long NTLM_MODULE_WIN_API_DIRECT = 3;
|
|
||||||
const unsigned long NTLM_MODULE_GENERIC_PROXY = 4;
|
|
||||||
const unsigned long NTLM_MODULE_GENERIC_DIRECT = 5;
|
|
||||||
const unsigned long NTLM_MODULE_KERBEROS_PROXY = 6;
|
|
||||||
const unsigned long NTLM_MODULE_KERBEROS_DIRECT = 7;
|
|
||||||
|
|
||||||
/** Other flags may be defined in the future */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called to initialize an auth module. The other methods cannot be called
|
* Called to initialize an auth module. The other methods cannot be called
|
||||||
* unless this method succeeds.
|
* unless this method succeeds.
|
||||||
|
|
|
||||||
|
|
@ -464,8 +464,7 @@ interface nsIBrowserSearchService : nsISupports
|
||||||
attribute nsISearchEngine currentEngine;
|
attribute nsISearchEngine currentEngine;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a representation of the default engine in an anonymized JSON
|
* Gets a representation of the default engine.
|
||||||
* string suitable for recording in the Telemetry environment.
|
|
||||||
*
|
*
|
||||||
* @return an object containing anonymized info about the default engine:
|
* @return an object containing anonymized info about the default engine:
|
||||||
* name, loadPath, submissionURL (for default engines).
|
* name, loadPath, submissionURL (for default engines).
|
||||||
|
|
|
||||||
|
|
@ -64,12 +64,6 @@ interface nsISpeculativeConnectionOverrider : nsISupports
|
||||||
*/
|
*/
|
||||||
[infallible] readonly attribute boolean ignoreIdle;
|
[infallible] readonly attribute boolean ignoreIdle;
|
||||||
|
|
||||||
/*
|
|
||||||
* Used by the Predictor to gather telemetry data on speculative connection
|
|
||||||
* usage.
|
|
||||||
*/
|
|
||||||
[infallible] readonly attribute boolean isFromPredictor;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* by default speculative connections are not made to RFC 1918 addresses
|
* by default speculative connections are not made to RFC 1918 addresses
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ pref("security.OCSP.require", false);
|
||||||
pref("security.OCSP.GET.enabled", false);
|
pref("security.OCSP.GET.enabled", false);
|
||||||
|
|
||||||
pref("security.pki.cert_short_lifetime_in_days", 10);
|
pref("security.pki.cert_short_lifetime_in_days", 10);
|
||||||
// NB: Changes to this pref affect CERT_CHAIN_SHA1_POLICY_STATUS telemetry.
|
// NB: Changes to this pref affect CERT_CHAIN_SHA1_POLICY_STATUS.
|
||||||
// See the comment in CertVerifier.cpp.
|
// See the comment in CertVerifier.cpp.
|
||||||
// 3 = only allow SHA-1 for certificates issued by an imported root.
|
// 3 = only allow SHA-1 for certificates issued by an imported root.
|
||||||
pref("security.pki.sha1_enforcement_level", 3);
|
pref("security.pki.sha1_enforcement_level", 3);
|
||||||
|
|
|
||||||
2
netwerk/cache/nsDiskCache.h
vendored
2
netwerk/cache/nsDiskCache.h
vendored
|
|
@ -24,8 +24,6 @@ public:
|
||||||
enum { kData, kMetaData };
|
enum { kData, kMetaData };
|
||||||
|
|
||||||
// Stores the reason why the cache is corrupt.
|
// Stores the reason why the cache is corrupt.
|
||||||
// Note: I'm only listing the enum values explicitly for easy mapping when
|
|
||||||
// looking at telemetry data.
|
|
||||||
enum CorruptCacheInfo {
|
enum CorruptCacheInfo {
|
||||||
kNotCorrupt = 0,
|
kNotCorrupt = 0,
|
||||||
kInvalidArgPointer = 1,
|
kInvalidArgPointer = 1,
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
namespace net {
|
namespace net {
|
||||||
|
|
||||||
#define kMinMetadataRead 1024 // TODO find optimal value from telemetry
|
#define kMinMetadataRead 1024 // TODO find optimal value
|
||||||
#define kAlignSize 4096
|
#define kAlignSize 4096
|
||||||
|
|
||||||
// Most of the cache entries fit into one chunk due to current chunk size. Make
|
// Most of the cache entries fit into one chunk due to current chunk size. Make
|
||||||
|
|
|
||||||
|
|
@ -1061,13 +1061,6 @@ AltSvcOverride::GetParallelSpeculativeConnectLimit(
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
NS_IMETHODIMP
|
|
||||||
AltSvcOverride::GetIsFromPredictor(bool *isFromPredictor)
|
|
||||||
{
|
|
||||||
*isFromPredictor = false;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
AltSvcOverride::GetAllow1918(bool *allow)
|
AltSvcOverride::GetAllow1918(bool *allow)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
/* vim:set expandtab ts=4 sw=4 sts=4 cin: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* 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
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -5829,8 +5828,6 @@ nsHttpChannel::HandleBeginConnectContinue()
|
||||||
nsresult
|
nsresult
|
||||||
nsHttpChannel::BeginConnectContinue()
|
nsHttpChannel::BeginConnectContinue()
|
||||||
{
|
{
|
||||||
nsresult rv;
|
|
||||||
|
|
||||||
// Check if request was cancelled during suspend AFTER on-modify-request or
|
// Check if request was cancelled during suspend AFTER on-modify-request or
|
||||||
// on-useragent.
|
// on-useragent.
|
||||||
if (mCanceled) {
|
if (mCanceled) {
|
||||||
|
|
@ -6652,41 +6649,6 @@ nsHttpChannel::OnStopRequest(nsIRequest *request, nsISupports *ctxt, nsresult st
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// HTTP_CHANNEL_DISPOSITION TELEMETRY
|
|
||||||
enum ChannelDisposition
|
|
||||||
{
|
|
||||||
kHttpCanceled = 0,
|
|
||||||
kHttpDisk = 1,
|
|
||||||
kHttpNetOK = 2,
|
|
||||||
kHttpNetEarlyFail = 3,
|
|
||||||
kHttpNetLateFail = 4,
|
|
||||||
kHttpsCanceled = 8,
|
|
||||||
kHttpsDisk = 9,
|
|
||||||
kHttpsNetOK = 10,
|
|
||||||
kHttpsNetEarlyFail = 11,
|
|
||||||
kHttpsNetLateFail = 12
|
|
||||||
} chanDisposition = kHttpCanceled;
|
|
||||||
|
|
||||||
// HTTP 0.9 is more likely to be an error than really 0.9, so count it that way
|
|
||||||
if (mCanceled) {
|
|
||||||
chanDisposition = kHttpCanceled;
|
|
||||||
} else if (!mUsedNetwork) {
|
|
||||||
chanDisposition = kHttpDisk;
|
|
||||||
} else if (NS_SUCCEEDED(status) &&
|
|
||||||
mResponseHead &&
|
|
||||||
mResponseHead->Version() != NS_HTTP_VERSION_0_9) {
|
|
||||||
chanDisposition = kHttpNetOK;
|
|
||||||
} else if (!mTransferSize) {
|
|
||||||
chanDisposition = kHttpNetEarlyFail;
|
|
||||||
} else {
|
|
||||||
chanDisposition = kHttpNetLateFail;
|
|
||||||
}
|
|
||||||
if (IsHTTPS()) {
|
|
||||||
// shift http to https disposition enums
|
|
||||||
chanDisposition = static_cast<ChannelDisposition>(chanDisposition + kHttpsCanceled);
|
|
||||||
}
|
|
||||||
LOG((" nsHttpChannel::OnStopRequest ChannelDisposition %d\n", chanDisposition));
|
|
||||||
|
|
||||||
// if needed, check cache entry has all data we expect
|
// if needed, check cache entry has all data we expect
|
||||||
if (mCacheEntry && mCachePump &&
|
if (mCacheEntry && mCachePump &&
|
||||||
mConcurrentCacheAccess && contentComplete) {
|
mConcurrentCacheAccess && contentComplete) {
|
||||||
|
|
|
||||||
|
|
@ -378,7 +378,7 @@ private:
|
||||||
// for the end of
|
// for the end of
|
||||||
// the handsake.
|
// the handsake.
|
||||||
int64_t mContentBytesWritten0RTT;
|
int64_t mContentBytesWritten0RTT;
|
||||||
bool mEarlyDataNegotiated; //Only used for telemetry
|
bool mEarlyDataNegotiated;
|
||||||
nsCString mEarlyNegotiatedALPN;
|
nsCString mEarlyNegotiatedALPN;
|
||||||
bool mDid0RTTSpdy;
|
bool mDid0RTTSpdy;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
/* vim:set ts=4 sw=4 sts=4 et cin: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* 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
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -393,7 +392,6 @@ public: // intentional!
|
||||||
bool mOverridesOK;
|
bool mOverridesOK;
|
||||||
uint32_t mParallelSpeculativeConnectLimit;
|
uint32_t mParallelSpeculativeConnectLimit;
|
||||||
bool mIgnoreIdle;
|
bool mIgnoreIdle;
|
||||||
bool mIsFromPredictor;
|
|
||||||
bool mAllow1918;
|
bool mAllow1918;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
@ -447,7 +445,6 @@ nsHttpConnectionMgr::SpeculativeConnect(nsHttpConnectionInfo *ci,
|
||||||
args->mParallelSpeculativeConnectLimit =
|
args->mParallelSpeculativeConnectLimit =
|
||||||
overrider->GetParallelSpeculativeConnectLimit();
|
overrider->GetParallelSpeculativeConnectLimit();
|
||||||
args->mIgnoreIdle = overrider->GetIgnoreIdle();
|
args->mIgnoreIdle = overrider->GetIgnoreIdle();
|
||||||
args->mIsFromPredictor = overrider->GetIsFromPredictor();
|
|
||||||
args->mAllow1918 = overrider->GetAllow1918();
|
args->mAllow1918 = overrider->GetAllow1918();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1285,7 +1282,7 @@ nsHttpConnectionMgr::MakeNewConnection(nsConnectionEntry *ent,
|
||||||
if (AtActiveConnectionLimit(ent, trans->Caps()))
|
if (AtActiveConnectionLimit(ent, trans->Caps()))
|
||||||
return NS_ERROR_NOT_AVAILABLE;
|
return NS_ERROR_NOT_AVAILABLE;
|
||||||
|
|
||||||
nsresult rv = CreateTransport(ent, trans, trans->Caps(), false, false, true);
|
nsresult rv = CreateTransport(ent, trans, trans->Caps(), false, true);
|
||||||
if (NS_FAILED(rv)) {
|
if (NS_FAILED(rv)) {
|
||||||
/* hard failure */
|
/* hard failure */
|
||||||
LOG(("nsHttpConnectionMgr::MakeNewConnection [ci = %s trans = %p] "
|
LOG(("nsHttpConnectionMgr::MakeNewConnection [ci = %s trans = %p] "
|
||||||
|
|
@ -1946,7 +1943,6 @@ nsHttpConnectionMgr::CreateTransport(nsConnectionEntry *ent,
|
||||||
nsAHttpTransaction *trans,
|
nsAHttpTransaction *trans,
|
||||||
uint32_t caps,
|
uint32_t caps,
|
||||||
bool speculative,
|
bool speculative,
|
||||||
bool isFromPredictor,
|
|
||||||
bool allow1918)
|
bool allow1918)
|
||||||
{
|
{
|
||||||
MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread);
|
MOZ_ASSERT(PR_GetCurrentThread() == gSocketThread);
|
||||||
|
|
@ -1955,10 +1951,6 @@ nsHttpConnectionMgr::CreateTransport(nsConnectionEntry *ent,
|
||||||
if (speculative) {
|
if (speculative) {
|
||||||
sock->SetSpeculative(true);
|
sock->SetSpeculative(true);
|
||||||
sock->SetAllow1918(allow1918);
|
sock->SetAllow1918(allow1918);
|
||||||
|
|
||||||
if (isFromPredictor) {
|
|
||||||
sock->SetIsFromPredictor(true);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The socket stream holds the reference to the half open
|
// The socket stream holds the reference to the half open
|
||||||
|
|
@ -2884,13 +2876,11 @@ nsHttpConnectionMgr::OnMsgSpeculativeConnect(int32_t, ARefBase *param)
|
||||||
uint32_t parallelSpeculativeConnectLimit =
|
uint32_t parallelSpeculativeConnectLimit =
|
||||||
gHttpHandler->ParallelSpeculativeConnectLimit();
|
gHttpHandler->ParallelSpeculativeConnectLimit();
|
||||||
bool ignoreIdle = false;
|
bool ignoreIdle = false;
|
||||||
bool isFromPredictor = false;
|
|
||||||
bool allow1918 = false;
|
bool allow1918 = false;
|
||||||
|
|
||||||
if (args->mOverridesOK) {
|
if (args->mOverridesOK) {
|
||||||
parallelSpeculativeConnectLimit = args->mParallelSpeculativeConnectLimit;
|
parallelSpeculativeConnectLimit = args->mParallelSpeculativeConnectLimit;
|
||||||
ignoreIdle = args->mIgnoreIdle;
|
ignoreIdle = args->mIgnoreIdle;
|
||||||
isFromPredictor = args->mIsFromPredictor;
|
|
||||||
allow1918 = args->mAllow1918;
|
allow1918 = args->mAllow1918;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2900,7 +2890,7 @@ nsHttpConnectionMgr::OnMsgSpeculativeConnect(int32_t, ARefBase *param)
|
||||||
!ent->mIdleConns.Length()) &&
|
!ent->mIdleConns.Length()) &&
|
||||||
!(keepAlive && RestrictConnections(ent)) &&
|
!(keepAlive && RestrictConnections(ent)) &&
|
||||||
!AtActiveConnectionLimit(ent, args->mTrans->Caps())) {
|
!AtActiveConnectionLimit(ent, args->mTrans->Caps())) {
|
||||||
CreateTransport(ent, args->mTrans, args->mTrans->Caps(), true, isFromPredictor, allow1918);
|
CreateTransport(ent, args->mTrans, args->mTrans->Caps(), true, allow1918);
|
||||||
} else {
|
} else {
|
||||||
LOG(("OnMsgSpeculativeConnect Transport "
|
LOG(("OnMsgSpeculativeConnect Transport "
|
||||||
"not created due to existing connection count\n"));
|
"not created due to existing connection count\n"));
|
||||||
|
|
@ -2949,7 +2939,6 @@ nsHalfOpenSocket::nsHalfOpenSocket(nsConnectionEntry *ent,
|
||||||
, mDispatchedMTransaction(false)
|
, mDispatchedMTransaction(false)
|
||||||
, mCaps(caps)
|
, mCaps(caps)
|
||||||
, mSpeculative(false)
|
, mSpeculative(false)
|
||||||
, mIsFromPredictor(false)
|
|
||||||
, mAllow1918(true)
|
, mAllow1918(true)
|
||||||
, mHasConnected(false)
|
, mHasConnected(false)
|
||||||
, mPrimaryConnectedOK(false)
|
, mPrimaryConnectedOK(false)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
/* vim:set ts=4 sw=4 sts=4 et cin: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* 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
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -435,9 +434,6 @@ private:
|
||||||
bool IsSpeculative() { return mSpeculative; }
|
bool IsSpeculative() { return mSpeculative; }
|
||||||
void SetSpeculative(bool val) { mSpeculative = val; }
|
void SetSpeculative(bool val) { mSpeculative = val; }
|
||||||
|
|
||||||
bool IsFromPredictor() { return mIsFromPredictor; }
|
|
||||||
void SetIsFromPredictor(bool val) { mIsFromPredictor = val; }
|
|
||||||
|
|
||||||
bool Allow1918() { return mAllow1918; }
|
bool Allow1918() { return mAllow1918; }
|
||||||
void SetAllow1918(bool val) { mAllow1918 = val; }
|
void SetAllow1918(bool val) { mAllow1918 = val; }
|
||||||
|
|
||||||
|
|
@ -462,11 +458,6 @@ private:
|
||||||
// more connections that are needed.)
|
// more connections that are needed.)
|
||||||
bool mSpeculative;
|
bool mSpeculative;
|
||||||
|
|
||||||
// mIsFromPredictor is set if the socket originated from the network
|
|
||||||
// Predictor. It is used to gather telemetry data on used speculative
|
|
||||||
// connections from the predictor.
|
|
||||||
bool mIsFromPredictor;
|
|
||||||
|
|
||||||
bool mAllow1918;
|
bool mAllow1918;
|
||||||
|
|
||||||
TimeStamp mPrimarySynStarted;
|
TimeStamp mPrimarySynStarted;
|
||||||
|
|
@ -532,7 +523,7 @@ private:
|
||||||
nsresult EnsureSocketThreadTarget();
|
nsresult EnsureSocketThreadTarget();
|
||||||
void ClosePersistentConnections(nsConnectionEntry *ent);
|
void ClosePersistentConnections(nsConnectionEntry *ent);
|
||||||
nsresult CreateTransport(nsConnectionEntry *, nsAHttpTransaction *,
|
nsresult CreateTransport(nsConnectionEntry *, nsAHttpTransaction *,
|
||||||
uint32_t, bool, bool, bool);
|
uint32_t, bool, bool);
|
||||||
void AddActiveConn(nsHttpConnection *, nsConnectionEntry *);
|
void AddActiveConn(nsHttpConnection *, nsConnectionEntry *);
|
||||||
void DecrementActiveConnCount(nsHttpConnection *);
|
void DecrementActiveConnCount(nsHttpConnection *);
|
||||||
void StartedConnect();
|
void StartedConnect();
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
||||||
/* vim:set ts=4 sw=4 sts=4 et cin: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* 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
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -1505,8 +1504,7 @@ nsHttpHandler::PrefsChanged(nsIPrefBranch *prefs, const char *pref)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// toggle to true anytime a token bucket related pref is changed.. that
|
// toggle to true anytime a token bucket related pref is changed.
|
||||||
// includes telemetry and allow-experiments because of the abtest profile
|
|
||||||
bool requestTokenBucketUpdated = false;
|
bool requestTokenBucketUpdated = false;
|
||||||
|
|
||||||
// "security.ssl3.ecdhe_rsa_aes_128_gcm_sha256" is the required h2 interop
|
// "security.ssl3.ecdhe_rsa_aes_128_gcm_sha256" is the required h2 interop
|
||||||
|
|
|
||||||
|
|
@ -2985,35 +2985,6 @@ WebSocketChannel::StartPinging()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
WebSocketChannel::ReportConnectionTelemetry()
|
|
||||||
{
|
|
||||||
// 3 bits are used. high bit is for wss, middle bit for failed,
|
|
||||||
// and low bit for proxy..
|
|
||||||
// 0 - 7 : ws-ok-plain, ws-ok-proxy, ws-failed-plain, ws-failed-proxy,
|
|
||||||
// wss-ok-plain, wss-ok-proxy, wss-failed-plain, wss-failed-proxy
|
|
||||||
|
|
||||||
bool didProxy = false;
|
|
||||||
|
|
||||||
nsCOMPtr<nsIProxyInfo> pi;
|
|
||||||
nsCOMPtr<nsIProxiedChannel> pc = do_QueryInterface(mChannel);
|
|
||||||
if (pc)
|
|
||||||
pc->GetProxyInfo(getter_AddRefs(pi));
|
|
||||||
if (pi) {
|
|
||||||
nsAutoCString proxyType;
|
|
||||||
pi->GetType(proxyType);
|
|
||||||
if (!proxyType.IsEmpty() &&
|
|
||||||
!proxyType.EqualsLiteral("direct"))
|
|
||||||
didProxy = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
uint8_t value = (mEncrypted ? (1 << 2) : 0) |
|
|
||||||
(!mGotUpgradeOK ? (1 << 1) : 0) |
|
|
||||||
(didProxy ? (1 << 0) : 0);
|
|
||||||
|
|
||||||
LOG(("WebSocketChannel::ReportConnectionTelemetry() %p %d", this, value));
|
|
||||||
}
|
|
||||||
|
|
||||||
// nsIDNSListener
|
// nsIDNSListener
|
||||||
|
|
||||||
NS_IMETHODIMP
|
NS_IMETHODIMP
|
||||||
|
|
@ -3896,8 +3867,6 @@ WebSocketChannel::OnStopRequest(nsIRequest *aRequest,
|
||||||
this, aRequest, mHttpChannel.get(), aStatusCode));
|
this, aRequest, mHttpChannel.get(), aStatusCode));
|
||||||
MOZ_ASSERT(NS_IsMainThread(), "not main thread");
|
MOZ_ASSERT(NS_IsMainThread(), "not main thread");
|
||||||
|
|
||||||
ReportConnectionTelemetry();
|
|
||||||
|
|
||||||
// This is the end of the HTTP upgrade transaction, the
|
// This is the end of the HTTP upgrade transaction, the
|
||||||
// upgraded streams live on
|
// upgraded streams live on
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -158,7 +158,6 @@ private:
|
||||||
nsresult DoAdmissionDNS();
|
nsresult DoAdmissionDNS();
|
||||||
nsresult StartWebsocketData();
|
nsresult StartWebsocketData();
|
||||||
uint16_t ResultToCloseCode(nsresult resultCode);
|
uint16_t ResultToCloseCode(nsresult resultCode);
|
||||||
void ReportConnectionTelemetry();
|
|
||||||
|
|
||||||
void StopSession(nsresult reason);
|
void StopSession(nsresult reason);
|
||||||
void AbortSession(nsresult reason);
|
void AbortSession(nsresult reason);
|
||||||
|
|
|
||||||
|
|
@ -902,7 +902,7 @@ public class Tokenizer implements Locator {
|
||||||
// CPPONLY: if (strBufLen == strBuf.length) {
|
// CPPONLY: if (strBufLen == strBuf.length) {
|
||||||
// CPPONLY: if (!EnsureBufferSpace(1)) {
|
// CPPONLY: if (!EnsureBufferSpace(1)) {
|
||||||
// CPPONLY: assert false: "RELEASE: Unable to recover from buffer reallocation failure";
|
// CPPONLY: assert false: "RELEASE: Unable to recover from buffer reallocation failure";
|
||||||
// CPPONLY: } // TODO: Add telemetry when outer if fires but inner does not
|
// CPPONLY: }
|
||||||
// CPPONLY: }
|
// CPPONLY: }
|
||||||
strBuf[strBufLen++] = c;
|
strBuf[strBufLen++] = c;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -434,8 +434,7 @@ CertVerifier::VerifyCert(CERTCertificate* cert, SECCertificateUsage usage,
|
||||||
// chosen by the server.
|
// chosen by the server.
|
||||||
|
|
||||||
// These configurations are in order of most restrictive to least
|
// These configurations are in order of most restrictive to least
|
||||||
// restrictive. This enables us to gather telemetry on the expected
|
// restrictive.
|
||||||
// results of setting the default policy to a particular configuration.
|
|
||||||
SHA1Mode sha1ModeConfigurations[] = {
|
SHA1Mode sha1ModeConfigurations[] = {
|
||||||
SHA1Mode::Forbidden,
|
SHA1Mode::Forbidden,
|
||||||
SHA1Mode::ImportedRoot,
|
SHA1Mode::ImportedRoot,
|
||||||
|
|
@ -474,8 +473,7 @@ CertVerifier::VerifyCert(CERTCertificate* cert, SECCertificateUsage usage,
|
||||||
// (mSHA1Mode) is more restrictive than the SHA1 mode option we're on.
|
// (mSHA1Mode) is more restrictive than the SHA1 mode option we're on.
|
||||||
// (To put it another way, only attempt verification if the SHA1 mode
|
// (To put it another way, only attempt verification if the SHA1 mode
|
||||||
// option we're on is as restrictive or more restrictive than
|
// option we're on is as restrictive or more restrictive than
|
||||||
// mSHA1Mode.) This allows us to gather telemetry information while
|
// mSHA1Mode.)
|
||||||
// still enforcing the mode set by preferences.
|
|
||||||
if (SHA1ModeMoreRestrictiveThanGivenMode(sha1ModeConfigurations[i])) {
|
if (SHA1ModeMoreRestrictiveThanGivenMode(sha1ModeConfigurations[i])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -555,8 +553,7 @@ CertVerifier::VerifyCert(CERTCertificate* cert, SECCertificateUsage usage,
|
||||||
// (mSHA1Mode) is more restrictive than the SHA1 mode option we're on.
|
// (mSHA1Mode) is more restrictive than the SHA1 mode option we're on.
|
||||||
// (To put it another way, only attempt verification if the SHA1 mode
|
// (To put it another way, only attempt verification if the SHA1 mode
|
||||||
// option we're on is as restrictive or more restrictive than
|
// option we're on is as restrictive or more restrictive than
|
||||||
// mSHA1Mode.) This allows us to gather telemetry information while
|
// mSHA1Mode.)
|
||||||
// still enforcing the mode set by preferences.
|
|
||||||
if (SHA1ModeMoreRestrictiveThanGivenMode(sha1ModeConfigurations[j])) {
|
if (SHA1ModeMoreRestrictiveThanGivenMode(sha1ModeConfigurations[j])) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
@ -612,10 +609,6 @@ CertVerifier::VerifyCert(CERTCertificate* cert, SECCertificateUsage usage,
|
||||||
if (keySizeStatus) {
|
if (keySizeStatus) {
|
||||||
*keySizeStatus = KeySizeStatus::AlreadyBad;
|
*keySizeStatus = KeySizeStatus::AlreadyBad;
|
||||||
}
|
}
|
||||||
// The telemetry probe CERT_CHAIN_SHA1_POLICY_STATUS gives us feedback on
|
|
||||||
// the result of setting a specific policy. However, we don't want noise
|
|
||||||
// from users who have manually set the policy to something other than the
|
|
||||||
// default, so we only collect for ImportedRoot (which is the default).
|
|
||||||
if (sha1ModeResult && mSHA1Mode == SHA1Mode::ImportedRoot) {
|
if (sha1ModeResult && mSHA1Mode == SHA1Mode::ImportedRoot) {
|
||||||
*sha1ModeResult = SHA1ModeResult::Failed;
|
*sha1ModeResult = SHA1ModeResult::Failed;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -44,7 +44,6 @@ namespace mozilla { namespace psm {
|
||||||
|
|
||||||
typedef mozilla::pkix::Result Result;
|
typedef mozilla::pkix::Result Result;
|
||||||
|
|
||||||
// These values correspond to the CERT_CHAIN_KEY_SIZE_STATUS telemetry.
|
|
||||||
enum class KeySizeStatus {
|
enum class KeySizeStatus {
|
||||||
NeverChecked = 0,
|
NeverChecked = 0,
|
||||||
LargeMinimumSucceeded = 1,
|
LargeMinimumSucceeded = 1,
|
||||||
|
|
@ -52,7 +51,6 @@ enum class KeySizeStatus {
|
||||||
AlreadyBad = 3,
|
AlreadyBad = 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
// These values correspond to the CERT_CHAIN_SHA1_POLICY_STATUS telemetry.
|
|
||||||
enum class SHA1ModeResult {
|
enum class SHA1ModeResult {
|
||||||
NeverChecked = 0,
|
NeverChecked = 0,
|
||||||
SucceededWithoutSHA1 = 1,
|
SucceededWithoutSHA1 = 1,
|
||||||
|
|
@ -92,7 +90,6 @@ public:
|
||||||
// TLS feature request_status should be ignored
|
// TLS feature request_status should be ignored
|
||||||
static const Flags FLAG_TLS_IGNORE_STATUS_REQUEST;
|
static const Flags FLAG_TLS_IGNORE_STATUS_REQUEST;
|
||||||
|
|
||||||
// These values correspond to the SSL_OCSP_STAPLING telemetry.
|
|
||||||
enum OCSPStaplingStatus {
|
enum OCSPStaplingStatus {
|
||||||
OCSP_STAPLING_NEVER_CHECKED = 0,
|
OCSP_STAPLING_NEVER_CHECKED = 0,
|
||||||
OCSP_STAPLING_GOOD = 1,
|
OCSP_STAPLING_GOOD = 1,
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ OCSPVerificationTrustDomain::CheckSignatureDigestAlgorithm(
|
||||||
// The reason for wrapping the NSSCertDBTrustDomain in an
|
// The reason for wrapping the NSSCertDBTrustDomain in an
|
||||||
// OCSPVerificationTrustDomain is to allow us to bypass the weaker signature
|
// OCSPVerificationTrustDomain is to allow us to bypass the weaker signature
|
||||||
// algorithm check - thus all allowable signature digest algorithms should
|
// algorithm check - thus all allowable signature digest algorithms should
|
||||||
// always be accepted. This is only needed while we gather telemetry on SHA-1.
|
// always be accepted.
|
||||||
return Success;
|
return Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -163,8 +163,6 @@ protected:
|
||||||
SECOidTag mOidTagForStoringNewHashes;
|
SECOidTag mOidTagForStoringNewHashes;
|
||||||
nsCString mDottedOidForStoringNewHashes;
|
nsCString mDottedOidForStoringNewHashes;
|
||||||
|
|
||||||
void CountPermanentOverrideTelemetry();
|
|
||||||
|
|
||||||
void RemoveAllFromMemory();
|
void RemoveAllFromMemory();
|
||||||
nsresult Read();
|
nsresult Read();
|
||||||
nsresult Write();
|
nsresult Write();
|
||||||
|
|
|
||||||
|
|
@ -41,7 +41,6 @@ extern LazyLogModule gPIPNSSLog;
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
// Bits in bit mask for SSL_REASONS_FOR_NOT_FALSE_STARTING telemetry probe
|
|
||||||
// These bits are numbered so that the least subtle issues have higher values.
|
// These bits are numbered so that the least subtle issues have higher values.
|
||||||
// This should make it easier for us to interpret the results.
|
// This should make it easier for us to interpret the results.
|
||||||
const uint32_t NPN_NOT_NEGOTIATED = 64;
|
const uint32_t NPN_NOT_NEGOTIATED = 64;
|
||||||
|
|
|
||||||
|
|
@ -596,13 +596,6 @@ StartupCache::ResetStartupWriteTimer()
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
|
||||||
StartupCache::RecordAgesAlways()
|
|
||||||
{
|
|
||||||
gPostFlushAgeAction = RECORD_AGE;
|
|
||||||
return NS_OK;
|
|
||||||
}
|
|
||||||
|
|
||||||
// StartupCacheDebugOutputStream implementation
|
// StartupCacheDebugOutputStream implementation
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
NS_IMPL_ISUPPORTS(StartupCacheDebugOutputStream, nsIObjectOutputStream,
|
NS_IMPL_ISUPPORTS(StartupCacheDebugOutputStream, nsIObjectOutputStream,
|
||||||
|
|
@ -798,11 +791,5 @@ StartupCacheWrapper::GetObserver(nsIObserver** obv) {
|
||||||
return NS_OK;
|
return NS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
|
||||||
StartupCacheWrapper::RecordAgesAlways() {
|
|
||||||
StartupCache *sc = StartupCache::GetSingleton();
|
|
||||||
return sc ? sc->RecordAgesAlways() : NS_ERROR_NOT_INITIALIZED;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace scache
|
} // namespace scache
|
||||||
} // namespace mozilla
|
} // namespace mozilla
|
||||||
|
|
|
||||||
|
|
@ -129,8 +129,6 @@ public:
|
||||||
nsresult GetDebugObjectOutputStream(nsIObjectOutputStream* aStream,
|
nsresult GetDebugObjectOutputStream(nsIObjectOutputStream* aStream,
|
||||||
nsIObjectOutputStream** outStream);
|
nsIObjectOutputStream** outStream);
|
||||||
|
|
||||||
nsresult RecordAgesAlways();
|
|
||||||
|
|
||||||
static StartupCache* GetSingleton();
|
static StartupCache* GetSingleton();
|
||||||
static void DeleteSingleton();
|
static void DeleteSingleton();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,10 +55,6 @@ interface nsIStartupCache : nsISupports
|
||||||
boolean startupWriteComplete();
|
boolean startupWriteComplete();
|
||||||
void resetStartupWriteTimer();
|
void resetStartupWriteTimer();
|
||||||
|
|
||||||
/* Instruct clients to always post cache ages to Telemetry, even in
|
|
||||||
cases where it would not normally make sense. */
|
|
||||||
void recordAgesAlways();
|
|
||||||
|
|
||||||
/* Allows clients to simulate the behavior of ObserverService. */
|
/* Allows clients to simulate the behavior of ObserverService. */
|
||||||
readonly attribute nsIObserver observer;
|
readonly attribute nsIObserver observer;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -410,54 +410,10 @@ int main(int argc, char** argv)
|
||||||
int rv = 0;
|
int rv = 0;
|
||||||
nsresult scrv;
|
nsresult scrv;
|
||||||
|
|
||||||
// Register TestStartupCacheTelemetry
|
|
||||||
nsCOMPtr<nsIFile> manifest;
|
|
||||||
scrv = NS_GetSpecialDirectory(NS_GRE_DIR,
|
|
||||||
getter_AddRefs(manifest));
|
|
||||||
if (NS_FAILED(scrv)) {
|
|
||||||
fail("NS_XPCOM_CURRENT_PROCESS_DIR");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
nsCOMPtr<nsIFile> tempManifest;
|
|
||||||
manifest->Clone(getter_AddRefs(tempManifest));
|
|
||||||
manifest->AppendNative(
|
|
||||||
NS_LITERAL_CSTRING("TestStartupCacheTelemetry.manifest"));
|
|
||||||
bool exists;
|
|
||||||
manifest->Exists(&exists);
|
|
||||||
if (!exists) {
|
|
||||||
// Workaround for bug 1080338 in mozharness.
|
|
||||||
manifest = tempManifest.forget();
|
|
||||||
manifest->SetNativeLeafName(NS_LITERAL_CSTRING("MacOS"));
|
|
||||||
manifest->AppendNative(
|
|
||||||
NS_LITERAL_CSTRING("TestStartupCacheTelemetry.manifest"));
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
manifest->AppendNative(
|
|
||||||
NS_LITERAL_CSTRING("TestStartupCacheTelemetry.manifest"));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
XRE_AddManifestLocation(NS_APP_LOCATION, manifest);
|
|
||||||
|
|
||||||
nsCOMPtr<nsIObserver> telemetryThing =
|
|
||||||
do_GetService("@mozilla.org/testing/startup-cache-telemetry.js");
|
|
||||||
if (!telemetryThing) {
|
|
||||||
fail("telemetryThing");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
scrv = telemetryThing->Observe(nullptr, "save-initial", nullptr);
|
|
||||||
if (NS_FAILED(scrv)) {
|
|
||||||
fail("save-initial");
|
|
||||||
rv = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIStartupCache> sc
|
nsCOMPtr<nsIStartupCache> sc
|
||||||
= do_GetService("@mozilla.org/startupcache/cache;1", &scrv);
|
= do_GetService("@mozilla.org/startupcache/cache;1", &scrv);
|
||||||
if (NS_FAILED(scrv))
|
if (NS_FAILED(scrv))
|
||||||
rv = 1;
|
rv = 1;
|
||||||
else
|
|
||||||
sc->RecordAgesAlways();
|
|
||||||
if (NS_FAILED(TestStartupWriteRead()))
|
if (NS_FAILED(TestStartupWriteRead()))
|
||||||
rv = 1;
|
rv = 1;
|
||||||
if (NS_FAILED(TestWriteInvalidateRead()))
|
if (NS_FAILED(TestWriteInvalidateRead()))
|
||||||
|
|
@ -470,11 +426,5 @@ int main(int argc, char** argv)
|
||||||
if (NS_FAILED(TestEarlyShutdown()))
|
if (NS_FAILED(TestEarlyShutdown()))
|
||||||
rv = 1;
|
rv = 1;
|
||||||
|
|
||||||
scrv = telemetryThing->Observe(nullptr, "save-initial", nullptr);
|
|
||||||
if (NS_FAILED(scrv)) {
|
|
||||||
fail("check-final");
|
|
||||||
rv = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
return rv;
|
return rv;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,60 +0,0 @@
|
||||||
const Cc = Components.classes;
|
|
||||||
const Ci = Components.interfaces;
|
|
||||||
const Cu = Components.utils;
|
|
||||||
|
|
||||||
Cu.import("resource://gre/modules/Services.jsm");
|
|
||||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
||||||
|
|
||||||
function shouldHaveChanged(a, b)
|
|
||||||
{
|
|
||||||
if (a.length != b.length) {
|
|
||||||
throw Error("TEST-UNEXPECTED-FAIL: telemetry count array size changed");
|
|
||||||
}
|
|
||||||
|
|
||||||
for (let i = 0; i < a.length; ++i) {
|
|
||||||
if (a[i] == b[i]) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
return; // something was different, that's all that matters
|
|
||||||
}
|
|
||||||
throw Error("TEST-UNEXPECTED-FAIL: telemetry data didn't change");
|
|
||||||
}
|
|
||||||
|
|
||||||
function TestStartupCacheTelemetry() { }
|
|
||||||
|
|
||||||
TestStartupCacheTelemetry.prototype = {
|
|
||||||
classID: Components.ID("{73cbeffd-d6c7-42f0-aaf3-f176430dcfc8}"),
|
|
||||||
QueryInterface: XPCOMUtils.generateQI([Ci.nsIObserver]),
|
|
||||||
|
|
||||||
saveInitial: function() {
|
|
||||||
let t = Services.telemetry;
|
|
||||||
this._age = t.getHistogramById("STARTUP_CACHE_AGE_HOURS").snapshot.counts;
|
|
||||||
this._invalid = t.getHistogramById("STARTUP_CACHE_INVALID").snapshot.counts;
|
|
||||||
},
|
|
||||||
|
|
||||||
checkFinal: function() {
|
|
||||||
let t = Services.telemetry;
|
|
||||||
let newAge = t.getHistogramById("STARTUP_CACHE_AGE_HOURS").snapshot.counts;
|
|
||||||
shouldHaveChanged(this._age, newAge);
|
|
||||||
|
|
||||||
let newInvalid = t.getHistogramById("STARTUP_CACHE_INVALID").snapshot.counts;
|
|
||||||
shouldHaveChanged(this._invalid, newInvalid);
|
|
||||||
},
|
|
||||||
|
|
||||||
observe: function(subject, topic, data) {
|
|
||||||
switch (topic) {
|
|
||||||
case "save-initial":
|
|
||||||
this.saveInitial();
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "check-final":
|
|
||||||
this.checkFinal();
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
throw Error("BADDOG, NO MILKBONE FOR YOU");
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TestStartupCacheTelemetry]);
|
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
component {73cbeffd-d6c7-42f0-aaf3-f176430dcfc8} TestStartupCacheTelemetry.js
|
|
||||||
contract @mozilla.org/testing/startup-cache-telemetry.js {73cbeffd-d6c7-42f0-aaf3-f176430dcfc8}
|
|
||||||
|
|
@ -7,7 +7,3 @@ GeckoCppUnitTests([
|
||||||
'TestStartupCache',
|
'TestStartupCache',
|
||||||
])
|
])
|
||||||
|
|
||||||
EXTRA_COMPONENTS += [
|
|
||||||
'TestStartupCacheTelemetry.js',
|
|
||||||
'TestStartupCacheTelemetry.manifest',
|
|
||||||
]
|
|
||||||
|
|
|
||||||
|
|
@ -205,8 +205,7 @@ interface nsIGfxInfo : nsISupports
|
||||||
[implicit_jscontext]
|
[implicit_jscontext]
|
||||||
jsval getFeatureLog();
|
jsval getFeatureLog();
|
||||||
|
|
||||||
// Returns an object containing information about graphics features. It is
|
// Returns an object containing information about graphics features.
|
||||||
// intended to be directly included into the Telemetry environment.
|
|
||||||
//
|
//
|
||||||
// "layers":
|
// "layers":
|
||||||
// {
|
// {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,4 @@
|
||||||
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
||||||
/* vim:set ts=2 sts=2 sw=2 et cin: */
|
|
||||||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
/* 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
|
* 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/. */
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||||
|
|
@ -1983,8 +1982,7 @@ WinUtils::SanitizePath(const wchar_t* aInputPath, nsAString& aOutput)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function provides an array of (system path, substitution) pairs that are
|
* This function provides an array of (system path, substitution) pairs that are
|
||||||
* considered to be acceptable with respect to privacy, for the purposes of
|
* considered to be acceptable with respect to privacy.
|
||||||
* submitting within telemetry or crash reports.
|
|
||||||
*
|
*
|
||||||
* The substitution string's void flag may be set. If it is, no subsitution is
|
* The substitution string's void flag may be set. If it is, no subsitution is
|
||||||
* necessary. Otherwise, the consumer should replace the system path with the
|
* necessary. Otherwise, the consumer should replace the system path with the
|
||||||
|
|
|
||||||
|
|
@ -158,8 +158,7 @@ interface nsIMemoryReporter : nsISupports
|
||||||
*
|
*
|
||||||
* If |anonymize| is true, the memory reporter should anonymize any
|
* If |anonymize| is true, the memory reporter should anonymize any
|
||||||
* privacy-sensitive details in memory report paths, by replacing them with a
|
* privacy-sensitive details in memory report paths, by replacing them with a
|
||||||
* string such as "<anonymized>". Anonymized memory reports may be sent
|
* string such as "<anonymized>".
|
||||||
* automatically via crash reports or telemetry.
|
|
||||||
*
|
*
|
||||||
* The following things are considered privacy-sensitive.
|
* The following things are considered privacy-sensitive.
|
||||||
*
|
*
|
||||||
|
|
@ -312,8 +311,7 @@ interface nsIMemoryReporterManager : nsISupports
|
||||||
* registered with it as a black box. However, there are some
|
* registered with it as a black box. However, there are some
|
||||||
* "distinguished" amounts (as could be reported by a memory reporter) that
|
* "distinguished" amounts (as could be reported by a memory reporter) that
|
||||||
* the manager provides as attributes, because they are sufficiently
|
* the manager provides as attributes, because they are sufficiently
|
||||||
* interesting that we want external code (e.g. telemetry) to be able to rely
|
* interesting that we want external code to be able to rely on them.
|
||||||
* on them.
|
|
||||||
*
|
*
|
||||||
* Note that these are not reporters and so getReports() does not look at
|
* Note that these are not reporters and so getReports() does not look at
|
||||||
* them. However, distinguished amounts can be embedded in a reporter.
|
* them. However, distinguished amounts can be embedded in a reporter.
|
||||||
|
|
|
||||||
|
|
@ -486,9 +486,6 @@ XRE_API(bool,
|
||||||
XRE_API(void,
|
XRE_API(void,
|
||||||
XRE_InstallX11ErrorHandler, ())
|
XRE_InstallX11ErrorHandler, ())
|
||||||
|
|
||||||
XRE_API(void,
|
|
||||||
XRE_TelemetryAccumulate, (int aID, uint32_t aSample))
|
|
||||||
|
|
||||||
XRE_API(void,
|
XRE_API(void,
|
||||||
XRE_StartupTimelineRecord, (int aEvent, mozilla::TimeStamp aWhen))
|
XRE_StartupTimelineRecord, (int aEvent, mozilla::TimeStamp aWhen))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -96,7 +96,7 @@ bool fallocate(PRFileDesc* aFD, int64_t aLength);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use readahead to preload shared libraries into the file cache before loading.
|
* Use readahead to preload shared libraries into the file cache before loading.
|
||||||
* WARNING: This function should not be used without a telemetry field trial
|
* WARNING: This function should not be used without a field trial
|
||||||
* demonstrating a clear performance improvement!
|
* demonstrating a clear performance improvement!
|
||||||
*
|
*
|
||||||
* @param aFile nsIFile representing path to shared library
|
* @param aFile nsIFile representing path to shared library
|
||||||
|
|
@ -105,7 +105,7 @@ void ReadAheadLib(nsIFile* aFile);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use readahead to preload a file into the file cache before reading.
|
* Use readahead to preload a file into the file cache before reading.
|
||||||
* WARNING: This function should not be used without a telemetry field trial
|
* WARNING: This function should not be used without a field trial
|
||||||
* demonstrating a clear performance improvement!
|
* demonstrating a clear performance improvement!
|
||||||
*
|
*
|
||||||
* @param aFile nsIFile representing path to shared library
|
* @param aFile nsIFile representing path to shared library
|
||||||
|
|
@ -122,7 +122,7 @@ void ReadAheadFile(nsIFile* aFile, const size_t aOffset = 0,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use readahead to preload shared libraries into the file cache before loading.
|
* Use readahead to preload shared libraries into the file cache before loading.
|
||||||
* WARNING: This function should not be used without a telemetry field trial
|
* WARNING: This function should not be used without a field trial
|
||||||
* demonstrating a clear performance improvement!
|
* demonstrating a clear performance improvement!
|
||||||
*
|
*
|
||||||
* @param aFilePath path to shared library
|
* @param aFilePath path to shared library
|
||||||
|
|
@ -131,7 +131,7 @@ void ReadAheadLib(pathstr_t aFilePath);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Use readahead to preload a file into the file cache before loading.
|
* Use readahead to preload a file into the file cache before loading.
|
||||||
* WARNING: This function should not be used without a telemetry field trial
|
* WARNING: This function should not be used without a field trial
|
||||||
* demonstrating a clear performance improvement!
|
* demonstrating a clear performance improvement!
|
||||||
*
|
*
|
||||||
* @param aFilePath path to shared library
|
* @param aFilePath path to shared library
|
||||||
|
|
@ -148,7 +148,7 @@ void ReadAheadFile(pathstr_t aFilePath, const size_t aOffset = 0,
|
||||||
* Use readahead to preload a file into the file cache before reading.
|
* Use readahead to preload a file into the file cache before reading.
|
||||||
* When this function exits, the file pointer is guaranteed to be in the same
|
* When this function exits, the file pointer is guaranteed to be in the same
|
||||||
* position it was in before this function was called.
|
* position it was in before this function was called.
|
||||||
* WARNING: This function should not be used without a telemetry field trial
|
* WARNING: This function should not be used without a field trial
|
||||||
* demonstrating a clear performance improvement!
|
* demonstrating a clear performance improvement!
|
||||||
*
|
*
|
||||||
* @param aFd file descriptor opened for read access
|
* @param aFd file descriptor opened for read access
|
||||||
|
|
|
||||||
|
|
@ -125,11 +125,4 @@ interface nsICrashReporter : nsISupports
|
||||||
* @throws NS_ERROR_NOT_INITIALIZED if crash reporting is disabled.
|
* @throws NS_ERROR_NOT_INITIALIZED if crash reporting is disabled.
|
||||||
*/
|
*/
|
||||||
void saveMemoryReport();
|
void saveMemoryReport();
|
||||||
|
|
||||||
/**
|
|
||||||
* Set the telemetry session ID which is recorded in crash metadata. This is
|
|
||||||
* saved in the crash manager and telemetry but is not submitted as a
|
|
||||||
* crash-stats annotation.
|
|
||||||
*/
|
|
||||||
void setTelemetrySessionId(in AUTF8String id);
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,6 @@ class ScopedXPCOM : public nsIDirectoryServiceProvider2
|
||||||
MOZ_ALWAYS_SUCCEEDS(os->NotifyObservers(nullptr, "profile-change-teardown", nullptr));
|
MOZ_ALWAYS_SUCCEEDS(os->NotifyObservers(nullptr, "profile-change-teardown", nullptr));
|
||||||
MOZ_ALWAYS_SUCCEEDS(os->NotifyObservers(nullptr, "profile-before-change", nullptr));
|
MOZ_ALWAYS_SUCCEEDS(os->NotifyObservers(nullptr, "profile-before-change", nullptr));
|
||||||
MOZ_ALWAYS_SUCCEEDS(os->NotifyObservers(nullptr, "profile-before-change-qm", nullptr));
|
MOZ_ALWAYS_SUCCEEDS(os->NotifyObservers(nullptr, "profile-before-change-qm", nullptr));
|
||||||
MOZ_ALWAYS_SUCCEEDS(os->NotifyObservers(nullptr, "profile-before-change-telemetry", nullptr));
|
|
||||||
|
|
||||||
if (NS_FAILED(mProfD->Remove(true))) {
|
if (NS_FAILED(mProfD->Remove(true))) {
|
||||||
NS_WARNING("Problem removing profile directory");
|
NS_WARNING("Problem removing profile directory");
|
||||||
|
|
|
||||||
|
|
@ -97,8 +97,7 @@ BrowserHangAnnotations::AddAnnotation(const nsAString& aName, const bool aData)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class itself does not use synchronization but it (and its parent object)
|
* This class itself does not use synchronization but it (and its parent object)
|
||||||
* should be protected by mutual exclusion in some way. In Telemetry the chrome
|
* should be protected by mutual exclusion in some way.
|
||||||
* hang data is protected via TelemetryImpl::mHangReportsMutex.
|
|
||||||
*/
|
*/
|
||||||
class ChromeHangAnnotationEnumerator : public HangAnnotations::Enumerator
|
class ChromeHangAnnotationEnumerator : public HangAnnotations::Enumerator
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue