shill: Add method for querying geolocation objects on a device.

Currently, only WiFi is implemented.

BUG=chromium-os:34844
TEST=unit test

Change-Id: I1ef485162052af3165da71fb170940f617e4f071
Reviewed-on: https://gerrit.chromium.org/gerrit/35975
Reviewed-by: Paul Stewart <pstew@chromium.org>
Commit-Ready: Gaurav Shah <gauravsh@chromium.org>
Tested-by: Gaurav Shah <gauravsh@chromium.org>
diff --git a/geolocation_info.h b/geolocation_info.h
new file mode 100644
index 0000000..45307e0
--- /dev/null
+++ b/geolocation_info.h
@@ -0,0 +1,37 @@
+// Copyright (c) 2012 The Chromium OS 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 SHILL_GEOLOCATION_INFO_
+#define SHILL_GEOLOCATION_INFO_
+
+#include <map>
+#include <string>
+
+#include <gtest/gtest_prod.h>  // for FRIEND_TEST
+
+namespace shill {
+
+class WiFiMainTest;
+
+// This class stores properties (key-value pairs) for a single entity
+// (e.g. a WiFi access point) that may be used for geolocation.
+class GeolocationInfo {
+ public:
+  GeolocationInfo();
+  ~GeolocationInfo();
+
+  void AddField(const std::string &key, const std::string &value);
+  const std::string &GetFieldValue(const std::string &key) const;
+ private:
+  FRIEND_TEST(WiFiMainTest, GetGeolocationObjects);
+
+  // An equality testing helper for unit tests.
+  bool Equals(const GeolocationInfo &info) const;
+
+  std::map<std::string, std::string> properties_;
+};
+
+}  // namespace shill
+
+#endif  // SHILL_GEOLOCATION_INFO_