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

Unified Diff: content/browser/geofencing/mock_geofencing_service.h

Issue 701953007: Expose mock geofencing service via testRunner. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: mention unifying bug in a comment Created 6 years 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/geofencing/mock_geofencing_service.h
diff --git a/content/browser/geofencing/mock_geofencing_service.h b/content/browser/geofencing/mock_geofencing_service.h
new file mode 100644
index 0000000000000000000000000000000000000000..4634b26395d7952cb0e0967d682f46ddc968f848
--- /dev/null
+++ b/content/browser/geofencing/mock_geofencing_service.h
@@ -0,0 +1,47 @@
+// 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 <map>
+
+#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:
+ 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<int64, Registration> registrations_;
+ int64 next_id_;
+ bool has_position_;
+ double last_latitude_;
+ double last_longitude_;
+};
+
+} // namespace content
+
+#endif // CONTENT_BROWSER_GEOFENCING_MOCK_GEOFENCING_SERVICE_H_
« no previous file with comments | « content/browser/geofencing/geofencing_service.h ('k') | content/browser/geofencing/mock_geofencing_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698