shill: Start moving tehnology-specific functionality to capability delegates.

This basic patch demonstrates the intent to move CDMA/GSM-specific functionality
into capability delegates. This should reduce the conditional code in the
Cellular class and make it more readable and easier to maintain.

BUG=chromium-os:18735
TEST=unit tests

Change-Id: I80ee8682ff34810cf4a723119274450de4ae95a9
Reviewed-on: https://gerrit.chromium.org/gerrit/10775
Commit-Ready: Darin Petkov <petkov@chromium.org>
Reviewed-by: Darin Petkov <petkov@chromium.org>
Tested-by: Darin Petkov <petkov@chromium.org>
diff --git a/cellular_capability_gsm.cc b/cellular_capability_gsm.cc
new file mode 100644
index 0000000..169e717
--- /dev/null
+++ b/cellular_capability_gsm.cc
@@ -0,0 +1,30 @@
+// Copyright (c) 2011 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.
+
+#include "shill/cellular_capability_gsm.h"
+
+#include <base/logging.h>
+
+#include "shill/cellular.h"
+#include "shill/proxy_factory.h"
+
+namespace shill {
+
+CellularCapabilityGSM::CellularCapabilityGSM(Cellular *cellular)
+    : CellularCapability(cellular) {}
+
+void CellularCapabilityGSM::InitProxies() {
+  VLOG(2) << __func__;
+  // TODO(petkov): Move GSM-specific proxy ownership from Cellular to this.
+  cellular()->set_modem_gsm_card_proxy(
+      proxy_factory()->CreateModemGSMCardProxy(cellular(),
+                                               cellular()->dbus_path(),
+                                               cellular()->dbus_owner()));
+  cellular()->set_modem_gsm_network_proxy(
+      proxy_factory()->CreateModemGSMNetworkProxy(cellular(),
+                                                  cellular()->dbus_path(),
+                                                  cellular()->dbus_owner()));
+}
+
+}  // namespace shill