@Test public void registerSessionCallback_sessionFails() throws Exception { PackageInstaller.SessionCallback mockCallback = mock(PackageInstaller.SessionCallback.class); packageInstaller.registerSessionCallback(mockCallback, new Handler()); int sessionId = packageInstaller.createSession(createSessionParams("packageName")); verify(mockCallback).onCreated(sessionId); PackageInstaller.Session session = packageInstaller.openSession(sessionId); OutputStream outputStream = session.openWrite("filename", 0, 0); outputStream.close(); session.abandon(); assertThat(packageInstaller.getAllSessions()).isEmpty(); verify(mockCallback).onFinished(sessionId, false); }
@Test public void registerSessionCallback_sessionSucceeds() throws Exception { PackageInstaller.SessionCallback mockCallback = mock(PackageInstaller.SessionCallback.class); packageInstaller.registerSessionCallback(mockCallback, new Handler()); int sessionId = packageInstaller.createSession(createSessionParams("packageName")); verify(mockCallback).onCreated(sessionId); PackageInstaller.Session session = packageInstaller.openSession(sessionId); OutputStream outputStream = session.openWrite("filename", 0, 0); outputStream.close(); session.commit(new IntentSender(ReflectionHelpers.createNullProxy(IIntentSender.class))); shadowOf(packageInstaller).setSessionProgress(sessionId, 50.0f); verify(mockCallback).onProgressChanged(sessionId, 50.0f); verify(mockCallback).onFinished(sessionId, true); }
@Test // TODO: Initial implementation has a no-op OutputStream - complete this implementation. public void sessionOpenWriteDoesNotThrowException() throws Exception { int sessionId = packageInstaller.createSession(createSessionParams("packageName")); PackageInstaller.Session session = packageInstaller.openSession(sessionId); OutputStream filename = session.openWrite("filename", 0, 0); filename.write(10); }
OutputStream out = null; in = new FileInputStream(filePath); out = session.openWrite("amazmod_install", 0, sizeBytes);
private static boolean installPackage(Context context, InputStream in, String packageName) throws IOException { final PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller(); final PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); params.setAppPackageName(packageName); final int sessionId = packageInstaller.createSession(params); final PackageInstaller.Session session = packageInstaller.openSession(sessionId); final OutputStream out = session.openWrite("COSU", 0, -1); final byte[] buffer = new byte[65536]; int bytes_read; while ((bytes_read = in.read(buffer)) != -1) { out.write(buffer, 0, bytes_read); } session.fsync(out); in.close(); out.close(); session.commit(createIntentSender(context, sessionId)); return true; }
private static boolean installPackage(Context context, byte[] buffer, String packageName) throws IOException { final PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller(); final PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( PackageInstaller.SessionParams.MODE_FULL_INSTALL); params.setAppPackageName(packageName); final int sessionId = packageInstaller.createSession(params); final PackageInstaller.Session session = packageInstaller.openSession(sessionId); final OutputStream out = session.openWrite("COSU", 0, -1); out.write(buffer, 0, buffer.length); session.fsync(out); out.close(); session.commit(createIntentSender(context, sessionId)); return true; }
@Test(expected = SecurityException.class) public void sessionCommitSession_streamStillOpen() throws Exception { int sessionId = packageInstaller.createSession(createSessionParams("packageName")); PackageInstaller.Session session = packageInstaller.openSession(sessionId); session.openWrite("filename", 0, 0); session.commit(new IntentSender(ReflectionHelpers.createNullProxy(IIntentSender.class))); }
@Test public void sessionCommitSession_streamProperlyClosed() throws Exception { int sessionId = packageInstaller.createSession(createSessionParams("packageName")); PackageInstaller.Session session = packageInstaller.openSession(sessionId); OutputStream outputStream = session.openWrite("filename", 0, 0); outputStream.close(); session.commit(new IntentSender(ReflectionHelpers.createNullProxy(IIntentSender.class))); }