Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6628)

Unified Diff: chrome/common/extensions/docs/examples/extensions/proxy_configuration/proxy_form_controller.js

Issue 6677108: `extension.isAllowed???Access` samples (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Rebasing, regenerating documentation again. Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/common/extensions/docs/examples/extensions/proxy_configuration/proxy_form_controller.js
diff --git a/chrome/common/extensions/docs/examples/extensions/proxy_configuration/proxy_form_controller.js b/chrome/common/extensions/docs/examples/extensions/proxy_configuration/proxy_form_controller.js
index bee5c60e028463347b46b89ead9e49b36db318e5..6b4fc09c4035e8d2553805d3ad84d2f1e46835bd 100644
--- a/chrome/common/extensions/docs/examples/extensions/proxy_configuration/proxy_form_controller.js
+++ b/chrome/common/extensions/docs/examples/extensions/proxy_configuration/proxy_form_controller.js
@@ -125,6 +125,12 @@ ProxyFormController.prototype = {
*/
config_: {regular: null, incognito: null},
+ /**
+ * Do we have access to incognito mode?
+ * @type {boolean}
+ * @private
+ */
+ isAllowedIncognitoAccess_: false,
/**
* @return {string} The PAC file URL (or an empty string).
@@ -323,10 +329,27 @@ ProxyFormController.prototype = {
* @private
*/
readCurrentState_: function() {
+ chrome.extension.isAllowedIncognitoAccess(
+ this.handleIncognitoAccessResponse_.bind(this));
+ },
+
+ /**
+ * Handles the respnse from `chrome.extension.isAllowedIncognitoAccess`
+ * We can't render the form until we know what our access level is, so
+ * we wait until we have confirmed incognito access levels before
+ * asking for the proxy state.
+ *
+ * @param {boolean} state The state of incognito access.
+ * @private
+ */
+ handleIncognitoAccessResponse_: function(state) {
+ this.isAllowedIncognitoAccess_ = state;
chrome.experimental.proxy.settings.get({incognito: false},
this.handleRegularState_.bind(this));
- chrome.experimental.proxy.settings.get({incognito: true},
- this.handleIncognitoState_.bind(this));
+ if (this.isAllowedIncognitoAccess_) {
+ chrome.experimental.proxy.settings.get({incognito: true},
+ this.handleIncognitoState_.bind(this));
+ }
},
/**
@@ -532,10 +555,10 @@ ProxyFormController.prototype = {
* @private
*/
generateAlert_: function(msg, close) {
- var success = document.createElement('p');
+ var success = document.createElement('div');
success.classList.add('overlay');
success.setAttribute('role', 'alert');
- success.innerText = msg;
+ success.textContent = msg;
document.body.appendChild(success);
setTimeout(function() { success.classList.add('visible'); }, 10);
@@ -631,6 +654,21 @@ ProxyFormController.prototype = {
toggleIncognitoMode_: function(e) {
var div = this.form_.parentNode;
var button = document.getElementsByTagName('button')[0];
+
+ // Cancel the button click.
+ e.preventDefault();
+ e.stopPropagation();
+
+ // If we can't access Incognito settings, throw a message and return.
+ if (!this.isAllowedIncognitoAccess_) {
+ var msg = "I'm sorry, Dave, I'm afraid I can't do that. Give me access " +
+ "to Incognito settings by checking the checkbox labeled " +
+ "'Allow in Incognito mode', which is visible at " +
+ "chrome://extensions.";
+ this.generateAlert_(msg, false);
+ return;
+ }
+
if (this.isIncognitoMode_()) {
// In incognito mode, switching to cognito.
this.config_.incognito = this.generateProxyConfig_();
@@ -644,10 +682,6 @@ ProxyFormController.prototype = {
this.recalcFormValues_(this.config_.incognito);
button.innerText = 'Configure regular window settings.';
}
-
- // Cancel the button click.
- e.preventDefault();
- e.stopPropagation();
},

Powered by Google App Engine
This is Rietveld 408576698