[go: nahoru, domu]

Move CameraFactory and CameraRepository to internal package.

Bug: b/146236769
Test: ./gradlew camera:camera-core:lintDebug
Change-Id: I6836624663eb24b76d84d75266cb6813f2048c07
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
index 4a78b35..e8c8fa3 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageCaptureTest.java
@@ -48,7 +48,6 @@
 import androidx.camera.camera2.internal.util.FakeRepeatingUseCase;
 import androidx.camera.camera2.interop.Camera2Interop;
 import androidx.camera.camera2.interop.ExperimentalCamera2Interop;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraInfoUnavailableException;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.CameraX;
@@ -61,6 +60,7 @@
 import androidx.camera.core.ImageCaptureConfig;
 import androidx.camera.core.ImageProxy;
 import androidx.camera.core.impl.CameraControlInternal;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.CaptureProcessor;
 import androidx.camera.core.impl.CaptureStage;
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageReaderProxysTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageReaderProxysTest.java
index da1e975..c80edc3 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageReaderProxysTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/ImageReaderProxysTest.java
@@ -29,7 +29,6 @@
 import androidx.annotation.NonNull;
 import androidx.camera.camera2.internal.Camera2CameraFactory;
 import androidx.camera.camera2.internal.Camera2DeviceSurfaceManager;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraInfoUnavailableException;
 import androidx.camera.core.ImageProxy;
 import androidx.camera.core.ImageReaderProxy;
@@ -37,6 +36,7 @@
 import androidx.camera.core.ImmediateSurface;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.core.impl.CameraDeviceSurfaceManager;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CameraInternal;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.testing.CameraUtil;
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java
index b442ceb..7a59a54 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/PreviewTest.java
@@ -30,13 +30,13 @@
 import android.util.Size;
 
 import androidx.annotation.NonNull;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.CameraX;
 import androidx.camera.core.CameraXConfig;
 import androidx.camera.core.Preview;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.core.impl.CameraControlInternal;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.testing.CameraUtil;
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplTest.java
index 8e788cf..c9752f6 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2CameraImplTest.java
@@ -45,7 +45,6 @@
 import androidx.camera.camera2.internal.util.SemaphoreReleasingCamera2Callbacks;
 import androidx.camera.camera2.interop.Camera2Interop;
 import androidx.camera.core.CameraControl;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.ImmediateSurface;
 import androidx.camera.core.SessionConfig;
@@ -53,6 +52,7 @@
 import androidx.camera.core.UseCaseConfig;
 import androidx.camera.core.impl.CameraCaptureCallback;
 import androidx.camera.core.impl.CameraCaptureResult;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CameraInternal;
 import androidx.camera.core.impl.CaptureConfig;
 import androidx.camera.core.impl.DeferrableSurface;
diff --git a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraRepositoryTest.java b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraRepositoryTest.java
index c71d450..d7da6ac 100644
--- a/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraRepositoryTest.java
+++ b/camera/camera-camera2/src/androidTest/java/androidx/camera/camera2/internal/Camera2ImplCameraRepositoryTest.java
@@ -30,13 +30,13 @@
 import androidx.camera.camera2.internal.util.SemaphoreReleasingCamera2Callbacks.SessionStateCallback;
 import androidx.camera.camera2.interop.Camera2Interop;
 import androidx.camera.camera2.interop.ExperimentalCamera2Interop;
-import androidx.camera.core.CameraFactory;
-import androidx.camera.core.CameraRepository;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.ImmediateSurface;
 import androidx.camera.core.SessionConfig;
 import androidx.camera.core.UseCaseConfig;
 import androidx.camera.core.UseCaseGroup;
+import androidx.camera.core.impl.CameraFactory;
+import androidx.camera.core.impl.CameraRepository;
 import androidx.camera.testing.CameraUtil;
 import androidx.camera.testing.fakes.FakeUseCase;
 import androidx.camera.testing.fakes.FakeUseCaseConfig;
@@ -56,7 +56,7 @@
 import java.util.concurrent.TimeUnit;
 
 /**
- * Contains tests for {@link androidx.camera.core.CameraRepository} which require an actual
+ * Contains tests for {@link CameraRepository} which require an actual
  * implementation to run.
  */
 @LargeTest
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/Camera2Config.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/Camera2Config.java
index 8c4a47b8..f6fd610 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/Camera2Config.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/Camera2Config.java
@@ -23,13 +23,13 @@
 import androidx.camera.camera2.internal.ImageCaptureConfigProvider;
 import androidx.camera.camera2.internal.PreviewConfigProvider;
 import androidx.camera.camera2.internal.VideoCaptureConfigProvider;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraXConfig;
 import androidx.camera.core.ImageAnalysisConfig;
 import androidx.camera.core.ImageCaptureConfig;
 import androidx.camera.core.PreviewConfig;
 import androidx.camera.core.VideoCaptureConfig;
 import androidx.camera.core.impl.CameraDeviceSurfaceManager;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.ExtendableUseCaseConfigFactory;
 import androidx.camera.core.impl.UseCaseConfigFactory;
 
diff --git a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraFactory.java b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraFactory.java
index 3d41878..ac0c99c 100644
--- a/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraFactory.java
+++ b/camera/camera-camera2/src/main/java/androidx/camera/camera2/internal/Camera2CameraFactory.java
@@ -24,10 +24,10 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 import androidx.camera.camera2.internal.compat.CameraManagerCompat;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraInfoUnavailableException;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.CameraXThreads;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CameraInternal;
 import androidx.camera.core.impl.LensFacingCameraIdFilter;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
diff --git a/camera/camera-core/lint-baseline.xml b/camera/camera-core/lint-baseline.xml
index 30cad6b..be987dd 100644
--- a/camera/camera-core/lint-baseline.xml
+++ b/camera/camera-core/lint-baseline.xml
@@ -191,61 +191,6 @@
     <issue
         id="UnknownNullness"
         message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
-        errorLine1="    public void init(CameraFactory cameraFactory) {"
-        errorLine2="                     ~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/camera/core/CameraRepository.java"
-            line="66"
-            column="22"/>
-    </issue>
-
-    <issue
-        id="UnknownNullness"
-        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
-        errorLine1="    public CameraInternal getCamera(String cameraId) {"
-        errorLine2="           ~~~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/camera/core/CameraRepository.java"
-            line="154"
-            column="12"/>
-    </issue>
-
-    <issue
-        id="UnknownNullness"
-        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
-        errorLine1="    public CameraInternal getCamera(String cameraId) {"
-        errorLine2="                                    ~~~~~~">
-        <location
-            file="src/main/java/androidx/camera/core/CameraRepository.java"
-            line="154"
-            column="37"/>
-    </issue>
-
-    <issue
-        id="UnknownNullness"
-        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
-        errorLine1="    public void onGroupActive(UseCaseGroup useCaseGroup) {"
-        errorLine2="                              ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/camera/core/CameraRepository.java"
-            line="183"
-            column="31"/>
-    </issue>
-
-    <issue
-        id="UnknownNullness"
-        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
-        errorLine1="    public void onGroupInactive(UseCaseGroup useCaseGroup) {"
-        errorLine2="                                ~~~~~~~~~~~~">
-        <location
-            file="src/main/java/androidx/camera/core/CameraRepository.java"
-            line="205"
-            column="33"/>
-    </issue>
-
-    <issue
-        id="UnknownNullness"
-        message="Unknown nullability; explicitly declare as `@Nullable` or `@NonNull` to improve Kotlin interoperability; see https://android.github.io/kotlin-guides/interop.html#nullability-annotations"
         errorLine1="    public static CameraInfoInternal getCameraInfo(String cameraId) {"
         errorLine2="                                                   ~~~~~~">
         <location
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java
index b940dd0..18e510f 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/CameraXTest.java
@@ -30,6 +30,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.camera.core.impl.CameraControlInternal;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CameraInfoInternal;
 import androidx.camera.core.impl.CameraInternal;
 import androidx.camera.core.impl.ExtendableUseCaseConfigFactory;
diff --git a/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseAttachStateTest.java b/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseAttachStateTest.java
index 05184b0..fd9967a 100644
--- a/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseAttachStateTest.java
+++ b/camera/camera-core/src/androidTest/java/androidx/camera/core/UseCaseAttachStateTest.java
@@ -30,6 +30,7 @@
 
 import androidx.annotation.NonNull;
 import androidx.camera.core.impl.CameraCaptureCallback;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.UseCaseAttachState;
 import androidx.camera.testing.DeferrableSurfacesUtil;
 import androidx.camera.testing.fakes.FakeAppConfig;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraExecutor.java b/camera/camera-core/src/main/java/androidx/camera/core/CameraExecutor.java
index 388b99b..452951a 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraExecutor.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/CameraExecutor.java
@@ -18,6 +18,7 @@
 
 import androidx.annotation.GuardedBy;
 import androidx.annotation.NonNull;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.core.util.Preconditions;
 
 import java.util.Locale;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java b/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java
index 3e95496..ff8644a 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/CameraX.java
@@ -30,9 +30,11 @@
 import androidx.annotation.RestrictTo.Scope;
 import androidx.camera.core.impl.CameraDeviceConfig;
 import androidx.camera.core.impl.CameraDeviceSurfaceManager;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CameraIdFilter;
 import androidx.camera.core.impl.CameraInfoInternal;
 import androidx.camera.core.impl.CameraInternal;
+import androidx.camera.core.impl.CameraRepository;
 import androidx.camera.core.impl.UseCaseConfigFactory;
 import androidx.camera.core.impl.utils.Threads;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
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 079bff4..68a1518 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
@@ -23,6 +23,7 @@
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
 import androidx.camera.core.impl.CameraDeviceSurfaceManager;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.UseCaseConfigFactory;
 import androidx.camera.core.internal.TargetConfig;
 
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraXThreads.java b/camera/camera-core/src/main/java/androidx/camera/core/CameraXThreads.java
index 09b9120..d56a818 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraXThreads.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/CameraXThreads.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.
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/UseCaseGroup.java b/camera/camera-core/src/main/java/androidx/camera/core/UseCaseGroup.java
index f761ad9..9326837 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/UseCaseGroup.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/UseCaseGroup.java
@@ -19,6 +19,7 @@
 import android.util.Log;
 
 import androidx.annotation.GuardedBy;
+import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
 import androidx.camera.core.impl.CameraInternal;
@@ -141,7 +142,9 @@
         }
     }
 
-    Map<String, Set<UseCase>> getCameraIdToUseCaseMap() {
+    /** Returns the map of all the use cases to its attached camera id. */
+    @NonNull
+    public Map<String, Set<UseCase>> getCameraIdToUseCaseMap() {
         Map<String, Set<UseCase>> cameraIdToUseCases = new HashMap<>();
         synchronized (mUseCasesLock) {
             for (UseCase useCase : mUseCases) {
@@ -163,7 +166,7 @@
     }
 
     /** Listener called when a {@link UseCaseGroup} transitions between active/inactive states. */
-    interface StateChangeCallback {
+    public interface StateChangeCallback {
         /**
          * Called when a {@link UseCaseGroup} becomes active.
          *
@@ -171,7 +174,7 @@
          * online. This means that the {@link CameraInternal} should transition to a state as
          * close as possible to producing, but prior to actually producing data for the use case.
          */
-        void onGroupActive(UseCaseGroup useCaseGroup);
+        void onGroupActive(@NonNull UseCaseGroup useCaseGroup);
 
         /**
          * Called when a {@link UseCaseGroup} becomes inactive.
@@ -179,6 +182,6 @@
          * <p>When a UseCaseGroup is active then all the contained {@link UseCase} become
          * offline.
          */
-        void onGroupInactive(UseCaseGroup useCaseGroup);
+        void onGroupInactive(@NonNull UseCaseGroup useCaseGroup);
     }
 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraFactory.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraFactory.java
similarity index 91%
rename from camera/camera-core/src/main/java/androidx/camera/core/CameraFactory.java
rename to camera/camera-core/src/main/java/androidx/camera/core/impl/CameraFactory.java
index c816d2c..e634b2a 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraFactory.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraFactory.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,24 +14,20 @@
  * limitations under the License.
  */
 
-package androidx.camera.core;
+package androidx.camera.core.impl;
 
 import android.content.Context;
 
 import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
-import androidx.annotation.RestrictTo;
-import androidx.camera.core.impl.CameraInternal;
-import androidx.camera.core.impl.LensFacingCameraIdFilter;
+import androidx.camera.core.CameraInfoUnavailableException;
+import androidx.camera.core.CameraSelector;
 
 import java.util.Set;
 
 /**
  * The factory class that creates {@link CameraInternal} instances.
- *
- * @hide
  */
-@RestrictTo(RestrictTo.Scope.LIBRARY_GROUP)
 public interface CameraFactory {
 
     /**
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/CameraRepository.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraRepository.java
similarity index 94%
rename from camera/camera-core/src/main/java/androidx/camera/core/CameraRepository.java
rename to camera/camera-core/src/main/java/androidx/camera/core/impl/CameraRepository.java
index 5bcd911..54401c7 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/CameraRepository.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/CameraRepository.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,7 +14,7 @@
  * limitations under the License.
  */
 
-package androidx.camera.core;
+package androidx.camera.core.impl;
 
 import android.content.Context;
 import android.util.Log;
@@ -23,7 +23,8 @@
 import androidx.annotation.NonNull;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.camera.core.impl.CameraInternal;
+import androidx.camera.core.UseCase;
+import androidx.camera.core.UseCaseGroup;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.core.impl.utils.futures.Futures;
 import androidx.concurrent.futures.CallbackToFutureAdapter;
@@ -38,10 +39,7 @@
 
 /**
  * A collection of {@link CameraInternal} instances.
- *
- * @hide
  */
-@RestrictTo(Scope.LIBRARY_GROUP)
 public final class CameraRepository implements UseCaseGroup.StateChangeCallback {
     private static final String TAG = "CameraRepository";
 
@@ -64,7 +62,7 @@
      * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
-    public void init(CameraFactory cameraFactory) {
+    public void init(@NonNull CameraFactory cameraFactory) {
         synchronized (mCamerasLock) {
             try {
                 Set<String> camerasList = cameraFactory.getAvailableCameraIds();
@@ -152,7 +150,8 @@
      * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
-    public CameraInternal getCamera(String cameraId) {
+    @NonNull
+    public CameraInternal getCamera(@NonNull String cameraId) {
         synchronized (mCamerasLock) {
             CameraInternal cameraInternal = mCameras.get(cameraId);
 
@@ -169,6 +168,7 @@
      *
      * @return set of all camera ids
      */
+    @NonNull
     Set<String> getCameraIds() {
         synchronized (mCamerasLock) {
             return new HashSet<>(mCameras.keySet());
@@ -181,7 +181,7 @@
      * <p>This will start streaming data to the uses cases which are also online.
      */
     @Override
-    public void onGroupActive(UseCaseGroup useCaseGroup) {
+    public void onGroupActive(@NonNull UseCaseGroup useCaseGroup) {
         synchronized (mCamerasLock) {
             Map<String, Set<UseCase>> cameraIdToUseCaseMap = useCaseGroup.getCameraIdToUseCaseMap();
             for (Map.Entry<String, Set<UseCase>> cameraUseCaseEntry :
@@ -203,7 +203,7 @@
      * use cases.
      */
     @Override
-    public void onGroupInactive(UseCaseGroup useCaseGroup) {
+    public void onGroupInactive(@NonNull UseCaseGroup useCaseGroup) {
         synchronized (mCamerasLock) {
             Map<String, Set<UseCase>> cameraIdToUseCaseMap = useCaseGroup.getCameraIdToUseCaseMap();
             for (Map.Entry<String, Set<UseCase>> cameraUseCaseEntry :
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/CameraXConfigTest.java b/camera/camera-core/src/test/java/androidx/camera/core/CameraXConfigTest.java
index 1a8762e..1b337d7 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/CameraXConfigTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/CameraXConfigTest.java
@@ -23,6 +23,7 @@
 import android.os.Build;
 
 import androidx.camera.core.impl.CameraDeviceSurfaceManager;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.testing.fakes.FakeAppConfig;
 import androidx.test.filters.SmallTest;
 
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/ImageAnalysisTest.java b/camera/camera-core/src/test/java/androidx/camera/core/ImageAnalysisTest.java
index 5c8feab..d30daa2 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/ImageAnalysisTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/ImageAnalysisTest.java
@@ -27,6 +27,7 @@
 import android.os.Handler;
 import android.os.HandlerThread;
 
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.utils.executor.CameraXExecutors;
 import androidx.camera.testing.fakes.FakeAppConfig;
 import androidx.camera.testing.fakes.FakeCamera;
diff --git a/camera/camera-core/src/test/java/androidx/camera/core/CameraRepositoryTest.java b/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraRepositoryTest.java
similarity index 97%
rename from camera/camera-core/src/test/java/androidx/camera/core/CameraRepositoryTest.java
rename to camera/camera-core/src/test/java/androidx/camera/core/impl/CameraRepositoryTest.java
index 07f3dc6..a99d6d8 100644
--- a/camera/camera-core/src/test/java/androidx/camera/core/CameraRepositoryTest.java
+++ b/camera/camera-core/src/test/java/androidx/camera/core/impl/CameraRepositoryTest.java
@@ -14,13 +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.impl.CameraInternal;
+import androidx.camera.core.CameraSelector;
 import androidx.camera.testing.fakes.FakeCamera;
 import androidx.camera.testing.fakes.FakeCameraFactory;
 import androidx.camera.testing.fakes.FakeCameraInfoInternal;
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeAppConfig.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeAppConfig.java
index 997eb01..0630ec8 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeAppConfig.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeAppConfig.java
@@ -17,10 +17,10 @@
 package androidx.camera.testing.fakes;
 
 import androidx.annotation.NonNull;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.CameraXConfig;
 import androidx.camera.core.impl.CameraDeviceSurfaceManager;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.ExtendableUseCaseConfigFactory;
 
 /**
diff --git a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraFactory.java b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraFactory.java
index 45e821f..67568dc 100644
--- a/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraFactory.java
+++ b/camera/camera-testing/src/main/java/androidx/camera/testing/fakes/FakeCameraFactory.java
@@ -20,9 +20,9 @@
 import androidx.annotation.Nullable;
 import androidx.annotation.RestrictTo;
 import androidx.annotation.RestrictTo.Scope;
-import androidx.camera.core.CameraFactory;
 import androidx.camera.core.CameraSelector;
 import androidx.camera.core.LensFacingConverter;
+import androidx.camera.core.impl.CameraFactory;
 import androidx.camera.core.impl.CameraInternal;
 import androidx.camera.core.impl.LensFacingCameraIdFilter;
 import androidx.core.util.Pair;