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

Commit d5fc3a95 authored by Matthew Fritze's avatar Matthew Fritze
Browse files

Fix bluetooth search result no-op

Bluetooth fragment was manually setting intent information,
which meant that the result didn't fire an intent properly.

This type of regression or mistake will be caught in the fix for
b/77921040.

Change-Id: I49f87f40acbfc3f74ea2e97835f2644d443169e2
Fixes: 80317645
Test: robotests
parent 2e0709b3
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -41,6 +41,8 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment

    private static final String TAG = "AdvancedConnectedDeviceFrag";

    static final String KEY_BLUETOOTH = "bluetooth_settings";

    @Override
    public int getMetricsCategory() {
        return MetricsProto.MetricsEvent.CONNECTION_DEVICE_ADVANCED;
@@ -115,6 +117,9 @@ public class AdvancedConnectedDeviceDashboardFragment extends DashboardFragment
                        keys.add(AndroidBeamPreferenceController.KEY_ANDROID_BEAM_SETTINGS);
                    }

                    // Parent duplicate
                    keys.add(KEY_BLUETOOTH);

                    return keys;
                }

+2 −9
Original line number Diff line number Diff line
@@ -109,17 +109,10 @@ public class BluetoothDashboardFragment extends DashboardFragment {
                    final List<SearchIndexableRaw> result = new ArrayList<>();

                    // Add the activity title
                    SearchIndexableRaw data = new SearchIndexableRaw(context);
                    final SearchIndexableRaw data = new SearchIndexableRaw(context);
                    data.title = context.getString(R.string.bluetooth_settings_title);
                    data.screenTitle = context.getString(R.string.settings_label);
                    data.screenTitle = context.getString(R.string.bluetooth_settings_title);
                    data.keywords = context.getString(R.string.keywords_bluetooth_settings);
                    data.intentTargetPackage = context.getPackageName();
                    data.intentTargetClass = BluetoothDashboardFragment.class.getName();
                    data.intentAction = new SubSettingLauncher(context)
                            .setDestination(ScanningSettings.class.getName())
                            .setSourceMetricsCategory(MetricsProto.MetricsEvent.BLUETOOTH_FRAGMENT)
                            .toIntent()
                            .getAction();
                    data.key = KEY_BLUETOOTH_SCREEN;
                    result.add(data);

+9 −0
Original line number Diff line number Diff line
@@ -67,4 +67,13 @@ public class AdvancedConnectedDeviceDashboardFragmentTest {
    public void testGetCategoryKey_returnCategoryDevice() {
        assertThat(mFragment.getCategoryKey()).isEqualTo(CategoryKey.CATEGORY_DEVICE);
    }

    @Test
    public void testSearchIndexProvider_correctNonIndexables() {
        final List<String> niks =
                AdvancedConnectedDeviceDashboardFragment.SEARCH_INDEX_DATA_PROVIDER
                        .getNonIndexableKeys(RuntimeEnvironment.application);

        assertThat(niks).contains(AdvancedConnectedDeviceDashboardFragment.KEY_BLUETOOTH);
    }
}
 No newline at end of file
+60 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License
 */

package com.android.settings.connecteddevice;

import static com.google.common.truth.Truth.assertThat;

import android.content.Context;
import android.text.TextUtils;

import com.android.settings.R;
import com.android.settings.search.SearchIndexableRaw;
import com.android.settings.testutils.SettingsRobolectricTestRunner;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;

import java.util.List;
import java.util.stream.Collectors;

@RunWith(SettingsRobolectricTestRunner.class)
public class BluetoothDashboardFragmentTest {

    private Context mContext;

    @Before
    public void setUp() {
        mContext = RuntimeEnvironment.application;
    }

    @Test
    public void rawData_includesFragmentResult() {
        final List<SearchIndexableRaw> rawList =
                BluetoothDashboardFragment.SEARCH_INDEX_DATA_PROVIDER.getRawDataToIndex(mContext,
                        true /* enabled */);

        final SearchIndexableRaw fragmentResult = rawList.stream().filter(
                raw -> TextUtils.equals(raw.title,
                        mContext.getString(R.string.bluetooth_settings))).findFirst().get();


        assertThat(fragmentResult).isNotNull();
    }

}