diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /ipc/chromium/src/mojo/core/ports/user_message.h | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'ipc/chromium/src/mojo/core/ports/user_message.h')
-rw-r--r-- | ipc/chromium/src/mojo/core/ports/user_message.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/ipc/chromium/src/mojo/core/ports/user_message.h b/ipc/chromium/src/mojo/core/ports/user_message.h new file mode 100644 index 0000000000..85c03a9557 --- /dev/null +++ b/ipc/chromium/src/mojo/core/ports/user_message.h @@ -0,0 +1,62 @@ +// Copyright 2017 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_CORE_PORTS_USER_MESSAGE_H_ +#define MOJO_CORE_PORTS_USER_MESSAGE_H_ + +#include <stddef.h> + +namespace mojo { +namespace core { +namespace ports { + +class UserMessageEvent; + +// Base type to use for any embedder-defined user message implementation. This +// class is intentionally empty. +// +// Provides a bit of type-safety help to subclasses since by design downcasting +// from this type is a common operation in embedders. +// +// Each subclass should define a static const instance of TypeInfo named +// |kUserMessageTypeInfo| and pass its address down to the UserMessage +// constructor. The type of a UserMessage can then be dynamically inspected by +// comparing |type_info()| to any subclass's |&kUserMessageTypeInfo|. +class UserMessage { + public: + struct TypeInfo {}; + + explicit UserMessage(const TypeInfo* type_info); + virtual ~UserMessage(); + + UserMessage(const UserMessage&) = delete; + void operator=(const UserMessage&) = delete; + + const TypeInfo* type_info() const { return type_info_; } + + // Invoked immediately before the system asks the embedder to forward this + // message to an external node. + // + // The UserMessageEvent is passed in to allow ports and other such values to + // be attached to the message before it is sent externally, in case late + // serialization is performed. + // + // Returns |true| if the message is OK to route externally, or |false| + // otherwise. Returning |false| implies an unrecoverable condition, and the + // message event will be destroyed without further routing. + virtual bool WillBeRoutedExternally(UserMessageEvent& event); + + // Returns the size in bytes of this message iff it's serialized. Zero + // otherwise. + virtual size_t GetSizeIfSerialized() const; + + private: + const TypeInfo* const type_info_; +}; + +} // namespace ports +} // namespace core +} // namespace mojo + +#endif // MOJO_CORE_PORTS_USER_MESSAGE_H_ |