OLD | NEW |
| (Empty) |
1 <html i18n-values="dir:textdirection;"> | |
2 <head> | |
3 <title></title> | |
4 <style type="text/css"> | |
5 body { | |
6 line-height: 1.5em; | |
7 background: #FFFFFF; | |
8 margin: 10px 15px; | |
9 font-size: 11pt; | |
10 } | |
11 html[os='mac'] body { | |
12 line-height: 1.5em; | |
13 margin: 15px 20px; | |
14 background: #FFFFFF; | |
15 } | |
16 form { | |
17 -webkit-user-select: none; | |
18 } | |
19 .sync-header { | |
20 font-size: 1.2em; | |
21 font-weight: bold; | |
22 margin-bottom: 10px; | |
23 } | |
24 .sync-select-customization { | |
25 margin-top: 10px; | |
26 } | |
27 #chooseDataTypesRadio { | |
28 vertical-align: top; | |
29 } | |
30 #chooseDataTypes > div { | |
31 display: inline-block; | |
32 } | |
33 #chooseDataTypesBody { | |
34 width: 90%; | |
35 -webkit-margin-start: 3ex; | |
36 } | |
37 #chooseDataTypesBody > div { | |
38 margin-top: 0px; | |
39 -webkit-column-count: 2; | |
40 -webkit-column-gap: 10px; | |
41 column-count: 2; | |
42 column-gap: 10px; | |
43 } | |
44 .sync-item-show { | |
45 display: block; | |
46 white-space: nowrap; | |
47 } | |
48 | |
49 .sync-item-show > label { | |
50 overflow: hidden; | |
51 white-space: nowrap; | |
52 text-overflow: ellipsis; | |
53 display: inline-block; | |
54 width: 92%; | |
55 } | |
56 | |
57 .sync-item-hide { | |
58 display: none; | |
59 } | |
60 .sync-label-inactive { | |
61 color: #9B9B9B; | |
62 } | |
63 .sync-label-active { | |
64 color: #000000; | |
65 } | |
66 .sync-data-types { | |
67 margin-left: 5px; | |
68 } | |
69 .sync-errors { | |
70 margin-top: 5px; | |
71 } | |
72 .sync-error-show { | |
73 display: block; | |
74 width: 80%; | |
75 margin-left: auto; | |
76 margin-right: auto; | |
77 text-align: center; | |
78 padding: 1px 10px; | |
79 background-color: #eeb939; | |
80 -webkit-border-radius: 4px; | |
81 font-weight: bold; | |
82 } | |
83 .sync-error-hide { | |
84 display: none; | |
85 } | |
86 .sync-footer { | |
87 position: fixed; | |
88 right: 0px; | |
89 bottom: 0px; | |
90 margin-right: 10px; | |
91 margin-bottom: 10px; | |
92 } | |
93 html[dir='rtl'] .sync-footer { | |
94 text-align: left; | |
95 left: 0px; | |
96 bottom: 0px; | |
97 margin-left: 20px; | |
98 } | |
99 #throb { | |
100 background-image: url("../../../../app/resources/throbber.png"); | |
101 width: 16px; | |
102 height: 16px; | |
103 background-position: 0px; | |
104 margin: -3px 10px; | |
105 display: inline-block; | |
106 } | |
107 input[type='button'], | |
108 input[type='submit'] { | |
109 min-width: 87px; | |
110 min-height: 26px; | |
111 } | |
112 html[os='mac'] input[type='button'], | |
113 html[os='mac'] input[type='submit'] { | |
114 font-size: 12pt; | |
115 } | |
116 | |
117 </style> | |
118 <script src="chrome://resources/js/cr.js"></script> | |
119 <script> | |
120 | |
121 // Called once, when this html/js is loaded. | |
122 function initializeChooseDataTypesDialog() { | |
123 // Allow platform specific rules | |
124 if (cr.isMac) { | |
125 document.documentElement.setAttribute('os', 'mac'); | |
126 } else if (!cr.isWindows) { | |
127 document.documentElement.setAttribute('os', 'linux'); | |
128 } | |
129 | |
130 setInterval(advanceThrobber, 30); | |
131 var args = JSON.parse(chrome.dialogArguments); | |
132 setChooseDataTypesCheckboxes(args); | |
133 } | |
134 | |
135 function setCheckboxesAndErrors(args) { | |
136 setChooseDataTypesCheckboxes(args); | |
137 setErrorState(args); | |
138 } | |
139 | |
140 // Can be called multiple times. | |
141 function setChooseDataTypesCheckboxes(args) { | |
142 setStateThrobbing(false); | |
143 | |
144 // If this frame is on top, the focus should be on it, so pressing enter | |
145 // submits this form. | |
146 if (args.iframeToShow == 'choose_data_types') { | |
147 document.getElementById("okButton").focus(); | |
148 } | |
149 | |
150 document.getElementById("keepEverythingSyncedRadio").checked = | |
151 args.keepEverythingSynced; | |
152 document.getElementById("chooseDataTypesRadio").checked = | |
153 !args.keepEverythingSynced; | |
154 setDataTypeCheckboxesEnabled(!args.keepEverythingSynced); | |
155 | |
156 document.getElementById("bookmarksCheckbox").checked = args.syncBookmarks; | |
157 document.getElementById("preferencesCheckbox").checked = | |
158 args.syncPreferences; | |
159 document.getElementById("themesCheckbox").checked = args.syncThemes; | |
160 | |
161 if (args.passwordsRegistered) { | |
162 document.getElementById("passwordsCheckbox").checked = args.syncPasswords; | |
163 document.getElementById("passwordsItem").className = "sync-item-show"; | |
164 } else { | |
165 document.getElementById("passwordsItem").className = "sync-item-hide"; | |
166 } | |
167 if (args.autofillRegistered) { | |
168 document.getElementById("autofillCheckbox").checked = args.syncAutofill; | |
169 document.getElementById("autofillItem").className = "sync-item-show"; | |
170 } else { | |
171 document.getElementById("autofillItem").className = "sync-item-hide"; | |
172 } | |
173 if (args.extensionsRegistered) { | |
174 document.getElementById("extensionsCheckbox").checked = | |
175 args.syncExtensions; | |
176 document.getElementById("extensionsItem").className = "sync-item-show"; | |
177 } else { | |
178 document.getElementById("extensionsItem").className = "sync-item-hide"; | |
179 } | |
180 if (args.typedUrlsRegistered) { | |
181 document.getElementById("typedUrlsCheckbox").checked = args.syncTypedUrls; | |
182 document.getElementById("omniboxItem").className = "sync-item-show"; | |
183 } else { | |
184 document.getElementById("omniboxItem").className = "sync-item-hide"; | |
185 } | |
186 if (args.appsRegistered) { | |
187 document.getElementById("appsCheckbox").checked = | |
188 args.syncApps; | |
189 document.getElementById("appsItem").className = "sync-item-show"; | |
190 } else { | |
191 document.getElementById("appsItem").className = "sync-item-hide"; | |
192 } | |
193 } | |
194 | |
195 function setErrorState(args) { | |
196 if (!args.was_aborted) | |
197 return; | |
198 document.getElementById("aborted_text").className = "sync-error-show"; | |
199 document.getElementById("okButton").disabled = true; | |
200 document.getElementById("keepEverythingSyncedRadio").disabled = true; | |
201 document.getElementById("chooseDataTypesRadio").disabled = true; | |
202 } | |
203 | |
204 function setDataTypeCheckboxesEnabled(enabled) { | |
205 var checkboxes = document.getElementsByName("dataTypeCheckbox"); | |
206 var labels = document.getElementsByName("dataTypeLabel"); | |
207 for (var i = 0; i < checkboxes.length; i++) { | |
208 checkboxes[i].disabled = !enabled; | |
209 if (checkboxes[i].disabled) { | |
210 labels[i].className = "sync-label-inactive"; | |
211 } else { | |
212 labels[i].className = "sync-label-active"; | |
213 } | |
214 } | |
215 } | |
216 | |
217 function advanceThrobber() { | |
218 var throbber = document.getElementById('throb'); | |
219 throbber.style.backgroundPositionX = | |
220 ((parseInt(getComputedStyle(throbber).backgroundPositionX) - 16) % | |
221 576) + 'px'; | |
222 } | |
223 | |
224 function setStateThrobbing(isThrobbing) { | |
225 var throbberContainer = document.getElementById('throbber_container'); | |
226 throbberContainer.style.visibility = isThrobbing ? "visible" : "hidden"; | |
227 | |
228 var okButton = document.getElementById('okButton'); | |
229 okButton.disabled = isThrobbing || templateData["was_aborted"]; | |
230 okButton.value = isThrobbing ? templateData['settingup'] : | |
231 templateData['ok']; | |
232 } | |
233 | |
234 // Returns true if at least one data type is enabled and no data types are | |
235 // checked. (If all data type checkboxes are disabled, it's because "keep | |
236 // everything synced" is checked.) | |
237 function noDataTypesChecked() { | |
238 var checkboxes = document.getElementsByName("dataTypeCheckbox"); | |
239 var atLeastOneChecked = false; | |
240 var atLeastOneEnabled = false; | |
241 for (var i = 0; i < checkboxes.length; i++) { | |
242 if (!checkboxes[i].disabled && checkboxes[i].style.display != 'none') { | |
243 atLeastOneEnabled = true; | |
244 if (checkboxes[i].checked) { | |
245 atLeastOneChecked = true; | |
246 } | |
247 } | |
248 } | |
249 return atLeastOneEnabled && !atLeastOneChecked; | |
250 } | |
251 | |
252 function sendChooseDataTypesAndClose() { | |
253 // Trying to submit, so hide previous errors. | |
254 document.getElementById("aborted_text").className = "sync-error-hide"; | |
255 document.getElementById("error_text").className = "sync-error-hide"; | |
256 | |
257 if (noDataTypesChecked()) { | |
258 document.getElementById("error_text").className = "sync-error-show"; | |
259 return; | |
260 } | |
261 | |
262 setStateThrobbing(true); | |
263 | |
264 var f = document.getElementById("chooseDataTypesForm"); | |
265 var syncAll = f.keepEverythingSyncedRadio.checked; | |
266 // These values need to be kept in sync with where they are read in | |
267 // SyncSetupFlow::GetDataTypeChoiceData(). | |
268 var result = JSON.stringify({ | |
269 "keepEverythingSynced": syncAll, | |
270 "syncBookmarks": syncAll || f.bookmarksCheckbox.checked, | |
271 "syncPreferences": syncAll || f.preferencesCheckbox.checked, | |
272 "syncThemes": syncAll || f.themesCheckbox.checked, | |
273 "syncPasswords": syncAll || f.passwordsCheckbox.checked, | |
274 "syncAutofill": syncAll || f.autofillCheckbox.checked, | |
275 "syncExtensions": syncAll || f.extensionsCheckbox.checked, | |
276 "syncTypedUrls": syncAll || f.typedUrlsCheckbox.checked, | |
277 "syncApps": syncAll || f.appsCheckbox.checked | |
278 }); | |
279 chrome.send("ChooseDataTypes", [result]); | |
280 } | |
281 | |
282 </script> | |
283 </head> | |
284 <body i18n-values=".style.fontFamily:fontfamily" | |
285 onload="initializeChooseDataTypesDialog();"> | |
286 <form id="chooseDataTypesForm" | |
287 onSubmit="sendChooseDataTypesAndClose(); return false;"> | |
288 | |
289 <div class="sync-header" | |
290 i18n-content="choosedatatypesheader"></div> | |
291 <div class="sync-choose_data_types_instructions" | |
292 i18n-content="choosedatatypesinstructions"></div> | |
293 <div class="sync-select-customization"> | |
294 <div class="sync-choice_radio"> | |
295 <input id="keepEverythingSyncedRadio" type="radio" name="syncChooseDataTypes" | |
296 onclick="setDataTypeCheckboxesEnabled(false)"> | |
297 <label for="keepEverythingSyncedRadio" i18n-content="keepeverythingsynced"> | |
298 </label> | |
299 </div> | |
300 <div id="chooseDataTypes" class="sync-choice_radio"> | |
301 <input id="chooseDataTypesRadio" type="radio" name="syncChooseDataTypes" | |
302 onclick="setDataTypeCheckboxesEnabled(true)"> | |
303 <label for="chooseDataTypesRadio" i18n-content="choosedatatypes" ></label> | |
304 <div id="chooseDataTypesBody"> | |
305 <div> | |
306 <!-- Apps --> | |
307 <div class="sync-item-show" id="appsItem"> | |
308 <input id="appsCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
309 <label id="appsCheckboxLabel" name="dataTypeLabel" | |
310 for="appsCheckbox" i18n-content="apps" | |
311 i18n-values="title:apps"></label> | |
312 </div> | |
313 <!-- Autofill --> | |
314 <div class="sync-item-show" id="autofillItem"> | |
315 <input id="autofillCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
316 <label id="autofillCheckboxLabel" name="dataTypeLabel" | |
317 for="autofillCheckbox" i18n-content="autofill" | |
318 i18n-values="title:autofill"></label> | |
319 </div> | |
320 <!-- Bookmarks --> | |
321 <div class="sync-item-show" id="bookmarksItem"> | |
322 <input id="bookmarksCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
323 <label id="bookmarksCheckboxLabel" name="dataTypeLabel" | |
324 for="bookmarksCheckbox" i18n-content="bookmarks" | |
325 i18n-values="title:bookmarks"></label> | |
326 </div> | |
327 <!-- Extensions --> | |
328 <div class="sync-item-show" id="extensionsItem"> | |
329 <input id="extensionsCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
330 <label id="extensionsCheckboxLabel" name="dataTypeLabel" | |
331 for="extensionsCheckbox" i18n-content="extensions" | |
332 i18n-values="title:extensions"></label> | |
333 </div> | |
334 <!-- Omnibox --> | |
335 <div class="sync-item-show" id="omniboxItem"> | |
336 <input id="typedUrlsCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
337 <label id="typedUrlsCheckboxLabel" name="dataTypeLabel" | |
338 for="typedUrlsCheckbox" i18n-content="typedurls" | |
339 i18n-values="title:typedurls"></label> | |
340 </div> | |
341 <!-- Passwords --> | |
342 <div class="sync-item-show" id="passwordsItem"> | |
343 <input id="passwordsCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
344 <label id="passwordsCheckboxLabel" name="dataTypeLabel" | |
345 for="passwordsCheckbox" i18n-content="passwords" | |
346 i18n-values="title:passwords"></label> | |
347 </div> | |
348 <!-- Preferences --> | |
349 <div class="sync-item-show" id="preferencesItem"> | |
350 <input id="preferencesCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
351 <label id="preferencesCheckboxLabel" name="dataTypeLabel" | |
352 for="preferencesCheckbox" i18n-content="preferences" | |
353 i18n-values="title:preferences"></label> | |
354 </div> | |
355 <!-- Themes --> | |
356 <div class="sync-item-show" id="themesItem"> | |
357 <input id="themesCheckbox" name="dataTypeCheckbox" type="checkbox"> | |
358 <label id="themesCheckboxLabel" name="dataTypeLabel" for="themesCheckbox" | |
359 i18n-content="themes" i18n-values="title:themes"></label> | |
360 </div> | |
361 </div> | |
362 </div> | |
363 </div> | |
364 <div class="sync-errors"> | |
365 <span id="error_text" i18n-content="synczerodatatypeserror" | |
366 class="sync-error-hide"></span> | |
367 <span id="aborted_text" i18n-content="setupabortederror" | |
368 class="sync-error-hide"></span> | |
369 </div> | |
370 <div class="sync-footer"> | |
371 <span id="throbber_container" style="visibility:hidden"> | |
372 <span id="throb"></span> | |
373 </span> | |
374 <input id="okButton" type="submit" i18n-values="value:ok" /> | |
375 <input id="cancelButton" type="button" i18n-values="value:cancel" | |
376 onclick='chrome.send("DialogClose", [""])' /> | |
377 </div> | |
378 </div> | |
379 </form> | |
380 </body> | |
381 </html> | |
OLD | NEW |