Bug 921023 - Properly re-enable mixed content blocking. r=mfinkle

This commit is contained in:
Margaret Leibovic 2013-10-01 11:42:42 -04:00
parent d043b7987a
commit 8805b1bab4
2 changed files with 18 additions and 18 deletions

View File

@ -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);
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 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", "");
GeckoAppShell.sendEventToGecko(e);
Log.e(LOGTAG, "Exception creating message to enable/disable mixed content blocking", e);
}
dismiss();

View File

@ -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;