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

Side by Side Diff: chrome/common/extensions/permissions/api_permission_set.cc

Issue 10692160: Support socket endpoint permissions for AppsV2 Socket API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Update 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/common/extensions/permissions/api_permission_set.h"
6
7 #include "base/logging.h"
8 #include "chrome/common/extensions/permissions/permissions_info.h"
9
10 namespace extensions {
11
12 bool APIPermissionSet::operator==(const APIPermissionSet& rhs) const {
13 const_iterator it = begin();
14 const_iterator rhs_it = rhs.begin();
15 const_iterator it_end = end();
16 const_iterator rhs_it_end = rhs.end();
17
18 while (it != it_end && rhs_it != rhs_it_end) {
19 if (!it->Equal(*rhs_it))
20 return false;
21 it++;
22 rhs_it++;
23 }
24 return it == it_end && rhs_it == rhs_it_end;
25 }
26
27 void APIPermissionSet::insert(APIPermission::ID id) {
28 APIPermission *permission =
29 PermissionsInfo::GetInstance()->GetByID(id);
30 insert(permission->CreateDetail());
31 }
32
33 void APIPermissionSet::insert(
34 const scoped_refptr<APIPermissionDetail>& detail) {
35 map_.insert(APIPermissionMap::value_type(detail->id(), detail->Clone()));
36 }
37
38 void APIPermissionSet::Difference(
39 const APIPermissionSet& set1,
40 const APIPermissionSet& set2,
41 APIPermissionSet* set3) {
42 CHECK(set3);
43 set3->clear();
44
45 APIPermissionSet::const_iterator it1 = set1.begin();
46 APIPermissionSet::const_iterator it2 = set2.begin();
47 APIPermissionSet::const_iterator end1 = set1.end();
48 APIPermissionSet::const_iterator end2 = set2.end();
49 while (it1 != end1 && it2 != end2) {
50 if (it1->id() < it2->id()) {
51 set3->insert(*it1++);
52 } else if (it1->id() > it2->id()) {
53 it2++;
54 } else {
55 scoped_refptr<APIPermissionDetail> p = it1->Diff(*it2);
56 if (p.get())
57 set3->insert(p);
58 it1++;
59 it2++;
60 }
61 }
62
63 while (it1 != end1)
64 set3->insert(*it1++);
65 }
66
67 void APIPermissionSet::Intersection(
68 const APIPermissionSet& set1,
69 const APIPermissionSet& set2,
70 APIPermissionSet* set3) {
71 DCHECK(set3);
72 set3->clear();
73
74 APIPermissionSet::const_iterator it1 = set1.begin();
75 APIPermissionSet::const_iterator it2 = set2.begin();
76 APIPermissionSet::const_iterator end1 = set1.end();
77 APIPermissionSet::const_iterator end2 = set2.end();
78 while (it1 != end1 && it2 != end2) {
79 if (it1->id() < it2->id()) {
80 it1++;
81 } else if (it1->id() > it2->id()) {
82 it2++;
83 } else {
84 scoped_refptr<APIPermissionDetail> p = it1->Intersect(*it2);
85 if (p.get())
86 set3->insert(p);
87 it1++;
88 it2++;
89 }
90 }
91 }
92
93 void APIPermissionSet::Union(
94 const APIPermissionSet& set1,
95 const APIPermissionSet& set2,
96 APIPermissionSet* set3) {
97 DCHECK(set3);
98 set3->clear();
99
100 APIPermissionSet::const_iterator it1 = set1.begin();
101 APIPermissionSet::const_iterator it2 = set2.begin();
102 APIPermissionSet::const_iterator end1 = set1.end();
103 APIPermissionSet::const_iterator end2 = set2.end();
104
105 while (true) {
106 if (it1 == end1) {
107 while (it2 != end2) {
108 set3->insert(*it2++);
109 }
110 break;
111 }
112 if (it2 == end2) {
113 while (it1 != end1) {
114 set3->insert(*it1++);
115 }
116 break;
117 }
118 if (it1->id() < it2->id()) {
119 set3->insert(*it1++);
120 } else if (it1->id() > it2->id()) {
121 set3->insert(*it2++);
122 } else {
123 set3->insert(it1->Union(*it2));
124 it1++;
125 it2++;
126 }
127 }
128 }
129
130 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698