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

Side by Side Diff: third_party/WebKit/Source/modules/geolocation/Geolocation.cpp

Issue 1642903005: Update geolocation over HTTP error to use PERMISSION_DENIED (Closed) Base URL: https://chromium.googlesource.com/chromium/src@master
Patch Set: Address nits Created 4 years, 10 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 /* 1 /*
2 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All Rights Reserved. 2 * Copyright (C) 2008, 2009, 2010, 2011 Apple Inc. All Rights Reserved.
3 * Copyright (C) 2009 Torch Mobile, Inc. 3 * Copyright (C) 2009 Torch Mobile, Inc.
4 * Copyright 2010, The Android Open Source Project 4 * Copyright 2010, The Android Open Source Project
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
190 watchID = executionContext()->circularSequentialID(); 190 watchID = executionContext()->circularSequentialID();
191 } while (!m_watchers.add(watchID, notifier)); 191 } while (!m_watchers.add(watchID, notifier));
192 return watchID; 192 return watchID;
193 } 193 }
194 194
195 void Geolocation::startRequest(GeoNotifier *notifier) 195 void Geolocation::startRequest(GeoNotifier *notifier)
196 { 196 {
197 recordOriginTypeAccess(); 197 recordOriginTypeAccess();
198 String errorMessage; 198 String errorMessage;
199 if (!frame()->settings()->allowGeolocationOnInsecureOrigins() && !executionC ontext()->isSecureContext(errorMessage)) { 199 if (!frame()->settings()->allowGeolocationOnInsecureOrigins() && !executionC ontext()->isSecureContext(errorMessage)) {
200 notifier->setFatalError(PositionError::create(PositionError::POSITION_UN AVAILABLE, errorMessage)); 200 notifier->setFatalError(PositionError::create(PositionError::PERMISSION_ DENIED, errorMessage));
201 return; 201 return;
202 } 202 }
203 203
204 if (RuntimeEnabledFeatures::restrictIFramePermissionsEnabled()) { 204 if (RuntimeEnabledFeatures::restrictIFramePermissionsEnabled()) {
205 // TODO(keenanb): kill the request if the parent is blocking the request er 205 // TODO(keenanb): kill the request if the parent is blocking the request er
206 Element* owner = document()->ownerElement(); 206 Element* owner = document()->ownerElement();
207 if (owner && owner->hasAttribute(HTMLNames::permissionsAttr)) { 207 if (owner && owner->hasAttribute(HTMLNames::permissionsAttr)) {
208 String errorMessage = "A cross-origin iframe needs its permissions a ttribute properly set in order to use the geolocation API."; 208 String errorMessage = "A cross-origin iframe needs its permissions a ttribute properly set in order to use the geolocation API.";
209 notifier->setFatalError(PositionError::create(PositionError::POSITIO N_UNAVAILABLE, errorMessage)); 209 notifier->setFatalError(PositionError::create(PositionError::PERMISS ION_DENIED, errorMessage));
210 return; 210 return;
211 } 211 }
212 } 212 }
213 213
214 // Check whether permissions have already been denied. Note that if this is the case, 214 // Check whether permissions have already been denied. Note that if this is the case,
215 // the permission state can not change again in the lifetime of this page. 215 // the permission state can not change again in the lifetime of this page.
216 if (isDenied()) 216 if (isDenied())
217 notifier->setFatalError(PositionError::create(PositionError::PERMISSION_ DENIED, permissionDeniedErrorMessage)); 217 notifier->setFatalError(PositionError::create(PositionError::PERMISSION_ DENIED, permissionDeniedErrorMessage));
218 else if (haveSuitableCachedPosition(notifier->options())) 218 else if (haveSuitableCachedPosition(notifier->options()))
219 notifier->setUseCachedPosition(); 219 notifier->setUseCachedPosition();
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 notifier->startTimer(); 547 notifier->startTimer();
548 else 548 else
549 notifier->setFatalError(PositionError::create(PositionError::POS ITION_UNAVAILABLE, failedToStartServiceErrorMessage)); 549 notifier->setFatalError(PositionError::create(PositionError::POS ITION_UNAVAILABLE, failedToStartServiceErrorMessage));
550 } else { 550 } else {
551 notifier->setFatalError(PositionError::create(PositionError::PERMISS ION_DENIED, permissionDeniedErrorMessage)); 551 notifier->setFatalError(PositionError::create(PositionError::PERMISS ION_DENIED, permissionDeniedErrorMessage));
552 } 552 }
553 } 553 }
554 } 554 }
555 555
556 } // namespace blink 556 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/LayoutTests/http/tests/security/powerfulFeatureRestrictions/old-powerful-features-on-insecure-origin.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698