Replaces InjectingObjectCodec with dependencies threaded through (Des|S)erializationContext.

PiperOrigin-RevId: 185547740
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index cf66e2f..f1cc531 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -856,6 +856,7 @@
         "//src/main/java/com/google/devtools/build/lib:packages",
         "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
         "//src/main/java/com/google/devtools/build/lib:util",
+        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization",
         "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/main/java/com/google/devtools/build/skyframe",
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java
index f26d00e..a0261e9 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java
@@ -25,10 +25,10 @@
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.rules.cpp.CppFileTypes;
 import com.google.devtools.build.lib.rules.java.JavaSemantics;
-import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodecAdapter;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
 import com.google.devtools.build.lib.testutil.MoreAsserts;
 import com.google.devtools.build.lib.testutil.Scratch;
+import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.Root;
@@ -336,8 +336,7 @@
 
   @Test
   public void testCodec() throws Exception {
-    ObjectCodecTester.newBuilder(
-            new InjectingObjectCodecAdapter<>(Artifact.CODEC, () -> scratch.getFileSystem()))
+    ObjectCodecTester.newBuilder(Artifact.CODEC)
         .addSubjects(
             new Artifact(PathFragment.create("src/a"), rootDir),
             new Artifact(
@@ -347,6 +346,7 @@
                     scratch.getFileSystem().getPath("/"), scratch.dir("/src")),
                 PathFragment.create("src/c"),
                 new LabelArtifactOwner(Label.parseAbsoluteUnchecked("//foo:bar"))))
+        .addDependency(FileSystem.class, scratch.getFileSystem())
         .buildAndRunTests();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
index c686a1f..06ffcd0 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BlazeDirectoriesTest.java
@@ -15,7 +15,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodecAdapter;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.FsUtils;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
 import com.google.devtools.build.lib.testutil.FoundationTestCase;
@@ -54,9 +53,7 @@
 
   @Test
   public void testCodec() throws Exception {
-    ObjectCodecTester.newBuilder(
-            new InjectingObjectCodecAdapter<>(
-                BlazeDirectories.CODEC, FsUtils.TEST_FILESYSTEM_PROVIDER))
+    ObjectCodecTester.newBuilder(BlazeDirectories.CODEC)
         .addSubjects(
             new BlazeDirectories(
                 new ServerDirectories(
@@ -77,6 +74,7 @@
                     FsUtils.TEST_FILESYSTEM.getPath("/output_base")),
                 FsUtils.TEST_FILESYSTEM.getPath("/workspace"),
                 "Bazel"))
+        .addDependency(FileSystem.class, FsUtils.TEST_FILESYSTEM)
         .buildAndRunTests();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
index d3a1d4d..26b1d1e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/config/BuildConfigurationTest.java
@@ -29,8 +29,8 @@
 import com.google.devtools.build.lib.rules.cpp.CppConfiguration;
 import com.google.devtools.build.lib.rules.java.JavaConfiguration;
 import com.google.devtools.build.lib.rules.objc.J2ObjcConfiguration;
-import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodecAdapter;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.common.options.Options;
 import java.util.Map;
 import java.util.regex.Pattern;
@@ -430,9 +430,7 @@
 
   @Test
   public void testCodec() throws Exception {
-    ObjectCodecTester.newBuilder(
-            new InjectingObjectCodecAdapter<>(
-                BuildConfiguration.CODEC, () -> getScratch().getFileSystem()))
+    ObjectCodecTester.newBuilder(BuildConfiguration.CODEC)
         .addSubjects(
             create(),
             create("--cpu=piii"),
@@ -453,6 +451,7 @@
                 "qspace=a\\ quoted\\ space",
                 "--define",
                 "#a=pounda"))
+        .addDependency(FileSystem.class, getScratch().getFileSystem())
         .verificationFunction(BuildConfigurationTest::verifyDeserialized)
         .buildAndRunTests();
   }
diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
index 56d8039..339f060 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java
@@ -16,6 +16,9 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
+import com.google.devtools.build.lib.skyframe.serialization.SerializationContext;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.TestUtils;
 import com.google.devtools.build.lib.syntax.SkylarkSemantics;
 import com.google.devtools.common.options.Options;
@@ -84,7 +87,10 @@
     for (int i = 0; i < NUM_RANDOM_TRIALS; i++) {
       SkylarkSemantics semantics = buildRandomSemantics(new Random(i));
       SkylarkSemantics deserialized =
-          TestUtils.fromBytes(codec, TestUtils.toBytes(codec, semantics));
+          TestUtils.fromBytes(
+              new DeserializationContext(ImmutableMap.of()),
+              codec,
+              TestUtils.toBytes(new SerializationContext(ImmutableMap.of()), codec, semantics));
       assertThat(deserialized).isEqualTo(semantics);
     }
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java
index ee37679..d5174c5 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/GlobDescriptorTest.java
@@ -17,9 +17,9 @@
 
 import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
 import com.google.devtools.build.lib.cmdline.PackageIdentifier;
-import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodecAdapter;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.FsUtils;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
+import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.PathFragment;
 import com.google.devtools.build.lib.vfs.Root;
 import org.junit.Test;
@@ -32,9 +32,7 @@
 
   @Test
   public void testSerialization() throws Exception {
-    ObjectCodecTester.newBuilder(
-            GlobDescriptor.getCodec(
-                new InjectingObjectCodecAdapter<>(Root.CODEC, () -> FsUtils.TEST_FILESYSTEM)))
+    ObjectCodecTester.newBuilder(GlobDescriptor.CODEC)
         .addSubjects(
             GlobDescriptor.create(
                 PackageIdentifier.create("@foo", PathFragment.create("//bar")),
@@ -48,6 +46,7 @@
                 PathFragment.create("anotherSubdir"),
                 "pattern",
                 /*excludeDirs=*/ true))
+        .addDependency(FileSystem.class, FsUtils.TEST_FILESYSTEM)
         .verificationFunction((orig, deserialized) -> assertThat(deserialized).isSameAs(orig))
         .buildAndRunTests();
   }
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageValueTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageValueTest.java
index 3c3652d..c8d9d9e 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageValueTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageValueTest.java
@@ -21,12 +21,13 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.packages.Package;
+import com.google.devtools.build.lib.packages.PackageCodecDependencies;
 import com.google.devtools.build.lib.packages.PackageCodecDependencies.SimplePackageCodecDependencies;
 import com.google.devtools.build.lib.packages.PackageDeserializationException;
 import com.google.devtools.build.lib.packages.PackageDeserializerInterface;
 import com.google.devtools.build.lib.skyframe.serialization.DeserializationContext;
-import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodecAdapter;
 import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.SerializationException;
 import com.google.protobuf.CodedInputStream;
@@ -43,13 +44,13 @@
 
   private PackageDeserializerInterface mockDeserializer;
   private ObjectCodec<PackageValue> underTest;
+  SimplePackageCodecDependencies codecDeps;
 
   @Before
   public void setUp() {
     this.mockDeserializer = mock(PackageDeserializerInterface.class);
-    this.underTest =
-        new InjectingObjectCodecAdapter<>(
-            PackageValue.CODEC, new SimplePackageCodecDependencies(null, mockDeserializer));
+    this.underTest = PackageValue.CODEC;
+    this.codecDeps = new SimplePackageCodecDependencies(null, mockDeserializer);
   }
 
   @Test
@@ -63,7 +64,10 @@
         .thenReturn(mockPackage);
 
     CodedInputStream codedIn = CodedInputStream.newInstance(new byte[] {1, 2, 3, 4});
-    PackageValue result = underTest.deserialize(DeserializationContext.create(), codedIn);
+    PackageValue result =
+        underTest.deserialize(
+            new DeserializationContext(ImmutableMap.of(PackageCodecDependencies.class, codecDeps)),
+            codedIn);
 
     assertThat(result.getPackage()).isSameAs(mockPackage);
   }
@@ -75,7 +79,8 @@
 
     try {
       underTest.deserialize(
-          DeserializationContext.create(), CodedInputStream.newInstance(new byte[] {1, 2, 3, 4}));
+          new DeserializationContext(ImmutableMap.of(PackageCodecDependencies.class, codecDeps)),
+          CodedInputStream.newInstance(new byte[] {1, 2, 3, 4}));
       fail("Expected exception");
     } catch (IllegalStateException e) {
       assertThat(e)
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
index 5d24b9e..4928d73 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
@@ -52,7 +52,6 @@
 import com.google.devtools.build.lib.events.EventKind;
 import com.google.devtools.build.lib.events.StoredEventHandler;
 import com.google.devtools.build.lib.skyframe.ActionTemplateExpansionValue.ActionTemplateExpansionKey;
-import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodecAdapter;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
 import com.google.devtools.build.lib.testutil.TestUtils;
 import com.google.devtools.build.lib.vfs.FileStatus;
@@ -118,9 +117,9 @@
 
   @Test
   public void testCodec() throws Exception {
-    ObjectCodecTester.newBuilder(
-            new InjectingObjectCodecAdapter<>(Artifact.CODEC, () -> scratch.getFileSystem()))
+    ObjectCodecTester.newBuilder(Artifact.CODEC)
         .addSubjects(outOne, outOneFileOne)
+        .addDependency(FileSystem.class, scratch.getFileSystem())
         .buildAndRunTests();
   }
 
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecsTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecsTest.java
index 3b84c93..dc835c7 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/ObjectCodecsTest.java
@@ -26,6 +26,7 @@
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.protobuf.ByteString;
 import com.google.protobuf.CodedInputStream;
 import com.google.protobuf.CodedOutputStream;
@@ -79,10 +80,10 @@
   @Before
   public final void setup() {
     spyObjectCodec = spy(new IntegerCodec());
-    this.underTest = new ObjectCodecs(
-        ObjectCodecRegistry.newBuilder()
-            .add(KNOWN_CLASSIFIER, spyObjectCodec)
-            .build());
+    this.underTest =
+        new ObjectCodecs(
+            ObjectCodecRegistry.newBuilder().add(KNOWN_CLASSIFIER, spyObjectCodec).build(),
+            ImmutableMap.of());
   }
 
   @Test
@@ -224,8 +225,10 @@
 
   @Test
   public void testSerializeFailsWhenNoCustomCodecAndFallbackDisabled() throws Exception {
-    ObjectCodecs underTest = new ObjectCodecs(
-        ObjectCodecRegistry.newBuilder().setAllowDefaultCodec(false).build());
+    ObjectCodecs underTest =
+        new ObjectCodecs(
+            ObjectCodecRegistry.newBuilder().setAllowDefaultCodec(false).build(),
+            ImmutableMap.of());
     SerializationException.NoCodecException expected =
         expectThrows(
             SerializationException.NoCodecException.class, () -> underTest.serialize("X", "Y"));
@@ -237,8 +240,10 @@
   @Test
   public void testDeserializeFailsWhenNoCustomCodecAndFallbackDisabled() throws Exception {
     ByteString serialized = ByteString.copyFromUtf8("doesn't matter");
-    ObjectCodecs underTest = new ObjectCodecs(
-        ObjectCodecRegistry.newBuilder().setAllowDefaultCodec(false).build());
+    ObjectCodecs underTest =
+        new ObjectCodecs(
+            ObjectCodecRegistry.newBuilder().setAllowDefaultCodec(false).build(),
+            ImmutableMap.of());
     SerializationException.NoCodecException expected =
         expectThrows(
             SerializationException.NoCodecException.class,
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java
index f6532fc..f1bac51 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/PrecomputedValueCodecTest.java
@@ -14,6 +14,7 @@
 
 package com.google.devtools.build.lib.skyframe.serialization;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.cmdline.Label;
 import com.google.devtools.build.lib.cmdline.LabelCodec;
 import com.google.devtools.build.lib.skyframe.PrecomputedValue;
@@ -30,13 +31,15 @@
   public PrecomputedValueCodecTest() {
     super(
         new PrecomputedValueCodec(
-            () -> new ObjectCodecs(
-                ObjectCodecRegistry.newBuilder()
-                    .asClassKeyedBuilder()
-                    // Note no PathFragmentCodec.
-                    .add(String.class, StringCodecs.asciiOptimized())
-                    .add(Label.class, LabelCodec.INSTANCE)
-                    .build())),
+            () ->
+                new ObjectCodecs(
+                    ObjectCodecRegistry.newBuilder()
+                        .asClassKeyedBuilder()
+                        // Note no PathFragmentCodec.
+                        .add(String.class, StringCodecs.asciiOptimized())
+                        .add(Label.class, LabelCodec.INSTANCE)
+                        .build(),
+                    ImmutableMap.of())),
         new PrecomputedValue(PathFragment.create("java serializable 1")),
         new PrecomputedValue(PathFragment.create("java serializable 2")),
         new PrecomputedValue("first string"),
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java
index 30f4e08..f922e43 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/serialization/RepositoryNameCodecTest.java
@@ -16,6 +16,7 @@
 
 import static org.junit.Assert.fail;
 
+import com.google.common.collect.ImmutableMap;
 import com.google.devtools.build.lib.cmdline.LabelSyntaxException;
 import com.google.devtools.build.lib.cmdline.RepositoryName;
 import com.google.devtools.build.lib.cmdline.RepositoryNameCodec;
@@ -47,7 +48,7 @@
   @Test
   public void testDeserializeBadDataThrowsSerializationException() {
     try {
-      fromBytes(INVALID_ENCODED_REPOSITORY_NAME);
+      fromBytes(new DeserializationContext(ImmutableMap.of()), INVALID_ENCODED_REPOSITORY_NAME);
       fail("Expected exception");
     } catch (SerializationException | IOException e) {
       // Expected.
diff --git a/src/test/java/com/google/devtools/build/lib/vfs/RootTest.java b/src/test/java/com/google/devtools/build/lib/vfs/RootTest.java
index 9c67e72..e9605b3 100644
--- a/src/test/java/com/google/devtools/build/lib/vfs/RootTest.java
+++ b/src/test/java/com/google/devtools/build/lib/vfs/RootTest.java
@@ -18,8 +18,6 @@
 import com.google.common.collect.Lists;
 import com.google.common.testing.EqualsTester;
 import com.google.devtools.build.lib.clock.BlazeClock;
-import com.google.devtools.build.lib.skyframe.serialization.InjectingObjectCodecAdapter;
-import com.google.devtools.build.lib.skyframe.serialization.ObjectCodec;
 import com.google.devtools.build.lib.skyframe.serialization.testutils.ObjectCodecTester;
 import com.google.devtools.build.lib.testutil.MoreAsserts;
 import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
@@ -99,9 +97,9 @@
 
   @Test
   public void testSerialization() throws Exception {
-    ObjectCodec<Root> codec = new InjectingObjectCodecAdapter<>(Root.CODEC, () -> fs);
-    ObjectCodecTester.newBuilder(codec)
+    ObjectCodecTester.newBuilder(Root.CODEC)
         .addSubjects(Root.absoluteRoot(fs), Root.fromPath(fs.getPath("/foo")))
+        .addDependency(FileSystem.class, fs)
         .skipBadDataTest()
         .buildAndRunTests();
   }