Index: chrome/browser/resources/options/manage_profile_overlay.js |
diff --git a/chrome/browser/resources/options/manage_profile_overlay.js b/chrome/browser/resources/options/manage_profile_overlay.js |
index df9862b545f1c027297dbf3f5fed425fdef660cf..4e9ae665c28f6d89104fb7b4fb7d78c76e73bbbe 100644 |
--- a/chrome/browser/resources/options/manage_profile_overlay.js |
+++ b/chrome/browser/resources/options/manage_profile_overlay.js |
@@ -379,27 +379,37 @@ cr.define('options', function() { |
var newName = $('create-profile-name').value; |
var i; |
for (i = 0; i < supervisedUsers.length; ++i) { |
- if (supervisedUsers[i].name == newName && |
- !supervisedUsers[i].onCurrentDevice) { |
- var errorHtml = loadTimeData.getStringF( |
- 'manageProfilesExistingSupervisedUser', |
- HTMLEscape(elide(newName, /* maxLength */ 50))); |
- this.showErrorBubble_(errorHtml, 'create', true); |
- |
- // Check if another supervised user also exists with that name. |
- var nameIsUnique = true; |
- var j; |
- for (j = i + 1; j < supervisedUsers.length; ++j) { |
- if (supervisedUsers[j].name == newName) { |
- nameIsUnique = false; |
- break; |
- } |
+ if (supervisedUsers[i].name != newName) |
+ continue; |
+ // Check if another supervised user also exists with that name. |
+ var nameIsUnique = true; |
+ // Handling the case when multiple supervised users with the same |
+ // name exist, but not all of them are on the device. |
+ // If at least one is not imported, we want to offer that |
+ // option to the user. This could happen due to a bug that allowed |
+ // creating SUs with the same name (https://crbug.com/557445). |
+ var allOnCurrentDevice = supervisedUsers[i].onCurrentDevice; |
+ var j; |
+ for (j = i + 1; j < supervisedUsers.length; ++j) { |
+ if (supervisedUsers[j].name == newName) { |
+ nameIsUnique = false; |
+ allOnCurrentDevice = allOnCurrentDevice && |
+ supervisedUsers[j].onCurrentDevice; |
} |
- $('supervised-user-import-existing').onclick = |
- this.getImportHandler_(supervisedUsers[i], nameIsUnique); |
- $('create-profile-ok').disabled = true; |
- return; |
} |
+ |
+ var errorHtml = allOnCurrentDevice ? |
+ loadTimeData.getStringF( |
+ 'managedProfilesExistingLocalSupervisedUser') : |
+ loadTimeData.getStringF( |
+ 'manageProfilesExistingSupervisedUser', |
+ HTMLEscape(elide(newName, /* maxLength */ 50))); |
+ this.showErrorBubble_(errorHtml, 'create', true); |
+ |
+ $('supervised-user-import-existing').onclick = |
+ this.getImportHandler_(supervisedUsers[i], nameIsUnique); |
+ $('create-profile-ok').disabled = true; |
+ return; |
} |
}, |