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
diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index 9c680de..161a5d0 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -91,6 +91,7 @@
 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 @@
   return TRUE;
 }
 
+FX_BOOL Document::URL(IJS_Context* cc,
+                      CJS_PropValue& vp,
+                      CFX_WideString& sError) {
+  if (vp.IsSetting()) {
+    CJS_Context* pContext = static_cast<CJS_Context*>(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 7e5d6df..ae2d6c1 100644
--- a/fpdfsdk/javascript/Document.h
+++ b/fpdfsdk/javascript/Document.h
@@ -259,6 +259,7 @@
                      const std::vector<CJS_Value>& 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 @@
   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 c628faf..1882f79 100644
--- a/testing/resources/javascript/document_props.in
+++ b/testing/resources/javascript/document_props.in
@@ -100,6 +100,7 @@
   '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 4b60a62..90914cd 100644
--- a/testing/resources/javascript/document_props_expected.txt
+++ b/testing/resources/javascript/document_props_expected.txt
@@ -28,6 +28,7 @@
 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: 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.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