Merge "Freeze capabilities JVMTI tests request by default."
diff --git a/test/901-hello-ti-agent/basics.cc b/test/901-hello-ti-agent/basics.cc
index 21dcf98..2edd91e 100644
--- a/test/901-hello-ti-agent/basics.cc
+++ b/test/901-hello-ti-agent/basics.cc
@@ -127,7 +127,7 @@
     printf("Unable to get jvmti env!\n");
     return 1;
   }
-  SetAllCapabilities(jvmti_env);
+  SetStandardCapabilities(jvmti_env);
 
   jvmtiPhase current_phase;
   jvmtiError phase_result = jvmti_env->GetPhase(&current_phase);
diff --git a/test/905-object-free/tracking_free.cc b/test/905-object-free/tracking_free.cc
index 998194a..5479772 100644
--- a/test/905-object-free/tracking_free.cc
+++ b/test/905-object-free/tracking_free.cc
@@ -61,7 +61,7 @@
   JavaVM* jvm = nullptr;
   env->GetJavaVM(&jvm);
   CHECK_EQ(jvm->GetEnv(reinterpret_cast<void**>(&jvmti_env2), JVMTI_VERSION_1_2), 0);
-  SetAllCapabilities(jvmti_env2);
+  SetStandardCapabilities(jvmti_env2);
   setupObjectFreeCallback(env, jvmti_env2, ObjectFree2);
 }
 
diff --git a/test/936-search-onload/search_onload.cc b/test/936-search-onload/search_onload.cc
index b2ef056..90d87e0 100644
--- a/test/936-search-onload/search_onload.cc
+++ b/test/936-search-onload/search_onload.cc
@@ -39,7 +39,7 @@
     printf("Unable to get jvmti env!\n");
     return 1;
   }
-  SetAllCapabilities(jvmti_env);
+  SetStandardCapabilities(jvmti_env);
 
   char* dex_loc = getenv("DEX_LOCATION");
   std::string dex1 = android::base::StringPrintf("%s/936-search-onload.jar", dex_loc);
diff --git a/test/983-source-transform-verify/source_transform.cc b/test/983-source-transform-verify/source_transform.cc
index a433dc9..7cd39f4 100644
--- a/test/983-source-transform-verify/source_transform.cc
+++ b/test/983-source-transform-verify/source_transform.cc
@@ -111,7 +111,7 @@
     printf("Unable to get jvmti env!\n");
     return 1;
   }
-  SetAllCapabilities(jvmti_env);
+  SetStandardCapabilities(jvmti_env);
   jvmtiEventCallbacks cb;
   memset(&cb, 0, sizeof(cb));
   cb.ClassFileLoadHook = CheckDexFileHook;
diff --git a/test/ti-agent/common_load.cc b/test/ti-agent/common_load.cc
index 0679c1b..1d13c62 100644
--- a/test/ti-agent/common_load.cc
+++ b/test/ti-agent/common_load.cc
@@ -62,7 +62,7 @@
     printf("Unable to get jvmti env!\n");
     return 1;
   }
-  SetAllCapabilities(jvmti_env);
+  SetStandardCapabilities(jvmti_env);
   return 0;
 }
 
diff --git a/test/ti-agent/jvmti_helper.cc b/test/ti-agent/jvmti_helper.cc
index 598a30f..ccd3cab 100644
--- a/test/ti-agent/jvmti_helper.cc
+++ b/test/ti-agent/jvmti_helper.cc
@@ -38,12 +38,65 @@
   }
 }
 
+// These are a set of capabilities we will enable in all situations. These are chosen since they
+// will not affect the runtime in any significant way if they are enabled.
+static const jvmtiCapabilities standard_caps = {
+    .can_tag_objects                                 = 1,
+    .can_generate_field_modification_events          = 1,
+    .can_generate_field_access_events                = 1,
+    .can_get_bytecodes                               = 1,
+    .can_get_synthetic_attribute                     = 1,
+    .can_get_owned_monitor_info                      = 0,
+    .can_get_current_contended_monitor               = 0,
+    .can_get_monitor_info                            = 0,
+    .can_pop_frame                                   = 0,
+    .can_redefine_classes                            = 1,
+    .can_signal_thread                               = 0,
+    .can_get_source_file_name                        = 1,
+    .can_get_line_numbers                            = 1,
+    .can_get_source_debug_extension                  = 1,
+    .can_access_local_variables                      = 0,
+    .can_maintain_original_method_order              = 0,
+    .can_generate_single_step_events                 = 1,
+    .can_generate_exception_events                   = 0,
+    .can_generate_frame_pop_events                   = 0,
+    .can_generate_breakpoint_events                  = 1,
+    .can_suspend                                     = 1,
+    .can_redefine_any_class                          = 0,
+    .can_get_current_thread_cpu_time                 = 0,
+    .can_get_thread_cpu_time                         = 0,
+    .can_generate_method_entry_events                = 1,
+    .can_generate_method_exit_events                 = 1,
+    .can_generate_all_class_hook_events              = 0,
+    .can_generate_compiled_method_load_events        = 0,
+    .can_generate_monitor_events                     = 0,
+    .can_generate_vm_object_alloc_events             = 1,
+    .can_generate_native_method_bind_events          = 1,
+    .can_generate_garbage_collection_events          = 1,
+    .can_generate_object_free_events                 = 1,
+    .can_force_early_return                          = 0,
+    .can_get_owned_monitor_stack_depth_info          = 0,
+    .can_get_constant_pool                           = 0,
+    .can_set_native_method_prefix                    = 0,
+    .can_retransform_classes                         = 1,
+    .can_retransform_any_class                       = 0,
+    .can_generate_resource_exhaustion_heap_events    = 0,
+    .can_generate_resource_exhaustion_threads_events = 0,
+};
+
+jvmtiCapabilities GetStandardCapabilities() {
+  return standard_caps;
+}
+
+void SetStandardCapabilities(jvmtiEnv* env) {
+  jvmtiCapabilities caps = GetStandardCapabilities();
+  CheckJvmtiError(env, env->AddCapabilities(&caps));
+}
+
 void SetAllCapabilities(jvmtiEnv* env) {
   jvmtiCapabilities caps;
-  jvmtiError error1 = env->GetPotentialCapabilities(&caps);
-  CheckJvmtiError(env, error1);
-  jvmtiError error2 = env->AddCapabilities(&caps);
-  CheckJvmtiError(env, error2);
+  CheckJvmtiError(env, env->GetPotentialCapabilities(&caps));
+  CheckJvmtiError(env, env->AddCapabilities(&caps));
 }
 
 bool JvmtiErrorToException(JNIEnv* env, jvmtiEnv* jvmti_env, jvmtiError error) {
diff --git a/test/ti-agent/jvmti_helper.h b/test/ti-agent/jvmti_helper.h
index 66d88d0..0145f36 100644
--- a/test/ti-agent/jvmti_helper.h
+++ b/test/ti-agent/jvmti_helper.h
@@ -26,7 +26,14 @@
 
 namespace art {
 
+// Get a standard set of capabilities for use in tests.
+jvmtiCapabilities GetStandardCapabilities();
+
+// Add all the standard capabilities to the given env.
+void SetStandardCapabilities(jvmtiEnv* env);
+
 // Add all capabilities to the given env.
+// TODO Remove this in the future.
 void SetAllCapabilities(jvmtiEnv* env);
 
 // Check whether the given error is NONE. If not, print out the corresponding error message
diff --git a/test/ti-agent/redefinition_helper.cc b/test/ti-agent/redefinition_helper.cc
index 3b18879..75a6f5f 100644
--- a/test/ti-agent/redefinition_helper.cc
+++ b/test/ti-agent/redefinition_helper.cc
@@ -332,7 +332,7 @@
                     "Unable to create temporary jvmtiEnv for RetransformClasses call.");
       return;
     }
-    SetAllCapabilities(real_env);
+    SetStandardCapabilities(real_env);
   } else {
     real_env = jvmti_env;
   }
@@ -373,15 +373,14 @@
 }  // namespace common_transform
 
 static void SetupCommonRedefine() {
-  jvmtiCapabilities caps;
-  jvmti_env->GetPotentialCapabilities(&caps);
+  jvmtiCapabilities caps = GetStandardCapabilities();
   caps.can_retransform_classes = 0;
   caps.can_retransform_any_class = 0;
   jvmti_env->AddCapabilities(&caps);
 }
 
 static void SetupCommonRetransform() {
-  SetAllCapabilities(jvmti_env);
+  SetStandardCapabilities(jvmti_env);
   jvmtiEventCallbacks cb;
   memset(&cb, 0, sizeof(cb));
   cb.ClassFileLoadHook = common_retransform::CommonClassFileLoadHookRetransformable;
@@ -392,8 +391,7 @@
 
 static void SetupCommonTransform() {
   // Don't set the retransform caps
-  jvmtiCapabilities caps;
-  jvmti_env->GetPotentialCapabilities(&caps);
+  jvmtiCapabilities caps = GetStandardCapabilities();
   caps.can_retransform_classes = 0;
   caps.can_retransform_any_class = 0;
   jvmti_env->AddCapabilities(&caps);
diff --git a/test/ti-stress/stress.cc b/test/ti-stress/stress.cc
index d197acd..aa50648 100644
--- a/test/ti-stress/stress.cc
+++ b/test/ti-stress/stress.cc
@@ -780,8 +780,49 @@
   }
 
   // Just get all capabilities.
-  jvmtiCapabilities caps;
-  jvmti->GetPotentialCapabilities(&caps);
+  jvmtiCapabilities caps = {
+    .can_tag_objects                                 = 0,
+    .can_generate_field_modification_events          = 1,
+    .can_generate_field_access_events                = 1,
+    .can_get_bytecodes                               = 0,
+    .can_get_synthetic_attribute                     = 0,
+    .can_get_owned_monitor_info                      = 0,
+    .can_get_current_contended_monitor               = 0,
+    .can_get_monitor_info                            = 0,
+    .can_pop_frame                                   = 0,
+    .can_redefine_classes                            = 1,
+    .can_signal_thread                               = 0,
+    .can_get_source_file_name                        = 1,
+    .can_get_line_numbers                            = 1,
+    .can_get_source_debug_extension                  = 0,
+    .can_access_local_variables                      = 0,
+    .can_maintain_original_method_order              = 0,
+    .can_generate_single_step_events                 = 1,
+    .can_generate_exception_events                   = 0,
+    .can_generate_frame_pop_events                   = 0,
+    .can_generate_breakpoint_events                  = 0,
+    .can_suspend                                     = 0,
+    .can_redefine_any_class                          = 0,
+    .can_get_current_thread_cpu_time                 = 0,
+    .can_get_thread_cpu_time                         = 0,
+    .can_generate_method_entry_events                = 1,
+    .can_generate_method_exit_events                 = 1,
+    .can_generate_all_class_hook_events              = 0,
+    .can_generate_compiled_method_load_events        = 0,
+    .can_generate_monitor_events                     = 0,
+    .can_generate_vm_object_alloc_events             = 0,
+    .can_generate_native_method_bind_events          = 1,
+    .can_generate_garbage_collection_events          = 0,
+    .can_generate_object_free_events                 = 0,
+    .can_force_early_return                          = 0,
+    .can_get_owned_monitor_stack_depth_info          = 0,
+    .can_get_constant_pool                           = 0,
+    .can_set_native_method_prefix                    = 0,
+    .can_retransform_classes                         = 1,
+    .can_retransform_any_class                       = 0,
+    .can_generate_resource_exhaustion_heap_events    = 0,
+    .can_generate_resource_exhaustion_threads_events = 0,
+  };
   jvmti->AddCapabilities(&caps);
 
   // Set callbacks.