diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js index 19bd6a480bb..22fbd15278c 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js @@ -6485,9 +6485,14 @@ var gIdentityHandler = { this.setMode(this.IDENTITY_MODE_UNKNOWN); } - // Ensure the doorhanger is shown when mixed active content is blocked. - if (state & nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT) + // Show the doorhanger when: + // - mixed active content is blocked + // - mixed active content is loaded (detected but not blocked) + if (state & + (nsIWebProgressListener.STATE_BLOCKED_MIXED_ACTIVE_CONTENT | + nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT)) { this.showBadContentDoorhanger(state); + } }, showBadContentDoorhanger : function(state) { @@ -6495,7 +6500,7 @@ var gIdentityHandler = { PopupNotifications.getNotification("bad-content", gBrowser.selectedBrowser); - // If we've already got an active notification, bail out to avoid showing it repeatedly. + // Avoid showing the same notification (same state) repeatedly. if (currentNotification && currentNotification.options.state == state) return; @@ -6505,9 +6510,15 @@ var gIdentityHandler = { state: state }; + // default + let iconState = "bad-content-blocked-notification-icon"; + + if (state & Ci.nsIWebProgressListener.STATE_LOADED_MIXED_ACTIVE_CONTENT) { + iconState = "bad-content-unblocked-notification-icon"; + } + PopupNotifications.show(gBrowser.selectedBrowser, "bad-content", - "", "bad-content-blocked-notification-icon", - null, null, options); + "", iconState, null, null, options); }, /** diff --git a/browser/base/content/browser.xul b/browser/base/content/browser.xul index 0e743547f37..5a875374373 100644 --- a/browser/base/content/browser.xul +++ b/browser/base/content/browser.xul @@ -725,6 +725,7 @@ + diff --git a/browser/base/content/test/general/browser_bug822367.js b/browser/base/content/test/general/browser_bug822367.js index 457ffc0605a..6b44aafc92d 100644 --- a/browser/base/content/test/general/browser_bug822367.js +++ b/browser/base/content/test/general/browser_bug822367.js @@ -53,6 +53,7 @@ function MixedTest1A() { var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); ok(notification, "Mixed Content Doorhanger did appear"); notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked"); PopupNotifications.panel.firstChild.disableMixedContentProtection(); } function MixedTest1B() { @@ -90,6 +91,7 @@ function MixedTest3A() { var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); ok(notification, "Mixed Content Doorhanger did appear for test 3"); notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in test 3"); PopupNotifications.panel.firstChild.disableMixedContentProtection(); } function MixedTest3B() { @@ -117,6 +119,7 @@ function MixedTest4A() { var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); ok(notification, "Mixed Content Doorhanger did appear for Test 4"); notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 4"); PopupNotifications.panel.firstChild.disableMixedContentProtection(); } function MixedTest4B() { @@ -126,6 +129,9 @@ function MixedTest4C() { ok(content.document.location == gHttpTestRoot + "file_bug822367_4B.html", "Location didn't change in test 4"); var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); ok(notification, "Mixed Content Doorhanger did appear after location change in Test 4"); + notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in test 4"); + notification.remove(); waitForCondition(function() content.document.getElementById('p1').innerHTML == "", MixedTest4D, "Mixed script loaded in test 4 after location change!"); } function MixedTest4D() { @@ -146,6 +152,7 @@ function MixedTest5A() { var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); ok(notification, "Mixed Content Doorhanger did appear for Test 5"); notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 5"); PopupNotifications.panel.firstChild.disableMixedContentProtection(); } function MixedTest5B() { @@ -173,6 +180,7 @@ function MixedTest6B() { ok(notification, "Mixed Content Doorhanger did appear for Test 6"); gTestBrowser.addEventListener("load", MixedTest6C, true); notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 6"); PopupNotifications.panel.firstChild.disableMixedContentProtection(); } diff --git a/browser/base/content/test/general/browser_bug902156.js b/browser/base/content/test/general/browser_bug902156.js index 100da7f93e2..180f6376130 100644 --- a/browser/base/content/test/general/browser_bug902156.js +++ b/browser/base/content/test/general/browser_bug902156.js @@ -51,11 +51,13 @@ function test1A() { gTestBrowser.addEventListener("load", test1B, true); var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); - ok(notification, "OK: Mixed Content Doorhanger appeared in Test1A!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test1A!"); + notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test1A!"); // Disable Mixed Content Protection for the page (and reload) - notification.reshow(); PopupNotifications.panel.firstChild.disableMixedContentProtection(); + notification.remove(); } function test1B() { @@ -81,10 +83,13 @@ function test1C() { function test1D() { gTestBrowser.removeEventListener("load", test1D, true); - // The Doorhanger should not appear, because our decision of disabling the - // mixed content blocker is persistent. + // The Doorhanger should appear but isMixedContentBlocked should be NOT true, + // because our decision of disabling the mixed content blocker is persistent. var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); - ok(!notification, "OK: Mixed Content Doorhanger did not appear again in Test1D!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test1D!"); + notification.reshow(); + ok(!PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked in Test1D!"); + notification.remove(); var actual = content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 1D"); @@ -108,11 +113,13 @@ function test2A() { gTestBrowser.addEventListener("load", test2B, true); var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); - ok(notification, "OK: Mixed Content Doorhanger appeared in Test 2A!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 2A!"); + notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 2A!"); // Disable Mixed Content Protection for the page (and reload) - notification.reshow(); PopupNotifications.panel.firstChild.disableMixedContentProtection(); + notification.remove(); } function test2B() { @@ -139,10 +146,13 @@ function test2C() { function test2D() { gTestBrowser.removeEventListener("load", test2D, true); - // The Doorhanger should not appear, because our decision of disabling the - // mixed content blocker is persistent. + // The Doorhanger should appear but isMixedContentBlocked should be NOT true, + // because our decision of disabling the mixed content blocker is persistent. var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); - ok(!notification, "OK: Mixed Content Doorhanger did not appear again in Test2D!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test2D!"); + notification.reshow(); + ok(!PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked"); + notification.remove(); var actual = content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 2D"); @@ -165,7 +175,10 @@ function test3A() { gTestBrowser.removeEventListener("load", test3A, true); var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); - ok(notification, "OK: Mixed Content Doorhanger appeared in Test 3A!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 3A!"); + notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 3A"); + notification.remove(); // We are done with tests, clean up cleanUpAfterTests(); diff --git a/browser/base/content/test/general/browser_bug906190.js b/browser/base/content/test/general/browser_bug906190.js index cb3bee040aa..227107d23e9 100644 --- a/browser/base/content/test/general/browser_bug906190.js +++ b/browser/base/content/test/general/browser_bug906190.js @@ -132,11 +132,13 @@ function checkPopUpNotification() { gTestWin.gBrowser.addEventListener("load", reloadedTabAfterDisablingMCB, true); var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(notification, "OK: Mixed Content Doorhanger appeared in " + curTestName + "!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in " + curTestName + "!"); + notification.reshow(); + ok(gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in " + curTestName + "!"); // Disable Mixed Content Protection for the page (and reload page) - notification.reshow(); gTestWin.PopupNotifications.panel.firstChild.disableMixedContentProtection(); + notification.remove(); } function reloadedTabAfterDisablingMCB() { @@ -178,10 +180,13 @@ function test1A() { gTestWin.gBrowser.removeEventListener("load", test1A, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger should >> NOT << appear, because our decision of disabling the - // mixed content blocker is persistent across tabs. + // The Doorhanger should appear but isMixedContentBlocked should be >> NOT << true, + // because our decision of disabling the mixed content blocker is persistent across tabs. var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(!notification, "OK: Mixed Content Doorhanger did not appear again in Test 1A!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 1A!"); + notification.reshow(); + ok(!gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked in Test 1A!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 1A"); @@ -204,10 +209,13 @@ function test1C() { gTestWin.gBrowser.removeEventListener("load", test1C, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger should >> NOT << appear, because our decision of disabling the - // mixed content blocker is persistent across tabs. + // The Doorhanger should appear but isMixedContentBlocked should be >> NOT << true, + // because our decision of disabling the mixed content blocker is persistent across tabs. var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(!notification, "OK: Mixed Content Doorhanger did not appear again in Test 1C!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 1C!"); + notification.reshow(); + ok(!gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked in Test 1C!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 1C"); @@ -236,10 +244,13 @@ function test2A() { gTestWin.gBrowser.removeEventListener("load", test2A, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger >> SHOULD << appear, because our decision of disabling the - // mixed content blocker should only persist if pages are from the same domain. + // The Doorhanger should appear and isMixedContentBlocked should be >> TRUE <<, + // because our decision of disabling the mixed content blocker should only persist if pages are from the same domain. var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(notification, "OK: Mixed Content Doorhanger did appear again in Test 2A!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 2A!"); + notification.reshow(); + ok(gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 2A!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker enabled", "OK: Blocked mixed script in Test 2A"); @@ -262,10 +273,13 @@ function test2C() { gTestWin.gBrowser.removeEventListener("load", test2C, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger >> SHOULD << appear, because our decision of disabling the - // mixed content blocker should only persist if pages are from the same domain. + // The Doorhanger should appear and isMixedContentBlocked should be >> TRUE <<, + // because our decision of disabling the mixed content blocker should only persist if pages are from the same domain. var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(notification, "OK: Mixed Content Doorhanger did appear again in Test 2C!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 2C!"); + notification.reshow(); + ok(gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 2C!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker enabled", "OK: Blocked mixed script in Test 2C"); @@ -300,9 +314,12 @@ function test3B() { gTestWin.gBrowser.removeEventListener("load", test3B, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger should >> NOT << appear! + // The Doorhanger should appear but isMixedContentBlocked should be >> NOT << true! var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(!notification, "OK: Mixed Content Doorhanger did appear again in Test 3B!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 3B!"); + notification.reshow(); + ok(!gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked in Test 3B!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 3B"); @@ -331,9 +348,12 @@ function test3E() { gTestWin.gBrowser.removeEventListener("load", test3E, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger should >> NOT << appear! + // The Doorhanger should appear but isMixedContentBlocked should be >> NOT << true! var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(!notification, "OK: Mixed Content Doorhanger did appear again in Test 3E!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 3E!"); + notification.reshow(); + ok(!gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked in Test 3E!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 3E"); @@ -368,9 +388,12 @@ function test4B() { gTestWin.gBrowser.removeEventListener("load", test4B, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger >> SHOULD << appear! + // The Doorhanger should appear and isMixedContentBlocked should be >> TRUE << var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(notification, "OK: Mixed Content Doorhanger did appear again in Test 4B!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 4B!"); + notification.reshow(); + ok(gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 4B!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker enabled", "OK: Blocked mixed script in Test 4B"); @@ -399,9 +422,12 @@ function test4E() { gTestWin.gBrowser.removeEventListener("load", test4E, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger >> SHOULD << appear! + // The Doorhanger should appear and isMixedContentBlocked should be >> TRUE << var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(notification, "OK: Mixed Content Doorhanger did appear again in Test 4E!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 4E!"); + notification.reshow(); + ok(gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 4E!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker enabled", "OK: Blocked mixed script in Test 4E"); @@ -431,10 +457,13 @@ function test5A() { gTestWin.gBrowser.removeEventListener("load", test5A, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger should >> NOT << appear - // Currently it >> APPEARS << - see follow up bug 914860 + // The Doorhanger should appear but isMixedContentBlocked should be >> NOT << true + // Currently it is >> TRUE << - see follow up bug 914860 var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - todo(!notification, "OK: Mixed Content Doorhanger did not appear again in Test 5A!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 5A!"); + notification.reshow(); + todo(!gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked in Test 5A!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; todo_is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 5A!"); @@ -458,10 +487,13 @@ function test5C() { // move the tab again gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger should >> NOT << appear - // Currently it >> APPEARS << - see follow up bug 914860 + // The Doorhanger should appear but isMixedContentBlocked should be >> NOT << true + // Currently it is >> TRUE << - see follow up bug 914860 var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - todo(!notification, "OK: Mixed Content Doorhanger did not appear again in Test 5C!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 5C!"); + notification.reshow(); + todo(!gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is NOT being blocked in Test 5C!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; todo_is(actual, "Mixed Content Blocker disabled", "OK: Executed mixed script in Test 5C!"); @@ -491,9 +523,12 @@ function test6A() { gTestWin.gBrowser.removeEventListener("load", test6A, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger >> SHOULD << appear! + // The Doorhanger should appear and isMixedContentBlocked should be >> TRUE << var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(notification, "OK: Mixed Content Doorhanger did appear again in Test 6A!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 6A!"); + notification.reshow(); + ok(gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 6A!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker enabled", "OK: Blocked mixed script in Test 6A"); @@ -516,9 +551,12 @@ function test6C() { gTestWin.gBrowser.removeEventListener("load", test6C, true); gTestWin.gBrowser.selectTabAtIndex(2); - // The Doorhanger >> SHOULD << appear! + // The Doorhanger should appear and isMixedContentBlocked should be >> TRUE << var notification = PopupNotifications.getNotification("bad-content", gTestWin.gBrowser.selectedBrowser); - ok(notification, "OK: Mixed Content Doorhanger did appear again in Test 6C!"); + ok(notification, "OK: Mixed Content Doorhanger did appear in Test 6C!"); + notification.reshow(); + ok(gTestWin.PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked in Test 6C!"); + notification.remove(); var actual = gTestWin.content.document.getElementById('mctestdiv').innerHTML; is(actual, "Mixed Content Blocker enabled", "OK: Blocked mixed script in Test 6C"); diff --git a/browser/base/content/test/general/browser_mixedcontent_securityflags.js b/browser/base/content/test/general/browser_mixedcontent_securityflags.js index d9b2ce9c695..853a71205cf 100644 --- a/browser/base/content/test/general/browser_mixedcontent_securityflags.js +++ b/browser/base/content/test/general/browser_mixedcontent_securityflags.js @@ -41,9 +41,11 @@ function overrideMCB() gTestBrowser.addEventListener("load", mixedContentOverrideTest, true); var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); ok(notification, "Mixed Content Doorhanger should appear"); - // Click on the doorhanger to allow mixed content (and reload page) notification.reshow(); + ok(PopupNotifications.panel.firstChild.isMixedContentBlocked, "OK: Mixed Content is being blocked"); + // Click on the doorhanger to allow mixed content (and reload page) PopupNotifications.panel.firstChild.disableMixedContentProtection(); + notification.remove(); } function mixedContentOverrideTest() diff --git a/browser/base/content/urlbarBindings.xml b/browser/base/content/urlbarBindings.xml index 9f0faacfb18..02612c10f9e 100644 --- a/browser/base/content/urlbarBindings.xml +++ b/browser/base/content/urlbarBindings.xml @@ -1617,6 +1617,12 @@ + @@ -1640,10 +1646,20 @@ document.getAnonymousElementByAttribute(this, "anonid", "mixedContentAction.unblock") - + + document.getAnonymousElementByAttribute(this, "anonid", + "mixedContentProtectionDisabled") + + document.getAnonymousElementByAttribute(this, "anonid", "mixedContent.helplink") + + + + diff --git a/browser/themes/linux/bad-content-unblocked-16.png b/browser/themes/linux/bad-content-unblocked-16.png new file mode 100644 index 00000000000..027874178d0 Binary files /dev/null and b/browser/themes/linux/bad-content-unblocked-16.png differ diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css index 513f808b8dc..049112120ea 100644 --- a/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css @@ -1325,6 +1325,11 @@ toolbarbutton[sdk-button="true"][cui-areatype="toolbar"] > .toolbarbutton-icon { list-style-image: url(chrome://browser/skin/bad-content-blocked-16.png); } +.bad-content-unblocked-notification-icon, +#bad-content-unblocked-notification-icon { + list-style-image: url(chrome://browser/skin/bad-content-unblocked-16.png); +} + .webRTC-shareDevices-notification-icon, #webRTC-shareDevices-notification-icon { list-style-image: url(chrome://browser/skin/webRTC-shareDevice-16.png); diff --git a/browser/themes/linux/jar.mn b/browser/themes/linux/jar.mn index 8919e24374b..e69ea6bcbf8 100644 --- a/browser/themes/linux/jar.mn +++ b/browser/themes/linux/jar.mn @@ -42,6 +42,7 @@ browser.jar: skin/classic/browser/menuPanel-small.png skin/classic/browser/bad-content-blocked-16.png skin/classic/browser/bad-content-blocked-64.png + skin/classic/browser/bad-content-unblocked-16.png skin/classic/browser/monitor.png skin/classic/browser/monitor_16-10.png skin/classic/browser/notification-16.png diff --git a/browser/themes/osx/bad-content-unblocked-16.png b/browser/themes/osx/bad-content-unblocked-16.png new file mode 100644 index 00000000000..027874178d0 Binary files /dev/null and b/browser/themes/osx/bad-content-unblocked-16.png differ diff --git a/browser/themes/osx/bad-content-unblocked-16@2x.png b/browser/themes/osx/bad-content-unblocked-16@2x.png new file mode 100644 index 00000000000..faa2a785688 Binary files /dev/null and b/browser/themes/osx/bad-content-unblocked-16@2x.png differ diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css index f6fc0849f22..ae9fb61cd98 100644 --- a/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css @@ -3567,6 +3567,15 @@ toolbarbutton.chevron > .toolbarbutton-menu-dropmarker { } } +#bad-content-unblocked-notification-icon { + list-style-image: url(chrome://browser/skin/bad-content-unblocked-16.png); +} +@media (min-resolution: 2dppx) { + #bad-content-unblocked-notification-icon { + list-style-image: url(chrome://browser/skin/bad-content-unblocked-16@2x.png); + } +} + .webRTC-shareDevices-notification-icon, #webRTC-shareDevices-notification-icon { list-style-image: url(chrome://browser/skin/webRTC-shareDevice-16.png); diff --git a/browser/themes/osx/jar.mn b/browser/themes/osx/jar.mn index a5b419ea3c5..147cc770512 100644 --- a/browser/themes/osx/jar.mn +++ b/browser/themes/osx/jar.mn @@ -67,6 +67,8 @@ browser.jar: skin/classic/browser/bad-content-blocked-16@2x.png skin/classic/browser/bad-content-blocked-64.png skin/classic/browser/bad-content-blocked-64@2x.png + skin/classic/browser/bad-content-unblocked-16.png + skin/classic/browser/bad-content-unblocked-16@2x.png skin/classic/browser/panel-expander-closed.png skin/classic/browser/panel-expander-closed@2x.png skin/classic/browser/panel-expander-open.png diff --git a/browser/themes/shared/badcontent-doorhanger.inc.css b/browser/themes/shared/badcontent-doorhanger.inc.css index 776f28388e6..63ff4c03eea 100644 --- a/browser/themes/shared/badcontent-doorhanger.inc.css +++ b/browser/themes/shared/badcontent-doorhanger.inc.css @@ -5,3 +5,12 @@ .popup-notification-item-message[popupid="bad-content"] { width: 17em; } + +.popup-notification-item-message-critical[popupid="bad-content"] { + color: #d74345; + font-style: italic; +} + +.popup-notification-footer[popupid="bad-content"] { + padding-top: 1em; +} diff --git a/browser/themes/windows/bad-content-unblocked-16.png b/browser/themes/windows/bad-content-unblocked-16.png new file mode 100644 index 00000000000..027874178d0 Binary files /dev/null and b/browser/themes/windows/bad-content-unblocked-16.png differ diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css index fbf23370060..e580c801e60 100644 --- a/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css @@ -2337,6 +2337,11 @@ toolbarbutton.bookmark-item[dragover="true"][open="true"] { list-style-image: url(chrome://browser/skin/bad-content-blocked-16.png); } +.bad-content-unblocked-notification-icon, +#bad-content-unblocked-notification-icon { + list-style-image: url(chrome://browser/skin/bad-content-unblocked-16.png); +} + .webRTC-shareDevices-notification-icon, #webRTC-shareDevices-notification-icon { list-style-image: url(chrome://browser/skin/webRTC-shareDevice-16.png); diff --git a/browser/themes/windows/jar.mn b/browser/themes/windows/jar.mn index 82667b73bf5..1a386010db2 100644 --- a/browser/themes/windows/jar.mn +++ b/browser/themes/windows/jar.mn @@ -52,6 +52,7 @@ browser.jar: skin/classic/browser/Metro_Glyph-menuPanel.png skin/classic/browser/bad-content-blocked-16.png skin/classic/browser/bad-content-blocked-64.png + skin/classic/browser/bad-content-unblocked-16.png skin/classic/browser/monitor.png skin/classic/browser/monitor_16-10.png skin/classic/browser/notification-16.png @@ -461,6 +462,7 @@ browser.jar: skin/classic/aero/browser/Metro_Glyph-menuPanel.png skin/classic/aero/browser/bad-content-blocked-16.png skin/classic/aero/browser/bad-content-blocked-64.png + skin/classic/aero/browser/bad-content-unblocked-16.png skin/classic/aero/browser/monitor.png skin/classic/aero/browser/monitor_16-10.png skin/classic/aero/browser/notification-16.png diff --git a/content/base/test/browser_bug902350.js b/content/base/test/browser_bug902350.js index 7df6702ce8c..12b20fc22c3 100644 --- a/content/base/test/browser_bug902350.js +++ b/content/base/test/browser_bug902350.js @@ -51,9 +51,8 @@ function MixedTest1B() { topTarget.click(); // The link click should have caused a load and should not invoke the Mixed Content Blocker - var notification = PopupNotifications.getNotification("bad-content-blocked", gTestBrowser); - ok(!notification, "Mixed Content Doorhanger appears when trying to navigate top"); - + var notification = PopupNotifications.getNotification("bad-content", gTestBrowser); + ok(!notification, "Mixed Content Doorhanger did not appear when trying to navigate top"); } function MixedTest1C() {