Backout bug 669345 and bug 669390 for leaking

This commit is contained in:
Blair McBride 2011-08-09 18:45:26 +12:00
parent facaa70870
commit a82fb9c32e
10 changed files with 7 additions and 209 deletions

View File

@ -59,11 +59,6 @@ setting[type="directory"] {
-moz-binding: url("chrome://mozapps/content/extensions/setting.xml#setting-path");
}
setting[type="radio"],
setting[type="menulist"] {
-moz-binding: url("chrome://mozapps/content/extensions/setting.xml#setting-multi");
}
#browsers > notificationbox {
-moz-binding: url("chrome://browser/content/notification.xml#stacked-notificationbox");
overflow: -moz-hidden-unscrollable;

View File

@ -434,14 +434,14 @@
oncommand="BrowserUI.newTab('about:fennec', Browser.selectedTab);"/>
#endif
</setting>
<setting id="prefs-uilanguage" title="&language.title;" type="menulist">
<setting id="prefs-uilanguage" title="&language.title;" type="control">
<menulist id="prefs-languages" oncommand="PreferencesView.updateLocale();">
<menupopup>
<menuitem id="prefs-languages-auto" label="&language.auto;" value="auto"/>
</menupopup>
</menulist>
</setting>
<setting id="prefs-homepage" title="&homepage.title;" type="menulist">
<setting id="prefs-homepage" title="&homepage.title;" type="control">
<menulist id="prefs-homepage-options" oncommand="PreferencesView.updateHomePage();">
<menupopup onpopupshowing="PreferencesView.updateHomePageList();">
<menuitem id="prefs-homepage-default" label="&homepage.default;" value="default"/>

View File

@ -133,12 +133,6 @@ setting[type="directory"] {
-moz-binding: url("chrome://mozapps/content/extensions/setting.xml#setting-path");
}
setting[type="radio"],
setting[type="menulist"] {
display: -moz-grid-line;
-moz-binding: url("chrome://mozapps/content/extensions/setting.xml#setting-multi");
}
#addonitem-popup > menuitem[disabled="true"] {
display: none;
}

View File

@ -22,7 +22,6 @@
- Contributor(s):
- Daniel Brooks <db48x@yahoo.com>
- Mark Finkle <mfinkle@mozilla.com>
- Geoff Lankow <geoff@darktrojan.net>
-
- Alternatively, the contents of this file may be used under the terms of
- either the GNU General Public License Version 2 or later (the "GPL"), or
@ -312,7 +311,7 @@
</xul:label>
</xul:vbox>
<xul:hbox anonid="input-container" class="setting-input">
<children includes="button"/>
<children includes="button|menulist"/>
</xul:hbox>
</content>
</binding>
@ -472,72 +471,4 @@
</property>
</implementation>
</binding>
<binding id="setting-multi" extends="chrome://mozapps/content/extensions/setting.xml#setting-base">
<content>
<xul:vbox class="setting-label">
<xul:label class="preferences-title" xbl:inherits="value=title" crop="end" flex="1"/>
<xul:label class="preferences-description" xbl:inherits="value=desc" crop="end" flex="1">
<children/>
</xul:label>
</xul:vbox>
<xul:hbox class="setting-input">
<children include="radiogroup,menulist" />
</xul:hbox>
</content>
<implementation>
<constructor>
<![CDATA[
let self = this;
this.control.addEventListener("command", this.valueToPreference.bind(this), false);
]]>
</constructor>
<method name="valueFromPreference">
<body>
<![CDATA[
let val;
switch (Services.prefs.getPrefType(this.pref)) {
case Ci.nsIPrefBranch.PREF_STRING:
val = Services.prefs.getCharPref(this.pref);
break;
case Ci.nsIPrefBranch.PREF_INT:
val = Services.prefs.getIntPref(this.pref);
break;
case Ci.nsIPrefBranch.PREF_BOOL:
val = Services.prefs.getBoolPref(this.pref).toString();
break;
default:
return;
}
for (let i = 0; i < this.control.itemCount; i++) {
if (this.control.getItemAtIndex(i).value == val) {
this.control.selectedIndex = i;
break;
}
}
]]>
</body>
</method>
<method name="valueToPreference">
<body>
<![CDATA[
// We might not have a pref already set, so we guess the type from the value attribute
let val = this.control.selectedItem.value;
if (val == "true" || val == "false")
Services.prefs.setBoolPref(this.pref, val == "true");
else if (/^-?\d+$/.test(val))
Services.prefs.setIntPref(this.pref, val);
else
Services.prefs.setCharPref(this.pref, val);
]]>
</body>
</method>
<field name="control">this.getElementsByTagName(this.getAttribute("type") == "radio" ? "radiogroup" : "menulist")[0];</field>
</implementation>
</binding>
</bindings>

View File

@ -119,7 +119,6 @@ _TEST_RESOURCES = \
browser_eula.xml \
browser_purchase.xml \
discovery.html \
more_options.xul \
options.xul \
redirect.sjs \
releaseNotes.xhtml \

View File

@ -41,13 +41,6 @@ function test() {
version: "1",
optionsURL: CHROMEROOT + "options.xul",
optionsType: AddonManager.OPTIONS_TYPE_INLINE
},{
id: "inlinesettings3@tests.mozilla.org",
name: "Inline Settings (More Options)",
description: "Tests for option types introduced after Mozilla 7.0",
version: "1",
optionsURL: CHROMEROOT + "more_options.xul",
optionsType: AddonManager.OPTIONS_TYPE_INLINE
},{
id: "noninlinesettings@tests.mozilla.org",
name: "Non-Inline Settings",
@ -77,10 +70,6 @@ function end_test() {
Services.prefs.clearUserPref("extensions.inlinesettings1.color");
Services.prefs.clearUserPref("extensions.inlinesettings1.file");
Services.prefs.clearUserPref("extensions.inlinesettings1.directory");
Services.prefs.clearUserPref("extensions.inlinesettings3.radioBool");
Services.prefs.clearUserPref("extensions.inlinesettings3.radioInt");
Services.prefs.clearUserPref("extensions.inlinesettings3.radioString");
Services.prefs.clearUserPref("extensions.inlinesettings3.menulist");
close_manager(gManagerWindow, function() {
AddonManager.getAddonByID("inlinesettings1@tests.mozilla.org", function(aAddon) {
@ -266,72 +255,6 @@ add_test(function() {
});
});
// Tests for the setting.xml bindings introduced after Mozilla 7
add_test(function() {
var addon = get_addon_element(gManagerWindow, "inlinesettings3@tests.mozilla.org");
addon.parentNode.ensureElementIsVisible(addon);
var button = gManagerWindow.document.getAnonymousElementByAttribute(addon, "anonid", "preferences-btn");
EventUtils.synthesizeMouseAtCenter(button, { clickCount: 1 }, gManagerWindow);
wait_for_view_load(gManagerWindow, function() {
is(observer.lastData, "inlinesettings3@tests.mozilla.org", "Observer notification should have fired");
var grid = gManagerWindow.document.getElementById("detail-grid");
var settings = grid.querySelectorAll("rows > setting");
is(settings.length, 4, "Grid should have settings children");
// Force bindings to apply
settings[0].clientTop;
ok(settings[0].hasAttribute("first-row"), "First visible row should have first-row attribute");
Services.prefs.setBoolPref("extensions.inlinesettings3.radioBool", false);
var radios = settings[0].getElementsByTagName("radio");
isnot(radios[0].selected, true, "Correct radio button should be selected");
is(radios[1].selected, true, "Correct radio button should be selected");
EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow);
is(Services.prefs.getBoolPref("extensions.inlinesettings3.radioBool"), true, "Radio pref should have been updated");
EventUtils.synthesizeMouseAtCenter(radios[1], { clickCount: 1 }, gManagerWindow);
is(Services.prefs.getBoolPref("extensions.inlinesettings3.radioBool"), false, "Radio pref should have been updated");
ok(!settings[1].hasAttribute("first-row"), "Not the first row");
Services.prefs.setIntPref("extensions.inlinesettings3.radioInt", 5);
var radios = settings[1].getElementsByTagName("radio");
isnot(radios[0].selected, true, "Correct radio button should be selected");
is(radios[1].selected, true, "Correct radio button should be selected");
isnot(radios[2].selected, true, "Correct radio button should be selected");
EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow);
is(Services.prefs.getIntPref("extensions.inlinesettings3.radioInt"), 4, "Radio pref should have been updated");
EventUtils.synthesizeMouseAtCenter(radios[2], { clickCount: 1 }, gManagerWindow);
is(Services.prefs.getIntPref("extensions.inlinesettings3.radioInt"), 6, "Radio pref should have been updated");
ok(!settings[2].hasAttribute("first-row"), "Not the first row");
Services.prefs.setCharPref("extensions.inlinesettings3.radioString", "juliet");
var radios = settings[2].getElementsByTagName("radio");
isnot(radios[0].selected, true, "Correct radio button should be selected");
is(radios[1].selected, true, "Correct radio button should be selected");
isnot(radios[2].selected, true, "Correct radio button should be selected");
EventUtils.synthesizeMouseAtCenter(radios[0], { clickCount: 1 }, gManagerWindow);
is(Services.prefs.getCharPref("extensions.inlinesettings3.radioString"), "india", "Radio pref should have been updated");
EventUtils.synthesizeMouseAtCenter(radios[2], { clickCount: 1 }, gManagerWindow);
is(Services.prefs.getCharPref("extensions.inlinesettings3.radioString"), "kilo", "Radio pref should have been updated");
ok(!settings[3].hasAttribute("first-row"), "Not the first row");
Services.prefs.setIntPref("extensions.inlinesettings3.menulist", 8);
var input = settings[3].firstElementChild;
is(input.value, "8", "Menulist should have initial value");
input.focus();
EventUtils.synthesizeKey("n", {}, gManagerWindow);
is(input.value, "9", "Menulist should have updated value");
is(Services.prefs.getIntPref("extensions.inlinesettings3.menulist"), 9, "Menulist pref should have been updated");
button = gManagerWindow.document.getElementById("detail-prefs-btn");
is_element_hidden(button, "Preferences button should not be visible");
gCategoryUtilities.openType("extension", run_next_test);
});
});
// Addon with inline preferences as optionsURL
add_test(function() {
var addon = get_addon_element(gManagerWindow, "inlinesettings2@tests.mozilla.org");

View File

@ -1,32 +0,0 @@
<?xml version="1.0" ?>
<vbox xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<setting pref="extensions.inlinesettings3.radioBool" type="radio" title="Radio">
<radiogroup>
<radio label="Delta" value="true" />
<radio label="Echo" value="false" />
</radiogroup>
</setting>
<setting pref="extensions.inlinesettings3.radioInt" type="radio" title="Radio">
<radiogroup>
<radio label="Foxtrot" value="4" />
<radio label="Golf" value="5" />
<radio label="Hotel" value="6" />
</radiogroup>
</setting>
<setting pref="extensions.inlinesettings3.radioString" type="radio" title="Radio">
<radiogroup>
<radio label="India" value="india" />
<radio label="Juliet" value="juliet" />
<radio label="Kilo" value="kilo" />
</radiogroup>
</setting>
<setting pref="extensions.inlinesettings3.menulist" type="menulist" title="Menulist">
<menulist sizetopopup="always">
<menupopup>
<menuitem label="Lima" value="7" />
<menuitem label="Mike" value="8" />
<menuitem label="November" value="9" />
</menupopup>
</menulist>
</setting>
</vbox>

View File

@ -751,10 +751,6 @@ colorpicker[type="button"] { /* Fixes some styling inconsistencies */
margin: 1px 5px 2px 5px;
}
setting[type="radio"] > radiogroup {
-moz-box-orient: horizontal;
}
/*** creator ***/
.creator > label {

View File

@ -1084,7 +1084,7 @@ setting[type="string"] > .setting-input > textbox {
.addon-control,
setting:not([type="integer"]) button,
setting[type="menulist"] menulist,
setting[type="control"] menulist,
setting[type="color"] colorpicker[type="button"] {
-moz-appearance: none;
padding: 1px 4px;
@ -1098,10 +1098,6 @@ setting[type="color"] colorpicker[type="button"] {
text-shadow: @loweredShadow@;
}
setting[type="radio"] > radiogroup {
-moz-box-orient: horizontal;
}
.addon-control[disabled="true"] {
display: none;
}
@ -1114,7 +1110,7 @@ setting[type="color"] colorpicker[type="button"] {
.addon-control:active:hover,
setting:not([type="integer"]) button:active:hover,
setting[type="menulist"] menulist:active:hover,
setting[type="control"] menulist:active:hover,
setting[type="color"] colorpicker[type="button"]:active:hover {
box-shadow: inset 0 1px 3px rgba(0,0,0,.2), 0 1px rgba(255,255,255,0.25);
background-image: -moz-linear-gradient(rgba(45,54,71,0.3), rgba(45,54,71,0.1));

View File

@ -1085,7 +1085,7 @@ menulist { /* Fixes some styling inconsistencies */
.addon-control,
setting:not([type="integer"]) button,
setting[type="menulist"] menulist,
setting[type="control"] menulist,
setting[type="color"] colorpicker[type="button"] {
-moz-appearance: none;
color: black;
@ -1108,7 +1108,7 @@ setting[type="color"] colorpicker[type="button"] {
.addon-control:active:hover,
setting:not([type="integer"]) button:active:hover,
setting[type="menulist"] menulist:active:hover,
setting[type="control"] menulist:active:hover,
setting[type="color"] colorpicker[type="button"]:active:hover {
background-color: rgba(61, 76, 92, 0.2);
border-color: rgba(39, 53, 68, 0.5);
@ -1120,10 +1120,6 @@ setting:not([type="integer"]) button > .button-box {
padding: 1px;
}
setting[type="radio"] > radiogroup {
-moz-box-orient: horizontal;
}
.addon-control[disabled="true"] {
display: none;
}