Revert "Add disable/get/set_hidden_api_enforcement_policy extensions"

This reverts commit c38d94449a0ccfefd396d2e01b571f3e804d9e48.

Bug: 175329755

Reason for revert: Fails on redefine-stress

Change-Id: Id3b4e504ebfe6b090b06b7f47a3896fe30cdf850
diff --git a/openjdkjvmti/ti_class.cc b/openjdkjvmti/ti_class.cc
index 924a0d8..c22f38f 100644
--- a/openjdkjvmti/ti_class.cc
+++ b/openjdkjvmti/ti_class.cc
@@ -56,7 +56,6 @@
 #include "gc/heap.h"
 #include "gc_root.h"
 #include "handle.h"
-#include "hidden_api.h"
 #include "jni/jni_env_ext-inl.h"
 #include "jni/jni_internal.h"
 #include "mirror/array-alloc-inl.h"
@@ -1138,38 +1137,4 @@
   return OK;
 }
 
-jvmtiError ClassUtil::DisableHiddenApiEnforcementPolicy(jvmtiEnv* env) {
-  return SetHiddenApiEnforcementPolicy(
-      env, static_cast<jint>(art::hiddenapi::EnforcementPolicy::kDisabled));
-}
-
-jvmtiError ClassUtil::GetHiddenApiEnforcementPolicy(jvmtiEnv* env, jint* policy) {
-  if (env == nullptr) {
-    return ERR(INVALID_ENVIRONMENT);
-  } else if (art::Thread::Current() == nullptr) {
-    return ERR(UNATTACHED_THREAD);
-  } else if (policy == nullptr) {
-    return ERR(NULL_POINTER);
-  }
-  *policy = static_cast<jint>(art::Runtime::Current()->GetHiddenApiEnforcementPolicy());
-  return OK;
-}
-
-jvmtiError ClassUtil::SetHiddenApiEnforcementPolicy(jvmtiEnv* env, jint policy) {
-  if (env == nullptr) {
-    return ERR(INVALID_ENVIRONMENT);
-  } else if (art::Thread::Current() == nullptr) {
-    return ERR(UNATTACHED_THREAD);
-  } else if (policy < static_cast<jint>(art::hiddenapi::EnforcementPolicy::kDisabled) ||
-             policy > static_cast<jint>(art::hiddenapi::EnforcementPolicy::kMax)) {
-    JVMTI_LOG(INFO, env) << "Bad policy: " << policy << ", must be between "
-                         << static_cast<jint>(art::hiddenapi::EnforcementPolicy::kDisabled)
-                         << " and " << static_cast<jint>(art::hiddenapi::EnforcementPolicy::kMax);
-    return ERR(ILLEGAL_ARGUMENT);
-  }
-  art::Runtime::Current()->SetHiddenApiEnforcementPolicy(
-      static_cast<art::hiddenapi::EnforcementPolicy>(policy));
-  return OK;
-}
-
 }  // namespace openjdkjvmti
diff --git a/openjdkjvmti/ti_class.h b/openjdkjvmti/ti_class.h
index 229a6ce..7e427a0 100644
--- a/openjdkjvmti/ti_class.h
+++ b/openjdkjvmti/ti_class.h
@@ -93,10 +93,6 @@
   static jvmtiError GetSourceDebugExtension(jvmtiEnv* env,
                                             jclass klass,
                                             char** source_debug_extension_ptr);
-
-  static jvmtiError DisableHiddenApiEnforcementPolicy(jvmtiEnv* env);
-  static jvmtiError GetHiddenApiEnforcementPolicy(jvmtiEnv* env, jint* policy);
-  static jvmtiError SetHiddenApiEnforcementPolicy(jvmtiEnv* env, jint policy);
 };
 
 }  // namespace openjdkjvmti
diff --git a/openjdkjvmti/ti_extension.cc b/openjdkjvmti/ti_extension.cc
index 10ea43a..dd68533 100644
--- a/openjdkjvmti/ti_extension.cc
+++ b/openjdkjvmti/ti_extension.cc
@@ -509,58 +509,6 @@
   if (error != ERR(NONE)) {
     return error;
   }
-  // GetHiddenApiEnforcementPolicy
-  error = add_extension(
-      reinterpret_cast<jvmtiExtensionFunction>(ClassUtil::GetHiddenApiEnforcementPolicy),
-      "com.android.art.misc.get_hidden_api_enforcement_policy",
-      "Gets the current hiddenapi enforcement policy. Policy values are defined in"
-      " `frameworks/base/core/java/android/content/pm/ApplicationInfo.java` as the"
-      " HIDDEN_API_ENFORCEMENT_ static fields. See the comments in `art/runtime/hidden_api.h` for"
-      " more information. This should be used with"
-      " `com.android.art.misc.set_hidden_api_enforcement_policy` in order to restore the"
-      " hidden-api state after temporarily toggling it.",
-      {
-        { "policy", JVMTI_KIND_OUT, JVMTI_TYPE_JINT, false },
-      },
-      {
-         ERR(NULL_POINTER),
-      });
-  if (error != ERR(NONE)) {
-    return error;
-  }
-  // SetHiddenApiEnforcementPolicy
-  error = add_extension(
-      reinterpret_cast<jvmtiExtensionFunction>(ClassUtil::SetHiddenApiEnforcementPolicy),
-      "com.android.art.misc.set_hidden_api_enforcement_policy",
-      "Sets the hiddenapi enforcement policy to the given value. Policy values are defined in"
-      " `frameworks/base/core/java/android/content/pm/ApplicationInfo.java` as the"
-      " HIDDEN_API_ENFORCEMENT_ static fields. See the comments in `art/runtime/hidden_api.h` for"
-      " more information. This API should always be used sparingly and in conjunction with"
-      " `com.android.art.misc.get_hidden_api_enforcement_policy` to temporarily toggle"
-      " hidden-api on and off as changes are required.",
-      {
-        { "policy", JVMTI_KIND_IN, JVMTI_TYPE_JINT, false },
-      },
-      {
-         ERR(ILLEGAL_ARGUMENT),
-      });
-  if (error != ERR(NONE)) {
-    return error;
-  }
-  // DisableHiddenApiEnforcementPolicy
-  error = add_extension(
-      reinterpret_cast<jvmtiExtensionFunction>(ClassUtil::DisableHiddenApiEnforcementPolicy),
-      "com.android.art.misc.disable_hidden_api_enforcement_policy",
-      "Sets the hiddenapi enforcement policy to disabled. This API should always be"
-      " used sparingly and in conjunction with"
-      " `com.android.art.misc.get_hidden_api_enforcement_policy` and"
-      " `com.android.art.misc.set_hidden_api_enforcement_policy` to temporarily"
-      " toggle hidden-api on and off as changes are required.",
-      {},
-      {});
-  if (error != ERR(NONE)) {
-    return error;
-  }
 
   // Copy into output buffer.
 
diff --git a/test/2038-hiddenapi-jvmti-ext/build b/test/2038-hiddenapi-jvmti-ext/build
deleted file mode 100644
index f4b029f..0000000
--- a/test/2038-hiddenapi-jvmti-ext/build
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2018 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-USE_HIDDENAPI=true ./default-build "$@"
diff --git a/test/2038-hiddenapi-jvmti-ext/expected-stderr.txt b/test/2038-hiddenapi-jvmti-ext/expected-stderr.txt
deleted file mode 100644
index e69de29..0000000
--- a/test/2038-hiddenapi-jvmti-ext/expected-stderr.txt
+++ /dev/null
diff --git a/test/2038-hiddenapi-jvmti-ext/expected-stdout.txt b/test/2038-hiddenapi-jvmti-ext/expected-stdout.txt
deleted file mode 100644
index 6a5618e..0000000
--- a/test/2038-hiddenapi-jvmti-ext/expected-stdout.txt
+++ /dev/null
@@ -1 +0,0 @@
-JNI_OnLoad called
diff --git a/test/2038-hiddenapi-jvmti-ext/hiddenapi-flags.csv b/test/2038-hiddenapi-jvmti-ext/hiddenapi-flags.csv
deleted file mode 100644
index 6b31be6..0000000
--- a/test/2038-hiddenapi-jvmti-ext/hiddenapi-flags.csv
+++ /dev/null
@@ -1,2 +0,0 @@
-Lart/Test2038;->foo()V,blocked
-Lart/Test2038;->bar:I,blocked
diff --git a/test/2038-hiddenapi-jvmti-ext/hiddenapi_ext.cc b/test/2038-hiddenapi-jvmti-ext/hiddenapi_ext.cc
deleted file mode 100644
index c012b11..0000000
--- a/test/2038-hiddenapi-jvmti-ext/hiddenapi_ext.cc
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#include <queue>
-#include <vector>
-
-#include "jvmti.h"
-
-// Test infrastructure
-#include "jvmti_helper.h"
-#include "nativehelper/scoped_local_ref.h"
-#include "nativehelper/scoped_primitive_array.h"
-#include "test_env.h"
-
-namespace art {
-namespace Test2038HiddenApiExt {
-
-template <typename T>
-static void Dealloc(T* t) {
-  jvmti_env->Deallocate(reinterpret_cast<unsigned char*>(t));
-}
-
-template <typename T, typename... Rest>
-static void Dealloc(T* t, Rest... rs) {
-  Dealloc(t);
-  Dealloc(rs...);
-}
-
-static void DeallocParams(jvmtiParamInfo* params, jint n_params) {
-  for (jint i = 0; i < n_params; i++) {
-    Dealloc(params[i].name);
-  }
-}
-
-static constexpr std::string_view kDisablePolicyName =
-    "com.android.art.misc.disable_hidden_api_enforcement_policy";
-static constexpr std::string_view kGetPolicyName =
-    "com.android.art.misc.get_hidden_api_enforcement_policy";
-static constexpr std::string_view kSetPolicyName =
-    "com.android.art.misc.set_hidden_api_enforcement_policy";
-using GetPolicy = jvmtiError (*)(jvmtiEnv*, jint*);
-using SetPolicy = jvmtiError (*)(jvmtiEnv*, jint);
-using DisablePolicy = jvmtiError (*)(jvmtiEnv*);
-
-void* GetExtension(JNIEnv* env, const std::string_view& name) {
-  // Get the extensions.
-  jint n_ext = 0;
-  void* result = nullptr;
-  jvmtiExtensionFunctionInfo* infos = nullptr;
-  if (JvmtiErrorToException(env, jvmti_env, jvmti_env->GetExtensionFunctions(&n_ext, &infos))) {
-    return nullptr;
-  }
-  for (jint i = 0; i < n_ext; i++) {
-    jvmtiExtensionFunctionInfo* cur_info = &infos[i];
-    if (name == std::string_view(cur_info->id)) {
-      result = reinterpret_cast<void*>(cur_info->func);
-    }
-    // Cleanup the cur_info
-    DeallocParams(cur_info->params, cur_info->param_count);
-    Dealloc(cur_info->id, cur_info->short_description, cur_info->params, cur_info->errors);
-  }
-  // Cleanup the array.
-  Dealloc(infos);
-  if (result == nullptr) {
-    ScopedLocalRef<jclass> rt_exception(env, env->FindClass("java/lang/RuntimeException"));
-    env->ThrowNew(rt_exception.get(), "Unable to find policy extensions.");
-    return nullptr;
-  }
-  return result;
-}
-
-extern "C" JNIEXPORT jint JNICALL Java_Main_disablePolicy(JNIEnv* env, jclass) {
-  jint res;
-  GetPolicy get_policy = reinterpret_cast<GetPolicy>(GetExtension(env, kGetPolicyName));
-  if (get_policy == nullptr) {
-    return -1;
-  }
-  DisablePolicy disable_policy =
-      reinterpret_cast<DisablePolicy>(GetExtension(env, kDisablePolicyName));
-  if (disable_policy == nullptr) {
-    return -1;
-  }
-  if (JvmtiErrorToException(env, jvmti_env, get_policy(jvmti_env, &res))) {
-    return -1;
-  }
-  JvmtiErrorToException(env, jvmti_env, disable_policy(jvmti_env));
-  return res;
-}
-
-extern "C" JNIEXPORT jint JNICALL Java_Main_setPolicy(JNIEnv* env, jclass, jint pol) {
-  jint res;
-  GetPolicy get_policy = reinterpret_cast<GetPolicy>(GetExtension(env, kGetPolicyName));
-  if (get_policy == nullptr) {
-    return -1;
-  }
-  SetPolicy set_policy = reinterpret_cast<SetPolicy>(GetExtension(env, kSetPolicyName));
-  if (set_policy == nullptr) {
-    return -1;
-  }
-  if (JvmtiErrorToException(env, jvmti_env, get_policy(jvmti_env, &res))) {
-    return -1;
-  }
-  JvmtiErrorToException(env, jvmti_env, set_policy(jvmti_env, pol));
-  return res;
-}
-
-}  // namespace Test2038HiddenApiExt
-}  // namespace art
diff --git a/test/2038-hiddenapi-jvmti-ext/info.txt b/test/2038-hiddenapi-jvmti-ext/info.txt
deleted file mode 100644
index 01c37e6..0000000
--- a/test/2038-hiddenapi-jvmti-ext/info.txt
+++ /dev/null
@@ -1 +0,0 @@
-Tests that the JVMTI set/get_hidden_api_enforcement_policy extensions work
diff --git a/test/2038-hiddenapi-jvmti-ext/run b/test/2038-hiddenapi-jvmti-ext/run
deleted file mode 100755
index c6e62ae..0000000
--- a/test/2038-hiddenapi-jvmti-ext/run
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/bash
-#
-# Copyright 2016 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-./default-run "$@" --jvmti
diff --git a/test/2038-hiddenapi-jvmti-ext/src-ex/Test2038.java b/test/2038-hiddenapi-jvmti-ext/src-ex/Test2038.java
deleted file mode 100644
index 07da43b..0000000
--- a/test/2038-hiddenapi-jvmti-ext/src-ex/Test2038.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package art;
-
-public class Test2038 {
-  public void foo() {
-    System.out.println("hello");
-  }
-
-  public int bar = 42;
-}
diff --git a/test/2038-hiddenapi-jvmti-ext/src/Main.java b/test/2038-hiddenapi-jvmti-ext/src/Main.java
deleted file mode 100644
index b474c60..0000000
--- a/test/2038-hiddenapi-jvmti-ext/src/Main.java
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.util.Base64;
-
-public class Main {
-  public static void main(String[] args) throws ClassNotFoundException {
-    System.loadLibrary(args[0]);
-
-    // Run the initialization routine. This will enable hidden API checks in
-    // the runtime, in case they are not enabled by default.
-    init();
-
-    // Load the '-ex' APK and attach it to the boot class path.
-    appendToBootClassLoader(DEX_EXTRA, /* isCorePlatform */ false);
-
-    // Find the test class in boot class loader and verify that its members are hidden.
-    Class<?> klass = Class.forName("art.Test2038", true, BOOT_CLASS_LOADER);
-    assertFieldIsHidden(klass, "before set-policy");
-    assertMethodIsHidden(klass, "before set-policy");
-
-    int old_policy = disablePolicy();
-
-    // Verify that the class members are not hidden.
-    assertFieldNotHidden(klass, "after disable-policy");
-    assertMethodNotHidden(klass, "after disable-policy");
-
-    setPolicy(old_policy);
-
-    assertFieldIsHidden(klass, "after set-policy 2");
-    assertMethodIsHidden(klass, "after set-policy 2");
-  }
-
-  private static void assertMethodNotHidden(Class<?> klass, String msg) {
-    try {
-      klass.getDeclaredMethod("foo");
-    } catch (NoSuchMethodException ex) {
-      // Unexpected. Should not have thrown NoSuchMethodException.
-      throw new RuntimeException("Method should be accessible " + msg);
-    }
-  }
-
-  private static void assertFieldNotHidden(Class<?> klass, String msg) {
-    try {
-      klass.getDeclaredField("bar");
-    } catch (NoSuchFieldException ex) {
-      // Unexpected. Should not have thrown NoSuchFieldException.
-      throw new RuntimeException("Field should be accessible " + msg);
-    }
-  }
-  private static void assertMethodIsHidden(Class<?> klass, String msg) {
-    try {
-      klass.getDeclaredMethod("foo");
-      // Unexpected. Should have thrown NoSuchMethodException.
-      throw new RuntimeException("Method should not be accessible " + msg);
-    } catch (NoSuchMethodException ex) {
-    }
-  }
-
-  private static void assertFieldIsHidden(Class<?> klass, String msg) {
-    try {
-      klass.getDeclaredField("bar");
-      // Unexpected. Should have thrown NoSuchFieldException.
-      throw new RuntimeException("Field should not be accessible " + msg);
-    } catch (NoSuchFieldException ex) {
-    }
-  }
-
-  private static final String DEX_EXTRA =
-      new File(System.getenv("DEX_LOCATION"), "2038-hiddenapi-jvmti-ext-ex.jar").getAbsolutePath();
-
-  private static ClassLoader BOOT_CLASS_LOADER = Object.class.getClassLoader();
-
-  // Native functions. Note that these are implemented in 674-hiddenapi/hiddenapi.cc.
-  private static native void appendToBootClassLoader(String dexPath, boolean isCorePlatform);
-  private static native void init();
-
-  // Native function implemented in hiddenapi_ext.cc
-  private static native int setPolicy(int new_policy);
-  private static native int disablePolicy();
-}
diff --git a/test/Android.bp b/test/Android.bp
index 5a458d2..f7e85e9 100644
--- a/test/Android.bp
+++ b/test/Android.bp
@@ -462,7 +462,6 @@
         "1963-add-to-dex-classloader-in-memory/check_memfd_create.cc",
         "2012-structural-redefinition-failures-jni-id/set-jni-id-used.cc",
         "2031-zygote-compiled-frame-deopt/native-wait.cc",
-        "2038-hiddenapi-jvmti-ext/hiddenapi_ext.cc",
     ],
     static_libs: [
         "libz",
diff --git a/test/knownfailures.json b/test/knownfailures.json
index ef4900b..385db45 100644
--- a/test/knownfailures.json
+++ b/test/knownfailures.json
@@ -1183,8 +1183,7 @@
                   "2012-structural-redefinition-failures-jni-id",
                   "2033-shutdown-mechanics",
                   "2035-structural-native-method",
-                  "2036-structural-subclass-shadow",
-                  "2038-hiddenapi-jvmti-ext"],
+                  "2036-structural-subclass-shadow"],
         "variant": "jvm",
         "description": ["Doesn't run on RI."]
     },