Bug 1267467 - Strip about:reader when storing URIs in history r?margaret draft
authorAndrzej Hunt <ahunt@mozilla.com>
Tue, 10 May 2016 15:33:33 -0700
changeset 365497 b8eb56a18b3c843dd726b7be169cd1a2b608379f
parent 365496 ca152d48644344188290954228d11bcbaa32d16e
child 520575 c9d0f6799f0a68a6e337a0c4e52ee801938fb34d
push id17762
push userahunt@mozilla.com
push dateTue, 10 May 2016 22:43:25 +0000
reviewersmargaret
bugs1267467
milestone49.0a1
Bug 1267467 - Strip about:reader when storing URIs in history r?margaret MozReview-Commit-ID: JbUBMVNFdU9
mobile/android/base/java/org/mozilla/gecko/GlobalHistory.java
--- a/mobile/android/base/java/org/mozilla/gecko/GlobalHistory.java
+++ b/mobile/android/base/java/org/mozilla/gecko/GlobalHistory.java
@@ -7,16 +7,17 @@ package org.mozilla.gecko;
 
 import java.lang.ref.SoftReference;
 import java.util.HashSet;
 import java.util.LinkedList;
 import java.util.Queue;
 import java.util.Set;
 
 import org.mozilla.gecko.db.BrowserDB;
+import org.mozilla.gecko.reader.ReaderModeUtils;
 import org.mozilla.gecko.util.ThreadUtils;
 
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.Cursor;
 import android.os.Handler;
 import android.os.SystemClock;
 import android.util.Log;
@@ -113,44 +114,51 @@ class GlobalHistory {
         }
         GeckoAppShell.notifyUriVisited(uri);
     }
 
     public void add(final Context context, final BrowserDB db, String uri) {
         ThreadUtils.assertOnBackgroundThread();
         final long start = SystemClock.uptimeMillis();
 
-        db.updateVisitedHistory(context.getContentResolver(), uri);
+        // stripAboutReaderUrl only removes about:reader if present, in all other cases the original string is returned
+        final String uriToStore = ReaderModeUtils.stripAboutReaderUrl(uri);
+
+        db.updateVisitedHistory(context.getContentResolver(), uriToStore);
 
         final long end = SystemClock.uptimeMillis();
         final long took = end - start;
         Telemetry.addToHistogram(TELEMETRY_HISTOGRAM_ADD, (int) Math.min(took, Integer.MAX_VALUE));
-        addToGeckoOnly(uri);
+        addToGeckoOnly(uriToStore);
     }
 
     @SuppressWarnings("static-method")
     public void update(final ContentResolver cr, final BrowserDB db, String uri, String title) {
         ThreadUtils.assertOnBackgroundThread();
         final long start = SystemClock.uptimeMillis();
 
-        db.updateHistoryTitle(cr, uri, title);
+        final String uriToStore = ReaderModeUtils.stripAboutReaderUrl(uri);
+
+        db.updateHistoryTitle(cr, uriToStore, title);
 
         final long end = SystemClock.uptimeMillis();
         final long took = end - start;
         Telemetry.addToHistogram(TELEMETRY_HISTOGRAM_UPDATE, (int) Math.min(took, Integer.MAX_VALUE));
     }
 
     public void checkUriVisited(final String uri) {
+        final String storedURI = ReaderModeUtils.stripAboutReaderUrl(uri);
+
         final NotifierRunnable runnable = new NotifierRunnable(GeckoAppShell.getContext());
         mHandler.post(new Runnable() {
             @Override
             public void run() {
                 // this runs on the same handler thread as the processing loop,
                 // so no synchronization needed
-                mPendingUris.add(uri);
+                mPendingUris.add(storedURI);
                 if (mProcessing) {
                     // there's already a runnable queued up or working away, so
                     // no need to post another
                     return;
                 }
                 mProcessing = true;
                 mHandler.postDelayed(runnable, BATCHING_DELAY_MS);
             }