Bug Fixes

Bug Fixes
master
Abdul Mannan Saeed 2022-12-29 13:45:46 +05:00
parent a94fabcb7f
commit 11cfc81a3c
99 changed files with 2232 additions and 1338 deletions

10
.gitignore vendored
View File

@ -14,3 +14,13 @@
java_pid10832.hprof
java_pid17480.hprof
java_pid21508.hprof
*.enc
.safedk/api/SafeDKAndroid-5.9.1.jar
.safedk/app_sdks.lst
.safedk/dex/android-support-multidex.dex
.safedk/dex/SafeDKAndroid-5.9.1.dex
.safedk/hashes.safedk
.safedk/list.enc
.safedk/permissions_mapping.json
.safedk/plugin.properties
.safedk/proguard-safedk.pro

View File

@ -1,17 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="deploymentTargetDropDown">
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\msman\.android\avd\Pixel_4_API_31_2.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2022-08-27T07:10:24.436680900Z" />
</component>
</project>

Binary file not shown.

10
.safedk/app_sdks.lst Normal file
View File

@ -0,0 +1,10 @@
25a8c13da7993b03825942fe7b22a98f
fd38d80abf402c0cce74ac84b578f259
4df96d3bc9afd17b812e65e6c6add1ef
974322f19d813702ea048d95288d2b8c
29015bbfcc182d80e7f75bd2c38e4521
59cd112b25ecb5af4f5290bb180cd582
ff22dbf67af979b8b3169a242d10f166
74616804a7dc29147dfb0afe122a9fd2
452cecec3e7d8b26a15fb7c1b2cbaecb

Binary file not shown.

Binary file not shown.

3
.safedk/hashes.safedk Normal file
View File

@ -0,0 +1,3 @@
#Thu Dec 29 13:28:14 PKT 2022
\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
json=1845496062

1
.safedk/list.enc Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"mapping":{"INTERNET":"Network","ACCESS_NETWORK_STATE":"Network","READ_EXTERNAL_STORAGE":"Files","WRITE_EXTERNAL_STORAGE":"Files","ACCESS_COARSE_LOCATION":"Location","ACCESS_FINE_LOCATION":"Location","ACCESS_LOCATION_EXTRA_COMMANDS":"Location","RECORD_AUDIO":"Microphone","CAMERA":"Camera","READ_HISTORY_BOOKMARKS":"Pim","READ_CALENDAR":"Pim","WRITE_CALENDAR":"Pim","READ_CONTACTS":"Pim","WRITE_CONTACTS":"Pim","GET_ACCOUNTS":"Pim","READ_SMS":"Pim","RECEIVE_MMS":"Pim","READ_CALL_LOG":"Pim","WRITE_CALL_LOG":"Pim","READ_PROFILE":"Pim","GET_TASKS":"Tasks","BILLING":"In App Purchase","WAKE_LOCK":"Wake Lock","READ_PHONE_STATE":"Phone State"},"always_on":["Accelerometer","Camera","Files","Notifications","Packagemanager","Thread","Advertisingid","Video"]}

View File

@ -0,0 +1,6 @@
#
#Thu Dec 29 13:41:56 PKT 2022
\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000=
sdk_analysis_plugin_version=4.8.1
set_multidex=true
pCPe4EeU2ZQVwQPeHLgseRqHBX1V5pvo9Piuu4J809dRhadEgukXa1A8po_UeXu5hmPOTaP1v4QPaMKIEOhh50=hGlhanpemGqPOKKAgaXvhyxwZaG9uD68csy1OadWTNhEgKvBWR7-7KSpyFr6nfZ4KMOuBBV5J49s2LLSg-SVxg

View File

@ -0,0 +1,25 @@
-keep class androidx.** { *; }
-keep class android.support.multidex.** { *; }
-keep class android.support.v4.app.** { *; }
-keep class com.google.android.gms.location.FusedLocationProviderApi { *; }
-keep class com.google.android.gms.location.LocationListener { *; }
-keep class io.fabric.sdk.android.** { *; }
-keep class okio.** { *; }
-keep class retrofit2.** { *; }
-keep class okhttp3.** { *; }
-keep class com.squareup.okhttp.** { *; }
-keep class com.android.volley.** { *; }
-keep class com.flurry.** { *; }
-keep class org.apache.** { *; }
-keep class com.applovin.** { *; }
-keep class com.google.android.gms.ads.** { *; }
-keep class com.ironsource.** { *; }
-keep class com.fyber.inneractive.** { *; }
-keep class com.vungle.** { *; }
-keep class com.unity3d.ads.** { *; }
-keep class com.unity3d.services.** { *; }
-keep class com.mintegral.msdk.** { *; }
-keep class com.adcolony.sdk.** { *; }
-keep class com.inmobi.** { *; }
-keep class com.safedk.** { *; }
-keep class com.applovin.quality.** { *; }

View File

@ -7,6 +7,10 @@ plugins {
apply plugin: 'com.android.application'
apply from: 'variables.gradle'
apply plugin: 'kotlin-android'
apply plugin: 'applovin-quality-service'
applovin {
apiKey "pCPe4EeU2ZQVwQPeHLgseRqHBX1V5pvo9Piuu4J809dRhadEgukXa1A8po_UeXu5hmPOTaP1v4QPaMKIEOhh50"
}
android {
@ -25,7 +29,9 @@ android {
debugSymbolLevel project.ext.debugSymbolLevel
}
}
kotlinOptions {
jvmTarget = "1.8"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
@ -80,25 +86,12 @@ dependencies {
/* Android Support Repository Dependencies */
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
implementation 'com.google.android.material:material:1.7.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib:1.7.20'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.7.10'
implementation 'org.apache.commons:commons-text:1.3'
implementation 'androidx.work:work-runtime-ktx:2.8.0-beta02'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'com.android.support.constraint:constraint-layout:2.0.4'
implementation 'androidx.preference:preference-ktx:1.2.0'
implementation 'com.android.support:support-annotations:29.0.0'
implementation 'androidx.appcompat:appcompat:1.5.1'
/* Firefox ABI Splits */
implementation "androidx.compose.foundation:foundation:1.3.1"
implementation "org.mozilla.components:browser-engine-gecko:100.0.20220327143103"
implementation "org.mozilla.components:support-rusthttp:100.0.20220327143103"
implementation "org.mozilla.components:support-rustlog:100.0.20220327143103"
implementation "org.mozilla.components:browser-icons:100.0.20220327143103"
implementation "org.mozilla.components:concept-fetch:100.0.20220327143103"
implementation "org.mozilla.components:concept-base:100.0.20220327143103"
@ -110,25 +103,19 @@ dependencies {
/* Ads Manager */
implementation 'com.applovin:applovin-sdk:11.5.5'
implementation 'com.applovin.mediation:adcolony-adapter:4.8.0.2'
implementation 'com.adcolony:sdk:4.8.0'
implementation 'com.facebook.android:audience-network-sdk:6.8.0'
implementation 'com.applovin.mediation:facebook-adapter:6.8.0.12'
implementation 'com.applovin:applovin-sdk:11.6.0'
implementation 'com.facebook.android:audience-network-sdk:6.12.0'
implementation 'com.applovin.mediation:facebook-adapter:6.12.0.1'
/* Orbot Service */
implementation project(path: ':orbotmanager')
/* Helper Libraries */
implementation "android.arch.lifecycle:extensions:1.1.1"
implementation "androidx.lifecycle:lifecycle-extensions:2.2.0"
implementation 'com.coolerfall:android-http-download-manager:1.6.3'
implementation 'androidx.appcompat:appcompat:1.5.1'
implementation "androidx.media:media:1.6.0"
implementation 'com.android.volley:volley:1.2.1'
implementation "net.zetetic:android-database-sqlcipher:4.4.3"
implementation "androidx.sqlite:sqlite-ktx:2.2.0"
implementation 'androidx.palette:palette-ktx:1.0.0'
implementation 'org.jsoup:jsoup:1.13.1'
}

View File

@ -8,6 +8,7 @@
-dontwarn okhttp3.*
-dontwarn org.chromium.net.*
-keep class org.mozilla.** {*;}
-keep class com.flurry.** { *; }
-dontwarn com.flurry.**
-keepattributes *Annotation*,EnclosingMethod,Signature

View File

@ -2,7 +2,9 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<!-- Permissions -->
<permission android:name="android.permission.MEDIA_CONTENT_CONTROL" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
@ -11,12 +13,15 @@
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.DOWNLOAD_WITHOUT_NOTIFICATION" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
<application
android:allowBackup="true"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:extractNativeLibs="false"
android:extractNativeLibs="true"
android:icon="@mipmap/ic_launcher"
tools:remove="android:appComponentFactory"
tools:targetApi="p"
android:label="@string/app_name"
android:largeHeap="false"
android:networkSecurityConfig="@xml/gx_network_security_config"
@ -24,19 +29,13 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="false"
tools:targetApi="n">
android:usesCleartextTraffic="true">
<activity
android:launchMode="singleTask"
android:name="com.hiddenservices.onionservices.appManager.advertManager.advertController"
android:exported="true" />
<activity
android:launchMode="singleTask"
android:name="com.hiddenservices.onionservices.appManager.orionAdvertManager.orionAdvertController"
android:exported="true" />
<activity
android:name="com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkSettings.bookmarkSettingController"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
@ -55,7 +54,7 @@
android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode"
android:exported="true"
android:label="@string/SETTING_HEADER"
android:launchMode="singleTop"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustPan" />
<activity
@ -147,7 +146,7 @@
android:name="com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController"
android:configChanges="keyboard|keyboardHidden|mcc|mnc|orientation|screenSize|locale|layoutDirection|smallestScreenSize|screenLayout"
android:exported="true"
android:launchMode="singleTop"
android:launchMode="singleTask"
android:screenOrientation="fullSensor"
android:windowSoftInputMode="adjustPan">
<meta-data
@ -225,8 +224,7 @@
android:stopWithTask="true" />
<service
android:name="com.hiddenservices.onionservices.appManager.activityStateManager"
android:stopWithTask="true" />
android:name="com.hiddenservices.onionservices.appManager.activityStateManager"/>
<service
android:name="org.torproject.android.service.OrbotService"
@ -250,6 +248,22 @@
</intent-filter>
</receiver>
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.mediaNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="media_toggle" />
</intent-filter>
</receiver>
<receiver
android:name="com.hiddenservices.onionservices.pluginManager.pluginReciever.defaultNotificationReciever"
android:exported="false">
<intent-filter>
<action android:name="default_toggle" />
</intent-filter>
</receiver>
<receiver
android:name="org.torproject.android.service.StartTorReceiver"
android:exported="true"
@ -272,6 +286,20 @@
</receiver>
<!-- Providers & Settings -->
<service
android:name=".MediaSessionService"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</service>
<receiver android:name="androidx.media.session.MediaButtonReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON"/>
</intent-filter>
</receiver>
<provider
android:name="androidx.core.content.FileProvider"

View File

@ -2,26 +2,42 @@ package com.hiddenservices.onionservices.appManager;
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
import android.util.Log;
import androidx.core.app.NotificationManagerCompat;
import com.hiddenservices.onionservices.constants.status;
import org.torproject.android.service.OrbotService;
import org.torproject.android.service.wrapper.orbotLocalConstants;
public class activityStateManager extends Service {
private final IBinder mLocalBinder = new LocalBinder();
public class LocalBinder extends Binder {
public activityStateManager getService() {
return activityStateManager.this;
}
}
@Override
public IBinder onBind(Intent intent) {
return null;
return mLocalBinder;
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_NOT_STICKY;
return Service.START_STICKY_COMPATIBILITY;
}
@Override
public void onDestroy() {
Log.i("aaaaaaaa", "aaaaaaaa");
NotificationManagerCompat.from(this).cancel(1025);
NotificationManagerCompat.from(this).cancel(1030);
Intent mServiceIntent = new Intent(this.getApplicationContext(), OrbotService.class);
this.stopService(mServiceIntent);
@ -30,6 +46,7 @@ public class activityStateManager extends Service {
}
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
super.onDestroy();
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(1);
@ -37,6 +54,9 @@ public class activityStateManager extends Service {
@Override
public void onTaskRemoved(Intent rootIntent) {
Log.i("aaaaaaaa", "aaaaaaaa");
NotificationManagerCompat.from(this).cancel(1025);
NotificationManagerCompat.from(this).cancel(1030);
Intent mServiceIntent = new Intent(this.getApplicationContext(), OrbotService.class);
this.stopService(mServiceIntent);
if (OrbotService.getServiceObject() != null) {
@ -44,6 +64,7 @@ public class activityStateManager extends Service {
}
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
stopSelf();
super.onDestroy();

View File

@ -4,6 +4,7 @@ import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.widget.ProgressBar;
@ -37,18 +38,29 @@ public class advertController extends AppCompatActivity {
}
void onInitAdvert() {
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setGeolocationEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.setWebViewClient(new advertWebViewClient(new webivewViewCallback()));
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setJavaScriptEnabled(true);
}
private void onInitializeAdvertisements() {
String mURL = getIntent().getExtras().getString("m_url");
if(mURL.contains("play.google.com")){
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.loadUrl(mURL);
finish();
}else {
mWebView.setWebViewClient(new advertWebViewClient(new webivewViewCallback()));
mWebView.loadUrl(mURL);
}
}
/* Helper Methods */

View File

@ -17,6 +17,11 @@ public class advertWebViewClient extends android.webkit.WebViewClient {
mEvent = pEvent;
}
public boolean shouldOverrideUrlLoading(WebView view, String url){
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
mEvent.invokeObserver(Collections.singletonList(true), advertEnums.eAdvertClientCallback.M_UPDATE_PROGRESSBAR);

View File

@ -99,7 +99,7 @@ public class bookmarkAdapter extends RecyclerView.Adapter<bookmarkAdapter.listVi
public void onDeleteSelected() {
for (int m_counter = 0; m_counter < mLongSelectedIndex.size(); m_counter++) {
for (int m_counter_inner = 0; m_counter_inner < mCurrentList.size(); m_counter_inner++) {
if (mCurrentList.get(m_counter_inner).getDate() == mLongSelectedDate.get(m_counter) && mLongSelectedIndex.get(m_counter).equals("https://" + mCurrentList.get(m_counter_inner).getDescription())) {
if (mCurrentList.get(m_counter_inner).getDate() == mLongSelectedDate.get(m_counter) && mLongSelectedIndex.get(m_counter).equals(helperMethod.completeURL(mCurrentList.get(m_counter_inner).getDescription()))) {
mEvent.invokeObserver(Collections.singletonList(mRealIndex.get(m_counter_inner)), enums.etype.url_clear);
mEvent.invokeObserver(Collections.singletonList(mLongSelectedID.get(m_counter)), enums.etype.url_clear_at);
invokeFilter(false);

View File

@ -13,6 +13,8 @@ import com.hiddenservices.onionservices.constants.strings;
import com.hiddenservices.onionservices.dataManager.dataController;
import com.hiddenservices.onionservices.helperManager.helperMethod;
import com.example.myapplication.R;
import com.hiddenservices.onionservices.pluginManager.pluginController;
import com.hiddenservices.onionservices.pluginManager.pluginEnums;
import org.torproject.android.service.wrapper.orbotLocalConstants;
@ -34,8 +36,10 @@ public class externalShortcutController extends AppCompatActivity {
if (getIntent() != null) {
String mShortcutCommands = getIntent().getStringExtra(EXTERNAL_SHORTCUT_COMMAND);
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
if (mShortcutCommands != null) {
mIntent.putExtra(EXTERNAL_SHORTCUT_COMMAND, mShortcutCommands);
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DISABLE_NOTIFICATION);
switch (mShortcutCommands) {
case CONST_EXTERNAL_SHORTCUT_COMMAND_ERASE:
setContentView(R.layout.popup_data_cleared_shortcut);

View File

@ -2,18 +2,13 @@ package com.hiddenservices.onionservices.appManager.externalCommandManager;
import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
import android.app.ActivityManager;
import android.app.PendingIntent;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.os.Handler;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import com.example.myapplication.R;
import com.hiddenservices.onionservices.appManager.activityContextManager;
import com.hiddenservices.onionservices.appManager.advertManager.advertController;
import com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController;
@ -22,7 +17,6 @@ import com.hiddenservices.onionservices.constants.keys;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.constants.strings;
import com.hiddenservices.onionservices.helperManager.helperMethod;
import static com.hiddenservices.onionservices.constants.constants.CONST_PACKAGE_NAME;
import static com.hiddenservices.onionservices.constants.keys.EXTERNAL_SHORTCUT_COMMAND_NAVIGATE;
@ -32,10 +26,9 @@ public class externalURLNavigationContoller extends AppCompatActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
com.widget.onionservices.helperMethod.helperMethod.onStartApplication(this, CONST_PACKAGE_NAME);
status.sExternalWebsite = strings.GENERIC_EMPTY_STR;
Uri mData = externalURLNavigationContoller.this.getIntent().getData();
if (status.sExternalWebsiteLoading && !status.sSettingIsAppStarted) {
final Uri[] mData = {externalURLNavigationContoller.this.getIntent().getData()};
/*if (status.sExternalWebsiteLoading && !status.sSettingIsAppStarted) {
Intent intent = new Intent(this, homeController.class);
intent.addFlags(FLAG_ACTIVITY_NO_ANIMATION);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
@ -43,39 +36,38 @@ public class externalURLNavigationContoller extends AppCompatActivity {
activityContextManager.getInstance().getHomeController().overridePendingTransition(R.anim.popup_scale_in, R.anim.popup_scale_out);
finish();
return;
}
}*/
status.sExternalWebsiteLoading = true;
if (mData!=null && mData.toString().contains("applovin")) {
Intent myIntent = new Intent(this, advertController.class);
myIntent.putExtra(keys.ADVERT_URL, mData.toString());
new Handler().postDelayed(() ->
{
if (mData[0] !=null && status.sIsBackgroundAdvertCheck) {
status.sIsBackgroundAdvertCheck = false;
Intent myIntent = new Intent(activityContextManager.getInstance().getHomeController(), advertController.class);
myIntent.putExtra(keys.ADVERT_URL, mData[0].toString());
myIntent.addFlags(FLAG_ACTIVITY_NO_ANIMATION);
myIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(myIntent);
activityContextManager.getInstance().getHomeController().overridePendingTransition(R.anim.popup_scale_in, R.anim.popup_scale_out);
activityContextManager.getInstance().getHomeController().startActivity(myIntent);
//activityContextManager.getInstance().getHomeController().overridePendingTransition(R.anim.popup_scale_in, R.anim.popup_scale_out);
} else {
if (mData == null) {
mData = Uri.parse(constants.CONST_BACKEND_GENESIS_URL);
if (mData[0] == null) {
mData[0] = Uri.parse(constants.CONST_BACKEND_GENESIS_URL);
}
if (activityContextManager.getInstance().getHomeController() == null) {
Intent mIntent = new Intent(this, homeController.class);
mIntent.putExtra(EXTERNAL_SHORTCUT_COMMAND_NAVIGATE, mData.toString());
mIntent.putExtra(EXTERNAL_SHORTCUT_COMMAND_NAVIGATE, mData[0].toString());
helperMethod.openIntent(mIntent, this, constants.CONST_LIST_EXTERNAL_SHORTCUT);
Uri finalMData = mData;
Uri finalMData = mData[0];
status.sExternalWebsite = finalMData.toString();
helperMethod.onDelayHandler(this, 1500, () -> {
activityContextManager.getInstance().getHomeController().onStartApplication(null);
return null;
});
} else {
finish();
Uri finalMData1 = mData;
Uri finalMData1 = mData[0];
helperMethod.onDelayHandler(this, 100, () -> {
activityContextManager.getInstance().getHomeController().onExternalURLInvoke(finalMData1.toString());
return null;
});
helperMethod.onDelayHandler(this, 500, () -> {
helperMethod.onDelayHandler(this, 100, () -> {
com.widget.onionservices.helperMethod.helperMethod.onStartApplication(this, CONST_PACKAGE_NAME);
return null;
});
@ -83,11 +75,9 @@ public class externalURLNavigationContoller extends AppCompatActivity {
return;
}
}
status.sIsBackgroundAdvertCheck = false;
}, 100);
helperMethod.onDelayHandler(this, 2500, () -> {
finish();
activityContextManager.getInstance().getHomeController().overridePendingTransition(R.anim.popup_scale_in, R.anim.popup_scale_out);
return null;
});
}
}

View File

@ -430,10 +430,29 @@ public class geckoClients {
}
public void resetSession() {
mSession.onStopMedia();
mSessionID = strings.GENERIC_EMPTY_STR;
}
public void onKillMedia(){
mSession.onKillMedia();
}
public void onPlayMedia(){
mSession.onPlayMedia();
}
public void onPauseMedia(){
mSession.onPauseMedia();
}
public void onSkipForwardMedia(){
mSession.onSkipForwardMedia();
}
public void onSkipBackwardMedia(){
mSession.onSkipBackwardMedia();
}
public String getTheme() {
if (mSessionID.equals(strings.GENERIC_EMPTY_STR)) {
return null;
@ -446,7 +465,6 @@ public class geckoClients {
public void initSession(geckoSession mSession) {
mSessionID = mSession.getSessionID();
this.mSession.onStopMedia();
this.mSession = mSession;
}
@ -623,6 +641,7 @@ public class geckoClients {
}
public void onClose() {
onKillMedia();
mSession.onClose();
}

View File

@ -52,6 +52,7 @@ import org.mozilla.geckoview.Autofill;
import org.mozilla.geckoview.GeckoResult;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.GeckoView;
import org.mozilla.geckoview.Image;
import org.mozilla.geckoview.MediaSession;
import org.mozilla.geckoview.SlowScriptResponse;
import org.mozilla.geckoview.WebExtension;
@ -102,6 +103,8 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
private String mPrevURL = "about:blank";
private String mCurrentTitle = "loading";
private String mCurrentURL = "about:blank";
private String mMediaTitle = "";
private Bitmap mMediaImage;
private Uri mUriPermission = null;
private WeakReference<AppCompatActivity> mContext;
private geckoDownloadManager mDownloadManager;
@ -126,6 +129,7 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
public boolean mCloseRequested = false;
public boolean mOnBackPressed = false;
public SessionState mSessionState;
public mediaDelegate mediaDelegateItem;
MediaSession mMediaSession = null;
geckoSession(eventObserver.eventListener event, String mSessionID, AppCompatActivity mContext, GeckoView pGeckoView) {
@ -144,9 +148,10 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
setPermissionDelegate(this);
setScrollDelegate(this);
setMediaSessionDelegate(this);
mediaDelegateItem = new mediaDelegate(mContext, mContext);
setMediaDelegate(new mediaDelegate(mContext, mContext));
setMediaDelegate(mediaDelegateItem);
mDownloadManager = new geckoDownloadManager();
mSelectionActionDelegate = new selectionActionDelegate(mContext, true);
setPromptDelegate(new geckoPromptView(mContext));
@ -161,14 +166,34 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
@Override
public void onDeactivated(@NonNull GeckoSession session, @NonNull MediaSession mediaSession) {
MediaSession.Delegate.super.onDeactivated(session, mediaSession);
MediaSession.Delegate.super.onPause(session, mediaSession);
if(isMediaRunning){
mediaDelegateItem.onHideDefaultNotification();
}
isMediaRunning = false;
mMediaSession = null;
}
@Override
public void onMetadata(@NonNull GeckoSession session, @NonNull MediaSession mediaSession, @NonNull MediaSession.Metadata meta) {
mMediaTitle = meta.title;
if(!isMediaRunning || mediaDelegateItem == null){
return;
}
new Thread(){
public void run(){
try {
mMediaImage = meta.artwork.getBitmap(250).poll(2500);
if(isMediaRunning && mMediaSession!=null){
mediaDelegateItem.showNotification(mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, !isMediaRunning);
}
} catch (Throwable e) {
e.printStackTrace();
}
}
}.start();
MediaSession.Delegate.super.onMetadata(session, mediaSession, meta);
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, !isMediaRunning);
}
@Override
@ -179,18 +204,25 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
@Override
public void onPlay(@NonNull GeckoSession session, @NonNull MediaSession mediaSession) {
MediaSession.Delegate.super.onPlay(session, mediaSession);
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, false);
isMediaRunning = true;
}
@Override
public void onPause(@NonNull GeckoSession session, @NonNull MediaSession mediaSession) {
MediaSession.Delegate.super.onPause(session, mediaSession);
if(isMediaRunning){
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, true);
}
isMediaRunning = false;
}
@Override
public void onStop(@NonNull GeckoSession session, @NonNull MediaSession mediaSession) {
MediaSession.Delegate.super.onStop(session, mediaSession);
if(isMediaRunning){
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, true);
}
isMediaRunning = false;
}
@ -246,9 +278,54 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
Objects.requireNonNull(mPromptDelegate).onFileCallbackResult(resultCode, data);
}
public void onStopMedia() {
if (isMediaRunning && mMediaSession != null) {
public void onKillMedia() {
isMediaRunning = false;
if(mMediaSession!=null){
mMediaSession.pause();
mediaDelegateItem.onHideDefaultNotification();
}
}
public void onDestroyMedia() {
isMediaRunning = false;
if(mMediaSession!=null){
mMediaSession.stop();
mediaDelegateItem.onHideDefaultNotification();
mMediaSession = null;
}
mediaDelegateItem.onHideDefaultNotification();
}
public void onStopMedia() {
if (mMediaSession != null) {
mMediaSession.pause();
}
}
public void onPlayMedia(){
isMediaRunning = true;
if(mMediaSession != null){
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, false);
mMediaSession.play();
}
}
public void onPauseMedia(){
if(mMediaSession != null){
mediaDelegateItem.showNotification(this.mContext.get(), mMediaTitle, helperMethod.getHost(mCurrentURL), mMediaImage, true);
mMediaSession.pause();
}
}
public void onSkipForwardMedia(){
if(mMediaSession != null){
mMediaSession.nextTrack();
}
}
public void onSkipBackwardMedia(){
if(mMediaSession != null){
mMediaSession.previousTrack();
}
}
@ -646,7 +723,10 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
}
public GeckoResult<AllowOrDeny> onLoadRequest(@NonNull GeckoSession var2, @NonNull GeckoSession.NavigationDelegate.LoadRequest var1) {
if(mMediaSession!=null){
mMediaSession.stop();
mediaDelegateItem.onHideDefaultNotification();
}
if (var1.uri.contains("167.86.99.31")) {
new Pref<Integer>("network.proxy.type", 0).add();
}else {
@ -735,6 +815,9 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
} else {
mPrevURL = mCurrentURL;
}
if (mediaDelegateItem != null) {
mediaDelegateItem.onHideDefaultNotification();
}
//mIsLoaded = false;
//isPageLoading = false;
}
@ -753,6 +836,9 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
public GeckoResult<String> onLoadError(@NonNull GeckoSession var1, @Nullable String var2, @NonNull WebRequestError var3) {
try {
if(mediaDelegateItem!=null){
mediaDelegateItem.onHideDefaultNotification();
}
if (helperMethod.getHost(var2).endsWith(".onion")) {
var2 = var2.replace("www.", "");
}
@ -888,6 +974,9 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
if (!canGoBack() && !mClosed) {
mCloseRequested = true;
event.invokeObserver(Arrays.asList(mCurrentURL, mSessionID, mCurrentTitle), enums.etype.back_list_empty);
if(mediaDelegateItem!=null){
mediaDelegateItem.onHideDefaultNotification();
}
}
}
@ -895,6 +984,9 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
@UiThread
public void onCrash(@NonNull GeckoSession session) {
if(mediaDelegateItem!=null){
mediaDelegateItem.onHideDefaultNotification();
}
mCloseRequested = true;
if (!mClosed && status.sSettingIsAppStarted) {
if (event == null) {
@ -922,6 +1014,9 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
@UiThread
public void onKill(@NonNull GeckoSession session) {
if(mediaDelegateItem!=null){
mediaDelegateItem.onHideDefaultNotification();
}
mCloseRequested = true;
if (!mClosed && status.sSettingIsAppStarted) {
if (event == null) {
@ -1206,6 +1301,9 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
}
public void closeSessionInstant() {
if (mediaDelegateItem != null) {
mediaDelegateItem.onHideDefaultNotification();
}
mSessionID = "-1";
new Handler().postDelayed(() ->
{
@ -1251,6 +1349,11 @@ geckoSession extends GeckoSession implements MediaSession.Delegate, GeckoSession
}
void goBackSession() {
if(mMediaSession!=null){
isMediaRunning = false;
mMediaSession.stop();
mediaDelegateItem.onHideDefaultNotification();
}
wasBackPressed = true;
mOnBackPressed = true;
goBack();

View File

@ -1,35 +1,49 @@
package com.hiddenservices.onionservices.appManager.homeManager.geckoManager;
import static android.app.PendingIntent.FLAG_IMMUTABLE;
import static android.content.Context.NOTIFICATION_SERVICE;
import static com.hiddenservices.onionservices.appManager.homeManager.geckoManager.geckoPromptView.LOGTAG;
import android.app.Activity;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.os.Build;
import android.util.Log;
import android.widget.RemoteViews;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import com.example.myapplication.R;
import com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.helperManager.helperMethod;
import com.hiddenservices.onionservices.pluginManager.pluginReciever.mediaNotificationReciever;
import org.mozilla.geckoview.GeckoSession;
import org.mozilla.geckoview.Image;
class mediaDelegate implements GeckoSession.MediaDelegate {
public class mediaDelegate implements GeckoSession.MediaDelegate {
private Integer mLastNotificationId = 100;
private Integer mNotificationId;
private final Activity mActivity;
private Context mContext;
private NotificationManager mNotificationManager;
public mediaDelegate(Activity activity, Context pContext) {
mActivity = activity;
mContext = pContext;
mNotificationManager = (NotificationManager) mContext.getSystemService( NOTIFICATION_SERVICE ) ;
}
@Override
public void onRecordingStatusChanged(@NonNull GeckoSession session, RecordingDevice[] devices) {
String message;
int icon;
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mActivity);
RecordingDevice camera = null;
RecordingDevice microphone = null;
@ -63,18 +77,110 @@ class mediaDelegate implements GeckoSession.MediaDelegate {
}
Intent intent = new Intent(mActivity, mediaDelegate.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent =
PendingIntent.getActivity(mActivity.getApplicationContext(), 0, intent, 0);
PendingIntent pendingIntent;
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
pendingIntent = PendingIntent.getActivity(mActivity.getApplicationContext(), 0, intent, FLAG_IMMUTABLE);
}else {
pendingIntent = PendingIntent.getActivity(mActivity.getApplicationContext(), 0, intent, 0);
}
NotificationCompat.Builder builder =
new NotificationCompat.Builder(mActivity.getApplicationContext(), "GeckoChannel")
.setContentTitle("Orion Browser")
.setContentText(message)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setCategory(NotificationCompat.CATEGORY_SERVICE);
.setAutoCancel(true)
.setOngoing(false)
.setPriority(Notification.PRIORITY_DEFAULT)
.setCategory(NotificationCompat.CATEGORY_SERVICE)
.setContentIntent(pendingIntent);
Notification notification = builder.build();
notification.flags |= Notification.FLAG_NO_CLEAR | Notification.FLAG_ONGOING_EVENT;
notificationManager.notify(mNotificationId, notification);
}
public void onHideDefaultNotification(){
if(mNotificationManager!=null){
mNotificationManager.cancel(1030);
}
NotificationManagerCompat.from(mContext).cancel(1030);
}
public void showNotification(Context context, String title, String url, Bitmap mediaImage, boolean not_status) {
if(title.length()<=0 || !status.sBackgroundMusic){
return;
}
RemoteViews contentView;
if (android.os.Build.VERSION. SDK_INT > Build.VERSION_CODES.N_MR1 ) {
contentView = new RemoteViews(context.getPackageName() , R.layout. media_notification_layout ) ;
}else {
contentView = new RemoteViews(context.getPackageName() , R.layout. media_notification_layout_small ) ;
}
contentView.setInt(R.id.layout,"setBackgroundResource", R.color.c_tab_background);
contentView.setTextViewText(R.id.header, title);
contentView.setTextViewText(R.id.body, "☍ " + url);
try {
contentView.setImageViewBitmap(R.id.logo, mediaImage);
} catch (Throwable e) {
e.printStackTrace();
}
if (not_status){
PendingIntent pIntent = helperMethod.onCreateActionIntent(context, mediaNotificationReciever.class, 1030, "media_play", 0);
contentView.setOnClickPendingIntent(R.id.trigger, pIntent);
contentView.setImageViewResource(R.id.trigger, R.drawable.ic_baseline_play_arrow);
}else {
PendingIntent pIntent = helperMethod.onCreateActionIntent(context, mediaNotificationReciever.class, 1030, "media_pause", 1);
contentView.setOnClickPendingIntent(R.id.trigger, pIntent);
contentView.setImageViewResource(R.id.trigger, R.drawable.ic_baseline_pause);
}
PendingIntent pIntentPrev = helperMethod.onCreateActionIntent(context, mediaNotificationReciever.class, 1030, "media_next", 2);
contentView.setOnClickPendingIntent(R.id.next, pIntentPrev);
if(android.os.Build.VERSION. SDK_INT > Build.VERSION_CODES.N){
PendingIntent pIntentNext = helperMethod.onCreateActionIntent(context, mediaNotificationReciever.class, 1030, "media_back", 3);
contentView.setOnClickPendingIntent(R.id.back, pIntentNext);
}
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(mContext, "1030" ) ;
mBuilder.setContent(contentView) ;
mBuilder.setPriority(Notification.PRIORITY_LOW);
mBuilder.setAutoCancel(true);
mBuilder.setSmallIcon(R.drawable.ic_genesis_logo ) ;
mBuilder.setAutoCancel( true ) ;
if (android.os.Build.VERSION. SDK_INT >= android.os.Build.VERSION_CODES. O ) {
int importance = NotificationManager.IMPORTANCE_LOW ;
NotificationChannel notificationChannel = new NotificationChannel( "1030" , "NOTIFICATION_CHANNEL_NAME" , importance) ;
notificationChannel.setSound(null, null);
mBuilder.setChannelId("1030") ;
assert mNotificationManager != null;
mNotificationManager.createNotificationChannel(notificationChannel) ;
}
Notification notification = mBuilder.build();
mBuilder.setContentIntent(PendingIntent.getActivity(context, 1030, new Intent(context, mediaDelegate.class), PendingIntent.FLAG_IMMUTABLE));
PendingIntent dummyIntent = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
PendingIntent.getActivity(context, 1030, new Intent(), PendingIntent.FLAG_IMMUTABLE);
}else {
PendingIntent.getActivity(context, 1030, new Intent(), 0);
}
notification.fullScreenIntent = dummyIntent;
if(!not_status){
notification.flags |= Notification.FLAG_NO_CLEAR;
}
notification.defaults = 0;
mNotificationManager.notify(1030 , notification) ;
notificationManager.notify(mNotificationId, builder.build());
}
}

View File

@ -424,6 +424,8 @@ public class selectionActionDelegate implements ActionMode.Callback,
mSession = session;
mSelection = selection;
try {
if (mActionMode != null) {
if (isActionAvailable()) {
mActionMode.invalidate();
@ -432,8 +434,6 @@ public class selectionActionDelegate implements ActionMode.Callback,
}
return;
}
try {
if (mUseFloatingToolbar) {
String strManufacturer = android.os.Build.MANUFACTURER;
if (android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1 || (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.N && android.os.Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1 && (strManufacturer.toLowerCase().contains("samsung") || android.os.Build.MODEL.toLowerCase().contains("samsung") || Build.PRODUCT.toLowerCase().contains("samsung")))) {

View File

@ -1,10 +1,14 @@
package com.hiddenservices.onionservices.appManager.homeManager.homeController;
import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
import static android.app.Notification.FLAG_AUTO_CANCEL;
import android.annotation.SuppressLint;
import android.app.ActivityManager;
import android.app.DownloadManager;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.ClipData;
@ -14,6 +18,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
@ -26,6 +31,7 @@ import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.preference.PreferenceManager;
import android.speech.RecognizerIntent;
import android.text.Editable;
@ -45,6 +51,7 @@ import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.coordinatorlayout.widget.CoordinatorLayout;
import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat;
import androidx.core.content.ContextCompat;
import androidx.core.widget.NestedScrollView;
@ -60,7 +67,6 @@ import com.hiddenservices.onionservices.appManager.advertManager.advertControlle
import com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkSettings.bookmarkSettingController;
import com.hiddenservices.onionservices.appManager.bookmarkManager.bookmarkHome.bookmarkController;
import com.hiddenservices.onionservices.appManager.historyManager.historyController;
import com.hiddenservices.onionservices.appManager.orionAdvertManager.orionAdvertController;
import com.hiddenservices.onionservices.dataManager.models.historyRowModel;
import com.hiddenservices.onionservices.appManager.homeManager.geckoManager.NestedGeckoView;
import com.hiddenservices.onionservices.appManager.homeManager.geckoManager.*;
@ -87,6 +93,7 @@ import com.hiddenservices.onionservices.appManager.activityThemeManager;
import com.hiddenservices.onionservices.pluginManager.pluginController;
import com.hiddenservices.onionservices.pluginManager.pluginEnums;
import com.example.myapplication.R;
import com.hiddenservices.onionservices.pluginManager.pluginReciever.defaultNotificationReciever;
import com.widget.onionservices.widgetManager.widgetController;
import org.mozilla.geckoview.ContentBlocking;
@ -97,11 +104,8 @@ import org.torproject.android.service.util.Prefs;
import org.torproject.android.service.wrapper.LocaleHelper;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.lang.ref.WeakReference;
import java.lang.reflect.Method;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@ -168,6 +172,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
private LinearLayout mTopBar;
private ImageView mBackSplash;
private Button mConnectButton;
private Button mConnectNoTorButton;
private Button mNewTab;
private View mFindBar;
private View mSearchEngineBar;
@ -228,7 +233,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
getWindow().getDecorView().setBackgroundColor(Color.WHITE);
pluginController.getInstance().preInitialize(this);
dataController.getInstance().initialize(this);
status.initStatus(this);
status.initStatus(this, false);
dataController.getInstance().invokeSQLCipher(dataEnums.eSqlCipherCommands.M_INIT, Collections.singletonList(this));
helperMethod.updateResources(this, status.mSystemLocale.getLanguage());
@ -256,8 +261,11 @@ public class homeController extends AppCompatActivity implements ComponentCallba
initPreFixes();
initBundle();
initTor();
initNotification();
onHideDefaultNotification();
}
public void initNotification() {
}
public void initTor() {
@ -283,7 +291,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
if (getIntent().getExtras().containsKey(M_RESTART_APP_KEY)) {
boolean mStatus = getIntent().getExtras().getBoolean(M_RESTART_APP_KEY);
if (mStatus) {
onStartApplication(null);
//onStartApplication(null);
}
}
}
@ -348,7 +356,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
public void onAdvertClick(View view) {
Intent myIntent = new Intent(this, orionAdvertController.class);
Intent myIntent = new Intent(this, advertController.class);
startActivity(myIntent);
}
@ -458,6 +466,11 @@ public class homeController extends AppCompatActivity implements ComponentCallba
findViewById(R.id.pSuggestionScroll).setOnTouchListener((v, event) -> {
if (MotionEvent.ACTION_DOWN == event.getAction()) {
helperMethod.hideKeyboard(this);
mSearchbar.clearFocus();
mHomeViewController.onUpdateSearchEngineBar(false, 150);
mSearchbar.clearFocus();
mHomeViewController.onClearSelections(true);
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(), false, false, true);
}
return false;
});
@ -511,7 +524,8 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGatewaySplash = findViewById(R.id.pSettings);
mTopBar = findViewById(R.id.pTopbar);
mBackSplash = findViewById(R.id.pTopImage);
mConnectButton = findViewById(R.id.Connect);
mConnectButton = findViewById(R.id.ConnectTor);
mConnectNoTorButton = findViewById(R.id.ConnectNoTor);
mNewTab = findViewById(R.id.pNewTab);
mSearchEngineBar = findViewById(R.id.pSearchEngineBar);
mFindText = findViewById(R.id.pPopupFindNext);
@ -547,7 +561,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mGeckoView.setAutofillEnabled(true);
mGeckoClient = new geckoClients();
mHomeViewController.initialization(new homeViewCallback(), this, mNewTab, mWebViewContainer, mLoadingText, mProgressBar, mSearchbar, mSplashScreen, mLoadingIcon, mBannerAds, mGatewaySplash, mTopBar, mGeckoView, mBackSplash, mConnectButton, mFindBar, mFindText, mFindCount, mTopLayout, mVoiceInput, mMenu, mNestedScroll, mBlocker, mBlockerFullSceen, mSearchEngineBar, mCopyright, mHintListView, mAppBar, mOrbotLogManager, mInfoLandscape, mInfoPortrait, mProgressBarIndeterminate, mTabFragment, mTopBarContainer, mSearchLock, mTopBarHider, mNewTabBlocker, mCoordinatorLayout, mImageDivider, mPanicButton, mGenesisLogo, mPanicButtonLandscape, mTorDisabled);
mHomeViewController.initialization(new homeViewCallback(), this, mNewTab, mWebViewContainer, mLoadingText, mProgressBar, mSearchbar, mSplashScreen, mLoadingIcon, mBannerAds, mGatewaySplash, mTopBar, mGeckoView, mBackSplash, mConnectButton, mConnectNoTorButton, mFindBar, mFindText, mFindCount, mTopLayout, mVoiceInput, mMenu, mNestedScroll, mBlocker, mBlockerFullSceen, mSearchEngineBar, mCopyright, mHintListView, mAppBar, mOrbotLogManager, mInfoLandscape, mInfoPortrait, mProgressBarIndeterminate, mTabFragment, mTopBarContainer, mSearchLock, mTopBarHider, mNewTabBlocker, mCoordinatorLayout, mImageDivider, mPanicButton, mGenesisLogo, mPanicButtonLandscape, mTorDisabled);
mGeckoView.onSetHomeEvent(new nestedGeckoViewCallback());
mGeckoClient.initialize(mGeckoView, new geckoViewCallback(), this, false);
mGeckoClient.onValidateInitializeFromStartup(mGeckoView, homeController.this);
@ -661,10 +675,11 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void onExternalURLInvoke(String pData) {
if (status.sSettingIsAppStarted) {
activityContextManager.getInstance().onClearStack();
onOpenLinkNewTab(pData);
} else {
status.sExternalWebsite = pData;
onStartApplication(null);
//onStartApplication(null);
}
}
@ -686,13 +701,13 @@ public class homeController extends AppCompatActivity implements ComponentCallba
public void onLoadTab(geckoSession mTempSession, boolean isSessionClosed, boolean pExpandAppBar, boolean pForced, boolean pGeneratePixel) {
mGeckoClient.getSession().onKillMedia();
if (!isSessionClosed) {
dataController.getInstance().invokeTab(dataEnums.eTabCommands.MOVE_TAB_TO_TOP, Collections.singletonList(mTempSession));
}
if (mTempSession.isOpen()) {
Log.i("SUPERFUCKKKKK", "SUPERFUCKKKKK : " + (mTempSession.getSessionID() == null) + " -- " + (mGeckoClient == null) + " -- " + (mGeckoClient.getSession().getSessionID() == null));
if (mGeckoClient.getSession() != null && mTempSession.getSessionID().equals(mGeckoClient.getSession().getSessionID())) {
if (mGeckoClient.getSession() != null && mTempSession != null && mTempSession.getSessionID() != null && mTempSession.getSessionID().equals(mGeckoClient.getSession().getSessionID())) {
return;
}
}
@ -774,6 +789,113 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
/*-------------------------------------------------------USER EVENTS-------------------------------------------------------*/
public void onKillMedia(){
mGeckoClient.onKillMedia();
}
public void onPlayMedia(){
mGeckoClient.onPlayMedia();
}
public void onPauseMedia(){
mGeckoClient.onPauseMedia();
}
public void onSkipForwardMedia(){
mGeckoClient.onSkipForwardMedia();
}
public void onSkipBackwardMedia(){
mGeckoClient.onSkipBackwardMedia();
}
public void onShowDefaultNotification(){
showDefaultNotification(this, "Orion Browser");
}
public void onHideDefaultNotification(){
NotificationManagerCompat.from(this).cancelAll();
NotificationManagerCompat.from(this).cancel(1025);
}
public void resetAndRestart(){
boolean mTorBrowsing = status.sTorBrowsing;
String mSearchEngine = status.sSettingDefaultSearchEngine;
dataController.getInstance().clearData(this);
helperMethod.restart(true, this);
status.sTorBrowsing = mTorBrowsing;
status.sSettingDefaultSearchEngine = mSearchEngine;
}
public void onCloseApplication(){
pluginController.getInstance().onOrbotInvoke(Collections.singletonList(status.mThemeApplying), pluginEnums.eOrbotManager.M_DESTROY);
onHideDefaultNotification();
finishAndRemoveTask();
overridePendingTransition(R.anim.popup_scale_in, R.anim.popup_scale_out);
activityContextManager.getInstance().getHomeController().onResetData();
mGeckoClient.onClearAll();
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
}
NotificationManager manager = null;
public void showDefaultNotification(Context context, String title) {
if(status.sTorBrowsing && status.sBridgeNotificationManual != 0){
return;
}
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DISABLE_NOTIFICATION);
manager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent action;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
action = PendingIntent.getActivity(context, 1025, new Intent(context, homeController.class), PendingIntent.FLAG_IMMUTABLE); // Flag indicating that if the described PendingIntent already exists, the current one should be canceled before generating a new one.
}else {
action = PendingIntent.getActivity(context, 1025, new Intent(context, homeController.class), 0); // Flag indicating that if the described PendingIntent already exists, the current one should be canceled before generating a new one.
}
NotificationCompat.Builder builder = new NotificationCompat.Builder(this.getApplicationContext(), "notify_001");
builder.setContentIntent(action)
.setSmallIcon(R.drawable.ic_genesis_logo)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setContentText("Secure tor browsing")
.setOngoing(false)
.setColor(getResources().getColor(R.color.c_tab_border))
.setContentTitle(title);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
String channelId = "default_home_notification";
NotificationChannel channel = new NotificationChannel(channelId, "default_home_notification", NotificationManager.IMPORTANCE_DEFAULT);
channel.setSound(null, null);
manager.createNotificationChannel(channel);
builder.setChannelId(channelId);
}
Intent intentActionOpen = new Intent(context,homeController.class);
intentActionOpen.putExtra("action","Open");
PendingIntent pIntentOpen = helperMethod.onCreateActionIntent(context, defaultNotificationReciever.class, 1025, "media_play", 0);
builder.addAction(0, "ERASE AND RESET", pIntentOpen);
Intent intentActionClose = new Intent(context,homeController.class);
intentActionClose.putExtra("action","Exit");
PendingIntent pIntentClose = helperMethod.onCreateActionIntent(context, defaultNotificationReciever.class, 1025, "media_pause", 1);
builder.addAction(0, "EXIT BROWSER", pIntentClose);
Notification notification = builder.build();
PendingIntent dummyIntent = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
PendingIntent.getActivity(context, 1025, new Intent(), PendingIntent.FLAG_IMMUTABLE);
}else {
PendingIntent.getActivity(context, 1025, new Intent(), 0);
}
notification.fullScreenIntent = dummyIntent;
notification.flags |= Notification.FLAG_NO_CLEAR;
int notificationCode = 1025;
manager.notify(notificationCode, notification);
}
private BroadcastReceiver downloadStatus = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@ -789,6 +911,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
};
@SuppressLint("NewApi")
@Override
public void onTrimMemory(int level) {
@ -835,6 +958,13 @@ public class homeController extends AppCompatActivity implements ComponentCallba
@SuppressLint("ClickableViewAccessibility")
@Override
protected void onDestroy() {
NotificationManagerCompat.from(this).cancel(1030);
if(manager!=null){
manager.cancel(1025);
}
NotificationManagerCompat.from(this).cancel(1025);
mGeckoClient.getSession().onDestroyMedia();
onHideDefaultNotification();
pluginController.getInstance().onAdsInvoke(null, pluginEnums.eAdManager.M_DESTROY);
if (!status.sSettingIsAppStarted) {
super.onDestroy();
@ -855,8 +985,14 @@ public class homeController extends AppCompatActivity implements ComponentCallba
// mGeckoView.onDestroy();
unregisterReceiver(downloadStatus);
if (bound) {
unbindService(connection);
bound = false;
}
activityContextManager.getInstance().getHomeController().onResetData();
NotificationManagerCompat.from(this).cancel(1030);
super.onDestroy();
}
@ -1247,6 +1383,10 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
}
public void onBackPressedVirtual(View view){
onBackPressed();
}
public void postNewLinkTabAnimationInBackgroundTrigger(String url) {
String mExtention = helperMethod.getMimeType(url, this);
if (!url.startsWith("data") && !url.startsWith("blob") && (mExtention == null || mExtention.equals("text/html") || mExtention.equals("application/vnd.ms-htmlhelp") || mExtention.equals("application/vnd.sun.xml.writer") || mExtention.equals("application/vnd.sun.xml.writer.global") || mExtention.equals("application/vnd.sun.xml.writer.template") || mExtention.equals("application/xhtml+xml"))) {
@ -1275,7 +1415,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
public void onNewTab(boolean isKeyboardOpenedTemp, boolean isKeyboardOpened) {
mGeckoClient.getSession().onKillMedia();
try {
mRenderedBitmap = mGeckoView.capturePixels();
} catch (Exception ignored) {
@ -1495,7 +1635,9 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_RESUME);
mHomeViewController.onClearSelections(true);
if(mGeckoClient != null && mGeckoClient.getSession()!=null && mGeckoClient.getSession().getCurrentURL()!=null){
mHomeViewController.onUpdateSearchBar(mGeckoClient.getSession().getCurrentURL(), false, true, true);
}
mHomeViewController.expandTopBar(false, mGeckoView.getMaxY());
status.sUIInteracted = true;
@ -1544,10 +1686,11 @@ public class homeController extends AppCompatActivity implements ComponentCallba
@Override
public void onResume() {
pluginController.getInstance().onLanguageInvoke(Collections.singletonList(this), pluginEnums.eLangManager.M_RESUME);
activityContextManager.getInstance().setCurrentActivity(this);
if (mGeckoClient.getSession() != null && mGeckoClient != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && mGeckoClient.getUriPermission() != null) {
if (mGeckoClient.getSession() != null && mGeckoClient != null && mGeckoClient.getUriPermission() != null) {
this.revokeUriPermission(mGeckoClient.getUriPermission(), Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
TouchView(mGeckoView);
@ -1757,7 +1900,30 @@ public class homeController extends AppCompatActivity implements ComponentCallba
mBackground = false;
}
public void onStartApplication(View view) {
activityStateManager mService = null;
boolean bound;
/** Defines callbacks for service binding, passed to bindService() */
private ServiceConnection connection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName className,
IBinder service) {
// We've bound to LocalService, cast the IBinder and get LocalService instance
activityStateManager.LocalBinder binder = (activityStateManager.LocalBinder) service;
mService = binder.getService();
bound = true;
}
@Override
public void onServiceDisconnected(ComponentName arg0) {
bound = false;
}
};
public void onStartBrowser() {
if (!mStateService) {
mStateService = true;
try{
@ -1765,7 +1931,9 @@ public class homeController extends AppCompatActivity implements ComponentCallba
new Handler().postDelayed(() ->
{
if(!mBackground){
startService(new Intent(this, activityStateManager.class));
Intent intent = new Intent(this, activityStateManager.class);
bindService(intent, connection, 0);
startService(intent);
}
}, 500);
}
@ -1786,9 +1954,31 @@ public class homeController extends AppCompatActivity implements ComponentCallba
{
pluginController.getInstance().onOrbotInvoke(Arrays.asList(status.sBridgeCustomBridge, status.sBridgeGatewayManual, status.sBridgeCustomType, status.sBridgeStatus, status.sShowImages, status.sClearOnExit, dataController.getInstance().invokeBridges(dataEnums.eBridgeWebsiteCommands.M_FETCH, null)), pluginEnums.eOrbotManager.M_START_ORBOT);
onInvokeProxyLoading();
onShowDefaultNotification();
}, mDelay);
}
public void onStartApplication(View view) {
onStartBrowser();
int notificationStatus = status.sBridgeNotificationManual;
if (notificationStatus == 0) {
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DISABLE_NOTIFICATION);
activityContextManager.getInstance().getHomeController().onShowDefaultNotification();
} else {
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_ENABLE_NOTIFICATION);
}
}
public void onStartApplicationNoTor(View view) {
status.sTorBrowsing = false;
status.sNoTorTriggered = true;
if(status.sSettingDefaultSearchEngine.equals(constants.CONST_BACKEND_GENESIS_URL)){
status.sSettingDefaultSearchEngine = constants.CONST_BACKEND_DUCK_DUCK_GO_URL;
}
onStartBrowser();
onHomeButton(null);
}
public void onDownloadFile() {
mGeckoClient.downloadFile(homeController.this);
}
@ -1974,13 +2164,15 @@ public class homeController extends AppCompatActivity implements ComponentCallba
helperMethod.hideKeyboard(this);
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(this), M_REPORT_URL);
} else if (menuId == R.id.pMenuQuit) {
mGeckoClient.onKillMedia();
pluginController.getInstance().onOrbotInvoke(Collections.singletonList(status.mThemeApplying), pluginEnums.eOrbotManager.M_DESTROY);
onHideDefaultNotification();
finishAndRemoveTask();
overridePendingTransition(R.anim.popup_scale_in, R.anim.popup_scale_out);
activityContextManager.getInstance().getHomeController().onResetData();
mGeckoClient.onClearAll();
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
} else if (menuId == R.id.pMenuFind) {
helperMethod.hideKeyboard(this);
@ -2087,6 +2279,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
public void quitApplication() {
pluginController.getInstance().onOrbotInvoke(Collections.singletonList(status.mThemeApplying), pluginEnums.eOrbotManager.M_DESTROY);
finishAffinity();
@ -2094,6 +2287,8 @@ public class homeController extends AppCompatActivity implements ComponentCallba
activityContextManager.getInstance().getHomeController().onResetData();
mGeckoClient.onClearAll();
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
onHideDefaultNotification();
}
public void torSwitch() {
@ -2138,6 +2333,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES, 0));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SHOW_FONTS, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_BACKGROUND_MUSIC, false ));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_TOOLBAR_THEME, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_THEME, enums.Theme.THEME_DEFAULT));
@ -2163,16 +2359,21 @@ public class homeController extends AppCompatActivity implements ComponentCallba
activityContextManager.getInstance().getHomeController().onClearCookies();
onClearSettings();
status.initStatus(activityContextManager.getInstance().getHomeController());
status.initStatus(activityContextManager.getInstance().getHomeController(), false);
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null);
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(this), M_DATA_CLEARED);
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(this), M_CLOSE);
onRestartApp();
onCloseApplication();
}
public void onRestartApp() {
activityContextManager.getInstance().getHomeController().onClearCache();
activityContextManager.getInstance().getHomeController().onClearSiteData();
activityContextManager.getInstance().getHomeController().onClearSession();
activityContextManager.getInstance().getHomeController().onClearCookies();
final PackageManager pm = homeController.this.getPackageManager();
final Intent intent = pm.getLaunchIntentForPackage(homeController.this.getPackageName());
@ -2185,6 +2386,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
orbotLocalConstants.mIsTorInitialized = false;
orbotLocalConstants.mSOCKSPort = -1;
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
orbotLocalConstants.mForcedQuit = false;
homeController.this.startActivity(intent);
@ -2350,7 +2552,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
}
}
} else if (e_type.equals(enums.etype.open_new_tab_instant)) {
postNewLinkTabAnimation(dataToStr(data.get(0)), true);
onLoadURL(dataToStr(data.get(0)));
//status.sExternalWebsite = strings.GENERIC_EMPTY_STR;
} else if (e_type.equals(enums.etype.M_HOME_PAGE)) {
geckoSession mSession = (geckoSession) dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_HOME_PAGE, null);
@ -2389,7 +2591,7 @@ public class homeController extends AppCompatActivity implements ComponentCallba
isFocusChanging = true;
mSearchbar.setSelection(0);
mHomeViewController.onClearSelections(false);
if (!isSuggestionSearchOpened) {
if (!isSuggestionSearchOpened && mGeckoClient!=null && mGeckoClient.getSession()!=null) {
if (mHintListView != null && mHintListView.getAdapter() != null && mHintListView.getAdapter().getItemCount() > 0) {
mHomeViewController.onUpdateSearchEngineBar(false, 150);
((hintAdapter) Objects.requireNonNull(mHintListView.getAdapter())).onClearAdapter();
@ -2443,6 +2645,12 @@ public class homeController extends AppCompatActivity implements ComponentCallba
activityContextManager.getInstance().getTabController().onCloseAllTabs();
onLoadTabFromTabController();
initTabCountForced();
if(mGeckoClient.getSession().getCurrentURL().equals(constants.CONST_BACKEND_DUCK_DUCK_GO_STATIC_URL)){
onLoadURL(constants.CONST_BACKEND_DUCK_DUCK_GO_STATIC_URL);
}else {
onReload(null);
}
}
public void onClearAllTabs() {
@ -2620,9 +2828,9 @@ public class homeController extends AppCompatActivity implements ComponentCallba
} else if (e_type.equals(enums.etype.M_ORBOT_LOADING)) {
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(homeController.this), M_ORBOT_LOADING);
} else if (e_type.equals(enums.etype.M_DEFAULT_BROWSER)) {
if (helperMethod.isDefaultBrowserSet(homeController.this)) {
helperMethod.openDefaultBrowser(homeController.this);
}
//if (helperMethod.isDefaultBrowserSet(homeController.this)) {
pluginController.getInstance().onMessageManagerInvoke(Collections.singletonList(homeController.this), M_DEFAULT_BROWSER);
//}
} else if (e_type.equals(enums.etype.M_NEW_IDENTITY)) {
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_NEW_CIRCUIT);
} else if (e_type.equals(enums.etype.M_NEW_IDENTITY_MESSAGED)) {

View File

@ -88,6 +88,7 @@ class homeViewController {
private LinearLayout mTopBar;
private GeckoView mGeckoView;
private Button mConnectButton;
private Button mConnectNoTorButton;
private Button mNewTab;
private PopupWindow popupWindow = null;
private View mFindBar;
@ -125,7 +126,7 @@ class homeViewController {
private boolean mIsTopBarExpanded = true;
private NestedScrollView.MarginLayoutParams mDefaultMargin = null;
void initialization(eventObserver.eventListener event, AppCompatActivity context, Button mNewTab, ConstraintLayout webviewContainer, TextView loadingText, ProgressBar progressBar, editTextManager searchbar, ConstraintLayout splashScreen, ImageView loading, MaxAdView banner_ads, ImageButton gateway_splash, LinearLayout top_bar, GeckoView gecko_view, ImageView backsplash, Button connect_button, View pFindBar, EditText pFindText, TextView pFindCount, androidx.constraintlayout.widget.ConstraintLayout pTopLayout, ImageButton pVoiceInput, ImageButton pMenu, androidx.core.widget.NestedScrollView pNestedScroll, ImageView pBlocker, ImageView pBlockerFullSceen, View mSearchEngineBar, TextView pCopyright, RecyclerView pHistListView, com.google.android.material.appbar.AppBarLayout pAppBar, ImageButton pOrbotLogManager, ConstraintLayout pInfoLandscape, ConstraintLayout pInfoPortrait, ProgressBar pProgressBarIndeterminate, FragmentContainerView pTabFragment, LinearLayout pTopBarContainer, ImageView pSearchLock, ImageView pTopBarHider, ImageView pNewTabBlocker, CoordinatorLayout mCoordinatorLayout, ImageView pImageDivider, ImageButton pPanicButton, ImageView pGenesisLogo, ImageButton pPanicButtonLandscape, ImageView pTorDisabled) {
void initialization(eventObserver.eventListener event, AppCompatActivity context, Button mNewTab, ConstraintLayout webviewContainer, TextView loadingText, ProgressBar progressBar, editTextManager searchbar, ConstraintLayout splashScreen, ImageView loading, MaxAdView banner_ads, ImageButton gateway_splash, LinearLayout top_bar, GeckoView gecko_view, ImageView backsplash, Button connect_button, Button connect_no_tor_button, View pFindBar, EditText pFindText, TextView pFindCount, androidx.constraintlayout.widget.ConstraintLayout pTopLayout, ImageButton pVoiceInput, ImageButton pMenu, androidx.core.widget.NestedScrollView pNestedScroll, ImageView pBlocker, ImageView pBlockerFullSceen, View mSearchEngineBar, TextView pCopyright, RecyclerView pHistListView, com.google.android.material.appbar.AppBarLayout pAppBar, ImageButton pOrbotLogManager, ConstraintLayout pInfoLandscape, ConstraintLayout pInfoPortrait, ProgressBar pProgressBarIndeterminate, FragmentContainerView pTabFragment, LinearLayout pTopBarContainer, ImageView pSearchLock, ImageView pTopBarHider, ImageView pNewTabBlocker, CoordinatorLayout mCoordinatorLayout, ImageView pImageDivider, ImageButton pPanicButton, ImageView pGenesisLogo, ImageButton pPanicButtonLandscape, ImageView pTorDisabled) {
this.mContext = context;
this.mProgressBar = progressBar;
this.mSearchbar = searchbar;
@ -138,6 +139,7 @@ class homeViewController {
this.mTopBar = top_bar;
this.mGeckoView = gecko_view;
this.mConnectButton = connect_button;
this.mConnectNoTorButton = connect_no_tor_button;
this.mNewTab = mNewTab;
this.popupWindow = null;
this.mFindBar = pFindBar;
@ -236,6 +238,7 @@ class homeViewController {
mTorDisabled.setAlpha(1);
mTorDisabled.setVisibility(View.VISIBLE);
mConnectButton.setVisibility(View.GONE);
mConnectNoTorButton.setVisibility(View.GONE);
mOrbotLogManager.setVisibility(View.GONE);
mGatewaySplash.setVisibility(View.GONE);
mCopyright.setVisibility(View.GONE);
@ -553,6 +556,7 @@ class homeViewController {
//mBlocker.setVisibility(View.GONE);
mGatewaySplash.setVisibility(View.GONE);
mConnectButton.setVisibility(View.GONE);
mConnectNoTorButton.setVisibility(View.GONE);
mPanicButton.setVisibility(View.GONE);
mPanicButtonLandscape.setVisibility(View.GONE);
@ -570,6 +574,7 @@ class homeViewController {
mProgressBarIndeterminate.setVisibility(View.VISIBLE);
mProgressBarIndeterminate.animate().alpha(1);
mConnectButton.setEnabled(false);
mConnectNoTorButton.setEnabled(false);
mSplashScreen.setEnabled(false);
//mBlocker.setClickable(true);
//mBlocker.setFocusable(true);
@ -577,6 +582,7 @@ class homeViewController {
void initHomePage() {
mConnectButton.setEnabled(false);
mConnectNoTorButton.setEnabled(false);
mSplashScreen.setEnabled(false);
mOrbotLogManager.setEnabled(false);
mPanicButton.setEnabled(false);
@ -592,6 +598,8 @@ class homeViewController {
mCopyright.setVisibility(View.GONE);
initSplashLoading();
});
mConnectNoTorButton.animate().setDuration(350).alpha(0f).withEndAction(() -> {
});
mGatewaySplash.animate().setDuration(350).alpha(0.4f);
mPanicButtonLandscape.animate().setInterpolator(new AccelerateInterpolator()).setDuration(170).translationXBy(helperMethod.pxFromDp(55));
mPanicButton.animate().setDuration(170).setInterpolator(new AccelerateInterpolator()).translationXBy(helperMethod.pxFromDp(55));
@ -1772,6 +1780,7 @@ class homeViewController {
}
status.sSettingIsAppStarted = true;
orbotLocalConstants.mAppStarted = true;
}
if (msg.what == messages.MESSAGE_UPDATE_LOADING_TEXT) {
if (mLogs != null) {

View File

@ -1,76 +0,0 @@
package com.hiddenservices.onionservices.appManager.orionAdvertManager;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.ProgressBar;
import androidx.appcompat.app.AppCompatActivity;
import com.example.myapplication.R;
import com.hiddenservices.onionservices.appManager.settingManager.advertSetttings.advertSettingController;
import com.hiddenservices.onionservices.eventObserver;
import java.util.Collections;
import java.util.List;
public class orionAdvertController extends AppCompatActivity {
WebView mWebView;
ProgressBar mProgressBar;
orionAdvertViewController mAdvertViewController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_orion_adview_controller);
initializeViews();
onInitializeAdvertisements();
onInitAdvert();
}
private void initializeViews() {
mWebView = findViewById(R.id.pWebView);
mProgressBar = findViewById(R.id.mProgressBar);
mAdvertViewController = new orionAdvertViewController(this, null, mWebView, mProgressBar);
}
void onInitAdvert() {
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setGeolocationEnabled(true);
mWebView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setDatabaseEnabled(true);
mWebView.setWebViewClient(new orionAdvertWebViewClient(new webivewViewCallback()));
}
private void onInitializeAdvertisements() {
mWebView.loadUrl("https://360wise.com");
}
/* Helper Methods */
public void onClose(View view) {
finish();
}
public void onSettings(View view) {
Intent myIntent = new Intent(this, advertSettingController.class);
startActivity(myIntent);
}
/* Callbacks */
public class webivewViewCallback implements eventObserver.eventListener {
@Override
public Object invokeObserver(List<Object> data, Object event_type) {
if (event_type.equals(orionAdvertEnums.eOrionAdvertClientCallback.M_UPDATE_PROGRESSBAR)) {
mAdvertViewController.onTrigger(orionAdvertEnums.eOrionAdvertViewController.M_UPDATE_PROGRESSBAR, Collections.singletonList(data.get(0)));
}
return null;
}
}
}

View File

@ -1,12 +0,0 @@
package com.hiddenservices.onionservices.appManager.orionAdvertManager;
class orionAdvertEnums {
/*History Manager*/
public enum eOrionAdvertClientCallback {
M_UPDATE_PROGRESSBAR
}
public enum eOrionAdvertViewController {
M_UPDATE_PROGRESSBAR
}
}

View File

@ -1,57 +0,0 @@
package com.hiddenservices.onionservices.appManager.orionAdvertManager;
import android.os.Bundle;
import android.webkit.WebView;
import android.widget.ProgressBar;
import androidx.appcompat.app.AppCompatActivity;
import com.example.myapplication.R;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.helperManager.sharedUIMethod;
import java.util.List;
public class orionAdvertViewController extends AppCompatActivity {
private WebView mWebView;
private AppCompatActivity mContext;
private ProgressBar mProgressBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_adview_controller);
}
orionAdvertViewController(AppCompatActivity pContext, eventObserver.eventListener pEvent, WebView pGeckoView, ProgressBar pProgressBar) {
this.mContext = pContext;
this.mWebView = pGeckoView;
this.mProgressBar = pProgressBar;
initViews();
}
private void initViews() {
sharedUIMethod.updateStatusBar(mContext);
}
public void onUpdateProgressBar(boolean status) {
if (status) {
mProgressBar.animate().setDuration(350).alpha(1);
} else {
mProgressBar.animate().setDuration(350).alpha(0);
}
}
public void onTrigger(orionAdvertEnums.eOrionAdvertViewController pCommands, List<Object> pData) {
if (pCommands.equals(orionAdvertEnums.eOrionAdvertViewController.M_UPDATE_PROGRESSBAR)) {
onUpdateProgressBar((boolean) pData.get(0));
}
}
public void onTrigger(orionAdvertEnums.eOrionAdvertViewController pCommands) {
}
}

View File

@ -1,35 +0,0 @@
package com.hiddenservices.onionservices.appManager.orionAdvertManager;
import android.graphics.Bitmap;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import com.hiddenservices.onionservices.eventObserver;
import java.util.Collections;
public class orionAdvertWebViewClient extends android.webkit.WebViewClient {
private eventObserver.eventListener mEvent;
public orionAdvertWebViewClient(eventObserver.eventListener pEvent) {
mEvent = pEvent;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
mEvent.invokeObserver(Collections.singletonList(true), orionAdvertEnums.eOrionAdvertClientCallback.M_UPDATE_PROGRESSBAR);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
mEvent.invokeObserver(Collections.singletonList(false), orionAdvertEnums.eOrionAdvertClientCallback.M_UPDATE_PROGRESSBAR);
}
@Override
public void onPageFinished(WebView view, String url) {
mEvent.invokeObserver(Collections.singletonList(false), orionAdvertEnums.eOrionAdvertClientCallback.M_UPDATE_PROGRESSBAR);
}
}

View File

@ -38,6 +38,7 @@ public class settingAdvanceController extends AppCompatActivity {
private settingAdvanceViewController mSettingAdvanceViewController;
private SwitchMaterial mRestoreTabs;
private SwitchMaterial mShowWebFonts;
private SwitchMaterial mBackgroundMusic;
private SwitchMaterial mToolbarTheme;
private ArrayList<RadioButton> mImageOption = new ArrayList<>();
@ -71,13 +72,15 @@ public class settingAdvanceController extends AppCompatActivity {
mRestoreTabs = findViewById(R.id.pRestoreTabs);
mShowWebFonts = findViewById(R.id.pShowWebFonts);
mToolbarTheme = findViewById(R.id.pToolbarTheme);
mBackgroundMusic = findViewById(R.id.pShowBackgroundMusic);
mImageOption.add(findViewById(R.id.pAdvanceImageOption1));
mImageOption.add(findViewById(R.id.pAdvanceImageOption2));
mTabLayoutOption.add(findViewById(R.id.pAdvanceGridOption1));
mTabLayoutOption.add(findViewById(R.id.pAdvanceGridOption2));
activityContextManager.getInstance().onStack(this);
mSettingAdvanceViewController = new settingAdvanceViewController(this, new settingAdvanceViewCallback(), mRestoreTabs, mShowWebFonts, mToolbarTheme, mImageOption, mTabLayoutOption);
mSettingAdvanceViewController = new settingAdvanceViewController(this, new settingAdvanceViewCallback(), mRestoreTabs, mShowWebFonts,mBackgroundMusic, mToolbarTheme, mImageOption, mTabLayoutOption);
mSettingAdvanceModel = new settingAdvanceModel(new settingAdvanceModelCallback());
}
@ -167,6 +170,13 @@ public class settingAdvanceController extends AppCompatActivity {
}
public void onBackgroundSound(View view) {
mIsChanged = true;
mSettingAdvanceModel.onTrigger(settingAdvanceEnums.eAdvanceModel.M_BACKGROUND_MUSIC, Collections.singletonList(!mBackgroundMusic.isChecked()));
mBackgroundMusic.toggle();
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_BACKGROUND_MUSIC, status.sBackgroundMusic));
}
public void onGridView(View view) {
mSettingAdvanceViewController.onTrigger(settingAdvanceEnums.eAdvanceViewController.M_CLEAR_GRID, Collections.singletonList(null));
mSettingAdvanceModel.onTrigger(settingAdvanceEnums.eAdvanceModel.M_SHOW_TAB_GRID, Collections.singletonList(view));

View File

@ -3,7 +3,7 @@ package com.hiddenservices.onionservices.appManager.settingManager.advanceManage
class settingAdvanceEnums {
/*History Manager*/
public enum eAdvanceModel {
M_RESTORE_TAB, M_SHOW_IMAGE, M_SHOW_TAB_GRID, M_SHOW_WEB_FONTS, M_TOOLBAR_THEME
M_RESTORE_TAB, M_SHOW_IMAGE, M_SHOW_TAB_GRID, M_SHOW_WEB_FONTS, M_BACKGROUND_MUSIC, M_TOOLBAR_THEME
}
public enum eAdvanceViewController {

View File

@ -47,6 +47,10 @@ class settingAdvanceModel {
status.sShowWebFonts = pStatus;
}
private void onBackgroundMusic(boolean pStatus) {
status.sBackgroundMusic = pStatus;
}
private void onToolbarThemeChange(boolean pStatus) {
status.sToolbarTheme = pStatus;
}
@ -58,7 +62,10 @@ class settingAdvanceModel {
onShowImages((View) pData.get(0));
} else if (pCommands.equals(settingAdvanceEnums.eAdvanceModel.M_SHOW_WEB_FONTS)) {
onShowWebFonts((boolean) pData.get(0));
} else if (pCommands.equals(settingAdvanceEnums.eAdvanceModel.M_TOOLBAR_THEME)) {
} else if (pCommands.equals(settingAdvanceEnums.eAdvanceModel.M_BACKGROUND_MUSIC)) {
onBackgroundMusic((boolean) pData.get(0));
}
else if (pCommands.equals(settingAdvanceEnums.eAdvanceModel.M_TOOLBAR_THEME)) {
onToolbarThemeChange((boolean) pData.get(0));
} else if (pCommands.equals(settingAdvanceEnums.eAdvanceModel.M_SHOW_TAB_GRID)) {
onShowTabGrid((View) pData.get(0));

View File

@ -27,13 +27,16 @@ class settingAdvanceViewController {
private SwitchMaterial mRestoreTabs;
private SwitchMaterial mShowWebFonts;
private SwitchMaterial mBackgroundMusic;
private SwitchMaterial mToolbarTheme;
private ArrayList<RadioButton> mImageOption;
private ArrayList<RadioButton> mTabLayoutOption;
/*Initializations*/
settingAdvanceViewController(settingAdvanceController pContext, eventObserver.eventListener pEvent, SwitchMaterial pRestoreTabs, SwitchMaterial pShowWebFonts, SwitchMaterial pToolbarTheme, ArrayList<RadioButton> pImageOption, ArrayList<RadioButton> pTabLayoutOption) {
settingAdvanceViewController(settingAdvanceController pContext, eventObserver.eventListener pEvent, SwitchMaterial pRestoreTabs, SwitchMaterial pShowWebFonts,SwitchMaterial pBackgroundMusic, SwitchMaterial pToolbarTheme, ArrayList<RadioButton> pImageOption, ArrayList<RadioButton> pTabLayoutOption) {
this.mEvent = pEvent;
this.mContext = pContext;
this.mRestoreTabs = pRestoreTabs;
@ -41,6 +44,7 @@ class settingAdvanceViewController {
this.mToolbarTheme = pToolbarTheme;
this.mImageOption = pImageOption;
this.mTabLayoutOption = pTabLayoutOption;
this.mBackgroundMusic = pBackgroundMusic;
initViews();
initPostUI();
@ -59,6 +63,12 @@ class settingAdvanceViewController {
mShowWebFonts.setChecked(false);
}
if (status.sBackgroundMusic) {
mBackgroundMusic.setChecked(true);
} else {
mBackgroundMusic.setChecked(false);
}
if (status.sToolbarTheme) {
mToolbarTheme.setChecked(true);
} else {

View File

@ -159,7 +159,7 @@ public class settingClearController extends AppCompatActivity {
mCheckBoxList.get(7).setChecked(false);
mCheckBoxList.get(7).setButtonTintList(ColorStateList.valueOf(ContextCompat.getColor(this, R.color.c_checkbox_tint_default)));
onClearSettings();
status.initStatus(activityContextManager.getInstance().getHomeController());
status.initStatus(activityContextManager.getInstance().getHomeController(), true);
dataController.getInstance().invokeTab(dataEnums.eTabCommands.M_CLEAR_TAB, null);
mHomeInvoked = true;
mClearInvoked = true;
@ -217,6 +217,7 @@ public class settingClearController extends AppCompatActivity {
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES, 0));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SHOW_FONTS, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_BACKGROUND_MUSIC, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_TOOLBAR_THEME, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_THEME, enums.Theme.THEME_DEFAULT));

View File

@ -10,6 +10,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.app.NotificationManagerCompat;
import com.hiddenservices.onionservices.appManager.activityContextManager;
import com.hiddenservices.onionservices.appManager.helpManager.helpController;
@ -177,6 +178,7 @@ public class settingGeneralController extends AppCompatActivity {
@Override
public void onResume() {
activityContextManager.getInstance().onCheckPurgeStack();
activityContextManager.getInstance().getHomeController().onKillMedia();
if (status.mThemeApplying) {
// activityContextManager.getInstance().onStack(this);
}

View File

@ -94,6 +94,7 @@ public class settingNotificationController extends AppCompatActivity {
int notificationStatus = status.sBridgeNotificationManual;
if (notificationStatus == 0) {
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DISABLE_NOTIFICATION);
activityContextManager.getInstance().getHomeController().onShowDefaultNotification();
} else {
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_ENABLE_NOTIFICATION);
}

View File

@ -1,5 +1,6 @@
package com.hiddenservices.onionservices.appManager.settingManager.notificationManager;
import com.hiddenservices.onionservices.appManager.activityContextManager;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.pluginManager.pluginController;
@ -26,8 +27,12 @@ class settingNotificationModel {
int mStatus = pStatus ? 1 : 0;
status.sBridgeNotificationManual = mStatus;
if (!pStatus) {
activityContextManager.getInstance().getHomeController().onShowDefaultNotification();
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_DISABLE_NOTIFICATION);
} else {
if(status.sTorBrowsing){
activityContextManager.getInstance().getHomeController().onHideDefaultNotification();
}
pluginController.getInstance().onOrbotInvoke(null, pluginEnums.eOrbotManager.M_ENABLE_NOTIFICATION);
}
}

View File

@ -357,7 +357,6 @@ public class tabController extends Fragment {
alpha = 0.35f;
}
viewHolder.itemView.setAlpha(alpha);
Canvas mCanvas = (Canvas) mtabViewController.onTrigger(tabEnums.eTabViewCommands.ON_GENERATE_SWIPABLE_BACKGROUND, Arrays.asList(c, viewHolder, dX, actionState));
super.onChildDraw(mCanvas, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
}

View File

@ -50,6 +50,7 @@ public class constants {
public static final String CONST_BACKEND_GENESIS_URL = "http://167.86.99.31/search?q=$s&p_num=1&s_type=all";
public static final String CONST_BACKEND_GOOGLE_URL = "https://www.google.com/search?q=$s";
public static final String CONST_BACKEND_DUCK_DUCK_GO_URL = "https://duckduckgo.com?q=$s&ia=web";
public static final String CONST_BACKEND_DUCK_DUCK_GO_STATIC_URL = "http://duckduckgo.com";
public static final String CONST_BACKEND_BING_URL = "https://bing.com/search?q=$s";
public static final String CONST_BACKEND_WIKI_URL = "https://en.wikipedia.org/wiki/$s";
public static final String CONST_LOG_DUCKDUCK = "https://duckduckgo.com/?q=tor";
@ -91,10 +92,10 @@ public class constants {
public static final String CONST_LANGUAGE_DEFAULT_LANG = "default";
/*DOWNLOAD CONSTANTS*/
/*Notification CONSTANTS*/
public static final String CONST_DOWNLOAD_COMMAND = "N_COMMAND";
public static final String CONST_DOWNLOAD_INTENT_KEY = "N_ID";
public static final String CONST_NOTIFICATION_COMMAND = "N_COMMAND";
public static final String CONST_NOTIFICATION_INTENT_KEY = "N_ID";
/*Helper CONSTANTS*/

View File

@ -36,7 +36,7 @@ public class keys {
public static final String SETTING_POPUP = "POPUP_V1";
public static final String SETTING_HISTORY_CLEAR = "HISTORY_CLEAR_V1";
public static final String SETTING_GATEWAY = "pref_bridges_enabled_auto_V1";
public static final String SETTING_TOR_BROWSING = "pref_tor_browsing_V1";
public static final String SETTING_TOR_BROWSING = "pref_tor_browsing_V2";
public static final String SETTING_GATEWAY_MANUAL = "pref_bridges_enabled_manual_V1";
public static final String SETTING_IS_BOOTSTRAPPED = "IS_BOOTSTRAPPED_V1";
public static final String SETTING_IS_WELCOME_ENABLED = "IS_WELCOME_ENABLED_V1";
@ -49,13 +49,14 @@ public class keys {
public static final String SETTING_ZOOM = "SETTING_ZOOM_V1";
public static final String SETTING_VOICE_INPUT = "SETTING_VOICE_INPUT_V1";
public static final String SETTING_TRACKING_PROTECTION = "SETTING_TRACKING_PROTECTION_V1";
public static final String SETTING_RATE_COUNT = "SETTING_RATE_COUNT_V1";
public static final String SETTING_RATE_COUNT = "SETTING_RATE_COUNT_V3";
public static final String SETTING_DONOT_TRACK = "SETTING_DONOT_TRACK_V1";
public static final String SETTING_RESTORE_TAB = "SETTING_RESTORE_TAB_V1";
public static final String SETTING_CHARACTER_ENCODING = "SETTING_CHARACTER_ENCODING_V1";
public static final String SETTING_SHOW_IMAGES = "SETTING_SHOW_IMAGES_V1";
public static final String SETTING_SHOW_TAB_GRID = "SETTING_SHOW_TAB_GRID_V1";
public static final String SETTING_SHOW_FONTS = "SETTING_SHOW_FONTS_V1";
public static final String SETTING_BACKGROUND_MUSIC = "SETTING_BACKGROUND_MUSIC_V1";
public static final String SETTING_TOOLBAR_THEME = "SETTING_TOOLBAR_THEME_V1";
public static final String SETTING_THEME = "SETTING_THEME_LIGHT_V1";
public static final String SETTING_FULL_SCREEN_BROWSIING = "SETTING_FULL_SCREEN_BROWSIING_V2";

View File

@ -33,8 +33,11 @@ public class status {
public static String sVersion = "";
public static String sExternalWebsite = strings.GENERIC_EMPTY_STR;
public static String sBridgesDefault = strings.BRIDGES_DEFAULT;
public static String sAdvertURL = strings.GENERIC_EMPTY_STR;
public static boolean sIsBackgroundAdvertCheck = false;
public static boolean sTorBrowsing = false;
public static boolean sNoTorTriggered = false;
public static boolean sExternalWebsiteLoading = false;
public static boolean sUIInteracted = false;
public static boolean sSettingEnableZoom = true;
@ -60,6 +63,7 @@ public class status {
public static boolean sRestoreTabs = false;
public static boolean sCharacterEncoding = false;
public static boolean sShowWebFonts = true;
public static boolean sBackgroundMusic = false;
public static boolean sToolbarTheme = false;
public static boolean sFullScreenBrowsing = false;
public static boolean sOpenURLInNewTab = true;
@ -93,7 +97,7 @@ public class status {
}
}
public static void initStatus(Context pContext) {
public static void initStatus(Context pContext, boolean reinit) {
versionVerifier(pContext);
status.sUIInteracted = false;
@ -119,7 +123,6 @@ public class status {
status.sSettingLanguage = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_LANGUAGE, strings.SETTING_DEFAULT_LANGUAGE));
status.sReferenceWebsites = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.HOME_REFERENCE_WEBSITES, strings.HOME_REFERENCE_WEBSITES_DEFAULT));
status.sSettingLanguageRegion = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_LANGUAGE_REGION, strings.SETTING_DEFAULT_LANGUAGE_REGION));
status.sSettingDefaultSearchEngine = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE, constants.CONST_BACKEND_GENESIS_URL));
status.sBridgeCustomBridge = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_BRIDGE_1, strings.BRIDGE_CUSTOM_BRIDGE_OBFS4));
status.sBridgeCustomType = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_CUSTOM_TYPE, strings.GENERIC_EMPTY_SPACE));
status.sBridgesDefault = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.BRIDGE_DEFAULT, strings.BRIDGES_DEFAULT));
@ -128,6 +131,7 @@ public class status {
status.sCharacterEncoding = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING, false));
status.sShowImages = (int) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES, 0));
status.sShowWebFonts = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_SHOW_FONTS, true));
status.sBackgroundMusic = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_BACKGROUND_MUSIC, false));
status.sFullScreenBrowsing = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING, false));
status.sToolbarTheme = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_TOOLBAR_THEME, true));
status.sTheme = (int) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_THEME, enums.Theme.THEME_DEFAULT));
@ -136,7 +140,11 @@ public class status {
status.sTabGridLayoutEnabled = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_SHOW_TAB_GRID, true));
status.sGlobalURLCount = (int) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_INT, Arrays.asList(keys.SETTING_RATE_COUNT, 0));
status.sAppInstalled = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_INSTALLED, false));
if (!reinit && !status.sNoTorTriggered){
status.sTorBrowsing = (boolean) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_BOOL, Arrays.asList(keys.SETTING_TOR_BROWSING, true));
status.sSettingDefaultSearchEngine = (String) dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_GET_STRING, Arrays.asList(keys.SETTING_SEARCH_ENGINE, constants.CONST_BACKEND_GENESIS_URL));
}
if (status.sGlobalURLCount <= 10 && status.sGlobalURLCount >= 8) {
status.sGlobalURLCount = 6;

View File

@ -13,6 +13,7 @@ import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.eventObserver;
import org.mozilla.geckoview.ContentBlocking;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.util.ArrayList;
import java.util.Arrays;
@ -215,6 +216,7 @@ public class dataController {
public void clearData(AppCompatActivity mContext) {
dataController.getInstance().initialize(mContext);
status.sSettingIsAppStarted = false;
orbotLocalConstants.mAppStarted = false;
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SEARCH_HISTORY, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SEARCH_SUGGESTION, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_JAVA_SCRIPT, true));
@ -241,6 +243,7 @@ public class dataController {
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_CHARACTER_ENCODING, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_SHOW_IMAGES, 0));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_SHOW_FONTS, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_BACKGROUND_MUSIC, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_TOOLBAR_THEME, true));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_BOOL, Arrays.asList(keys.SETTING_FULL_SCREEN_BROWSIING, false));
dataController.getInstance().invokePrefs(dataEnums.ePreferencesCommands.M_SET_INT, Arrays.asList(keys.SETTING_THEME, enums.Theme.THEME_DEFAULT));
@ -257,7 +260,7 @@ public class dataController {
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, Arrays.asList(SQL_CLEAR_BOOKMARK, null));
invokeSQLCipher(dataEnums.eSqlCipherCommands.M_EXEC_SQL, Arrays.asList(SQL_CLEAR_TAB, null));
status.initStatus(mContext);
status.initStatus(mContext, false);
}
}

View File

@ -229,6 +229,8 @@ public class suggestionDataModel implements SpellCheckerSession.SpellCheckerSess
if (mCurrentList.size() <= 0) {
if (status.sTorBrowsing) {
mCurrentList.add(mSize, new historyRowModel("Orion Search", "orion.onion", -1));
}else {
mCurrentList.add(mSize, new historyRowModel("Duckduckgo", "https://duckduckgo.com", -1));
}
}

View File

@ -1,23 +1,30 @@
package com.hiddenservices.onionservices.pluginManager.adPluginManager;
import static android.content.Intent.FLAG_ACTIVITY_NO_ANIMATION;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.util.Log;
import com.adcolony.sdk.AdColony;
import com.adcolony.sdk.AdColonyAppOptions;
import com.applovin.mediation.MaxAd;
import com.applovin.mediation.MaxAdViewAdListener;
import com.applovin.mediation.MaxError;
import com.applovin.mediation.adapters.AdColonyMediationAdapter;
import com.applovin.mediation.ads.MaxAdView;
import com.applovin.sdk.AppLovinSdk;
import com.applovin.sdk.AppLovinSdkConfiguration;
import com.example.myapplication.R;
import com.facebook.ads.AdSettings;
import com.hiddenservices.onionservices.appManager.activityContextManager;
import com.hiddenservices.onionservices.appManager.advertManager.advertController;
import com.hiddenservices.onionservices.constants.keys;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.pluginManager.pluginEnums;
import java.lang.ref.WeakReference;
import static com.hiddenservices.onionservices.pluginManager.pluginEnums.eAdManagerCallbacks.M_ON_AD_LOAD;
import androidx.appcompat.app.AppCompatActivity;
public class appLovinManager implements MaxAdViewAdListener {
/*Private Variables */
@ -27,6 +34,7 @@ public class appLovinManager implements MaxAdViewAdListener {
private int mRequestCount = 0;
private boolean bannerAdRequested = false;
private boolean bannerAdsLoaded = false;
private Context mContext = null;
/*Initializations*/
@ -34,17 +42,13 @@ public class appLovinManager implements MaxAdViewAdListener {
this.mEvent = pEvent;
this.mBannerAds = new WeakReference(pBannerAds);
initializeBannerAds(pContext);
mContext = pContext;
}
private void initializeBannerAds(Context pContext) {
AdSettings.setDataProcessingOptions(new String[]{});
AdColonyAppOptions appOptions = new AdColonyAppOptions();
appOptions.setPrivacyFrameworkRequired(AdColonyAppOptions.GDPR, true);
appOptions.setPrivacyConsentString(AdColonyAppOptions.GDPR, "1");
AdColony.configure(activityContextManager.getInstance().getHomeController(), appOptions,"app3b56c67c45544c5c89");
AppLovinSdk.getInstance(pContext).setMediationProvider("max");
AppLovinSdk.initializeSdk(pContext, configuration -> {
AppLovinSdk.initializeSdk(pContext,(AppLovinSdk.SdkInitializationListener) configuration -> {
mBannerAds.get().loadAd();
});
}
@ -53,7 +57,6 @@ public class appLovinManager implements MaxAdViewAdListener {
private void loadAds() {
if (!bannerAdRequested) {
bannerAdRequested = true;
mBannerAds.get().loadAd();
mBannerAds.get().setListener(this);
}
}
@ -66,12 +69,10 @@ public class appLovinManager implements MaxAdViewAdListener {
@Override
public void onAdExpanded(MaxAd ad) {
}
@Override
public void onAdCollapsed(MaxAd ad) {
}
@Override
@ -92,7 +93,11 @@ public class appLovinManager implements MaxAdViewAdListener {
@Override
public void onAdClicked(MaxAd ad) {
status.sIsBackgroundAdvertCheck = true;
new Handler().postDelayed(() ->
{
status.sIsBackgroundAdvertCheck = false;
}, 5000);
}
@Override

View File

@ -1,109 +0,0 @@
package com.hiddenservices.onionservices.pluginManager.adPluginManager;
import static com.hiddenservices.onionservices.pluginManager.pluginEnums.eAdManagerCallbacks.M_ON_AD_LOAD;
import static org.mozilla.gecko.util.ThreadUtils.runOnUiThread;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.view.View;
import com.applovin.mediation.ads.MaxAdView;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.pluginManager.pluginEnums;
import org.torproject.android.service.wrapper.orbotLocalConstants;
import java.io.InputStream;
import java.lang.ref.WeakReference;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
public class orionAdvertManager {
/*Private Variables */
private eventObserver.eventListener mEvent;
private WeakReference<MaxAdView> mBannerAds;
private boolean bannerAdsLoaded = false;
private boolean bannerAdRequested = false;
/*Initializations*/
public orionAdvertManager(eventObserver.eventListener pEvent, MaxAdView pBannerAds, Context pContext) {
this.mEvent = pEvent;
this.mBannerAds = new WeakReference(pBannerAds);
new Thread() {
public void run() {
while (true) {
try {
sleep(10000);
initializeBannerAds(pContext);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}.start();
initializeBannerAds(pContext);
}
private void initializeBannerAds(Context pContext) {
try {
if (orbotLocalConstants.mSOCKSPort != -1) {
URL url = new URL("http://167.86.99.31/fetch_advert/");
Proxy proxy;
HttpURLConnection mHttpConnection;
proxy = new Proxy(Proxy.Type.SOCKS, InetSocketAddress.createUnresolved("127.0.0.1", orbotLocalConstants.mSOCKSPort));
mHttpConnection = (HttpURLConnection) url.openConnection(proxy);
mHttpConnection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0");
mHttpConnection.setRequestProperty("Accept", "*/*");
mHttpConnection.connect();
InputStream input = mHttpConnection.getInputStream();
Bitmap mBitmap = BitmapFactory.decodeStream(input);
BitmapDrawable mDrawable = new BitmapDrawable(pContext.getResources(), mBitmap);
runOnUiThread(() -> {
this.mBannerAds.get().setAlpha(0);
this.mBannerAds.get().setVisibility(View.GONE);
this.mBannerAds.get().setBackground(mDrawable);
this.bannerAdsLoaded = true;
mEvent.invokeObserver(null, M_ON_AD_LOAD);
});
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
/*Local Helper Methods*/
private void loadAds() {
if (!bannerAdRequested) {
bannerAdRequested = true;
}
}
private boolean isAdvertLoaded() {
return bannerAdsLoaded;
}
/*External Triggers*/
public Object onTrigger(pluginEnums.eAdManager pEventType) {
if (pEventType.equals(pluginEnums.eAdManager.M_INITIALIZE_BANNER_ADS)) {
loadAds();
} else if (pEventType.equals(pluginEnums.eAdManager.M_IS_ADVERT_LOADED)) {
return isAdvertLoaded();
}
return null;
}
}

View File

@ -171,12 +171,11 @@ public class downloadReciever extends AsyncTask<String, Integer, String> {
String urlEncoded = Uri.encode(f_url[0], ALLOWED_URI_CHARS);
StrongHttpsClient httpclient = new StrongHttpsClient(mContext.get());
if (orbotLocalConstants.mSOCKSPort != -1) {
if (helperMethod.getDomainName(f_url[0]).contains(".onion")) {
httpclient.useProxy(true, "SOCKS", "127.0.0.1", orbotLocalConstants.mSOCKSPort);
} else {
httpclient.useProxy(true, "SOCKS", "127.0.0.1", orbotLocalConstants.mSOCKSPort);
}
httpclient.useProxy(false, "SOCKS", "127.0.0.1", orbotLocalConstants.mSOCKSPort);
}
HttpGet httpget = new HttpGet(urlEncoded);
@ -197,7 +196,6 @@ public class downloadReciever extends AsyncTask<String, Integer, String> {
return null;
}
@SuppressLint({"UnspecifiedImmutableFlag", "LaunchActivityFromNotification"})
@Override
protected void onPostExecute(String file_url) {
@ -293,7 +291,6 @@ public class downloadReciever extends AsyncTask<String, Integer, String> {
}
mTotalReadCount += mCurrentReadCount;
int cur = (int) ((mTotalReadCount * 100) / pLengthOfFile);
mDownloadByte = cur;
if (pLengthOfFile < 0) {
cur = (int) mTotalReadCount;
mDownloadByte = mTotalReadCount * -1;
@ -308,13 +305,14 @@ public class downloadReciever extends AsyncTask<String, Integer, String> {
pOutputStream.write(mData, 0, mCurrentReadCount);
}
mNotificationBuilder.setContentText("saving file");
mNotificationBuilder.setSmallIcon(android.R.drawable.stat_sys_download);
mNotifyManager.notify(mNotificationID, mNotificationBuilder.build());
//mNotificationBuilder.setContentText("saving file");
//mNotificationBuilder.setSmallIcon(android.R.drawable.stat_sys_download);
//mNotifyManager.notify(mNotificationID, mNotificationBuilder.build());
pOutputStream.flush();
pOutputStream.close();
pInputStream.close();
//pOutputStream.flush();
//pOutputStream.close();
//pInputStream.close();
onPostExecute("");
return true;
}

View File

@ -26,12 +26,14 @@ import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.hiddenservices.onionservices.appManager.homeManager.homeController.homeController;
import com.hiddenservices.onionservices.constants.constants;
import com.hiddenservices.onionservices.constants.enums;
import com.hiddenservices.onionservices.constants.status;
import com.hiddenservices.onionservices.constants.strings;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.helperManager.helperMethod;
import com.hiddenservices.onionservices.pluginManager.pluginController;
import com.hiddenservices.onionservices.pluginManager.pluginEnums;
import com.example.myapplication.R;
import com.google.android.material.switchmaterial.SwitchMaterial;
@ -176,6 +178,18 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
mDialog.setOnDismissListener(this);
}
private void onDefaultBrowser() {
initializeDialog(R.layout.popup_default_browser, Gravity.CENTER);
Button mDismiss = mDialog.findViewById(R.id.pPopupDefaultBrowserDismiss);
Button mNext = mDialog.findViewById(R.id.pPopupDefaultBrowserNext);
mDismiss.setOnClickListener(this);
mNext.setOnClickListener(this);
mDialog.setCancelable(false);
mDialog.setOnDismissListener(this);
}
private void openSecurityInfo() {
String mInfo = mData.get(0).toString();
initializeDialog(R.layout.certificate_info, Gravity.TOP);
@ -483,6 +497,7 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
view.getId() == R.id.pPopupLongPressDismiss ||
view.getId() == R.id.pPopupRateusClose ||
view.getId() == R.id.pCertificateDesciption ||
view.getId() == R.id.pPopupDefaultBrowserDismiss ||
view.getId() == R.id.pCertificateRootBackground
) {
onDismiss();
@ -500,6 +515,11 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
} else if (view.getId() == R.id.pTorSwtichPopupNext) {
onDismiss();
mEvent.invokeObserver(null, M_TOR_SWITCH_RESTART);
} else if (view.getId() == R.id.pPopupDefaultBrowserNext) {
onDismiss();
if (helperMethod.isDefaultBrowserSet(mContext)) {
helperMethod.openDefaultBrowser(mContext);
}
} else if (view.getId() == R.id.pPopupCreateBookmarkDismiss) {
onDismiss();
helperMethod.hideKeyboard(mContext);
@ -771,6 +791,11 @@ public class messageManager implements View.OnClickListener, DialogInterface.OnD
onPanic();
break;
case M_DEFAULT_BROWSER:
/*VERIFIED*/
onDefaultBrowser();
break;
case M_SECURE_CONNECTION:
/*VERIFIED*/
openSecureConnectionPopup();

View File

@ -19,7 +19,6 @@ import com.hiddenservices.onionservices.dataManager.dataEnums;
import com.hiddenservices.onionservices.eventObserver;
import com.hiddenservices.onionservices.helperManager.helperMethod;
import com.hiddenservices.onionservices.pluginManager.adPluginManager.appLovinManager;
import com.hiddenservices.onionservices.pluginManager.adPluginManager.orionAdvertManager;
import com.hiddenservices.onionservices.pluginManager.analyticPluginManager.analyticManager;
import com.hiddenservices.onionservices.pluginManager.downloadPluginManager.downloadManager;
import com.hiddenservices.onionservices.pluginManager.langPluginManager.langManager;
@ -49,7 +48,6 @@ public class pluginController {
/*Plugin Instance*/
private appLovinManager mAdManager;
private orionAdvertManager mOrionAdvertManager;
private analyticManager mAnalyticsManager;
private messageManager mMessageManager;
private notifictionManager mNotificationManager;

View File

@ -26,7 +26,7 @@ public class pluginEnums {
/*Message Manager*/
public enum eMessageManager {
M_RESET, M_DATA_CLEARED, M_COPY, M_APPLICATION_CRASH, M_DELETE_BOOKMARK, M_UPDATE_BOOKMARK, M_IMAGE_UPDATE, M_OPEN_ACTIVITY_FAILED, M_OPEN_CICADA, M_TOR_SWITCH, M_SECURE_CONNECTION, M_SECURITY_INFO, M_POPUP_BLOCKED, M_PANIC, M_MAX_TAB_REACHED, M_ORBOT_LOADING, M_LOAD_NEW_TAB, M_UNDO, M_DOWNLOAD_SINGLE, M_UPDATE_BRIDGES, M_NEW_IDENTITY, M_NOT_SUPPORTED, M_BRIDGE_MAIL, M_LONG_PRESS_WITH_LINK, M_LONG_PRESS_URL, M_LONG_PRESS_DOWNLOAD, M_START_ORBOT, M_DOWNLOAD_FAILURE, M_DOWNLOAD_FILE, M_RATE_APP, M_REPORT_URL, M_CLEAR_BOOKMARK, M_CLEAR_HISTORY, M_BOOKMARK, M_PANIC_RESET, M_TOR_SWITCH_RESTART, M_RATE_SUCCESS, M_RATE_FAILURE, M_CLOSE, M_LANGUAGE_SUPPORT_FAILURE, M_WELCOME
M_RESET, M_DATA_CLEARED, M_COPY, M_APPLICATION_CRASH, M_DELETE_BOOKMARK, M_UPDATE_BOOKMARK, M_IMAGE_UPDATE, M_OPEN_ACTIVITY_FAILED, M_OPEN_CICADA, M_TOR_SWITCH, M_SECURE_CONNECTION, M_SECURITY_INFO, M_POPUP_BLOCKED, M_PANIC, M_MAX_TAB_REACHED, M_ORBOT_LOADING, M_LOAD_NEW_TAB, M_UNDO, M_DOWNLOAD_SINGLE, M_UPDATE_BRIDGES, M_NEW_IDENTITY, M_NOT_SUPPORTED, M_BRIDGE_MAIL, M_LONG_PRESS_WITH_LINK, M_LONG_PRESS_URL, M_LONG_PRESS_DOWNLOAD, M_START_ORBOT, M_DOWNLOAD_FAILURE, M_DOWNLOAD_FILE, M_RATE_APP, M_REPORT_URL, M_CLEAR_BOOKMARK, M_CLEAR_HISTORY, M_BOOKMARK, M_PANIC_RESET, M_DEFAULT_BROWSER, M_TOR_SWITCH_RESTART, M_RATE_SUCCESS, M_RATE_FAILURE, M_CLOSE, M_LANGUAGE_SUPPORT_FAILURE, M_WELCOME
}
public enum eMessageManagerCallbacks {

View File

@ -0,0 +1,20 @@
package com.hiddenservices.onionservices.pluginManager.pluginReciever;
import static com.hiddenservices.onionservices.constants.constants.CONST_NOTIFICATION_COMMAND;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.hiddenservices.onionservices.appManager.activityContextManager;
public class defaultNotificationReciever extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
int mCommand = intent.getExtras().getInt(CONST_NOTIFICATION_COMMAND);
if (mCommand == 0) {
activityContextManager.getInstance().getHomeController().resetAndRestart();
} else if (mCommand == 1) {
activityContextManager.getInstance().getHomeController().onCloseApplication();
}
}
}

View File

@ -13,13 +13,13 @@ import java.util.Collections;
public class downloadNotificationReciever extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
int mCommand = intent.getExtras().getInt(CONST_DOWNLOAD_COMMAND);
int mCommand = intent.getExtras().getInt(CONST_NOTIFICATION_COMMAND);
if (mCommand == 1) {
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_DOWNLOAD_INTENT_KEY)), pluginEnums.eDownloadManager.M_URL_DOWNLOAD_REQUEST);
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_NOTIFICATION_INTENT_KEY)), pluginEnums.eDownloadManager.M_URL_DOWNLOAD_REQUEST);
} else if (mCommand == 0 || mCommand == 2) {
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_DOWNLOAD_INTENT_KEY)), pluginEnums.eDownloadManager.M_CANCEL_DOWNLOAD);
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_NOTIFICATION_INTENT_KEY)), pluginEnums.eDownloadManager.M_CANCEL_DOWNLOAD);
} else if (mCommand == 3) {
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_DOWNLOAD_INTENT_KEY)), pluginEnums.eDownloadManager.M_CANCEL_DOWNLOAD);
pluginController.getInstance().onDownloadInvoke(Collections.singletonList(intent.getExtras().getInt(CONST_NOTIFICATION_INTENT_KEY)), pluginEnums.eDownloadManager.M_CANCEL_DOWNLOAD);
}
}
}

View File

@ -0,0 +1,24 @@
package com.hiddenservices.onionservices.pluginManager.pluginReciever;
import static com.hiddenservices.onionservices.constants.constants.CONST_NOTIFICATION_COMMAND;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import com.hiddenservices.onionservices.appManager.activityContextManager;
public class mediaNotificationReciever extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
int mCommand = intent.getExtras().getInt(CONST_NOTIFICATION_COMMAND);
if (mCommand == 0) {
activityContextManager.getInstance().getHomeController().onPlayMedia();
} else if (mCommand == 1) {
activityContextManager.getInstance().getHomeController().onPauseMedia();
} else if (mCommand == 2) {
activityContextManager.getInstance().getHomeController().onSkipForwardMedia();
} else if (mCommand == 3) {
activityContextManager.getInstance().getHomeController().onSkipBackwardMedia();
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#fff"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M4,18l8.5,-6L4,6v12zM13,6v12l8.5,-6L13,6z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#fff"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M11,18L11,6l-8.5,6 8.5,6zM11.5,12l8.5,6L20,6l-8.5,6z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#fff"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/background_dark" android:pathData="M6,19h4L10,5L6,5v14zM14,5v14h4L18,5h-4z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#fff"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/background_dark" android:pathData="M8,5v14l11,-7z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#fff"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M6,18l8.5,-6L6,6v12zM16,6v12h2V6h-2z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#fff"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M6,6h2v12L6,18zM9.5,12l8.5,6L18,6z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="@color/c_header_icon_tint"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M6,6h12v12H6z"/>
</vector>

View File

@ -0,0 +1,5 @@
<vector android:height="24dp" android:tint="#7591bd"
android:viewportHeight="24" android:viewportWidth="24"
android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M4,6L2,6v14c0,1.1 0.9,2 2,2h14v-2L4,20L4,6zM20,2L8,2c-1.1,0 -2,0.9 -2,2v12c0,1.1 0.9,2 2,2h12c1.1,0 2,-0.9 2,-2L22,4c0,-1.1 -0.9,-2 -2,-2zM12,14.5v-9l6,4.5 -6,4.5z"/>
</vector>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/pBridgeSettingCustomLayout"
android:layout_width="match_parent"
android:layout_height="170dp"
android:background="@xml/ax_round_corner"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.5"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/pBridgeSettingCustomHeader"
android:layout_width="match_parent"
android:layout_height="30dp"
android:layout_marginStart="15dp"
android:layout_marginTop="18dp"
android:alpha="1"
android:background="@xml/ax_border_left"
android:lineSpacingExtra="3.5dp"
android:textStyle="bold"
android:gravity="start"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="DEFAULT BROWSER"
android:textAlignment="textStart"
android:textColor="@color/c_text_v10"
android:textSize="17sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="SmallSp,TextContrastCheck" />
<TextView
android:id="@+id/pBridgeSettingCustomDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:alpha="0.8"
android:lineSpacingExtra="3.5dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="set orion as your default browser"
android:textAlignment="textStart"
android:textColor="@color/c_alert_background_description"
android:textSize="15sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pBridgeSettingCustomHeader"
tools:ignore="SmallSp" />
<Button
android:id="@+id/pPopupDefaultBrowserDismiss"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginEnd="15dp"
android:layout_marginBottom="20dp"
android:background="@xml/ax_ripple_default_round_bottom_secondary"
android:text="@string/ALERT_DISMISS"
android:textAllCaps="false"
android:textColor="@color/c_white"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/pPopupDefaultBrowserNext"
tools:ignore="TouchTargetSizeCheck,TextContrastCheck" />
<Button
android:id="@+id/pPopupDefaultBrowserNext"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_marginEnd="15dp"
android:layout_marginBottom="20dp"
android:background="@xml/ax_ripple_default_round_bottom"
android:text="Set Default"
android:textAllCaps="false"
android:textColor="@color/c_white"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:ignore="TouchTargetSizeCheck,TextContrastCheck" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -58,26 +58,24 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="48dp"
android:background="@color/c_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/mProgressBar">
</WebView>
<ProgressBar
android:id="@+id/mProgressBar"
style="?android:attr/progressBarStyleHorizontal"
android:indeterminateOnly="true"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="42dp"
android:background="@color/clear_alpha"
android:scaleY="1.5"
android:layout_marginTop="-6dp"
android:indeterminateOnly="true"
android:progressBackgroundTint="@color/c_seekbar_progress"
android:scaleY="1.5"
app:layout_constraintEnd_toStartOf="@+id/pWebView"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/pHeaderContainerTop" />
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -0,0 +1,77 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id = "@+id/layout_default_notification"
android:layout_width = "fill_parent"
android:layout_height = "wrap_content"
android:padding = "10dp" >
<ImageView
android:id = "@+id/image"
android:layout_width = "40dp"
android:layout_height = "40dp"
android:layout_alignParentStart = "true"
android:layout_marginEnd = "10dp"
android:contentDescription = "@string/app_name"
android:src = "@drawable/ic_genesis_logo"/>
<TextView
android:id = "@+id/header"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:maxHeight="28dp"
android:textStyle="bold"
android:layout_toEndOf = "@id/image"
android:text = "Testing"
android:paddingEnd="70dp"
android:layout_marginStart="5dp"
android:textSize = "17sp" />
<TextView
android:layout_marginStart="5dp"
android:id = "@+id/body"
android:paddingEnd="70dp"
android:maxLines="2"
android:layout_width = "wrap_content"
android:layout_height = "20dp"
android:layout_below = "@id/header"
android:layout_toEndOf = "@id/image"
android:ellipsize = "marquee"
android:singleLine = "true"
android:text = "Lorem Ipsum is simply dummy text of the printing and typesetting
industry. Lorem Ipsum has been the industry's standard dummy text ever since the
1500s, when an unknown printer took a galley of type and scrambled it to make a type
specimen book. It has survived not only five centuries, but also the leap into
electronic typesetting, remaining essentially unchanged. It was popularised in the
1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more
recently with desktop publishing software like Aldus PageMaker including versions of
Lorem Ipsum. "
android:textSize = "15sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignTop = "@+id/body"
android:layout_marginTop="5dp"
android:gravity="start"
android:orientation="horizontal">
<Button
android:id = "@+id/reset"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:textColor="@color/text_color_v2"
android:background="@color/clear_alpha"
android:text = "EXIT AND RESET"/>
<Button
android:id = "@+id/exit"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_marginLeft="20dp"
android:textColor="@color/text_color_v2"
android:background="@color/clear_alpha"
android:text = "EXIT BROWSER"/>
</LinearLayout>
</RelativeLayout>

View File

@ -118,7 +118,7 @@
android:src="@xml/ic_baseline_lock"
android:translationZ="10dp"
app:tint="@color/c_lock_tint"
tools:ignore="RtlSymmetry" />
tools:ignore="RtlSymmetry,TouchTargetSizeCheck" />
<View
android:id="@+id/pSearchDivider"
@ -203,7 +203,8 @@
android:text="@string/HOME_TAB_TEXT"
android:textColor="@color/c_text_v1"
android:textSize="12.5sp"
android:tint="@color/black" />
android:tint="@color/black"
tools:ignore="TouchTargetSizeCheck" />
<ImageButton
android:id="@+id/pMenu"
@ -675,14 +676,32 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<Button
android:id="@+id/Connect"
android:layout_width="120dp"
android:id="@+id/ConnectNoTor"
android:textSize="13sp"
android:layout_width="170dp"
android:layout_height="51dp"
android:layout_marginStart="23dp"
android:layout_marginBottom="8dp"
android:textAlignment="textStart"
android:drawableStart="@drawable/ic_no_tor"
android:background="@xml/hox_rounded_corner_splash_no_ripple"
android:onClick="onStartApplicationNoTor"
android:text="Normal Browsing"
app:layout_constraintBottom_toTopOf="@+id/ConnectTor"
app:layout_constraintStart_toStartOf="parent" />
<Button
android:id="@+id/ConnectTor"
android:textSize="13sp"
android:layout_width="170dp"
android:layout_height="51dp"
android:layout_marginStart="23dp"
android:layout_marginBottom="23dp"
android:textAlignment="textStart"
android:background="@xml/hox_rounded_corner_splash_no_ripple"
android:drawableStart="@drawable/ic_tor"
android:onClick="onStartApplication"
android:text="@string/HOME_CONNECT"
android:text="Tor Browsing"
app:layout_constraintBottom_toTopOf="@+id/pCopyright"
app:layout_constraintStart_toStartOf="parent" />
@ -740,7 +759,7 @@
android:onClick="onLoadProxy"
android:src="@xml/ic_gear"
app:layout_constraintBottom_toTopOf="@+id/pDivider1"
app:layout_constraintStart_toEndOf="@+id/Connect"
app:layout_constraintStart_toEndOf="@+id/ConnectTor"
app:tint="@color/black" />
<ImageButton
@ -809,7 +828,7 @@
android:translationZ="3dp"
app:layout_constraintBottom_toTopOf="@+id/pDivider1"
app:layout_constraintEnd_toEndOf="@+id/pSettings"
app:layout_constraintStart_toStartOf="@+id/Connect"
app:layout_constraintStart_toStartOf="@+id/ConnectTor"
app:layout_constraintTop_toBottomOf="@+id/pOrbotLogs" />

View File

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id = "@+id/layout"
android:layout_width = "fill_parent"
android:layout_height = "100dp"
android:background = "@color/c_tab_background"
android:padding = "10dp" >
<ImageView
android:layout_alignParentEnd = "true"
android:id="@+id/logo"
android:layout_marginTop="-5dp"
android:scaleX="0.85"
android:scaleY="0.75"
android:background="@color/c_tab_border_v1"
android:layout_width="55dp"
android:layout_height="55dp" />
<ImageView
android:id = "@+id/image"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_alignParentStart = "true"
android:layout_marginEnd = "10dp"
android:layout_marginTop="5dp"
android:contentDescription = "@string/app_name"
android:src = "@drawable/ic_baseline_video"
app:tint="@color/c_header_icon_tint" />
<TextView
android:id = "@+id/header"
android:layout_width = "wrap_content"
android:layout_height = "20dp"
android:layout_toEndOf = "@id/image"
android:text = "Testing"
android:maxLines="1"
android:ellipsize="end"
android:singleLine="true"
android:layout_toStartOf="@+id/logo"
android:paddingEnd="10dp"
android:layout_marginStart="5dp"
android:textColor = "#fff"
android:textSize = "13sp" />
<TextView
android:layout_marginStart="5dp"
android:id = "@+id/body"
android:paddingEnd="10dp"
android:layout_toStartOf="@+id/logo"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_below = "@id/header"
android:layout_toEndOf = "@id/image"
android:singleLine = "true"
android:maxLines="1"
android:ellipsize="end"
android:text = "Lorem Ipsum is simply dummy text of the printing and typesetting
industry. Lorem Ipsum has been the industry's standard dummy text ever since the
1500s, when an unknown printer took a galley of type and scrambled it to make a type
specimen book. It has survived not only five centuries, but also the leap into
electronic typesetting, remaining essentially unchanged. It was popularised in the
1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more
recently with desktop publishing software like Aldus PageMaker including versions of
Lorem Ipsum. "
android:textColor = "#fff"
android:textSize = "13sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignTop="@+id/body"
android:layout_marginTop="15dp"
android:gravity="center"
android:orientation="horizontal">
<ImageButton
android:id = "@+id/back"
android:layout_width = "60dp"
android:layout_height = "35dp"
android:scaleX="1.4"
android:scaleY="1.4"
android:layout_marginTop="5dp"
android:background="@color/clear_alpha"
android:contentDescription = "@string/app_name"
android:src = "@drawable/ic_baseline_skip_previous"/>
<ImageButton
android:id = "@+id/trigger"
android:scaleX="1.4"
android:scaleY="1.4"
android:layout_width = "65dp"
android:layout_height = "35dp"
android:layout_marginTop="5dp"
android:background="@color/clear_alpha"
android:contentDescription = "@string/app_name"
android:src = "@drawable/ic_baseline_play_arrow"/>
<ImageButton
android:id = "@+id/next"
android:scaleX="1.4"
android:scaleY="1.4"
android:layout_width = "60dp"
android:layout_height = "35dp"
android:layout_marginTop="5dp"
android:background="@color/clear_alpha"
android:contentDescription = "@string/app_name"
android:src = "@drawable/ic_baseline_skip_next"/>
</LinearLayout>
</RelativeLayout>

View File

@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id = "@+id/layout"
android:layout_width = "fill_parent"
android:layout_height = "67dp"
android:background = "@color/c_tab_background"
android:padding = "10dp" >
<ImageView
android:id="@+id/logo"
android:layout_marginTop="0dp"
android:layout_centerVertical="true"
android:background="@color/c_tab_border_v1"
android:layout_width="55dp"
android:layout_height="55dp" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf = "@id/logo"
android:orientation="vertical"
android:layout_toStartOf="@+id/controller"
android:layout_height="50dp">
<TextView
android:id = "@+id/header"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:maxHeight="28dp"
android:text = "Testing"
android:singleLine="true"
android:paddingEnd="70dp"
android:layout_marginEnd="5dp"
android:layout_marginStart="15dp"
android:textColor = "#fff"
android:textSize = "13sp" />
<TextView
android:id="@+id/body"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/header"
android:layout_marginStart="15dp"
android:layout_marginTop="4dp"
android:layout_marginEnd="5dp"
android:ellipsize="marquee"
android:paddingEnd="70dp"
android:singleLine="true"
android:text="Lorem Ipsum is simply dummy text of the printing and typesetting
industry. Lorem Ipsum has been the industry's standard dummy text ever since the
1500s, when an unknown printer took a galley of type and scrambled it to make a type
specimen book. It has survived not only five centuries, but also the leap into
electronic typesetting, remaining essentially unchanged. It was popularised in the
1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more
recently with desktop publishing software like Aldus PageMaker including versions of
Lorem Ipsum. "
android:textColor="#fff"
android:textSize="13sp" />
</LinearLayout>
<LinearLayout
android:layout_width="120dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:gravity="center"
android:id="@+id/controller"
android:orientation="horizontal">
<ImageButton
android:id = "@+id/trigger"
android:scaleX="1.4"
android:scaleY="1.4"
android:layout_width = "65dp"
android:layout_height = "35dp"
android:background="@color/clear_alpha"
android:contentDescription = "@string/app_name"
android:src = "@drawable/ic_baseline_play_arrow"/>
<ImageButton
android:id = "@+id/next"
android:scaleX="1.4"
android:scaleY="1.4"
android:layout_width = "60dp"
android:layout_height = "35dp"
android:background="@color/clear_alpha"
android:contentDescription = "@string/app_name"
android:src = "@drawable/ic_baseline_skip_next"/>
</LinearLayout>
</RelativeLayout>

View File

@ -311,6 +311,7 @@
android:layout_marginStart="15dp"
android:layout_marginTop="5dp"
android:layout_marginBottom="5dp"
android:visibility="gone"
android:layout_marginEnd="15dp"
android:background="@color/c_home_side" />
@ -322,6 +323,7 @@
android:background="@xml/gx_side_item"
android:clickable="true"
android:focusable="true"
android:visibility="gone"
android:onClick="onMenuItemInvoked"
android:orientation="horizontal"
app:layout_constraintEnd_toEndOf="parent"

View File

@ -631,6 +631,71 @@
</LinearLayout>
<LinearLayout
android:id="@+id/pSearchSettingOption5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:onClick="onBackgroundSound"
android:background="@xml/gx_ripple_gray"
android:orientation="horizontal"
android:weightSum="7">
<LinearLayout
android:layout_width="0dp"
android:layout_weight="6"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:layout_width="match_parent"
android:layout_height="20dp"
android:alpha="1"
android:background="@android:color/transparent"
android:clickable="false"
android:padding="0dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/SETTING_ADVANCE_BACKGROUND_MUSIC"
android:textAlignment="textStart"
android:textAllCaps="false"
android:textColor="@color/c_text_v1"
android:textSize="14sp"
tools:ignore="RtlSymmetry" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="2dp"
android:alpha="1"
android:background="@android:color/transparent"
android:clickable="false"
android:padding="0dp"
android:paddingStart="15dp"
android:paddingEnd="15dp"
android:text="@string/SETTING_ADVANCE_BACKGROUND_MUSIC_INFO"
android:textAlignment="textStart"
android:textAllCaps="false"
android:textColor="@color/c_text_v6"
android:textSize="13.5sp"
tools:ignore="RtlSymmetry" />
</LinearLayout>
<com.google.android.material.switchmaterial.SwitchMaterial
android:id="@+id/pShowBackgroundMusic"
android:clickable="false"
android:focusable="false"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:theme="@style/SCBSwitch"
android:layout_marginEnd="11dp"
android:contentDescription="@string/GENERAL_TODO" />
</LinearLayout>
</LinearLayout>
</ScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -191,7 +191,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="@xml/gx_ripple_light"
android:background="@xml/hx_border"
android:contentDescription="@string/GENERAL_TODO"
android:longClickable="true"
android:padding="20dp"

View File

@ -269,6 +269,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">قم دائمًا بتحميل صور الموقع</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">إظهار خطوط الويب</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">تنزيل الخطوط البعيدة عند تحميل الصفحة</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">الصوت في الخلفية</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">تشغيل الصوت في الخلفية</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">السماح بالتشغيل التلقائي</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">دع الوسائط تبدأ تلقائيًا</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">حافظ البيانات</string>

View File

@ -258,6 +258,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">carregueu sempre imatges del lloc web</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">mostra els tipus de lletra web</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">descarregueu fonts remotes en carregar una pàgina</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">so de fons</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Reprodueix el so en segon pla</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">permetre la reproducció automàtica</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">permet que els mitjans siniciïn automàticament</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">estalviador de dades</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">vždy načíst obrázky webových stránek</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">zobrazit webová písma</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">stáhnout vzdálená písma při načítání stránky</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">zvuk na pozadí</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Přehrát zvuk na pozadí</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">povolit automatické přehrávání</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">povolit automatické spouštění médií</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">spořič dat</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">Laden Sie immer Website-Bilder</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">Web-Schriftarten anzeigen</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">Laden Sie beim Laden einer Seite Remote-Schriftarten herunter</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">Ton im Hintergrund</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Ton im Hintergrund abspielen</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">Autoplay zulassen</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">Medien automatisch starten lassen</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">Datensparer</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">να φορτώνετε πάντα εικόνες ιστότοπου</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">εμφάνιση γραμματοσειρών ιστού</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">λήψη απομακρυσμένων γραμματοσειρών κατά τη φόρτωση μιας σελίδας</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">ήχος στο παρασκήνιο</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Αναπαραγωγή ήχου στο παρασκήνιο</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">επιτρέψτε την αυτόματη αναπαραγωγή</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">Αφήστε τα μέσα να ξεκινήσουν αυτόματα</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">εξοικονόμηση δεδομένων</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">toujours charger les images du site Web</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">show web fonts</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">télécharger des polices distantes lors du chargement d\'une page</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">son en arrière-plan</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Jouer le son en arrière-plan</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">autoriser la lecture automatique</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">permettre au média de démarrer automatiquement</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">économiseur de données</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">mindig töltsön be weboldal képeket</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">webes betűtípusok megjelenítése</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">letölthet távoli betűtípusokat egy oldal betöltése közben</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">hang a háttérben</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Hang lejátszása a háttérben</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">engedélyezze az automatikus lejátszást</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">hagyja, hogy a média automatikusan elinduljon</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">adatmentõ</string>

View File

@ -261,6 +261,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">altijd website-afbeeldingen laden</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">weblettertypen weergeven</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">download externe lettertypen bij het laden van een pagina</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">geluid op de achtergrond</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Speel geluid af op de achtergrond</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">autoplay toestaan </string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">media automatisch laten starten</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">gegevensbesparing</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">carica sempre le immagini del sito web</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">mostra i caratteri web</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">scarica i caratteri remoti durante il caricamento di una pagina</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">suono in sottofondo</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Riproduci suono in sottofondo</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">consenti riproduzione automatica</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">consentire ai media di avviarsi automaticamente</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">risparmio di dati</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">常にウェブサイトの画像を読み込む</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">Webフォントを表示する</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">ページの読み込み時にリモートフォントをダウンロードする</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">バックグラウンドでのサウンド</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">バックグラウンドでサウンドを再生する</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">自動再生を許可する</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">メディアを自動的に開始できるようにする</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">データセーバー</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">항상 웹 사이트 이미지로드</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">웹 글꼴 표시</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">페이지를로드 할 때 원격 글꼴 다운로드</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">백그라운드에서 소리</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">배경에서 소리 재생</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">자동 재생 허용</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">미디어가 자동으로 시작되도록 허용</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">데이터 세이버</string>

View File

@ -260,6 +260,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">Altijd website-afbeeldingen laden</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">Weblettertypen weergeven</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">Download externe lettertypen bij het laden van een pagina</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">geluid op de achtergrond</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Speel geluid af op de achtergrond</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">Autoplay toestaan </string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">Media automatisch starten</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">Gegevensbesparing</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">sempre carregue imagens do site</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">mostrar fontes da web</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">baixar fontes remotas ao carregar uma página</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">som de fundo</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Reproduzir som em segundo plano</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">permitir reprodução automática</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">permitir que a mídia inicie automaticamente</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">economizador de dados</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">încărcați întotdeauna imagini de pe site</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">afișați fonturi web</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">descărcați fonturi la distanță atunci când încărcați o pagină</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">sunet în fundal</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Redați sunetul în fundal</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">permite redarea automată</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">permite ca media să pornească automat</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">data saver</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">всегда загружать изображения веб-сайтов</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">показать веб-шрифты</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">загружать удаленные шрифты при загрузке страницы</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">звук в фоновом режиме</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Воспроизведение звука в фоновом режиме</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">разрешить автовоспроизведение</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">разрешить автоматический запуск медиа</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">хранитель данных</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">โหลดภาพเว็บไซต์เสมอ</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">แสดงแบบอักษรของเว็บ</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">ดาวน์โหลดฟอนต์ระยะไกลเมื่อโหลดเพจ</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC"> translatable="true"เสียงในพื้นหลัง</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">เล่นเสียงในพื้นหลัง</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">อนุญาตให้เล่นอัตโนมัติ</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">อนุญาตให้สื่อเริ่มโดยอัตโนมัติ</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">โปรแกรมประหยัดอินเทอร์เน็ต</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">her zaman web sitesi resimlerini yükle</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">web yazı tiplerini göster</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">bir sayfayı yüklerken uzak yazı tiplerini indirin</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC"> translatable="true"arka planda ses</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO"> translatable="true">Arka planda ses çal</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">otomatik oynatmaya izin ver</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">medyanın otomatik olarak başlamasına izin ver</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">veri koruyucu</string>

View File

@ -262,6 +262,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">Завжди завантажуйте зображення веб-сайтів</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">Показати веб-шрифти</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">Завантажуйте віддалені шрифти під час завантаження сторінки</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC"> translatable="true"звук у фоновому режимі</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO"> translatable="true">Відтворення звуку у фоновому режимі</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">Дозволити автовідтворення</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">Дозволити автоматичному запуску носія</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">Заощадження даних</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">ہمیشہ ویب سائٹ کی تصاویر لوڈ کریں</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">ویب فونٹس دکھائیں</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">کسی صفحے کو لوڈ کرتے وقت ریموٹ فونٹس ڈاؤن لوڈ کریں</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC"> translatable="true"پس منظر میں آواز</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO"> translatable="true">پس منظر میں آواز چلائیں۔</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">آٹو پلے کی اجازت دیں</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">میڈیا کو خود بخود شروع ہونے دیں</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">ڈیٹا سیور</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">luôn tải hình ảnh trang web</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">hiển thị phông chữ web</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">tải xuống phông chữ từ xa khi tải trang</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC"> translatable="true"âm thanh trong nền</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO"> translatable="true">Phát âm thanh ở chế độ nền</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">cho phép tự động phát</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">cho phép phương tiện tự động khởi động</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">trình tiết kiệm dữ liệu</string>

View File

@ -271,6 +271,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">始终加载网站图片</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">显示网络字体</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">加载页面时下载远程字体</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC"> translatable="true"背景声音</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO"> translatable="true">在后台播放声音</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">允许自动播放</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">允许媒体自动启动</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">数据保护器</string>

View File

@ -285,6 +285,8 @@
<string name="SETTING_ADVANCE_SHOW_IMAGES_INFO" translatable="true">Always load website images</string>
<string name="SETTING_ADVANCE_WEB_FONTS" translatable="true">Show web fonts</string>
<string name="SETTING_ADVANCE_WEB_FONTS_INFO" translatable="true">Download remote fonts when loading a page</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC" translatable="true">Background sound</string>
<string name="SETTING_ADVANCE_BACKGROUND_MUSIC_INFO" translatable="true">Play sound in background</string>
<string name="SETTING_ADVANCE_MEDIA" translatable="true">Allow autoplay</string>
<string name="SETTING_ADVANCE_MEDIA_INFO" translatable="true">Allow media to auto start</string>
<string name="SETTING_ADVANCE_DATA_SAVER" translatable="true">Data saver</string>

View File

@ -1,17 +0,0 @@
package com.example.myapplication
import org.junit.Test
import org.junit.Assert.*
/**
* Example local unit test, which will execute on the development machine (host).
*
* See [testing documentation](http://d.android.com/tools/testing).
*/
class ExampleUnitTest {
@Test
fun addition_isCorrect() {
assertEquals(4, 2 + 2)
}
}

View File

@ -1,6 +1,6 @@
/* Version */
project.ext.vname = 'Build | Dark-Origin 1.0.6.1'
project.ext.vcode = 425
project.ext.vname = 'Build | Dark-Origin 1.0.7.2'
project.ext.vcode = 465
project.ext.buildType = 'release'
/* dimension */
@ -30,7 +30,7 @@ project.ext.splitEnabled = true
/* Application Preferences */
project.ext.compile_sdk_version = 33
project.ext.min_sdk_version = 21
project.ext.target_sdk_version = 33
project.ext.target_sdk_version = 32
project.ext.build_tool_version = '33'
project.ext.ndk_version = '21.4.7075529'
project.ext.application_id = "com.hiddenservices.onionservices"

View File

@ -8,6 +8,7 @@ buildscript {
google()
mavenCentral()
mavenLocal()
maven { url 'https://artifacts.applovin.com/android' }
maven { url "https://maven.mozilla.org/maven2" }
maven { url "https://nightly.maven.mozilla.org/maven2" }
}
@ -16,6 +17,7 @@ buildscript {
classpath 'com.android.tools.build:gradle:7.3.1'
classpath 'com.google.gms:google-services:4.3.14'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
classpath "com.applovin.quality:AppLovinQualityServiceGradlePlugin:+"
}
}

View File

@ -185,7 +185,7 @@ public class OrbotService extends VpnService implements OrbotConstants {
boolean mToolbarUpdating = false;
@SuppressLint({"NewApi", "RestrictedApi"})
public void showToolbarNotification(String notifyMsg, int notifyType, int icon) {
if(!mToolbarUpdating){
if(!mToolbarUpdating && orbotLocalConstants.mNotificationStatus != 0 && orbotLocalConstants.mAppStarted){
mToolbarUpdating = true;
}else {
return;
@ -344,7 +344,7 @@ public class OrbotService extends VpnService implements OrbotConstants {
{
//sendCallbackStatus(STATUS_OFF);
orbotLocalConstants.mTorLogsStatus = "No internet connection";
if(orbotLocalConstants.mNotificationStatus!=0){
if(orbotLocalConstants.mNotificationStatus!=0 && orbotLocalConstants.mAppStarted){
showToolbarNotification(getString(R.string.newnym), getNotifyId(), R.drawable.ic_stat_tor_off);
showToolbarNotification("Genesis is sleeping | Internet connectivity issue",NOTIFY_ID,R.drawable.ic_stat_tor_off);
}
@ -353,7 +353,7 @@ public class OrbotService extends VpnService implements OrbotConstants {
{
//sendCallbackStatus(STATUS_STARTING);
if(orbotLocalConstants.mNotificationStatus!=0){
if(orbotLocalConstants.mNotificationStatus!=0 && orbotLocalConstants.mAppStarted){
showToolbarNotification(getString(R.string.status_starting_up),NOTIFY_ID,R.drawable.ic_stat_starting_tor_logo);
}
}
@ -821,7 +821,9 @@ public class OrbotService extends VpnService implements OrbotConstants {
return;
}
if(orbotLocalConstants.mNotificationStatus != 0 && orbotLocalConstants.mAppStarted ) {
mNotifyBuilder.setProgress(100, 0, false);
}
showToolbarNotification("", NOTIFY_ID, R.mipmap.ic_stat_tor_logo);
startTorService();
@ -1620,6 +1622,7 @@ public class OrbotService extends VpnService implements OrbotConstants {
}
}
}
public void onSettingRegister(){
try {
Intent intent;
@ -1636,6 +1639,7 @@ public class OrbotService extends VpnService implements OrbotConstants {
switch (intent.getAction()) {
case TorControlCommands.SIGNAL_NEWNYM: {
activityContextManager
newIdentity();
break;
}

View File

@ -19,7 +19,9 @@ public class orbotLocalConstants
public static boolean mIsManualBridge = false;
public static String mManualBridgeType = "";
public static boolean mNetworkState = true;
public static boolean mAppStarted = false;
public static String mBridgesDefault = "";
public static boolean mStartTriggered = false;
public static int mHTTPPort = 8118;
public static int mSOCKSPort = -1;