vcl/inc/jsdialog/enabled.hxx  |    3 ++-
 vcl/jsdialog/enabled.cxx      |   10 ++++++----
 vcl/source/window/builder.cxx |   10 +++++++++-
 3 files changed, 17 insertions(+), 6 deletions(-)

New commits:
commit 1f9bc87c7f621d9abec0013013d271a4639d129b
Author:     Caolán McNamara <[email protected]>
AuthorDate: Thu Dec 11 11:50:40 2025 +0000
Commit:     Miklos Vajna <[email protected]>
CommitDate: Fri Dec 12 13:34:08 2025 +0100

    add the names of the writer dialog .ui files that are missing from coverage
    
    Change-Id: I1f54dc2197ced0d941df3581bfe6b1db2e357274
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/195451
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins CollaboraOffice <[email protected]>

diff --git a/vcl/inc/jsdialog/enabled.hxx b/vcl/inc/jsdialog/enabled.hxx
index 65ccc5b14897..857585a9c58d 100644
--- a/vcl/inc/jsdialog/enabled.hxx
+++ b/vcl/inc/jsdialog/enabled.hxx
@@ -26,7 +26,8 @@ bool isBuilderEnabledForNavigator(std::u16string_view 
rUIFile);
 bool isBuilderEnabledForQuickFind(std::u16string_view rUIFile);
 bool isInterimBuilderEnabledForNotebookbar(std::u16string_view rUIFile);
 
-bool completeWriterDialogList(const o3tl::sorted_vector<OUString>& entries);
+// returns vector of .ui files not seen that should be seen to have complete 
coverage
+std::vector<OUString> completeWriterDialogList(const 
o3tl::sorted_vector<OUString>& entries);
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s 
cinkeys+=0=break: */
diff --git a/vcl/jsdialog/enabled.cxx b/vcl/jsdialog/enabled.cxx
index 7405ff732da2..e50ced438813 100644
--- a/vcl/jsdialog/enabled.cxx
+++ b/vcl/jsdialog/enabled.cxx
@@ -639,14 +639,16 @@ bool isBuilderEnabledForFormulabar(std::u16string_view 
rUIFile)
     return isInMap(FormulabarList, rUIFile);
 }
 
-bool completeWriterDialogList(const o3tl::sorted_vector<OUString>& entries)
+std::vector<OUString> completeWriterDialogList(const 
o3tl::sorted_vector<OUString>& entries)
 {
+    std::vector<OUString> missing;
     for (const auto& entry : SwriterDialogList)
     {
-        if (!entries.contains(OUString(entry)))
-            return false;
+        OUString sEntry(entry);
+        if (!entries.contains(sEntry))
+            missing.push_back(sEntry);
     }
-    return true;
+    return missing;
 }
 
 } // end of jsdialog
diff --git a/vcl/source/window/builder.cxx b/vcl/source/window/builder.cxx
index 5d3b6487297d..944c1ab69b7d 100644
--- a/vcl/source/window/builder.cxx
+++ b/vcl/source/window/builder.cxx
@@ -197,13 +197,21 @@ void Application::UICoverageReport(tools::JsonWriter& 
rJson)
     auto resultNode = rJson.startNode("result");
 
     const auto& entries = ImplGetSVData()->mpDefInst->getUsedUIList();
+    if (!entries.empty())
     {
         auto childrenNode = rJson.startArray("used");
         for (const auto& entry : entries)
             rJson.putSimpleValue(entry);
     }
 
-    rJson.put("CompleteWriterDialogCoverage", 
jsdialog::completeWriterDialogList(entries));
+    std::vector<OUString> missingWriterDialogUIs = 
jsdialog::completeWriterDialogList(entries);
+    rJson.put("CompleteWriterDialogCoverage", missingWriterDialogUIs.empty());
+    if (!missingWriterDialogUIs.empty())
+    {
+        auto childrenNode = rJson.startArray("MissingWriterDialogCoverage");
+        for (const auto& entry : missingWriterDialogUIs)
+            rJson.putSimpleValue(entry);
+    }
 }
 
 std::unique_ptr<weld::Builder> Application::CreateBuilder(weld::Widget* 
pParent, const OUString &rUIFile, bool bMobile, sal_uInt64 nLOKWindowId)

Reply via email to