blob: bda84dde26d40070bf58ae3bf28be3cf68c19563 [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.incrementalinstall;
import android.app.Activity;
import android.app.AppComponentFactory;
import android.app.Application;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.ContentProvider;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
/** Delegates to the real AppComponentFactory. */
public class BootstrapAppComponentFactory extends AppComponentFactory {
static AppComponentFactory sDelegate;
@Override
public ClassLoader instantiateClassLoader(ClassLoader cl, ApplicationInfo aInfo) {
if (sDelegate != null) {
throw new AssertionError("Not expecting this call since delegate is set after this.");
}
return super.instantiateClassLoader(cl, aInfo);
}
@Override
public Application instantiateApplication(ClassLoader cl, String className)
throws InstantiationException, IllegalAccessException, ClassNotFoundException {
if (sDelegate != null) {
return sDelegate.instantiateApplication(cl, className);
}
return super.instantiateApplication(cl, className);
}
@Override
public ContentProvider instantiateProvider(ClassLoader cl, String className)
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
if (sDelegate != null) {
return sDelegate.instantiateProvider(cl, className);
}
return super.instantiateProvider(cl, className);
}
@Override
public Activity instantiateActivity(ClassLoader cl, String className, Intent intent)
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
if (sDelegate != null) {
return sDelegate.instantiateActivity(cl, className, intent);
}
return super.instantiateActivity(cl, className, intent);
}
@Override
public BroadcastReceiver instantiateReceiver(ClassLoader cl, String className, Intent intent)
throws ClassNotFoundException, IllegalAccessException, InstantiationException {
if (sDelegate != null) {
return sDelegate.instantiateReceiver(cl, className, intent);
}
return super.instantiateReceiver(cl, className, intent);
}
@Override
public Service instantiateService(ClassLoader cl, String className, Intent intent)
throws InstantiationException, IllegalAccessException, ClassNotFoundException {
if (sDelegate != null) {
return sDelegate.instantiateService(cl, className, intent);
}
return super.instantiateService(cl, className, intent);
}
}