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

Commit 528e4684 authored by Yohei Yukawa's avatar Yohei Yukawa
Browse files

Remove unused content observer from AssistManager.

Since I45e58de5f48e3769f114ff830d62c287d2b04d4f we always look up
Settings.Secure.ASSISTANT just before the assist activity is launched.
Hence we don't need to monitor following runtime data anymore.
 - changes of Settings.Secure.ASSISTANT with a content observer
 - switches of the current user id

The primary goal of this CL is to make it clearer that we are lazily
resolving the content of Settings.Secure.ASSISTANT by removing
unnecessary code.  No user visible behavior change is intended.

Bug: 23097413
Change-Id: I079807db761c5543ba666c427d9b074794becf6e
parent 09ffc62f
Loading
Loading
Loading
Loading
+23 −62
Original line number Diff line number Diff line
package com.android.systemui.assist;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.SearchManager;
@@ -9,9 +11,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.database.ContentObserver;
import android.graphics.PixelFormat;
import android.media.AudioAttributes;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
@@ -21,7 +21,6 @@ import android.provider.Settings;
import android.service.voice.VoiceInteractionSession;
import android.util.Log;
import android.view.Gravity;
import android.view.HapticFeedbackConstants;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -33,10 +32,6 @@ import com.android.internal.app.IVoiceInteractionSessionShowCallback;
import com.android.systemui.R;
import com.android.systemui.statusbar.BaseStatusBar;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.statusbar.phone.PhoneStatusBar;

import java.io.FileDescriptor;
import java.io.PrintWriter;

/**
 * Class to manage everything related to assist in SystemUI.
@@ -58,8 +53,6 @@ public class AssistManager {
    private final BaseStatusBar mBar;
    private final AssistUtils mAssistUtils;

    private ComponentName mAssistComponent;

    private IVoiceInteractionSessionShowCallback mShowCallback =
            new IVoiceInteractionSessionShowCallback.Stub() {

@@ -82,23 +75,11 @@ public class AssistManager {
        }
    };

    private final ContentObserver mAssistSettingsObserver = new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
            updateAssistInfo();
        }
    };

    public AssistManager(BaseStatusBar bar, Context context) {
        mContext = context;
        mBar = bar;
        mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
        mAssistUtils = new AssistUtils(context);

        mContext.getContentResolver().registerContentObserver(
                Settings.Secure.getUriFor(Settings.Secure.ASSISTANT), false,
                mAssistSettingsObserver);
        mAssistSettingsObserver.onChange(false);
        mAssistDisclosure = new AssistDisclosure(context, new Handler());
    }

@@ -123,19 +104,19 @@ public class AssistManager {
    }

    public void startAssist(Bundle args) {
        updateAssistInfo();
        if (mAssistComponent == null) {
        final ComponentName assistComponent = getAssistInfo();
        if (assistComponent == null) {
            return;
        }

        final boolean isService = isAssistantService();
        final boolean isService = assistComponent.equals(getVoiceInteractorComponentName());
        if (!isService || !isVoiceSessionRunning()) {
            showOrb();
            showOrb(assistComponent, isService);
            mView.postDelayed(mHideRunnable, isService
                    ? TIMEOUT_SERVICE
                    : TIMEOUT_ACTIVITY);
        }
        startAssistInternal(args);
        startAssistInternal(args, assistComponent, isService);
    }

    public void hideAssist() {
@@ -161,22 +142,21 @@ public class AssistManager {
        return lp;
    }

    private void showOrb() {
        maybeSwapSearchIcon();
    private void showOrb(@NonNull ComponentName assistComponent, boolean isService) {
        maybeSwapSearchIcon(assistComponent, isService);
        mView.show(true /* show */, true /* animate */);
    }

    private void startAssistInternal(Bundle args) {
        if (mAssistComponent != null) {
            if (isAssistantService()) {
    private void startAssistInternal(Bundle args, @NonNull ComponentName assistComponent,
            boolean isService) {
        if (isService) {
            startVoiceInteractor(args);
        } else {
                startAssistActivity(args);
            }
            startAssistActivity(args, assistComponent);
        }
    }

    private void startAssistActivity(Bundle args) {
    private void startAssistActivity(Bundle args, @NonNull ComponentName assistComponent) {
        if (!mBar.isDeviceProvisioned()) {
            return;
        }
@@ -193,9 +173,7 @@ public class AssistManager {
        if (intent == null) {
            return;
        }
        if (mAssistComponent != null) {
            intent.setComponent(mAssistComponent);
        }
        intent.setComponent(assistComponent);
        intent.putExtras(args);

        if (structureEnabled) {
@@ -243,13 +221,9 @@ public class AssistManager {
        mWindowManager.removeViewImmediate(mView);
    }

    private void maybeSwapSearchIcon() {
        if (mAssistComponent != null) {
            replaceDrawable(mView.getOrb().getLogo(), mAssistComponent, ASSIST_ICON_METADATA_NAME,
                    isAssistantService());
        } else {
            mView.getOrb().getLogo().setImageDrawable(null);
        }
    private void maybeSwapSearchIcon(@NonNull ComponentName assistComponent, boolean isService) {
        replaceDrawable(mView.getOrb().getLogo(), assistComponent, ASSIST_ICON_METADATA_NAME,
                isService);
    }

    public void replaceDrawable(ImageView v, ComponentName component, String name,
@@ -283,28 +257,15 @@ public class AssistManager {
        v.setImageDrawable(null);
    }

    private boolean isAssistantService() {
        return mAssistComponent == null ?
                false : mAssistComponent.equals(getVoiceInteractorComponentName());
    }

    private void updateAssistInfo() {
        mAssistComponent = mAssistUtils.getAssistComponentForUser(UserHandle.USER_CURRENT);
    }

    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
        pw.println("AssistManager state:");
        pw.print("  mAssistComponent="); pw.println(mAssistComponent);
    @Nullable
    private ComponentName getAssistInfo() {
        return mAssistUtils.getAssistComponentForUser(UserHandle.USER_CURRENT);
    }

    public void showDisclosure() {
        mAssistDisclosure.postShow();
    }

    public void onUserSwitched(int newUserId) {
        updateAssistInfo();
    }

    public void onLockscreenShown() {
        mAssistUtils.onLockscreenShown();
    }
+0 −4
Original line number Diff line number Diff line
@@ -2793,9 +2793,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        if (mNextAlarmController != null) {
            mNextAlarmController.dump(fd, pw, args);
        }
        if (mAssistManager != null) {
            mAssistManager.dump(fd, pw, args);
        }
        if (mSecurityController != null) {
            mSecurityController.dump(fd, pw, args);
        }
@@ -3031,7 +3028,6 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
        updateNotifications();
        resetUserSetupObserver();
        setControllerUsers();
        mAssistManager.onUserSwitched(newUserId);
        if (mFullscreenUserSwitcher != null) {
            mFullscreenUserSwitcher.onUserSwitched(newUserId);
        }