fix for NPVariant numbers. (new webkit v8 bindings give us doubles for ints)

Issue: http://code.google.com/p/google-web-toolkit/issues/detail?id=5778
Breaking WebKit change: http://trac.webkit.org/changeset/72974

Review at http://gwt-code-reviews.appspot.com/1277801


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9525 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/plugins/npapi/NPVariantWrapper.h b/plugins/npapi/NPVariantWrapper.h
index 4e039e1..6d7689d 100644
--- a/plugins/npapi/NPVariantWrapper.h
+++ b/plugins/npapi/NPVariantWrapper.h
@@ -81,8 +81,20 @@
     return isInt(variant);
   }
   
+  // Return true if the variant is holding a regular integer or an integral double.
   static int isInt(const NPVariant& variant) {
-    return NPVARIANT_IS_INT32(variant);
+    if (NPVARIANT_IS_INT32(variant)) {
+      return 1;
+    } else if (NPVARIANT_IS_DOUBLE(variant)) {
+      // As of http://trac.webkit.org/changeset/72974 we get doubles for all
+      // numerical variants out of V8.
+      double d = NPVARIANT_TO_DOUBLE(variant);
+      int i = static_cast<int>(d);
+      // Verify that d is an integral value in range.
+      return (d == static_cast<double>(i));
+    } else {
+      return 0;
+    }
   }
 
   int getAsInt() const {
@@ -90,10 +102,16 @@
   }
 
   static int getAsInt(const NPVariant& variant) {
-    if (NPVARIANT_IS_INT32(variant)) {
-      return NPVARIANT_TO_INT32(variant);
+    if (isInt(variant)) {
+      if (NPVARIANT_IS_INT32(variant)) {
+        return NPVARIANT_TO_INT32(variant);
+      } else if (NPVARIANT_IS_DOUBLE(variant)) {
+        return static_cast<int>(NPVARIANT_TO_DOUBLE(variant));
+      }
     }
-    Debug::log(Debug::Error) << "getAsInt: variant not int" << Debug::flush;
+
+    Debug::log(Debug::Error) << "getAsInt: variant " <<
+      NPVariantProxy::toString(variant) << "not int" << Debug::flush;
     return 0;
   }
 
diff --git a/plugins/npapi/main.cpp b/plugins/npapi/main.cpp
index 1e44452..e292b87 100644
--- a/plugins/npapi/main.cpp
+++ b/plugins/npapi/main.cpp
@@ -238,7 +238,7 @@
   }
 
   int16 NPP_HandleEvent(NPP instance, void* event) {
-    Debug::log(Debug::Spam) << "NPP_HandleEvent(instance=" << instance << ")" << Debug::flush;
+    //Debug::log(Debug::Spam) << "NPP_HandleEvent(instance=" << instance << ")" << Debug::flush;
     return 0 ;
   }
 
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin.crx b/plugins/npapi/prebuilt/gwt-dev-plugin.crx
index 0852c4b..e350958 100644
--- a/plugins/npapi/prebuilt/gwt-dev-plugin.crx
+++ b/plugins/npapi/prebuilt/gwt-dev-plugin.crx
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib b/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib
index 3523020..587f3e9 100755
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib
+++ b/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so b/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so
index 1294ca9..ac21be8 100755
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so
+++ b/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so b/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so
index ce762bb..53631f2 100755
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so
+++ b/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll b/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll
index dd1522a..2fde7c3 100755
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll
+++ b/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll
Binary files differ
diff --git a/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json b/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
index f425fc2..b6bd18e 100644
--- a/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
+++ b/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
@@ -1,6 +1,6 @@
 {
   "name": "GWT Developer Plugin",
-  "version": "1.0.9274",
+  "version": "1.0.9521",
   "description": "A plugin to enable debugging with GWT's Development Mode",
   "update_url": "https://dl-ssl.google.com/gwt/plugins/chrome/updates.xml",
   "icons": {