TestDocumentClipper.java revision da2c0f0b075ad9f770182e706c2ec158989568a7
130b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin/* 230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * Copyright (C) 2016 The Android Open Source Project 330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * 430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * Licensed under the Apache License, Version 2.0 (the "License"); 530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * you may not use this file except in compliance with the License. 630b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * You may obtain a copy of the License at 730b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * 830b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * http://www.apache.org/licenses/LICENSE-2.0 930b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * 1030b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * Unless required by applicable law or agreed to in writing, software 1130b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * distributed under the License is distributed on an "AS IS" BASIS, 1230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * See the License for the specific language governing permissions and 1430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin * limitations under the License. 1530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin */ 1630b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 1730b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linpackage com.android.documentsui.testing; 1830b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 1930b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport android.content.ClipData; 2030b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport android.net.Uri; 21da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tanimport android.util.Pair; 2230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 2330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport com.android.documentsui.base.DocumentInfo; 2430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport com.android.documentsui.base.DocumentStack; 2530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport com.android.documentsui.clipping.DocumentClipper; 2630b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport com.android.documentsui.selection.Selection; 27da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tanimport com.android.documentsui.services.FileOperationService; 28da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tanimport com.android.documentsui.services.FileOperationService.OpType; 2930b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport com.android.documentsui.services.FileOperations.Callback; 3030b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 31da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tanimport java.util.List; 3230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linimport java.util.function.Function; 3330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 3430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Linpublic class TestDocumentClipper implements DocumentClipper { 3530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 36da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public ClipData nextClip; 37da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public ClipData primaryClip; 38da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan 39da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public final TestEventListener<Pair<DocumentStack, ClipData>> copy = new TestEventListener<>(); 40da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public final TestEventListener<Integer> opType = new TestEventListener<>(); 41ceef2de0a8aa62d86db5939ff7ad3c1a1739d288Garfield Tan 4230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 4330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin public boolean hasItemsToPaste() { 4430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin return false; 4530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin } 4630b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 4730b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 4830b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin public ClipData getClipDataForDocuments(Function<String, Uri> uriBuilder, Selection selection, 4930b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin int opType) { 50da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan return nextClip; 5130b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin } 5230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 5330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 54da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public ClipData getClipDataForDocuments(List<Uri> uris, 55da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan @FileOperationService.OpType int opType, DocumentInfo parent) { 56da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan return nextClip; 57da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan } 5830b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 59da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan @Override 60da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public void clipDocumentsForCopy(Function<String, Uri> uriBuilder, Selection selection) { 6130b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin } 6230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 6330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 6430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin public void clipDocumentsForCut(Function<String, Uri> uriBuilder, Selection selection, 6530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin DocumentInfo parent) { 6630b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin } 6730b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 6830b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 6930b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin public void copyFromClipboard(DocumentInfo destination, DocumentStack docStack, 7030b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin Callback callback) { 71da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan copy.accept(Pair.create(new DocumentStack(docStack, destination), primaryClip)); 7230b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin } 7330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 7430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 7530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin public void copyFromClipboard(DocumentStack docStack, Callback callback) { 76da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan copy.accept(Pair.create(docStack, primaryClip)); 7730b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin } 7830b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 7930b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 8030b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin public void copyFromClipData(DocumentInfo destination, DocumentStack docStack, 8130b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin ClipData clipData, Callback callback) { 82da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan copy.accept(Pair.create(new DocumentStack(docStack, destination), clipData)); 8330b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin } 8430b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin 8530b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin @Override 86da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public void copyFromClipData(DocumentStack dstStack, ClipData clipData, 87da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan @OpType int opType, Callback callback) { 88da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan copy.accept(Pair.create(dstStack, clipData)); 89da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan this.opType.accept(opType); 9085a479e941a733de22d4309bf7802e4cc6814786Garfield Tan } 9185a479e941a733de22d4309bf7802e4cc6814786Garfield Tan 9285a479e941a733de22d4309bf7802e4cc6814786Garfield Tan @Override 93da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan public void copyFromClipData(DocumentStack docStack, ClipData clipData, Callback callback) { 94da2c0f0b075ad9f770182e706c2ec158989568a7Garfield Tan copy.accept(Pair.create(docStack, clipData)); 95ceef2de0a8aa62d86db5939ff7ad3c1a1739d288Garfield Tan } 9630b0dc1896abc67a970b61ebfd420275a31c1e18Ben Lin} 97