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

Side by Side Diff: content/shell/browser/layout_test/layout_test_permission_manager.cc

Issue 1771743002: Move geolocation and permission mojoms into WebKit/public/platform. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/shell/browser/layout_test/layout_test_permission_manager.h" 5 #include "content/shell/browser/layout_test/layout_test_permission_manager.h"
6 6
7 #include <list> 7 #include <list>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/callback.h" 10 #include "base/callback.h"
11 #include "content/public/browser/browser_thread.h" 11 #include "content/public/browser/browser_thread.h"
12 #include "content/public/browser/permission_type.h" 12 #include "content/public/browser/permission_type.h"
13 #include "content/public/browser/web_contents.h" 13 #include "content/public/browser/web_contents.h"
14 #include "content/shell/browser/layout_test/layout_test_content_browser_client.h " 14 #include "content/shell/browser/layout_test/layout_test_content_browser_client.h "
15 #include "content/shell/browser/layout_test/layout_test_notification_manager.h" 15 #include "content/shell/browser/layout_test/layout_test_notification_manager.h"
16 16
17 namespace content { 17 namespace content {
18 18
19 struct LayoutTestPermissionManager::Subscription { 19 struct LayoutTestPermissionManager::Subscription {
20 PermissionDescription permission; 20 PermissionDescription permission;
21 base::Callback<void(content::mojom::PermissionStatus)> callback; 21 base::Callback<void(blink::mojom::PermissionStatus)> callback;
22 mojom::PermissionStatus current_value; 22 blink::mojom::PermissionStatus current_value;
23 }; 23 };
24 24
25 LayoutTestPermissionManager::PermissionDescription::PermissionDescription( 25 LayoutTestPermissionManager::PermissionDescription::PermissionDescription(
26 PermissionType type, 26 PermissionType type,
27 const GURL& origin, 27 const GURL& origin,
28 const GURL& embedding_origin) 28 const GURL& embedding_origin)
29 : type(type), 29 : type(type),
30 origin(origin), 30 origin(origin),
31 embedding_origin(embedding_origin) { 31 embedding_origin(embedding_origin) {
32 } 32 }
(...skipping 25 matching lines...) Expand all
58 : PermissionManager() { 58 : PermissionManager() {
59 } 59 }
60 60
61 LayoutTestPermissionManager::~LayoutTestPermissionManager() { 61 LayoutTestPermissionManager::~LayoutTestPermissionManager() {
62 } 62 }
63 63
64 int LayoutTestPermissionManager::RequestPermission( 64 int LayoutTestPermissionManager::RequestPermission(
65 PermissionType permission, 65 PermissionType permission,
66 RenderFrameHost* render_frame_host, 66 RenderFrameHost* render_frame_host,
67 const GURL& requesting_origin, 67 const GURL& requesting_origin,
68 const base::Callback<void(mojom::PermissionStatus)>& callback) { 68 const base::Callback<void(blink::mojom::PermissionStatus)>& callback) {
69 DCHECK_CURRENTLY_ON(BrowserThread::UI); 69 DCHECK_CURRENTLY_ON(BrowserThread::UI);
70 70
71 callback.Run(GetPermissionStatus( 71 callback.Run(GetPermissionStatus(
72 permission, requesting_origin, 72 permission, requesting_origin,
73 WebContents::FromRenderFrameHost(render_frame_host) 73 WebContents::FromRenderFrameHost(render_frame_host)
74 ->GetLastCommittedURL().GetOrigin())); 74 ->GetLastCommittedURL().GetOrigin()));
75 return kNoPendingOperation; 75 return kNoPendingOperation;
76 } 76 }
77 77
78 int LayoutTestPermissionManager::RequestPermissions( 78 int LayoutTestPermissionManager::RequestPermissions(
79 const std::vector<PermissionType>& permissions, 79 const std::vector<PermissionType>& permissions,
80 content::RenderFrameHost* render_frame_host, 80 content::RenderFrameHost* render_frame_host,
81 const GURL& requesting_origin, 81 const GURL& requesting_origin,
82 const base::Callback<void(const std::vector<mojom::PermissionStatus>&)>& 82 const base::Callback<
83 callback) { 83 void(const std::vector<blink::mojom::PermissionStatus>&)>& callback) {
84 DCHECK_CURRENTLY_ON(BrowserThread::UI); 84 DCHECK_CURRENTLY_ON(BrowserThread::UI);
85 85
86 std::vector<mojom::PermissionStatus> result(permissions.size()); 86 std::vector<blink::mojom::PermissionStatus> result(permissions.size());
87 const GURL& embedding_origin = 87 const GURL& embedding_origin =
88 WebContents::FromRenderFrameHost(render_frame_host) 88 WebContents::FromRenderFrameHost(render_frame_host)
89 ->GetLastCommittedURL().GetOrigin(); 89 ->GetLastCommittedURL().GetOrigin();
90 for (const auto& permission : permissions) { 90 for (const auto& permission : permissions) {
91 result.push_back(GetPermissionStatus( 91 result.push_back(GetPermissionStatus(
92 permission, requesting_origin, embedding_origin)); 92 permission, requesting_origin, embedding_origin));
93 } 93 }
94 94
95 callback.Run(result); 95 callback.Run(result);
96 return kNoPendingOperation; 96 return kNoPendingOperation;
(...skipping 11 matching lines...) Expand all
108 108
109 base::AutoLock lock(permissions_lock_); 109 base::AutoLock lock(permissions_lock_);
110 110
111 auto it = permissions_.find( 111 auto it = permissions_.find(
112 PermissionDescription(permission, requesting_origin, embedding_origin)); 112 PermissionDescription(permission, requesting_origin, embedding_origin));
113 if (it == permissions_.end()) 113 if (it == permissions_.end())
114 return; 114 return;
115 permissions_.erase(it); 115 permissions_.erase(it);
116 } 116 }
117 117
118 mojom::PermissionStatus LayoutTestPermissionManager::GetPermissionStatus( 118 blink::mojom::PermissionStatus LayoutTestPermissionManager::GetPermissionStatus(
119 PermissionType permission, 119 PermissionType permission,
120 const GURL& requesting_origin, 120 const GURL& requesting_origin,
121 const GURL& embedding_origin) { 121 const GURL& embedding_origin) {
122 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) || 122 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI) ||
123 BrowserThread::CurrentlyOn(BrowserThread::IO)); 123 BrowserThread::CurrentlyOn(BrowserThread::IO));
124 124
125 base::AutoLock lock(permissions_lock_); 125 base::AutoLock lock(permissions_lock_);
126 126
127 auto it = permissions_.find( 127 auto it = permissions_.find(
128 PermissionDescription(permission, requesting_origin, embedding_origin)); 128 PermissionDescription(permission, requesting_origin, embedding_origin));
129 if (it == permissions_.end()) 129 if (it == permissions_.end())
130 return mojom::PermissionStatus::DENIED; 130 return blink::mojom::PermissionStatus::DENIED;
131 return it->second; 131 return it->second;
132 } 132 }
133 133
134 void LayoutTestPermissionManager::RegisterPermissionUsage( 134 void LayoutTestPermissionManager::RegisterPermissionUsage(
135 PermissionType permission, 135 PermissionType permission,
136 const GURL& requesting_origin, 136 const GURL& requesting_origin,
137 const GURL& embedding_origin) { 137 const GURL& embedding_origin) {
138 DCHECK_CURRENTLY_ON(BrowserThread::UI); 138 DCHECK_CURRENTLY_ON(BrowserThread::UI);
139 } 139 }
140 140
141 int LayoutTestPermissionManager::SubscribePermissionStatusChange( 141 int LayoutTestPermissionManager::SubscribePermissionStatusChange(
142 PermissionType permission, 142 PermissionType permission,
143 const GURL& requesting_origin, 143 const GURL& requesting_origin,
144 const GURL& embedding_origin, 144 const GURL& embedding_origin,
145 const base::Callback<void(mojom::PermissionStatus)>& callback) { 145 const base::Callback<void(blink::mojom::PermissionStatus)>& callback) {
146 DCHECK_CURRENTLY_ON(BrowserThread::UI); 146 DCHECK_CURRENTLY_ON(BrowserThread::UI);
147 147
148 Subscription* subscription = new Subscription(); 148 Subscription* subscription = new Subscription();
149 subscription->permission = 149 subscription->permission =
150 PermissionDescription(permission, requesting_origin, embedding_origin); 150 PermissionDescription(permission, requesting_origin, embedding_origin);
151 subscription->callback = callback; 151 subscription->callback = callback;
152 subscription->current_value = 152 subscription->current_value =
153 GetPermissionStatus(permission, 153 GetPermissionStatus(permission,
154 subscription->permission.origin, 154 subscription->permission.origin,
155 subscription->permission.embedding_origin); 155 subscription->permission.embedding_origin);
156 156
157 return subscriptions_.Add(subscription); 157 return subscriptions_.Add(subscription);
158 } 158 }
159 159
160 void LayoutTestPermissionManager::UnsubscribePermissionStatusChange( 160 void LayoutTestPermissionManager::UnsubscribePermissionStatusChange(
161 int subscription_id) { 161 int subscription_id) {
162 DCHECK_CURRENTLY_ON(BrowserThread::UI); 162 DCHECK_CURRENTLY_ON(BrowserThread::UI);
163 163
164 // Whether |subscription_id| is known will be checked by the Remove() call. 164 // Whether |subscription_id| is known will be checked by the Remove() call.
165 subscriptions_.Remove(subscription_id); 165 subscriptions_.Remove(subscription_id);
166 } 166 }
167 167
168 void LayoutTestPermissionManager::SetPermission(PermissionType permission, 168 void LayoutTestPermissionManager::SetPermission(
169 mojom::PermissionStatus status, 169 PermissionType permission,
170 const GURL& origin, 170 blink::mojom::PermissionStatus status,
171 const GURL& embedding_origin) { 171 const GURL& origin,
172 const GURL& embedding_origin) {
172 DCHECK_CURRENTLY_ON(BrowserThread::UI); 173 DCHECK_CURRENTLY_ON(BrowserThread::UI);
173 174
174 PermissionDescription description(permission, origin, embedding_origin); 175 PermissionDescription description(permission, origin, embedding_origin);
175 176
176 base::AutoLock lock(permissions_lock_); 177 base::AutoLock lock(permissions_lock_);
177 178
178 auto it = permissions_.find(description); 179 auto it = permissions_.find(description);
179 if (it == permissions_.end()) { 180 if (it == permissions_.end()) {
180 permissions_.insert( 181 permissions_.insert(
181 std::pair<PermissionDescription, mojom::PermissionStatus>(description, 182 std::pair<PermissionDescription, blink::mojom::PermissionStatus>(
182 status)); 183 description, status));
183 } else { 184 } else {
184 it->second = status; 185 it->second = status;
185 } 186 }
186 187
187 OnPermissionChanged(description, status); 188 OnPermissionChanged(description, status);
188 } 189 }
189 190
190 void LayoutTestPermissionManager::ResetPermissions() { 191 void LayoutTestPermissionManager::ResetPermissions() {
191 DCHECK_CURRENTLY_ON(BrowserThread::UI); 192 DCHECK_CURRENTLY_ON(BrowserThread::UI);
192 193
193 base::AutoLock lock(permissions_lock_); 194 base::AutoLock lock(permissions_lock_);
194 permissions_.clear(); 195 permissions_.clear();
195 } 196 }
196 197
197 void LayoutTestPermissionManager::OnPermissionChanged( 198 void LayoutTestPermissionManager::OnPermissionChanged(
198 const PermissionDescription& permission, 199 const PermissionDescription& permission,
199 mojom::PermissionStatus status) { 200 blink::mojom::PermissionStatus status) {
200 std::list<base::Closure> callbacks; 201 std::list<base::Closure> callbacks;
201 202
202 for (SubscriptionsMap::iterator iter(&subscriptions_); 203 for (SubscriptionsMap::iterator iter(&subscriptions_);
203 !iter.IsAtEnd(); iter.Advance()) { 204 !iter.IsAtEnd(); iter.Advance()) {
204 Subscription* subscription = iter.GetCurrentValue(); 205 Subscription* subscription = iter.GetCurrentValue();
205 if (subscription->permission != permission) 206 if (subscription->permission != permission)
206 continue; 207 continue;
207 208
208 if (subscription->current_value == status) 209 if (subscription->current_value == status)
209 continue; 210 continue;
210 211
211 subscription->current_value = status; 212 subscription->current_value = status;
212 213
213 // Add the callback to |callbacks| which will be run after the loop to 214 // Add the callback to |callbacks| which will be run after the loop to
214 // prevent re-entrance issues. 215 // prevent re-entrance issues.
215 callbacks.push_back(base::Bind(subscription->callback, status)); 216 callbacks.push_back(base::Bind(subscription->callback, status));
216 } 217 }
217 218
218 for (const auto& callback : callbacks) 219 for (const auto& callback : callbacks)
219 callback.Run(); 220 callback.Run();
220 } 221 }
221 222
222 } // namespace content 223 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698