| Index: android_webview/shell_apk/src/org/chromium/android_webview/shell/AndroidWebViewTestShellActivity.java
|
| diff --git a/android_webview/shell_apk/src/org/chromium/android_webview/shell/AndroidWebViewTestShellActivity.java b/android_webview/shell_apk/src/org/chromium/android_webview/shell/AndroidWebViewTestShellActivity.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..e1408e8c4e2b349c50c4a66f0e2ac7e143d79340
|
| --- /dev/null
|
| +++ b/android_webview/shell_apk/src/org/chromium/android_webview/shell/AndroidWebViewTestShellActivity.java
|
| @@ -0,0 +1,162 @@
|
| +// Copyright (c) 2013 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.android_webview.shell;
|
| +
|
| +import android.app.Activity;
|
| +import android.content.Intent;
|
| +import android.content.Context;
|
| +import android.content.SharedPreferences;
|
| +import android.os.Bundle;
|
| +import android.text.TextUtils;
|
| +import android.util.Log;
|
| +import android.view.KeyEvent;
|
| +import android.view.View;
|
| +import android.view.View.OnClickListener;
|
| +import android.view.View.OnFocusChangeListener;
|
| +import android.view.ViewGroup.LayoutParams;
|
| +import android.view.WindowManager;
|
| +import android.view.inputmethod.EditorInfo;
|
| +import android.view.inputmethod.InputMethodManager;
|
| +import android.widget.EditText;
|
| +import android.widget.ImageButton;
|
| +import android.widget.LinearLayout;
|
| +import android.widget.TextView;
|
| +import android.widget.TextView.OnEditorActionListener;
|
| +
|
| +import org.chromium.android_webview.AwBrowserProcess;
|
| +import org.chromium.android_webview.AwBrowserContext;
|
| +import org.chromium.android_webview.AwContents;
|
| +import org.chromium.android_webview.AwContentsClient;
|
| +import org.chromium.android_webview.test.AwTestContainerView;
|
| +import org.chromium.android_webview.test.NullContentsClient;
|
| +import org.chromium.content.browser.LoadUrlParams;
|
| +
|
| +/*
|
| + * This is a lightweight activity for tests that only require WebView functionality.
|
| + */
|
| +public class AndroidWebViewTestShellActivity extends Activity {
|
| + private final static String PREFERENCES_NAME = "AndroidWebViewTestShellPrefs";
|
| + private final static String INITIAL_URL = "about:blank";
|
| + private AwTestContainerView mAwTestContainerView;
|
| + private EditText mUrlTextView;
|
| + private ImageButton mPrevButton;
|
| + private ImageButton mNextButton;
|
| +
|
| + @Override
|
| + public void onCreate(Bundle savedInstanceState) {
|
| + super.onCreate(savedInstanceState);
|
| +
|
| + setContentView(R.layout.testshell_activity);
|
| +
|
| + mAwTestContainerView = createAwTestContainerView();
|
| +
|
| + LinearLayout contentContainer = (LinearLayout) findViewById(R.id.content_container);
|
| + mAwTestContainerView.setLayoutParams(new LinearLayout.LayoutParams(
|
| + LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT, 1f));
|
| + contentContainer.addView(mAwTestContainerView);
|
| + mAwTestContainerView.requestFocus();
|
| +
|
| + initializeUrlField();
|
| + initializeNavigationButtons();
|
| +
|
| + String startupUrl = getUrlFromIntent(getIntent());
|
| + if (TextUtils.isEmpty(startupUrl)) {
|
| + startupUrl = INITIAL_URL;
|
| + }
|
| +
|
| + mAwTestContainerView.getAwContents().loadUrl(new LoadUrlParams(startupUrl));
|
| + mUrlTextView.setText(startupUrl);
|
| + }
|
| +
|
| + private AwTestContainerView createAwTestContainerView() {
|
| + AwTestContainerView testContainerView = new AwTestContainerView(this);
|
| + AwContentsClient awContentsClient = new NullContentsClient() {
|
| + @Override
|
| + public void onPageStarted(String url) {
|
| + if (mUrlTextView != null) {
|
| + mUrlTextView.setText(url);
|
| + }
|
| + }
|
| + };
|
| +
|
| + SharedPreferences sharedPreferences =
|
| + getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE);
|
| + AwBrowserContext browserContext = new AwBrowserContext(sharedPreferences);
|
| +
|
| + testContainerView.initialize(new AwContents(browserContext, testContainerView,
|
| + testContainerView.getInternalAccessDelegate(),
|
| + awContentsClient, false));
|
| + testContainerView.getContentViewCore().getContentSettings().setJavaScriptEnabled(true);
|
| + return testContainerView;
|
| + }
|
| +
|
| + private static String getUrlFromIntent(Intent intent) {
|
| + return intent != null ? intent.getDataString() : null;
|
| + }
|
| +
|
| + private void setKeyboardVisibilityForUrl(boolean visible) {
|
| + InputMethodManager imm = (InputMethodManager) getSystemService(
|
| + Context.INPUT_METHOD_SERVICE);
|
| + if (visible) {
|
| + imm.showSoftInput(mUrlTextView, InputMethodManager.SHOW_IMPLICIT);
|
| + } else {
|
| + imm.hideSoftInputFromWindow(mUrlTextView.getWindowToken(), 0);
|
| + }
|
| + }
|
| +
|
| + private void initializeUrlField() {
|
| + mUrlTextView = (EditText) findViewById(R.id.url);
|
| + mUrlTextView.setOnEditorActionListener(new OnEditorActionListener() {
|
| + @Override
|
| + public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
|
| + if ((actionId != EditorInfo.IME_ACTION_GO) && (event == null ||
|
| + event.getKeyCode() != KeyEvent.KEYCODE_ENTER ||
|
| + event.getKeyCode() != KeyEvent.ACTION_DOWN)) {
|
| + return false;
|
| + }
|
| +
|
| + mAwTestContainerView.getAwContents().loadUrl(
|
| + new LoadUrlParams(mUrlTextView.getText().toString()));
|
| + mUrlTextView.clearFocus();
|
| + setKeyboardVisibilityForUrl(false);
|
| + mAwTestContainerView.requestFocus();
|
| + return true;
|
| + }
|
| + });
|
| + mUrlTextView.setOnFocusChangeListener(new OnFocusChangeListener() {
|
| + @Override
|
| + public void onFocusChange(View v, boolean hasFocus) {
|
| + setKeyboardVisibilityForUrl(hasFocus);
|
| + mNextButton.setVisibility(hasFocus ? View.GONE : View.VISIBLE);
|
| + mPrevButton.setVisibility(hasFocus ? View.GONE : View.VISIBLE);
|
| + if (!hasFocus) {
|
| + mUrlTextView.setText(mAwTestContainerView.getContentViewCore().getUrl());
|
| + }
|
| + }
|
| + });
|
| + }
|
| +
|
| + private void initializeNavigationButtons() {
|
| + mPrevButton = (ImageButton) findViewById(R.id.prev);
|
| + mPrevButton.setOnClickListener(new OnClickListener() {
|
| + @Override
|
| + public void onClick(View v) {
|
| + if (mAwTestContainerView.getContentViewCore().canGoBack()) {
|
| + mAwTestContainerView.getContentViewCore().goBack();
|
| + }
|
| + }
|
| + });
|
| +
|
| + mNextButton = (ImageButton) findViewById(R.id.next);
|
| + mNextButton.setOnClickListener(new OnClickListener() {
|
| + @Override
|
| + public void onClick(View v) {
|
| + if (mAwTestContainerView.getContentViewCore().canGoForward()) {
|
| + mAwTestContainerView.getContentViewCore().goForward();
|
| + }
|
| + }
|
| + });
|
| + }
|
| +}
|
|
|