From 8fdeca922dd5b137523b666b4f1aad1307f65c7e Mon Sep 17 00:00:00 2001
From: Jakub Wieczorek <fawek@fawek.net>
Date: Sat, 18 Feb 2012 21:29:31 +0100
Subject: [PATCH] Fix the issue #871

Rather than invoking the doPickEmail state directly, publish pick_email
to preserve the original dialog options.
---
 resources/static/dialog/resources/state.js     | 2 +-
 resources/static/test/cases/resources/state.js | 8 ++++++++
 2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/resources/static/dialog/resources/state.js b/resources/static/dialog/resources/state.js
index 22a3098e7..9af733f52 100644
--- a/resources/static/dialog/resources/state.js
+++ b/resources/static/dialog/resources/state.js
@@ -234,7 +234,7 @@ BrowserID.State = (function() {
         startState("doAssertionGenerated", info.assertion);
       }
       else {
-        startState("doPickEmail");
+        publish("pick_email");
       }
     });
 
diff --git a/resources/static/test/cases/resources/state.js b/resources/static/test/cases/resources/state.js
index a9e95a48b..53c972669 100644
--- a/resources/static/test/cases/resources/state.js
+++ b/resources/static/test/cases/resources/state.js
@@ -358,5 +358,13 @@
 
     equal(error, "invalid email", "expected exception thrown");
   });
+  
+  test("null assertion generated - preserve original options in doPickEmail", function() {
+    mediator.publish("start", { allowPersistent: true });
+    mediator.publish("assertion_generated", { assertion: null });
+
+    equal(actions.called.doPickEmail, true, "doPickEmail callled");
+    equal(actions.info.doPickEmail.allow_persistent, true, "allow_persistent preserved");
+  });
 
 }());
-- 
GitLab