Skip to content

Commit 6ca8d73

Browse files
committed
[Xamarin.Android.Build.Tasks] Support %(JavaSourceJar.DocRootUrl)
1 parent f8ad887 commit 6ca8d73

File tree

13 files changed

+33
-5
lines changed

13 files changed

+33
-5
lines changed

Documentation/guides/building-apps/build-items.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,11 @@ Starting in Xamarin.Android 11.3, the following MSBuild metadata is supported:
370370
online documentation. Only one style is currently supported:
371371
`developer.android.com/reference@2020-Nov`.
372372

373+
Starting in Xamarin.Android 12.3, the following MSBuild metadata is supported:
374+
375+
* `%(DocRootUrl)`: A URL prefix to use in place of all {@docroot}
376+
instances in the imported documentation.
377+
373378

374379
## LibraryProjectZip
375380

build-tools/automation/azure-pipelines-apidocs.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
# Pipeline for updating and uploading android-api-docs/docs/Mono.Android/en/*
23
# https://dev.azure.com/devdiv/DevDiv/_build?definitionId=15262
34

external/Java.Interop

src/Mono.Android/Mono.Android.targets

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@
7878
<_Doclink Include="https://developer.android.com/reference" />
7979
<_Doclink Include="--doc-url-style" />
8080
<_Doclink Include="developer.android.com/reference@2020-Nov" />
81+
<_Doclink Include="--doc-root-url" />
82+
<_Doclink Include="https://developer.android.com/" />
8183
</ItemGroup>
8284
<ItemGroup>
8385
<_AndroidSources Include="$(_AndroidStableSrcDir)\android\**\*.java" />

src/Xamarin.Android.Build.Tasks/MSBuild/Xamarin/Android/Xamarin.Android.Bindings.ClassParse.targets

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ This file is only used by binding projects.
7979
JavadocCopyrightFile="%(_JavaSourceJavadocXml.CopyrightFile)"
8080
JavadocUrlPrefix="%(_JavaSourceJavadocXml.UrlPrefix)"
8181
JavadocUrlStyle="%(_JavaSourceJavadocXml.UrlStyle)"
82+
JavadocDocRootUrl="%(_JavaSourceJavadocXml.DocRootUrl)"
8283
JavaMaximumHeapSize="$(JavaMaximumHeapSize)"
8384
JavaOptions="$(JavaOptions)"
8485
JavaSdkDirectory="$(_JavaSdkDirectory)"

src/Xamarin.Android.Build.Tasks/Tasks/JavaSourceUtils.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public class JavaSourceUtils : AndroidToolTask
3131
public ITaskItem JavadocCopyrightFile { get; set; }
3232
public string JavadocUrlPrefix { get; set; }
3333
public string JavadocUrlStyle { get; set; }
34+
public string JavadocDocRootUrl { get; set; }
3435

3536
public string JavaOptions { get; set; }
3637

@@ -139,11 +140,15 @@ string CreateResponseFile ()
139140
}
140141
if (!string.IsNullOrEmpty (JavadocUrlPrefix)) {
141142
AppendArg (response, "--doc-url-prefix");
142-
AppendArg (response, Path.GetFullPath (JavadocUrlPrefix));
143+
AppendArg (response, JavadocUrlPrefix);
143144
}
144145
if (!string.IsNullOrEmpty (JavadocUrlStyle)) {
145-
AppendArg (response, "--doc-link-style");
146-
AppendArg (response, Path.GetFullPath (JavadocUrlStyle));
146+
AppendArg (response, "--doc-url-style");
147+
AppendArg (response, JavadocUrlStyle);
148+
}
149+
if (!string.IsNullOrEmpty (JavadocDocRootUrl)) {
150+
AppendArg (response, "--doc-root-url");
151+
AppendArg (response, JavadocDocRootUrl);
147152
}
148153

149154
foreach (var path in InputFiles) {

src/Xamarin.Android.Build.Tasks/Tests/Xamarin.Android.Build.Tests/BindingBuildTest.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,18 +470,29 @@ public void JavaSourceJar ()
470470
AndroidClassParser = "class-parse",
471471
};
472472
binding.SetProperty ("DocumentationFile", "UnnamedProject.xml");
473+
binding.SetProperty ("AndroidJavadocVerbosity", "full");
473474
using (var bindingBuilder = CreateDllBuilder ()) {
474475
binding.Jars.Add (new AndroidItem.EmbeddedJar ("javasourcejartest.jar") {
475476
BinaryContent = () => ResourceData.JavaSourceJarTestJar,
476477
});
478+
binding.OtherBuildItems.Add (new BuildItem ("None", "javadoc-copyright.xml") {
479+
BinaryContent = () => ResourceData.JavadocCopyright,
480+
});
477481
binding.OtherBuildItems.Add (new BuildItem ("JavaSourceJar", "javasourcejartest-sources.jar") {
478482
BinaryContent = () => ResourceData.JavaSourceJarTestSourcesJar,
483+
MetadataValues = "CopyrightFile=$(MSBuildThisFileDirectory)javadoc-copyright.xml;" +
484+
"UrlPrefix=https://developer.android.com/reference;" +
485+
"UrlStyle=developer.android.com/reference@2020-Nov;" +
486+
"DocRootUrl=https://developer.android.com",
479487
});
480488
Assert.IsTrue (bindingBuilder.Build (binding), "binding build should have succeeded");
481489

482490
var path = Path.Combine (Root, bindingBuilder.ProjectDirectory, binding.OutputPath, "UnnamedProject.xml");
483491
var xml = File.ReadAllText (path);
484492
Assert.IsTrue (xml.Contains ("<param name=\"name\">name to display.</param>"), "param `name` documentation not imported!");
493+
Assert.IsTrue (xml.Contains ("Includes a https://developer.android.com/test.html element."), "{@docRoot} value was not replaced!");
494+
Assert.IsTrue (xml.Contains ("<a href=\"https://developer.android.com/reference/com/xamarin/android/test/msbuildtest/JavaSourceJarTest#greet(java.lang.String,%20java.util.Date)\" title=\"Reference documentation\">"), "Java documentation URL was not imported!");
495+
Assert.IsTrue (xml.Contains ("<a href=\"https://developers.google.com/terms/site-policies\" title=\"Android Open Source Project\">Android Open Source Project</a>"), "Copyright file was not imported!");
485496
}
486497
}
487498

Binary file not shown.

0 commit comments

Comments
 (0)