Search in sources :

Example 1 with CordovaWebView

use of org.apache.cordova.CordovaWebView in project cordova-android by apache.

the class BackButtonMultipageTest method testViaBackButtonOnView.

@Test
public void testViaBackButtonOnView() throws Throwable {
    final CordovaWebView webInterface = mActivity.getWebInterface();
    assertEquals(START_URL, mActivity.onPageFinishedUrl.take());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            webInterface.loadUrl("file:///android_asset/www/backbuttonmultipage/sample2.html");
        }
    });
    assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", mActivity.onPageFinishedUrl.take());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            webInterface.loadUrl("file:///android_asset/www/backbuttonmultipage/sample3.html");
        }
    });
    assertEquals("file:///android_asset/www/backbuttonmultipage/sample3.html", mActivity.onPageFinishedUrl.take());
    onView(withId(WEBVIEW_ID)).perform(pressBack());
    assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", mActivity.onPageFinishedUrl.take());
    onView(withId(WEBVIEW_ID)).perform(pressBack());
    assertEquals(START_URL, mActivity.onPageFinishedUrl.take());
}
Also used : CordovaWebView(org.apache.cordova.CordovaWebView) Test(org.junit.Test)

Example 2 with CordovaWebView

use of org.apache.cordova.CordovaWebView in project cordova-android by apache.

the class IFrameTest method iFrameHistory.

@Test
public void iFrameHistory() throws Throwable {
    final CordovaWebView cordovaWebView = (CordovaWebView) testActivity.getWebInterface();
    onWebView().withElement(findElement(Locator.ID, "google_maps")).perform(webClick());
    sleep(WEBVIEW_LOAD_DELAY);
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            String url = cordovaWebView.getUrl();
            assertTrue(url.endsWith("index.html"));
        }
    });
    sleep(WEBVIEW_LOAD_DELAY);
    onWebView().withElement(findElement(Locator.ID, "javascript_load")).perform(webClick());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            String url = cordovaWebView.getUrl();
            assertTrue(url.endsWith("index.html"));
        }
    });
    sleep(WEBVIEW_LOAD_DELAY);
    //Espresso will kill the application and not trigger the backHistory method, which correctly
    //navigates the iFrame history.  backHistory is tied to the back button.
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            assertTrue(cordovaWebView.backHistory());
            String url = cordovaWebView.getUrl();
            assertTrue(url.endsWith("index.html"));
            assertFalse(cordovaWebView.backHistory());
        }
    });
}
Also used : CordovaWebView(org.apache.cordova.CordovaWebView) Test(org.junit.Test)

Example 3 with CordovaWebView

use of org.apache.cordova.CordovaWebView in project jpHolo by teusink.

the class InAppBrowser method showWebPage.

/**
     * Display a new browser with the specified URL.
     *
     * @param url           The url to load.
     * @param jsonObject
     */
public String showWebPage(final String url, HashMap<String, Boolean> features) {
    // Determine if we should hide the location bar.
    showLocationBar = true;
    openWindowHidden = false;
    if (features != null) {
        Boolean show = features.get(LOCATION);
        if (show != null) {
            showLocationBar = show.booleanValue();
        }
        Boolean hidden = features.get(HIDDEN);
        if (hidden != null) {
            openWindowHidden = hidden.booleanValue();
        }
        Boolean cache = features.get(CLEAR_ALL_CACHE);
        if (cache != null) {
            clearAllCache = cache.booleanValue();
        } else {
            cache = features.get(CLEAR_SESSION_CACHE);
            if (cache != null) {
                clearSessionCache = cache.booleanValue();
            }
        }
    }
    final CordovaWebView thatWebView = this.webView;
    // Create dialog in new thread
    Runnable runnable = new Runnable() {

        /**
             * Convert our DIP units to Pixels
             *
             * @return int
             */
        private int dpToPixels(int dipValue) {
            int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) dipValue, cordova.getActivity().getResources().getDisplayMetrics());
            return value;
        }

        public void run() {
            // Let's create the main dialog
            dialog = new InAppBrowserDialog(cordova.getActivity(), android.R.style.Theme_NoTitleBar);
            dialog.getWindow().getAttributes().windowAnimations = android.R.style.Animation_Dialog;
            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
            dialog.setCancelable(true);
            dialog.setInAppBroswer(getInAppBrowser());
            // Main container layout
            LinearLayout main = new LinearLayout(cordova.getActivity());
            main.setOrientation(LinearLayout.VERTICAL);
            // Toolbar layout
            RelativeLayout toolbar = new RelativeLayout(cordova.getActivity());
            //Please, no more black! 
            toolbar.setBackgroundColor(android.graphics.Color.LTGRAY);
            toolbar.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, this.dpToPixels(44)));
            toolbar.setPadding(this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2), this.dpToPixels(2));
            toolbar.setHorizontalGravity(Gravity.LEFT);
            toolbar.setVerticalGravity(Gravity.TOP);
            // Action Button Container layout
            RelativeLayout actionButtonContainer = new RelativeLayout(cordova.getActivity());
            actionButtonContainer.setLayoutParams(new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
            actionButtonContainer.setHorizontalGravity(Gravity.LEFT);
            actionButtonContainer.setVerticalGravity(Gravity.CENTER_VERTICAL);
            actionButtonContainer.setId(1);
            // Back button
            Button back = new Button(cordova.getActivity());
            RelativeLayout.LayoutParams backLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
            backLayoutParams.addRule(RelativeLayout.ALIGN_LEFT);
            back.setLayoutParams(backLayoutParams);
            back.setContentDescription("Back Button");
            back.setId(2);
            /*
                back.setText("<");
                */
            Resources activityRes = cordova.getActivity().getResources();
            int backResId = activityRes.getIdentifier("ic_action_previous_item", "drawable", cordova.getActivity().getPackageName());
            Drawable backIcon = activityRes.getDrawable(backResId);
            if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                back.setBackgroundDrawable(backIcon);
            } else {
                back.setBackground(backIcon);
            }
            back.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    goBack();
                }
            });
            // Forward button
            Button forward = new Button(cordova.getActivity());
            RelativeLayout.LayoutParams forwardLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
            forwardLayoutParams.addRule(RelativeLayout.RIGHT_OF, 2);
            forward.setLayoutParams(forwardLayoutParams);
            forward.setContentDescription("Forward Button");
            forward.setId(3);
            //forward.setText(">");
            int fwdResId = activityRes.getIdentifier("ic_action_next_item", "drawable", cordova.getActivity().getPackageName());
            Drawable fwdIcon = activityRes.getDrawable(fwdResId);
            if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                forward.setBackgroundDrawable(fwdIcon);
            } else {
                forward.setBackground(fwdIcon);
            }
            forward.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    goForward();
                }
            });
            // Edit Text Box
            edittext = new EditText(cordova.getActivity());
            RelativeLayout.LayoutParams textLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
            textLayoutParams.addRule(RelativeLayout.RIGHT_OF, 1);
            textLayoutParams.addRule(RelativeLayout.LEFT_OF, 5);
            edittext.setLayoutParams(textLayoutParams);
            edittext.setId(4);
            edittext.setSingleLine(true);
            edittext.setText(url);
            edittext.setInputType(InputType.TYPE_TEXT_VARIATION_URI);
            edittext.setImeOptions(EditorInfo.IME_ACTION_GO);
            // Will not except input... Makes the text NON-EDITABLE
            edittext.setInputType(InputType.TYPE_NULL);
            edittext.setOnKeyListener(new View.OnKeyListener() {

                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    // If the event is a key-down event on the "enter" button
                    if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) {
                        navigate(edittext.getText().toString());
                        return true;
                    }
                    return false;
                }
            });
            // Close button
            Button close = new Button(cordova.getActivity());
            RelativeLayout.LayoutParams closeLayoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
            closeLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            close.setLayoutParams(closeLayoutParams);
            forward.setContentDescription("Close Button");
            close.setId(5);
            //close.setText(buttonLabel);
            int closeResId = activityRes.getIdentifier("ic_action_remove", "drawable", cordova.getActivity().getPackageName());
            Drawable closeIcon = activityRes.getDrawable(closeResId);
            if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
                close.setBackgroundDrawable(closeIcon);
            } else {
                close.setBackground(closeIcon);
            }
            close.setOnClickListener(new View.OnClickListener() {

                public void onClick(View v) {
                    closeDialog();
                }
            });
            // WebView
            inAppWebView = new WebView(cordova.getActivity());
            inAppWebView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
            inAppWebView.setWebChromeClient(new InAppChromeClient(thatWebView));
            WebViewClient client = new InAppBrowserClient(thatWebView, edittext);
            inAppWebView.setWebViewClient(client);
            WebSettings settings = inAppWebView.getSettings();
            settings.setJavaScriptEnabled(true);
            settings.setJavaScriptCanOpenWindowsAutomatically(true);
            settings.setBuiltInZoomControls(true);
            settings.setPluginState(android.webkit.WebSettings.PluginState.ON);
            //Toggle whether this is enabled or not!
            Bundle appSettings = cordova.getActivity().getIntent().getExtras();
            boolean enableDatabase = appSettings == null ? true : appSettings.getBoolean("InAppBrowserStorageEnabled", true);
            if (enableDatabase) {
                String databasePath = cordova.getActivity().getApplicationContext().getDir("inAppBrowserDB", Context.MODE_PRIVATE).getPath();
                settings.setDatabasePath(databasePath);
                settings.setDatabaseEnabled(true);
            }
            settings.setDomStorageEnabled(true);
            if (clearAllCache) {
                CookieManager.getInstance().removeAllCookie();
            } else if (clearSessionCache) {
                CookieManager.getInstance().removeSessionCookie();
            }
            inAppWebView.loadUrl(url);
            inAppWebView.setId(6);
            inAppWebView.getSettings().setLoadWithOverviewMode(true);
            inAppWebView.getSettings().setUseWideViewPort(true);
            inAppWebView.requestFocus();
            inAppWebView.requestFocusFromTouch();
            // Add the back and forward buttons to our action button container layout
            actionButtonContainer.addView(back);
            actionButtonContainer.addView(forward);
            // Add the views to our toolbar
            toolbar.addView(actionButtonContainer);
            toolbar.addView(edittext);
            toolbar.addView(close);
            // Don't add the toolbar if its been disabled
            if (getShowLocationBar()) {
                // Add our toolbar to our main view/layout
                main.addView(toolbar);
            }
            // Add our webview to our main view/layout
            main.addView(inAppWebView);
            WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
            lp.copyFrom(dialog.getWindow().getAttributes());
            lp.width = WindowManager.LayoutParams.MATCH_PARENT;
            lp.height = WindowManager.LayoutParams.MATCH_PARENT;
            dialog.setContentView(main);
            dialog.show();
            dialog.getWindow().setAttributes(lp);
            // Show() needs to be called to cause the URL to be loaded
            if (openWindowHidden) {
                dialog.hide();
            }
        }
    };
    this.cordova.getActivity().runOnUiThread(runnable);
    return "";
}
Also used : WindowManager(android.view.WindowManager) KeyEvent(android.view.KeyEvent) Button(android.widget.Button) CordovaWebView(org.apache.cordova.CordovaWebView) WebView(android.webkit.WebView) WebViewClient(android.webkit.WebViewClient) EditText(android.widget.EditText) LayoutParams(android.view.WindowManager.LayoutParams) InAppBrowserDialog(org.apache.cordova.inappbrowser.InAppBrowserDialog) Bundle(android.os.Bundle) Drawable(android.graphics.drawable.Drawable) CordovaWebView(org.apache.cordova.CordovaWebView) View(android.view.View) WebView(android.webkit.WebView) SuppressLint(android.annotation.SuppressLint) WebSettings(android.webkit.WebSettings) RelativeLayout(android.widget.RelativeLayout) LayoutParams(android.view.WindowManager.LayoutParams) CordovaWebView(org.apache.cordova.CordovaWebView) Resources(android.content.res.Resources) LinearLayout(android.widget.LinearLayout)

Example 4 with CordovaWebView

use of org.apache.cordova.CordovaWebView in project cordova-android-chromeview by thedracle.

the class whitelist method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.init(new CordovaWebView(this), new TestViewClient(this), new CordovaChromeClient(this));
    super.loadUrl("file:///android_asset/www/whitelist/index.html");
}
Also used : CordovaChromeClient(org.apache.cordova.CordovaChromeClient) CordovaWebView(org.apache.cordova.CordovaWebView)

Example 5 with CordovaWebView

use of org.apache.cordova.CordovaWebView in project cordova-android by apache.

the class BackButtonMultipageTest method testViaHref.

@Test
public void testViaHref() throws Throwable {
    final CordovaWebView webInterface = mActivity.getWebInterface();
    assertEquals(START_URL, mActivity.onPageFinishedUrl.take());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            webInterface.sendJavascript("window.location = 'sample2.html';");
        }
    });
    assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", mActivity.onPageFinishedUrl.take());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            webInterface.sendJavascript("window.location = 'sample3.html';");
        }
    });
    assertEquals("file:///android_asset/www/backbuttonmultipage/sample3.html", mActivity.onPageFinishedUrl.take());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            assertTrue(webInterface.backHistory());
        }
    });
    assertEquals("file:///android_asset/www/backbuttonmultipage/sample2.html", mActivity.onPageFinishedUrl.take());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            assertTrue(webInterface.backHistory());
        }
    });
    assertEquals(START_URL, mActivity.onPageFinishedUrl.take());
    mActivityRule.runOnUiThread(new Runnable() {

        public void run() {
            assertFalse(webInterface.backHistory());
        }
    });
}
Also used : CordovaWebView(org.apache.cordova.CordovaWebView) Test(org.junit.Test)

Aggregations

CordovaWebView (org.apache.cordova.CordovaWebView)9 Test (org.junit.Test)6 SuppressLint (android.annotation.SuppressLint)1 Resources (android.content.res.Resources)1 Drawable (android.graphics.drawable.Drawable)1 Bundle (android.os.Bundle)1 KeyEvent (android.view.KeyEvent)1 View (android.view.View)1 WindowManager (android.view.WindowManager)1 LayoutParams (android.view.WindowManager.LayoutParams)1 WebSettings (android.webkit.WebSettings)1 WebView (android.webkit.WebView)1 WebViewClient (android.webkit.WebViewClient)1 Button (android.widget.Button)1 EditText (android.widget.EditText)1 LinearLayout (android.widget.LinearLayout)1 RelativeLayout (android.widget.RelativeLayout)1 Field (java.lang.reflect.Field)1 Method (java.lang.reflect.Method)1 CallbackContext (org.apache.cordova.CallbackContext)1