[go: nahoru, domu]

CameraX LIBRARY_GROUP handling - MutableConfig, MutableOptionsBundle and OptionsBundle

Move MutableConfig, MutableOptionsBundle and OptionsBundle to
camera-core/imple

Test: ./gradlew :camera:camera-*:lintDebug, ./gradlew :camera:camera-*:test, ./gradlew :camera:camera-*:connectedAndroidTest
Bug: 146236769
Change-Id: I19406bfd8c34bebe2304f03b068807c1512a68ba
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
index 7eb1577..29a406a 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/CaptureSessionTest.java
@@ -50,13 +50,13 @@
 import androidx.camera.camera2.impl.CameraEventCallbacks;
 import androidx.camera.camera2.internal.CaptureSession.State;
 import androidx.camera.core.ImmediateSurface;
-import androidx.camera.core.MutableOptionsBundle;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.core.impl.CameraCaptureCallback;
 import androidx.camera.core.impl.CameraCaptureCallbacks;
 import androidx.camera.core.impl.CameraCaptureResult;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.DeferrableSurface;
+import androidx.camera.core.impl.MutableOptionsBundle;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.core.impl.utils.futures.FutureCallback;
 import androidx.camera.core.impl.utils.futures.Futures;
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2ImplConfig.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2ImplConfig.java
index 72454a0..47943aa 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2ImplConfig.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/impl/Camera2ImplConfig.java
@@ -26,9 +26,9 @@
 import androidx.annotation.RestrictTo.Scope;
 import androidx.camera.core.Config;
 import androidx.camera.core.ExtendableBuilder;
-import androidx.camera.core.MutableConfig;
-import androidx.camera.core.MutableOptionsBundle;
-import androidx.camera.core.OptionsBundle;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 
 import java.util.HashSet;
 import java.util.Set;
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CaptureOptionUnpacker.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CaptureOptionUnpacker.java
index 3491372..796bf5c 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CaptureOptionUnpacker.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CaptureOptionUnpacker.java
@@ -22,9 +22,9 @@
 import androidx.camera.camera2.impl.Camera2ImplConfig;
 import androidx.camera.core.Config;
 import androidx.camera.core.Config.Option;
-import androidx.camera.core.OptionsBundle;
 import androidx.camera.core.UseCaseConfig;
 import androidx.camera.core.impl.CaptureConfig;
+import androidx.camera.core.impl.OptionsBundle;
 
 /**
  * A {@link CaptureConfig.OptionUnpacker} implementation for unpacking Camera2 options into
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2SessionOptionUnpacker.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2SessionOptionUnpacker.java
index db273dd..94d7e69 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2SessionOptionUnpacker.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2SessionOptionUnpacker.java
@@ -23,10 +23,10 @@
 import androidx.camera.camera2.impl.CameraEventCallbacks;
 import androidx.camera.core.Config;
 import androidx.camera.core.Config.Option;
-import androidx.camera.core.MutableOptionsBundle;
-import androidx.camera.core.OptionsBundle;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.core.UseCaseConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 
 /**
  * A {@link SessionConfig.OptionUnpacker} implementation for unpacking Camera2 options into a
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java
index 1a49b63..d9b8b70 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/CaptureSession.java
@@ -38,12 +38,12 @@
 import androidx.camera.camera2.internal.compat.params.OutputConfigurationCompat;
 import androidx.camera.camera2.internal.compat.params.SessionConfigurationCompat;
 import androidx.camera.core.Config;
-import androidx.camera.core.MutableOptionsBundle;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.core.impl.CameraCaptureCallback;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.DeferrableSurface;
 import androidx.camera.core.impl.DeferrableSurfaces;
+import androidx.camera.core.impl.MutableOptionsBundle;
 import androidx.camera.core.impl.utils.futures.FutureChain;
 import androidx.camera.core.impl.utils.futures.Futures;
 import androidx.concurrent.futures.CallbackToFutureAdapter;
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java
index 36d0bb9..3cbaac1 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/FakeOtherUseCaseConfig.java
@@ -22,6 +22,9 @@
 import androidx.camera.core.impl.CameraDeviceConfig;
 import androidx.camera.core.impl.CameraIdFilter;
 import androidx.camera.core.impl.CaptureConfig;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 
 import java.util.Set;
 import java.util.UUID;
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/SessionConfigTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/SessionConfigTest.java
index d6972d5..52b6195 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/SessionConfigTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/SessionConfigTest.java
@@ -27,6 +27,7 @@
 import androidx.camera.core.Config.Option;
 import androidx.camera.core.impl.CameraCaptureCallback;
 import androidx.camera.core.impl.DeferrableSurface;
+import androidx.camera.core.impl.MutableOptionsBundle;
 import androidx.camera.testing.DeferrableSurfacesUtil;
 import androidx.camera.testing.fakes.FakeMultiValueSet;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java
index 9dfda19..a9370aa 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/impl/CaptureConfigTest.java
@@ -26,7 +26,6 @@
 import androidx.annotation.NonNull;
 import androidx.camera.core.Config;
 import androidx.camera.core.Config.Option;
-import androidx.camera.core.MutableOptionsBundle;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.testing.DeferrableSurfacesUtil;
 import androidx.test.ext.junit.runners.AndroidJUnit4;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraXConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/CameraXConfig.java
index 68a1518..0a24f92 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraXConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/CameraXConfig.java
@@ -24,6 +24,9 @@
 import androidx.annotation.RestrictTo.Scope;
 import androidx.camera.core.impl.CameraDeviceSurfaceManager;
 import androidx.camera.core.impl.CameraFactory;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.impl.UseCaseConfigFactory;
 import androidx.camera.core.internal.TargetConfig;
 
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ExtendableBuilder.java b/camera/camera-core/src/main/java/androidx/camera/core/ExtendableBuilder.java
index 870897a..ab417ba 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ExtendableBuilder.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ExtendableBuilder.java
@@ -18,6 +18,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
+import androidx.camera.core.impl.MutableConfig;
 
 /**
  * Extendable builders are used to add externally defined options that can be passed to the
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java
index 77f5008..eade5b6 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysis.java
@@ -56,6 +56,9 @@
 import androidx.camera.core.impl.CameraInfoInternal;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.DeferrableSurface;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.impl.utils.Threads;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.core.internal.TargetConfig;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysisConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysisConfig.java
index f5ec21f..c1cb0c1 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysisConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageAnalysisConfig.java
@@ -30,6 +30,7 @@
 import androidx.camera.core.impl.CameraDeviceConfig;
 import androidx.camera.core.impl.CameraIdFilter;
 import androidx.camera.core.impl.CaptureConfig;
+import androidx.camera.core.impl.OptionsBundle;
 
 import java.util.List;
 import java.util.Set;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
index 994c32f..7d566f1 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageCapture.java
@@ -80,6 +80,9 @@
 import androidx.camera.core.impl.CaptureProcessor;
 import androidx.camera.core.impl.CaptureStage;
 import androidx.camera.core.impl.DeferrableSurface;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.impl.utils.Threads;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.core.impl.utils.futures.FutureCallback;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureConfig.java
index 00d7e62..175b93e 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/ImageCaptureConfig.java
@@ -32,6 +32,7 @@
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.CaptureProcessor;
 import androidx.camera.core.impl.CaptureStage;
+import androidx.camera.core.impl.OptionsBundle;
 
 import java.io.File;
 import java.util.List;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
index c8f7881..af92cf4 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/Preview.java
@@ -65,6 +65,9 @@
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.CaptureProcessor;
 import androidx.camera.core.impl.CaptureStage;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.impl.utils.Threads;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.core.internal.TargetConfig;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/PreviewConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/PreviewConfig.java
index 379049d..cbe67bf 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/PreviewConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/PreviewConfig.java
@@ -29,6 +29,7 @@
 import androidx.camera.core.impl.CameraIdFilter;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.CaptureProcessor;
+import androidx.camera.core.impl.OptionsBundle;
 
 import java.util.List;
 import java.util.Set;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/SessionConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/SessionConfig.java
index 07ebb57..b8274eb 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/SessionConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/SessionConfig.java
@@ -31,6 +31,7 @@
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.DeferrableSurface;
 import androidx.camera.core.impl.MultiValueSet;
+import androidx.camera.core.impl.MutableOptionsBundle;
 
 import java.util.ArrayList;
 import java.util.Collection;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/VideoCaptureConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/VideoCaptureConfig.java
index 1d337ae..68a1c23 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/VideoCaptureConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/VideoCaptureConfig.java
@@ -29,6 +29,9 @@
 import androidx.camera.core.impl.CameraDeviceConfig;
 import androidx.camera.core.impl.CameraIdFilter;
 import androidx.camera.core.impl.CaptureConfig;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.internal.TargetConfig;
 
 import java.util.List;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java
index 21aad6e..b551e37 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/CaptureConfig.java
@@ -24,9 +24,6 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.camera.core.Config;
-import androidx.camera.core.MutableConfig;
-import androidx.camera.core.MutableOptionsBundle;
-import androidx.camera.core.OptionsBundle;
 import androidx.camera.core.UseCaseConfig;
 
 import java.util.ArrayList;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/MutableConfig.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/MutableConfig.java
similarity index 82%
rename from camera/camera-core/src/main/java/androidx/camera/core/MutableConfig.java
rename to camera/camera-core/src/main/java/androidx/camera/core/impl/MutableConfig.java
index 14ee720..1d1ef5d 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/MutableConfig.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/MutableConfig.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright 2019 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,19 +14,17 @@
  * limitations under the License.
  */
 
-package androidx.camera.core;
+package androidx.camera.core.impl;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
-import androidx.annotation.RestrictTo.Scope;
+import androidx.camera.core.Config;
 
 /**
  * MutableConfig is a {@link Config} that can be modified.
  *
  * <p>MutableConfig is the interface used to create immutable Config objects.
- * @hide
  */
-@RestrictTo(Scope.LIBRARY_GROUP)
 public interface MutableConfig extends Config {
 
     /**
@@ -38,7 +36,7 @@
      * @param value    The value to insert for this option.
      * @param <ValueT> The type of the value being inserted.
      */
-    <ValueT> void insertOption(Option<ValueT> opt, ValueT value);
+    <ValueT> void insertOption(@NonNull Option<ValueT> opt, @Nullable ValueT value);
 
     /**
      * Removes an option from the configuration if it exists.
@@ -49,5 +47,5 @@
      * option did not exist in this configuration.
      */
     @Nullable
-    <ValueT> ValueT removeOption(Option<ValueT> opt);
+    <ValueT> ValueT removeOption(@NonNull Option<ValueT> opt);
 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/MutableOptionsBundle.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/MutableOptionsBundle.java
similarity index 84%
rename from camera/camera-core/src/main/java/androidx/camera/core/MutableOptionsBundle.java
rename to camera/camera-core/src/main/java/androidx/camera/core/impl/MutableOptionsBundle.java
index 5a97af5..9321e14 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/MutableOptionsBundle.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/MutableOptionsBundle.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright 2019 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,21 +14,18 @@
  * limitations under the License.
  */
 
-package androidx.camera.core;
+package androidx.camera.core.impl;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
-import androidx.annotation.RestrictTo.Scope;
+import androidx.camera.core.Config;
 
 import java.util.Comparator;
 import java.util.TreeMap;
 
 /**
  * A MutableOptionsBundle is an {@link OptionsBundle} which allows for insertion/removal.
- *
- * @hide
  */
-@RestrictTo(Scope.LIBRARY_GROUP)
 public final class MutableOptionsBundle extends OptionsBundle implements MutableConfig {
 
     private static final Comparator<Option<?>> ID_COMPARE =
@@ -48,6 +45,7 @@
      *
      * @return an empty MutableOptionsBundle containing no options.
      */
+    @NonNull
     public static MutableOptionsBundle create() {
         return new MutableOptionsBundle(new TreeMap<>(ID_COMPARE));
     }
@@ -58,7 +56,8 @@
      * @param otherConfig configuration options to insert.
      * @return a MutableOptionsBundle prepopulated with configuration options.
      */
-    public static MutableOptionsBundle from(Config otherConfig) {
+    @NonNull
+    public static MutableOptionsBundle from(@NonNull Config otherConfig) {
         TreeMap<Option<?>, Object> persistentOptions = new TreeMap<>(ID_COMPARE);
         for (Option<?> opt : otherConfig.listOptions()) {
             persistentOptions.put(opt, otherConfig.retrieveOption(opt));
@@ -69,7 +68,7 @@
 
     @Nullable
     @Override
-    public <ValueT> ValueT removeOption(Option<ValueT> opt) {
+    public <ValueT> ValueT removeOption(@NonNull Option<ValueT> opt) {
         @SuppressWarnings("unchecked") // Options should have only been inserted via insertOption()
                 ValueT value = (ValueT) mOptions.remove(opt);
 
@@ -77,7 +76,7 @@
     }
 
     @Override
-    public <ValueT> void insertOption(Option<ValueT> opt, ValueT value) {
+    public <ValueT> void insertOption(@NonNull Option<ValueT> opt, @Nullable ValueT value) {
         mOptions.put(opt, value);
     }
 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/OptionsBundle.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/OptionsBundle.java
similarity index 95%
rename from camera/camera-core/src/main/java/androidx/camera/core/OptionsBundle.java
rename to camera/camera-core/src/main/java/androidx/camera/core/impl/OptionsBundle.java
index b00e5f4..ba2faa0 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/OptionsBundle.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/OptionsBundle.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright 2019 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,12 +14,11 @@
  * limitations under the License.
  */
 
-package androidx.camera.core;
+package androidx.camera.core.impl;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
-import androidx.annotation.RestrictTo.Scope;
+import androidx.camera.core.Config;
 
 import java.util.Collections;
 import java.util.Comparator;
@@ -32,10 +31,7 @@
  *
  * <p>OptionsBundle is a collection of {@link Config.Option}s and their values which can be
  * queried based on exact {@link Config.Option} objects or based on Option ids.
- *
- * @hide
  */
-@RestrictTo(Scope.LIBRARY_GROUP)
 public class OptionsBundle implements Config {
 
     private static final OptionsBundle EMPTY_BUNDLE =
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/CameraSelectorUtil.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/CameraSelectorUtil.java
index c8d06c3..fbb1ba8 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/CameraSelectorUtil.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/utils/CameraSelectorUtil.java
@@ -23,10 +23,10 @@
 import androidx.annotation.Nullable;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.Config;
-import androidx.camera.core.MutableOptionsBundle;
-import androidx.camera.core.OptionsBundle;
 import androidx.camera.core.impl.CameraDeviceConfig;
 import androidx.camera.core.impl.CameraIdFilter;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 import androidx.camera.core.internal.CameraIdFilterSet;
 
 import java.util.Set;
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/MutableOptionsBundleTest.java b/camera/camera-core/src/test/java/androidx/camera/core/impl/MutableOptionsBundleTest.java
similarity index 95%
rename from camera/camera-core/src/test/java/androidx/camera/core/MutableOptionsBundleTest.java
rename to camera/camera-core/src/test/java/androidx/camera/core/impl/MutableOptionsBundleTest.java
index d45aaf1..5863cfc 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/MutableOptionsBundleTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/MutableOptionsBundleTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright 2019 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package androidx.camera.core;
+package androidx.camera.core.impl;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import android.os.Build;
 
+import androidx.camera.core.Config;
 import androidx.camera.core.Config.Option;
 import androidx.test.filters.SmallTest;
 
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/OptionsBundleTest.java b/camera/camera-core/src/test/java/androidx/camera/core/impl/OptionsBundleTest.java
similarity index 97%
rename from camera/camera-core/src/test/java/androidx/camera/core/OptionsBundleTest.java
rename to camera/camera-core/src/test/java/androidx/camera/core/impl/OptionsBundleTest.java
index a4f11d2..313abe4 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/OptionsBundleTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/OptionsBundleTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2019 The Android Open Source Project
+ * Copyright 2019 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,12 +14,13 @@
  * limitations under the License.
  */
 
-package androidx.camera.core;
+package androidx.camera.core.impl;
 
 import static com.google.common.truth.Truth.assertThat;
 
 import android.os.Build;
 
+import androidx.camera.core.Config;
 import androidx.camera.core.Config.Option;
 import androidx.test.filters.SmallTest;
 
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeConfig.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeConfig.java
index 7876e0f..d275718 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeConfig.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeConfig.java
@@ -22,9 +22,9 @@
 import androidx.annotation.RestrictTo.Scope;
 import androidx.camera.core.Config;
 import androidx.camera.core.ExtendableBuilder;
-import androidx.camera.core.MutableConfig;
-import androidx.camera.core.MutableOptionsBundle;
-import androidx.camera.core.OptionsBundle;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 
 import java.util.Set;
 
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java
index 6d8d02c..8237275 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeUseCaseConfig.java
@@ -25,15 +25,15 @@
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.Config;
 import androidx.camera.core.ImageOutputConfig;
-import androidx.camera.core.MutableConfig;
-import androidx.camera.core.MutableOptionsBundle;
-import androidx.camera.core.OptionsBundle;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.core.UseCase;
 import androidx.camera.core.UseCaseConfig;
 import androidx.camera.core.impl.CameraDeviceConfig;
 import androidx.camera.core.impl.CameraIdFilter;
 import androidx.camera.core.impl.CaptureConfig;
+import androidx.camera.core.impl.MutableConfig;
+import androidx.camera.core.impl.MutableOptionsBundle;
+import androidx.camera.core.impl.OptionsBundle;
 
 import java.util.List;
 import java.util.Set;