126 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			126 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Java
		
	
	
	
| /*
 | |
|  * Copyright (C) 2016 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.
 | |
|  * You may obtain a copy of the License at
 | |
|  *
 | |
|  *      http://www.apache.org/licenses/LICENSE-2.0
 | |
|  *
 | |
|  * Unless required by applicable law or agreed to in writing, software
 | |
|  * distributed under the License is distributed on an "AS IS" BASIS,
 | |
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | |
|  * See the License for the specific language governing permissions and
 | |
|  * limitations under the License.
 | |
|  */
 | |
| package com.android.documentsui;
 | |
| 
 | |
| import android.database.Cursor;
 | |
| import android.database.MatrixCursor;
 | |
| import android.database.MatrixCursor.RowBuilder;
 | |
| import android.os.Bundle;
 | |
| import android.os.CancellationSignal;
 | |
| import android.os.ParcelFileDescriptor;
 | |
| import android.provider.DocumentsContract;
 | |
| import android.provider.DocumentsContract.Document;
 | |
| import android.provider.DocumentsContract.Root;
 | |
| import android.provider.DocumentsProvider;
 | |
| 
 | |
| import java.io.FileNotFoundException;
 | |
| 
 | |
| /**
 | |
|  * Simple test provider that provides a single root. Subclasess provider support
 | |
|  * for returning documents.
 | |
|  */
 | |
| abstract class TestRootProvider extends DocumentsProvider {
 | |
| 
 | |
|     static final String[] DEFAULT_ROOT_PROJECTION = new String[] {
 | |
|             Root.COLUMN_ROOT_ID,
 | |
|             Root.COLUMN_FLAGS,
 | |
|             Root.COLUMN_TITLE,
 | |
|             Root.COLUMN_DOCUMENT_ID,
 | |
|             Root.COLUMN_AVAILABLE_BYTES
 | |
|     };
 | |
| 
 | |
|     static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] {
 | |
|             Document.COLUMN_DOCUMENT_ID,
 | |
|             Document.COLUMN_MIME_TYPE,
 | |
|             Document.COLUMN_DISPLAY_NAME,
 | |
|             Document.COLUMN_LAST_MODIFIED,
 | |
|             Document.COLUMN_FLAGS,
 | |
|             Document.COLUMN_SIZE,
 | |
|     };
 | |
| 
 | |
|     private final String mRootId;
 | |
|     private final String mRootName;
 | |
|     private final int mFlags;
 | |
|     private final String mRootDocId;
 | |
| 
 | |
|     public TestRootProvider(String rootName, String rootId, int flags, String rootDocId) {
 | |
|         mRootName = rootName;
 | |
|         mRootId = rootId;
 | |
|         mFlags = flags;
 | |
|         mRootDocId = rootDocId;
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public Cursor queryRoots(String[] projection) throws FileNotFoundException {
 | |
|         MatrixCursor c = new MatrixCursor(
 | |
|                 projection != null ? projection : DEFAULT_ROOT_PROJECTION);
 | |
|         final RowBuilder row = c.newRow();
 | |
|         row.add(Root.COLUMN_ROOT_ID, mRootId);
 | |
|         row.add(Root.COLUMN_TITLE, mRootName);
 | |
|         row.add(Root.COLUMN_FLAGS, mFlags);
 | |
|         row.add(Root.COLUMN_DOCUMENT_ID, mRootDocId);
 | |
|         row.add(Root.COLUMN_AVAILABLE_BYTES, 1024 * 1024 * 1000);
 | |
|         return c;
 | |
|     }
 | |
| 
 | |
|     protected void addFile(MatrixCursor c, String id) {
 | |
|         addFile(c, id, 0);
 | |
|     }
 | |
| 
 | |
|     protected void addFile(MatrixCursor c, String id, int flags) {
 | |
|         final RowBuilder row = c.newRow();
 | |
|         row.add(Document.COLUMN_DOCUMENT_ID, id);
 | |
|         row.add(Document.COLUMN_DISPLAY_NAME, id);
 | |
|         row.add(Document.COLUMN_SIZE, 0);
 | |
|         row.add(Document.COLUMN_MIME_TYPE, "text/plain");
 | |
|         row.add(Document.COLUMN_FLAGS, flags);
 | |
|         row.add(Document.COLUMN_LAST_MODIFIED, System.currentTimeMillis());
 | |
|     }
 | |
| 
 | |
|     protected void addFolder(MatrixCursor c, String id) {
 | |
|         addFolder(c, id, 0);
 | |
|     }
 | |
| 
 | |
|     protected void addFolder(MatrixCursor c, String id, int flags) {
 | |
|         final RowBuilder row = c.newRow();
 | |
|         row.add(Document.COLUMN_DOCUMENT_ID, id);
 | |
|         row.add(Document.COLUMN_DISPLAY_NAME, id);
 | |
|         row.add(Document.COLUMN_SIZE, 0);
 | |
|         row.add(Document.COLUMN_MIME_TYPE, DocumentsContract.Document.MIME_TYPE_DIR);
 | |
|         row.add(Document.COLUMN_FLAGS, flags);
 | |
|         row.add(Document.COLUMN_LAST_MODIFIED, System.currentTimeMillis());
 | |
|     }
 | |
| 
 | |
|     protected MatrixCursor createDocCursor(String[] projection) {
 | |
|         MatrixCursor c = new MatrixCursor(
 | |
|                 projection != null ? projection : DEFAULT_DOCUMENT_PROJECTION);
 | |
|         c.setExtras(new Bundle());
 | |
|         return c;
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public ParcelFileDescriptor openDocument(String documentId, String mode,
 | |
|             CancellationSignal signal) throws FileNotFoundException {
 | |
|         throw new UnsupportedOperationException("Nope!");
 | |
|     }
 | |
| 
 | |
|     @Override
 | |
|     public boolean onCreate() {
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
| }
 |