diff options
author | shaktisahu <shaktisahu@chromium.org> | 2016-02-23 12:11:59 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-02-23 20:13:33 +0000 |
commit | 54c4561f9e22298823a387dcdc5ca0389aed866e (patch) | |
tree | ac4005fd552149291c36e5fa87efcbbbe715b5ec /blimp | |
parent | 282a925221a7ac2fb069681b316554f26b3a3335 (diff) | |
download | chromium_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.gn | 1 | ||||
-rw-r--r-- | blimp/client/app/android/AndroidManifest.xml.jinja2 | 1 | ||||
-rw-r--r-- | blimp/client/app/android/java/res/drawable-hdpi/web_input_background.9.png | bin | 0 -> 163 bytes | |||
-rw-r--r-- | blimp/client/app/android/java/res/drawable-mdpi/web_input_background.9.png | bin | 0 -> 164 bytes | |||
-rw-r--r-- | blimp/client/app/android/java/res/drawable-xhdpi/web_input_background.9.png | bin | 0 -> 166 bytes | |||
-rw-r--r-- | blimp/client/app/android/java/res/drawable-xxhdpi/web_input_background.9.png | bin | 0 -> 168 bytes | |||
-rw-r--r-- | blimp/client/app/android/java/res/drawable-xxxhdpi/web_input_background.9.png | bin | 0 -> 170 bytes | |||
-rw-r--r-- | blimp/client/app/android/java/res/layout/blimp_main.xml | 20 | ||||
-rw-r--r-- | blimp/client/app/android/java/src/org/chromium/blimp/BlimpRendererActivity.java | 6 | ||||
-rw-r--r-- | blimp/client/app/android/java/src/org/chromium/blimp/input/TextInputFeature.java | 70 |
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 Binary files differnew file mode 100644 index 0000000..21ceba9 --- /dev/null +++ b/blimp/client/app/android/java/res/drawable-hdpi/web_input_background.9.png 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 Binary files differnew file mode 100644 index 0000000..a08335d --- /dev/null +++ b/blimp/client/app/android/java/res/drawable-mdpi/web_input_background.9.png 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 Binary files differnew file mode 100644 index 0000000..58c92c5c --- /dev/null +++ b/blimp/client/app/android/java/res/drawable-xhdpi/web_input_background.9.png 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 Binary files differnew file mode 100644 index 0000000..df41f87 --- /dev/null +++ b/blimp/client/app/android/java/res/drawable-xxhdpi/web_input_background.9.png 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 Binary files differnew file mode 100644 index 0000000..92b702f --- /dev/null +++ b/blimp/client/app/android/java/res/drawable-xxxhdpi/web_input_background.9.png 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. + } +} |