17242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
27242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// Use of this source code is governed by a BSD-style license that can be
37242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci// found in the LICENSE file.
47242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
57242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#ifndef CircularGeofencingRegion_h
67242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#define CircularGeofencingRegion_h
77242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
87242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "modules/geofencing/GeofencingRegion.h"
97242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#include "public/platform/WebCircularGeofencingRegion.h"
107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
117242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccinamespace blink {
127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass Dictionary;
147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
157242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciclass CircularGeofencingRegion FINAL : public GeofencingRegion {
167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    DEFINE_WRAPPERTYPEINFO();
177242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    WTF_MAKE_NONCOPYABLE(CircularGeofencingRegion);
187242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tuccipublic:
197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static CircularGeofencingRegion* create(const Dictionary& init);
207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    static CircularGeofencingRegion* create(const WebString& id, const WebCircularGeofencingRegion&);
217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual ~CircularGeofencingRegion() { }
227242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double latitude() const { return m_webRegion.latitude; }
247242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double longitude() const { return m_webRegion.longitude; }
257242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    double radius() const { return m_webRegion.radius; }
267242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    WebCircularGeofencingRegion webRegion() const;
287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual void trace(Visitor* visitor) OVERRIDE { GeofencingRegion::trace(visitor); }
307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
317242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    virtual bool isCircularGeofencingRegion() const OVERRIDE { return true; }
327242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
337242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucciprivate:
347242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    explicit CircularGeofencingRegion(const String& id, const WebCircularGeofencingRegion&);
357242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci    WebCircularGeofencingRegion m_webRegion;
377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci};
387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
397242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano TucciDEFINE_TYPE_CASTS(CircularGeofencingRegion, GeofencingRegion, region, region->isCircularGeofencingRegion(), region.isCircularGeofencingRegion());
407242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
417242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci} // namespace blink
427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci
437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci#endif // CircularGeofencingRegion_h
44