// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CONTENT_BROWSER_GEOFENCING_MOCK_GEOFENCING_SERVICE_H_ #define CONTENT_BROWSER_GEOFENCING_MOCK_GEOFENCING_SERVICE_H_ #include #include "content/browser/geofencing/geofencing_service.h" namespace content { // This class implements a geofencing service that doesn't rely on any // underlying platform implementation. Instead whenever SetMockPosition is // called this class will compare the provided position with all currently // registered regions, and emit corresponding geofencing events. // // If an instance is created with |service_available| set to false, the mock // will behave as if the platform does not support geofencing. class MockGeofencingService : public GeofencingService { public: explicit MockGeofencingService(bool service_available); ~MockGeofencingService() override; void SetMockPosition(double latitude, double longitude); // GeofencingService implementation. bool IsServiceAvailable() override; int64 RegisterRegion(const blink::WebCircularGeofencingRegion& region, GeofencingRegistrationDelegate* delegate) override; void UnregisterRegion(int64 geofencing_registration_id) override; private: struct Registration; bool available_; std::map registrations_; int64 next_id_; bool has_position_; double last_latitude_; double last_longitude_; }; } // namespace content #endif // CONTENT_BROWSER_GEOFENCING_MOCK_GEOFENCING_SERVICE_H_