diff --git a/mobile/android/base/SiteIdentityPopup.java b/mobile/android/base/SiteIdentityPopup.java index 58f19f53b4f..8e96940e76b 100644 --- a/mobile/android/base/SiteIdentityPopup.java +++ b/mobile/android/base/SiteIdentityPopup.java @@ -123,20 +123,13 @@ public class SiteIdentityPopup extends ArrowPopup @Override public void onButtonClick(DoorHanger dh, String tag) { - if (tag.equals("disable")) { - // To disable mixed content blocking, reload the page with a flag to load mixed content. - try { - JSONObject data = new JSONObject(); - data.put("allowMixedContent", true); - GeckoEvent e = GeckoEvent.createBroadcastEvent("Session:Reload", data.toString()); - GeckoAppShell.sendEventToGecko(e); - } catch (JSONException e) { - Log.e(LOGTAG, "Exception creating message to allow mixed content", e); - } - } else if (tag.equals("enable")) { - // To enable mixed content blocking, reload the page without any flags. - GeckoEvent e = GeckoEvent.createBroadcastEvent("Session:Reload", ""); + try { + JSONObject data = new JSONObject(); + data.put("allowMixedContent", tag.equals("disable")); + GeckoEvent e = GeckoEvent.createBroadcastEvent("Session:Reload", data.toString()); GeckoAppShell.sendEventToGecko(e); + } catch (JSONException e) { + Log.e(LOGTAG, "Exception creating message to enable/disable mixed content blocking", e); } dismiss(); diff --git a/mobile/android/chrome/content/browser.js b/mobile/android/chrome/content/browser.js index 11fac2c3f9f..2edf6b855c4 100644 --- a/mobile/android/chrome/content/browser.js +++ b/mobile/android/chrome/content/browser.js @@ -1317,17 +1317,24 @@ var BrowserApp = { break; case "Session:Reload": { - let allowMixedContent = false; + let flags = Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY | Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE; + + // Check to see if this is a message to enable/disable mixed content blocking. if (aData) { - let data = JSON.parse(aData); - allowMixedContent = data.allowMixedContent; + let allowMixedContent = JSON.parse(aData).allowMixedContent; + if (allowMixedContent) { + // Set a flag to disable mixed content blocking. + flags = Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_MIXED_CONTENT; + } else { + // Set mixedContentChannel to null to re-enable mixed content blocking. + let docShell = browser.webNavigation.QueryInterface(Ci.nsIDocShell); + docShell.mixedContentChannel = null; + } } // Try to use the session history to reload so that framesets are // handled properly. If the window has no session history, fall back // to using the web navigation's reload method. - let flags = allowMixedContent ? Ci.nsIWebNavigation.LOAD_FLAGS_ALLOW_MIXED_CONTENT : - Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_PROXY | Ci.nsIWebNavigation.LOAD_FLAGS_BYPASS_CACHE; let webNav = browser.webNavigation; try { let sh = webNav.sessionHistory;