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

Unified Diff: mojo/public/cpp/bindings/lib/validation_errors.h

Issue 2250183003: Make the fuchsia mojo/public repo the source of truth. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 4 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 | « mojo/public/cpp/bindings/lib/validate_params.h ('k') | mojo/public/cpp/bindings/lib/validation_errors.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: mojo/public/cpp/bindings/lib/validation_errors.h
diff --git a/mojo/public/cpp/bindings/lib/validation_errors.h b/mojo/public/cpp/bindings/lib/validation_errors.h
deleted file mode 100644
index da8fa3f67b99fe29167412de5504ff220a989423..0000000000000000000000000000000000000000
--- a/mojo/public/cpp/bindings/lib/validation_errors.h
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2014 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.
-
-#ifndef MOJO_PUBLIC_CPP_BINDINGS_LIB_VALIDATION_ERRORS_H_
-#define MOJO_PUBLIC_CPP_BINDINGS_LIB_VALIDATION_ERRORS_H_
-
-#include <sstream>
-#include <string>
-
-#include "mojo/public/cpp/environment/logging.h"
-#include "mojo/public/cpp/system/macros.h"
-
-namespace mojo {
-namespace internal {
-
-enum class ValidationError {
- // There is no validation error.
- NONE,
- // An object (struct or array) is not 8-byte aligned.
- MISALIGNED_OBJECT,
- // An object is not contained inside the message data, or it overlaps other
- // objects.
- ILLEGAL_MEMORY_RANGE,
- // A struct header doesn't make sense, for example:
- // - |num_bytes| is smaller than the size of the struct header.
- // - |num_bytes| and |version| don't match.
- // TODO(yzshen): Consider splitting it into two different error codes. Because
- // the former indicates someone is misbehaving badly whereas the latter could
- // be due to an inappropriately-modified .mojom file.
- UNEXPECTED_STRUCT_HEADER,
- // An array header doesn't make sense, for example:
- // - |num_bytes| is smaller than the size of the header plus the size required
- // to store |num_elements| elements.
- // - For fixed-size arrays, |num_elements| is different than the specified
- // size.
- UNEXPECTED_ARRAY_HEADER,
- // An encoded handle is illegal.
- ILLEGAL_HANDLE,
- // A non-nullable handle field is set to invalid handle.
- UNEXPECTED_INVALID_HANDLE,
- // An encoded pointer is illegal.
- ILLEGAL_POINTER,
- // A non-nullable pointer field is set to null.
- UNEXPECTED_NULL_POINTER,
- // |flags| in the message header is invalid. The flags are either
- // inconsistent with one another, inconsistent with other parts of the
- // message, or unexpected for the message receiver. For example the
- // receiver is expecting a request message but the flags indicate that
- // the message is a response message.
- MESSAGE_HEADER_INVALID_FLAGS,
- // |flags| in the message header indicates that a request ID is required but
- // there isn't one.
- MESSAGE_HEADER_MISSING_REQUEST_ID,
- // The |name| field in a message header contains an unexpected value.
- MESSAGE_HEADER_UNKNOWN_METHOD,
- // Two parallel arrays which are supposed to represent a map have different
- // lengths.
- DIFFERENT_SIZED_ARRAYS_IN_MAP,
- // A non-nullable union is set to null. (Has size 0)
- UNEXPECTED_NULL_UNION,
-};
-
-const char* ValidationErrorToString(ValidationError error);
-
-// TODO(vardhan): This can die, along with |ValidationErrorObserverForTesting|.
-void ReportValidationError(ValidationError error,
- std::string* description = nullptr);
-
-// Only used by validation tests and when there is only one thread doing message
-// validation.
-class ValidationErrorObserverForTesting {
- public:
- ValidationErrorObserverForTesting();
- ~ValidationErrorObserverForTesting();
-
- ValidationError last_error() const { return last_error_; }
- void set_last_error(ValidationError error) { last_error_ = error; }
-
- private:
- ValidationError last_error_;
-
- MOJO_DISALLOW_COPY_AND_ASSIGN(ValidationErrorObserverForTesting);
-};
-
-// This takes in a string pointer, and provides a string stream which you can
-// write to. On destruction, it sets the provided string to the contents of the
-// string stream.
-class ValidationErrorStringStream {
- public:
- explicit ValidationErrorStringStream(std::string* err_msg);
- ~ValidationErrorStringStream();
- std::ostringstream& stream() { return stream_; }
-
- private:
- std::string* err_msg_;
- std::ostringstream stream_;
-
- MOJO_DISALLOW_COPY_AND_ASSIGN(ValidationErrorStringStream);
-};
-
-} // namespace internal
-} // namespace mojo
-
-// In a debug build, logs a serialization warning.
-// TODO(vardhan): Make this work like an ostream.
-#define MOJO_INTERNAL_DLOG_SERIALIZATION_WARNING(error, description) \
- MOJO_DLOG(WARNING) << "The outgoing message will trigger " \
- << ValidationErrorToString(error) \
- << " at the receiving side (" << description << ")."
-
-// In a debug build, this will use |ValidationErrorStringStream::stream()| and
-// write to the supplied string if it is not null. In a non-debug + optimized
-// build it should do nothing, while also discarding away operator<<() calls.
-#ifdef NDEBUG
-// The compiler will reduce the |true ? (void)0 : ...| expression to |(void)0|,
-// thereby discarding the |ValidationErrorStringStream()| while still keeping
-// this macro's use semantically valid.
-#define MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err_msg) \
- true ? (void)0 \
- : ::mojo::internal::VoidifyOstream() & \
- ::mojo::internal::ValidationErrorStringStream(err_msg).stream()
-#else
-#define MOJO_INTERNAL_DEBUG_SET_ERROR_MSG(err_msg) \
- ::mojo::internal::ValidationErrorStringStream(err_msg).stream()
-#endif // NDEBUG
-
-#endif // MOJO_PUBLIC_CPP_BINDINGS_LIB_VALIDATION_ERRORS_H_
« no previous file with comments | « mojo/public/cpp/bindings/lib/validate_params.h ('k') | mojo/public/cpp/bindings/lib/validation_errors.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698