Index: chrome/browser/resources/gaia_auth/background.js |
diff --git a/chrome/browser/resources/gaia_auth/background.js b/chrome/browser/resources/gaia_auth/background.js |
index 96f9e39c8588a90e7b7167c055e460de402d8c03..a571c10e8561c6e0d9fb885300f8adfb7e7cdb45 100644 |
--- a/chrome/browser/resources/gaia_auth/background.js |
+++ b/chrome/browser/resources/gaia_auth/background.js |
@@ -4,19 +4,29 @@ |
/** |
* @fileoverview |
- * The background script of auth extension that bridges the communications |
- * between main and injected script. |
- * Here are the communications along a SAML sign-in flow: |
- * 1. Main script sends an 'onAuthStarted' signal to indicate the authentication |
- * flow is started and SAML pages might be loaded from now on; |
- * 2. After the 'onAuthTstarted' signal, injected script starts to scraping |
- * all password fields on normal page (i.e. http or https) and sends page |
- * load signal as well as the passwords to the background script here; |
+ * A background script of the auth extension that bridges the communication |
+ * between the main and injected scripts. |
+ * |
+ * Here is an overview of the communication flow when SAML is being used: |
+ * 1. The main script sends the |startAuth| signal to this background script, |
+ * indicating that the authentication flow has started and SAML pages may be |
+ * loaded from now on. |
+ * 2. A script is injected into each SAML page. The injected script sends three |
+ * main types of messages to this background script: |
+ * a) A |pageLoaded| message is sent when the page has been loaded. This is |
+ * forwarded to the main script as |onAuthPageLoaded|. |
+ * b) If the SAML provider supports the credential passing API, the API calls |
+ * are sent to this backgroudn script as |apiCall| messages. These |
+ * messages are forwarded unmodified to the main script. |
+ * c) The injected script scrapes passwords. They are sent to this background |
+ * script in |updatePassword| messages. The main script can request a list |
+ * of the scraped passwords by sending the |getScrapedPasswords| message. |
*/ |
/** |
- * BackgroundBridge holds the main script's state and the scraped passwords |
- * from the injected script to help the two collaborate. |
+ * BackgroundBridge allows the main script and the injected script to |
+ * collaborate. It forwards credentials API calls to the main script and |
+ * maintains a list of scraped passwords. |
*/ |
function BackgroundBridge() { |
} |
@@ -89,6 +99,8 @@ BackgroundBridge.prototype = { |
this.channelInjected_ = new Channel(); |
this.channelInjected_.init(port); |
this.channelInjected_.registerMessage( |
+ 'apiCall', this.onAPICall_.bind(this)); |
+ this.channelInjected_.registerMessage( |
'updatePassword', this.onUpdatePassword_.bind(this)); |
this.channelInjected_.registerMessage( |
'pageLoaded', this.onPageLoaded_.bind(this)); |
@@ -141,6 +153,10 @@ BackgroundBridge.prototype = { |
return Object.keys(passwords); |
}, |
+ onAPICall_: function(msg) { |
+ this.channelMain_.send(msg); |
+ }, |
+ |
onUpdatePassword_: function(msg) { |
if (!this.authStarted_) |
return; |