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