• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package android.scopedstorage.cts.device;
18 
19 import static android.scopedstorage.cts.device.FileCreationUtils.createContentFromResource;
20 import static android.scopedstorage.cts.lib.TestUtils.getDcimDir;
21 
22 import static com.google.common.truth.Truth.assertThat;
23 
24 import android.content.ContentResolver;
25 import android.net.Uri;
26 import android.provider.MediaStore;
27 
28 import org.junit.rules.ExternalResource;
29 
30 import java.io.File;
31 import java.io.IOException;
32 
33 public class OwnedFilesRule extends ExternalResource {
34 
35     private static final String TAG = "OwnedFilesRule";
36     public static final int RESOURCE_ID = R.raw.scenery;
37     public static final int RESOURCE_ID_WITH_METADATA = R.raw.img_with_metadata;
38     private static final String NONCE = String.valueOf(System.nanoTime());
39     private static final String IMAGE_1 = TAG + "_image1_" + NONCE + ".jpg";
40     private static final String IMAGE_2 = TAG + "_image2_" + NONCE + ".jpg";
41     private static final String VIDEO_1 = TAG + "_video1_" + NONCE + ".mp4";
42 
43     private final ContentResolver mContentResolver;
44 
45     private final File mImageFile1 = new File(getDcimDir(), IMAGE_1);
46     private final File mImageFile2Metadata = new File(getDcimDir(), IMAGE_2);
47 
48     private final File mVideoFile1 = new File(getDcimDir(), VIDEO_1);
49     private Uri mImageUri1;
50     private Uri mImageUri2;
51     private Uri mVideoUri1;
52 
OwnedFilesRule(ContentResolver contentResolver)53     public OwnedFilesRule(ContentResolver contentResolver) {
54         this.mContentResolver = contentResolver;
55     }
56 
57     @Override
before()58     protected void before() throws IOException {
59         mImageUri1 = createFile(RESOURCE_ID, mImageFile1);
60         mImageUri2 = createFile(RESOURCE_ID_WITH_METADATA, mImageFile2Metadata);
61         mVideoUri1 = createFile(mVideoFile1);
62 
63     }
64 
createFile(int resourceId, File imageFile)65     public Uri createFile(int resourceId, File imageFile) throws IOException {
66         assertThat(imageFile.createNewFile()).isTrue();
67         Uri uri = MediaStore.scanFile(mContentResolver, imageFile);
68         createContentFromResource(resourceId, imageFile);
69         assertThat(uri).isNotNull();
70         return uri;
71     }
72 
createFile(File file)73     public Uri createFile(File file) throws IOException {
74         assertThat(file.createNewFile()).isTrue();
75         Uri uri = MediaStore.scanFile(mContentResolver, file);
76         assertThat(uri).isNotNull();
77         return uri;
78     }
79 
80     @Override
after()81     protected void after() {
82         mImageFile1.delete();
83         mImageFile2Metadata.delete();
84         mVideoFile1.delete();
85     }
86 
getImageFile1()87     public File getImageFile1() {
88         return mImageFile1;
89     }
90 
getImageFile2Metadata()91     public File getImageFile2Metadata() {
92         return mImageFile2Metadata;
93     }
94 
getVideoFile1()95     public File getVideoFile1() {
96         return mVideoFile1;
97     }
98 
99 
getImageUri1()100     public Uri getImageUri1() {
101         return mImageUri1;
102     }
103 
getImageUri2_Metadata()104     public Uri getImageUri2_Metadata() {
105         return mImageUri2;
106     }
107 
getVideoUri1()108     public Uri getVideoUri1() {
109         return mVideoUri1;
110     }
111 }
112