1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5package org.chromium.mojo_shell_apk;
6
7import android.app.Activity;
8import android.app.AlertDialog;
9import android.content.DialogInterface;
10import android.content.Intent;
11import android.os.Bundle;
12import android.util.Log;
13import android.widget.EditText;
14
15import org.chromium.base.library_loader.LibraryLoader;
16import org.chromium.base.library_loader.ProcessInitException;
17
18/**
19 * Activity for managing the Mojo Shell.
20 */
21public class MojoShellActivity extends Activity {
22    private static final String TAG = "MojoShellActivity";
23
24    @Override
25    protected void onCreate(final Bundle savedInstanceState) {
26        super.onCreate(savedInstanceState);
27
28        try {
29            LibraryLoader.ensureInitialized();
30        } catch (ProcessInitException e) {
31            Log.e(TAG, "libmojo_shell initialization failed.", e);
32            finish();
33            return;
34        }
35
36        MojoMain.ensureInitialized(this);
37
38        String appUrl = getUrlFromIntent(getIntent());
39        if (appUrl == null) {
40            Log.i(TAG, "No URL provided via intent, prompting user...");
41            AlertDialog.Builder alert = new AlertDialog.Builder(this);
42            alert.setTitle("Enter a URL");
43            alert.setMessage("Enter a URL");
44            final EditText input = new EditText(this);
45            alert.setView(input);
46            alert.setPositiveButton("Load", new DialogInterface.OnClickListener() {
47                @Override
48                public void onClick(DialogInterface dialog, int button) {
49                    String url = input.getText().toString();
50                    startWithURL(url);
51                }
52            });
53            alert.show();
54        } else {
55            startWithURL(appUrl);
56        }
57    }
58
59    private static String getUrlFromIntent(Intent intent) {
60        return intent != null ? intent.getDataString() : null;
61    }
62
63    private void startWithURL(String url) {
64        MojoMain.start(this, url);
65        Log.i(TAG, "Mojo started: " + url);
66    }
67}
68