Bug 1428320 - Ignore about: pages for indexedDB storage type telemetry. r=janv
MozReview-Commit-ID: 1Cx5hBsqyX1
--- a/dom/indexedDB/IDBFactory.cpp
+++ b/dom/indexedDB/IDBFactory.cpp
@@ -448,33 +448,53 @@ already_AddRefed<IDBOpenDBRequest>
IDBFactory::Open(JSContext* aCx,
const nsAString& aName,
const IDBOpenDBOptions& aOptions,
CallerType aCallerType,
ErrorResult& aRv)
{
if (!IsChrome() &&
aOptions.mStorage.WasPassed()) {
- switch (aOptions.mStorage.Value()) {
- case StorageType::Persistent: {
- Telemetry::ScalarAdd(Telemetry::ScalarID::IDB_TYPE_PERSISTENT_COUNT, 1);
- break;
+
+ bool ignore = false;
+ // Ignore internal usage on about: pages.
+ if (NS_IsMainThread()) {
+ nsCOMPtr<nsIPrincipal> principal = PrincipalInfoToPrincipal(*mPrincipalInfo);
+ if (principal) {
+ nsCOMPtr<nsIURI> uri;
+ nsresult rv = principal->GetURI(getter_AddRefs(uri));
+ if (NS_SUCCEEDED(rv) && uri) {
+ bool isAbout;
+ rv = uri->SchemeIs("about", &isAbout);
+ if (NS_SUCCEEDED(rv) && isAbout) {
+ ignore = true;
+ }
+ }
}
+ }
- case StorageType::Temporary: {
- Telemetry::ScalarAdd(Telemetry::ScalarID::IDB_TYPE_TEMPORARY_COUNT, 1);
- break;
- }
+ if (!ignore) {
+ switch (aOptions.mStorage.Value()) {
+ case StorageType::Persistent: {
+ Telemetry::ScalarAdd(Telemetry::ScalarID::IDB_TYPE_PERSISTENT_COUNT, 1);
+ break;
+ }
- case StorageType::Default:
- case StorageType::EndGuard_:
- break;
+ case StorageType::Temporary: {
+ Telemetry::ScalarAdd(Telemetry::ScalarID::IDB_TYPE_TEMPORARY_COUNT, 1);
+ break;
+ }
- default:
- MOZ_CRASH("Invalid storage type!");
+ case StorageType::Default:
+ case StorageType::EndGuard_:
+ break;
+
+ default:
+ MOZ_CRASH("Invalid storage type!");
+ }
}
}
return OpenInternal(aCx,
/* aPrincipal */ nullptr,
aName,
aOptions.mVersion,
aOptions.mStorage,