Home | History | Annotate | Download | only in geolocation
      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 #include "config.h"
      6 #include "modules/geolocation/PositionOptions.h"
      7 
      8 #include "bindings/core/v8/Dictionary.h"
      9 #include <limits.h>
     10 
     11 namespace blink {
     12 
     13 PositionOptions* PositionOptions::create(const Dictionary& options)
     14 {
     15     return new PositionOptions(options);
     16 }
     17 
     18 PositionOptions::PositionOptions(const Dictionary& options)
     19     : m_highAccuracy(false)
     20     , m_maximumAge(0)
     21     , m_timeout(std::numeric_limits<unsigned>::max())
     22 {
     23     if (options.hasProperty("enableHighAccuracy")) {
     24         bool highAccuracy;
     25         if (DictionaryHelper::get(options, "enableHighAccuracy", highAccuracy))
     26             m_highAccuracy = highAccuracy;
     27     }
     28     if (options.hasProperty("maximumAge")) {
     29         double maximumAge;
     30         if (DictionaryHelper::get(options, "maximumAge", maximumAge)) {
     31             if (maximumAge < 0)
     32                 m_maximumAge = 0;
     33             else if (maximumAge > std::numeric_limits<unsigned>::max())
     34                 m_maximumAge = std::numeric_limits<unsigned>::max();
     35             else
     36                 m_maximumAge = maximumAge;
     37         }
     38     }
     39     if (options.hasProperty("timeout")) {
     40         double timeout;
     41         if (DictionaryHelper::get(options, "timeout", timeout)) {
     42             if (timeout < 0)
     43                 m_timeout = 0;
     44             else if (timeout > std::numeric_limits<unsigned>::max())
     45                 m_timeout = std::numeric_limits<unsigned>::max();
     46             else
     47                 m_timeout = timeout;
     48         }
     49     }
     50 }
     51 
     52 } // namespace blink
     53