Index: chrome/browser/managed_mode/managed_user_service.cc |
diff --git a/chrome/browser/managed_mode/managed_user_service.cc b/chrome/browser/managed_mode/managed_user_service.cc |
index 9403ed444a66d596c389c06ebbaa24231b45afc0..b3261fd97667532488bb18b24d943ab4acbb2b4b 100644 |
--- a/chrome/browser/managed_mode/managed_user_service.cc |
+++ b/chrome/browser/managed_mode/managed_user_service.cc |
@@ -168,6 +168,24 @@ bool ManagedUserService::UserMayLoad(const extensions::Extension* extension, |
extension_service->GetInstalledExtension(extension->id())) |
return true; |
+ if (extension) { |
+ bool was_installed_by_default = extension->was_installed_by_default(); |
+#ifdef OS_CHROMEOS |
+ // On Chrome OS all external sources are controlled by us so it means that |
+ // they are "default". Method was_installed_by_default returns false because |
+ // extensions creation flags are ignored in case of default extensions with |
+ // update URL(the flags aren't passed to OnExternalExtensionUpdateUrlFound). |
+ // TODO(dpolukhin): remove this Chrome OS specific code as soon as creation |
+ // flags are not ignored. |
+ was_installed_by_default = |
+ extensions::Manifest::IsExternalLocation(extension->location()); |
+#endif |
+ if (extension->location() == extensions::Manifest::COMPONENT || |
+ was_installed_by_default) { |
+ return true; |
+ } |
+ } |
+ |
if (error) |
*error = tmp_error; |
return false; |