| Index: chrome/browser/resources/settings/people_page/people_page.js
|
| diff --git a/chrome/browser/resources/settings/people_page/people_page.js b/chrome/browser/resources/settings/people_page/people_page.js
|
| index a2a61b843133325e1f3f45d0a87edd745be30545..ec625426fa28a93ab8a9f65fc7dc1c04505b9482 100644
|
| --- a/chrome/browser/resources/settings/people_page/people_page.js
|
| +++ b/chrome/browser/resources/settings/people_page/people_page.js
|
| @@ -231,6 +231,7 @@ Polymer({
|
| onDisconnectClosed_: function() {
|
| if (settings.getCurrentRoute() == settings.Route.SIGN_OUT)
|
| settings.navigateToPreviousRoute();
|
| + this.fire('signout-dialog-closed');
|
| },
|
|
|
| /** @private */
|
| @@ -247,7 +248,15 @@ Polymer({
|
| onDisconnectConfirm_: function() {
|
| var deleteProfile = !!this.syncStatus.domain ||
|
| (this.$.deleteProfile && this.$.deleteProfile.checked);
|
| - this.syncBrowserProxy_.signOut(deleteProfile);
|
| + // Trigger the sign out event after the navigateToPreviousRoute().
|
| + // So that the navigation to the setting page could be finished before the
|
| + // sign out if navigateToPreviousRoute() returns synchronously even the
|
| + // browser is closed after the sign out. Otherwise, the navigation will be
|
| + // finshed during session restore if the browser is closed before the async
|
| + // callback executed.
|
| + listenOnce(this, 'signout-dialog-closed', function() {
|
| + this.syncBrowserProxy_.signOut(deleteProfile);
|
| + }.bind(this));
|
|
|
| this.$.disconnectDialog.close();
|
| },
|
|
|