mirror of https://codeberg.org/gitnex/GitNex.git
Fix browser opening; update some tests (#1203)
Closes https://codeberg.org/gitnex/GitNex/issues/1200 Co-authored-by: qwerty287 <ndev@web.de> Co-authored-by: M M Arif <mmarif@swatian.com> Reviewed-on: https://codeberg.org/gitnex/GitNex/pulls/1203 Reviewed-by: M M Arif <mmarif@noreply.codeberg.org> Co-authored-by: qwerty287 <qwerty287@noreply.codeberg.org> Co-committed-by: qwerty287 <qwerty287@noreply.codeberg.org>
This commit is contained in:
parent
beac76e6c0
commit
9d6ef9e079
|
@ -201,4 +201,12 @@
|
||||||
</activity>
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
|
|
||||||
|
<queries>
|
||||||
|
<intent>
|
||||||
|
<action android:name="android.intent.action.VIEW"/>
|
||||||
|
<category android:name="android.intent.category.BROWSABLE"/>
|
||||||
|
<data android:scheme="https" />
|
||||||
|
</intent>
|
||||||
|
</queries>
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -2,8 +2,10 @@ package org.mian.gitnex.helpers;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.*;
|
import android.content.*;
|
||||||
|
import android.content.pm.ActivityInfo;
|
||||||
import android.content.pm.PackageInfo;
|
import android.content.pm.PackageInfo;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
|
import android.content.pm.ResolveInfo;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
import android.graphics.Typeface;
|
import android.graphics.Typeface;
|
||||||
|
@ -11,6 +13,7 @@ import android.net.Uri;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.util.Base64;
|
import android.util.Base64;
|
||||||
import android.util.DisplayMetrics;
|
import android.util.DisplayMetrics;
|
||||||
|
import android.util.Log;
|
||||||
import android.util.TypedValue;
|
import android.util.TypedValue;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import androidx.annotation.ColorInt;
|
import androidx.annotation.ColorInt;
|
||||||
|
@ -370,19 +373,66 @@ public class AppUtil {
|
||||||
ctx.startActivity(Intent.createChooser(sharingIntent, url));
|
ctx.startActivity(Intent.createChooser(sharingIntent, url));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static Intent wrapBrowserIntent(Context context, Intent intent) {
|
||||||
|
|
||||||
|
final PackageManager pm = context.getPackageManager();
|
||||||
|
final List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(intent).setData(intent.getData().buildUpon().authority("example.com").scheme("https").build()), PackageManager.MATCH_ALL);
|
||||||
|
final ArrayList<Intent> chooserIntents = new ArrayList<>();
|
||||||
|
final String ourPackageName = context.getPackageName();
|
||||||
|
|
||||||
|
Collections.sort(activities, new ResolveInfo.DisplayNameComparator(pm));
|
||||||
|
|
||||||
|
for(ResolveInfo resInfo : activities) {
|
||||||
|
ActivityInfo info = resInfo.activityInfo;
|
||||||
|
if(!info.enabled || !info.exported) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if(info.packageName.equals(ourPackageName)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Intent targetIntent = new Intent(intent);
|
||||||
|
targetIntent.setPackage(info.packageName);
|
||||||
|
targetIntent.setDataAndType(intent.getData(), intent.getType());
|
||||||
|
chooserIntents.add(targetIntent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(chooserIntents.isEmpty()) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
final Intent lastIntent = chooserIntents.remove(chooserIntents.size() - 1);
|
||||||
|
if(chooserIntents.isEmpty()) {
|
||||||
|
return lastIntent;
|
||||||
|
}
|
||||||
|
|
||||||
|
Intent chooserIntent = Intent.createChooser(lastIntent, null);
|
||||||
|
String extraName = Intent.EXTRA_ALTERNATE_INTENTS;
|
||||||
|
chooserIntent.putExtra(extraName, chooserIntents.toArray(new Intent[0]));
|
||||||
|
return chooserIntent;
|
||||||
|
}
|
||||||
|
|
||||||
public static void openUrlInBrowser(Context context, String url) {
|
public static void openUrlInBrowser(Context context, String url) {
|
||||||
|
|
||||||
TinyDB tinyDB = TinyDB.getInstance(context);
|
TinyDB tinyDB = TinyDB.getInstance(context);
|
||||||
|
|
||||||
|
Intent i;
|
||||||
|
if(tinyDB.getBoolean("useCustomTabs")) {
|
||||||
|
i = new CustomTabsIntent.Builder().setDefaultColorSchemeParams(
|
||||||
|
new CustomTabColorSchemeParams.Builder().setToolbarColor(getColorFromAttribute(context, R.attr.primaryBackgroundColor)).setNavigationBarColor(getColorFromAttribute(context, R.attr.primaryBackgroundColor))
|
||||||
|
.setSecondaryToolbarColor(R.attr.primaryTextColor).build()).build().intent;
|
||||||
|
i.setData(Uri.parse(url));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
||||||
|
i.addCategory(Intent.CATEGORY_BROWSABLE);
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
if(tinyDB.getBoolean("useCustomTabs")) {
|
Intent browserIntent = wrapBrowserIntent(context, i);
|
||||||
new CustomTabsIntent.Builder().setDefaultColorSchemeParams(new CustomTabColorSchemeParams.Builder().setToolbarColor(getColorFromAttribute(context, R.attr.primaryBackgroundColor))
|
if(browserIntent == null) {
|
||||||
.setNavigationBarColor(getColorFromAttribute(context, R.attr.primaryBackgroundColor)).setSecondaryToolbarColor(R.attr.primaryTextColor).build()).build().launchUrl(context, Uri.parse(url));
|
Toasty.error(context, context.getString(R.string.genericError));
|
||||||
}
|
|
||||||
else {
|
|
||||||
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
|
|
||||||
i.addCategory(Intent.CATEGORY_BROWSABLE);
|
|
||||||
context.startActivity(i);
|
|
||||||
}
|
}
|
||||||
|
context.startActivity(browserIntent);
|
||||||
}
|
}
|
||||||
catch(ActivityNotFoundException e) {
|
catch(ActivityNotFoundException e) {
|
||||||
Toasty.error(context, context.getString(R.string.browserOpenFailed));
|
Toasty.error(context, context.getString(R.string.browserOpenFailed));
|
||||||
|
|
|
@ -19,9 +19,12 @@ public class ParseDiffTest {
|
||||||
List<FileDiffView> parsed = ParseDiff.getFileDiffViewArray(commitDiff);
|
List<FileDiffView> parsed = ParseDiff.getFileDiffViewArray(commitDiff);
|
||||||
assertEquals(4, parsed.size());
|
assertEquals(4, parsed.size());
|
||||||
assertTrue(parsed.get(0).isFileBinary());
|
assertTrue(parsed.get(0).isFileBinary());
|
||||||
|
assertEquals("binary ", parsed.get(0).getFileInfo());
|
||||||
assertFalse(parsed.get(1).isFileBinary());
|
assertFalse(parsed.get(1).isFileBinary());
|
||||||
|
|
||||||
assertEquals(1, parsed.get(1).getFileContents().size());
|
assertEquals(1, parsed.get(1).getFileContents().size());
|
||||||
|
assertEquals("newOne.txt", parsed.get(1).getFileName());
|
||||||
|
assertEquals("+2, -0", parsed.get(1).getFileInfo());
|
||||||
assertEquals(2, parsed.get(1).getFileContents().get(0).getLineAdded());
|
assertEquals(2, parsed.get(1).getFileContents().get(0).getLineAdded());
|
||||||
assertEquals(0, parsed.get(1).getFileContents().get(0).getLineRemoved());
|
assertEquals(0, parsed.get(1).getFileContents().get(0).getLineRemoved());
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package org.mian.gitnex.helpers;
|
package org.mian.gitnex.helpers;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
import static org.junit.Assert.assertFalse;
|
import org.junit.function.ThrowingRunnable;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author 6543
|
* @author 6543
|
||||||
|
@ -10,6 +10,11 @@ import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
public class VersionTest {
|
public class VersionTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void invalid() {
|
||||||
|
assertThrows(IllegalArgumentException.class, () -> new Version("abcd"));
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void equal() {
|
public void equal() {
|
||||||
|
|
||||||
|
@ -21,6 +26,7 @@ public class VersionTest {
|
||||||
assertTrue(new Version("v1.12.0").equal("1.12.0"));
|
assertTrue(new Version("v1.12.0").equal("1.12.0"));
|
||||||
assertTrue(new Version("0").equal("0"));
|
assertTrue(new Version("0").equal("0"));
|
||||||
assertTrue(new Version("").equal("0"));
|
assertTrue(new Version("").equal("0"));
|
||||||
|
assertTrue(new Version("main").equal("main"));
|
||||||
|
|
||||||
assertFalse(new Version("1.12.1").equal("1.12.0+dev-211-g316db0fe7"));
|
assertFalse(new Version("1.12.1").equal("1.12.0+dev-211-g316db0fe7"));
|
||||||
assertFalse(new Version("v1.12.0").equal("1.10.0"));
|
assertFalse(new Version("v1.12.0").equal("1.10.0"));
|
||||||
|
@ -30,6 +36,7 @@ public class VersionTest {
|
||||||
assertFalse(new Version("1.2").equal("2.1"));
|
assertFalse(new Version("1.2").equal("2.1"));
|
||||||
assertFalse(new Version("2.2").equal("2.1.120"));
|
assertFalse(new Version("2.2").equal("2.1.120"));
|
||||||
assertFalse(new Version("1.12.3").equal("1.13.0+dev-307-g633f52c22"));
|
assertFalse(new Version("1.12.3").equal("1.13.0+dev-307-g633f52c22"));
|
||||||
|
assertFalse(new Version("main").equal("1.17.1"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +96,7 @@ public class VersionTest {
|
||||||
assertTrue(new Version("1.13.0+dev-30-gb02d2c377").higher("1.11.4"));
|
assertTrue(new Version("1.13.0+dev-30-gb02d2c377").higher("1.11.4"));
|
||||||
assertTrue(new Version("2.1").higher("1.2"));
|
assertTrue(new Version("2.1").higher("1.2"));
|
||||||
assertTrue(new Version("1.13.0+dev-307-g633f52c22").higher("1.12.3"));
|
assertTrue(new Version("1.13.0+dev-307-g633f52c22").higher("1.12.3"));
|
||||||
|
assertTrue(new Version("main").higher("1.18.0"));
|
||||||
|
|
||||||
assertFalse(new Version("1").higher("1.1.10"));
|
assertFalse(new Version("1").higher("1.1.10"));
|
||||||
assertFalse(new Version("1.12.0+dev-211-g316db0fe7").higher("1.12.1"));
|
assertFalse(new Version("1.12.0+dev-211-g316db0fe7").higher("1.12.1"));
|
||||||
|
@ -97,6 +105,8 @@ public class VersionTest {
|
||||||
assertFalse(new Version("v1.12").higher("2.12.0"));
|
assertFalse(new Version("v1.12").higher("2.12.0"));
|
||||||
assertFalse(new Version("1").higher("2"));
|
assertFalse(new Version("1").higher("2"));
|
||||||
assertFalse(new Version("2.1.120").higher("2.2"));
|
assertFalse(new Version("2.1.120").higher("2.2"));
|
||||||
|
assertFalse(new Version("main").higher("main"));
|
||||||
|
assertFalse(new Version("1.17.0").higher("main"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue