diff options
author | Andy Doan <andy.doan@linaro.org> | 2011-12-16 17:13:25 -0600 |
---|---|---|
committer | Andy Doan <andy.doan@linaro.org> | 2011-12-16 17:21:35 -0600 |
commit | 9f1de8b5c1644f74c3fe3841ed1af8a1a12a9467 (patch) | |
tree | 61aaaa996db18c1cce31727e835c55d3c8828469 | |
parent | 5ff02bd470f0680b6458a17af67bc41050840d44 (diff) | |
download | LinaroConnect-9f1de8b5c1644f74c3fe3841ed1af8a1a12a9467.tar.gz |
update OpenIDLogin to not be tied to summit
This makes the OpenIDLogin code a bit more generic so another
module can take advantage of it
-rw-r--r-- | src/org/linaro/connect/MyScheduleActivity.java | 19 | ||||
-rw-r--r-- | src/org/linaro/connect/OpenIDLogin.java | 44 |
2 files changed, 35 insertions, 28 deletions
diff --git a/src/org/linaro/connect/MyScheduleActivity.java b/src/org/linaro/connect/MyScheduleActivity.java index 8de22dd..6e14f9e 100644 --- a/src/org/linaro/connect/MyScheduleActivity.java +++ b/src/org/linaro/connect/MyScheduleActivity.java @@ -23,6 +23,9 @@ import android.widget.TextView; */ public class MyScheduleActivity extends Activity{ + private final static String SUMMIT_LOGIN_URL = + "http://summit.linaro.org/openid/login?next="; + private Button mLoginBtn; private TextView mStatus; private OpenIDLogin mOil; @@ -50,7 +53,7 @@ public class MyScheduleActivity extends Activity{ final WebView wv = (WebView)findViewById(R.id.my_schedule_webview); wv.setVisibility(View.GONE); - mOil = new OpenIDLogin(getIntent().getDataString(), wv); + mOil = new OpenIDLogin(SUMMIT_LOGIN_URL, getIntent().getDataString(), wv); mStatus = (TextView)findViewById(R.id.my_schedule_status); @@ -89,6 +92,8 @@ public class MyScheduleActivity extends Activity{ } Handler mHandler = new Handler() { + final static String NEEDLE = "participant/my_schedule_"; + @Override public void handleMessage(Message msg) { int percent = msg.getData().getInt(OpenIDLogin.STATUS, -1); @@ -101,7 +106,17 @@ public class MyScheduleActivity extends Activity{ setProgressBarIndeterminateVisibility(false); mLoginBtn.setText(R.string.my_schedule_login); - String token = msg.getData().getString(OpenIDLogin.SECRET_KEY); + String content = msg.getData().getString(OpenIDLogin.CONTENT); + + int idx = (content==null) ? 0: content.indexOf(NEEDLE); + String token = null; + if(idx > 0) { + idx+= NEEDLE.length(); + int idx2 = content.indexOf(".ical", idx); + if( idx2 > 0 ) + token = content.substring(idx, idx2); + } + if( token == null ) { mStatus.setText(R.string.my_schedule_login_failed); mLoginBtn.setEnabled(true); diff --git a/src/org/linaro/connect/OpenIDLogin.java b/src/org/linaro/connect/OpenIDLogin.java index 7326625..e51cd12 100644 --- a/src/org/linaro/connect/OpenIDLogin.java +++ b/src/org/linaro/connect/OpenIDLogin.java @@ -14,16 +14,18 @@ import android.webkit.WebViewClient; */ public class OpenIDLogin { - public final static String SECRET_KEY = "SECRET"; + public final static String CONTENT = "PAGE_CONTENT"; public final static String STATUS = "STATUS"; private final WebView mWebView; + private final String mStartUrl; private String mOnSetUserPassJS; private Handler mHandler; private boolean mLoginHit = false; - public OpenIDLogin(final String destinationURL, WebView v) { + public OpenIDLogin(String startUrl, final String destinationURL, WebView v) { + mStartUrl = startUrl; mWebView = v; v.getSettings().setJavaScriptEnabled(true); @@ -31,16 +33,16 @@ public class OpenIDLogin { v.getSettings().setSaveFormData(false); v.getSettings().setSavePassword(false); - v.addJavascriptInterface(new JavaScriptInterface(), "ANDROID"); + v.addJavascriptInterface(new JavaScriptInterface(), "OPENID"); v.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { // inject the proper js script into what we are loading if(url.equals(destinationURL)) { - mWebView.loadUrl(onSummitLoggedIn); + mWebView.loadUrl(onLoggedIn); sendStatus(90); } - else if( url.equals("http://summit.linaro.org/openid/login/?next=") ) { + else if( url.equals(mStartUrl) ) { mWebView.loadUrl(onOpenidRedirect); sendStatus(30); } @@ -49,7 +51,7 @@ public class OpenIDLogin { //this is the second time we hit this page. this means //the login failed sendStatus(90); - sendToken(null); + sendContent(null); return; } @@ -59,7 +61,7 @@ public class OpenIDLogin { } else { Log.w(LinaroConnect.TAG, "unknown URL: " + url); - sendToken(null); //tell the caller to stop waiting + sendContent(null); //tell the caller to stop waiting } } }); @@ -71,12 +73,12 @@ public class OpenIDLogin { mHandler = h; mLoginHit = false; sendStatus(0); - mWebView.loadUrl("http://summit.linaro.org/openid/login?next="); + mWebView.loadUrl(mStartUrl); } - private void sendToken(String token) { + private void sendContent(String content) { Bundle b = new Bundle(); - b.putString(SECRET_KEY, token); + b.putString(CONTENT, content); Message m = mHandler.obtainMessage(); m.setData(b); @@ -93,26 +95,16 @@ public class OpenIDLogin { } class JavaScriptInterface { - final static String NEEDLE = "participant/my_schedule_"; public void onOpenidRedirect() { } /** - * Called when we are actually logged into summit with the content of - * the page. We search the page for the key used to download the - * user's ical schedule + * Called when we are actually logged in with the content of + * the page. */ - public void onSummitLoggedIn(String html) { - int idx = html.indexOf(NEEDLE); - String token = null; - if(idx > 0) { - idx+= NEEDLE.length(); - int idx2 = html.indexOf(".ical", idx); - if( idx2 > 0 ) - token = html.substring(idx, idx2); - } - sendToken(token); + public void onLoggedIn(String html) { + sendContent(html); } } @@ -127,8 +119,8 @@ public class OpenIDLogin { "})()"; /** not currently used */ - private static String onOpenidRedirect = "javascript:window.ANDROID.onOpenidRedirect()"; + private static String onOpenidRedirect = "javascript:window.OPENID.onOpenidRedirect()"; /** used to get the HTML of the page we are actually looking for*/ - private static String onSummitLoggedIn = "javascript:window.ANDROID.onSummitLoggedIn(document.getElementsByTagName('body')[0].innerHTML)"; + private static String onLoggedIn = "javascript:window.OPENID.onLoggedIn(document.getElementsByTagName('body')[0].innerHTML)"; } |