OSDN Git Service

Extract method to initialize recents serach interval in TaskbarController
authorutzcoz <utzcoz@outlook.com>
Fri, 15 May 2020 06:45:44 +0000 (14:45 +0800)
committerutzcoz <utzcoz@outlook.com>
Fri, 15 May 2020 06:45:44 +0000 (14:45 +0800)
Test: ./gradlew test

Signed-off-by: utzcoz <utzcoz@outlook.com>
app/src/main/java/com/farmerbb/taskbar/ui/TaskbarController.java
app/src/test/java/com/farmerbb/taskbar/ui/TaskbarControllerTest.java

index 34fc5aa..9e8e00a 100644 (file)
@@ -276,21 +276,7 @@ public class TaskbarController extends UIController {
 
         sortOrder = pref.getString(PREF_SORT_ORDER, "false");
         runningAppsOnly = pref.getString(PREF_RECENTS_AMOUNT, "past_day").equals("running_apps_only");
-
-        switch(pref.getString(PREF_RECENTS_AMOUNT, "past_day")) {
-            case "past_day":
-                searchInterval = System.currentTimeMillis() - AlarmManager.INTERVAL_DAY;
-                break;
-            case "app_start":
-                long appStartTime = pref.getLong(PREF_TIME_OF_SERVICE_START, System.currentTimeMillis());
-                long deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime();
-
-                searchInterval = deviceStartTime > appStartTime ? deviceStartTime : appStartTime;
-                break;
-            case "show_all":
-                searchInterval = 0;
-                break;
-        }
+        searchInterval = getSearchInterval(pref);
 
         U.sendBroadcast(context, ACTION_HIDE_START_MENU);
         U.sendBroadcast(context, ACTION_UPDATE_HOME_SCREEN_MARGINS);
@@ -611,6 +597,25 @@ public class TaskbarController extends UIController {
     }
 
     @VisibleForTesting
+    public long getSearchInterval(SharedPreferences pref) {
+        long searchInterval = -1;
+        switch(pref.getString(PREF_RECENTS_AMOUNT, "past_day")) {
+            case "past_day":
+                searchInterval = System.currentTimeMillis() - AlarmManager.INTERVAL_DAY;
+                break;
+            case "app_start":
+                long appStartTime = pref.getLong(PREF_TIME_OF_SERVICE_START, System.currentTimeMillis());
+                long deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime();
+                searchInterval = Math.max(deviceStartTime, appStartTime);
+                break;
+            case "show_all":
+                searchInterval = 0;
+                break;
+        }
+        return searchInterval;
+    }
+
+    @VisibleForTesting
     public void drawSysTray(Context context, int layoutId, LinearLayout layout) {
         sysTrayLayout = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.tb_system_tray, null);
 
index 521cd7f..052f363 100644 (file)
@@ -1,8 +1,10 @@
 package com.farmerbb.taskbar.ui;
 
+import android.app.AlarmManager;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.graphics.Color;
+import android.os.SystemClock;
 import android.view.Gravity;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -41,7 +43,9 @@ import static com.farmerbb.taskbar.util.Constants.POSITION_TOP_VERTICAL_RIGHT;
 import static com.farmerbb.taskbar.util.Constants.PREF_BUTTON_BACK;
 import static com.farmerbb.taskbar.util.Constants.PREF_BUTTON_HOME;
 import static com.farmerbb.taskbar.util.Constants.PREF_BUTTON_RECENTS;
+import static com.farmerbb.taskbar.util.Constants.PREF_RECENTS_AMOUNT;
 import static com.farmerbb.taskbar.util.Constants.PREF_START_BUTTON_IMAGE;
+import static com.farmerbb.taskbar.util.Constants.PREF_TIME_OF_SERVICE_START;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotNull;
@@ -219,6 +223,40 @@ public class TaskbarControllerTest {
     }
 
     @Test
+    public void testGetSearchInterval() {
+        long permitTimeDeltaMillis = 100;
+        prefs.edit().remove(PREF_RECENTS_AMOUNT).apply();
+        long searchInterval = uiController.getSearchInterval(prefs);
+        long lastDayTime = System.currentTimeMillis() - AlarmManager.INTERVAL_DAY;
+        assertEquals(lastDayTime, searchInterval, permitTimeDeltaMillis);
+
+        prefs.edit().putString(PREF_RECENTS_AMOUNT, "app_start").apply();
+        long deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime();
+        // The service start time is larger than device start time
+        long appStartTime = deviceStartTime * 2;
+        prefs.edit().putLong(PREF_TIME_OF_SERVICE_START, appStartTime).apply();
+        searchInterval = uiController.getSearchInterval(prefs);
+        assertEquals(appStartTime, searchInterval);
+
+        // The service start time is smaller than device start time
+        prefs.edit().putLong(PREF_TIME_OF_SERVICE_START, deviceStartTime - 100).apply();
+        searchInterval = uiController.getSearchInterval(prefs);
+        deviceStartTime = System.currentTimeMillis() - SystemClock.elapsedRealtime();
+        assertEquals(deviceStartTime, searchInterval, permitTimeDeltaMillis);
+        prefs.edit().remove(PREF_TIME_OF_SERVICE_START).apply();
+
+        prefs.edit().putString(PREF_RECENTS_AMOUNT, "show_all").apply();
+        searchInterval = uiController.getSearchInterval(prefs);
+        assertEquals(0, searchInterval);
+
+        prefs.edit().putString(PREF_RECENTS_AMOUNT, "unsupported").apply();
+        searchInterval = uiController.getSearchInterval(prefs);
+        assertEquals(-1, searchInterval);
+
+        prefs.edit().remove(PREF_RECENTS_AMOUNT).apply();
+    }
+
+    @Test
     public void testDrawSysTrayOnClickListener() {
         PowerMockito.spy(U.class);
         BooleanAnswer isLibraryAnswer = new BooleanAnswer();