diff options
Diffstat (limited to 'dom/animation/AnimationPerformanceWarning.cpp')
-rw-r--r-- | dom/animation/AnimationPerformanceWarning.cpp | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/dom/animation/AnimationPerformanceWarning.cpp b/dom/animation/AnimationPerformanceWarning.cpp new file mode 100644 index 0000000000..e57beff51f --- /dev/null +++ b/dom/animation/AnimationPerformanceWarning.cpp @@ -0,0 +1,81 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* 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/. */ + +#include "AnimationPerformanceWarning.h" + +#include "nsContentUtils.h" + +namespace mozilla { + +template <uint32_t N> +nsresult AnimationPerformanceWarning::ToLocalizedStringWithIntParams( + const char* aKey, nsAString& aLocalizedString) const { + AutoTArray<nsString, N> strings; + + MOZ_DIAGNOSTIC_ASSERT(mParams->Length() == N); + for (size_t i = 0, n = mParams->Length(); i < n; i++) { + strings.AppendElement()->AppendInt((*mParams)[i]); + } + + return nsContentUtils::FormatLocalizedString( + nsContentUtils::eLAYOUT_PROPERTIES, aKey, strings, aLocalizedString); +} + +bool AnimationPerformanceWarning::ToLocalizedString( + nsAString& aLocalizedString) const { + const char* key = nullptr; + + switch (mType) { + case Type::ContentTooLarge: + MOZ_ASSERT(mParams && mParams->Length() == 6, + "Parameter's length should be 6 for ContentTooLarge2"); + + return NS_SUCCEEDED(ToLocalizedStringWithIntParams<6>( + "CompositorAnimationWarningContentTooLarge2", aLocalizedString)); + case Type::ContentTooLargeArea: + MOZ_ASSERT(mParams && mParams->Length() == 2, + "Parameter's length should be 2 for ContentTooLargeArea"); + + return NS_SUCCEEDED(ToLocalizedStringWithIntParams<2>( + "CompositorAnimationWarningContentTooLargeArea", aLocalizedString)); + case Type::TransformBackfaceVisibilityHidden: + key = "CompositorAnimationWarningTransformBackfaceVisibilityHidden"; + break; + case Type::TransformSVG: + key = "CompositorAnimationWarningTransformSVG"; + break; + case Type::TransformWithGeometricProperties: + key = "CompositorAnimationWarningTransformWithGeometricProperties"; + break; + case Type::TransformWithSyncGeometricAnimations: + key = "CompositorAnimationWarningTransformWithSyncGeometricAnimations"; + break; + case Type::TransformFrameInactive: + key = "CompositorAnimationWarningTransformFrameInactive"; + break; + case Type::TransformIsBlockedByImportantRules: + key = "CompositorAnimationWarningTransformIsBlockedByImportantRules"; + break; + case Type::OpacityFrameInactive: + key = "CompositorAnimationWarningOpacityFrameInactive"; + break; + case Type::HasRenderingObserver: + key = "CompositorAnimationWarningHasRenderingObserver"; + break; + case Type::HasCurrentColor: + key = "CompositorAnimationWarningHasCurrentColor"; + break; + case Type::None: + MOZ_ASSERT_UNREACHABLE("Uninitialized type shouldn't be used"); + return false; + } + + nsresult rv = nsContentUtils::GetLocalizedString( + nsContentUtils::eLAYOUT_PROPERTIES, key, aLocalizedString); + return NS_SUCCEEDED(rv); +} + +} // namespace mozilla |