Loading dexpreopt/class_loader_context.go +7 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,13 @@ func (clcMap ClassLoaderContextMap) addContext(ctx android.ModuleInstallPathCont devicePath = android.InstallPathToOnDevicePath(ctx, installPath.(android.InstallPath)) } // Nested class loader context shouldn't have conditional part (it is allowed only at the top level). for ver, _ := range nestedClcMap { if ver != AnySdkVersion { clcStr, _ := ComputeClassLoaderContext(nestedClcMap) return fmt.Errorf("nested class loader context shouldn't have conditional part: %s", clcStr) } } subcontexts := nestedClcMap[AnySdkVersion] // If the library with this name is already present as one of the unconditional top-level Loading dexpreopt/class_loader_context_test.go +10 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,16 @@ func TestCLCMaybeAdd(t *testing.T) { }) } // An attempt to add conditional nested subcontext should fail. func TestCLCNestedConditional(t *testing.T) { ctx := testContext() m1 := make(ClassLoaderContextMap) m1.AddContextForSdk(ctx, 42, "a", buildPath(ctx, "a"), installPath(ctx, "a"), nil) m := make(ClassLoaderContextMap) err := m.addContext(ctx, AnySdkVersion, "b", buildPath(ctx, "b"), installPath(ctx, "b"), true, m1) checkError(t, err, "nested class loader context shouldn't have conditional part") } func checkError(t *testing.T, have error, want string) { if have == nil { t.Errorf("\nwant error: '%s'\nhave: none", want) Loading Loading
dexpreopt/class_loader_context.go +7 −0 Original line number Diff line number Diff line Loading @@ -110,6 +110,13 @@ func (clcMap ClassLoaderContextMap) addContext(ctx android.ModuleInstallPathCont devicePath = android.InstallPathToOnDevicePath(ctx, installPath.(android.InstallPath)) } // Nested class loader context shouldn't have conditional part (it is allowed only at the top level). for ver, _ := range nestedClcMap { if ver != AnySdkVersion { clcStr, _ := ComputeClassLoaderContext(nestedClcMap) return fmt.Errorf("nested class loader context shouldn't have conditional part: %s", clcStr) } } subcontexts := nestedClcMap[AnySdkVersion] // If the library with this name is already present as one of the unconditional top-level Loading
dexpreopt/class_loader_context_test.go +10 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,16 @@ func TestCLCMaybeAdd(t *testing.T) { }) } // An attempt to add conditional nested subcontext should fail. func TestCLCNestedConditional(t *testing.T) { ctx := testContext() m1 := make(ClassLoaderContextMap) m1.AddContextForSdk(ctx, 42, "a", buildPath(ctx, "a"), installPath(ctx, "a"), nil) m := make(ClassLoaderContextMap) err := m.addContext(ctx, AnySdkVersion, "b", buildPath(ctx, "b"), installPath(ctx, "b"), true, m1) checkError(t, err, "nested class loader context shouldn't have conditional part") } func checkError(t *testing.T, have error, want string) { if have == nil { t.Errorf("\nwant error: '%s'\nhave: none", want) Loading