Chromium Code Reviews| Index: net/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java |
| diff --git a/net/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java b/net/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..7543d9543109f521a6a3f9006c83059ae9729541 |
| --- /dev/null |
| +++ b/net/cronet/android/sample/src/org/chromium/cronet_sample_apk/CronetSampleActivity.java |
| @@ -0,0 +1,137 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +package org.chromium.cronet_sample_apk; |
| + |
| +import android.app.Activity; |
| +import android.app.AlertDialog; |
| +import android.content.DialogInterface; |
| +import android.content.Intent; |
| +import android.os.Bundle; |
| +import android.util.Log; |
| +import android.widget.EditText; |
| +import android.widget.Toast; |
| + |
| +import org.chromium.net.UrlRequest; |
| +import org.chromium.net.UrlRequestContext; |
| + |
| +//import java.io.FileOutputStream; |
|
mmenke
2014/02/27 23:06:02
Remove unused line
mef
2014/03/03 19:15:13
Done.
|
| +import java.nio.channels.Channels; |
| +import java.nio.channels.WritableByteChannel; |
| +import java.util.HashMap; |
| +import java.util.Map; |
| + |
| +/** |
| + * Activity for managing the Cronet Sample. |
| + */ |
| +public class CronetSampleActivity extends Activity { |
| + private static final String TAG = "CronetSampleActivity"; |
|
mmenke
2014/02/27 23:06:02
2 space indent (Goes for most of this file)
mef
2014/03/03 19:15:13
Done.
|
| + public static final String COMMAND_LINE_ARGS_KEY = "commandLineArgs"; |
| + |
| + UrlRequestContext mRequestContext; |
| + String mUrl; |
| + boolean mLoading = false; |
| + int mHttpStatusCode = 0; |
|
mmenke
2014/02/27 23:06:02
Again, this naming seems to violate the style guid
mef
2014/03/03 19:15:13
Ok.
|
| + |
| + class SampleRequestContext extends UrlRequestContext { |
| + public SampleRequestContext() { |
| + super(getApplicationContext(), "Cronet Sample", UrlRequestContext.LOG_VERBOSE); |
|
mmenke
2014/02/27 23:06:02
Wrap at 80 chars
mef
2014/03/03 19:15:13
Done.
|
| + } |
| + } |
| + |
| + class SampleRequest extends UrlRequest { |
| + public SampleRequest(UrlRequestContext requestContext, String url, int priority, |
| + Map<String, String> headers, WritableByteChannel sink) { |
| + super(requestContext, url, priority, headers, sink); |
| + } |
| + |
| + @Override |
| + protected void onRequestComplete() { |
| + Log.i(TAG, "****** Request Complete, status code is " + getHttpStatusCode()); |
| + Intent intent = new Intent(getApplicationContext(), CronetSampleActivity.class); |
| + startActivity(intent); |
| + final String url = getUrl(); |
| + final CharSequence text = "Completed " + getUrl() + " (" + getHttpStatusCode() + ")"; |
| + mHttpStatusCode = getHttpStatusCode(); |
| + CronetSampleActivity.this.runOnUiThread(new Runnable() { |
| + public void run() { |
| + mLoading = false; |
| + Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT); |
| + toast.show(); |
| + promptForURL(url); |
| + } |
| + }); |
| + } |
| + }; |
| + |
| + @Override |
| + protected void onCreate(final Bundle savedInstanceState) { |
| + super.onCreate(savedInstanceState); |
| + |
| + try { |
| + LibraryLoader.ensureInitialized(); |
| + } catch (UnsatisfiedLinkError e) { |
| + Log.e(TAG, "libcronet_sample initialization failed.", e); |
| + finish(); |
| + return; |
| + } |
| + |
| + mRequestContext = new SampleRequestContext(); |
| + |
| + String appUrl = getUrlFromIntent(getIntent()); |
| + if (appUrl == null) { |
| + promptForURL("https://"); |
| + } else { |
| + startWithURL(appUrl); |
| + } |
| + } |
| + |
| + private void promptForURL(String url) { |
| + Log.i(TAG, "No URL provided via intent, prompting user..."); |
| + AlertDialog.Builder alert = new AlertDialog.Builder(this); |
| + alert.setTitle("Enter a URL"); |
| + alert.setMessage("Enter a URL"); |
| + final EditText input = new EditText(this); |
| + input.setText(url); |
| + alert.setView(input); |
| + alert.setPositiveButton("Load", new DialogInterface.OnClickListener() { |
| + public void onClick(DialogInterface dialog, int button) { |
| + String url = input.getText().toString(); |
| + startWithURL(url); |
| + } |
| + }); |
| + alert.show(); |
| + } |
| + |
| + private static String getUrlFromIntent(Intent intent) { |
| + return intent != null ? intent.getDataString() : null; |
| + } |
| + |
| + private void startWithURL(String url) { |
| + Log.i(TAG, "Cronet started: " + url); |
| + mUrl = url; |
| + mLoading = true; |
| + |
| + HashMap<String, String> headers = new HashMap<String, String>(); |
| + WritableByteChannel sink = Channels.newChannel(System.out); |
| + UrlRequest request = new SampleRequest(mRequestContext, |
| + url, |
| + UrlRequest.REQUEST_PRIORITY_MEDIUM, |
| + headers, |
| + sink); |
|
mmenke
2014/02/27 23:06:02
fix indent
mef
2014/03/03 19:15:13
Done.
|
| + request.start(); |
| + } |
| + |
| + public String getUrl() { |
| + return mUrl; |
| + } |
| + |
| + public boolean isLoading() { |
| + return mLoading; |
| + } |
| + |
| + public int getHttpStatusCode() { |
| + return mHttpStatusCode; |
| + } |
| +} |