| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Apple Inc. All Rights Reserved. | 3 * Copyright (C) 2012 Apple Inc. All Rights Reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * 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 14 matching lines...) Expand all Loading... |
| 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 25 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 26 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 27 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 28 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 29 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 30 */ | 30 */ |
| 31 | 31 |
| 32 #ifndef GeolocationClientMock_h | 32 #ifndef GeolocationClientMock_h |
| 33 #define GeolocationClientMock_h | 33 #define GeolocationClientMock_h |
| 34 | 34 |
| 35 #include "modules/geolocation/GeolocationClient.h" | 35 #include "content/common/geolocation_service.mojom.h" |
| 36 #include "platform/Timer.h" | 36 #include "content/common/permission_service.mojom.h" |
| 37 #include "modules/geolocation/GeolocationController.h" |
| 38 #include "mojo/application/public/interfaces/service_provider.mojom.h" |
| 37 #include "platform/heap/Handle.h" | 39 #include "platform/heap/Handle.h" |
| 40 #include "third_party/mojo/src/mojo/public/cpp/bindings/binding.h" |
| 38 #include "wtf/HashSet.h" | 41 #include "wtf/HashSet.h" |
| 42 #include "wtf/Vector.h" |
| 39 #include "wtf/text/WTFString.h" | 43 #include "wtf/text/WTFString.h" |
| 40 | 44 |
| 41 namespace blink { | 45 namespace blink { |
| 42 | 46 |
| 43 class GeolocationController; | 47 class GeolocationController; |
| 44 class GeolocationPosition; | 48 class GeolocationPosition; |
| 45 | 49 |
| 46 // Provides a mock object for the geolocation client. | 50 // Provides a mock object for the geolocation client. |
| 47 class GeolocationClientMock final : public GeolocationClient { | 51 // FIXME: Rename this to GeolocationServiceMock. |
| 52 class GeolocationClientMock : public content::GeolocationService, public content
::PermissionService, public mojo::ServiceProvider, public NoBaseWillBeGarbageCol
lectedFinalized<GeolocationClientMock>, public WillBeHeapSupplement<Document> { |
| 48 public: | 53 public: |
| 49 GeolocationClientMock(); | 54 ~GeolocationClientMock(); |
| 50 ~GeolocationClientMock() override; | 55 |
| 56 static GeolocationClientMock* from(Document*); |
| 51 | 57 |
| 52 void setPosition(GeolocationPosition*); | 58 void setPosition(GeolocationPosition*); |
| 53 void setPositionUnavailableError(const String& errorMessage); | 59 void setPositionUnavailableError(const String& errorMessage); |
| 54 void setPermission(bool allowed); | 60 void setPermission(bool allowed); |
| 55 int numberOfPendingPermissionRequests() const; | 61 int numberOfPendingPermissionRequests() const; |
| 56 | 62 |
| 57 // GeolocationClient | 63 // content::GeolocationService |
| 58 void startUpdating() override; | 64 void SetHighAccuracy(bool highAccuracy) override; |
| 59 void stopUpdating() override; | 65 void QueryNextPosition(const QueryNextPositionCallback&) override; |
| 60 void setEnableHighAccuracy(bool) override; | 66 |
| 61 GeolocationPosition* lastPosition() override; | 67 // content::PermissionService |
| 62 void requestPermission(Geolocation*) override; | 68 void HasPermission(content::PermissionName, const mojo::String& origin, cons
t HasPermissionCallback&) override; |
| 63 void cancelPermissionRequest(Geolocation*) override; | 69 void RequestPermission(content::PermissionName, const mojo::String& origin,
bool userGesture, const RequestPermissionCallback&) override; |
| 64 void controllerForTestAdded(GeolocationController*) override; | 70 void RequestPermissions(mojo::Array<content::PermissionName> permissions, co
nst mojo::String& origin, bool userGesture, const RequestPermissionsCallback&) o
verride; |
| 65 void controllerForTestRemoved(GeolocationController*) override; | 71 void RevokePermission(content::PermissionName, const mojo::String& origin, c
onst RevokePermissionCallback&) override; |
| 72 void GetNextPermissionChange(content::PermissionName, const mojo::String& or
igin, content::PermissionStatus lastKnownStatus, const GetNextPermissionChangeCa
llback&) override; |
| 73 |
| 74 void ConnectToService(const mojo::String& interfaceName, mojo::ScopedMessage
PipeHandle) override; |
| 75 |
| 76 static const char* supplementName() { return "GeolocationClientMock"; } |
| 66 | 77 |
| 67 DECLARE_VIRTUAL_TRACE(); | 78 DECLARE_VIRTUAL_TRACE(); |
| 68 | 79 |
| 69 private: | 80 private: |
| 70 void asyncUpdateController(); | 81 GeolocationClientMock(Document*); |
| 71 void controllerTimerFired(Timer<GeolocationClientMock>*); | 82 void runGeolocationCallbacks(); |
| 83 void runPermissionCallbacks(); |
| 72 | 84 |
| 73 void asyncUpdatePermission(); | 85 Document* m_document; |
| 74 void permissionTimerFired(Timer<GeolocationClientMock>*); | |
| 75 | 86 |
| 76 void clearError(); | 87 content::MojoGeopositionPtr m_lastPosition; |
| 77 | 88 |
| 78 typedef WillBeHeapHashSet<RawPtrWillBeWeakMember<GeolocationController>> Geo
locationControllers; | 89 Vector<QueryNextPositionCallback> m_pendingGeolocations; |
| 79 GeolocationControllers m_controllers; | |
| 80 | 90 |
| 81 PersistentWillBeMember<GeolocationPosition> m_lastPosition; | 91 content::PermissionStatus m_permissionState; |
| 82 bool m_hasError; | 92 Vector<RequestPermissionCallback> m_pendingPermissions; |
| 83 String m_errorMessage; | |
| 84 Timer<GeolocationClientMock> m_controllerTimer; | |
| 85 Timer<GeolocationClientMock> m_permissionTimer; | |
| 86 bool m_isActive; | |
| 87 | 93 |
| 88 enum PermissionState { | 94 mojo::Binding<content::GeolocationService> m_geolocationBinding; |
| 89 PermissionStateUnset, | 95 mojo::Binding<content::PermissionService> m_permissionBinding; |
| 90 PermissionStateAllowed, | |
| 91 PermissionStateDenied | |
| 92 }; | |
| 93 | |
| 94 PermissionState m_permissionState; | |
| 95 | |
| 96 typedef PersistentHeapHashSetWillBeHeapHashSet<Member<Geolocation>> Geolocat
ionSet; | |
| 97 GeolocationSet m_pendingPermissions; | |
| 98 }; | 96 }; |
| 99 | 97 |
| 100 } | 98 } |
| 101 | 99 |
| 102 #endif | 100 #endif |
| OLD | NEW |