Sat, 03 Jan 2015 20:18:00 +0100
Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.
1 <?xml version="1.0"?>
2 <!-- This Source Code Form is subject to the terms of the Mozilla Public
3 - License, v. 2.0. If a copy of the MPL was not distributed with this
4 - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
7 <bindings id="scaleBindings"
8 xmlns="http://www.mozilla.org/xbl"
9 xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
10 xmlns:xbl="http://www.mozilla.org/xbl">
12 <binding id="scalethumb" extends="xul:button" role="xul:thumb">
13 <resources>
14 <stylesheet src="chrome://global/skin/scale.css"/>
15 </resources>
16 </binding>
18 <binding id="scaleslider" display="xul:slider"
19 extends="chrome://global/content/bindings/general.xml#basecontrol">
20 <resources>
21 <stylesheet src="chrome://global/skin/scale.css"/>
22 </resources>
23 </binding>
25 <binding id="scale" role="xul:scale"
26 extends="chrome://global/content/bindings/general.xml#basecontrol">
27 <resources>
28 <stylesheet src="chrome://global/skin/scale.css"/>
29 </resources>
31 <content align="center" pack="center">
32 <xul:slider anonid="slider" class="scale-slider" snap="true" flex="1"
33 xbl:inherits="disabled,orient,dir,curpos=value,minpos=min,maxpos=max,increment,pageincrement,movetoclick">
34 <xul:thumb class="scale-thumb" xbl:inherits="disabled,orient"/>
35 </xul:slider>
36 </content>
38 <implementation implements="nsISliderListener">
39 <property name="value" onget="return this._getIntegerAttribute('curpos', 0);"
40 onset="return this._setIntegerAttribute('curpos', val);"/>
41 <property name="min" onget="return this._getIntegerAttribute('minpos', 0);"
42 onset="return this._setIntegerAttribute('minpos', val);"/>
43 <property name="max" onget="return this._getIntegerAttribute('maxpos', 100);"
44 onset="return this._setIntegerAttribute('maxpos', val);"/>
45 <property name="increment" onget="return this._getIntegerAttribute('increment', 1);"
46 onset="return this._setIntegerAttribute('increment', val);"/>
47 <property name="pageIncrement" onget="return this._getIntegerAttribute('pageincrement', 10);"
48 onset="return this._setIntegerAttribute('pageincrement', val);"/>
50 <property name="_slider" readonly="true">
51 <getter>
52 if (!this._sliderElement)
53 this._sliderElement = document.getAnonymousElementByAttribute(this, "anonid", "slider");
54 return this._sliderElement;
55 </getter>
56 </property>
58 <constructor>
59 <![CDATA[
60 this._userChanged = false;
61 var value = parseInt(this.getAttribute("value"), 10);
62 if (!isNaN(value))
63 this.value = value;
64 else if (this.min > 0)
65 this.value = this.min;
66 else if (this.max < 0)
67 this.value = this.max;
68 ]]>
69 </constructor>
71 <method name="_getIntegerAttribute">
72 <parameter name="aAttr"/>
73 <parameter name="aDefaultValue"/>
74 <body>
75 var value = this._slider.getAttribute(aAttr);
76 var intvalue = parseInt(value, 10);
77 if (!isNaN(intvalue))
78 return intvalue;
79 return aDefaultValue;
80 </body>
81 </method>
83 <method name="_setIntegerAttribute">
84 <parameter name="aAttr"/>
85 <parameter name="aValue"/>
86 <body>
87 <![CDATA[
88 var intvalue = parseInt(aValue, 10);
89 if (!isNaN(intvalue)) {
90 if (aAttr == "curpos") {
91 if (intvalue < this.min)
92 intvalue = this.min;
93 else if (intvalue > this.max)
94 intvalue = this.max;
95 }
96 this._slider.setAttribute(aAttr, intvalue);
97 }
98 return aValue;
99 ]]>
100 </body>
101 </method>
103 <method name="decrease">
104 <body>
105 <![CDATA[
106 var newpos = this.value - this.increment;
107 var startpos = this.min;
108 this.value = (newpos > startpos) ? newpos : startpos;
109 ]]>
110 </body>
111 </method>
112 <method name="increase">
113 <body>
114 <![CDATA[
115 var newpos = this.value + this.increment;
116 var endpos = this.max;
117 this.value = (newpos < endpos) ? newpos : endpos;
118 ]]>
119 </body>
120 </method>
122 <method name="decreasePage">
123 <body>
124 <![CDATA[
125 var newpos = this.value - this.pageIncrement;
126 var startpos = this.min;
127 this.value = (newpos > startpos) ? newpos : startpos;
128 ]]>
129 </body>
130 </method>
131 <method name="increasePage">
132 <body>
133 <![CDATA[
134 var newpos = this.value + this.pageIncrement;
135 var endpos = this.max;
136 this.value = (newpos < endpos) ? newpos : endpos;
137 ]]>
138 </body>
139 </method>
141 <method name="valueChanged">
142 <parameter name="which"/>
143 <parameter name="newValue"/>
144 <parameter name="userChanged"/>
145 <body>
146 <![CDATA[
147 switch (which) {
148 case "curpos":
149 this.setAttribute("value", newValue);
151 // in the future, only fire the change event when userChanged
152 // or _userChanged is true
153 var changeEvent = document.createEvent("Events");
154 changeEvent.initEvent("change", true, true);
155 this.dispatchEvent(changeEvent);
156 break;
158 case "minpos":
159 this.setAttribute("min", newValue);
160 break;
162 case "maxpos":
163 this.setAttribute("max", newValue);
164 break;
165 }
166 ]]>
167 </body>
168 </method>
170 <method name="dragStateChanged">
171 <parameter name="isDragging"/>
172 <body/>
173 </method>
174 </implementation>
176 <handlers>
177 <handler event="keypress" keycode="VK_LEFT" preventdefault="true">
178 <![CDATA[
179 this._userChanged = true;
180 (this.orient != "vertical" && this.dir == "reverse") ? this.increase() : this.decrease();
181 this._userChanged = false;
182 ]]>
183 </handler>
184 <handler event="keypress" keycode="VK_RIGHT" preventdefault="true">
185 <![CDATA[
186 this._userChanged = true;
187 (this.orient != "vertical" && this.dir == "reverse") ? this.decrease() : this.increase();
188 this._userChanged = false;
189 ]]>
190 </handler>
191 <handler event="keypress" keycode="VK_UP" preventdefault="true">
192 <![CDATA[
193 this._userChanged = true;
194 (this.orient == "vertical" && this.dir != "reverse") ? this.decrease() : this.increase();
195 this._userChanged = false;
196 ]]>
197 </handler>
198 <handler event="keypress" keycode="VK_DOWN" preventdefault="true">
199 <![CDATA[
200 this._userChanged = true;
201 (this.orient == "vertical" && this.dir != "reverse") ? this.increase() : this.decrease();
202 this._userChanged = false;
203 ]]>
204 </handler>
205 <handler event="keypress" keycode="VK_PAGE_UP" preventdefault="true">
206 <![CDATA[
207 this._userChanged = true;
208 (this.orient == "vertical" && this.dir != "reverse") ? this.decreasePage() : this.increasePage();
209 this._userChanged = false;
210 ]]>
211 </handler>
212 <handler event="keypress" keycode="VK_PAGE_DOWN" preventdefault="true">
213 <![CDATA[
214 this._userChanged = true;
215 (this.orient == "vertical" && this.dir != "reverse") ? this.increasePage() : this.decreasePage();
216 this._userChanged = false;
217 ]]>
218 </handler>
219 <handler event="keypress" keycode="VK_HOME" preventdefault="true">
220 this._userChanged = true;
221 this.value = (this.dir == "reverse") ? this.max : this.min;
222 this._userChanged = false;
223 </handler>
224 <handler event="keypress" keycode="VK_END" preventdefault="true">
225 this._userChanged = true;
226 this.value = (this.dir == "reverse") ? this.min : this.max;
227 this._userChanged = false;
228 </handler>
229 </handlers>
231 </binding>
232 </bindings>