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