Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1077)

Unified Diff: sky/engine/bindings2/exception_messages.cc

Issue 918333002: Add the c++ code part of bindings2/ (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Updated per earlier reviews Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sky/engine/bindings2/exception_messages.h ('k') | sky/engine/bindings2/exception_state.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sky/engine/bindings2/exception_messages.cc
diff --git a/sky/engine/bindings2/exception_messages.cc b/sky/engine/bindings2/exception_messages.cc
new file mode 100644
index 0000000000000000000000000000000000000000..451a8fe73a3274cd9428f8221219dc0917dd8ea0
--- /dev/null
+++ b/sky/engine/bindings2/exception_messages.cc
@@ -0,0 +1,166 @@
+// Copyright 2015 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "sky/engine/config.h"
+#include "sky/engine/bindings2/exception_messages.h"
+
+#include "sky/engine/platform/Decimal.h"
+#include "sky/engine/wtf/MathExtras.h"
+
+namespace blink {
+
+String ExceptionMessages::failedToConstruct(const char* type,
+ const String& detail) {
+ return "Failed to construct '" + String(type) +
+ (!detail.isEmpty() ? String("': " + detail) : String("'"));
+}
+
+String ExceptionMessages::failedToEnumerate(const char* type,
+ const String& detail) {
+ return "Failed to enumerate the properties of '" + String(type) +
+ (!detail.isEmpty() ? String("': " + detail) : String("'"));
+}
+
+String ExceptionMessages::failedToExecute(const char* method,
+ const char* type,
+ const String& detail) {
+ return "Failed to execute '" + String(method) + "' on '" + String(type) +
+ (!detail.isEmpty() ? String("': " + detail) : String("'"));
+}
+
+String ExceptionMessages::failedToGet(const char* property,
+ const char* type,
+ const String& detail) {
+ return "Failed to read the '" + String(property) + "' property from '" +
+ String(type) + "': " + detail;
+}
+
+String ExceptionMessages::failedToSet(const char* property,
+ const char* type,
+ const String& detail) {
+ return "Failed to set the '" + String(property) + "' property on '" +
+ String(type) + "': " + detail;
+}
+
+String ExceptionMessages::failedToDelete(const char* property,
+ const char* type,
+ const String& detail) {
+ return "Failed to delete the '" + String(property) + "' property from '" +
+ String(type) + "': " + detail;
+}
+
+String ExceptionMessages::failedToGetIndexed(const char* type,
+ const String& detail) {
+ return "Failed to read an indexed property from '" + String(type) + "': " +
+ detail;
+}
+
+String ExceptionMessages::failedToSetIndexed(const char* type,
+ const String& detail) {
+ return "Failed to set an indexed property on '" + String(type) + "': " +
+ detail;
+}
+
+String ExceptionMessages::failedToDeleteIndexed(const char* type,
+ const String& detail) {
+ return "Failed to delete an indexed property from '" + String(type) + "': " +
+ detail;
+}
+
+String ExceptionMessages::constructorNotCallableAsFunction(const char* type) {
+ return failedToConstruct(type,
+ "Please use the 'new' operator, this DOM object "
+ "constructor cannot be called as a function.");
+}
+
+String ExceptionMessages::incorrectPropertyType(const String& property,
+ const String& detail) {
+ return "The '" + property + "' property " + detail;
+}
+
+String ExceptionMessages::invalidArity(const char* expected,
+ unsigned provided) {
+ return "Valid arities are: " + String(expected) + ", but " +
+ String::number(provided) + " arguments provided.";
+}
+
+String ExceptionMessages::argumentNullOrIncorrectType(
+ int argumentIndex,
+ const String& expectedType) {
+ return "The " + ordinalNumber(argumentIndex) +
+ " argument provided is either null, or an invalid " + expectedType +
+ " object.";
+}
+
+String ExceptionMessages::notAnArrayTypeArgumentOrValue(int argumentIndex) {
+ String kind;
+ if (argumentIndex) // method argument
+ kind = ordinalNumber(argumentIndex) + " argument";
+ else // value, e.g. attribute setter
+ kind = "value provided";
+ return "The " + kind +
+ " is neither an array, nor does it have indexed properties.";
+}
+
+String ExceptionMessages::notASequenceTypeProperty(const String& propertyName) {
+ return "'" + propertyName +
+ "' property is neither an array, nor does it have indexed properties.";
+}
+
+String ExceptionMessages::notEnoughArguments(unsigned expected,
+ unsigned provided) {
+ return String::number(expected) + " argument" + (expected > 1 ? "s" : "") +
+ " required, but only " + String::number(provided) + " present.";
+}
+
+String ExceptionMessages::notAFiniteNumber(double value, const char* name) {
+ ASSERT(!std::isfinite(value));
+ return String::format("The %s is %s.", name,
+ std::isinf(value) ? "infinite" : "not a number");
+}
+
+String ExceptionMessages::notAFiniteNumber(const Decimal& value,
+ const char* name) {
+ ASSERT(!value.isFinite());
+ return String::format("The %s is %s.", name,
+ value.isInfinity() ? "infinite" : "not a number");
+}
+
+String ExceptionMessages::ordinalNumber(int number) {
+ String suffix("th");
+ switch (number % 10) {
+ case 1:
+ if (number % 100 != 11)
+ suffix = "st";
+ break;
+ case 2:
+ if (number % 100 != 12)
+ suffix = "nd";
+ break;
+ case 3:
+ if (number % 100 != 13)
+ suffix = "rd";
+ break;
+ }
+ return String::number(number) + suffix;
+}
+
+String ExceptionMessages::readOnly(const char* detail) {
+ DEFINE_STATIC_LOCAL(String, readOnly, ("This object is read-only."));
+ return detail
+ ? String::format("This object is read-only, because %s.", detail)
+ : readOnly;
+}
+
+template <>
+String ExceptionMessages::formatNumber<float>(float number) {
+ return formatPotentiallyNonFiniteNumber(number);
+}
+
+template <>
+String ExceptionMessages::formatNumber<double>(double number) {
+ return formatPotentiallyNonFiniteNumber(number);
+}
+
+} // namespace blink
« no previous file with comments | « sky/engine/bindings2/exception_messages.h ('k') | sky/engine/bindings2/exception_state.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698