diff options
author | Lars Bergstrom <lars@lars.com> | 2016-06-09 15:32:51 -0500 |
---|---|---|
committer | Lars Bergstrom <lars@lars.com> | 2016-06-09 15:36:55 -0500 |
commit | 6beed305245c0a3d4ecb020ce8e41a27e32beeb5 (patch) | |
tree | c7371b717193a559d2f8ac333854a007ef9d850e /support | |
parent | 3acb9540ffdf1caa496e624de6661ec05f7d17b6 (diff) | |
download | servo-6beed305245c0a3d4ecb020ce8e41a27e32beeb5.tar.gz servo-6beed305245c0a3d4ecb020ce8e41a27e32beeb5.zip |
Add very simple Android browser page load support
Diffstat (limited to 'support')
-rw-r--r-- | support/android/apk/AndroidManifest.xml | 22 | ||||
-rw-r--r-- | support/android/apk/src/com/mozilla/servo/MainActivity.java | 58 |
2 files changed, 79 insertions, 1 deletions
diff --git a/support/android/apk/AndroidManifest.xml b/support/android/apk/AndroidManifest.xml index 5f3a9e1ea5e..10e31d7ea83 100644 --- a/support/android/apk/AndroidManifest.xml +++ b/support/android/apk/AndroidManifest.xml @@ -20,6 +20,28 @@ <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> + + <!-- Web browser intents --> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + <data android:scheme="http" /> + <data android:scheme="https" /> + <data android:scheme="data" /> + <data android:scheme="javascript" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.VIEW" /> + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + <data android:scheme="file" /> + <data android:scheme="http" /> + <data android:scheme="https" /> + <data android:mimeType="text/html"/> + <data android:mimeType="text/plain"/> + <data android:mimeType="application/xhtml+xml"/> + </intent-filter> </activity> </application> diff --git a/support/android/apk/src/com/mozilla/servo/MainActivity.java b/support/android/apk/src/com/mozilla/servo/MainActivity.java index d99478ee3da..cb82e637dbf 100644 --- a/support/android/apk/src/com/mozilla/servo/MainActivity.java +++ b/support/android/apk/src/com/mozilla/servo/MainActivity.java @@ -1,8 +1,64 @@ package com.mozilla.servo; +import android.app.NativeActivity; +import android.content.Intent; +import android.os.Bundle; import android.util.Log; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.PrintStream; +import java.lang.System; + public class MainActivity extends android.app.NativeActivity { + private static final String LOGTAG="servo_wrapper"; static { - Log.i("servo_wrapper", "Loading the NativeActivity"); + Log.i(LOGTAG, "Loading the NativeActivity"); + } + + private void set_url(String url) { + try { + PrintStream out = new PrintStream(new FileOutputStream("/sdcard/servo/android_params")); + out.println("# The first line here should be the \"servo\" argument (without quotes) and the"); + out.println("# last should be the URL to load."); + out.println("# Blank lines and those beginning with a '#' are ignored."); + out.println("# Each line should be a separate parameter as would be parsed by the shell."); + out.println("# For example, \"servo -p 10 http://en.wikipedia.org/wiki/Rust\" would take 4"); + out.println("# lines (the \"-p\" and \"10\" are separate even though they are related)."); + out.println("servo"); + out.println("-w"); + String absUrl = url.replace("file:///storage/emulated/0/", "/sdcard/"); + out.println(absUrl); + out.flush(); + out.close(); + } catch (FileNotFoundException e) { + } + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + final Intent intent = getIntent(); + if (intent.getAction().equals(Intent.ACTION_VIEW)) { + final String url = intent.getDataString(); + Log.d(LOGTAG, "Received url "+url); + set_url(url); + } + } + + @Override + protected void onStop() { + super.onStop(); // Always call the superclass method first + + Log.d(LOGTAG, "got onStop; finishing servo activity"); + finish(); + + // Glutin and the Java wrapper libraries that we use currently do not support restoring + // Servo after Android has sent it to the background, as the resources were reclaimed. + // Until we either address that in glutin or move to a library that supports recreating + // the native resources after being restored, we just forcibly shut Servo down when it + // is sent to the background. + int pid = android.os.Process.myPid(); + android.os.Process.killProcess(pid); + System.exit(0); } } |