diff --git a/app/src/cliqz/java/com/cliqz/browser/controlcenter/AntiTrackingFragment.java b/app/src/cliqz/java/com/cliqz/browser/controlcenter/AntiTrackingFragment.java index d83178c37..32610524d 100644 --- a/app/src/cliqz/java/com/cliqz/browser/controlcenter/AntiTrackingFragment.java +++ b/app/src/cliqz/java/com/cliqz/browser/controlcenter/AntiTrackingFragment.java @@ -3,6 +3,13 @@ import android.content.res.Configuration; import android.net.Uri; import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.CompoundButton; +import android.widget.Switch; +import android.widget.TextView; + import androidx.annotation.LayoutRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -10,12 +17,6 @@ import androidx.appcompat.widget.AppCompatImageView; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.CompoundButton; -import android.widget.Switch; -import android.widget.TextView; import com.cliqz.browser.R; import com.cliqz.browser.main.Messages; @@ -25,12 +26,16 @@ import com.cliqz.jsengine.AntiTracking; import com.cliqz.nove.Bus; import com.cliqz.nove.Subscribe; +import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.ReadableMapKeySetIterator; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; +import java.util.List; import java.util.Locale; +import java.util.Map; import javax.inject.Inject; @@ -128,7 +133,6 @@ public void onPause() { @Nullable @Override protected View onCreateThemedView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - //noinspection ConstantConditions ControlCenterDialog.getComponent().inject(this); mAdapter = new TrackersListAdapter(mIsIncognito, this); final @LayoutRes int layout; @@ -171,10 +175,14 @@ void onChecked(boolean isEnabled) { return; } setEnabled(isEnabled); - if (isEnabled) { - attrack.removeDomainFromWhitelist(Uri.parse(mUrl).getHost()); - } else { - attrack.addDomainToWhitelist(Uri.parse(mUrl).getHost()); + final Uri uri = Uri.parse(mUrl); + final String host = uri != null ? uri.getHost() : null; + if (host != null) { + if (isEnabled) { + attrack.removeDomainFromWhitelist(host); + } else { + attrack.addDomainToWhitelist(host); + } } telemetry.sendCCToggleSignal(isEnabled, TelemetryKeys.ATTRACK); } @@ -206,7 +214,7 @@ protected void setEnabled(boolean isEnabled) { bus.post(new Messages.UpdateControlCenterIcon(status)); } - private void setTableVisibility(ArrayList details) { + private void setTableVisibility(List details) { if (!preferenceManager.isAttrackEnabled()) { antitrackingTable.setVisibility(View.GONE); trackersList.setVisibility(View.GONE); @@ -248,31 +256,74 @@ public void updateList(Messages.UpdateAntiTrackingList event) { } private void updateList() { - ArrayList details = getTrackerDetails(); + final List details = getTrackerDetails(); counter.setText(String.format(Locale.getDefault(), "%d", mTrackerCount)); mAdapter.updateList(details); setTableVisibility(details); } - private ArrayList getTrackerDetails() { + private List getTrackerDetails() { mTrackerCount = 0; - final ArrayList trackerDetails = new ArrayList<>(); final ReadableMap attrackData = attrack.getTabBlockingInfo(mHashCode); if(attrackData == null) { - return trackerDetails; + return Collections.emptyList(); } - final ReadableMapKeySetIterator iterator = attrackData.keySetIterator(); - while (iterator.hasNextKey()) { - final String companyName = iterator.nextKey(); - final int trackersCount = attrackData.getInt(companyName); - mTrackerCount += trackersCount; - trackerDetails.add(new TrackerDetailsModel(companyName, trackersCount)); + + final ReadableMap companies = attrackData.getMap("companies"); + final ReadableMap trackers = attrackData.getMap("trackers"); + final ReadableMap companyInfo = attrackData.getMap("companyInfo"); + + if (companies == null || trackers == null || companyInfo == null) { + return Collections.emptyList(); } - Collections.sort(trackerDetails, (lhs, rhs) -> { + + final Map domainsToName = new HashMap<>(); + final ReadableMapKeySetIterator companiesIterator = companies.keySetIterator(); + while (companiesIterator.hasNextKey()) { + final String companyName = companiesIterator.nextKey(); + final ReadableArray domains = companies.getArray(companyName); + if (domains == null) { + continue; + } + for (Object obj: domains.toArrayList()) { + domainsToName.put(obj.toString(), companyName); + } + } + final ReadableMapKeySetIterator trackersIterator = trackers.keySetIterator(); + final Map trackerDetails = new HashMap<>(); + while (trackersIterator.hasNextKey()) { + final String domain = trackersIterator.nextKey(); + final ReadableMap trackerInfo = trackers.getMap(domain); + if (trackerInfo == null) { + continue; + } + final int c = trackerInfo.getInt("tokens_removed"); + final String companyName = domainsToName.containsKey(domain) ? + domainsToName.get(domain) : domain; + mTrackerCount += c; + if (companyName == null) { + continue; + } + if (trackerDetails.containsKey(companyName)) { + final TrackerDetailsModel tdm = trackerDetails.get(companyName); + trackerDetails.put(companyName, new TrackerDetailsModel( + companyName, tdm.trackerCount + c, tdm.wtm)); + } else { + final ReadableMap domainInfo = companyInfo.getMap(companyName); + if (domainInfo == null) { + continue; + } + final String wtm = domainInfo.getString("wtm"); + trackerDetails.put(companyName, + new TrackerDetailsModel(companyName, c, wtm != null ? wtm : "unknown")); + } + } + final List result = new ArrayList<>(trackerDetails.values()); + Collections.sort(result, (lhs, rhs) -> { final int count = rhs.trackerCount - lhs.trackerCount; return count != 0 ? count : lhs.companyName.compareToIgnoreCase(rhs.companyName); }); - return trackerDetails; + return result; } public static AntiTrackingFragment create(@NonNull String tabId, int hashCode, String url, boolean isIncognito) { @@ -292,10 +343,14 @@ public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { return; } setEnabled(isChecked); - if (isChecked) { - attrack.removeDomainFromWhitelist(Uri.parse(mUrl).getHost()); - } else { - attrack.addDomainToWhitelist(Uri.parse(mUrl).getHost()); + final Uri uri = Uri.parse(mUrl); + final String host = uri != null ? uri.getHost() : null; + if (host != null) { + if (isChecked) { + attrack.removeDomainFromWhitelist(host); + } else { + attrack.addDomainToWhitelist(host); + } } telemetry.sendCCToggleSignal(isChecked, TelemetryKeys.ATTRACK); bus.post(new Messages.ReloadPage()); diff --git a/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackerDetailsModel.java b/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackerDetailsModel.java index 78922e77f..1771c3a03 100644 --- a/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackerDetailsModel.java +++ b/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackerDetailsModel.java @@ -1,15 +1,22 @@ package com.cliqz.browser.controlcenter; +import androidx.annotation.NonNull; + /** * Created by Ravjit on 09/08/16. */ +@SuppressWarnings("WeakerAccess") public class TrackerDetailsModel { public final String companyName; public final int trackerCount; + public final String wtm; - public TrackerDetailsModel(String companyName, int trackerCount) { + public TrackerDetailsModel(@NonNull String companyName, + int trackerCount, + @NonNull String wtm) { this.companyName = companyName; this.trackerCount = trackerCount; + this.wtm = wtm; } } diff --git a/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackersListAdapter.java b/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackersListAdapter.java index 391b6b40c..2a1904eb3 100644 --- a/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackersListAdapter.java +++ b/app/src/cliqz/java/com/cliqz/browser/controlcenter/TrackersListAdapter.java @@ -23,6 +23,7 @@ import com.facebook.react.bridge.AssertionException; import java.util.ArrayList; +import java.util.List; import java.util.Locale; import acr.browser.lightning.bus.BrowserEvents; @@ -33,7 +34,7 @@ */ class TrackersListAdapter extends RecyclerView.Adapter { - private ArrayList trackerDetails; + private List trackerDetails; private final boolean isIncognito; private final Bus bus; private final Telemetry telemetry; @@ -74,10 +75,8 @@ public void onBindViewHolder(final ViewHolder holder, int position) { final int position1 = holder.getAdapterPosition(); telemetry.sendCCCompanyInfoSignal(position1, TelemetryKeys.ATTRACK); bus.post(new Messages.DismissControlCenter()); - final String companyName = details.companyName.replaceAll("\\s", "-"); - final String url = - String.format("https://cliqz.com/whycliqz/anti-tracking/tracker#%s", companyName); - bus.post(new BrowserEvents.OpenUrlInNewTab(tabId, url, isIncognito)); + final String url = String.format("https://whotracks.me/trackers/%s.html", details.wtm); + bus.post(new BrowserEvents.OpenUrlInNewTab(tabId, url, isIncognito, true)); }); } @@ -101,7 +100,7 @@ class ViewHolder extends RecyclerView.ViewHolder { } } - void updateList(ArrayList trackerDetails) { + void updateList(List trackerDetails) { this.trackerDetails = trackerDetails; notifyDataSetChanged(); } diff --git a/app/src/main/java/com/cliqz/jsengine/AntiTracking.java b/app/src/main/java/com/cliqz/jsengine/AntiTracking.java index 66023b233..d69b36dac 100644 --- a/app/src/main/java/com/cliqz/jsengine/AntiTracking.java +++ b/app/src/main/java/com/cliqz/jsengine/AntiTracking.java @@ -1,5 +1,8 @@ package com.cliqz.jsengine; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + import com.facebook.react.bridge.NoSuchKeyException; import com.facebook.react.bridge.ReadableMap; @@ -13,7 +16,7 @@ public class AntiTracking { private final Engine engine; - public AntiTracking(Engine engine) { + public AntiTracking(@NonNull Engine engine) { this.engine = engine; } @@ -21,9 +24,10 @@ public void setEnabled(boolean enabled) throws EngineNotYetAvailable { this.engine.setPref("modules.antitracking.enabled", enabled); } + @Nullable public ReadableMap getTabBlockingInfo(final int tabId) { try { - ReadableMap response = this.engine.getBridge().callAction("antitracking:getTrackerListForTab", tabId); + ReadableMap response = this.engine.getBridge().callAction("antitracking:getTabBlockingInfo", tabId, null); return response.getMap("result"); } catch (EngineNotYetAvailable | ActionNotAvailable | EmptyResponseException | NoSuchKeyException e) { Timber.e(e, "getTabBlockingInfo error"); @@ -31,7 +35,8 @@ public ReadableMap getTabBlockingInfo(final int tabId) { return null; } - public void getTabThirdPartyInfo(final int tabId, final JSBridge.Callback callback) { + + public void getTabThirdPartyInfo(final int tabId, @NonNull final JSBridge.Callback callback) { try { this.engine.getBridge().callAction("aggregatedBlockingStats", callback, tabId); } catch (EngineNotYetAvailable e) { @@ -39,7 +44,7 @@ public void getTabThirdPartyInfo(final int tabId, final JSBridge.Callback callba } } - public boolean isWhitelisted(String url) { + public boolean isWhitelisted(@NonNull String url) { try { ReadableMap response = this.engine.getBridge().callAction("antitracking:isWhitelisted", url); return response.hasKey("result") && response.getBoolean("result"); @@ -49,15 +54,19 @@ public boolean isWhitelisted(String url) { return false; } - public void addDomainToWhitelist(final String url) { + public void addDomainToWhitelist(@NonNull final String url) { try { this.engine.getBridge().callAction("antitracking:addSourceDomainToWhitelist", new JSBridge.NoopCallback(), url); - } catch (EngineNotYetAvailable e) {} + } catch (EngineNotYetAvailable e) { + Timber.e(e, "Can't add %s to the white list", url); + } } - public void removeDomainFromWhitelist(final String url) { + public void removeDomainFromWhitelist(@NonNull final String url) { try { this.engine.getBridge().callAction("antitracking:removeSourceDomainFromWhitelist", new JSBridge.NoopCallback(), url); - } catch (EngineNotYetAvailable e) {} + } catch (EngineNotYetAvailable e) { + Timber.e(e, "Can't remove %s from the white list", url); + } } } diff --git a/build.gradle b/build.gradle index 239e25d35..0dc9c9602 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:3.4.2' + classpath 'com.android.tools.build:gradle:3.5.0' classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.6' classpath 'com.google.gms:google-services:4.2.0' classpath 'com.github.cliqz-oss:minibloomfilter:1.0' diff --git a/gradle.properties b/gradle.properties index 9ac3be7a4..d2c36c3eb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,6 +1,19 @@ +## For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html +# +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx1024m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +# +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true +#Thu Dec 05 16:48:38 CET 2019 android.builder.sdkDownload=false -org.gradle.parallel=true +android.enableJetifier=true +org.gradle.jvmargs=-Xms1024m -Dkotlin.daemon.jvm.options\="-Xmx1536M" -Xmx1536M org.gradle.daemon=true -org.gradle.jvmargs=-Xms1024m -Xmx3072m android.useAndroidX=true -android.enableJetifier=true +org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8ab7e44d5..321e769b3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Wed May 29 16:32:20 CEST 2019 +#Thu Dec 05 16:38:03 CET 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip diff --git a/package-lock.json b/package-lock.json index 538c293f4..12b5bd12f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1698,8 +1698,8 @@ } }, "browser-core": { - "version": "https://s3.amazonaws.com/cdncliqz/update/edge/cliqz-android/v3.36/1.36.0.473f877.tgz", - "integrity": "sha512-BsJZ4sS+ttL/In750md60ATGUtQgxEczHqmxoRlBzVrLY5NbUiMhHWhMytdqIeGwInCvDoI0XsvYLC14hVFVUQ==", + "version": "https://s3.amazonaws.com/cdncliqz/update/edge/cliqz-android/v3.36/1.36.0.81e6657.tgz", + "integrity": "sha512-6wxX753yQDPEdTeAbfOVrTzzhzkekADP1B+weNF4qMk1BwOkmn4yh6svz4M7aVsGvbBP1P/7d53d4xiMqWHWow==", "requires": { "@cliqz-oss/dexie": "^2.0.4", "@cliqz/adblocker-webextension": "^0.14.0", @@ -2326,9 +2326,9 @@ } }, "deep-equal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.0.tgz", - "integrity": "sha512-ZbfWJq/wN1Z273o7mUSjILYqehAktR2NVoSrOukDkU9kg2v/Uv89yU4Cvz8seJeAmtN5oqiefKq8FPuXOboqLw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", "requires": { "is-arguments": "^1.0.4", "is-date-object": "^1.0.1", @@ -2424,9 +2424,9 @@ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" }, "dom-serializer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz", - "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", "requires": { "domelementtype": "^2.0.1", "entities": "^2.0.0" @@ -2549,13 +2549,13 @@ } }, "es5-ext": { - "version": "0.10.51", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.51.tgz", - "integrity": "sha512-oRpWzM2WcLHVKpnrcyB7OW8j/s67Ba04JCm0WnNv3RiABSvs7mrQlutB8DBv793gKcp0XENR8Il8WxGTlZ73gQ==", + "version": "0.10.53", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", + "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", "requires": { "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.1", - "next-tick": "^1.0.0" + "es6-symbol": "~3.1.3", + "next-tick": "~1.0.0" } }, "es6-iterator": { @@ -2569,12 +2569,12 @@ } }, "es6-symbol": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.2.tgz", - "integrity": "sha512-/ZypxQsArlv+KHpGvng52/Iz8by3EQPxhmbuz8yFG89N/caTFBSbcXONDw0aMjy827gQg26XAjP4uXFvnfINmQ==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "requires": { "d": "^1.0.1", - "es5-ext": "^0.10.51" + "ext": "^1.1.2" } }, "escape-html": { @@ -2668,6 +2668,21 @@ "fill-range": "^2.1.0" } }, + "ext": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", + "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==" + } + } + }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -3858,9 +3873,9 @@ "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=" }, "handlebars": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.4.5.tgz", - "integrity": "sha512-0Ce31oWVB7YidkaTq33ZxEbN+UDxMMgThvCe8ptgQViymL5DPis9uLdTA13MiRPhgvqyxIegugrP97iK3JeBHg==", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.5.3.tgz", + "integrity": "sha512-3yPecJoJHK/4c6aZhSvxOyG4vJKDshV36VHp0iVCDVh7o9w2vwi3NSnL2MMPj3YdduqaBcu7cGbggJQM0br9xA==", "requires": { "neo-async": "^2.6.0", "optimist": "^0.6.1", @@ -9771,9 +9786,9 @@ "from": "git+https://github.com/brettz9/sync-promise.git#full-sync-missing-promise-features" }, "tablesorter": { - "version": "2.31.1", - "resolved": "https://registry.npmjs.org/tablesorter/-/tablesorter-2.31.1.tgz", - "integrity": "sha512-xXFYMu2vc73oKNWcf+hdId1Rvtl2W3zS9pJAX0BWjJcn6zmhquXCk+kuBQzKid/Iq/T8ERPlyAJ7q0Wkgym7Sg==", + "version": "2.31.2", + "resolved": "https://registry.npmjs.org/tablesorter/-/tablesorter-2.31.2.tgz", + "integrity": "sha512-e4ubgJpHNXHWm8tR+eGt2BPAqoOCY+uOQ6PVDCgtklCtJO6VHmORmjZdtm9aYqSqWsUih72wB0nS95JiXZ2l2g==", "requires": { "jquery": ">=1.2.6" } @@ -9892,16 +9907,16 @@ "integrity": "sha1-JaZ/LG4lOyypQZd7XvdELvl6YEY=" }, "tldts-core": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.6.1.tgz", - "integrity": "sha512-ikhUCHoiRu0QzQpba0f0q1Km5YBnn4qsBzGlYCzT3y3wSCGG2GlV0xeEOcXTzp2pRne6bQaHRry4TINMZpDFKQ==" + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-5.6.2.tgz", + "integrity": "sha512-2dXHiqoqQ2bGen1SqSdwPWsZ5JiDKXW3CxdEZ9kyTfDZ/PBj8JaYiVAybn3W5IDtRqYB8ewHDScIYOedzE/lhg==" }, "tldts-experimental": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/tldts-experimental/-/tldts-experimental-5.6.1.tgz", - "integrity": "sha512-FKhWJwTI60GMO4bAU+wLQ/aUd9JfPChGJjUXvvV36nEf38Eg/ym8G6rmTY0Hr0FRAcJ3QKFyRiWxcmPU0o16fg==", + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/tldts-experimental/-/tldts-experimental-5.6.2.tgz", + "integrity": "sha512-E52LynYij4+JKMZpPABi3pXYRBzQZUkBJWhOlQ2WpGqf3tJQWe8A3+BT4xbavsoHKPlaBpv+5jyzDxiJosTS5Q==", "requires": { - "tldts-core": "^5.6.1" + "tldts-core": "^5.6.2" } }, "tmp": { @@ -10198,9 +10213,9 @@ "integrity": "sha512-T3PVJ6uz8i0HzPxOF9SWzWAlfN/DavlpQqepn22xgve/5QecC+XMCAtmUNnY7C9StehaV6exjUCI801lOI7QlQ==" }, "uglify-js": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.4.tgz", - "integrity": "sha512-9Yc2i881pF4BPGhjteCXQNaXx1DCwm3dtOyBaG2hitHjLWOczw/ki8vD1bqyT3u6K0Ms/FpCShkmfg+FtlOfYA==", + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.7.1.tgz", + "integrity": "sha512-pnOF7jY82wdIhATVn87uUY/FHU+MDUdPLkmGFvGoclQmeu229eTkbG5gjGGBi3R7UuYYSEeYXY/TTY5j2aym2g==", "optional": true, "requires": { "commander": "~2.20.3", diff --git a/package.json b/package.json index 85654a0c7..dc76b5e83 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "homepage": "https://github.com/cliqz-oss/android-browser#readme", "dependencies": { "@cliqz/indexeddbshim": "^4.1.2", - "browser-core": "https://s3.amazonaws.com/cdncliqz/update/edge/cliqz-android/v3.36/1.36.0.473f877.tgz", + "browser-core": "https://s3.amazonaws.com/cdncliqz/update/edge/cliqz-android/v3.36/1.36.0.81e6657.tgz", "buffer": "5.0.7", "core-js": "2.5.3", "https-browserify": "1.0.0",