Index: extensions/common/extension_messages.cc |
diff --git a/extensions/common/extension_messages.cc b/extensions/common/extension_messages.cc |
index ce572112d44a6b3a504836bf7a27e74a7992dce6..94a6bd0abcf7c926d22fe0d69ff3dff4f817cc12 100644 |
--- a/extensions/common/extension_messages.cc |
+++ b/extensions/common/extension_messages.cc |
@@ -49,7 +49,8 @@ ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params() |
ExtensionMsg_Loaded_Params::~ExtensionMsg_Loaded_Params() {} |
ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( |
- const Extension* extension) |
+ const Extension* extension, |
+ bool include_tab_permissions) |
: manifest(extension->manifest()->value()->DeepCopy()), |
location(extension->location()), |
path(extension->path()), |
@@ -58,6 +59,14 @@ ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params( |
*extension->permissions_data()->withheld_permissions()), |
id(extension->id()), |
creation_flags(extension->creation_flags()) { |
+ if (include_tab_permissions) { |
+ const extensions::PermissionsData::TabPermissionsMap& tab_permissions = |
+ extension->permissions_data()->tab_specific_permissions(); |
+ for (const auto& pair : tab_permissions) { |
+ tab_specific_permissions[pair.first] = |
+ ExtensionMsg_PermissionSetStruct(*pair.second); |
+ } |
+ } |
} |
scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( |
@@ -65,9 +74,14 @@ scoped_refptr<Extension> ExtensionMsg_Loaded_Params::ConvertToExtension( |
scoped_refptr<Extension> extension = |
Extension::Create(path, location, *manifest, creation_flags, error); |
if (extension.get()) { |
- extension->permissions_data()->SetPermissions( |
- active_permissions.ToPermissionSet(), |
- withheld_permissions.ToPermissionSet()); |
+ const extensions::PermissionsData* permissions_data = |
+ extension->permissions_data(); |
+ permissions_data->SetPermissions(active_permissions.ToPermissionSet(), |
+ withheld_permissions.ToPermissionSet()); |
+ for (const auto& pair : tab_specific_permissions) { |
+ permissions_data->UpdateTabSpecificPermissions( |
+ pair.first, pair.second.ToPermissionSet()); |
+ } |
} |
return extension; |
} |