| Index: mojo/public/cpp/bindings/lib/validation_errors.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/validation_errors.cc b/mojo/public/cpp/bindings/lib/validation_errors.cc
|
| index e5743eb8a16c8618a854e2260642ed1a8aa392a5..ea6aff8f151ca70867bf3e9e37f0ee684450ba16 100644
|
| --- a/mojo/public/cpp/bindings/lib/validation_errors.cc
|
| +++ b/mojo/public/cpp/bindings/lib/validation_errors.cc
|
| @@ -4,6 +4,9 @@
|
|
|
| #include "mojo/public/cpp/bindings/lib/validation_errors.h"
|
|
|
| +#include "base/strings/stringprintf.h"
|
| +#include "mojo/public/cpp/bindings/message.h"
|
| +
|
| namespace mojo {
|
| namespace internal {
|
| namespace {
|
| @@ -50,19 +53,38 @@ const char* ValidationErrorToString(ValidationError error) {
|
| return "VALIDATION_ERROR_UNKNOWN_UNION_TAG";
|
| case VALIDATION_ERROR_UNKNOWN_ENUM_VALUE:
|
| return "VALIDATION_ERROR_UNKNOWN_ENUM_VALUE";
|
| + case VALIDATION_ERROR_DESERIALIZATION_FAILED:
|
| + return "VALIDATION_ERROR_DESERIALIZATION_FAILED";
|
| }
|
|
|
| return "Unknown error";
|
| }
|
|
|
| -void ReportValidationError(ValidationError error, const char* description) {
|
| +void ReportValidationError(ValidationContext* context,
|
| + ValidationError error,
|
| + const char* description) {
|
| if (g_validation_error_observer) {
|
| g_validation_error_observer->set_last_error(error);
|
| - } else if (description) {
|
| + return;
|
| + }
|
| +
|
| + if (description) {
|
| LOG(ERROR) << "Invalid message: " << ValidationErrorToString(error) << " ("
|
| << description << ")";
|
| + if (context->message()) {
|
| + context->message()->NotifyBadMessage(
|
| + base::StringPrintf("Validation failed for %s [%s (%s)]",
|
| + context->description().data(),
|
| + ValidationErrorToString(error), description));
|
| + }
|
| } else {
|
| LOG(ERROR) << "Invalid message: " << ValidationErrorToString(error);
|
| + if (context->message()) {
|
| + context->message()->NotifyBadMessage(
|
| + base::StringPrintf("Validation failed for %s [%s]",
|
| + context->description().data(),
|
| + ValidationErrorToString(error)));
|
| + }
|
| }
|
| }
|
|
|
|
|