[go: nahoru, domu]

Rename "bound" to "attached" in use cases for clarity.

  Use case that is attached to a camera isn't necessary to be bound to
  lifecycle. It's clearer to call it attached in use case
  implementation.

  Rename mBoundCamera to mCamera.
  Rename getBoundCamera to getCamera.
  Rename getBoundCameraId to getCameraId.
  Rename isCurrentlyBoundCamera to isCurrentCamera.

  Reword "bound" with "attached" in javadocs and comments if needed.

Bug: b/153891725
Test: ./gradlew bOS
Change-Id: Ia73ffaf92ed30e1362eff39a74cc01529f5d23dc
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 864834f..96f7745 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
@@ -547,7 +547,7 @@
         Camera camera = CameraX.bindToLifecycle(mLifecycle, CameraSelector.DEFAULT_BACK_CAMERA,
                 fakeUseCase);
 
-        assertThat(fakeUseCase.getBoundCamera()).isEqualTo(camera);
+        assertThat(fakeUseCase.getCamera()).isEqualTo(camera);
     }
 
     @Test
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 0f720f8..01edb90 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
@@ -334,17 +334,17 @@
 
         List<UseCase> originalUseCases = new ArrayList<>();
 
-        // Collect original use cases bound to the camera
+        // Collect original use cases attached to the camera
         for (UseCase useCase : useCaseGroupToBind.getUseCases()) {
-            CameraInternal boundCamera = useCase.getBoundCamera();
-            if (boundCamera != null) {
-                if (camera.equals(boundCamera)) {
+            CameraInternal attachedCamera = useCase.getCamera();
+            if (attachedCamera != null) {
+                if (camera.equals(attachedCamera)) {
                     originalUseCases.add(useCase);
                 }
             }
         }
 
-        // Only do resolution calculation if UseCases were bound
+        // Only do resolution calculation if UseCases were attached
         if (!UseCaseOccupancy.checkUseCaseLimitNotExceeded(originalUseCases,
                 Arrays.asList(useCases))) {
             throw new IllegalArgumentException("Attempting to bind too many ImageCapture or "
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 a3bd3a0..695133a 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
@@ -219,10 +219,10 @@
                     @NonNull SessionConfig.SessionError error) {
                 clearPipeline();
 
-                // Ensure the bound camera has not changed before resetting.
-                // TODO(b/143915543): Ensure this never gets called by a camera that is not bound
+                // Ensure the attached camera has not changed before resetting.
+                // TODO(b/143915543): Ensure this never gets called by a camera that is not attached
                 //  to this use case so we don't need to do this check.
-                if (isCurrentlyBoundCamera(cameraId)) {
+                if (isCurrentCamera(cameraId)) {
                     // Only reset the pipeline when the bound camera is the same.
                     SessionConfig.Builder sessionConfigBuilder = createPipeline(cameraId, config,
                             resolution);
@@ -475,7 +475,7 @@
     protected Size onSuggestedResolutionUpdated(@NonNull Size suggestedResolution) {
         final ImageAnalysisConfig config = (ImageAnalysisConfig) getUseCaseConfig();
 
-        SessionConfig.Builder sessionConfigBuilder = createPipeline(getBoundCameraId(), config,
+        SessionConfig.Builder sessionConfigBuilder = createPipeline(getCameraId(), config,
                 suggestedResolution);
         updateSessionConfig(sessionConfigBuilder.build());
 
@@ -484,7 +484,7 @@
 
     private void tryUpdateRelativeRotation() {
         ImageOutputConfig config = (ImageOutputConfig) getUseCaseConfig();
-        CameraInfoInternal cameraInfoInternal = getBoundCamera().getCameraInfoInternal();
+        CameraInfoInternal cameraInfoInternal = getCamera().getCameraInfoInternal();
         mImageAnalysisAbstractAnalyzer.setRelativeRotation(
                 cameraInfoInternal.getSensorRotationDegrees(
                         config.getTargetRotation(Surface.ROTATION_0)));
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 5d774e8..1a9a934 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
@@ -364,10 +364,10 @@
 
         sessionConfigBuilder.addErrorListener((sessionConfig, error) -> {
             clearPipeline();
-            // Ensure the bound camera has not changed before resetting.
-            // TODO(b/143915543): Ensure this never gets called by a camera that is not bound
+            // Ensure the attached camera has not changed before resetting.
+            // TODO(b/143915543): Ensure this never gets called by a camera that is not attached
             //  to this use case so we don't need to do this check.
-            if (isCurrentlyBoundCamera(cameraId)) {
+            if (isCurrentCamera(cameraId)) {
                 // Only reset the pipeline when the bound camera is the same.
                 mSessionConfigBuilder = createPipeline(cameraId, config, resolution);
                 updateSessionConfig(mSessionConfigBuilder.build());
@@ -456,7 +456,7 @@
         // ready, directly updating the flash mode into camera control. If the camera control has
         // been not ready yet, just saving the flash mode and updating into camera control when
         // camera control ready callback is called.
-        if (getBoundCamera() != null) {
+        if (getCamera() != null) {
             getCameraControl().setFlashMode(flashMode);
         }
     }
@@ -724,18 +724,18 @@
             @Nullable Executor listenerExecutor, OnImageCapturedCallback callback) {
 
         // TODO(b/143734846): From here on, the image capture request should be
-        //  self-contained and use this camera ID for everything. Currently the pre-capture
+        //  self-contained and use this camera for everything. Currently the pre-capture
         //  sequence does not follow this approach and could fail if this use case is unbound
-        //  or unbound to a different camera in the middle of pre-capture.
-        CameraInternal boundCamera = getBoundCamera();
-        if (boundCamera == null) {
+        //  or reattached to a different camera in the middle of pre-capture.
+        CameraInternal attachedCamera = getCamera();
+        if (attachedCamera == null) {
             // Not bound. Notify callback.
             callback.onError(new ImageCaptureException(ERROR_INVALID_CAMERA,
                     "Not bound to a valid Camera [" + ImageCapture.this + "]", null));
             return;
         }
 
-        CameraInfoInternal cameraInfoInternal = boundCamera.getCameraInfoInternal();
+        CameraInfoInternal cameraInfoInternal = attachedCamera.getCameraInfoInternal();
         int relativeRotation = cameraInfoInternal.getSensorRotationDegrees(
                 mConfig.getTargetRotation(Surface.ROTATION_0));
 
@@ -979,7 +979,7 @@
     @Override
     @RestrictTo(Scope.LIBRARY_GROUP)
     protected Size onSuggestedResolutionUpdated(@NonNull Size suggestedResolution) {
-        mSessionConfigBuilder = createPipeline(getBoundCameraId(), mConfig, suggestedResolution);
+        mSessionConfigBuilder = createPipeline(getCameraId(), mConfig, suggestedResolution);
 
         updateSessionConfig(mSessionConfigBuilder.build());
 
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 c430306..ff4a94f 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
@@ -188,7 +188,7 @@
         }
 
         final SurfaceRequest surfaceRequest = new SurfaceRequest(resolution,
-                getBoundCamera().getCameraInfo(), getViewPortCropRect());
+                getCamera().getCameraInfo(), getViewPortCropRect());
         setUpSurfaceProviderWrap(surfaceRequest);
 
         if (captureProcessor != null) {
@@ -240,10 +240,10 @@
             public void onError(@NonNull SessionConfig sessionConfig,
                     @NonNull SessionConfig.SessionError error) {
 
-                // Ensure the bound camera has not changed before resetting.
-                // TODO(b/143915543): Ensure this never gets called by a camera that is not bound
+                // Ensure the attached camera has not changed before resetting.
+                // TODO(b/143915543): Ensure this never gets called by a camera that is not attached
                 //  to this use case so we don't need to do this check.
-                if (isCurrentlyBoundCamera(cameraId)) {
+                if (isCurrentCamera(cameraId)) {
                     // Only reset the pipeline when the bound camera is the same.
                     SessionConfig.Builder sessionConfigBuilder = createPipeline(cameraId, config,
                             resolution);
@@ -336,7 +336,7 @@
             mSurfaceProviderCompleter.set(new Pair<>(mSurfaceProvider, mSurfaceProviderExecutor));
             mSurfaceProviderCompleter = null;
         } else if (mLatestResolution != null) {
-            updateConfigAndOutput(getBoundCameraId(), (PreviewConfig) getUseCaseConfig(),
+            updateConfigAndOutput(getCameraId(), (PreviewConfig) getUseCaseConfig(),
                     mLatestResolution);
         }
     }
@@ -417,14 +417,14 @@
         PreviewConfig previewConfig = (PreviewConfig) super.applyDefaults(userConfig,
                 defaultConfigBuilder);
 
-        CameraInternal boundCamera = getBoundCamera();
+        CameraInternal attachedCamera = getCamera();
         // Checks the device constraints and get the corrected aspect ratio.
-        if (boundCamera != null && CameraX.getSurfaceManager().requiresCorrectedAspectRatio(
-                boundCamera.getCameraInfoInternal().getCameraId())) {
+        if (attachedCamera != null && CameraX.getSurfaceManager().requiresCorrectedAspectRatio(
+                attachedCamera.getCameraInfoInternal().getCameraId())) {
             ImageOutputConfig imageConfig = previewConfig;
             Rational resultRatio =
                     CameraX.getSurfaceManager().getCorrectedAspectRatio(
-                            boundCamera.getCameraInfoInternal().getCameraId(),
+                            attachedCamera.getCameraInfoInternal().getCameraId(),
                             imageConfig.getTargetRotation(Surface.ROTATION_0));
             if (resultRatio != null) {
                 Builder configBuilder = Builder.fromConfig(previewConfig);
@@ -482,7 +482,7 @@
     protected Size onSuggestedResolutionUpdated(@NonNull Size suggestedResolution) {
         mLatestResolution = suggestedResolution;
 
-        updateConfigAndOutput(getBoundCameraId(), (PreviewConfig) getUseCaseConfig(),
+        updateConfigAndOutput(getCameraId(), (PreviewConfig) getUseCaseConfig(),
                 mLatestResolution);
 
         return mLatestResolution;
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java b/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java
index 4d172c3..6570bd0 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/UseCase.java
@@ -73,9 +73,9 @@
 
     private UseCaseConfig<?> mUseCaseConfig;
 
-    private final Object mBoundCameraLock = new Object();
-    @GuardedBy("mBoundCameraLock")
-    private CameraInternal mBoundCamera;
+    private final Object mCameraLock = new Object();
+    @GuardedBy("mCameraLock")
+    private CameraInternal mCamera;
 
     /**
      * Creates a named instance of the use case.
@@ -128,8 +128,7 @@
     protected final void updateUseCaseConfig(@NonNull UseCaseConfig<?> useCaseConfig) {
         // Attempt to retrieve builder containing defaults for this use case's config
         Builder<?, ?, ?> defaultBuilder =
-                getDefaultBuilder(
-                        getBoundCamera() == null ? null : getBoundCamera().getCameraInfo());
+                getDefaultBuilder(getCamera() == null ? null : getCamera().getCameraInfo());
 
         // Combine with default configuration.
         mUseCaseConfig = applyDefaults(useCaseConfig, defaultBuilder);
@@ -295,29 +294,29 @@
     }
 
     /**
-     * Returns the camera ID for the currently bound camera, or throws an exception if no camera is
-     * bound.
+     * Returns the camera ID for the currently attached camera, or throws an exception if no
+     * camera is attached.
      *
      * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
-    protected String getBoundCameraId() {
-        return Preconditions.checkNotNull(getBoundCamera(),
-                "No camera bound to use case: " + this).getCameraInfoInternal().getCameraId();
+    protected String getCameraId() {
+        return Preconditions.checkNotNull(getCamera(),
+                "No camera attached to use case: " + this).getCameraInfoInternal().getCameraId();
     }
 
     /**
-     * Checks whether the provided camera ID is the currently bound camera ID.
+     * Checks whether the provided camera ID is the currently attached camera ID.
      *
      * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
-    protected boolean isCurrentlyBoundCamera(@NonNull String cameraId) {
-        if (getBoundCamera() == null) {
+    protected boolean isCurrentCamera(@NonNull String cameraId) {
+        if (getCamera() == null) {
             return false;
         }
-        return Objects.equals(cameraId, getBoundCameraId());
+        return Objects.equals(cameraId, getCameraId());
     }
 
     /**
@@ -363,15 +362,15 @@
     }
 
     /**
-     * Returns the currently bound {@link Camera} or {@code null} if none is bound.
+     * Returns the currently attached {@link Camera} or {@code null} if none is attached.
      *
      * @hide
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     @Nullable
-    public CameraInternal getBoundCamera() {
-        synchronized (mBoundCameraLock) {
-            return mBoundCamera;
+    public CameraInternal getCamera() {
+        synchronized (mCameraLock) {
+            return mCamera;
         }
     }
 
@@ -404,9 +403,8 @@
      * <p>Override to create necessary objects like {@link ImageReader} depending
      * on the resolution.
      *
-     * @param suggestedResolution The suggested resolution that depends on camera
-     *                            device capability and what and how many use cases will be
-     *                            bound.
+     * @param suggestedResolution The suggested resolution that depends on camera device
+     *                            capability and what and how many use cases will be bound.
      * @return The resolution that finally used to create the SessionConfig to
      * attach to the camera device.
      * @hide
@@ -433,8 +431,8 @@
      */
     @RestrictTo(Scope.LIBRARY_GROUP)
     protected void onAttach(@NonNull CameraInternal camera) {
-        synchronized (mBoundCameraLock) {
-            mBoundCamera = camera;
+        synchronized (mCameraLock) {
+            mCamera = camera;
             addStateChangeCallback(camera);
         }
         updateUseCaseConfig(mUseCaseConfig);
@@ -461,11 +459,11 @@
             eventCallback.onUnbind();
         }
 
-        synchronized (mBoundCameraLock) {
-            if (mBoundCamera != null) {
-                mBoundCamera.removeOnlineUseCase(Collections.singleton(this));
-                removeStateChangeCallback(mBoundCamera);
-                mBoundCamera = null;
+        synchronized (mCameraLock) {
+            if (mCamera != null) {
+                mCamera.removeOnlineUseCase(Collections.singleton(this));
+                removeStateChangeCallback(mCamera);
+                mCamera = null;
             }
         }
     }
@@ -496,11 +494,11 @@
     @RestrictTo(Scope.LIBRARY_GROUP)
     @NonNull
     protected CameraControlInternal getCameraControl() {
-        synchronized (mBoundCameraLock) {
-            if (mBoundCamera == null) {
+        synchronized (mCameraLock) {
+            if (mCamera == null) {
                 return CameraControlInternal.DEFAULT_EMPTY_INSTANCE;
             }
-            return mBoundCamera.getCameraControlInternal();
+            return mCamera.getCameraControlInternal();
         }
     }
 
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/VideoCapture.java b/camera/camera-core/src/main/java/androidx/camera/core/VideoCapture.java
index f2bf89f..c4bd236 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/VideoCapture.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/VideoCapture.java
@@ -238,7 +238,7 @@
             throw new IllegalStateException("Unable to create MediaCodec due to: " + e.getCause());
         }
 
-        setupEncoder(getBoundCameraId(), suggestedResolution);
+        setupEncoder(getCameraId(), suggestedResolution);
         return suggestedResolution;
     }
 
@@ -294,8 +294,8 @@
             return;
         }
 
-        CameraInternal boundCamera = getBoundCamera();
-        String cameraId = getBoundCameraId();
+        CameraInternal attachedCamera = getCamera();
+        String cameraId = getCameraId();
         Size resolution = getAttachedSurfaceResolution();
         try {
             // video encoder start
@@ -312,7 +312,7 @@
             return;
         }
 
-        CameraInfoInternal cameraInfoInternal = boundCamera.getCameraInfoInternal();
+        CameraInfoInternal cameraInfoInternal = attachedCamera.getCameraInfoInternal();
         int relativeRotation = cameraInfoInternal.getSensorRotationDegrees(
                 ((ImageOutputConfig) getUseCaseConfig()).getTargetRotation(Surface.ROTATION_0));
 
@@ -490,10 +490,10 @@
             @Override
             public void onError(@NonNull SessionConfig sessionConfig,
                     @NonNull SessionConfig.SessionError error) {
-                // Ensure the bound camera has not changed before calling setupEncoder.
-                // TODO(b/143915543): Ensure this never gets called by a camera that is not bound
+                // Ensure the attached camera has not changed before calling setupEncoder.
+                // TODO(b/143915543): Ensure this never gets called by a camera that is not attached
                 //  to this use case so we don't need to do this check.
-                if (isCurrentlyBoundCamera(cameraId)) {
+                if (isCurrentCamera(cameraId)) {
                     // Only reset the pipeline when the bound camera is the same.
                     setupEncoder(cameraId, resolution);
                 }
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseAttachState.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseAttachState.java
index f780aa6..6ffdf2b 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseAttachState.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseAttachState.java
@@ -210,7 +210,7 @@
 
     private UseCaseAttachInfo getOrCreateUseCaseAttachInfo(UseCase useCase) {
         Preconditions.checkArgument(
-                useCase.getBoundCamera().getCameraInfoInternal().getCameraId().equals(mCameraId));
+                useCase.getCamera().getCameraInfoInternal().getCameraId().equals(mCameraId));
         UseCaseAttachInfo useCaseAttachInfo = mAttachedUseCasesToInfoMap.get(useCase);
         if (useCaseAttachInfo == null) {
             useCaseAttachInfo = new UseCaseAttachInfo(useCase.getSessionConfig());
diff --git a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseGroup.java b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseGroup.java
index 8877618..d287bf02 100644
--- a/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseGroup.java
+++ b/camera/camera-core/src/main/java/androidx/camera/core/impl/UseCaseGroup.java
@@ -150,9 +150,9 @@
         Map<String, Set<UseCase>> cameraIdToUseCases = new HashMap<>();
         synchronized (mUseCasesLock) {
             for (UseCase useCase : mUseCases) {
-                CameraInternal boundCamera = useCase.getBoundCamera();
-                if (boundCamera != null) {
-                    String cameraId = boundCamera.getCameraInfoInternal().getCameraId();
+                CameraInternal attachedCamera = useCase.getCamera();
+                if (attachedCamera != null) {
+                    String cameraId = attachedCamera.getCameraInfoInternal().getCameraId();
                     Set<UseCase> useCaseSet = cameraIdToUseCases.get(cameraId);
                     if (useCaseSet == null) {
                         useCaseSet = new HashSet<>();