summaryrefslogtreecommitdiffstats
path: root/chromium/third_party/pdfium/fxjs/cjs_document.cpp
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2018-12-10 16:19:40 +0100
committerAllan Sandfeld Jensen <allan.jensen@qt.io>2018-12-10 16:01:50 +0000
commit51f6c2793adab2d864b3d2b360000ef8db1d3e92 (patch)
tree835b3b4446b012c75e80177cef9fbe6972cc7dbe /chromium/third_party/pdfium/fxjs/cjs_document.cpp
parent6036726eb981b6c4b42047513b9d3f4ac865daac (diff)
BASELINE: Update Chromium to 71.0.3578.93
Change-Id: I6a32086c33670e1b033f8b10e6bf1fd4da1d105d Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'chromium/third_party/pdfium/fxjs/cjs_document.cpp')
-rw-r--r--chromium/third_party/pdfium/fxjs/cjs_document.cpp212
1 files changed, 103 insertions, 109 deletions
diff --git a/chromium/third_party/pdfium/fxjs/cjs_document.cpp b/chromium/third_party/pdfium/fxjs/cjs_document.cpp
index c839e9f4873..6e2f2da6c60 100644
--- a/chromium/third_party/pdfium/fxjs/cjs_document.cpp
+++ b/chromium/third_party/pdfium/fxjs/cjs_document.cpp
@@ -12,12 +12,13 @@
#include "core/fpdfapi/page/cpdf_pageobject.h"
#include "core/fpdfapi/page/cpdf_textobject.h"
#include "core/fpdfapi/parser/cpdf_array.h"
+#include "core/fpdfapi/parser/cpdf_dictionary.h"
#include "core/fpdfapi/parser/cpdf_name.h"
#include "core/fpdfapi/parser/cpdf_string.h"
-#include "core/fpdfdoc/cpdf_interform.h"
+#include "core/fpdfdoc/cpdf_interactiveform.h"
#include "core/fpdfdoc/cpdf_nametree.h"
#include "fpdfsdk/cpdfsdk_annotiteration.h"
-#include "fpdfsdk/cpdfsdk_interform.h"
+#include "fpdfsdk/cpdfsdk_interactiveform.h"
#include "fpdfsdk/cpdfsdk_pageview.h"
#include "fxjs/cjs_annot.h"
#include "fxjs/cjs_app.h"
@@ -27,6 +28,79 @@
#include "fxjs/cjs_printparamsobj.h"
#include "fxjs/js_resources.h"
+namespace {
+
+#define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF)
+
+int CountWords(CPDF_TextObject* pTextObj) {
+ if (!pTextObj)
+ return 0;
+
+ CPDF_Font* pFont = pTextObj->GetFont();
+ if (!pFont)
+ return 0;
+
+ bool bIsLatin = false;
+ int nWords = 0;
+ for (size_t i = 0, sz = pTextObj->CountChars(); i < sz; ++i) {
+ uint32_t charcode = CPDF_Font::kInvalidCharCode;
+ float kerning;
+
+ pTextObj->GetCharInfo(i, &charcode, &kerning);
+ WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
+
+ uint16_t unicode = 0;
+ if (swUnicode.GetLength() > 0)
+ unicode = swUnicode[0];
+
+ if (ISLATINWORD(unicode) && bIsLatin)
+ continue;
+
+ bIsLatin = ISLATINWORD(unicode);
+ if (unicode != 0x20)
+ nWords++;
+ }
+
+ return nWords;
+}
+
+WideString GetObjWordStr(CPDF_TextObject* pTextObj, int nWordIndex) {
+ WideString swRet;
+
+ CPDF_Font* pFont = pTextObj->GetFont();
+ if (!pFont)
+ return L"";
+
+ int nWords = 0;
+ bool bIsLatin = false;
+
+ for (size_t i = 0, sz = pTextObj->CountChars(); i < sz; ++i) {
+ uint32_t charcode = CPDF_Font::kInvalidCharCode;
+ float kerning;
+
+ pTextObj->GetCharInfo(i, &charcode, &kerning);
+ WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
+
+ uint16_t unicode = 0;
+ if (swUnicode.GetLength() > 0)
+ unicode = swUnicode[0];
+
+ if (ISLATINWORD(unicode) && bIsLatin) {
+ } else {
+ bIsLatin = ISLATINWORD(unicode);
+ if (unicode != 0x20)
+ nWords++;
+ }
+
+ if (nWords - 1 == nWordIndex)
+ swRet += unicode;
+ }
+
+ return swRet;
+}
+
+} // namespace
+
const JSPropertySpec CJS_Document::PropertySpecs[] = {
{"ADBE", get_ADBE_static, set_ADBE_static},
{"author", get_author_static, set_author_static},
@@ -135,8 +209,7 @@ CJS_Result CJS_Document::get_num_fields(CJS_Runtime* pRuntime) {
if (!m_pFormFillEnv)
return CJS_Result::Failure(JSMessage::kBadObjectError);
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ CPDF_InteractiveForm* pPDFForm = GetCoreInteractiveForm();
return CJS_Result::Success(pRuntime->NewNumber(
static_cast<int>(pPDFForm->CountFields(WideString()))));
}
@@ -246,8 +319,7 @@ CJS_Result CJS_Document::getField(
return CJS_Result::Failure(JSMessage::kBadObjectError);
WideString wideName = pRuntime->ToWideString(params[0]);
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ CPDF_InteractiveForm* pPDFForm = GetCoreInteractiveForm();
if (pPDFForm->CountFields(wideName) <= 0)
return CJS_Result::Success(pRuntime->NewUndefined());
@@ -278,8 +350,7 @@ CJS_Result CJS_Document::getNthFieldName(
if (nIndex < 0)
return CJS_Result::Failure(JSMessage::kValueError);
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ CPDF_InteractiveForm* pPDFForm = GetCoreInteractiveForm();
CPDF_FormField* pField = pPDFForm->GetField(nIndex, WideString());
if (!pField)
return CJS_Result::Failure(JSMessage::kBadObjectError);
@@ -319,8 +390,8 @@ CJS_Result CJS_Document::mailForm(
if (!m_pFormFillEnv->GetPermissions(FPDFPERM_EXTRACT_ACCESS))
return CJS_Result::Failure(JSMessage::kPermissionError);
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
- ByteString sTextBuf = pInterForm->ExportFormToFDFTextBuf();
+ CPDFSDK_InteractiveForm* pInteractiveForm = GetSDKInteractiveForm();
+ ByteString sTextBuf = pInteractiveForm->ExportFormToFDFTextBuf();
if (sTextBuf.GetLength() == 0)
return CJS_Result::Failure(L"Bad FDF format.");
@@ -415,9 +486,9 @@ CJS_Result CJS_Document::removeField(
return CJS_Result::Failure(JSMessage::kPermissionError);
WideString sFieldName = pRuntime->ToWideString(params[0]);
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
+ CPDFSDK_InteractiveForm* pInteractiveForm = GetSDKInteractiveForm();
std::vector<CPDFSDK_Annot::ObservedPtr> widgets;
- pInterForm->GetWidgets(sFieldName, &widgets);
+ pInteractiveForm->GetWidgets(sFieldName, &widgets);
if (widgets.empty())
return CJS_Result::Success();
@@ -440,15 +511,10 @@ CJS_Result CJS_Document::removeField(
// do not create one. We may be in the process of tearing down the document
// and creating a new pageview at this point will cause bad things.
CPDFSDK_PageView* pPageView = m_pFormFillEnv->GetPageView(pPage, false);
- if (pPageView) {
-#ifdef PDF_ENABLE_XFA
- pPageView->DeleteAnnot(pWidget);
-#endif // PDF_ENABLE_XFA
+ if (pPageView)
pPageView->UpdateRects(aRefresh);
- }
}
m_pFormFillEnv->SetChangeMark();
-
return CJS_Result::Success();
}
@@ -467,8 +533,7 @@ CJS_Result CJS_Document::resetForm(
return CJS_Result::Failure(JSMessage::kPermissionError);
}
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
+ CPDF_InteractiveForm* pPDFForm = GetCoreInteractiveForm();
if (params.empty()) {
pPDFForm->ResetForm(NotificationOption::kNotify);
m_pFormFillEnv->SetChangeMark();
@@ -544,13 +609,11 @@ CJS_Result CJS_Document::submitForm(
aFields = pRuntime->ToArray(pRuntime->GetObjectProperty(pObj, L"aFields"));
}
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
- CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm();
-
+ CPDF_InteractiveForm* pPDFForm = GetCoreInteractiveForm();
if (pRuntime->GetArrayLength(aFields) == 0 && bEmpty) {
- if (pPDFInterForm->CheckRequiredFields(nullptr, true)) {
+ if (pPDFForm->CheckRequiredFields(nullptr, true)) {
pRuntime->BeginBlock();
- pInterForm->SubmitForm(strURL, false);
+ GetSDKInteractiveForm()->SubmitForm(strURL, false);
pRuntime->EndBlock();
}
return CJS_Result::Success();
@@ -560,7 +623,6 @@ CJS_Result CJS_Document::submitForm(
for (size_t i = 0; i < pRuntime->GetArrayLength(aFields); ++i) {
WideString sName =
pRuntime->ToWideString(pRuntime->GetArrayElement(aFields, i));
- CPDF_InterForm* pPDFForm = pInterForm->GetInterForm();
for (int j = 0, jsz = pPDFForm->CountFields(sName); j < jsz; ++j) {
CPDF_FormField* pField = pPDFForm->GetField(j, sName);
if (!bEmpty && pField->GetValue().IsEmpty())
@@ -570,9 +632,9 @@ CJS_Result CJS_Document::submitForm(
}
}
- if (pPDFInterForm->CheckRequiredFields(&fieldObjects, true)) {
+ if (pPDFForm->CheckRequiredFields(&fieldObjects, true)) {
pRuntime->BeginBlock();
- pInterForm->SubmitFields(strURL, fieldObjects, true, !bFDF);
+ GetSDKInteractiveForm()->SubmitFields(strURL, fieldObjects, true, !bFDF);
pRuntime->EndBlock();
}
return CJS_Result::Success();
@@ -908,9 +970,9 @@ CJS_Result CJS_Document::get_calculate(CJS_Runtime* pRuntime) {
if (!m_pFormFillEnv)
return CJS_Result::Failure(JSMessage::kBadObjectError);
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
+ CPDFSDK_InteractiveForm* pInteractiveForm = GetSDKInteractiveForm();
return CJS_Result::Success(
- pRuntime->NewBoolean(!!pInterForm->IsCalculateEnabled()));
+ pRuntime->NewBoolean(!!pInteractiveForm->IsCalculateEnabled()));
}
CJS_Result CJS_Document::set_calculate(CJS_Runtime* pRuntime,
@@ -918,8 +980,8 @@ CJS_Result CJS_Document::set_calculate(CJS_Runtime* pRuntime,
if (!m_pFormFillEnv)
return CJS_Result::Failure(JSMessage::kBadObjectError);
- CPDFSDK_InterForm* pInterForm = m_pFormFillEnv->GetInterForm();
- pInterForm->EnableCalculate(pRuntime->ToBoolean(vp));
+ CPDFSDK_InteractiveForm* pInteractiveForm = GetSDKInteractiveForm();
+ pInteractiveForm->EnableCalculate(pRuntime->ToBoolean(vp));
return CJS_Result::Success();
}
@@ -1095,12 +1157,6 @@ CJS_Result CJS_Document::getLinks(
return CJS_Result::Success();
}
-bool CJS_Document::IsEnclosedInRect(CFX_FloatRect rect,
- CFX_FloatRect LinkRect) {
- return (rect.left <= LinkRect.left && rect.top <= LinkRect.top &&
- rect.right >= LinkRect.right && rect.bottom >= LinkRect.bottom);
-}
-
CJS_Result CJS_Document::addIcon(
CJS_Runtime* pRuntime,
const std::vector<v8::Local<v8::Value>>& params) {
@@ -1206,7 +1262,7 @@ CJS_Result CJS_Document::calculateNow(
return CJS_Result::Failure(JSMessage::kPermissionError);
}
- m_pFormFillEnv->GetInterForm()->OnCalculate(nullptr);
+ GetSDKInteractiveForm()->OnCalculate(nullptr);
return CJS_Result::Success();
}
@@ -1315,76 +1371,6 @@ CJS_Result CJS_Document::getPrintParams(
return CJS_Result::Failure(JSMessage::kNotSupportedError);
}
-#define ISLATINWORD(u) (u != 0x20 && u <= 0x28FF)
-
-int CJS_Document::CountWords(CPDF_TextObject* pTextObj) {
- if (!pTextObj)
- return 0;
-
- CPDF_Font* pFont = pTextObj->GetFont();
- if (!pFont)
- return 0;
-
- bool bIsLatin = false;
- int nWords = 0;
- for (size_t i = 0, sz = pTextObj->CountChars(); i < sz; ++i) {
- uint32_t charcode = CPDF_Font::kInvalidCharCode;
- float kerning;
-
- pTextObj->GetCharInfo(i, &charcode, &kerning);
- WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
-
- uint16_t unicode = 0;
- if (swUnicode.GetLength() > 0)
- unicode = swUnicode[0];
-
- if (ISLATINWORD(unicode) && bIsLatin)
- continue;
-
- bIsLatin = ISLATINWORD(unicode);
- if (unicode != 0x20)
- nWords++;
- }
-
- return nWords;
-}
-
-WideString CJS_Document::GetObjWordStr(CPDF_TextObject* pTextObj,
- int nWordIndex) {
- WideString swRet;
-
- CPDF_Font* pFont = pTextObj->GetFont();
- if (!pFont)
- return L"";
-
- int nWords = 0;
- bool bIsLatin = false;
-
- for (size_t i = 0, sz = pTextObj->CountChars(); i < sz; ++i) {
- uint32_t charcode = CPDF_Font::kInvalidCharCode;
- float kerning;
-
- pTextObj->GetCharInfo(i, &charcode, &kerning);
- WideString swUnicode = pFont->UnicodeFromCharCode(charcode);
-
- uint16_t unicode = 0;
- if (swUnicode.GetLength() > 0)
- unicode = swUnicode[0];
-
- if (ISLATINWORD(unicode) && bIsLatin) {
- } else {
- bIsLatin = ISLATINWORD(unicode);
- if (unicode != 0x20)
- nWords++;
- }
-
- if (nWords - 1 == nWordIndex)
- swRet += unicode;
- }
-
- return swRet;
-}
-
CJS_Result CJS_Document::get_zoom(CJS_Runtime* pRuntime) {
return CJS_Result::Success();
}
@@ -1492,3 +1478,11 @@ void CJS_Document::DoFieldDelay(const WideString& sFieldName,
for (const auto& pData : delayed_data)
CJS_Field::DoDelay(m_pFormFillEnv.Get(), pData.get());
}
+
+CPDF_InteractiveForm* CJS_Document::GetCoreInteractiveForm() {
+ return GetSDKInteractiveForm()->GetInteractiveForm();
+}
+
+CPDFSDK_InteractiveForm* CJS_Document::GetSDKInteractiveForm() {
+ return m_pFormFillEnv->GetInteractiveForm();
+}