From 33c4cdb4efbacb73151c982549151ea4e545eff8 Mon Sep 17 00:00:00 2001 From: tonikitoo Date: Mon, 8 Aug 2016 10:52:51 -0700 Subject: Add support to Document::URL property getter. As per the PDF specification at [1] " This property specifies the document's URL. ". IE/Acrobat supports it, and getting it implemented would be one step forward in order to support Acrobat JS script as the one in [2]. [1] http://partners.adobe.com/public/developer/en/acrobat/sdk/5186AcroJS.pdf [2] https://bugs.chromium.org/p/pdfium/issues/detail?id=492 BUG=492 Review-Url: https://codereview.chromium.org/2219183002 --- fpdfsdk/javascript/Document.cpp | 13 +++++++++++++ fpdfsdk/javascript/Document.h | 2 ++ testing/resources/javascript/document_props.in | 1 + testing/resources/javascript/document_props_expected.txt | 3 +++ 4 files changed, 19 insertions(+) diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp index 9c680de906..161a5d09e9 100644 --- a/fpdfsdk/javascript/Document.cpp +++ b/fpdfsdk/javascript/Document.cpp @@ -91,6 +91,7 @@ JS_STATIC_PROP_ENTRY(path) JS_STATIC_PROP_ENTRY(producer) JS_STATIC_PROP_ENTRY(subject) JS_STATIC_PROP_ENTRY(title) +JS_STATIC_PROP_ENTRY(URL) JS_STATIC_PROP_ENTRY(zoom) JS_STATIC_PROP_ENTRY(zoomType) END_JS_STATIC_PROP() @@ -904,6 +905,18 @@ FX_BOOL Document::mouseY(IJS_Context* cc, return TRUE; } +FX_BOOL Document::URL(IJS_Context* cc, + CJS_PropValue& vp, + CFX_WideString& sError) { + if (vp.IsSetting()) { + CJS_Context* pContext = static_cast(cc); + sError = JSGetStringFromID(pContext, IDS_STRING_JSREADONLY); + return FALSE; + } + vp << m_pDocument->GetPath(); + return TRUE; +} + FX_BOOL Document::baseURL(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError) { diff --git a/fpdfsdk/javascript/Document.h b/fpdfsdk/javascript/Document.h index 7e5d6dfe8a..ae2d6c1afe 100644 --- a/fpdfsdk/javascript/Document.h +++ b/fpdfsdk/javascript/Document.h @@ -259,6 +259,7 @@ class Document : public CJS_EmbedObj { const std::vector& params, CJS_Value& vRet, CFX_WideString& sError); + FX_BOOL URL(IJS_Context* cc, CJS_PropValue& vp, CFX_WideString& sError); void AttachDoc(CPDFSDK_Document* pDoc); CPDFSDK_Document* GetReaderDoc(); @@ -324,6 +325,7 @@ class CJS_Document : public CJS_Object { JS_STATIC_PROP(producer, Document); JS_STATIC_PROP(subject, Document); JS_STATIC_PROP(title, Document); + JS_STATIC_PROP(URL, Document); JS_STATIC_PROP(zoom, Document); JS_STATIC_PROP(zoomType, Document); diff --git a/testing/resources/javascript/document_props.in b/testing/resources/javascript/document_props.in index c628fafad2..1882f79c8a 100644 --- a/testing/resources/javascript/document_props.in +++ b/testing/resources/javascript/document_props.in @@ -100,6 +100,7 @@ var document_props = [ 'producer', 'subject', 'title', + 'URL', 'zoom', 'zoomType', ]; diff --git a/testing/resources/javascript/document_props_expected.txt b/testing/resources/javascript/document_props_expected.txt index 4b60a624da..90914cda51 100644 --- a/testing/resources/javascript/document_props_expected.txt +++ b/testing/resources/javascript/document_props_expected.txt @@ -28,6 +28,7 @@ Alert: this.path is string / Alert: this.producer is string Alert: this.subject is string Alert: this.title is string +Alert: this.URL is string Alert: this.zoom is undefined undefined Alert: this.zoomType is undefined undefined Alert: *** Setting properties *** @@ -61,6 +62,7 @@ Alert: ERROR: Document.path: Cannot assign to readonly property. Alert: this.producer = 3; yields 3 Alert: this.subject = 3; yields 3 Alert: this.title = 3; yields 3 +Alert: ERROR: Document.URL: Cannot assign to readonly property. Alert: this.zoom = 3; yields 3 Alert: this.zoomType = 3; yields 3 Alert: *** Getting properties *** @@ -93,5 +95,6 @@ Alert: this.path is string / Alert: this.producer is string 3 Alert: this.subject is string 3 Alert: this.title is string 3 +Alert: this.URL is string Alert: this.zoom is undefined undefined Alert: this.zoomType is undefined undefined -- cgit v1.2.3