From af680b17e0e1b94e40afa6a01ba3bbdead2d6035 Mon Sep 17 00:00:00 2001 From: Lei Zhang Date: Fri, 2 Jun 2017 16:42:59 -0700 Subject: Add a basic embedder test for CPWL_Edit. Change-Id: Ib381423b81e718410cb1d199aadbf396ee08b29a Reviewed-on: https://pdfium-review.googlesource.com/6251 Commit-Queue: Lei Zhang Reviewed-by: Tom Sepez --- BUILD.gn | 1 + fpdfsdk/pdfwindow/cpwl_edit_embeddertest.cpp | 61 ++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+) create mode 100644 fpdfsdk/pdfwindow/cpwl_edit_embeddertest.cpp diff --git a/BUILD.gn b/BUILD.gn index 49c79c3440..b1774d63b6 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -1997,6 +1997,7 @@ test("pdfium_embeddertests") { "fpdfsdk/fpdfview_c_api_test.h", "fpdfsdk/fpdfview_embeddertest.cpp", "fpdfsdk/fsdk_baseform_embeddertest.cpp", + "fpdfsdk/pdfwindow/cpwl_edit_embeddertest.cpp", "testing/embedder_test.cpp", "testing/embedder_test.h", "testing/embedder_test_mock_delegate.h", diff --git a/fpdfsdk/pdfwindow/cpwl_edit_embeddertest.cpp b/fpdfsdk/pdfwindow/cpwl_edit_embeddertest.cpp new file mode 100644 index 0000000000..4a14b65d0d --- /dev/null +++ b/fpdfsdk/pdfwindow/cpwl_edit_embeddertest.cpp @@ -0,0 +1,61 @@ +// Copyright 2017 PDFium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "fpdfsdk/cba_annotiterator.h" +#include "fpdfsdk/cpdfsdk_annot.h" +#include "fpdfsdk/cpdfsdk_formfillenvironment.h" +#include "fpdfsdk/formfiller/cffl_formfiller.h" +#include "fpdfsdk/formfiller/cffl_interactiveformfiller.h" +#include "fpdfsdk/pdfwindow/cpwl_wnd.h" +#include "testing/embedder_test.h" +#include "testing/gtest/include/gtest/gtest.h" + +class CPWLEditEmbeddertest : public EmbedderTest {}; + +TEST_F(CPWLEditEmbeddertest, TypeText) { + EXPECT_TRUE(OpenDocument("text_form.pdf")); + FPDF_PAGE page = LoadPage(0); + ASSERT_TRUE(page); + + CPDFSDK_FormFillEnvironment* pFormFillEnv = + static_cast(form_handle()); + + CPDFSDK_Annot* pAnnot; + { + CBA_AnnotIterator iter(pFormFillEnv->GetPageView(0), + CPDF_Annot::Subtype::WIDGET); + pAnnot = iter.GetFirstAnnot(); + CPDFSDK_Annot* pLastAnnot = iter.GetLastAnnot(); + ASSERT_EQ(pAnnot, pLastAnnot); + ASSERT_TRUE(pAnnot); + ASSERT_EQ(CPDF_Annot::Subtype::WIDGET, pAnnot->GetAnnotSubtype()); + } + + CFFL_InteractiveFormFiller* pInteractiveFormFiller = + pFormFillEnv->GetInteractiveFormFiller(); + { + CPDFSDK_Annot::ObservedPtr pObserved(pAnnot); + EXPECT_TRUE(pInteractiveFormFiller->OnSetFocus(&pObserved, 0)); + } + + CFFL_FormFiller* pFormFiller = + pInteractiveFormFiller->GetFormFiller(pAnnot, false); + ASSERT_TRUE(pFormFiller); + + CPWL_Wnd* pWindow = + pFormFiller->GetPDFWindow(pFormFillEnv->GetPageView(0), false); + ASSERT_TRUE(pWindow); + ASSERT_EQ(PWL_CLASSNAME_EDIT, pWindow->GetClassName()); + + CPWL_Edit* pEdit = static_cast(pWindow); + EXPECT_TRUE(pEdit->GetText().IsEmpty()); + + EXPECT_TRUE(pFormFiller->OnChar(pAnnot, 'a', 0)); + EXPECT_TRUE(pFormFiller->OnChar(pAnnot, 'b', 0)); + EXPECT_TRUE(pFormFiller->OnChar(pAnnot, 'c', 0)); + + EXPECT_STREQ(L"abc", pEdit->GetText().c_str()); + + UnloadPage(page); +} -- cgit v1.2.3