| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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/geolocation/geolocation_permission_context.h" | 5 #include "chrome/browser/geolocation/geolocation_permission_context.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 | 8 |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 820 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 831 GeolocationPermissionContextAndroid:: | 831 GeolocationPermissionContextAndroid:: |
| 832 LocationSettingsDialogBackOff::kThreeMonths), | 832 LocationSettingsDialogBackOff::kThreeMonths), |
| 833 2); | 833 2); |
| 834 } | 834 } |
| 835 | 835 |
| 836 TEST_P(GeolocationPermissionContextTests, LSDBackOffPermissionStatus) { | 836 TEST_P(GeolocationPermissionContextTests, LSDBackOffPermissionStatus) { |
| 837 base::test::ScopedFeatureList scoped_feature_list; | 837 base::test::ScopedFeatureList scoped_feature_list; |
| 838 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); | 838 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); |
| 839 | 839 |
| 840 GURL requesting_frame("https://www.example.com/geolocation"); | 840 GURL requesting_frame("https://www.example.com/geolocation"); |
| 841 NavigateAndCommit(requesting_frame); |
| 841 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 842 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 842 CONTENT_SETTING_ALLOW); | 843 CONTENT_SETTING_ALLOW); |
| 843 | 844 |
| 844 // Turn off system location but allow the LSD to be shown, and denied. | 845 // Turn off system location but allow the LSD to be shown, and denied. |
| 845 MockLocationSettings::SetLocationStatus(true /* android */, | 846 MockLocationSettings::SetLocationStatus(true /* android */, |
| 846 false /* system */); | 847 false /* system */); |
| 847 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, | 848 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, |
| 848 DENIED); | 849 DENIED); |
| 849 | 850 |
| 850 // The permission status should reflect that the LSD will be shown. | 851 // The permission status should reflect that the LSD will be shown. |
| 851 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 852 ASSERT_EQ( |
| 852 PermissionManager::Get(profile())->GetPermissionStatus( | 853 blink::mojom::PermissionStatus::ASK, |
| 853 content::PermissionType::GEOLOCATION, requesting_frame, | 854 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 854 requesting_frame)); | 855 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 855 EXPECT_TRUE(RequestPermissionIsLSDShown(requesting_frame)); | 856 EXPECT_TRUE(RequestPermissionIsLSDShown(requesting_frame)); |
| 856 | 857 |
| 857 // Now that the LSD is in backoff, the permission status should reflect it. | 858 // Now that the LSD is in backoff, the permission status should reflect it. |
| 858 EXPECT_FALSE(RequestPermissionIsLSDShown(requesting_frame)); | 859 EXPECT_FALSE(RequestPermissionIsLSDShown(requesting_frame)); |
| 859 ASSERT_EQ(blink::mojom::PermissionStatus::DENIED, | 860 ASSERT_EQ( |
| 860 PermissionManager::Get(profile())->GetPermissionStatus( | 861 blink::mojom::PermissionStatus::DENIED, |
| 861 content::PermissionType::GEOLOCATION, requesting_frame, | 862 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 862 requesting_frame)); | 863 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 863 } | 864 } |
| 864 | 865 |
| 865 TEST_P(GeolocationPermissionContextTests, LSDBackOffAskPromptsDespiteBackOff) { | 866 TEST_P(GeolocationPermissionContextTests, LSDBackOffAskPromptsDespiteBackOff) { |
| 866 base::test::ScopedFeatureList scoped_feature_list; | 867 base::test::ScopedFeatureList scoped_feature_list; |
| 867 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); | 868 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); |
| 868 | 869 |
| 869 GURL requesting_frame("https://www.example.com/geolocation"); | 870 GURL requesting_frame("https://www.example.com/geolocation"); |
| 871 NavigateAndCommit(requesting_frame); |
| 870 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 872 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 871 CONTENT_SETTING_ALLOW); | 873 CONTENT_SETTING_ALLOW); |
| 872 | 874 |
| 873 // Turn off system location but allow the LSD to be shown, and denied. | 875 // Turn off system location but allow the LSD to be shown, and denied. |
| 874 MockLocationSettings::SetLocationStatus(true /* android */, | 876 MockLocationSettings::SetLocationStatus(true /* android */, |
| 875 false /* system */); | 877 false /* system */); |
| 876 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, | 878 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, |
| 877 DENIED); | 879 DENIED); |
| 878 | 880 |
| 879 // First, cancel a LSD prompt on the first non-DSE origin to go into backoff. | 881 // First, cancel a LSD prompt on the first non-DSE origin to go into backoff. |
| 880 EXPECT_TRUE(RequestPermissionIsLSDShown(requesting_frame)); | 882 EXPECT_TRUE(RequestPermissionIsLSDShown(requesting_frame)); |
| 881 EXPECT_FALSE(RequestPermissionIsLSDShown(requesting_frame)); | 883 EXPECT_FALSE(RequestPermissionIsLSDShown(requesting_frame)); |
| 882 | 884 |
| 883 // Set the content setting back to ASK. The permission status should be | 885 // Set the content setting back to ASK. The permission status should be |
| 884 // prompt, and the LSD prompt should now be shown. | 886 // prompt, and the LSD prompt should now be shown. |
| 885 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 887 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 886 CONTENT_SETTING_ASK); | 888 CONTENT_SETTING_ASK); |
| 887 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 889 ASSERT_EQ( |
| 888 PermissionManager::Get(profile())->GetPermissionStatus( | 890 blink::mojom::PermissionStatus::ASK, |
| 889 content::PermissionType::GEOLOCATION, requesting_frame, | 891 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 890 requesting_frame)); | 892 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 891 EXPECT_TRUE( | 893 EXPECT_TRUE( |
| 892 RequestPermissionIsLSDShownWithPermissionPrompt(requesting_frame)); | 894 RequestPermissionIsLSDShownWithPermissionPrompt(requesting_frame)); |
| 893 } | 895 } |
| 894 | 896 |
| 895 TEST_P(GeolocationPermissionContextTests, | 897 TEST_P(GeolocationPermissionContextTests, |
| 896 LSDBackOffAcceptPermissionResetsBackOff) { | 898 LSDBackOffAcceptPermissionResetsBackOff) { |
| 897 base::test::ScopedFeatureList scoped_feature_list; | 899 base::test::ScopedFeatureList scoped_feature_list; |
| 898 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); | 900 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); |
| 899 | 901 |
| 900 GURL requesting_frame("https://www.example.com/geolocation"); | 902 GURL requesting_frame("https://www.example.com/geolocation"); |
| 903 NavigateAndCommit(requesting_frame); |
| 901 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 904 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 902 CONTENT_SETTING_ALLOW); | 905 CONTENT_SETTING_ALLOW); |
| 903 | 906 |
| 904 // Turn off system location but allow the LSD to be shown, and denied. | 907 // Turn off system location but allow the LSD to be shown, and denied. |
| 905 MockLocationSettings::SetLocationStatus(true /* android */, | 908 MockLocationSettings::SetLocationStatus(true /* android */, |
| 906 false /* system */); | 909 false /* system */); |
| 907 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, | 910 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, |
| 908 DENIED); | 911 DENIED); |
| 909 | 912 |
| 910 // First, get into the highest backoff state. | 913 // First, get into the highest backoff state. |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1253 CONTENT_SETTING_ASK, | 1256 CONTENT_SETTING_ASK, |
| 1254 GetGeolocationContentSetting(requesting_frame_1, requesting_frame_0)); | 1257 GetGeolocationContentSetting(requesting_frame_1, requesting_frame_0)); |
| 1255 } | 1258 } |
| 1256 | 1259 |
| 1257 #if defined(OS_ANDROID) | 1260 #if defined(OS_ANDROID) |
| 1258 TEST_P(GeolocationPermissionContextTests, SearchGeolocationInIncognito) { | 1261 TEST_P(GeolocationPermissionContextTests, SearchGeolocationInIncognito) { |
| 1259 base::test::ScopedFeatureList scoped_feature_list; | 1262 base::test::ScopedFeatureList scoped_feature_list; |
| 1260 EnableFeature(&scoped_feature_list, features::kConsistentOmniboxGeolocation); | 1263 EnableFeature(&scoped_feature_list, features::kConsistentOmniboxGeolocation); |
| 1261 | 1264 |
| 1262 GURL requesting_frame(TestSearchEngineDelegate::kDSETestUrl); | 1265 GURL requesting_frame(TestSearchEngineDelegate::kDSETestUrl); |
| 1266 NavigateAndCommit(requesting_frame); |
| 1263 // The DSE Geolocation setting should be used in incognito if it is BLOCK, | 1267 // The DSE Geolocation setting should be used in incognito if it is BLOCK, |
| 1264 // but not if it is ALLOW. | 1268 // but not if it is ALLOW. |
| 1265 SearchGeolocationService* geo_service = | 1269 SearchGeolocationService* geo_service = |
| 1266 SearchGeolocationService::Factory::GetForBrowserContext(profile()); | 1270 SearchGeolocationService::Factory::GetForBrowserContext(profile()); |
| 1267 geo_service->SetSearchEngineDelegateForTest( | 1271 geo_service->SetSearchEngineDelegateForTest( |
| 1268 base::MakeUnique<TestSearchEngineDelegate>()); | 1272 base::MakeUnique<TestSearchEngineDelegate>()); |
| 1269 | 1273 |
| 1270 Profile* otr_profile = profile()->GetOffTheRecordProfile(); | 1274 Profile* otr_profile = profile()->GetOffTheRecordProfile(); |
| 1271 | 1275 |
| 1272 // A DSE setting of ALLOW should not flow through to incognito. | 1276 // A DSE setting of ALLOW should not flow through to incognito. |
| 1273 geo_service->SetDSEGeolocationSetting(true); | 1277 geo_service->SetDSEGeolocationSetting(true); |
| 1274 ASSERT_EQ(CONTENT_SETTING_ASK, | 1278 ASSERT_EQ(CONTENT_SETTING_ASK, |
| 1275 PermissionManager::Get(otr_profile) | 1279 PermissionManager::Get(otr_profile) |
| 1276 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_GEOLOCATION, | 1280 ->GetPermissionStatusForFrame(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 1277 requesting_frame, requesting_frame) | 1281 main_rfh(), requesting_frame) |
| 1278 .content_setting); | 1282 .content_setting); |
| 1279 | 1283 |
| 1280 // Changing the setting to BLOCK should flow through to incognito. | 1284 // Changing the setting to BLOCK should flow through to incognito. |
| 1281 geo_service->SetDSEGeolocationSetting(false); | 1285 geo_service->SetDSEGeolocationSetting(false); |
| 1282 ASSERT_EQ(CONTENT_SETTING_BLOCK, | 1286 ASSERT_EQ(CONTENT_SETTING_BLOCK, |
| 1283 PermissionManager::Get(otr_profile) | 1287 PermissionManager::Get(otr_profile) |
| 1284 ->GetPermissionStatus(CONTENT_SETTINGS_TYPE_GEOLOCATION, | 1288 ->GetPermissionStatusForFrame(CONTENT_SETTINGS_TYPE_GEOLOCATION, |
| 1285 requesting_frame, requesting_frame) | 1289 main_rfh(), requesting_frame) |
| 1286 .content_setting); | 1290 .content_setting); |
| 1287 } | 1291 } |
| 1288 | 1292 |
| 1289 TEST_P(GeolocationPermissionContextTests, | 1293 TEST_P(GeolocationPermissionContextTests, |
| 1290 GeolocationStatusAndroidDisabledLegacy) { | 1294 GeolocationStatusAndroidDisabledLegacy) { |
| 1291 GURL requesting_frame("https://www.example.com/geolocation"); | 1295 GURL requesting_frame("https://www.example.com/geolocation"); |
| 1296 NavigateAndCommit(requesting_frame); |
| 1292 | 1297 |
| 1293 // In these tests the Android permission status should not be taken into | 1298 // In these tests the Android permission status should not be taken into |
| 1294 // account, only the content setting. | 1299 // account, only the content setting. |
| 1295 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1300 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1296 CONTENT_SETTING_ALLOW); | 1301 CONTENT_SETTING_ALLOW); |
| 1297 MockLocationSettings::SetLocationStatus(false /* android */, | 1302 MockLocationSettings::SetLocationStatus(false /* android */, |
| 1298 true /* system */); | 1303 true /* system */); |
| 1299 ASSERT_EQ(blink::mojom::PermissionStatus::GRANTED, | 1304 ASSERT_EQ( |
| 1300 PermissionManager::Get(profile())->GetPermissionStatus( | 1305 blink::mojom::PermissionStatus::GRANTED, |
| 1301 content::PermissionType::GEOLOCATION, requesting_frame, | 1306 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1302 requesting_frame)); | 1307 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1303 | 1308 |
| 1304 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1309 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1305 CONTENT_SETTING_ASK); | 1310 CONTENT_SETTING_ASK); |
| 1306 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 1311 ASSERT_EQ( |
| 1307 PermissionManager::Get(profile())->GetPermissionStatus( | 1312 blink::mojom::PermissionStatus::ASK, |
| 1308 content::PermissionType::GEOLOCATION, requesting_frame, | 1313 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1309 requesting_frame)); | 1314 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1310 | 1315 |
| 1311 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1316 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1312 CONTENT_SETTING_BLOCK); | 1317 CONTENT_SETTING_BLOCK); |
| 1313 ASSERT_EQ(blink::mojom::PermissionStatus::DENIED, | 1318 ASSERT_EQ( |
| 1314 PermissionManager::Get(profile())->GetPermissionStatus( | 1319 blink::mojom::PermissionStatus::DENIED, |
| 1315 content::PermissionType::GEOLOCATION, requesting_frame, | 1320 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1316 requesting_frame)); | 1321 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1317 } | 1322 } |
| 1318 | 1323 |
| 1319 TEST_P(GeolocationPermissionContextTests, GeolocationStatusAndroidDisabled) { | 1324 TEST_P(GeolocationPermissionContextTests, GeolocationStatusAndroidDisabled) { |
| 1320 base::test::ScopedFeatureList scoped_feature_list; | 1325 base::test::ScopedFeatureList scoped_feature_list; |
| 1321 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); | 1326 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); |
| 1322 | 1327 |
| 1323 GURL requesting_frame("https://www.example.com/geolocation"); | 1328 GURL requesting_frame("https://www.example.com/geolocation"); |
| 1329 NavigateAndCommit(requesting_frame); |
| 1324 | 1330 |
| 1325 // With the Android permission off, but location allowed for a domain, the | 1331 // With the Android permission off, but location allowed for a domain, the |
| 1326 // permission status should be ASK. | 1332 // permission status should be ASK. |
| 1327 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1333 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1328 CONTENT_SETTING_ALLOW); | 1334 CONTENT_SETTING_ALLOW); |
| 1329 MockLocationSettings::SetLocationStatus(false /* android */, | 1335 MockLocationSettings::SetLocationStatus(false /* android */, |
| 1330 true /* system */); | 1336 true /* system */); |
| 1331 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 1337 ASSERT_EQ( |
| 1332 PermissionManager::Get(profile())->GetPermissionStatus( | 1338 blink::mojom::PermissionStatus::ASK, |
| 1333 content::PermissionType::GEOLOCATION, requesting_frame, | 1339 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1334 requesting_frame)); | 1340 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1335 | 1341 |
| 1336 // With the Android permission off, and location blocked for a domain, the | 1342 // With the Android permission off, and location blocked for a domain, the |
| 1337 // permission status should still be BLOCK. | 1343 // permission status should still be BLOCK. |
| 1338 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1344 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1339 CONTENT_SETTING_BLOCK); | 1345 CONTENT_SETTING_BLOCK); |
| 1340 ASSERT_EQ(blink::mojom::PermissionStatus::DENIED, | 1346 ASSERT_EQ( |
| 1341 PermissionManager::Get(profile())->GetPermissionStatus( | 1347 blink::mojom::PermissionStatus::DENIED, |
| 1342 content::PermissionType::GEOLOCATION, requesting_frame, | 1348 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1343 requesting_frame)); | 1349 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1344 | 1350 |
| 1345 // With the Android permission off, and location prompt for a domain, the | 1351 // With the Android permission off, and location prompt for a domain, the |
| 1346 // permission status should still be ASK. | 1352 // permission status should still be ASK. |
| 1347 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1353 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1348 CONTENT_SETTING_ASK); | 1354 CONTENT_SETTING_ASK); |
| 1349 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 1355 ASSERT_EQ( |
| 1350 PermissionManager::Get(profile())->GetPermissionStatus( | 1356 blink::mojom::PermissionStatus::ASK, |
| 1351 content::PermissionType::GEOLOCATION, requesting_frame, | 1357 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1352 requesting_frame)); | 1358 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1353 } | 1359 } |
| 1354 | 1360 |
| 1355 TEST_P(GeolocationPermissionContextTests, | 1361 TEST_P(GeolocationPermissionContextTests, |
| 1356 GeolocationStatusSystemDisabledLegacy) { | 1362 GeolocationStatusSystemDisabledLegacy) { |
| 1357 GURL requesting_frame("https://www.example.com/geolocation"); | 1363 GURL requesting_frame("https://www.example.com/geolocation"); |
| 1364 NavigateAndCommit(requesting_frame); |
| 1358 | 1365 |
| 1359 // In these tests the system permission status should not be taken into | 1366 // In these tests the system permission status should not be taken into |
| 1360 // account, only the content setting. | 1367 // account, only the content setting. |
| 1361 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1368 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1362 CONTENT_SETTING_ALLOW); | 1369 CONTENT_SETTING_ALLOW); |
| 1363 MockLocationSettings::SetLocationStatus(true /* android */, | 1370 MockLocationSettings::SetLocationStatus(true /* android */, |
| 1364 false /* system */); | 1371 false /* system */); |
| 1365 ASSERT_EQ(blink::mojom::PermissionStatus::GRANTED, | 1372 ASSERT_EQ( |
| 1366 PermissionManager::Get(profile())->GetPermissionStatus( | 1373 blink::mojom::PermissionStatus::GRANTED, |
| 1367 content::PermissionType::GEOLOCATION, requesting_frame, | 1374 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1368 requesting_frame)); | 1375 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1369 | 1376 |
| 1370 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1377 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1371 CONTENT_SETTING_ASK); | 1378 CONTENT_SETTING_ASK); |
| 1372 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 1379 ASSERT_EQ( |
| 1373 PermissionManager::Get(profile())->GetPermissionStatus( | 1380 blink::mojom::PermissionStatus::ASK, |
| 1374 content::PermissionType::GEOLOCATION, requesting_frame, | 1381 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1375 requesting_frame)); | 1382 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1376 | 1383 |
| 1377 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1384 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1378 CONTENT_SETTING_BLOCK); | 1385 CONTENT_SETTING_BLOCK); |
| 1379 ASSERT_EQ(blink::mojom::PermissionStatus::DENIED, | 1386 ASSERT_EQ( |
| 1380 PermissionManager::Get(profile())->GetPermissionStatus( | 1387 blink::mojom::PermissionStatus::DENIED, |
| 1381 content::PermissionType::GEOLOCATION, requesting_frame, | 1388 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1382 requesting_frame)); | 1389 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1383 } | 1390 } |
| 1384 | 1391 |
| 1385 TEST_P(GeolocationPermissionContextTests, GeolocationStatusSystemDisabled) { | 1392 TEST_P(GeolocationPermissionContextTests, GeolocationStatusSystemDisabled) { |
| 1386 base::test::ScopedFeatureList scoped_feature_list; | 1393 base::test::ScopedFeatureList scoped_feature_list; |
| 1387 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); | 1394 EnableFeature(&scoped_feature_list, features::kLsdPermissionPrompt); |
| 1388 | 1395 |
| 1389 GURL requesting_frame("https://www.example.com/geolocation"); | 1396 GURL requesting_frame("https://www.example.com/geolocation"); |
| 1397 NavigateAndCommit(requesting_frame); |
| 1390 | 1398 |
| 1391 // With the system permission off, but location allowed for a domain, the | 1399 // With the system permission off, but location allowed for a domain, the |
| 1392 // permission status should be reflect whether the LSD can be shown. | 1400 // permission status should be reflect whether the LSD can be shown. |
| 1393 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1401 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1394 CONTENT_SETTING_ALLOW); | 1402 CONTENT_SETTING_ALLOW); |
| 1395 MockLocationSettings::SetLocationStatus(true /* android */, | 1403 MockLocationSettings::SetLocationStatus(true /* android */, |
| 1396 false /* system */); | 1404 false /* system */); |
| 1397 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, | 1405 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, |
| 1398 DENIED); | 1406 DENIED); |
| 1399 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 1407 ASSERT_EQ( |
| 1400 PermissionManager::Get(profile())->GetPermissionStatus( | 1408 blink::mojom::PermissionStatus::ASK, |
| 1401 content::PermissionType::GEOLOCATION, requesting_frame, | 1409 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1402 requesting_frame)); | 1410 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1403 | 1411 |
| 1404 MockLocationSettings::SetLocationSettingsDialogStatus(false /* enabled */, | 1412 MockLocationSettings::SetLocationSettingsDialogStatus(false /* enabled */, |
| 1405 GRANTED); | 1413 GRANTED); |
| 1406 ASSERT_EQ(blink::mojom::PermissionStatus::DENIED, | 1414 ASSERT_EQ( |
| 1407 PermissionManager::Get(profile())->GetPermissionStatus( | 1415 blink::mojom::PermissionStatus::DENIED, |
| 1408 content::PermissionType::GEOLOCATION, requesting_frame, | 1416 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1409 requesting_frame)); | 1417 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1410 | 1418 |
| 1411 // The result should be the same if the location permission is ASK. | 1419 // The result should be the same if the location permission is ASK. |
| 1412 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1420 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1413 CONTENT_SETTING_ASK); | 1421 CONTENT_SETTING_ASK); |
| 1414 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, | 1422 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, |
| 1415 GRANTED); | 1423 GRANTED); |
| 1416 ASSERT_EQ(blink::mojom::PermissionStatus::ASK, | 1424 ASSERT_EQ( |
| 1417 PermissionManager::Get(profile())->GetPermissionStatus( | 1425 blink::mojom::PermissionStatus::ASK, |
| 1418 content::PermissionType::GEOLOCATION, requesting_frame, | 1426 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1419 requesting_frame)); | 1427 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1420 | 1428 |
| 1421 MockLocationSettings::SetLocationSettingsDialogStatus(false /* enabled */, | 1429 MockLocationSettings::SetLocationSettingsDialogStatus(false /* enabled */, |
| 1422 GRANTED); | 1430 GRANTED); |
| 1423 ASSERT_EQ(blink::mojom::PermissionStatus::DENIED, | 1431 ASSERT_EQ( |
| 1424 PermissionManager::Get(profile())->GetPermissionStatus( | 1432 blink::mojom::PermissionStatus::DENIED, |
| 1425 content::PermissionType::GEOLOCATION, requesting_frame, | 1433 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1426 requesting_frame)); | 1434 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1427 | 1435 |
| 1428 // With the Android permission off, and location blocked for a domain, the | 1436 // With the Android permission off, and location blocked for a domain, the |
| 1429 // permission status should still be BLOCK. | 1437 // permission status should still be BLOCK. |
| 1430 SetGeolocationContentSetting(requesting_frame, requesting_frame, | 1438 SetGeolocationContentSetting(requesting_frame, requesting_frame, |
| 1431 CONTENT_SETTING_BLOCK); | 1439 CONTENT_SETTING_BLOCK); |
| 1432 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, | 1440 MockLocationSettings::SetLocationSettingsDialogStatus(true /* enabled */, |
| 1433 GRANTED); | 1441 GRANTED); |
| 1434 ASSERT_EQ(blink::mojom::PermissionStatus::DENIED, | 1442 ASSERT_EQ( |
| 1435 PermissionManager::Get(profile())->GetPermissionStatus( | 1443 blink::mojom::PermissionStatus::DENIED, |
| 1436 content::PermissionType::GEOLOCATION, requesting_frame, | 1444 PermissionManager::Get(profile())->GetPermissionStatusForFrame( |
| 1437 requesting_frame)); | 1445 content::PermissionType::GEOLOCATION, main_rfh(), requesting_frame)); |
| 1438 } | 1446 } |
| 1439 #endif // defined(OS_ANDROID) | 1447 #endif // defined(OS_ANDROID) |
| 1440 | 1448 |
| 1441 #if defined(OS_ANDROID) | 1449 #if defined(OS_ANDROID) |
| 1442 INSTANTIATE_TEST_CASE_P( | 1450 INSTANTIATE_TEST_CASE_P( |
| 1443 GeolocationPermissionContextTestsInstance, | 1451 GeolocationPermissionContextTestsInstance, |
| 1444 GeolocationPermissionContextTests, | 1452 GeolocationPermissionContextTests, |
| 1445 ::testing::Values(TestType::PERMISSION_REQUEST_MANAGER, | 1453 ::testing::Values(TestType::PERMISSION_REQUEST_MANAGER, |
| 1446 TestType::PERMISSION_QUEUE_CONTROLLER)); | 1454 TestType::PERMISSION_QUEUE_CONTROLLER)); |
| 1447 #else | 1455 #else |
| 1448 INSTANTIATE_TEST_CASE_P( | 1456 INSTANTIATE_TEST_CASE_P( |
| 1449 GeolocationPermissionContextTestsInstance, | 1457 GeolocationPermissionContextTestsInstance, |
| 1450 GeolocationPermissionContextTests, | 1458 GeolocationPermissionContextTests, |
| 1451 ::testing::Values(TestType::PERMISSION_REQUEST_MANAGER)); | 1459 ::testing::Values(TestType::PERMISSION_REQUEST_MANAGER)); |
| 1452 #endif | 1460 #endif |
| OLD | NEW |