| // 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/crosapi/mojom/clipboard_history.mojom.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, |
| crosapi::mojom::ClipboardHistoryControllerShowSource::kVirtualKeyboard); |
| observation_.Reset(); |
| } |
| |
| } // namespace ash |