Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7814f0f6 authored by Philip P. Moltmann's avatar Philip P. Moltmann Committed by Android (Google) Code Review
Browse files

Merge "Store which print services are disabled instead of which are enabled"

parents 7ef70d15 8141bdfa
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -98,5 +98,11 @@ oneway interface IPrintSpooler {
    void writePrintJobData(in ParcelFileDescriptor fd, in PrintJobId printJobId);
    void setClient(IPrintSpoolerClient client);
    void setPrintJobCancelling(in PrintJobId printJobId, boolean cancelling);
    void removeApprovedPrintService(in ComponentName serviceToRemove);

    /**
     * Remove all approved print services that are not in the given set.
     *
     * @param servicesToKeep The names of the services to keep
     */
    void pruneApprovedPrintServices(in List<ComponentName> servicesToKeep);
}
+11 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.printservice;

import android.annotation.NonNull;
import android.content.ComponentName;
import android.content.Context;
import android.content.pm.PackageManager;
@@ -93,6 +94,16 @@ public final class PrintServiceInfo implements Parcelable {
        mAdvancedPrintOptionsActivityName = advancedPrintOptionsActivityName;
    }

    /**
     * Return the component name for this print service.
     *
     * @return The component name for this print service.
     */
    public @NonNull ComponentName getComponentName() {
        return new ComponentName(mResolveInfo.serviceInfo.packageName,
                mResolveInfo.serviceInfo.name);
    }

    /**
     * Creates a new instance.
     *
+8 −5
Original line number Diff line number Diff line
@@ -4974,19 +4974,22 @@ public final class Settings {

        /**
         * List of the enabled print services.
         *
         * N and beyond uses {@link #DISABLED_PRINT_SERVICES}. But this might be used in an upgrade
         * from pre-N.
         *
         * @hide
         */
        public static final String ENABLED_PRINT_SERVICES =
            "enabled_print_services";

        /**
         * List of the system print services we enabled on first boot. On
         * first boot we enable all system, i.e. bundled print services,
         * once, so they work out-of-the-box.
         * List of the disabled print services.
         *
         * @hide
         */
        public static final String ENABLED_ON_FIRST_BOOT_SYSTEM_PRINT_SERVICES =
            "enabled_on_first_boot_system_print_services";
        public static final String DISABLED_PRINT_SERVICES =
            "disabled_print_services";

        /**
         * Setting to always use the default text-to-speech settings regardless
+2 −2
Original line number Diff line number Diff line
@@ -1416,9 +1416,9 @@ public final class PrintSpoolerService extends Service {
        }

        @Override
        public void removeApprovedPrintService(ComponentName serviceToRemove) {
        public void pruneApprovedPrintServices(List<ComponentName> servicesToKeep) {
            (new ApprovedPrintServices(PrintSpoolerService.this))
                    .removeApprovedService(serviceToRemove);
                    .pruneApprovedServices(servicesToKeep);
        }

        @Override
+30 −11
Original line number Diff line number Diff line
@@ -66,6 +66,7 @@ import android.widget.ListView;
import android.widget.SearchView;
import android.widget.TextView;

import com.android.internal.content.PackageMonitor;
import com.android.printspooler.R;

import java.util.ArrayList;
@@ -101,7 +102,8 @@ public final class SelectPrinterActivity extends Activity {
    private AnnounceFilterResult mAnnounceFilterResult;

    /** Monitor if new print services get enabled or disabled */
    private ContentObserver mPrintServicesObserver;
    private ContentObserver mPrintServicesDisabledObserver;
    private PackageMonitor mPackageObserver;

    @Override
    public void onCreate(Bundle savedInstanceState) {
@@ -245,28 +247,45 @@ public final class SelectPrinterActivity extends Activity {
     * Register listener for changes to the enabled print services.
     */
    private void registerServiceMonitor() {
        mPrintServicesObserver = new ContentObserver(new Handler()) {
        // Listen for services getting disabled
        mPrintServicesDisabledObserver = new ContentObserver(new Handler()) {
            @Override
            public void onChange(boolean selfChange) {
                onPrintServicesUpdate();
            }
        };

        // Listen for services getting installed or uninstalled
        mPackageObserver = new PackageMonitor() {
            @Override
            public void onPackageModified(String packageName) {
                onPrintServicesUpdate();
            }

            @Override
            public void onPackageRemoved(String packageName, int uid) {
                onPrintServicesUpdate();
            }

            @Override
            public void onPackageAdded(String packageName, int uid) {
                onPrintServicesUpdate();
            }
        };

        getContentResolver().registerContentObserver(
                Settings.Secure.getUriFor(Settings.Secure.ENABLED_PRINT_SERVICES), false,
                mPrintServicesObserver);
                Settings.Secure.getUriFor(Settings.Secure.DISABLED_PRINT_SERVICES), false,
                mPrintServicesDisabledObserver);

        mPackageObserver.register(this, getMainLooper(), false);
    }

    /**
     * Unregister {@link #mPrintServicesObserver listener for changes to the enabled print services}
     * or nothing if the listener is not registered.
     * Unregister the listeners for changes to the enabled print services.
     */
    private void unregisterServiceMonitorIfNeeded() {
        if (mPrintServicesObserver != null) {
            getContentResolver().unregisterContentObserver(mPrintServicesObserver);

            mPrintServicesObserver = null;
        }
        getContentResolver().unregisterContentObserver(mPrintServicesDisabledObserver);
        mPackageObserver.unregister();
    }

    @Override
Loading