Index: chrome/common/extensions/extension_messages.cc |
diff --git a/chrome/common/extensions/extension_messages.cc b/chrome/common/extensions/extension_messages.cc |
index 4e6905e1ef911e93bb310d9b676fa7b03ee9659d..bcf73110ca7d683dc6ac372b899107f70b7d735e 100644 |
--- a/chrome/common/extensions/extension_messages.cc |
+++ b/chrome/common/extensions/extension_messages.cc |
@@ -7,9 +7,13 @@ |
#include "chrome/common/extensions/extension.h" |
#include "chrome/common/extensions/extension_constants.h" |
#include "chrome/common/extensions/manifest.h" |
+#include "chrome/common/extensions/permissions/permissions_info.h" |
#include "content/public/common/common_param_traits.h" |
using extensions::APIPermission; |
+using extensions::APIPermissionDetail; |
+using extensions::APIPermissionMap; |
+using extensions::APIPermissionSet; |
using extensions::Extension; |
using extensions::PermissionSet; |
@@ -140,6 +144,50 @@ void ParamTraits<APIPermission::ID>::Log( |
LogParam(static_cast<int>(p), l); |
} |
+void ParamTraits<scoped_refptr<APIPermissionDetail> >::Write( |
+ Message* m, const param_type& p) { |
+ WriteParam(m, static_cast<int>(p->id())); |
+ p->Write(m); |
+} |
+ |
+bool ParamTraits<scoped_refptr<APIPermissionDetail> >::Read( |
+ const Message* m, PickleIterator* iter, param_type* r) { |
+ APIPermission::ID id; |
+ if (!ReadParam(m, iter, &id)) |
+ return false; |
+ APIPermission* permission = |
+ extensions::PermissionsInfo::GetInstance()->GetByID(id); |
+ if (!permission) |
+ return false; |
+ *r = permission->CreateDetail(); |
+ if (!(*r)->Read(m, iter)) { |
+ *r = NULL; |
+ return false; |
+ } |
+ return true; |
+} |
+ |
+void ParamTraits<scoped_refptr<APIPermissionDetail> >::Log( |
+ const param_type& p, std::string* l) { |
+ p->Log(l); |
+} |
+ |
+void ParamTraits<APIPermissionSet>::Write( |
+ Message* m, const param_type& p) { |
+ ParamTraits<APIPermissionMap>::Write(m, p.map()); |
+} |
+ |
+bool ParamTraits<APIPermissionSet>::Read( |
+ const Message* m, PickleIterator* iter, param_type* r) { |
+ return ParamTraits<APIPermissionMap>::Read(m, iter, |
+ static_cast<APIPermissionMap*>(&r->map())); |
+} |
+ |
+void ParamTraits<APIPermissionSet>::Log( |
+ const param_type& p, std::string* l) { |
+ l->append("<APIPermissionSet>"); |
+} |
+ |
void ParamTraits<ExtensionMsg_Loaded_Params>::Write(Message* m, |
const param_type& p) { |
WriteParam(m, p.location); |