[tor-commits] [tor-browser/tor-browser-60.2.1esr-8.5-1] Bug 1448305 - Avoid disk cache for icons of private tabs. r=JanH

gk at torproject.org gk at torproject.org
Thu Oct 18 18:48:43 UTC 2018


commit c04236287b17b1e8a3ca2a30344d2fe718cae788
Author: Rob Wu <rob at robwu.nl>
Date:   Thu Jun 21 15:35:39 2018 +0200

    Bug 1448305 - Avoid disk cache for icons of private tabs. r=JanH
---
 .../mozilla/gecko/icons/TestIconRequestBuilder.java | 21 +++++++++++++++++++++
 mobile/android/base/java/org/mozilla/gecko/Tab.java |  1 +
 .../java/org/mozilla/gecko/icons/IconRequest.java   |  9 +++++++++
 .../org/mozilla/gecko/icons/IconRequestBuilder.java | 10 ++++++++++
 .../gecko/icons/processing/DiskProcessor.java       |  2 +-
 5 files changed, 42 insertions(+), 1 deletion(-)

diff --git a/mobile/android/app/src/test/java/org/mozilla/gecko/icons/TestIconRequestBuilder.java b/mobile/android/app/src/test/java/org/mozilla/gecko/icons/TestIconRequestBuilder.java
index 620caa9f70d0..066febaf2b93 100644
--- a/mobile/android/app/src/test/java/org/mozilla/gecko/icons/TestIconRequestBuilder.java
+++ b/mobile/android/app/src/test/java/org/mozilla/gecko/icons/TestIconRequestBuilder.java
@@ -85,6 +85,27 @@ public class TestIconRequestBuilder {
     }
 
     @Test
+    public void testPrivateMode() {
+        IconRequest request = Icons.with(RuntimeEnvironment.application)
+                .pageUrl(TEST_PAGE_URL_1)
+                .build();
+
+        Assert.assertFalse(request.isPrivateMode());
+
+        request.modify()
+                .setPrivateMode(true)
+                .deferBuild();
+
+        Assert.assertTrue(request.isPrivateMode());
+
+        request.modify()
+                .setPrivateMode(false)
+                .deferBuild();
+
+        Assert.assertFalse(request.isPrivateMode());
+    }
+
+    @Test
     public void testSkipNetwork() {
         IconRequest request = Icons.with(RuntimeEnvironment.application)
                 .pageUrl(TEST_PAGE_URL_1)
diff --git a/mobile/android/base/java/org/mozilla/gecko/Tab.java b/mobile/android/base/java/org/mozilla/gecko/Tab.java
index 8b84a2c7db66..91c1d1571435 100644
--- a/mobile/android/base/java/org/mozilla/gecko/Tab.java
+++ b/mobile/android/base/java/org/mozilla/gecko/Tab.java
@@ -443,6 +443,7 @@ public class Tab {
         }
 
         mRunningIconRequest = mIconRequestBuilder
+                .setPrivateMode(isPrivate())
                 .build()
                 .execute(new IconCallback() {
                     @Override
diff --git a/mobile/android/base/java/org/mozilla/gecko/icons/IconRequest.java b/mobile/android/base/java/org/mozilla/gecko/icons/IconRequest.java
index 8161b9510f3f..da74a8fb5318 100644
--- a/mobile/android/base/java/org/mozilla/gecko/icons/IconRequest.java
+++ b/mobile/android/base/java/org/mozilla/gecko/icons/IconRequest.java
@@ -23,6 +23,7 @@ public class IconRequest {
     // Those values are written by the IconRequestBuilder class.
     /* package-private */ String pageUrl;
     /* package-private */ boolean privileged;
+    /* package-private */ boolean isPrivate;
     /* package-private */ TreeSet<IconDescriptor> icons;
     /* package-private */ boolean skipNetwork;
     /* package-private */ boolean backgroundThread;
@@ -40,6 +41,7 @@ public class IconRequest {
 
         // Setting some sensible defaults.
         this.privileged = false;
+        this.isPrivate = false;
         this.skipMemory = false;
         this.skipDisk = false;
         this.skipNetwork = false;
@@ -97,6 +99,13 @@ public class IconRequest {
     }
 
     /**
+     * Is this request initiated from a tab in private browsing mode?
+     */
+    public boolean isPrivateMode() {
+        return isPrivate;
+    }
+
+    /**
      * Get the number of icon descriptors associated with this request.
      */
     public int getIconCount() {
diff --git a/mobile/android/base/java/org/mozilla/gecko/icons/IconRequestBuilder.java b/mobile/android/base/java/org/mozilla/gecko/icons/IconRequestBuilder.java
index ddae3b64bc64..b2fb46e3a39f 100644
--- a/mobile/android/base/java/org/mozilla/gecko/icons/IconRequestBuilder.java
+++ b/mobile/android/base/java/org/mozilla/gecko/icons/IconRequestBuilder.java
@@ -62,6 +62,15 @@ public class IconRequestBuilder {
     }
 
     /**
+     * Set the private mode to avoid saving the result to the disk.
+     */
+    @CheckResult
+    public IconRequestBuilder setPrivateMode(boolean isPrivate) {
+        internal.isPrivate = isPrivate;
+        return this;
+    }
+
+    /**
      * Skip the network and do not load an icon from a network connection.
      */
     @CheckResult
@@ -165,6 +174,7 @@ public class IconRequestBuilder {
         IconRequest request = new IconRequest(internal.getContext());
         request.pageUrl = internal.pageUrl;
         request.privileged = internal.privileged;
+        request.isPrivate = internal.isPrivate;
         request.icons = new TreeSet<>(internal.icons);
         request.skipNetwork = internal.skipNetwork;
         request.backgroundThread = internal.backgroundThread;
diff --git a/mobile/android/base/java/org/mozilla/gecko/icons/processing/DiskProcessor.java b/mobile/android/base/java/org/mozilla/gecko/icons/processing/DiskProcessor.java
index 150aa503b83e..4923c6fc93c4 100644
--- a/mobile/android/base/java/org/mozilla/gecko/icons/processing/DiskProcessor.java
+++ b/mobile/android/base/java/org/mozilla/gecko/icons/processing/DiskProcessor.java
@@ -8,7 +8,7 @@ import org.mozilla.gecko.util.StringUtils;
 public class DiskProcessor implements Processor {
     @Override
     public void process(IconRequest request, IconResponse response) {
-        if (request.shouldSkipDisk()) {
+        if (request.shouldSkipDisk() || request.isPrivateMode()) {
             return;
         }
 





More information about the tor-commits mailing list