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

Side by Side Diff: content/browser/permissions/permission_service_impl.cc

Issue 990303002: Implement PermissionService::GetNextPermissionChange. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@permission_impl
Patch Set: cosmetic changes Created 5 years, 9 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/permissions/permission_service_impl.h" 5 #include "content/browser/permissions/permission_service_impl.h"
6 6
7 #include "content/public/browser/content_browser_client.h" 7 #include "content/public/browser/content_browser_client.h"
8 8
9 namespace content { 9 namespace content {
10 10
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 107
108 pending_requests_.Clear(); 108 pending_requests_.Clear();
109 } 109 }
110 110
111 void PermissionServiceImpl::HasPermission( 111 void PermissionServiceImpl::HasPermission(
112 PermissionName permission, 112 PermissionName permission,
113 const mojo::String& origin, 113 const mojo::String& origin,
114 const mojo::Callback<void(PermissionStatus)>& callback) { 114 const mojo::Callback<void(PermissionStatus)>& callback) {
115 DCHECK(context_->GetBrowserContext()); 115 DCHECK(context_->GetBrowserContext());
116 116
117 callback.Run(GetPermissionStatus(PermissionNameToPermissionType(permission), 117 callback.Run(GetPermissionStatus(permission, GURL(origin)));
118 GURL(origin)));
119 } 118 }
120 119
121 void PermissionServiceImpl::RevokePermission( 120 void PermissionServiceImpl::RevokePermission(
122 PermissionName permission, 121 PermissionName permission,
123 const mojo::String& origin, 122 const mojo::String& origin,
124 const mojo::Callback<void(PermissionStatus)>& callback) { 123 const mojo::Callback<void(PermissionStatus)>& callback) {
125 GURL origin_url(origin); 124 GURL origin_url(origin);
126 PermissionType permission_type = PermissionNameToPermissionType(permission); 125 PermissionType permission_type = PermissionNameToPermissionType(permission);
127 PermissionStatus status = GetPermissionStatus(permission_type, origin_url); 126 PermissionStatus status = GetPermissionStatus(permission_type, origin_url);
128 127
129 // Resetting the permission should only be possible if the permission is 128 // Resetting the permission should only be possible if the permission is
130 // already granted. 129 // already granted.
131 if (status != PERMISSION_STATUS_GRANTED) { 130 if (status != PERMISSION_STATUS_GRANTED) {
132 callback.Run(status); 131 callback.Run(status);
133 return; 132 return;
134 } 133 }
135 134
136 ResetPermissionStatus(permission_type, origin_url); 135 ResetPermissionStatus(permission_type, origin_url);
137 136
138 callback.Run(GetPermissionStatus(permission_type, origin_url)); 137 callback.Run(GetPermissionStatus(permission_type, origin_url));
139 } 138 }
140 139
141 PermissionStatus PermissionServiceImpl::GetPermissionStatus(PermissionType type, 140 void PermissionServiceImpl::GetNextPermissionChange(
142 GURL origin) { 141 PermissionName permission,
142 const mojo::String& origin,
143 PermissionStatus last_known_status,
144 const mojo::Callback<void(PermissionStatus)>& callback) {
145 PermissionStatus current_status =
146 GetPermissionStatus(permission, GURL(origin));
147 if (current_status != last_known_status) {
148 callback.Run(current_status);
149 return;
150 }
151
152 PendingSubscription* subscription = new PendingSubscription();
153 int id = pending_subscriptions_.Add(subscription);
Bernhard Bauer 2015/03/11 14:06:18 I don't think you need this map. You could create
mlamouri (slow - plz ping) 2015/03/18 16:24:40 Didn't use a scoped_ptr but a raw pointer that is
154
155 // If the embedding_origin is empty, we,ll use the |origin| instead.
Bernhard Bauer 2015/03/11 14:06:18 Nit: "we'll". Also, move the code here that falls
mlamouri (slow - plz ping) 2015/03/18 16:24:40 Done.
156 GURL embedding_origin = context_->GetEmbeddingOrigin();
157 subscription->subscription_id =
158 GetContentClient()->browser()->SubscribePermissionStatusChange(
159 PermissionNameToPermissionType(permission),
160 context_->GetBrowserContext(),
161 GURL(origin),
162 embedding_origin.is_empty() ? GURL(origin) : embedding_origin,
163 base::Bind(&PermissionServiceImpl::OnPermissionStatusChanged,
164 weak_factory_.GetWeakPtr(),
165 callback,
166 id));
167 }
168
169 PermissionStatus PermissionServiceImpl::GetPermissionStatus(
Bernhard Bauer 2015/03/11 14:06:18 Overloading methods is discouraged by the style gu
mlamouri (slow - plz ping) 2015/03/18 16:24:40 Snif. I fixed that. GetPermissionStatusFromType()
170 PermissionName permission, const GURL& origin) {
171 return GetPermissionStatus(PermissionNameToPermissionType(permission),
172 origin);
173 }
174
175 PermissionStatus PermissionServiceImpl::GetPermissionStatus(
176 PermissionType type, const GURL& origin) {
143 // If the embedding_origin is empty we'll use |origin| instead. 177 // If the embedding_origin is empty we'll use |origin| instead.
144 GURL embedding_origin = context_->GetEmbeddingOrigin(); 178 GURL embedding_origin = context_->GetEmbeddingOrigin();
145 return GetContentClient()->browser()->GetPermissionStatus( 179 return GetContentClient()->browser()->GetPermissionStatus(
146 type, context_->GetBrowserContext(), origin, 180 type, context_->GetBrowserContext(), origin,
147 embedding_origin.is_empty() ? origin : embedding_origin); 181 embedding_origin.is_empty() ? origin : embedding_origin);
148 } 182 }
149 183
150 void PermissionServiceImpl::ResetPermissionStatus(PermissionType type, 184 void PermissionServiceImpl::ResetPermissionStatus(PermissionType type,
151 GURL origin) { 185 const GURL& origin) {
152 // If the embedding_origin is empty we'll use |origin| instead. 186 // If the embedding_origin is empty we'll use |origin| instead.
153 GURL embedding_origin = context_->GetEmbeddingOrigin(); 187 GURL embedding_origin = context_->GetEmbeddingOrigin();
154 GetContentClient()->browser()->ResetPermission( 188 GetContentClient()->browser()->ResetPermission(
155 type, context_->GetBrowserContext(), origin, 189 type, context_->GetBrowserContext(), origin,
156 embedding_origin.is_empty() ? origin : embedding_origin); 190 embedding_origin.is_empty() ? origin : embedding_origin);
157 } 191 }
158 192
193 void PermissionServiceImpl::OnPermissionStatusChanged(
194 const mojo::Callback<void(PermissionStatus)>& callback,
Bernhard Bauer 2015/03/11 14:06:18 Are you going to call the callback?
mlamouri (slow - plz ping) 2015/03/18 16:24:40 Oups :)
195 int pending_subscription_id,
196 PermissionStatus status) {
197 PendingSubscription* subscription =
198 pending_subscriptions_.Lookup(pending_subscription_id);
199 GetContentClient()->browser()->UnsubscribePermissionStatusChange(
200 context_->GetBrowserContext(),
201 subscription->subscription_id);
202
203 pending_subscriptions_.Remove(pending_subscription_id);
204 }
205
159 } // namespace content 206 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698