Docs: fix documentation for java_cpp_strings
No change to logic, only docs. This fixes several mistakes in the java_cpp_strings docs: * Do not need GENERATED_JAVA_PACKAGE * {NATIVE_STRINGS}, not {NATIVE_SWITCHES} * Do not need "This file is autogenerated..." boilerplate in the template * Consistent package name between template and generated file * Consistent class name between template and generated file * Change {YEAR} to $YEAR, as this must not be left templated, but should be filled in by the author This also adds some more opinionated changes: * Mark the class as "public final" not "public abstract" and mark the constructor private, as this is a more robust way to mark the class as non-instantiable * Include the boilerplate "This following string constants..." [sic] message in the generated file, as that's what the script inserts. * Use more realistic file names (foo_switches.cc and FooSwitches.java). * Add javadoc for the template file, as a suggestion for others to document the generated class. Bug: 1011991 Test: tools/md_browser/md_browser.py Test: Upload to gerrit > open file > click "gitiles" Change-Id: Ia1aa96cf50842bf226f35440fd2cafe8a186f8b5 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1863866 Reviewed-by: Ian Vollick <vollick@chromium.org> Commit-Queue: Nate Fischer <ntfschr@chromium.org> Cr-Commit-Position: refs/heads/master@{#706456}
This commit is contained in:
@ -11,76 +11,82 @@ specified in a comment within the switch file itself.
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
1. Add directives to your C++ switch file
|
1. Create a template file (ex. `FooSwitches.java.tmpl`)
|
||||||
|
|
||||||
```cpp
|
|
||||||
// GENERATED_JAVA_PACKAGE: org.chromium.chrome
|
|
||||||
|
|
||||||
// ...snip...
|
|
||||||
|
|
||||||
// Documentation for the following switch.
|
|
||||||
const char kSomeSwitch[] = "some-switch";
|
|
||||||
|
|
||||||
// ...snip...
|
|
||||||
```
|
|
||||||
|
|
||||||
2. Create a template file
|
|
||||||
```java
|
```java
|
||||||
// Copyright {YEAR} The Chromium Authors. All rights reserved.
|
// Copyright $YEAR The Chromium Authors. All rights reserved.
|
||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
// This file is autogenerated by
|
package org.chromium.foo;
|
||||||
// {SCRIPT_NAME}
|
|
||||||
// From
|
|
||||||
// {SOURCE_PATH}, and
|
|
||||||
// {TEMPLATE_PATH}
|
|
||||||
|
|
||||||
package my.java.package
|
|
||||||
|
|
||||||
// Be sure to escape any curly braces in your template by doubling as
|
// Be sure to escape any curly braces in your template by doubling as
|
||||||
// follows.
|
// follows.
|
||||||
public abstract class MySwitches {{
|
/**
|
||||||
|
* Contains command line switches that are specific to the foo project.
|
||||||
|
*/
|
||||||
|
public final class FooSwitches {{
|
||||||
|
|
||||||
{NATIVE_SWITCHES}
|
{NATIVE_STRINGS}
|
||||||
|
|
||||||
|
// Prevents instantiation.
|
||||||
|
private FooSwitches() {{}}
|
||||||
}}
|
}}
|
||||||
```
|
```
|
||||||
|
|
||||||
3. Add a new build target
|
2. Add a new build target
|
||||||
|
|
||||||
```gn
|
```gn
|
||||||
import("//build/config/android/rules.gni")
|
import("//build/config/android/rules.gni")
|
||||||
|
|
||||||
java_cpp_strings("foo_generated_switch") {
|
java_cpp_strings("java_switches") {
|
||||||
sources = [
|
sources = [
|
||||||
"//base/android/native_foo_switches.cc",
|
"//base/android/foo_switches.cc",
|
||||||
]
|
]
|
||||||
template = "//base/android/java_templates/MySwitches.java.tmpl"
|
template = "//base/android/java_templates/FooSwitches.java.tmpl"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
5. Add the new target to the desired android_library targets srcjar_deps:
|
3. Add the new target to the desired `android_library` targets `srcjar_deps`:
|
||||||
|
|
||||||
```gn
|
```gn
|
||||||
android_library("base_java") {
|
android_library("base_java") {
|
||||||
srcjar_deps = [
|
srcjar_deps = [
|
||||||
":foo_generated_switches",
|
":java_switches",
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
5. The generated file `org/chromium/chrome/NativeFooSwitches.java` would contain:
|
4. The generated file `out/Default/gen/.../org/chromium/foo/FooSwitches.java`
|
||||||
|
would contain:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
package org.chromium.chrome;
|
// Copyright $YEAR The Chromium Authors. All rights reserved.
|
||||||
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
package org.chromium.foo;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Contains command line switches that are specific to the foo project.
|
||||||
|
*/
|
||||||
|
public final class FooSwitches {
|
||||||
|
|
||||||
public final class NativeFooSwitches {
|
|
||||||
// ...snip...
|
// ...snip...
|
||||||
|
|
||||||
|
// This following string constants were inserted by
|
||||||
|
// java_cpp_strings.py
|
||||||
|
// From
|
||||||
|
// ../../base/android/foo_switches.cc
|
||||||
|
// Into
|
||||||
|
// ../../base/android/java_templates/FooSwitches.java.tmpl
|
||||||
|
|
||||||
|
// Documentation for the C++ switch is copied here.
|
||||||
public static final String SOME_SWITCH = "some-switch";
|
public static final String SOME_SWITCH = "some-switch";
|
||||||
|
|
||||||
// ...snip...
|
// ...snip...
|
||||||
|
|
||||||
|
// Prevents instantiation.
|
||||||
|
private FooSwitches() {}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user