Loading src/com/android/settings/SettingsActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings; import android.app.ActionBar; import android.app.ActivityManager; import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; Loading Loading @@ -286,7 +287,7 @@ public class SettingsActivity extends SettingsBaseActivity final Toolbar toolbar = findViewById(R.id.search_action_bar); setActionBar(toolbar); FeatureFactory.getFactory(this).getSearchFeatureProvider() .initSearchToolbar(this, toolbar); .initSearchToolbar(this, toolbar, SettingsEnums.SETTINGS_HOMEPAGE); } ActionBar actionBar = getActionBar(); Loading src/com/android/settings/homepage/SettingsHomepageActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.homepage; import android.app.settings.SettingsEnums; import android.content.Intent; import android.os.Bundle; import android.util.FeatureFlagUtils; Loading Loading @@ -55,7 +56,7 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { final Toolbar toolbar = findViewById(R.id.search_action_bar); FeatureFactory.getFactory(this).getSearchFeatureProvider() .initSearchToolbar(this /* activity */, toolbar); .initSearchToolbar(this /* activity */, toolbar, SettingsEnums.SETTINGS_HOMEPAGE); final ImageView avatarView = findViewById(R.id.account_avatar); final AvatarViewMixin avatarViewMixin = new AvatarViewMixin(this, avatarView); Loading src/com/android/settings/search/SearchFeatureProvider.java +5 −6 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.provider.Settings; import android.view.View; import android.view.ViewGroup; import android.widget.Toolbar; Loading @@ -40,7 +39,6 @@ import com.android.settingslib.search.SearchIndexableResources; */ public interface SearchFeatureProvider { Intent SEARCH_UI_INTENT = new Intent(Settings.ACTION_APP_SEARCH_SETTINGS); int REQUEST_CODE = 0; /** Loading @@ -64,7 +62,7 @@ public interface SearchFeatureProvider { /** * Initializes the search toolbar. */ default void initSearchToolbar(Activity activity, Toolbar toolbar) { default void initSearchToolbar(Activity activity, Toolbar toolbar, int pageId) { if (activity == null || toolbar == null) { return; } Loading @@ -87,9 +85,8 @@ public interface SearchFeatureProvider { navView.setBackground(null); toolbar.setOnClickListener(tb -> { final Intent intent = SEARCH_UI_INTENT; intent.setPackage(getSettingsIntelligencePkgName(activity)); final Context context = activity.getApplicationContext(); final Intent intent = buildSearchIntent(context, pageId); if (activity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) { Loading @@ -97,10 +94,12 @@ public interface SearchFeatureProvider { } FeatureFactory.getFactory(context).getSlicesFeatureProvider() .indexSliceDataAsync(activity.getApplicationContext()); .indexSliceDataAsync(context); FeatureFactory.getFactory(context).getMetricsFeatureProvider() .action(context, SettingsEnums.ACTION_SEARCH_RESULTS); activity.startActivityForResult(intent, REQUEST_CODE); }); } Intent buildSearchIntent(Context context, int pageId); } src/com/android/settings/search/SearchFeatureProviderImpl.java +18 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.settings.search; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.provider.Settings; import android.text.TextUtils; import com.android.settingslib.search.SearchIndexableResources; Loading Loading @@ -59,7 +62,22 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider { return mSearchIndexableResources; } @Override public Intent buildSearchIntent(Context context, int pageId) { return new Intent(Settings.ACTION_APP_SEARCH_SETTINGS) .setPackage(getSettingsIntelligencePkgName(context)) .putExtra(Intent.EXTRA_REFERRER, buildReferrer(context, pageId)); } protected boolean isSignatureWhitelisted(Context context, String callerPackage) { return false; } private static Uri buildReferrer(Context context, int pageId) { return new Uri.Builder() .scheme("android-app") .authority(context.getPackageName()) .path(String.valueOf(pageId)) .build(); } } src/com/android/settings/search/actionbar/SearchMenuController.java +14 −10 Original line number Diff line number Diff line Loading @@ -30,11 +30,10 @@ import androidx.fragment.app.Fragment; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.SearchFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.ObservableFragment; import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment; import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu; public class SearchMenuController implements LifecycleObserver, OnCreateOptionsMenu { Loading @@ -42,17 +41,21 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM public static final String NEED_SEARCH_ICON_IN_ACTION_BAR = "need_search_icon_in_action_bar"; private final Fragment mHost; private final int mPageId; public static void init(@NonNull ObservablePreferenceFragment host) { host.getSettingsLifecycle().addObserver(new SearchMenuController(host)); public static void init(@NonNull InstrumentedPreferenceFragment host) { host.getSettingsLifecycle().addObserver( new SearchMenuController(host, host.getMetricsCategory())); } public static void init(@NonNull ObservableFragment host) { host.getSettingsLifecycle().addObserver(new SearchMenuController(host)); public static void init(@NonNull InstrumentedFragment host) { host.getSettingsLifecycle().addObserver( new SearchMenuController(host, host.getMetricsCategory())); } private SearchMenuController(@NonNull Fragment host) { private SearchMenuController(@NonNull Fragment host, int pageId) { mHost = host; mPageId = pageId; } @Override Loading @@ -79,8 +82,9 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); searchItem.setOnMenuItemClickListener(target -> { final Intent intent = SearchFeatureProvider.SEARCH_UI_INTENT; intent.setPackage(SettingsIntelligencePkgName); final Intent intent = FeatureFactory.getFactory(context) .getSearchFeatureProvider() .buildSearchIntent(context, mPageId); if (context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) { Loading Loading
src/com/android/settings/SettingsActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.settings; import android.app.ActionBar; import android.app.ActivityManager; import android.app.settings.SettingsEnums; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.Context; Loading Loading @@ -286,7 +287,7 @@ public class SettingsActivity extends SettingsBaseActivity final Toolbar toolbar = findViewById(R.id.search_action_bar); setActionBar(toolbar); FeatureFactory.getFactory(this).getSearchFeatureProvider() .initSearchToolbar(this, toolbar); .initSearchToolbar(this, toolbar, SettingsEnums.SETTINGS_HOMEPAGE); } ActionBar actionBar = getActionBar(); Loading
src/com/android/settings/homepage/SettingsHomepageActivity.java +2 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settings.homepage; import android.app.settings.SettingsEnums; import android.content.Intent; import android.os.Bundle; import android.util.FeatureFlagUtils; Loading Loading @@ -55,7 +56,7 @@ public class SettingsHomepageActivity extends SettingsBaseActivity { final Toolbar toolbar = findViewById(R.id.search_action_bar); FeatureFactory.getFactory(this).getSearchFeatureProvider() .initSearchToolbar(this /* activity */, toolbar); .initSearchToolbar(this /* activity */, toolbar, SettingsEnums.SETTINGS_HOMEPAGE); final ImageView avatarView = findViewById(R.id.account_avatar); final AvatarViewMixin avatarViewMixin = new AvatarViewMixin(this, avatarView); Loading
src/com/android/settings/search/SearchFeatureProvider.java +5 −6 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.provider.Settings; import android.view.View; import android.view.ViewGroup; import android.widget.Toolbar; Loading @@ -40,7 +39,6 @@ import com.android.settingslib.search.SearchIndexableResources; */ public interface SearchFeatureProvider { Intent SEARCH_UI_INTENT = new Intent(Settings.ACTION_APP_SEARCH_SETTINGS); int REQUEST_CODE = 0; /** Loading @@ -64,7 +62,7 @@ public interface SearchFeatureProvider { /** * Initializes the search toolbar. */ default void initSearchToolbar(Activity activity, Toolbar toolbar) { default void initSearchToolbar(Activity activity, Toolbar toolbar, int pageId) { if (activity == null || toolbar == null) { return; } Loading @@ -87,9 +85,8 @@ public interface SearchFeatureProvider { navView.setBackground(null); toolbar.setOnClickListener(tb -> { final Intent intent = SEARCH_UI_INTENT; intent.setPackage(getSettingsIntelligencePkgName(activity)); final Context context = activity.getApplicationContext(); final Intent intent = buildSearchIntent(context, pageId); if (activity.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) { Loading @@ -97,10 +94,12 @@ public interface SearchFeatureProvider { } FeatureFactory.getFactory(context).getSlicesFeatureProvider() .indexSliceDataAsync(activity.getApplicationContext()); .indexSliceDataAsync(context); FeatureFactory.getFactory(context).getMetricsFeatureProvider() .action(context, SettingsEnums.ACTION_SEARCH_RESULTS); activity.startActivityForResult(intent, REQUEST_CODE); }); } Intent buildSearchIntent(Context context, int pageId); }
src/com/android/settings/search/SearchFeatureProviderImpl.java +18 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,9 @@ package com.android.settings.search; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.provider.Settings; import android.text.TextUtils; import com.android.settingslib.search.SearchIndexableResources; Loading Loading @@ -59,7 +62,22 @@ public class SearchFeatureProviderImpl implements SearchFeatureProvider { return mSearchIndexableResources; } @Override public Intent buildSearchIntent(Context context, int pageId) { return new Intent(Settings.ACTION_APP_SEARCH_SETTINGS) .setPackage(getSettingsIntelligencePkgName(context)) .putExtra(Intent.EXTRA_REFERRER, buildReferrer(context, pageId)); } protected boolean isSignatureWhitelisted(Context context, String callerPackage) { return false; } private static Uri buildReferrer(Context context, int pageId) { return new Uri.Builder() .scheme("android-app") .authority(context.getPackageName()) .path(String.valueOf(pageId)) .build(); } }
src/com/android/settings/search/actionbar/SearchMenuController.java +14 −10 Original line number Diff line number Diff line Loading @@ -30,11 +30,10 @@ import androidx.fragment.app.Fragment; import com.android.settings.R; import com.android.settings.Utils; import com.android.settings.core.InstrumentedFragment; import com.android.settings.core.InstrumentedPreferenceFragment; import com.android.settings.overlay.FeatureFactory; import com.android.settings.search.SearchFeatureProvider; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.ObservableFragment; import com.android.settingslib.core.lifecycle.ObservablePreferenceFragment; import com.android.settingslib.core.lifecycle.events.OnCreateOptionsMenu; public class SearchMenuController implements LifecycleObserver, OnCreateOptionsMenu { Loading @@ -42,17 +41,21 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM public static final String NEED_SEARCH_ICON_IN_ACTION_BAR = "need_search_icon_in_action_bar"; private final Fragment mHost; private final int mPageId; public static void init(@NonNull ObservablePreferenceFragment host) { host.getSettingsLifecycle().addObserver(new SearchMenuController(host)); public static void init(@NonNull InstrumentedPreferenceFragment host) { host.getSettingsLifecycle().addObserver( new SearchMenuController(host, host.getMetricsCategory())); } public static void init(@NonNull ObservableFragment host) { host.getSettingsLifecycle().addObserver(new SearchMenuController(host)); public static void init(@NonNull InstrumentedFragment host) { host.getSettingsLifecycle().addObserver( new SearchMenuController(host, host.getMetricsCategory())); } private SearchMenuController(@NonNull Fragment host) { private SearchMenuController(@NonNull Fragment host, int pageId) { mHost = host; mPageId = pageId; } @Override Loading @@ -79,8 +82,9 @@ public class SearchMenuController implements LifecycleObserver, OnCreateOptionsM searchItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); searchItem.setOnMenuItemClickListener(target -> { final Intent intent = SearchFeatureProvider.SEARCH_UI_INTENT; intent.setPackage(SettingsIntelligencePkgName); final Intent intent = FeatureFactory.getFactory(context) .getSearchFeatureProvider() .buildSearchIntent(context, mPageId); if (context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) { Loading