Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e7105c39 authored by Makoto Onuki's avatar Makoto Onuki Committed by Automerger Merge Worker
Browse files

Merge "Don't add API annotations in the internal R.java" am: 0ad81868

Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/1347423

Change-Id: I87b2c79a4ace04e4b24273b26ec557aa276d7c40
parents ad4b6013 0ad81868
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -1252,7 +1252,8 @@ class Linker {
      return false;
    }

    ClassDefinition::WriteJavaFile(manifest_class.get(), package_utf8, true, &fout);
    ClassDefinition::WriteJavaFile(manifest_class.get(), package_utf8, true,
                                   false /* strip_api_annotations */, &fout);
    fout.Flush();

    if (fout.HadError()) {
+4 −1
Original line number Diff line number Diff line
@@ -110,7 +110,7 @@ void AnnotationProcessor::AppendNewLine() {
  }
}

void AnnotationProcessor::Print(Printer* printer) const {
void AnnotationProcessor::Print(Printer* printer, bool strip_api_annotations) const {
  if (has_comments_) {
    std::string result = comment_.str();
    for (const StringPiece& line : util::Tokenize(result, '\n')) {
@@ -123,6 +123,9 @@ void AnnotationProcessor::Print(Printer* printer) const {
    printer->Println("@Deprecated");
  }

  if (strip_api_annotations) {
    return;
  }
  for (const AnnotationRule& rule : sAnnotationRules) {
    if (annotation_bit_mask_ & rule.bit_mask) {
      printer->Println(rule.annotation);
+1 −1
Original line number Diff line number Diff line
@@ -64,7 +64,7 @@ class AnnotationProcessor {
  void AppendNewLine();

  // Writes the comments and annotations to the Printer.
  void Print(text::Printer* printer) const;
  void Print(text::Printer* printer, bool strip_api_annotations = false) const;

 private:
  std::stringstream comment_;
+15 −0
Original line number Diff line number Diff line
@@ -76,6 +76,21 @@ TEST(AnnotationProcessorTest, EmitsTestApiAnnotationAndRemovesFromComment) {
  EXPECT_THAT(annotations, HasSubstr("This is a test API"));
}

TEST(AnnotationProcessorTest, NotEmitSystemApiAnnotation) {
  AnnotationProcessor processor;
  processor.AppendComment("@SystemApi This is a system API");

  std::string annotations;
  StringOutputStream out(&annotations);
  Printer printer(&out);
  processor.Print(&printer, true /* strip_api_annotations */);
  out.Flush();

  EXPECT_THAT(annotations, Not(HasSubstr("@android.annotation.SystemApi")));
  EXPECT_THAT(annotations, Not(HasSubstr("@SystemApi")));
  EXPECT_THAT(annotations, HasSubstr("This is a system API"));
}

TEST(AnnotationProcessor, ExtractsFirstSentence) {
  EXPECT_THAT(AnnotationProcessor::ExtractFirstSentence("This is the only sentence"),
              Eq("This is the only sentence"));
+8 −8
Original line number Diff line number Diff line
@@ -23,15 +23,15 @@ using ::android::StringPiece;

namespace aapt {

void ClassMember::Print(bool /*final*/, Printer* printer) const {
  processor_.Print(printer);
void ClassMember::Print(bool /*final*/, Printer* printer, bool strip_api_annotations) const {
  processor_.Print(printer, strip_api_annotations);
}

void MethodDefinition::AppendStatement(const StringPiece& statement) {
  statements_.push_back(statement.to_string());
}

void MethodDefinition::Print(bool final, Printer* printer) const {
void MethodDefinition::Print(bool final, Printer* printer, bool) const {
  printer->Print(signature_).Println(" {");
  printer->Indent();
  for (const auto& statement : statements_) {
@@ -74,12 +74,12 @@ bool ClassDefinition::empty() const {
  return true;
}

void ClassDefinition::Print(bool final, Printer* printer) const {
void ClassDefinition::Print(bool final, Printer* printer, bool strip_api_annotations) const {
  if (empty() && !create_if_empty_) {
    return;
  }

  ClassMember::Print(final, printer);
  ClassMember::Print(final,  printer, strip_api_annotations);

  printer->Print("public ");
  if (qualifier_ == ClassQualifier::kStatic) {
@@ -93,7 +93,7 @@ void ClassDefinition::Print(bool final, Printer* printer) const {
    // and takes precedence over a previous member with the same name. The overridden member is
    // set to nullptr.
    if (member != nullptr) {
      member->Print(final, printer);
      member->Print(final, printer, strip_api_annotations);
      printer->Println();
    }
  }
@@ -111,11 +111,11 @@ constexpr static const char* sWarningHeader =
    " */\n\n";

void ClassDefinition::WriteJavaFile(const ClassDefinition* def, const StringPiece& package,
                                    bool final, io::OutputStream* out) {
                                    bool final, bool strip_api_annotations, io::OutputStream* out) {
  Printer printer(out);
  printer.Print(sWarningHeader).Print("package ").Print(package).Println(";");
  printer.Println();
  def->Print(final, &printer);
  def->Print(final, &printer, strip_api_annotations);
}

}  // namespace aapt
Loading