Repository: cordova-plugin-inappbrowser
Updated Branches:
  refs/heads/master 79f73fbe6 -> 69ca78077


amazon-fireos related changes.


Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/repo
Commit: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/commit/69ca7807
Tree: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/tree/69ca7807
Diff: 
http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/diff/69ca7807

Branch: refs/heads/master
Commit: 69ca780772b406ab02ec1bd1a8e4dca70052e926
Parents: 79f73fb
Author: Archana Naik <[email protected]>
Authored: Thu Aug 14 11:57:00 2014 -0700
Committer: Archana Naik <[email protected]>
Committed: Thu Aug 14 11:57:44 2014 -0700

----------------------------------------------------------------------
 plugin.xml                   |  17 ++++++
 src/amazon/InAppBrowser.java | 109 +++++++++++++++++++++++++++++++-------
 2 files changed, 107 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/69ca7807/plugin.xml
----------------------------------------------------------------------
diff --git a/plugin.xml b/plugin.xml
index 74461aa..402d255 100644
--- a/plugin.xml
+++ b/plugin.xml
@@ -78,7 +78,24 @@
         </config-file>
 
         <source-file src="src/amazon/InAppBrowser.java" 
target-dir="src/org/apache/cordova/inappbrowser" />
+        <source-file src="src/android/InAppBrowserDialog.java" 
target-dir="src/org/apache/cordova/inappbrowser" />
         <source-file src="src/amazon/InAppChromeClient.java" 
target-dir="src/org/apache/cordova/inappbrowser" />
+        
+        <!--  drawable src/android/resources -->
+        <resource-file 
src="src/android/res/drawable-hdpi/ic_action_next_item.png" 
target="res/drawable-hdpi/ic_action_next_item.png" />
+        <resource-file 
src="src/android/res/drawable-mdpi/ic_action_next_item.png" 
target="res/drawable-mdpi/ic_action_next_item.png" />
+        <resource-file 
src="src/android/res/drawable-xhdpi/ic_action_next_item.png" 
target="res/drawable-xhdpi/ic_action_next_item.png" />
+        <resource-file 
src="src/android/res/drawable-xxhdpi/ic_action_next_item.png" 
target="res/drawable-xxhdpi/ic_action_next_item.png" />
+        
+        <resource-file 
src="src/android/res/drawable-hdpi/ic_action_previous_item.png" 
target="res/drawable-hdpi/ic_action_previous_item.png" />
+        <resource-file 
src="src/android/res/drawable-mdpi/ic_action_previous_item.png" 
target="res/drawable-mdpi/ic_action_previous_item.png" />
+        <resource-file 
src="src/android/res/drawable-xhdpi/ic_action_previous_item.png" 
target="res/drawable-xhdpi/ic_action_previous_item.png" />
+        <resource-file 
src="src/android/res/drawable-xxhdpi/ic_action_previous_item.png" 
target="res/drawable-xxhdpi/ic_action_previous_item.png" />
+        
+        <resource-file 
src="src/android/res/drawable-hdpi/ic_action_remove.png" 
target="res/drawable-hdpi/ic_action_remove.png" />
+        <resource-file 
src="src/android/res/drawable-mdpi/ic_action_remove.png" 
target="res/drawable-mdpi/ic_action_remove.png" />
+        <resource-file 
src="src/android/res/drawable-xhdpi/ic_action_remove.png" 
target="res/drawable-xhdpi/ic_action_remove.png" />
+        <resource-file 
src="src/android/res/drawable-xxhdpi/ic_action_remove.png" 
target="res/drawable-xxhdpi/ic_action_remove.png" />
     </platform>
 
     <!-- ubuntu -->

http://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser/blob/69ca7807/src/amazon/InAppBrowser.java
----------------------------------------------------------------------
diff --git a/src/amazon/InAppBrowser.java b/src/amazon/InAppBrowser.java
index 261cb86..25f593c 100644
--- a/src/amazon/InAppBrowser.java
+++ b/src/amazon/InAppBrowser.java
@@ -19,12 +19,15 @@
 package org.apache.cordova.inappbrowser;
 
 import android.annotation.SuppressLint;
-import android.app.Dialog;
+import org.apache.cordova.inappbrowser.InAppBrowserDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.graphics.Bitmap;
+import android.graphics.drawable.Drawable;
 import android.net.Uri;
+import android.os.Build;
 import android.os.Bundle;
 import android.text.InputType;
 import android.util.Log;
@@ -82,7 +85,7 @@ public class InAppBrowser extends CordovaPlugin {
     private static final String CLEAR_ALL_CACHE = "clearcache";
     private static final String CLEAR_SESSION_CACHE = "clearsessioncache";
 
-    private Dialog dialog;
+    private InAppBrowserDialog dialog;
     private AmazonWebView inAppWebView;
     private EditText edittext;
     private CallbackContext callbackContext;
@@ -256,11 +259,16 @@ public class InAppBrowser extends CordovaPlugin {
             scriptToInject = source;
         }
         final String finalScriptToInject = scriptToInject;
-        // This action will have the side-effect of blurring the currently 
focused element
         this.cordova.getActivity().runOnUiThread(new Runnable() {
+            @SuppressLint("NewApi")
             @Override
             public void run() {
-                inAppWebView.loadUrl("javascript:" + finalScriptToInject);
+                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
+                    // This action will have the side-effect of blurring the 
currently focused element
+                    inAppWebView.loadUrl("javascript:" + finalScriptToInject);
+                } /*else {
+                    inAppWebView.evaluateJavascript(finalScriptToInject, null);
+                }*/
             }
         });
     }
@@ -305,7 +313,14 @@ public class InAppBrowser extends CordovaPlugin {
         try {
             Intent intent = null;
             intent = new Intent(Intent.ACTION_VIEW);
-            intent.setData(Uri.parse(url));
+            // Omitting the MIME type for file: URLs causes "No Activity found 
to handle Intent".
+            // Adding the MIME type to http: URLs causes them to not be 
handled by the downloader.
+            Uri uri = Uri.parse(url);
+            if ("file".equals(uri.getScheme())) {
+                intent.setDataAndType(uri, 
webView.getResourceApi().getMimeType(uri));
+            } else {
+                intent.setData(uri);
+            }
             this.cordova.getActivity().startActivity(intent);
             return "";
         } catch (android.content.ActivityNotFoundException e) {
@@ -318,16 +333,38 @@ public class InAppBrowser extends CordovaPlugin {
      * Closes the dialog
      */
     public void closeDialog() {
+        final AmazonWebView childView = this.inAppWebView;
+        // The JS protects against multiple calls, so this should happen only 
when
+        // closeDialog() is called by other native code.
+        if (childView == null) {
+            return;
+        }
         this.cordova.getActivity().runOnUiThread(new Runnable() {
+            @Override
             public void run() {
-                if (dialog != null) {
-                    dialog.dismiss();
-                }
+                childView.setWebViewClient(new AmazonWebViewClient() {
+                    // NB: wait for about:blank before dismissing
+                    public void onPageFinished(AmazonWebView view, String url) 
{
+                        if (dialog != null) {
+                            dialog.dismiss();
+                        }
+                    }
+                });
+                // NB: From SDK 19: "If you call methods on WebView from any 
thread
+                // other than your app's UI thread, it can cause unexpected 
results."
+                // 
http://developer.android.com/guide/webapps/migrating.html#Threads
+                childView.loadUrl("about:blank");
             }
         });
-
+        
+        try {
+            JSONObject obj = new JSONObject();
+            obj.put("type", EXIT_EVENT);
+            sendUpdate(obj, false);
+        } catch (JSONException ex) {
+            Log.d(LOG_TAG, "Should never happen");
+        }
     }
-
     /**
      * Checks to see if it is possible to go back one page in history, then 
does so.
      */
@@ -385,6 +422,10 @@ public class InAppBrowser extends CordovaPlugin {
         return this.showLocationBar;
     }
 
+    private InAppBrowser getInAppBrowser(){
+        return this;
+    }
+
     /**
      * Display a new browser with the specified URL.
      *
@@ -435,15 +476,11 @@ public class InAppBrowser extends CordovaPlugin {
 
             public void run() {
                 // Let's create the main dialog
-                dialog = new Dialog(cordova.getActivity(), 
android.R.style.Theme_NoTitleBar);
+                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.setOnDismissListener(new 
DialogInterface.OnDismissListener() {
-                        public void onDismiss(DialogInterface dialog) {
-                            closeDialog();
-                        }
-                });
+                dialog.setInAppBroswer(getInAppBrowser());
 
                 // Main container layout
                 LinearLayout main = new LinearLayout(cordova.getActivity());
@@ -472,7 +509,21 @@ public class InAppBrowser extends CordovaPlugin {
                 back.setLayoutParams(backLayoutParams);
                 back.setContentDescription("Back Button");
                 back.setId(2);
-                back.setText("<");
+                /*
+                 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();
@@ -486,7 +537,17 @@ public class InAppBrowser extends CordovaPlugin {
                 forward.setLayoutParams(forwardLayoutParams);
                 forward.setContentDescription("Forward Button");
                 forward.setId(3);
-                forward.setText(">");
+                //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();
@@ -523,7 +584,17 @@ public class InAppBrowser extends CordovaPlugin {
                 close.setLayoutParams(closeLayoutParams);
                 forward.setContentDescription("Close Button");
                 close.setId(5);
-                close.setText(buttonLabel);
+                //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();

Reply via email to