From 89061883f28e36d397ac915c144c765834f6e20b Mon Sep 17 00:00:00 2001 From: Rodrigo Tobar Date: Tue, 20 Dec 2022 14:15:56 +0800 Subject: PDFViewer: Prompt password for encrypted documents This tackles a FIXME, but also makes sense to implement only now that the SecurityHandler logic has been fixed. When a Document is created an automatic attempt is made to provide the empty string as the password; even if this attempt failed the SecurityHandler still reported it had a user password, hence we never arrived to the VERIFY_NOT_REQUIRED line this commit is changing. --- Userland/Applications/PDFViewer/PDFViewerWidget.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'Userland') diff --git a/Userland/Applications/PDFViewer/PDFViewerWidget.cpp b/Userland/Applications/PDFViewer/PDFViewerWidget.cpp index 4747b277ee..3008527613 100644 --- a/Userland/Applications/PDFViewer/PDFViewerWidget.cpp +++ b/Userland/Applications/PDFViewer/PDFViewerWidget.cpp @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -366,8 +367,15 @@ PDF::PDFErrorOr PDFViewerWidget::try_open_file(Core::File& file) auto document = TRY(PDF::Document::create(m_buffer)); if (auto sh = document->security_handler(); sh && !sh->has_user_password()) { - // FIXME: Prompt the user for a password - VERIFY_NOT_REACHED(); + DeprecatedString password; + while (true) { + auto result = GUI::InputBox::show(window(), password, "Password"sv, "Password required"sv, {}, GUI::InputType::Password); + if (result == GUI::Dialog::ExecResult::OK + && document->security_handler()->try_provide_user_password(password)) + break; + if (result == GUI::Dialog::ExecResult::Cancel) + return {}; + } } TRY(document->initialize()); -- cgit v1.2.3