Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0082b80a authored by Guillaume Jacquart's avatar Guillaume Jacquart
Browse files

i4580 callback for new tracker call logged.

parent 265bf4e4
Loading
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -8,6 +8,7 @@ import android.widget.Button
import android.widget.TextView
import com.google.gson.Gson
import com.google.gson.annotations.SerializedName
import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule
import foundation.e.privacymodules.trackers.StatsDatabase
import foundation.e.privacymodules.trackers.Tracker
import foundation.e.privacymodules.trackers.api.TrackTrackersPrivacyModule
@@ -27,8 +28,11 @@ class MainActivity : AppCompatActivity() {

        mBtnStart = findViewById(R.id.button_start)
        mTvLog = findViewById(R.id.tv_log)

        val trackTrackersPrivacyModule = TrackTrackersPrivacyModule.getInstance(applicationContext)

        mBtnStart?.setOnClickListener { v: View? ->
            TrackTrackersPrivacyModule(applicationContext).start(trackers,
            trackTrackersPrivacyModule.start(trackers,
//            listOf(
//                Tracker(
//                    id = "1",
@@ -40,21 +44,13 @@ class MainActivity : AppCompatActivity() {
            true);
        }




        trackTrackersPrivacyModule.addListener(object: ITrackTrackersPrivacyModule.Listener {
            override fun onNewData() {
                mTvLog?.text = "Trackers: ${trackTrackersPrivacyModule.getPastDayTrackersCount()}"
            }

    override fun onResume() {
        super.onResume()

        mTvLog?.text = "Trackers: " + StatsDatabase.getInstance(this).allTrackers.map {
            it.label
        }.joinToString("\n")
        })
    }



    private fun initFromAssets() {
        try {
            val reader = InputStreamReader(getAssets().open("e_trackers.json"), "UTF-8")
+0 −10
Original line number Diff line number Diff line
@@ -38,24 +38,14 @@ import foundation.e.privacymodules.trackers.data.TrackersRepository;
public class StatsDatabase extends SQLiteOpenHelper {
    public static final int DATABASE_VERSION = 1;
    public static final String DATABASE_NAME = "TrackerFilterStats.db";
    private static StatsDatabase sStatsDatabase;
    private final Context mContext;
    private final Object lock = new Object();
    private TrackersRepository trackersRepository;

    public StatsDatabase(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
        mContext = context;
        trackersRepository = TrackersRepository.getInstance();
    }

    public static StatsDatabase getInstance(Context ct){
        if(sStatsDatabase == null){
            sStatsDatabase = new StatsDatabase(ct);
        }
        return sStatsDatabase;
    }

    public void onCreate(SQLiteDatabase db) {
        db.execSQL(SQL_CREATE_TABLE);
    }
+5 −3
Original line number Diff line number Diff line
@@ -5,17 +5,19 @@ import android.util.Log;

import java.util.concurrent.LinkedBlockingQueue;

import foundation.e.privacymodules.trackers.data.StatsRepository;


public class TrackersLogger {
    private static final String TAG = "TestTrackerModule";
    private StatsDatabase database;
    private StatsRepository statsRepository;

    private LinkedBlockingQueue<DetectedTracker> queue;
    private boolean stopped = false;


    public TrackersLogger(Context context) {
        database = StatsDatabase.getInstance(context);
        statsRepository = StatsRepository.getInstance(context);
        queue = new LinkedBlockingQueue<DetectedTracker>();
        startWriteLogLoop();
    }
@@ -48,7 +50,7 @@ public class TrackersLogger {

    public void logAccess(DetectedTracker detectedTracker) {
        Log.d(TAG, "put in database " + detectedTracker.trackerId);
        database.logAccess(detectedTracker.trackerId, detectedTracker.appUid, detectedTracker.wasBlocked);
        statsRepository.logAccess(detectedTracker.trackerId, detectedTracker.appUid, detectedTracker.wasBlocked);
    }

    private class DetectedTracker {
+33 −4
Original line number Diff line number Diff line
@@ -22,21 +22,34 @@ package foundation.e.privacymodules.trackers.api;

import android.content.Context;
import android.content.Intent;
import android.util.Log;

import java.util.ArrayList;
import java.util.List;

import foundation.e.privacymodules.trackers.IBlockTrackersPrivacyModule;
import foundation.e.privacymodules.trackers.ITrackTrackersPrivacyModule;
import foundation.e.privacymodules.trackers.Tracker;
import foundation.e.privacymodules.trackers.DNSBlockerService;
import foundation.e.privacymodules.trackers.StatsDatabase;
import foundation.e.privacymodules.trackers.data.StatsRepository;
import foundation.e.privacymodules.trackers.data.TrackersRepository;

public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule {
    private static final String TAG = "TestTrackerModule";

    private static TrackTrackersPrivacyModule sTrackTrackersPrivacyModule;
    private final Context mContext;
    private StatsRepository statsRepository;
    private List<ITrackTrackersPrivacyModule.Listener> mListeners = new ArrayList();

    public TrackTrackersPrivacyModule(Context ct) {
        mContext = ct;
        statsRepository = StatsRepository.getInstance(ct);
        statsRepository.setNewDataCallback((newData) -> {
            Log.d(TAG, "newData !!");
            mListeners.forEach((listener) -> { listener.onNewData(); });
        });
    }


@@ -52,17 +65,17 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule {

    @Override
    public List<Integer> getPastDayTrackersCalls() {
        return StatsDatabase.getInstance(mContext).getPast24h();
        return statsRepository.getPast24h();
    }

    @Override
    public List<Integer> getPastMonthTrackersCalls() {
        return StatsDatabase.getInstance(mContext).getPastMonth();
        return statsRepository.getPastMonth();
    }

    @Override
    public List<Integer> getPastYearTrackersCalls() {
        return StatsDatabase.getInstance(mContext).getPastYear();
        return statsRepository.getPastYear();
    }

    @Override
@@ -72,7 +85,7 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule {

    @Override
    public List<Tracker> getTrackersForApp(int i) {
        return StatsDatabase.getInstance(mContext).getAllTrackersOfApp(i);
        return statsRepository.getAllTrackersOfApp(i);
    }
    public static TrackTrackersPrivacyModule getInstance(Context ct){
        if(sTrackTrackersPrivacyModule == null){
@@ -106,4 +119,20 @@ public class TrackTrackersPrivacyModule implements ITrackTrackersPrivacyModule {
        /* TODO optimise */
        return sumOfList(getPastYearTrackersCalls());
    }

    @Override
    public void addListener(ITrackTrackersPrivacyModule.Listener listener) {
        mListeners.add(listener);
    }

    @Override
    public void removeListener(ITrackTrackersPrivacyModule.Listener listener) {
        mListeners.remove(listener);
    }


    @Override
    public void clearListeners() {
        mListeners.clear();
    }
}
+56 −0
Original line number Diff line number Diff line
package foundation.e.privacymodules.trackers.data;

import android.content.Context;

import java.util.List;
import java.util.function.Consumer;
import java.util.function.Supplier;

import foundation.e.privacymodules.trackers.StatsDatabase;
import foundation.e.privacymodules.trackers.Tracker;

public class StatsRepository {
    private static StatsRepository instance;

    private StatsDatabase database;

    private Consumer<Boolean> newDataCallback = null;

    private StatsRepository(Context context) {
        database = new StatsDatabase(context);
    }

    public static StatsRepository getInstance(Context context) {
        if (instance == null) {
            instance = new StatsRepository(context);
        }
        return instance;
    }

    public void setNewDataCallback(Consumer<Boolean> callback) {
        newDataCallback = callback;
    }

    public void logAccess(String trackerId, int appUid, boolean blocked) {
        database.logAccess(trackerId, appUid, blocked);
        if (newDataCallback != null) {
            newDataCallback.accept(true);
        }
    }

    public List<Integer> getPast24h() {
        return database.getPast24h();
    }

    public List<Integer> getPastMonth() {
        return database.getPastMonth();
    }

    public List<Integer> getPastYear() {
        return database.getPastYear();
    }

    public List<Tracker> getAllTrackersOfApp(int app_uid) {
        return database.getAllTrackersOfApp(app_uid);
    }
}
 No newline at end of file