Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / mojo / public / cpp / bindings / lib / validation_errors.cc
index 37cd7d2..61f233f 100644 (file)
@@ -11,6 +11,7 @@ namespace internal {
 namespace {
 
 ValidationErrorObserverForTesting* g_validation_error_observer = NULL;
+SerializationWarningObserverForTesting* g_serialization_warning_observer = NULL;
 
 }  // namespace
 
@@ -43,19 +44,21 @@ const char* ValidationErrorToString(ValidationError error) {
   return "Unknown error";
 }
 
-void ReportValidationError(ValidationError error) {
-  if (g_validation_error_observer)
+void ReportValidationError(ValidationError error, const char* description) {
+  if (g_validation_error_observer) {
     g_validation_error_observer->set_last_error(error);
-  else
+  } else if (description) {
+    MOJO_LOG(ERROR) << "Invalid message: " << ValidationErrorToString(error)
+                    << " (" << description << ")";
+  } else {
     MOJO_LOG(ERROR) << "Invalid message: " << ValidationErrorToString(error);
+  }
 }
 
 ValidationErrorObserverForTesting::ValidationErrorObserverForTesting()
     : last_error_(VALIDATION_ERROR_NONE) {
   MOJO_DCHECK(!g_validation_error_observer);
   g_validation_error_observer = this;
-  MOJO_LOG(WARNING) << "Non-nullable validation is turned on for testing but "
-                    << "not for production code yet!";
 }
 
 ValidationErrorObserverForTesting::~ValidationErrorObserverForTesting() {
@@ -63,8 +66,25 @@ ValidationErrorObserverForTesting::~ValidationErrorObserverForTesting() {
   g_validation_error_observer = NULL;
 }
 
-bool IsNonNullableValidationEnabled() {
-  return !!g_validation_error_observer;
+bool ReportSerializationWarning(ValidationError error) {
+  if (g_serialization_warning_observer) {
+    g_serialization_warning_observer->set_last_warning(error);
+    return true;
+  }
+
+  return false;
+}
+
+SerializationWarningObserverForTesting::SerializationWarningObserverForTesting()
+    : last_warning_(VALIDATION_ERROR_NONE) {
+  MOJO_DCHECK(!g_serialization_warning_observer);
+  g_serialization_warning_observer = this;
+}
+
+SerializationWarningObserverForTesting::
+~SerializationWarningObserverForTesting() {
+  MOJO_DCHECK(g_serialization_warning_observer == this);
+  g_serialization_warning_observer = NULL;
 }
 
 }  // namespace internal