123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- // Copyright 2022 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 COMPONENTS_USER_NOTES_MODEL_USER_NOTE_H_
- #define COMPONENTS_USER_NOTES_MODEL_USER_NOTE_H_
- #include <string>
- #include "base/memory/safe_ref.h"
- #include "base/memory/weak_ptr.h"
- #include "base/unguessable_token.h"
- #include "components/user_notes/model/user_note_body.h"
- #include "components/user_notes/model/user_note_metadata.h"
- #include "components/user_notes/model/user_note_target.h"
- namespace user_notes {
- // Model class for a note.
- class UserNote {
- public:
- explicit UserNote(const base::UnguessableToken& id,
- std::unique_ptr<UserNoteMetadata> metadata,
- std::unique_ptr<UserNoteBody> body,
- std::unique_ptr<UserNoteTarget> target);
- ~UserNote();
- UserNote(const UserNote&) = delete;
- UserNote& operator=(const UserNote&) = delete;
- base::SafeRef<UserNote> GetSafeRef() const;
- const base::UnguessableToken& id() const { return id_; }
- const UserNoteMetadata& metadata() const { return *metadata_; }
- const UserNoteBody& body() const { return *body_; }
- const UserNoteTarget& target() const { return *target_; }
- // Consumes the provided model to update this one.
- void Update(std::unique_ptr<UserNote> new_model);
- private:
- // The unique (among the user's notes) ID for this note.
- base::UnguessableToken id_;
- std::unique_ptr<UserNoteMetadata> metadata_;
- std::unique_ptr<UserNoteBody> body_;
- std::unique_ptr<UserNoteTarget> target_;
- base::WeakPtrFactory<UserNote> weak_ptr_factory_{this};
- };
- } // namespace user_notes
- #endif // COMPONENTS_USER_NOTES_MODEL_USER_NOTE_H_
|