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

Side by Side Diff: chrome/browser/notifications/notification_permission_context_unittest.cc

Issue 2723983004: Add PermissionManager::GetPermissionStatusForFrame function (Closed)
Patch Set: Add PermissionManager::GetPermissionStatusForFrame function Created 3 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 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 "chrome/browser/notifications/notification_permission_context.h" 5 #include "chrome/browser/notifications/notification_permission_context.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/ptr_util.h" 8 #include "base/memory/ptr_util.h"
9 #include "base/test/scoped_mock_time_message_loop_task_runner.h" 9 #include "base/test/scoped_mock_time_message_loop_task_runner.h"
10 #include "base/time/time.h" 10 #include "base/time/time.h"
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 GURL requesting_origin("https://example.com"); 110 GURL requesting_origin("https://example.com");
111 GURL embedding_origin("https://chrome.com"); 111 GURL embedding_origin("https://chrome.com");
112 GURL different_origin("https://foobar.com"); 112 GURL different_origin("https://foobar.com");
113 113
114 NotificationPermissionContext context(profile(), 114 NotificationPermissionContext context(profile(),
115 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 115 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
116 UpdateContentSetting(&context, requesting_origin, embedding_origin, 116 UpdateContentSetting(&context, requesting_origin, embedding_origin,
117 CONTENT_SETTING_ALLOW); 117 CONTENT_SETTING_ALLOW);
118 118
119 EXPECT_EQ(CONTENT_SETTING_ALLOW, 119 EXPECT_EQ(CONTENT_SETTING_ALLOW,
120 context.GetPermissionStatus(requesting_origin, embedding_origin) 120 context
121 .GetPermissionStatus(nullptr /* render_frame_host */,
122 requesting_origin, embedding_origin)
121 .content_setting); 123 .content_setting);
122 124
123 EXPECT_EQ(CONTENT_SETTING_ALLOW, 125 EXPECT_EQ(CONTENT_SETTING_ALLOW,
124 context.GetPermissionStatus(requesting_origin, different_origin) 126 context
127 .GetPermissionStatus(nullptr /* render_frame_host */,
128 requesting_origin, different_origin)
125 .content_setting); 129 .content_setting);
126 130
127 context.ResetPermission(requesting_origin, embedding_origin); 131 context.ResetPermission(requesting_origin, embedding_origin);
128 132
129 EXPECT_EQ(CONTENT_SETTING_ASK, 133 EXPECT_EQ(CONTENT_SETTING_ASK,
130 context.GetPermissionStatus(requesting_origin, embedding_origin) 134 context
135 .GetPermissionStatus(nullptr /* render_frame_host */,
136 requesting_origin, embedding_origin)
131 .content_setting); 137 .content_setting);
132 138
133 EXPECT_EQ(CONTENT_SETTING_ASK, 139 EXPECT_EQ(CONTENT_SETTING_ASK,
134 context.GetPermissionStatus(requesting_origin, different_origin) 140 context
141 .GetPermissionStatus(nullptr /* render_frame_host */,
142 requesting_origin, different_origin)
135 .content_setting); 143 .content_setting);
136 } 144 }
137 145
138 // Push messaging permission requests should only succeed for top level origins 146 // Push messaging permission requests should only succeed for top level origins
139 // (embedding origin == requesting origin). 147 // (embedding origin == requesting origin).
140 TEST_F(NotificationPermissionContextTest, PushTopLevelOriginOnly) { 148 TEST_F(NotificationPermissionContextTest, PushTopLevelOriginOnly) {
141 GURL requesting_origin("https://example.com"); 149 GURL requesting_origin("https://example.com");
142 GURL embedding_origin("https://chrome.com"); 150 GURL embedding_origin("https://chrome.com");
143 151
144 NotificationPermissionContext context(profile(), 152 NotificationPermissionContext context(profile(),
145 CONTENT_SETTINGS_TYPE_PUSH_MESSAGING); 153 CONTENT_SETTINGS_TYPE_PUSH_MESSAGING);
146 UpdateContentSetting(&context, requesting_origin, embedding_origin, 154 UpdateContentSetting(&context, requesting_origin, embedding_origin,
147 CONTENT_SETTING_ALLOW); 155 CONTENT_SETTING_ALLOW);
148 156
149 EXPECT_EQ(CONTENT_SETTING_BLOCK, 157 EXPECT_EQ(CONTENT_SETTING_BLOCK,
150 context.GetPermissionStatus(requesting_origin, embedding_origin) 158 context
159 .GetPermissionStatus(nullptr /* render_frame_host */,
160 requesting_origin, embedding_origin)
151 .content_setting); 161 .content_setting);
152 162
153 context.ResetPermission(requesting_origin, embedding_origin); 163 context.ResetPermission(requesting_origin, embedding_origin);
154 164
155 UpdateContentSetting(&context, embedding_origin, embedding_origin, 165 UpdateContentSetting(&context, embedding_origin, embedding_origin,
156 CONTENT_SETTING_ALLOW); 166 CONTENT_SETTING_ALLOW);
157 167
158 EXPECT_EQ(CONTENT_SETTING_ALLOW, 168 EXPECT_EQ(CONTENT_SETTING_ALLOW,
159 context.GetPermissionStatus(embedding_origin, embedding_origin) 169 context
170 .GetPermissionStatus(nullptr /* render_frame_host */,
171 embedding_origin, embedding_origin)
160 .content_setting); 172 .content_setting);
161 173
162 context.ResetPermission(embedding_origin, embedding_origin); 174 context.ResetPermission(embedding_origin, embedding_origin);
163 175
164 EXPECT_EQ(CONTENT_SETTING_ASK, 176 EXPECT_EQ(CONTENT_SETTING_ASK,
165 context.GetPermissionStatus(embedding_origin, embedding_origin) 177 context
178 .GetPermissionStatus(nullptr /* render_frame_host */,
179 embedding_origin, embedding_origin)
166 .content_setting); 180 .content_setting);
167 } 181 }
168 182
169 // Web Notifications do not require a secure origin when requesting permission. 183 // Web Notifications do not require a secure origin when requesting permission.
170 // See https://crbug.com/404095. 184 // See https://crbug.com/404095.
171 TEST_F(NotificationPermissionContextTest, NoSecureOriginRequirement) { 185 TEST_F(NotificationPermissionContextTest, NoSecureOriginRequirement) {
172 GURL origin("http://example.com"); 186 GURL origin("http://example.com");
173 187
174 NotificationPermissionContext context(profile(), 188 NotificationPermissionContext context(profile(),
175 CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 189 CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
176 EXPECT_EQ(CONTENT_SETTING_ASK, 190 EXPECT_EQ(
177 context.GetPermissionStatus(origin, origin).content_setting); 191 CONTENT_SETTING_ASK,
192 context
193 .GetPermissionStatus(nullptr /* render_frame_host */, origin, origin)
194 .content_setting);
178 195
179 UpdateContentSetting(&context, origin, origin, CONTENT_SETTING_ALLOW); 196 UpdateContentSetting(&context, origin, origin, CONTENT_SETTING_ALLOW);
180 197
181 EXPECT_EQ(CONTENT_SETTING_ALLOW, 198 EXPECT_EQ(
182 context.GetPermissionStatus(origin, origin).content_setting); 199 CONTENT_SETTING_ALLOW,
200 context
201 .GetPermissionStatus(nullptr /* render_frame_host */, origin, origin)
202 .content_setting);
183 } 203 }
184 204
185 // Push notifications requires a secure origin to acquire permission. 205 // Push notifications requires a secure origin to acquire permission.
186 TEST_F(NotificationPermissionContextTest, PushSecureOriginRequirement) { 206 TEST_F(NotificationPermissionContextTest, PushSecureOriginRequirement) {
187 GURL origin("http://example.com"); 207 GURL origin("http://example.com");
188 GURL secure_origin("https://example.com"); 208 GURL secure_origin("https://example.com");
189 209
190 NotificationPermissionContext context( 210 NotificationPermissionContext context(
191 profile(), CONTENT_SETTINGS_TYPE_PUSH_MESSAGING); 211 profile(), CONTENT_SETTINGS_TYPE_PUSH_MESSAGING);
192 EXPECT_EQ(CONTENT_SETTING_BLOCK, 212 EXPECT_EQ(
193 context.GetPermissionStatus(origin, origin).content_setting); 213 CONTENT_SETTING_BLOCK,
214 context
215 .GetPermissionStatus(nullptr /* render_frame_host */, origin, origin)
216 .content_setting);
194 217
195 UpdateContentSetting(&context, origin, origin, CONTENT_SETTING_ALLOW); 218 UpdateContentSetting(&context, origin, origin, CONTENT_SETTING_ALLOW);
196 219
197 EXPECT_EQ(CONTENT_SETTING_BLOCK, 220 EXPECT_EQ(
198 context.GetPermissionStatus(origin, origin).content_setting); 221 CONTENT_SETTING_BLOCK,
222 context
223 .GetPermissionStatus(nullptr /* render_frame_host */, origin, origin)
224 .content_setting);
199 225
200 EXPECT_EQ(CONTENT_SETTING_ASK, 226 EXPECT_EQ(CONTENT_SETTING_ASK,
201 context.GetPermissionStatus(secure_origin, secure_origin) 227 context
228 .GetPermissionStatus(nullptr /* render_frame_host */,
229 secure_origin, secure_origin)
202 .content_setting); 230 .content_setting);
203 231
204 UpdateContentSetting(&context, secure_origin, secure_origin, 232 UpdateContentSetting(&context, secure_origin, secure_origin,
205 CONTENT_SETTING_ALLOW); 233 CONTENT_SETTING_ALLOW);
206 234
207 EXPECT_EQ(CONTENT_SETTING_ALLOW, 235 EXPECT_EQ(CONTENT_SETTING_ALLOW,
208 context.GetPermissionStatus(secure_origin, secure_origin) 236 context
237 .GetPermissionStatus(nullptr /* render_frame_host */,
238 secure_origin, secure_origin)
209 .content_setting); 239 .content_setting);
210 } 240 }
211 241
212 // Tests auto-denial after a time delay in incognito. 242 // Tests auto-denial after a time delay in incognito.
213 TEST_F(NotificationPermissionContextTest, TestDenyInIncognitoAfterDelay) { 243 TEST_F(NotificationPermissionContextTest, TestDenyInIncognitoAfterDelay) {
214 TestNotificationPermissionContext permission_context( 244 TestNotificationPermissionContext permission_context(
215 profile()->GetOffTheRecordProfile()); 245 profile()->GetOffTheRecordProfile());
216 GURL url("https://www.example.com"); 246 GURL url("https://www.example.com");
217 NavigateAndCommit(url); 247 NavigateAndCommit(url);
218 248
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 // After another 2.5 seconds, the second permission request should also have 390 // After another 2.5 seconds, the second permission request should also have
361 // received a response. 391 // received a response.
362 task_runner->FastForwardBy(base::TimeDelta::FromMilliseconds(2500)); 392 task_runner->FastForwardBy(base::TimeDelta::FromMilliseconds(2500));
363 EXPECT_EQ(2, permission_context.permission_set_count()); 393 EXPECT_EQ(2, permission_context.permission_set_count());
364 EXPECT_TRUE(permission_context.last_permission_set_persisted()); 394 EXPECT_TRUE(permission_context.last_permission_set_persisted());
365 EXPECT_EQ(CONTENT_SETTING_BLOCK, 395 EXPECT_EQ(CONTENT_SETTING_BLOCK,
366 permission_context.last_permission_set_setting()); 396 permission_context.last_permission_set_setting());
367 EXPECT_EQ(CONTENT_SETTING_BLOCK, 397 EXPECT_EQ(CONTENT_SETTING_BLOCK,
368 permission_context.GetContentSettingFromMap(url, url)); 398 permission_context.GetContentSettingFromMap(url, url));
369 } 399 }
OLDNEW
« no previous file with comments | « chrome/browser/notifications/notification_permission_context.cc ('k') | chrome/browser/permissions/permission_context_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698