release-request-729bcc05-d3c5-4aa4-9c1d-7a9e6ee59f06-for-git_pi-release-4296206 snap-temp-L10900000096312436
Change-Id: I1854cd33ef7899f21cca4c936d822492d39b39d6
This commit is contained in:
@@ -329,7 +329,11 @@ public class DashboardAdapter extends RecyclerView.Adapter<DashboardAdapter.Dash
|
||||
}
|
||||
|
||||
private void logSuggestions() {
|
||||
for (Tile suggestion : mDashboardData.getSuggestions()) {
|
||||
final List<Tile> suggestions = mDashboardData.getSuggestions();
|
||||
if (suggestions == null) {
|
||||
return;
|
||||
}
|
||||
for (Tile suggestion : suggestions) {
|
||||
final String suggestionId = mSuggestionFeatureProvider.getSuggestionIdentifier(
|
||||
mContext, suggestion);
|
||||
if (!mSuggestionsShownLogged.contains(suggestionId)) {
|
||||
|
||||
@@ -119,7 +119,7 @@ public class BillingCycleSettings extends DataUsageBase implements
|
||||
mDataWarning.setEnabled(false);
|
||||
mEnableDataWarning.setChecked(false);
|
||||
}
|
||||
final long limitBytes = services.mPolicyEditor.getPolicyWarningBytes(mNetworkTemplate);
|
||||
final long limitBytes = services.mPolicyEditor.getPolicyLimitBytes(mNetworkTemplate);
|
||||
if (limitBytes != LIMIT_DISABLED) {
|
||||
mDataLimit.setSummary(Formatter.formatFileSize(getContext(), limitBytes));
|
||||
mDataLimit.setEnabled(true);
|
||||
|
||||
@@ -243,8 +243,7 @@ public class BatteryInfo {
|
||||
info.remainingTimeUs = chargeTime;
|
||||
CharSequence timeString = Utils.formatElapsedTime(context,
|
||||
BatteryUtils.convertUsToMs(chargeTime), false /* withSeconds */);
|
||||
int resId = shortString ? R.string.power_charging_duration_short
|
||||
: R.string.power_charging_duration;
|
||||
int resId = R.string.power_charging_duration;
|
||||
info.remainingLabel = TextUtils.expandTemplate(context.getText(
|
||||
R.string.power_remaining_charging_duration_only), timeString);
|
||||
info.chargeLabel = TextUtils.expandTemplate(context.getText(resId),
|
||||
|
||||
@@ -102,6 +102,8 @@ public class AnomalySummaryPreferenceController {
|
||||
|
||||
mAnomalyPreference.setTitle(title);
|
||||
mAnomalyPreference.setSummary(summary);
|
||||
} else {
|
||||
mAnomalyPreference.setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -137,6 +137,13 @@ public interface SearchFeatureProvider {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return smart ranking timeout in milliseconds.
|
||||
*/
|
||||
default long smartSearchRankingTimeoutMs(Context context) {
|
||||
return 300L;
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepare for search ranking predictions to avoid latency on the first prediction call.
|
||||
*/
|
||||
|
||||
@@ -64,9 +64,6 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder>
|
||||
@VisibleForTesting
|
||||
static final int MSG_RANKING_TIMED_OUT = 1;
|
||||
|
||||
// TODO(b/38197948): Tune this timeout based on latency of static and async rankings. Also, we
|
||||
// should add a gservices flag to control this.
|
||||
private static final long RANKING_TIMEOUT_MS = 300;
|
||||
private final SearchFragment mFragment;
|
||||
private final Context mContext;
|
||||
private final List<SearchResult> mSearchResults;
|
||||
@@ -245,8 +242,9 @@ public class SearchResultsAdapter extends RecyclerView.Adapter<SearchViewHolder>
|
||||
mAsyncRankingState = PENDING_RESULTS;
|
||||
mSearchFeatureProvider.cancelPendingSearchQuery(mContext);
|
||||
final Handler handler = getHandler();
|
||||
final long timeoutMs = mSearchFeatureProvider.smartSearchRankingTimeoutMs(mContext);
|
||||
handler.sendMessageDelayed(
|
||||
handler.obtainMessage(MSG_RANKING_TIMED_OUT), RANKING_TIMEOUT_MS);
|
||||
handler.obtainMessage(MSG_RANKING_TIMED_OUT), timeoutMs);
|
||||
mSearchFeatureProvider.querySearchResults(mContext, query, this);
|
||||
} else {
|
||||
mAsyncRankingState = DISABLED;
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.wifi;
|
||||
|
||||
import android.annotation.Nullable;
|
||||
import android.app.Dialog;
|
||||
import android.content.Context;
|
||||
import android.icu.text.Collator;
|
||||
@@ -40,6 +41,7 @@ import java.util.List;
|
||||
|
||||
/**
|
||||
* UI to manage saved networks/access points.
|
||||
* TODO(b/64806699): convert to {@link DashboardFragment} with {@link PreferenceController}s
|
||||
*/
|
||||
public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
implements Indexable, WifiDialog.WifiDialogListener {
|
||||
@@ -75,6 +77,7 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
private AccessPoint mDlgAccessPoint;
|
||||
private Bundle mAccessPointSavedState;
|
||||
private AccessPoint mSelectedAccessPoint;
|
||||
private Preference mAddNetworkPreference;
|
||||
|
||||
private AccessPointPreference.UserBadgeCache mUserBadgeCache;
|
||||
|
||||
@@ -134,23 +137,38 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
preference.setIcon(null);
|
||||
preferenceScreen.addPreference(preference);
|
||||
}
|
||||
preference.setOrder(i);
|
||||
}
|
||||
|
||||
removeCachedPrefs(preferenceScreen);
|
||||
|
||||
if (mAddNetworkPreference == null) {
|
||||
mAddNetworkPreference = new Preference(getPrefContext());
|
||||
mAddNetworkPreference.setIcon(R.drawable.ic_menu_add_inset);
|
||||
mAddNetworkPreference.setTitle(R.string.wifi_add_network);
|
||||
}
|
||||
mAddNetworkPreference.setOrder(accessPointsSize);
|
||||
preferenceScreen.addPreference(mAddNetworkPreference);
|
||||
|
||||
if(getPreferenceScreen().getPreferenceCount() < 1) {
|
||||
Log.w(TAG, "Saved networks activity loaded, but there are no saved networks!");
|
||||
}
|
||||
}
|
||||
|
||||
private void showDialog(LongPressAccessPointPreference accessPoint, boolean edit) {
|
||||
private void showWifiDialog(@Nullable LongPressAccessPointPreference accessPoint) {
|
||||
if (mDialog != null) {
|
||||
removeDialog(WifiSettings.WIFI_DIALOG_ID);
|
||||
mDialog = null;
|
||||
}
|
||||
|
||||
// Save the access point and edit mode
|
||||
mDlgAccessPoint = accessPoint.getAccessPoint();
|
||||
if (accessPoint != null) {
|
||||
// Save the access point and edit mode
|
||||
mDlgAccessPoint = accessPoint.getAccessPoint();
|
||||
} else {
|
||||
// No access point is selected. Clear saved state.
|
||||
mDlgAccessPoint = null;
|
||||
mAccessPointSavedState = null;
|
||||
}
|
||||
|
||||
showDialog(WifiSettings.WIFI_DIALOG_ID);
|
||||
}
|
||||
@@ -159,15 +177,23 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
public Dialog onCreateDialog(int dialogId) {
|
||||
switch (dialogId) {
|
||||
case WifiSettings.WIFI_DIALOG_ID:
|
||||
if (mDlgAccessPoint == null) { // For re-launch from saved state
|
||||
mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
|
||||
// Reset the saved access point data
|
||||
mAccessPointSavedState = null;
|
||||
if (mDlgAccessPoint == null && mAccessPointSavedState == null) {
|
||||
// Add new network
|
||||
mDialog = WifiDialog.createFullscreen(getActivity(), this, null,
|
||||
WifiConfigUiBase.MODE_CONNECT);
|
||||
} else {
|
||||
// Modify network
|
||||
if (mDlgAccessPoint == null) {
|
||||
// Restore AP from save state
|
||||
mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState);
|
||||
// Reset the saved access point data
|
||||
mAccessPointSavedState = null;
|
||||
}
|
||||
mDialog = WifiDialog.createModal(getActivity(), this, mDlgAccessPoint,
|
||||
WifiConfigUiBase.MODE_VIEW);
|
||||
}
|
||||
mSelectedAccessPoint = mDlgAccessPoint;
|
||||
|
||||
mDialog = WifiDialog.createModal(getActivity(), this, mDlgAccessPoint,
|
||||
WifiConfigUiBase.MODE_VIEW);
|
||||
return mDialog;
|
||||
}
|
||||
return super.onCreateDialog(dialogId);
|
||||
@@ -225,9 +251,12 @@ public class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment
|
||||
@Override
|
||||
public boolean onPreferenceTreeClick(Preference preference) {
|
||||
if (preference instanceof LongPressAccessPointPreference) {
|
||||
showDialog((LongPressAccessPointPreference) preference, false);
|
||||
showWifiDialog((LongPressAccessPointPreference) preference);
|
||||
return true;
|
||||
} else{
|
||||
} else if (preference == mAddNetworkPreference) {
|
||||
showWifiDialog(null);
|
||||
return true;
|
||||
} else {
|
||||
return super.onPreferenceTreeClick(preference);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -318,6 +318,21 @@ public class DashboardAdapterTest {
|
||||
assertThat(mActionCategoryCaptor.getAllValues().toArray()).isEqualTo(expectedActions);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSuggestionsLogs_nullSuggestionsList_shouldNotCrash() {
|
||||
setupSuggestions(makeSuggestions("pkg1", "pkg2", "pkg3", "pkg4", "pkg5"));
|
||||
mDashboardAdapter.onBindSuggestionConditionHeader(mSuggestionHolder, mSuggestionHeaderData);
|
||||
|
||||
// set suggestions to null
|
||||
final DashboardData prevData = mDashboardAdapter.mDashboardData;
|
||||
mDashboardAdapter.mDashboardData = new DashboardData.Builder(prevData)
|
||||
.setSuggestions(null)
|
||||
.build();
|
||||
|
||||
mSuggestionHolder.itemView.callOnClick();
|
||||
// no crash
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSuggestionDismissed_notOnlySuggestion_updateSuggestionOnly() {
|
||||
final DashboardAdapter adapter =
|
||||
|
||||
@@ -123,11 +123,14 @@ public class BatteryInfoTest {
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGetBatteryInfo_pluggedIn_dischargingFalse() {
|
||||
public void testGetBatteryInfo_pluggedInUsingShortString_usesCorrectData() {
|
||||
doReturn(TEST_CHARGE_TIME_REMAINING).when(mBatteryStats).computeChargeTimeRemaining(
|
||||
anyLong());
|
||||
BatteryInfo info = BatteryInfo.getBatteryInfoOld(mContext, mChargingBatteryBroadcast,
|
||||
mBatteryStats, SystemClock.elapsedRealtime() * 1000, true /* shortString */);
|
||||
|
||||
assertThat(info.discharging).isEqualTo(false);
|
||||
assertThat(info.chargeLabel.toString()).isEqualTo("50% - 1m until fully charged");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -106,6 +106,16 @@ public class AnomalySummaryPreferenceControllerTest {
|
||||
assertThat(mPreference.getSummary()).isEqualTo("Keeping device awake");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateAnomalySummaryPreference_emptyAnomaly_preferenceInvisible() {
|
||||
mPreference.setVisible(true);
|
||||
mAnomalyList.clear();
|
||||
|
||||
mAnomalySummaryPreferenceController.updateAnomalySummaryPreference(mAnomalyList);
|
||||
|
||||
assertThat(mPreference.isVisible()).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testUpdateAnomalySummaryPreference_multipleAnomalies_showCorrectSummary() {
|
||||
mAnomalyList.add(createTestAnomaly());
|
||||
|
||||
@@ -83,6 +83,8 @@ public class SearchResultsAdapterTest {
|
||||
mLoaderClassName = DatabaseResultLoader.class.getName();
|
||||
when(mFragment.getContext()).thenReturn(mMockContext);
|
||||
when(mMockContext.getApplicationContext()).thenReturn(mContext);
|
||||
when(mSearchFeatureProvider.smartSearchRankingTimeoutMs(any(Context.class)))
|
||||
.thenReturn(300L);
|
||||
mAdapter = new SearchResultsAdapter(mFragment, mSearchFeatureProvider);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
/*
|
||||
* Copyright (C) 2017 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.wifi;
|
||||
|
||||
import static android.support.test.espresso.Espresso.onView;
|
||||
import static android.support.test.espresso.action.ViewActions.click;
|
||||
import static android.support.test.espresso.assertion.ViewAssertions.matches;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed;
|
||||
import static android.support.test.espresso.matcher.ViewMatchers.withText;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.test.InstrumentationRegistry;
|
||||
import android.support.test.rule.ActivityTestRule;
|
||||
import android.support.test.runner.AndroidJUnit4;
|
||||
|
||||
import com.android.settings.Settings;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Rule;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
|
||||
@RunWith(AndroidJUnit4.class)
|
||||
public class SavedNetworkSettingsTest {
|
||||
|
||||
// Keys used to lookup resources by name (see the resourceId helper method).
|
||||
private static final String STRING = "string";
|
||||
private static final String WIFI_ADD_NETWORK = "wifi_add_network";
|
||||
private static final String WIFI_NETWORK_LABEL = "wifi_ssid";
|
||||
|
||||
private Context mContext;
|
||||
|
||||
@Rule
|
||||
public ActivityTestRule<Settings.SavedAccessPointsSettingsActivity> mActivityRule =
|
||||
new ActivityTestRule<>(Settings.SavedAccessPointsSettingsActivity.class, true);
|
||||
|
||||
private int resourceId(String type, String name) {
|
||||
return mContext.getResources().getIdentifier(name, type, mContext.getPackageName());
|
||||
}
|
||||
|
||||
@Before
|
||||
public void setUp() {
|
||||
mContext = InstrumentationRegistry.getTargetContext();
|
||||
}
|
||||
|
||||
private void launchSavedNetworksSettings() {
|
||||
Intent intent = new Intent()
|
||||
.setClassName(mContext.getPackageName(),
|
||||
Settings.SavedAccessPointsSettingsActivity.class.getName())
|
||||
.setPackage(mContext.getPackageName());
|
||||
mActivityRule.launchActivity(intent);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void launchSavedNetworkSettings_shouldHaveAddNetworkField() {
|
||||
launchSavedNetworksSettings();
|
||||
onView(withText(resourceId(STRING, WIFI_ADD_NETWORK))).check(matches(isDisplayed()))
|
||||
.perform(click());
|
||||
onView(withText(resourceId(STRING, WIFI_NETWORK_LABEL))).check(matches(isDisplayed()));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user