1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef WebGeofencingProvider_h
6#define WebGeofencingProvider_h
7
8#include "public/platform/WebCallbacks.h"
9#include "public/platform/WebVector.h"
10
11namespace blink {
12
13struct WebCircularGeofencingRegion;
14struct WebGeofencingError;
15struct WebGeofencingRegistration;
16class WebString;
17
18typedef WebCallbacks<void, WebGeofencingError> WebGeofencingCallbacks;
19typedef WebCallbacks<WebVector<WebGeofencingRegistration>, WebGeofencingError> WebGeofencingRegionsCallbacks;
20
21class WebGeofencingProvider {
22public:
23    virtual ~WebGeofencingProvider() { }
24
25    // Registers a region.
26    // Ownership of the WebGeofencingCallbacks is transferred to the client.
27    virtual void registerRegion(const WebString& regionId, const WebCircularGeofencingRegion&, WebGeofencingCallbacks*) = 0;
28
29    // Unregisters a region.
30    // Ownership of the WebGeofencingCallbacks is transferred to the client.
31    virtual void unregisterRegion(const WebString& regionId, WebGeofencingCallbacks*) = 0;
32
33    // Returns all the currently registered regions.
34    // Ownership of the WebGeofencingRegionsCallbacks is transferred to the client.
35    virtual void getRegisteredRegions(WebGeofencingRegionsCallbacks*) = 0;
36};
37
38} // namespace blink
39
40#endif // WebGeofencingProvider_h
41