From d657e79659483e23458c79bc7a48a9dc6f8e8251 Mon Sep 17 00:00:00 2001 From: utzcoz Date: Mon, 22 Jun 2020 22:33:37 +0800 Subject: [PATCH] Extract methods to generate search intent for StartMenuController Test: ./gradlew test Signed-off-by: utzcoz --- .../farmerbb/taskbar/ui/StartMenuController.java | 60 +++++++++++++--------- .../taskbar/ui/StartMenuControllerTest.java | 30 +++++++++++ 2 files changed, 65 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java b/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java index b6e567e0..8d22d80c 100644 --- a/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java +++ b/app/src/main/java/com/farmerbb/taskbar/ui/StartMenuController.java @@ -262,32 +262,11 @@ public class StartMenuController extends UIController { U.sendBroadcast(context, ACTION_HIDE_START_MENU); } - Intent intent; - - if(Patterns.WEB_URL.matcher(query).matches()) { - intent = new Intent(Intent.ACTION_VIEW); - intent.setData(Uri.parse(URLUtil.guessUrl(query))); - } else { - intent = new Intent(Intent.ACTION_WEB_SEARCH); - intent.putExtra(SearchManager.QUERY, query); - } - - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - - if(intent.resolveActivity(context.getPackageManager()) != null) + Intent intent = generateQueryWebSearchIntent(query); + if (intent.resolveActivity(context.getPackageManager()) != null) { context.startActivity(intent); - else { - Uri uri = new Uri.Builder() - .scheme("https") - .authority("www.google.com") - .path("search") - .appendQueryParameter("q", query) - .build(); - - intent = new Intent(Intent.ACTION_VIEW); - intent.setData(uri); - intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - + } else { + intent = generateQueryGoogleIntent(query); try { context.startActivity(intent); } catch (ActivityNotFoundException e) { /* Gracefully fail */ } @@ -434,6 +413,37 @@ public class StartMenuController extends UIController { } } + @VisibleForTesting + Intent generateQueryWebSearchIntent(String query) { + Intent intent; + if(Patterns.WEB_URL.matcher(query).matches()) { + intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse(URLUtil.guessUrl(query))); + } else { + intent = new Intent(Intent.ACTION_WEB_SEARCH); + intent.putExtra(SearchManager.QUERY, query); + } + + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + return intent; + } + + @VisibleForTesting + Intent generateQueryGoogleIntent(String query) { + Intent intent; + Uri uri = new Uri.Builder() + .scheme("https") + .authority("www.google.com") + .path("search") + .appendQueryParameter("q", query) + .build(); + + intent = new Intent(Intent.ACTION_VIEW); + intent.setData(uri); + intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + return intent; + } + private void refreshApps(boolean firstDraw) { refreshApps(null, firstDraw); } diff --git a/app/src/test/java/com/farmerbb/taskbar/ui/StartMenuControllerTest.java b/app/src/test/java/com/farmerbb/taskbar/ui/StartMenuControllerTest.java index 58481b47..e12f2202 100644 --- a/app/src/test/java/com/farmerbb/taskbar/ui/StartMenuControllerTest.java +++ b/app/src/test/java/com/farmerbb/taskbar/ui/StartMenuControllerTest.java @@ -1,7 +1,10 @@ package com.farmerbb.taskbar.ui; +import android.app.SearchManager; import android.content.Context; +import android.content.Intent; import android.content.SharedPreferences; +import android.net.Uri; import android.view.Gravity; import androidx.test.core.app.ApplicationProvider; @@ -39,6 +42,7 @@ import static org.junit.Assert.assertTrue; @PrepareForTest(value = {U.class, TaskbarPosition.class}) public class StartMenuControllerTest { private static final String UNSUPPORTED = "unsupported"; + private static final String NON_URL_QUERY = "test-query"; @Rule public PowerMockRule rule = new PowerMockRule(); @@ -153,4 +157,30 @@ public class StartMenuControllerTest { uiController.getStartMenuGravity(POSITION_TOP_VERTICAL_RIGHT) ); } + + @Test + public void testGenerateQueryWebSearchIntent() { + Intent intent = uiController.generateQueryWebSearchIntent(NON_URL_QUERY); + assertEquals(Intent.ACTION_WEB_SEARCH, intent.getAction()); + assertEquals(NON_URL_QUERY, intent.getStringExtra(SearchManager.QUERY)); + assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK, intent.getFlags()); + + String urlQuery = "https://github.com/farmerbb/Taskbar"; + intent = uiController.generateQueryWebSearchIntent(urlQuery); + assertEquals(Intent.ACTION_VIEW, intent.getAction()); + assertEquals(Uri.parse(urlQuery), intent.getData()); + assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK, intent.getFlags()); + } + + @Test + public void testGenerateQueryGoogleIntent() { + Intent intent = uiController.generateQueryGoogleIntent(NON_URL_QUERY); + assertEquals(Intent.ACTION_VIEW, intent.getAction()); + assertEquals(Intent.FLAG_ACTIVITY_NEW_TASK, intent.getFlags()); + Uri uri = intent.getData(); + assertEquals("https", uri.getScheme()); + assertEquals("www.google.com", uri.getAuthority()); + assertEquals("/search", uri.getPath()); + assertEquals(NON_URL_QUERY, uri.getQueryParameter("q")); + } } -- 2.11.0