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

Commit 9a266b3e authored by Darren Kuo's avatar Darren Kuo
Browse files

Write default ContextualSearch package to secure setting.

Change-Id: Ia00f406648bd7ce7d90bd495d911d16a88d42c1f
parent 7a973363
Loading
Loading
Loading
Loading
+10 −0
Original line number Original line Diff line number Diff line
@@ -12704,6 +12704,16 @@ public final class Settings {
         * @hide
         * @hide
         */
         */
        public static final String CHARGE_OPTIMIZATION_MODE = "charge_optimization_mode";
        public static final String CHARGE_OPTIMIZATION_MODE = "charge_optimization_mode";
        /**
         * String property which contains the package name of the contextual
         * search provider supplied by individual OEM's
         * R.string.config_defaultContextualSearchPackageName.
         *
         * @hide
         */
        @Readable
        public static final String CONTEXTUAL_SEARCH_PACKAGE = "contextual_search_package";
    }
    }
    /**
    /**
+1 −0
Original line number Original line Diff line number Diff line
@@ -679,6 +679,7 @@ public class SettingsBackupTest {
                 Settings.Secure.COMPLETED_CATEGORY_PREFIX,
                 Settings.Secure.COMPLETED_CATEGORY_PREFIX,
                 Settings.Secure.CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS,
                 Settings.Secure.CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS,
                 Settings.Secure.CONTENT_CAPTURE_ENABLED,
                 Settings.Secure.CONTENT_CAPTURE_ENABLED,
                 Settings.Secure.CONTEXTUAL_SEARCH_PACKAGE,
                 Settings.Secure.DEFAULT_INPUT_METHOD,
                 Settings.Secure.DEFAULT_INPUT_METHOD,
                 Settings.Secure.DEFAULT_DEVICE_INPUT_METHOD,
                 Settings.Secure.DEFAULT_DEVICE_INPUT_METHOD,
                 Settings.Secure.DEVICE_PAIRED,
                 Settings.Secure.DEVICE_PAIRED,
+22 −2
Original line number Original line Diff line number Diff line
@@ -67,6 +67,7 @@ import android.os.ResultReceiver;
import android.os.ServiceManager;
import android.os.ServiceManager;
import android.os.ShellCallback;
import android.os.ShellCallback;
import android.os.SystemClock;
import android.os.SystemClock;
import android.provider.Settings;
import android.util.Log;
import android.util.Log;
import android.util.Slog;
import android.util.Slog;
import android.view.IWindowManager;
import android.view.IWindowManager;
@@ -168,6 +169,8 @@ public class ContextualSearchManagerService extends SystemService {
                IWindowManager.Stub.asInterface(ServiceManager.getService(Context.WINDOW_SERVICE)),
                IWindowManager.Stub.asInterface(ServiceManager.getService(Context.WINDOW_SERVICE)),
                mContext.getSystemService(AppOpsManager.class),
                mContext.getSystemService(AppOpsManager.class),
                mAssistDataCallbacks, mLock, OP_ASSIST_STRUCTURE, OP_ASSIST_SCREENSHOT);
                mAssistDataCallbacks, mLock, OP_ASSIST_STRUCTURE, OP_ASSIST_SCREENSHOT);

        updateSecureSetting();
    }
    }


    @Override
    @Override
@@ -175,6 +178,22 @@ public class ContextualSearchManagerService extends SystemService {
        publishBinderService(CONTEXTUAL_SEARCH_SERVICE, new ContextualSearchManagerStub());
        publishBinderService(CONTEXTUAL_SEARCH_SERVICE, new ContextualSearchManagerStub());
    }
    }


    private void updateSecureSetting() {
        // Write default package to secure setting every time there is a change. If OEM didn't
        // supply a new value in their config, then we would write empty string.
        Settings.Secure.putString(
            mContext.getContentResolver(),
            Settings.Secure.CONTEXTUAL_SEARCH_PACKAGE,
            getContextualSearchPackageName());
    }

    private String getContextualSearchPackageName() {
      synchronized (this) {
         return mTemporaryPackage != null ? mTemporaryPackage : mContext
                .getResources().getString(R.string.config_defaultContextualSearchPackageName);
      }
    }

    void resetTemporaryPackage() {
    void resetTemporaryPackage() {
        synchronized (this) {
        synchronized (this) {
            enforceOverridingPermission("resetTemporaryPackage");
            enforceOverridingPermission("resetTemporaryPackage");
@@ -184,6 +203,7 @@ public class ContextualSearchManagerService extends SystemService {
            }
            }
            if (DEBUG_USER) Log.d(TAG, "mTemporaryPackage reset.");
            if (DEBUG_USER) Log.d(TAG, "mTemporaryPackage reset.");
            mTemporaryPackage = null;
            mTemporaryPackage = null;
            updateSecureSetting();
        }
        }
    }
    }


@@ -212,6 +232,7 @@ public class ContextualSearchManagerService extends SystemService {
                mTemporaryHandler.removeMessages(MSG_RESET_TEMPORARY_PACKAGE);
                mTemporaryHandler.removeMessages(MSG_RESET_TEMPORARY_PACKAGE);
            }
            }
            mTemporaryPackage = temporaryPackage;
            mTemporaryPackage = temporaryPackage;
            updateSecureSetting();
            mTemporaryHandler.sendEmptyMessageDelayed(MSG_RESET_TEMPORARY_PACKAGE, durationMs);
            mTemporaryHandler.sendEmptyMessageDelayed(MSG_RESET_TEMPORARY_PACKAGE, durationMs);
            if (DEBUG_USER) Log.d(TAG, "mTemporaryPackage set to " + mTemporaryPackage);
            if (DEBUG_USER) Log.d(TAG, "mTemporaryPackage set to " + mTemporaryPackage);
        }
        }
@@ -243,8 +264,7 @@ public class ContextualSearchManagerService extends SystemService {
    private Intent getResolvedLaunchIntent() {
    private Intent getResolvedLaunchIntent() {
        synchronized (this) {
        synchronized (this) {
            // If mTemporaryPackage is not null, use it to get the ContextualSearch intent.
            // If mTemporaryPackage is not null, use it to get the ContextualSearch intent.
            String csPkgName = mTemporaryPackage != null ? mTemporaryPackage : mContext
            String csPkgName = getContextualSearchPackageName();
                    .getResources().getString(R.string.config_defaultContextualSearchPackageName);
            if (csPkgName.isEmpty()) {
            if (csPkgName.isEmpty()) {
                // Return null if csPackageName is not specified.
                // Return null if csPackageName is not specified.
                return null;
                return null;