Revert^2 "Make adbconnection start automatically for debuggable apps (on target)"

This reverts commit b2926c0cdbd30af7529b90fe20b24010f844ccc1.

We were trying to start with adbconnection but that was not always
available on devices. This could cause tests to fail.

Bug: 109505014
Reason for revert: Fixed issue causing target tests to sometimes fail.
Test: ./test.py --target

Change-Id: I0bb9cd2dce87145a8a9c372e2f015e36a3276369
diff --git a/cmdline/cmdline_parser_test.cc b/cmdline/cmdline_parser_test.cc
index 235a2aa..a52e163 100644
--- a/cmdline/cmdline_parser_test.cc
+++ b/cmdline/cmdline_parser_test.cc
@@ -371,7 +371,7 @@
  */
 TEST_F(CmdlineParserTest, TestJdwpProviderEmpty) {
   {
-    EXPECT_SINGLE_PARSE_DEFAULT_VALUE(JdwpProvider::kNone, "", M::JdwpProvider);
+    EXPECT_SINGLE_PARSE_DEFAULT_VALUE(JdwpProvider::kUnset, "", M::JdwpProvider);
   }
 }  // TEST_F
 
diff --git a/runtime/jdwp_provider.h b/runtime/jdwp_provider.h
index 698fdc0..c4f1989 100644
--- a/runtime/jdwp_provider.h
+++ b/runtime/jdwp_provider.h
@@ -19,6 +19,7 @@
 
 #include <ios>
 
+#include "base/globals.h"
 #include "base/macros.h"
 #include "base/logging.h"
 
@@ -26,13 +27,33 @@
 
 enum class JdwpProvider {
   kNone,
+  // Special value only used to denote that no explicit choice has been made by the user. This
+  // should not be used and one should always call CanonicalizeJdwpProvider which will remove this
+  // value before using a JdwpProvider value.
+  kUnset,
   kInternal,
   kAdbConnection,
 
-  // The current default provider
+  // The current default provider. Used if you run -XjdwpProvider:default
   kDefaultJdwpProvider = kAdbConnection,
+
+  // What we should use as provider with no options and debuggable. On host we always want to be
+  // none since there is no adbd on host.
+  kUnsetDebuggable = kIsTargetBuild ? kDefaultJdwpProvider : kNone,
+  // What we should use as provider with no options and non-debuggable
+  kUnsetNonDebuggable = kNone,
 };
 
+inline JdwpProvider CanonicalizeJdwpProvider(JdwpProvider p, bool debuggable) {
+  if (p != JdwpProvider::kUnset) {
+    return p;
+  }
+  if (debuggable) {
+    return JdwpProvider::kUnsetDebuggable;
+  }
+  return JdwpProvider::kUnsetNonDebuggable;
+}
+
 std::ostream& operator<<(std::ostream& os, const JdwpProvider& rhs);
 
 }  // namespace art
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 1e327fc..7efd000 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -1283,7 +1283,8 @@
   dump_gc_performance_on_shutdown_ = runtime_options.Exists(Opt::DumpGCPerformanceOnShutdown);
 
   jdwp_options_ = runtime_options.GetOrDefault(Opt::JdwpOptions);
-  jdwp_provider_ = runtime_options.GetOrDefault(Opt::JdwpProvider);
+  jdwp_provider_ = CanonicalizeJdwpProvider(runtime_options.GetOrDefault(Opt::JdwpProvider),
+                                            IsJavaDebuggable());
   switch (jdwp_provider_) {
     case JdwpProvider::kNone: {
       VLOG(jdwp) << "Disabling all JDWP support.";
@@ -1317,6 +1318,11 @@
       constexpr const char* plugin_name = kIsDebugBuild ? "libadbconnectiond.so"
                                                         : "libadbconnection.so";
       plugins_.push_back(Plugin::Create(plugin_name));
+      break;
+    }
+    case JdwpProvider::kUnset: {
+      LOG(FATAL) << "Illegal jdwp provider " << jdwp_provider_ << " was not filtered out!";
+      break;
     }
   }
   callbacks_->AddThreadLifecycleCallback(Dbg::GetThreadLifecycleCallback());
diff --git a/runtime/runtime_options.def b/runtime/runtime_options.def
index e647423..3f9a322 100644
--- a/runtime/runtime_options.def
+++ b/runtime/runtime_options.def
@@ -44,7 +44,7 @@
 RUNTIME_OPTIONS_KEY (Unit,                CheckJni)
 RUNTIME_OPTIONS_KEY (Unit,                JniOptsForceCopy)
 RUNTIME_OPTIONS_KEY (std::string,         JdwpOptions, "")
-RUNTIME_OPTIONS_KEY (JdwpProvider,        JdwpProvider,                   JdwpProvider::kNone)
+RUNTIME_OPTIONS_KEY (JdwpProvider,        JdwpProvider,                   JdwpProvider::kUnset)
 RUNTIME_OPTIONS_KEY (MemoryKiB,           MemoryMaximumSize,              gc::Heap::kDefaultMaximumSize)  // -Xmx
 RUNTIME_OPTIONS_KEY (MemoryKiB,           MemoryInitialSize,              gc::Heap::kDefaultInitialSize)  // -Xms
 RUNTIME_OPTIONS_KEY (MemoryKiB,           HeapGrowthLimit)                // Default is 0 for unlimited
diff --git a/test/etc/run-test-jar b/test/etc/run-test-jar
index 1ba433e..713fd35 100755
--- a/test/etc/run-test-jar
+++ b/test/etc/run-test-jar
@@ -377,6 +377,9 @@
 
 if [ "$USE_JVM" = "n" ]; then
     FLAGS="${FLAGS} ${ANDROID_FLAGS}"
+    # we don't want to be trying to get adbconnections since the plugin might
+    # not have been built.
+    FLAGS="${FLAGS} -XjdwpProvider:none"
     for feature in ${EXPERIMENTAL}; do
         FLAGS="${FLAGS} -Xexperimental:${feature} -Xcompiler-option --runtime-arg -Xcompiler-option -Xexperimental:${feature}"
         COMPILE_FLAGS="${COMPILE_FLAGS} --runtime-arg -Xexperimental:${feature}"