12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // 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_INTERFACES_USER_NOTES_UI_H_
- #define COMPONENTS_USER_NOTES_INTERFACES_USER_NOTES_UI_H_
- #include "base/supports_user_data.h"
- #include "base/unguessable_token.h"
- #include "ui/gfx/geometry/rect.h"
- namespace user_notes {
- class UserNoteInstance;
- // Interface that the UI layer of User Notes must implement. Used by the
- // business logic in the service to send commands to the UI.
- class UserNotesUI : public base::SupportsUserData::Data {
- public:
- static const void* UserDataKey() { return &kUserDataKey; }
- UserNotesUI() = default;
- UserNotesUI(const UserNotesUI&) = delete;
- UserNotesUI& operator=(const UserNotesUI&) = delete;
- ~UserNotesUI() override = default;
- // Called when a note in the UI should be scrolled to / brought to the
- // foreground, and focused.
- virtual void FocusNote(const base::UnguessableToken& guid) = 0;
- // Called when the note creation UX should be shown in the UI layer. |bounds|
- // corresponds to the location in the webpage where the associated highlight
- // is, and should be compared with existing notes in the UI to determine where
- // the new note should be inserted.
- virtual void StartNoteCreation(UserNoteInstance* instance) = 0;
- // Called when the model has changed and the UI should consequently refresh
- // the notes it is displaying. The new model must be polled from the active
- // tab's primary page.
- virtual void Invalidate() = 0;
- // Called by the UserNoteService when the user triggers one of the feature's
- // entry points, indicating the Notes UI should show itself.
- virtual void Show() = 0;
- private:
- static const int kUserDataKey = 0;
- };
- } // namespace user_notes
- #endif // COMPONENTS_USER_NOTES_INTERFACES_USER_NOTES_UI_H_
|