aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndy Doan <andy.doan@linaro.org>2011-12-16 17:13:25 -0600
committerAndy Doan <andy.doan@linaro.org>2011-12-16 17:21:35 -0600
commit9f1de8b5c1644f74c3fe3841ed1af8a1a12a9467 (patch)
tree61aaaa996db18c1cce31727e835c55d3c8828469
parent5ff02bd470f0680b6458a17af67bc41050840d44 (diff)
downloadLinaroConnect-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.java19
-rw-r--r--src/org/linaro/connect/OpenIDLogin.java44
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)";
}