author | Nevin Chen <cnevinc@livemail.tw> |
Thu, 18 May 2017 19:39:00 -0400 | |
changeset 359990 | 04554768a8e054cfbf52197d3a998afceea4c767 |
parent 359989 | cbcf6ffad5d0f85ea23f77e322562eb85bc6afb9 |
child 359991 | 8fa35ea59bdd416eadfec7def8e9c29222d908cc |
push id | 31866 |
push user | kwierso@gmail.com |
push date | Mon, 22 May 2017 23:26:23 +0000 |
treeherder | mozilla-central@5bc1c758ab57 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | maliu |
bugs | 1358946 |
milestone | 55.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -4499,19 +4499,16 @@ Tab.prototype = { } } // Update the page actions URI for helper apps. if (BrowserApp.selectedTab == this) { ExternalApps.updatePageActionUri(fixedURI); } - // Strip reader mode URI and also make it exposable if needed - fixedURI = this._stripAboutReaderURL(fixedURI); - let message = { type: "Content:LocationChange", tabID: this.id, uri: truncate(fixedURI.spec, MAX_URI_LENGTH), userRequested: this.userRequested || "", baseDomain: baseDomain, contentType: (contentType ? contentType : ""), sameDocument: sameDocument, @@ -4528,20 +4525,16 @@ Tab.prototype = { // XXX This code assumes that this is the earliest hook we have at which // browser.contentDocument is changed to the new document we're loading this.contentDocumentIsDisplayed = false; this.hasTouchListener = false; Services.obs.notifyObservers(this.browser, "Session:NotifyLocationChange"); } }, - _stripAboutReaderURL: function (originalURI) { - return ReaderMode.getOriginalUrlObjectForDisplay(originalURI.spec) || originalURI; - }, - // Properties used to cache security state used to update the UI _state: null, _hostChanged: false, // onLocationChange will flip this bit onSecurityChange: function(aWebProgress, aRequest, aState) { // Don't need to do anything if the data we use to update the UI hasn't changed if (this._state == aState && !this._hostChanged) return;
--- a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/mozglue/SafeIntent.java +++ b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/mozglue/SafeIntent.java @@ -20,16 +20,17 @@ import java.util.ArrayList; * for more. */ public class SafeIntent { private static final String LOGTAG = "Gecko" + SafeIntent.class.getSimpleName(); private final Intent intent; public SafeIntent(final Intent intent) { + stripDataUri(intent); this.intent = intent; } public boolean hasExtra(String name) { try { return intent.hasExtra(name); } catch (OutOfMemoryError e) { Log.w(LOGTAG, "Couldn't determine if intent had an extra: OOM. Malformed?"); @@ -126,9 +127,24 @@ public class SafeIntent { Log.w(LOGTAG, "Couldn't get intent data.", e); return null; } } public Intent getUnsafe() { return intent; } + + private static void stripDataUri(final Intent intent) { + // We should limit intent filters and check incoming intents against white-list + // But for now we just strip 'about:reader?url=' + if (intent != null && intent.getData() != null) { + final String url = intent.getData().toString(); + final String prefix = "about:reader?url="; + if (url != null && url.startsWith(prefix)) { + final String strippedUrl = url.replace(prefix, ""); + if (strippedUrl != null) { + intent.setData(Uri.parse(strippedUrl)); + } + } + } + } }