17850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com/*
27850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * Copyright (C) 2009 The Android Open Source Project
37850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *
47850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * Licensed under the Apache License, Version 2.0 (the "License");
57850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * you may not use this file except in compliance with the License.
67850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * You may obtain a copy of the License at
77850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *
87850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *      http://www.apache.org/licenses/LICENSE-2.0
97850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com *
107850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * Unless required by applicable law or agreed to in writing, software
117850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * distributed under the License is distributed on an "AS IS" BASIS,
127850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
137850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * See the License for the specific language governing permissions and
147850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * limitations under the License.
157850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com */
167850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
17969d5622a380e2f2f9ebdfbf7a22cbb3e031125bjessewilson@google.compackage vogar.android;
187850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
197850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.comimport java.io.File;
206a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.comimport java.util.Collections;
21db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.comimport java.util.LinkedHashSet;
22f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.comimport java.util.Set;
23969d5622a380e2f2f9ebdfbf7a22cbb3e031125bjessewilson@google.comimport vogar.Action;
24db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.comimport vogar.Classpath;
25969d5622a380e2f2f9ebdfbf7a22cbb3e031125bjessewilson@google.comimport vogar.Mode;
26f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.comimport vogar.Run;
27db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.comimport vogar.commands.VmCommandBuilder;
28f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.comimport vogar.tasks.ExtractJarResourceTask;
292c37ef5a628067f4d7e5a5c69a7314647939a5e1jessewilson@google.comimport vogar.tasks.Task;
307850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
317850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com/**
327850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com * Runs an action in the context of an android.app.Activity on a device
337850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com */
34db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.compublic final class ActivityMode implements Mode {
35db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com    private final Run run;
36db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com
37f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com    public ActivityMode(Run run) {
38db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com        this.run = run;
392c37ef5a628067f4d7e5a5c69a7314647939a5e1jessewilson@google.com    }
407850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
41db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com    @Override public Set<Task> installTasks() {
426a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com        return Collections.<Task>singleton(
436a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com                new ExtractJarResourceTask("/vogar/vogar.keystore", run.keystore));
447850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
457850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
466a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com    @Override public Set<Task> installActionTasks(Action action, File jar) {
476a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com        return Collections.<Task>singleton(new InstallApkTask(run, action, jar));
486a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com    }
496a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com
506a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com    @Override public Task executeActionTask(Action action, boolean useLargeTimeout) {
51f83be5e4273263df2bb9ef609946b911695b3996jessewilson@google.com        return new RunActivityTask(run, action, useLargeTimeout);
527850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
537850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
54db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com    @Override public Set<Task> cleanupTasks(Action action) {
55db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com        Set<Task> result = new LinkedHashSet<Task>();
560eb0936e90bf11463c8ee937ca996d7bd654a098jessewilson@google.com        result.add(run.target.rmTask(action.getUserDir()));
57db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com        result.add(new UninstallApkTask(run.androidSdk, action.getName()));
58db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com        return result;
597850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com    }
607850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com
61db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com    @Override public VmCommandBuilder newVmCommandBuilder(Action action, File workingDirectory) {
62db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com        throw new UnsupportedOperationException();
636a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com    }
646a0f4cdb51f57b4b38f9ee1ed9f44f1afc9f6da6jessewilson@google.com
65db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com    @Override public Classpath getRuntimeClasspath(Action action) {
66db82cde9016d812b26b6c79e375fdf60ead1d9fajessewilson@google.com        throw new UnsupportedOperationException();
67dbd85addb4e44255c4296b82d3ca45ad33a56649jessewilson@google.com    }
687850f3f3da0099b76f09ed64d23e0a43ba4a5c76jessewilson@google.com}
69