Revert^2 "Support shared libraries in CreateContextFromClassLoader."

This reverts commit 1717a493a4a0c1c3b69ecfcb58838627b4c75878.

bug: 120036590
bug: 120031686

Reason for revert: Fix code to ensure ownership of dex files.

Change-Id: I99fffb52b73e0a41d779a41605ddf2e9249c02e0
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc
index 991faa2..9b2e1a1 100644
--- a/runtime/class_linker.cc
+++ b/runtime/class_linker.cc
@@ -9116,8 +9116,8 @@
     Thread* self,
     const std::vector<const DexFile*>& dex_files,
     Handle<mirror::Class> loader_class,
-    Handle<mirror::ObjectArray<mirror::ClassLoader>> shared_libraries,
-    Handle<mirror::ClassLoader> parent_loader) {
+    Handle<mirror::ClassLoader> parent_loader,
+    Handle<mirror::ObjectArray<mirror::ClassLoader>> shared_libraries) {
 
   StackHandleScope<5> hs(self);
 
@@ -9246,7 +9246,8 @@
 jobject ClassLinker::CreateWellKnownClassLoader(Thread* self,
                                                 const std::vector<const DexFile*>& dex_files,
                                                 jclass loader_class,
-                                                jobject parent_loader) {
+                                                jobject parent_loader,
+                                                jobject shared_libraries) {
   CHECK(self->GetJniEnv()->IsSameObject(loader_class,
                                         WellKnownClasses::dalvik_system_PathClassLoader) ||
         self->GetJniEnv()->IsSameObject(loader_class,
@@ -9257,24 +9258,21 @@
   ScopedObjectAccessUnchecked soa(self);
 
   // For now, create a libcore-level DexFile for each ART DexFile. This "explodes" multidex.
-  StackHandleScope<3> hs(self);
+  StackHandleScope<4> hs(self);
 
   Handle<mirror::Class> h_loader_class =
       hs.NewHandle<mirror::Class>(soa.Decode<mirror::Class>(loader_class));
-  Handle<mirror::ClassLoader> parent =
-      hs.NewHandle<mirror::ClassLoader>(ObjPtr<mirror::ClassLoader>::DownCast(
-          (parent_loader != nullptr)
-              ? soa.Decode<mirror::ClassLoader>(parent_loader)
-              : nullptr));
-  Handle<mirror::ObjectArray<mirror::ClassLoader>> shared_libraries =
-      hs.NewHandle<mirror::ObjectArray<mirror::ClassLoader>>(nullptr);
+  Handle<mirror::ClassLoader> h_parent =
+      hs.NewHandle<mirror::ClassLoader>(soa.Decode<mirror::ClassLoader>(parent_loader));
+  Handle<mirror::ObjectArray<mirror::ClassLoader>> h_shared_libraries =
+      hs.NewHandle(soa.Decode<mirror::ObjectArray<mirror::ClassLoader>>(shared_libraries));
 
   ObjPtr<mirror::ClassLoader> loader = CreateWellKnownClassLoader(
       self,
       dex_files,
       h_loader_class,
-      shared_libraries,
-      parent);
+      h_parent,
+      h_shared_libraries);
 
   // Make it a global ref and return.
   ScopedLocalRef<jobject> local_ref(