Revision: 9525
Author: [email protected]
Date: Wed Jan 12 09:43:25 2011
Log: 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

http://code.google.com/p/google-web-toolkit/source/detail?r=9525

Modified:
 /trunk/plugins/npapi/NPVariantWrapper.h
 /trunk/plugins/npapi/main.cpp
/trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll
 /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json
 /trunk/plugins/npapi/prebuilt/gwt-dev-plugin.crx

=======================================
--- /trunk/plugins/npapi/NPVariantWrapper.h     Tue Nov 23 05:51:12 2010
+++ /trunk/plugins/npapi/NPVariantWrapper.h     Wed Jan 12 09:43:25 2011
@@ -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);
-    }
- Debug::log(Debug::Error) << "getAsInt: variant not int" << Debug::flush;
+    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 " <<
+      NPVariantProxy::toString(variant) << "not int" << Debug::flush;
     return 0;
   }

=======================================
--- /trunk/plugins/npapi/main.cpp       Tue Nov 23 05:51:12 2010
+++ /trunk/plugins/npapi/main.cpp       Wed Jan 12 09:43:25 2011
@@ -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 ;
   }

=======================================
--- /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib Tue Nov 23 05:51:12 2010 +++ /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Darwin-gcc3/gwtDev.plugin/Contents/MacOS/libGwtDevPlugin.dylib Wed Jan 12 09:43:25 2011
Binary file, no diff available.
=======================================
--- /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so Tue Nov 23 05:51:12 2010 +++ /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86-gcc3/libGwtDevPlugin.so Wed Jan 12 09:43:25 2011
File is too large to display a diff.
=======================================
--- /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so Tue Nov 23 05:51:12 2010 +++ /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/Linux_x86_64-gcc3/libGwtDevPlugin.so Wed Jan 12 09:43:25 2011
File is too large to display a diff.
=======================================
--- /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll Tue Nov 23 05:51:12 2010 +++ /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/WINNT_x86-msvc/npGwtDevPlugin.dll Wed Jan 12 09:43:25 2011
Binary file, no diff available.
=======================================
--- /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json Tue Nov 23 05:51:12 2010 +++ /trunk/plugins/npapi/prebuilt/gwt-dev-plugin/manifest.json Wed Jan 12 09:43:25 2011
@@ -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": {
=======================================
--- /trunk/plugins/npapi/prebuilt/gwt-dev-plugin.crx Tue Nov 23 05:51:12 2010 +++ /trunk/plugins/npapi/prebuilt/gwt-dev-plugin.crx Wed Jan 12 09:43:25 2011
Binary file, no diff available.

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to