Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(10095)

Unified Diff: chrome/common/extensions/extension_messages.cc

Issue 10692160: Support socket endpoint permissions for AppsV2 Socket API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase and fix a unit test Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/common/extensions/extension_messages.h ('k') | chrome/common/extensions/extension_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..a311d16bd9d2880eca7a3fa3b0bc5ae9dcc08d8e 100644
--- a/chrome/common/extensions/extension_messages.cc
+++ b/chrome/common/extensions/extension_messages.cc
@@ -7,11 +7,16 @@
#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;
+using extensions::SocketPermissionData;
ExtensionMsg_Loaded_Params::ExtensionMsg_Loaded_Params()
: location(Extension::INVALID),
@@ -140,6 +145,82 @@ 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, 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) {
+ APIPermissionSet::const_iterator it = p.begin();
+ APIPermissionSet::const_iterator end = p.end();
+ WriteParam(m, p.size());
+ for (; it != end; ++it) {
+ WriteParam(m, *it);
+ }
+}
+
+bool ParamTraits<APIPermissionSet>::Read(
+ const Message* m, PickleIterator* iter, param_type* r) {
+ size_t size;
+ if (!ReadParam(m, iter, &size))
+ return false;
+ for (size_t i = 0; i < size; ++i) {
+ scoped_refptr<APIPermissionDetail> p;
+ if (!ReadParam(m, iter, &p))
+ return false;
+ r->insert(p);
+ }
+ return true;
+}
+
+void ParamTraits<APIPermissionSet>::Log(
+ const param_type& p, std::string* l) {
+ LogParam(p.map(), l);
+}
+
+void ParamTraits<SocketPermissionData>::Write(
+ Message* m, const param_type& p) {
+ WriteParam(m, p.GetAsString());
+}
+
+bool ParamTraits<SocketPermissionData>::Read(
+ const Message* m, PickleIterator* iter, param_type* r) {
+ std::string spec;
+ if (!ReadParam(m, iter, &spec))
+ return false;
+
+ return r->Parse(spec);
+}
+
+void ParamTraits<SocketPermissionData>::Log(
+ const param_type& p, std::string* l) {
+ LogParam(std::string("<SocketPermissionData>"), l);
+}
+
void ParamTraits<ExtensionMsg_Loaded_Params>::Write(Message* m,
const param_type& p) {
WriteParam(m, p.location);
« no previous file with comments | « chrome/common/extensions/extension_messages.h ('k') | chrome/common/extensions/extension_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698