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

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

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

Powered by Google App Engine
This is Rietveld 408576698