| Index: chrome/browser/extensions/extension_prefs.cc | 
| diff --git a/chrome/browser/extensions/extension_prefs.cc b/chrome/browser/extensions/extension_prefs.cc | 
| index 53bb982d1fe8d032ac5927aee306d379b69da930..aa02ea1f863a957a0cfa0b71b8d77eefb07d577f 100644 | 
| --- a/chrome/browser/extensions/extension_prefs.cc | 
| +++ b/chrome/browser/extensions/extension_prefs.cc | 
| @@ -42,9 +42,14 @@ const char kPrefManifest[] = "manifest"; | 
| // The version number. | 
| const char kPrefVersion[] = "manifest.version"; | 
|  | 
| -// Indicates if an extension is blacklisted: | 
| +// Indicates whether an extension is blacklisted. | 
| const char kPrefBlacklist[] = "blacklist"; | 
|  | 
| +// Indicates whether the user has acknowledged various types of extensions. | 
| +const char kPrefExternalAcknowledged[] = "ack_external"; | 
| +const char kPrefBlacklistAcknowledged[] = "ack_blacklist"; | 
| +const char kPrefOrphanAcknowledged[] = "ack_orphan"; | 
| + | 
| // Indicates whether to show an install warning when the user enables. | 
| const char kExtensionDidEscalatePermissions[] = "install_warning_on_enable"; | 
|  | 
| @@ -524,6 +529,57 @@ bool ExtensionPrefs::IsExtensionBlacklisted(const std::string& extension_id) { | 
| return ReadExtensionPrefBoolean(extension_id, kPrefBlacklist); | 
| } | 
|  | 
| +bool ExtensionPrefs::IsExtensionOrphaned(const std::string& extension_id) { | 
| +  // TODO(miket): we believe that this test will hinge on the number of | 
| +  // consecutive times that an update check has returned a certain response | 
| +  // versus a success response. For now nobody is orphaned. | 
| +  return false; | 
| +} | 
| + | 
| +bool ExtensionPrefs::IsExternalExtensionAcknowledged( | 
| +    const std::string& extension_id) { | 
| +  return ReadExtensionPrefBoolean(extension_id, kPrefExternalAcknowledged); | 
| +} | 
| + | 
| +void ExtensionPrefs::AcknowledgeExternalExtension( | 
| +    const std::string& extension_id) { | 
| +  DCHECK(Extension::IdIsValid(extension_id)); | 
| +  UpdateExtensionPref(extension_id, kPrefExternalAcknowledged, | 
| +                      Value::CreateBooleanValue(true)); | 
| +} | 
| + | 
| +bool ExtensionPrefs::IsBlacklistedExtensionAcknowledged( | 
| +    const std::string& extension_id) { | 
| +  return ReadExtensionPrefBoolean(extension_id, kPrefBlacklistAcknowledged); | 
| +} | 
| + | 
| +void ExtensionPrefs::AcknowledgeBlacklistedExtension( | 
| +    const std::string& extension_id) { | 
| +  DCHECK(Extension::IdIsValid(extension_id)); | 
| +  UpdateExtensionPref(extension_id, kPrefBlacklistAcknowledged, | 
| +                      Value::CreateBooleanValue(true)); | 
| +} | 
| + | 
| +bool ExtensionPrefs::IsOrphanedExtensionAcknowledged( | 
| +    const std::string& extension_id) { | 
| +  return ReadExtensionPrefBoolean(extension_id, kPrefOrphanAcknowledged); | 
| +} | 
| + | 
| +void ExtensionPrefs::AcknowledgeOrphanedExtension( | 
| +    const std::string& extension_id) { | 
| +  DCHECK(Extension::IdIsValid(extension_id)); | 
| +  UpdateExtensionPref(extension_id, kPrefOrphanAcknowledged, | 
| +                      Value::CreateBooleanValue(true)); | 
| +} | 
| + | 
| +bool ExtensionPrefs::SetAlertSystemFirstRun() { | 
| +  if (prefs_->GetBoolean(prefs::kExtensionAlertsInitializedPref)) { | 
| +    return true; | 
| +  } | 
| +  prefs_->SetBoolean(prefs::kExtensionAlertsInitializedPref, true); | 
| +  return false; | 
| +} | 
| + | 
| bool ExtensionPrefs::IsExtensionAllowedByPolicy( | 
| const std::string& extension_id) { | 
| std::string string_value; | 
|  |