Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 /** | 5 /** |
| 6 * @fileoverview This file implements the ProxyFormController class, which | 6 * @fileoverview This file implements the ProxyFormController class, which |
| 7 * wraps a form element with logic that enables implementation of proxy | 7 * wraps a form element with logic that enables implementation of proxy |
| 8 * settings. | 8 * settings. |
| 9 * | 9 * |
| 10 * @author mkwst@google.com (Mike West) | 10 * @author mkwst@google.com (Mike West) |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 118 /////////////////////////////////////////////////////////////////////////////// | 118 /////////////////////////////////////////////////////////////////////////////// |
| 119 | 119 |
| 120 ProxyFormController.prototype = { | 120 ProxyFormController.prototype = { |
| 121 /** | 121 /** |
| 122 * The form's current state. | 122 * The form's current state. |
| 123 * @type {regular: ?ProxyConfig, incognito: ?ProxyConfig} | 123 * @type {regular: ?ProxyConfig, incognito: ?ProxyConfig} |
| 124 * @private | 124 * @private |
| 125 */ | 125 */ |
| 126 config_: {regular: null, incognito: null}, | 126 config_: {regular: null, incognito: null}, |
| 127 | 127 |
| 128 /** | |
| 129 * Do we have access to incognito mode? | |
| 130 * @type {boolean} | |
| 131 * @private | |
| 132 */ | |
| 133 isAllowedIncognitoAccess_: false, | |
| 128 | 134 |
| 129 /** | 135 /** |
| 130 * @return {string} The PAC file URL (or an empty string). | 136 * @return {string} The PAC file URL (or an empty string). |
| 131 */ | 137 */ |
| 132 get pacURL() { | 138 get pacURL() { |
| 133 return document.getElementById('autoconfigURL').value; | 139 return document.getElementById('autoconfigURL').value; |
| 134 }, | 140 }, |
| 135 | 141 |
| 136 | 142 |
| 137 /** | 143 /** |
| (...skipping 178 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 316 | 322 |
| 317 /////////////////////////////////////////////////////////////////////////////// | 323 /////////////////////////////////////////////////////////////////////////////// |
| 318 | 324 |
| 319 /** | 325 /** |
| 320 * Calls the proxy API to read the current settings, and populates the form | 326 * Calls the proxy API to read the current settings, and populates the form |
| 321 * accordingly. | 327 * accordingly. |
| 322 * | 328 * |
| 323 * @private | 329 * @private |
| 324 */ | 330 */ |
| 325 readCurrentState_: function() { | 331 readCurrentState_: function() { |
| 326 chrome.experimental.proxy.settings.get({incognito: false}, | 332 chrome.extension.isAllowedIncognitoAccess( |
| 327 this.handleRegularState_.bind(this)); | 333 this.handleIncognitoAccessResponse_.bind(this)); |
| 328 chrome.experimental.proxy.settings.get({incognito: true}, | |
| 329 this.handleIncognitoState_.bind(this)); | |
| 330 }, | 334 }, |
| 331 | 335 |
| 332 /** | 336 /** |
| 337 * Handles the respnse from `chrome.extension.isAllowedIncognitoAccess` | |
| 338 * We can't render the form until we know what our access level is, so | |
| 339 * we wait until we have confirmed incognito access levels before | |
| 340 * asking for the proxy state. | |
| 341 * | |
| 342 * @param {boolean} state The state of incognito access. | |
| 343 * @private | |
| 344 */ | |
| 345 handleIncognitoAccessResponse_: function(state) { | |
| 346 this.isAllowedIncognitoAccess_ = state; | |
| 347 chrome.experimental.proxy.settings.get({incognito: false}, | |
| 348 this.handleRegularState_.bind(this)); | |
| 349 if (this.isAllowedIncognitoAccess_) { | |
| 350 chrome.experimental.proxy.settings.get({incognito: true}, | |
| 351 this.handleIncognitoState_.bind(this)); | |
| 352 } | |
| 353 }, | |
| 354 | |
| 355 /** | |
| 333 * Handles the response from 'proxy.settings.get' for regular settings. | 356 * Handles the response from 'proxy.settings.get' for regular settings. |
| 334 * | 357 * |
| 335 * @param {ProxyFormController.WrappedProxyConfig} c The proxy data and | 358 * @param {ProxyFormController.WrappedProxyConfig} c The proxy data and |
| 336 * extension's level of control thereof. | 359 * extension's level of control thereof. |
| 337 * @private | 360 * @private |
| 338 */ | 361 */ |
| 339 handleRegularState_: function(c) { | 362 handleRegularState_: function(c) { |
| 340 if (c.levelOfControl === ProxyFormController.LevelOfControl.AVAILABLE || | 363 if (c.levelOfControl === ProxyFormController.LevelOfControl.AVAILABLE || |
| 341 c.levelOfControl === ProxyFormController.LevelOfControl.CONTROLLING) { | 364 c.levelOfControl === ProxyFormController.LevelOfControl.CONTROLLING) { |
| 342 this.recalcFormValues_(c.value); | 365 this.recalcFormValues_(c.value); |
| (...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 651 }, | 674 }, |
| 652 | 675 |
| 653 | 676 |
| 654 /** | 677 /** |
| 655 * Sets the form's values based on a ProxyConfig. | 678 * Sets the form's values based on a ProxyConfig. |
| 656 * | 679 * |
| 657 * @param {!ProxyConfig} c The ProxyConfig object. | 680 * @param {!ProxyConfig} c The ProxyConfig object. |
| 658 * @private | 681 * @private |
| 659 */ | 682 */ |
| 660 recalcFormValues_: function(c) { | 683 recalcFormValues_: function(c) { |
| 684 var button = document.getElementsByTagName('button')[0]; | |
| 685 button.style.display = this.isAllowedIncognitoAccess_ ? 'block' : 'none'; | |
|
kurrik.chromium
2011/03/21 22:13:02
This button now wraps to another line. I think I
Mike West
2011/03/22 08:44:56
Done.
| |
| 686 | |
|
kurrik.chromium
2011/03/21 22:13:02
I think you could also add some UI indicating how
Mike West
2011/03/22 08:44:56
Fair enough. I've reworked this section entirely;
| |
| 661 // Normalize `auto_detect` | 687 // Normalize `auto_detect` |
| 662 if (c.mode === 'auto_detect') | 688 if (c.mode === 'auto_detect') |
| 663 c.mode = 'pac_script'; | 689 c.mode = 'pac_script'; |
| 664 // Activate one of the groups, based on `mode`. | 690 // Activate one of the groups, based on `mode`. |
| 665 this.changeActive_(document.getElementById(c.mode)); | 691 this.changeActive_(document.getElementById(c.mode)); |
| 666 // Populate the PAC script | 692 // Populate the PAC script |
| 667 if (c.pacScript) { | 693 if (c.pacScript) { |
| 668 if (c.pacScript.url) | 694 if (c.pacScript.url) |
| 669 this.pacURL = c.pacScript.url; | 695 this.pacURL = c.pacScript.url; |
| 670 } else { | 696 } else { |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 735 if (response.result !== null) { | 761 if (response.result !== null) { |
| 736 var error = response.result; | 762 var error = response.result; |
| 737 console.error(error); // TODO(mkwst): Do something more interesting | 763 console.error(error); // TODO(mkwst): Do something more interesting |
| 738 this.generateAlert_( | 764 this.generateAlert_( |
| 739 chrome.i18n.getMessage('errorProxyError', error.error), | 765 chrome.i18n.getMessage('errorProxyError', error.error), |
| 740 false); | 766 false); |
| 741 } | 767 } |
| 742 chrome.extension.sendRequest({type: 'clearError'}); | 768 chrome.extension.sendRequest({type: 'clearError'}); |
| 743 } | 769 } |
| 744 }; | 770 }; |
| OLD | NEW |