| // Copyright 2024 The Chromium Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "ash/quick_insert/quick_insert_paste_request.h" | |
| #include "ash/public/cpp/clipboard_history_controller.h" | |
| #include "base/check_deref.h" | |
| #include "base/unguessable_token.h" | |
| #include "chromeos/ui/clipboard_history/clipboard_history_types.h" | |
| #include "ui/aura/client/focus_client.h" | |
| #include "ui/events/event_constants.h" | |
| namespace ash { | |
| QuickInsertPasteRequest::QuickInsertPasteRequest( | |
| ClipboardHistoryController* clipboard_history_controller, | |
| aura::client::FocusClient* focus_client, | |
| base::UnguessableToken clipboard_item_id) | |
| : clipboard_history_controller_(CHECK_DEREF(clipboard_history_controller)), | |
| clipboard_item_id_(clipboard_item_id) { | |
| observation_.Observe(focus_client); | |
| } | |
| QuickInsertPasteRequest::~QuickInsertPasteRequest() = default; | |
| void QuickInsertPasteRequest::OnWindowFocused(aura::Window* gained_focus, | |
| aura::Window* lost_focus) { | |
| if (gained_focus == nullptr) { | |
| return; | |
| } | |
| // TODO: b/329309518: Use a dedicated show source for Quick Insert. | |
| clipboard_history_controller_->PasteClipboardItemById( | |
| clipboard_item_id_.ToString(), ui::EF_NONE, | |
| chromeos::clipboard_history::ShowSource::kVirtualKeyboard); | |
| observation_.Reset(); | |
| } | |
| } // namespace ash |