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": {