summaryrefslogtreecommitdiffstats
path: root/blimp
diff options
context:
space:
mode:
authorshaktisahu <shaktisahu@chromium.org>2016-02-23 12:11:59 -0800
committerCommit bot <commit-bot@chromium.org>2016-02-23 20:13:33 +0000
commit54c4561f9e22298823a387dcdc5ca0389aed866e (patch)
treeac4005fd552149291c36e5fa87efcbbbe715b5ec /blimp
parent282a925221a7ac2fb069681b316554f26b3a3335 (diff)
downloadchromium_src-54c4561f9e22298823a387dcdc5ca0389aed866e.zip
chromium_src-54c4561f9e22298823a387dcdc5ca0389aed866e.tar.gz
chromium_src-54c4561f9e22298823a387dcdc5ca0389aed866e.tar.bz2
blimp client : Added a text input feature to blimp client on android
Added a floating edit text along with softkey which would show up when text input is needed from users. BUG=585646 NOTRY=true Review URL: https://codereview.chromium.org/1688433004 Cr-Commit-Position: refs/heads/master@{#377072}
Diffstat (limited to 'blimp')
-rw-r--r--blimp/client/BUILD.gn1
-rw-r--r--blimp/client/app/android/AndroidManifest.xml.jinja21
-rw-r--r--blimp/client/app/android/java/res/drawable-hdpi/web_input_background.9.pngbin0 -> 163 bytes
-rw-r--r--blimp/client/app/android/java/res/drawable-mdpi/web_input_background.9.pngbin0 -> 164 bytes
-rw-r--r--blimp/client/app/android/java/res/drawable-xhdpi/web_input_background.9.pngbin0 -> 166 bytes
-rw-r--r--blimp/client/app/android/java/res/drawable-xxhdpi/web_input_background.9.pngbin0 -> 168 bytes
-rw-r--r--blimp/client/app/android/java/res/drawable-xxxhdpi/web_input_background.9.pngbin0 -> 170 bytes
-rw-r--r--blimp/client/app/android/java/res/layout/blimp_main.xml20
-rw-r--r--blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java6
-rw-r--r--blimp/client/app/android/java/src/org/chromium/blimp/input/TextInputFeature.java70
10 files changed, 94 insertions, 4 deletions
diff --git a/blimp/client/BUILD.gn b/blimp/client/BUILD.gn
index 6029cd0..d2ddc2b 100644
--- a/blimp/client/BUILD.gn
+++ b/blimp/client/BUILD.gn
@@ -309,6 +309,7 @@ if (is_android) {
"app/android/java/src/org/chromium/blimp/BlimpLibraryLoader.java",
"app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java",
"app/android/java/src/org/chromium/blimp/BlimpView.java",
+ "app/android/java/src/org/chromium/blimp/input/TextInputFeature.java",
"app/android/java/src/org/chromium/blimp/session/BlimpClientSession.java",
"app/android/java/src/org/chromium/blimp/session/TabControlFeature.java",
"app/android/java/src/org/chromium/blimp/toolbar/Toolbar.java",
diff --git a/blimp/client/app/android/AndroidManifest.xml.jinja2 b/blimp/client/app/android/AndroidManifest.xml.jinja2
index 3256dca..adb5b2f 100644
--- a/blimp/client/app/android/AndroidManifest.xml.jinja2
+++ b/blimp/client/app/android/AndroidManifest.xml.jinja2
@@ -19,6 +19,7 @@
android:launchMode="singleTask"
android:theme="@android:style/Theme.Holo.Light.NoActionBar"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize"
+ android:windowSoftInputMode="adjustResize"
android:hardwareAccelerated="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
diff --git a/blimp/client/app/android/java/res/drawable-hdpi/web_input_background.9.png b/blimp/client/app/android/java/res/drawable-hdpi/web_input_background.9.png
new file mode 100644
index 0000000..21ceba9
--- /dev/null
+++ b/blimp/client/app/android/java/res/drawable-hdpi/web_input_background.9.png
Binary files differ
diff --git a/blimp/client/app/android/java/res/drawable-mdpi/web_input_background.9.png b/blimp/client/app/android/java/res/drawable-mdpi/web_input_background.9.png
new file mode 100644
index 0000000..a08335d
--- /dev/null
+++ b/blimp/client/app/android/java/res/drawable-mdpi/web_input_background.9.png
Binary files differ
diff --git a/blimp/client/app/android/java/res/drawable-xhdpi/web_input_background.9.png b/blimp/client/app/android/java/res/drawable-xhdpi/web_input_background.9.png
new file mode 100644
index 0000000..58c92c5c
--- /dev/null
+++ b/blimp/client/app/android/java/res/drawable-xhdpi/web_input_background.9.png
Binary files differ
diff --git a/blimp/client/app/android/java/res/drawable-xxhdpi/web_input_background.9.png b/blimp/client/app/android/java/res/drawable-xxhdpi/web_input_background.9.png
new file mode 100644
index 0000000..df41f87
--- /dev/null
+++ b/blimp/client/app/android/java/res/drawable-xxhdpi/web_input_background.9.png
Binary files differ
diff --git a/blimp/client/app/android/java/res/drawable-xxxhdpi/web_input_background.9.png b/blimp/client/app/android/java/res/drawable-xxxhdpi/web_input_background.9.png
new file mode 100644
index 0000000..92b702f
--- /dev/null
+++ b/blimp/client/app/android/java/res/drawable-xxxhdpi/web_input_background.9.png
Binary files differ
diff --git a/blimp/client/app/android/java/res/layout/blimp_main.xml b/blimp/client/app/android/java/res/layout/blimp_main.xml
index a019db2..f814674 100644
--- a/blimp/client/app/android/java/res/layout/blimp_main.xml
+++ b/blimp/client/app/android/java/res/layout/blimp_main.xml
@@ -4,7 +4,7 @@
found in the LICENSE file. -->
<merge xmlns:android="http://schemas.android.com/apk/res/android">
- <LinearLayout
+ <RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
@@ -13,6 +13,7 @@
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="56dp"
+ android:layout_alignParentTop="true"
android:paddingStart="5dp"
android:orientation="horizontal"
android:gravity="center"
@@ -41,6 +42,19 @@
<org.chromium.blimp.BlimpView
android:id="@+id/renderer"
android:layout_width="match_parent"
- android:layout_height="match_parent" />
- </LinearLayout>
+ android:layout_height="match_parent"
+ android:layout_below="@+id/toolbar"/>
+ <org.chromium.blimp.input.TextInputFeature
+ android:id="@+id/editText"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:background="@drawable/web_input_background"
+ android:layout_alignParentBottom="true"
+ android:layout_marginTop="45dp"
+ android:padding="10dp"
+ android:paddingTop="16dp"
+ android:inputType="text|textWebEditText"
+ android:visibility="gone"/>
+
+ </RelativeLayout>
</merge> \ No newline at end of file
diff --git a/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java b/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
index 35f8e19..90b5512 100644
--- a/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
+++ b/blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java
@@ -13,6 +13,7 @@ import org.chromium.base.library_loader.ProcessInitException;
import org.chromium.blimp.auth.RetryingTokenSource;
import org.chromium.blimp.auth.TokenSource;
import org.chromium.blimp.auth.TokenSourceImpl;
+import org.chromium.blimp.input.TextInputFeature;
import org.chromium.blimp.session.BlimpClientSession;
import org.chromium.blimp.session.TabControlFeature;
import org.chromium.blimp.toolbar.Toolbar;
@@ -25,7 +26,7 @@ import org.chromium.ui.widget.Toast;
public class BlimpRendererActivity extends Activity
implements BlimpLibraryLoader.Callback, TokenSource.Callback, BlimpClientSession.Callback {
private static final int ACCOUNT_CHOOSER_INTENT_REQUEST_CODE = 100;
- private static final String TAG = "Blimp";
+ private static final String TAG = "BlimpRendererActivity";
/** Provides user authentication tokens that can be used to query for engine assignments. This
* can potentially query GoogleAuthUtil for an OAuth2 authentication token with userinfo.email
@@ -36,6 +37,7 @@ public class BlimpRendererActivity extends Activity
private Toolbar mToolbar;
private BlimpClientSession mBlimpClientSession;
private TabControlFeature mTabControlFeature;
+ private TextInputFeature mTextInputFeature;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -135,6 +137,8 @@ public class BlimpRendererActivity extends Activity
mTabControlFeature = new TabControlFeature(mBlimpClientSession, mBlimpView);
mToolbar.loadUrl("http://www.google.com/");
+
+ mTextInputFeature = (TextInputFeature) findViewById(R.id.editText);
}
// TokenSource.Callback implementation.
diff --git a/blimp/client/app/android/java/src/org/chromium/blimp/input/TextInputFeature.java b/blimp/client/app/android/java/src/org/chromium/blimp/input/TextInputFeature.java
new file mode 100644
index 0000000..1d44f95
--- /dev/null
+++ b/blimp/client/app/android/java/src/org/chromium/blimp/input/TextInputFeature.java
@@ -0,0 +1,70 @@
+// Copyright 2016 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.blimp.input;
+
+import android.content.Context;
+import android.util.AttributeSet;
+import android.view.KeyEvent;
+import android.view.View;
+import android.view.inputmethod.EditorInfo;
+import android.widget.EditText;
+import android.widget.TextView;
+
+import org.chromium.base.Log;
+import org.chromium.ui.UiUtils;
+
+/**
+ * A {@link View} that allows users to enter text into a web page.
+ * This is a floating text box which closes when the user hits enter or presses back button.
+ */
+public class TextInputFeature extends EditText {
+ private static final String TAG = "TextInputFeature";
+
+ public TextInputFeature(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ setOnEditorActionListener(new TextView.OnEditorActionListener() {
+ public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
+ if (actionId == EditorInfo.IME_ACTION_NEXT
+ || actionId == EditorInfo.IME_ACTION_DONE) {
+ sendTextToBrowser(v.getText().toString());
+ hideIme();
+ return true;
+ }
+ return false;
+ }
+ });
+ }
+
+ @Override
+ public boolean dispatchKeyEventPreIme(KeyEvent event) {
+ if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
+ setVisibility(View.GONE);
+ }
+ return super.dispatchKeyEventPreIme(event);
+ }
+
+ /**
+ * Brings up the IME along with the edit text above it.
+ */
+ public void showIme() {
+ setVisibility(View.VISIBLE);
+ requestFocus();
+ UiUtils.showKeyboard(this);
+ }
+
+ /**
+ * Hides the edit text along with the IME.
+ */
+ private void hideIme() {
+ setText("");
+ setVisibility(View.GONE);
+ UiUtils.hideKeyboard(this);
+ }
+
+ private void sendTextToBrowser(String text) {
+ Log.d(TAG, "Send to browser : " + text);
+ // TODO(shaktisahu): Send data to server.
+ }
+}