From 05c604acba2f1a143fb8a1f31c102b394506b15b Mon Sep 17 00:00:00 2001
From: Mike Kasick <mike@kasick.org>
Date: Wed, 1 Feb 2012 21:36:49 -0500
Subject: [PATCH] Port wimax support changes from CM9.

- Register WiMax service in ContextImpl (fixes 4G toggle).
- Fix misdocumented EXTRA_4G_STATE in WimaxManagerConstants.
- Share wimaxClassLoader between WimaxHelper and ConnectivityService.

Note that WimaxManagerConstants was previously misdocumented, confabulating
the lookup key EXTRA_4G_STATE ("4g_state") with EXTRA_WIMAX_STATUS
("wimax_status"), which no longer exists.  This is also fixed.

Change-Id: I4f5973e7bd2ff4c860036df0f38589b34ad72b49
---
 core/java/android/app/ContextImpl.java                    |    7 +++++++
 core/java/android/net/wimax/WimaxManagerConstants.java    |    3 +--
 services/java/com/android/server/ConnectivityService.java |   12 ++----------
 3 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 508e7ce..c672930 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -74,6 +74,8 @@ import android.net.wifi.IWifiManager;
 import android.net.wifi.WifiManager;
 import android.net.wifi.p2p.IWifiP2pManager;
 import android.net.wifi.p2p.WifiP2pManager;
+import android.net.wimax.WimaxHelper;
+import android.net.wimax.WimaxManagerConstants;
 import android.nfc.NfcManager;
 import android.os.Binder;
 import android.os.Bundle;
@@ -496,6 +498,11 @@ class ContextImpl extends Context {
                     final Context outerContext = ctx.getOuterContext();
                     return new ProfileManager (outerContext, ctx.mMainThread.getHandler());
                 }});
+
+        registerService(WimaxManagerConstants.WIMAX_SERVICE, new ServiceFetcher() {
+                public Object createService(ContextImpl ctx) {
+                    return WimaxHelper.createWimaxService(ctx, ctx.mMainThread.getHandler());
+                }});
     }
 
     static ContextImpl getImpl(Context context) {
diff --git a/core/java/android/net/wimax/WimaxManagerConstants.java b/core/java/android/net/wimax/WimaxManagerConstants.java
index a8239ba..adb7166 100644
--- a/core/java/android/net/wimax/WimaxManagerConstants.java
+++ b/core/java/android/net/wimax/WimaxManagerConstants.java
@@ -24,7 +24,7 @@ public class WimaxManagerConstants
      * The lookup key for an int that indicates whether Wimax is enabled,
      * disabled, enabling, disabling, or unknown.
      */
-    public static final String EXTRA_WIMAX_STATUS = "wimax_status";
+    public static final String EXTRA_4G_STATE = "4g_state";
 
     /**
      * Broadcast intent action indicating that Wimax state has been changed
@@ -48,7 +48,6 @@ public class WimaxManagerConstants
      * initializing, initialized, unknown and ready.
      */
     public static final String EXTRA_WIMAX_STATE = "WimaxState";
-    public static final String EXTRA_4G_STATE = "4g_state";
     public static final String EXTRA_WIMAX_STATE_INT = "WimaxStateInt";
     /**
      * The lookup key for an int that indicates whether state of Wimax
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 08d6dbc..94ae477 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -53,6 +53,7 @@ import android.net.Proxy;
 import android.net.ProxyProperties;
 import android.net.RouteInfo;
 import android.net.wifi.WifiStateTracker;
+import android.net.wimax.WimaxHelper;
 import android.net.wimax.WimaxManagerConstants;
 import android.os.Binder;
 import android.os.FileUtils;
@@ -557,8 +558,6 @@ private NetworkStateTracker makeWimaxStateTracker() {
         Class wimaxStateTrackerClass = null;
         Class wimaxServiceClass = null;
         Class wimaxManagerClass;
-        String wimaxJarLocation;
-        String wimaxLibLocation;
         String wimaxManagerClassName;
         String wimaxServiceClassName;
         String wimaxStateTrackerClassName;
@@ -570,10 +569,6 @@ private NetworkStateTracker makeWimaxStateTracker() {
 
         if (isWimaxEnabled) {
             try {
-                wimaxJarLocation = mContext.getResources().getString(
-                        com.android.internal.R.string.config_wimaxServiceJarLocation);
-                wimaxLibLocation = mContext.getResources().getString(
-                        com.android.internal.R.string.config_wimaxNativeLibLocation);
                 wimaxManagerClassName = mContext.getResources().getString(
                         com.android.internal.R.string.config_wimaxManagerClassname);
                 wimaxServiceClassName = mContext.getResources().getString(
@@ -581,10 +576,7 @@ private NetworkStateTracker makeWimaxStateTracker() {
                 wimaxStateTrackerClassName = mContext.getResources().getString(
                         com.android.internal.R.string.config_wimaxStateTrackerClassname);
 
-                log("wimaxJarLocation: " + wimaxJarLocation);
-                wimaxClassLoader =  new DexClassLoader(wimaxJarLocation,
-                        new ContextWrapper(mContext).getCacheDir().getAbsolutePath(),
-                        wimaxLibLocation, ClassLoader.getSystemClassLoader());
+                wimaxClassLoader = WimaxHelper.getWimaxClassLoader(mContext);
 
                 try {
                     wimaxManagerClass = wimaxClassLoader.loadClass(wimaxManagerClassName);
-- 
1.7.10.4

