OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 cr.define('options', function() { | 5 cr.define('options', function() { |
6 var OptionsPage = options.OptionsPage; | 6 var OptionsPage = options.OptionsPage; |
7 var ArrayDataModel = cr.ui.ArrayDataModel; | 7 var ArrayDataModel = cr.ui.ArrayDataModel; |
8 var RepeatingButton = cr.ui.RepeatingButton; | 8 var RepeatingButton = cr.ui.RepeatingButton; |
9 | 9 |
10 // | 10 // |
(...skipping 14 matching lines...) Expand all Loading... |
25 syncSetupCompleted: false, | 25 syncSetupCompleted: false, |
26 | 26 |
27 /** | 27 /** |
28 * Keeps track of whether |onShowHomeButtonChanged_| has been called. See | 28 * Keeps track of whether |onShowHomeButtonChanged_| has been called. See |
29 * |onShowHomeButtonChanged_|. | 29 * |onShowHomeButtonChanged_|. |
30 * @type {bool} | 30 * @type {bool} |
31 * @private | 31 * @private |
32 */ | 32 */ |
33 onShowHomeButtonChangedCalled_: false, | 33 onShowHomeButtonChangedCalled_: false, |
34 | 34 |
| 35 /** |
| 36 * Track if page initialization is complete. All C++ UI handlers have the |
| 37 * chance to manipulate page content within their InitializePage mathods. |
| 38 * This flag is set to true after all initializers have been called. |
| 39 * @type (boolean} |
| 40 * @private |
| 41 */ |
| 42 initializationComplete_: false, |
| 43 |
35 /** @override */ | 44 /** @override */ |
36 initializePage: function() { | 45 initializePage: function() { |
37 OptionsPage.prototype.initializePage.call(this); | 46 OptionsPage.prototype.initializePage.call(this); |
38 var self = this; | 47 var self = this; |
39 | 48 |
40 // Ensure that navigation events are unblocked on uber page. A reload of | 49 // Ensure that navigation events are unblocked on uber page. A reload of |
41 // the settings page while an overlay is open would otherwise leave uber | 50 // the settings page while an overlay is open would otherwise leave uber |
42 // page in a blocked state, where tab switching is not possible. | 51 // page in a blocked state, where tab switching is not possible. |
43 uber.invokeMethodOnParent('stopInterceptingEvents'); | 52 uber.invokeMethodOnParent('stopInterceptingEvents'); |
44 | 53 |
(...skipping 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 OptionsPage.navigateToPage('factoryResetData'); | 420 OptionsPage.navigateToPage('factoryResetData'); |
412 }; | 421 }; |
413 } | 422 } |
414 }, | 423 }, |
415 | 424 |
416 /** @override */ | 425 /** @override */ |
417 didShowPage: function() { | 426 didShowPage: function() { |
418 $('search-field').focus(); | 427 $('search-field').focus(); |
419 }, | 428 }, |
420 | 429 |
| 430 /** |
| 431 * Called after all C++ UI handlers have called InitializePage to notify |
| 432 * that initialization is complete. |
| 433 * @private |
| 434 */ |
| 435 notifyInitializationComplete_: function() { |
| 436 this.initializationComplete_ = true; |
| 437 cr.dispatchSimpleEvent(document, 'initializationComplete'); |
| 438 }, |
| 439 |
421 /** | 440 /** |
422 * Event listener for the 'session.restore_on_startup' pref. | 441 * Event listener for the 'session.restore_on_startup' pref. |
423 * @param {Event} event The preference change event. | 442 * @param {Event} event The preference change event. |
424 * @private | 443 * @private |
425 */ | 444 */ |
426 onRestoreOnStartupChanged_: function(event) { | 445 onRestoreOnStartupChanged_: function(event) { |
427 /** @const */ var showHomePageValue = 0; | 446 /** @const */ var showHomePageValue = 0; |
428 | 447 |
429 if (event.value.value == showHomePageValue) { | 448 if (event.value.value == showHomePageValue) { |
430 // If the user previously selected "Show the homepage", the | 449 // If the user previously selected "Show the homepage", the |
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
539 */ | 558 */ |
540 scrollToSection_: function(section) { | 559 scrollToSection_: function(section) { |
541 var advancedSettings = $('advanced-settings'); | 560 var advancedSettings = $('advanced-settings'); |
542 var container = $('advanced-settings-container'); | 561 var container = $('advanced-settings-container'); |
543 if (advancedSettings.hidden && section.parentNode == container) { | 562 if (advancedSettings.hidden && section.parentNode == container) { |
544 this.showSection_($('advanced-settings'), | 563 this.showSection_($('advanced-settings'), |
545 $('advanced-settings-container'), | 564 $('advanced-settings-container'), |
546 /* animate */ false); | 565 /* animate */ false); |
547 this.updateAdvancedSettingsExpander_(); | 566 this.updateAdvancedSettingsExpander_(); |
548 } | 567 } |
| 568 |
| 569 if (!this.initializationComplete_) { |
| 570 var self = this; |
| 571 var callback = function() { |
| 572 document.removeEventListener('initializationComplete', callback); |
| 573 self.scrollToSection_(section); |
| 574 }; |
| 575 document.addEventListener('initializationComplete', callback); |
| 576 return; |
| 577 } |
| 578 |
549 var pageContainer = $('page-container'); | 579 var pageContainer = $('page-container'); |
550 var pageTop = parseFloat(pageContainer.style.top); | 580 var pageTop = parseFloat(pageContainer.style.top); |
551 var topSection = document.querySelector('#page-container section'); | 581 var topSection = document.querySelector('#page-container section'); |
552 var pageHeight = document.body.scrollHeight - topSection.offsetTop; | 582 var pageHeight = document.body.scrollHeight - topSection.offsetTop; |
553 var sectionTop = section.offsetTop; | 583 var sectionTop = section.offsetTop; |
554 var sectionHeight = section.offsetHeight; | 584 var sectionHeight = section.offsetHeight; |
555 var marginBottom = window.getComputedStyle(section).marginBottom; | 585 var marginBottom = window.getComputedStyle(section).marginBottom; |
556 if (marginBottom) | 586 if (marginBottom) |
557 sectionHeight += parseFloat(marginBottom); | 587 sectionHeight += parseFloat(marginBottom); |
558 if (pageHeight - pageTop < sectionTop + sectionHeight) { | 588 if (pageHeight - pageTop < sectionTop + sectionHeight) { |
(...skipping 720 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1279 | 1309 |
1280 }; | 1310 }; |
1281 | 1311 |
1282 //Forward public APIs to private implementations. | 1312 //Forward public APIs to private implementations. |
1283 [ | 1313 [ |
1284 'addBluetoothDevice', | 1314 'addBluetoothDevice', |
1285 'enableFactoryResetSection', | 1315 'enableFactoryResetSection', |
1286 'getCurrentProfile', | 1316 'getCurrentProfile', |
1287 'getStartStopSyncButton', | 1317 'getStartStopSyncButton', |
1288 'hideBluetoothSettings', | 1318 'hideBluetoothSettings', |
| 1319 'notifyInitializationComplete', |
1289 'removeBluetoothDevice', | 1320 'removeBluetoothDevice', |
1290 'removeCloudPrintConnectorSection', | 1321 'removeCloudPrintConnectorSection', |
1291 'scrollToSection', | 1322 'scrollToSection', |
1292 'setAutoOpenFileTypesDisplayed', | 1323 'setAutoOpenFileTypesDisplayed', |
1293 'setBluetoothState', | 1324 'setBluetoothState', |
1294 'setFontSize', | 1325 'setFontSize', |
1295 'setGtkThemeButtonEnabled', | 1326 'setGtkThemeButtonEnabled', |
1296 'setHighContrastCheckboxState', | 1327 'setHighContrastCheckboxState', |
1297 'setMetricsReportingCheckboxState', | 1328 'setMetricsReportingCheckboxState', |
1298 'setMetricsReportingSettingVisibility', | 1329 'setMetricsReportingSettingVisibility', |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1331 BrowserOptions.getLoggedInUsername = function() { | 1362 BrowserOptions.getLoggedInUsername = function() { |
1332 return BrowserOptions.getInstance().username_; | 1363 return BrowserOptions.getInstance().username_; |
1333 }; | 1364 }; |
1334 } | 1365 } |
1335 | 1366 |
1336 // Export | 1367 // Export |
1337 return { | 1368 return { |
1338 BrowserOptions: BrowserOptions | 1369 BrowserOptions: BrowserOptions |
1339 }; | 1370 }; |
1340 }); | 1371 }); |
OLD | NEW |