Firefox 13 DevMode Plugin

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

Review by: conroy@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@11042 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/xpcom/FFSessionHandler.cpp b/xpcom/FFSessionHandler.cpp
index 7bc3dc0..c8c9743 100755
--- a/xpcom/FFSessionHandler.cpp
+++ b/xpcom/FFSessionHandler.cpp
@@ -228,7 +228,7 @@
   jsval jsThis;
   if (thisObj.isNull()) {
     jsThis = OBJECT_TO_JSVAL(global);
-    Debug::log(Debug::Spam) << "  using global object for this" << Debug::flush;
+    Debug::log(Debug::Error) << " using global object for this" << Debug::flush;
   } else {
     makeJsvalFromValue(jsThis, ctx, thisObj);
     if (Debug::level(Debug::Spam)) {
@@ -250,7 +250,7 @@
     Debug::log(Debug::Error) << "Could not get function " << methodName
         << Debug::flush;
     return true;
-  }
+  } 
 
   scoped_array<jsval> jsargs(new jsval[numArgs]);
   for (int i = 0; i < numArgs; ++i) {
@@ -601,7 +601,7 @@
       if (JavaObject::isJavaObject(ctx, obj)) {
         // clear the SessionData pointer -- JavaObject knows it is
         // disconnected if this is null
-        JS_SetPrivate(ctx, obj, NULL);
+        MOZ_JS_SetPrivate(ctx, obj, NULL);
         javaObjectsToFree.erase(javaId);
       }
     }
diff --git a/xpcom/JSRunner.cpp b/xpcom/JSRunner.cpp
index 4b251f3..f5b3a8a 100755
--- a/xpcom/JSRunner.cpp
+++ b/xpcom/JSRunner.cpp
@@ -23,6 +23,9 @@
 #include "nsIScriptObjectPrincipal.h"
 #include "nsIURI.h"
 #include "nsIXPConnect.h"
+#if GECKO_VERSION >= 13000
+#include "nsJSPrincipals.h"
+#endif
 #include "nsStringAPI.h"
 
 // from js_runner_ff.cc in Gears (http://code.google.com/p/gears/)
@@ -35,7 +38,9 @@
   // associated with the global JSObject on the current context.
   nsCOMPtr<nsIScriptGlobalObject> sgo;
   nsISupports *priv = reinterpret_cast<nsISupports *>(JS_GetPrivate(
+#if GECKO_VERSION < 13000
                                                           ctx,
+#endif
                                                           object));
   nsCOMPtr<nsIXPConnectWrappedNative> wrapped_native = do_QueryInterface(priv);
 
@@ -91,7 +96,17 @@
     virtual_filename += host.BeginReading();
   }
 
+#if GECKO_VERSION >= 13000
+  jsprin = nsJSPrincipals::get(principal);
+#else
   principal->GetJSPrincipals(ctx, &jsprin);
+#endif
+
+  if (jsprin == nsnull) {
+    Debug::log(Debug::Error) << "Get JSPrincial failed at JSRunner::eval"
+        << Debug::flush;
+    return false;
+  }
 
   // Set up the JS stack so that our context is on top.  This is needed to
   // play nicely with plugins that access the context stack, such as Firebug.
@@ -112,7 +127,11 @@
 //  stack->Pop(&cx);
 
   // Decrements ref count on jsprin (Was added in GetJSPrincipals()).
+#if GECKO_VERSION >= 13000
+  (void) JS_DropPrincipals(JS_GetRuntime(ctx), jsprin);
+#else
   (void) JSPRINCIPALS_DROP(ctx, jsprin);
+#endif
   if (!js_ok) {
     Debug::log(Debug::Error) << "JS execution failed in JSRunner::eval"
         << Debug::flush;
diff --git a/xpcom/JavaObject.cpp b/xpcom/JavaObject.cpp
index e63019b..9498c97 100644
--- a/xpcom/JavaObject.cpp
+++ b/xpcom/JavaObject.cpp
@@ -39,7 +39,9 @@
   JS_ConvertStub, // JavaObject::convert, /* convert */
   JavaObject::finalize, /* finalize */ //TODO
 
+#if GECKO_VERSION < 13000
   NULL, /* object hooks */
+#endif
   NULL, /* check access */
 #if GECKO_VERSION < 2000
   JavaObject::call, /* call */ //TODO
@@ -69,10 +71,17 @@
         << " reserved slots, no objectId present" << Debug::flush;
     return -1;
   }
+
+
+#if GECKO_VERSION >= 13000
+  val = JS_GetReservedSlot(obj, 0);
+#else
   if (!JS_GetReservedSlot(ctx, obj, 0, &val)) {
     Debug::log(Debug::Error) << "Error getting reserved slot" << Debug::flush;
     return -1;
   }
+#endif
+
   // TODO: assert JSVAL_IS_INT(val)
   return JSVAL_TO_INT(val);
 }
@@ -96,15 +105,25 @@
     return NULL;
   }
   // set the session data
-  if (!JS_SetPrivate(ctx, obj, data)) {
+#if GECKO_VERSION >= 13000
+  MOZ_JS_SetPrivate(ctx, obj, data);
+#else
+  if (!MOZ_JS_SetPrivate(ctx, obj, data)) {
     Debug::log(Debug::Error) << "Could not set private data" << Debug::flush;
     return NULL;
   }
+#endif
+
+  #if GECKO_VERSION >= 13000
+  MOZ_JS_SetReservedSlot(ctx, obj, 0, INT_TO_JSVAL(objectRef));
+  #else
   // set the objectId
-  if (!JS_SetReservedSlot(ctx, obj, 0, INT_TO_JSVAL(objectRef))) {
+  if (!MOZ_JS_SetReservedSlot(ctx, obj, 0, INT_TO_JSVAL(objectRef))) {
     Debug::log(Debug::Error) << "Could not set reserved slot" << Debug::flush;
     return NULL;
   }
+  #endif
+
   // define toString (TODO: some way to avoid doing this each time)
 #if GECKO_VERSION < 2000
   if (!JS_DefineFunction(ctx, obj, "toString", JavaObject::toString, 0, 0)) {
@@ -289,7 +308,7 @@
   if (data) {
     int objectId = JavaObject::getObjectId(ctx, obj);
     data->freeJavaObject(objectId);
-    JS_SetPrivate(ctx, obj, NULL);
+    MOZ_JS_SetPrivate(ctx, obj, NULL);
   }
 }
 
diff --git a/xpcom/Makefile b/xpcom/Makefile
index 74c3b89..8acafeb 100644
--- a/xpcom/Makefile
+++ b/xpcom/Makefile
@@ -49,7 +49,7 @@
 export FLAG32BIT
 
 ifeq ($(BROWSER),)
-$(warning Defaulting to FF3 build [set with BROWSER=ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90, ff100, f110])
+$(warning Defaulting to FF3 build [set with BROWSER=ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90, ff100, f110, ff120, ff130])
 BROWSER=ff3
 endif
 
@@ -162,7 +162,12 @@
 GECKO_VERSION   = 12.0.0
 CFLAGS += -DGECKO_VERSION=12000
 else
-$(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90, ff100, ff110)
+ifeq ($(BROWSER),ff130)
+GECKO_VERSION   = 13.0.0
+CFLAGS += -DGECKO_VERSION=13000
+else
+$(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90, ff100, ff110, ff120, ff130)
+endif
 endif
 endif
 endif
@@ -262,6 +267,7 @@
 	$(MAKE) lib BROWSER=ff100 ARCH=x86
 	$(MAKE) lib BROWSER=ff110 ARCH=x86
 	$(MAKE) lib BROWSER=ff120 ARCH=x86
+	$(MAKE) lib BROWSER=ff130 ARCH=x86
 	$(MAKE) lib BROWSER=ff3 ARCH=x86_64
 	$(MAKE) lib BROWSER=ff3+ ARCH=x86_64
 	$(MAKE) lib BROWSER=ff35 ARCH=x86_64
@@ -275,6 +281,7 @@
 	$(MAKE) lib BROWSER=ff100 ARCH=x86_64
 	$(MAKE) lib BROWSER=ff110 ARCH=x86_64
 	$(MAKE) lib BROWSER=ff120 ARCH=x86_64
+	$(MAKE) lib BROWSER=ff130 ARCH=x86_64
 
 macplatforms:
 	$(MAKE) lib BROWSER=ff3
@@ -289,6 +296,7 @@
 	$(MAKE) lib BROWSER=ff100
 	$(MAKE) lib BROWSER=ff110
 	$(MAKE) lib BROWSER=ff120
+	$(MAKE) lib BROWSER=ff130
 
 SRCS =	\
 		ExternalWrapper.cpp \
@@ -331,6 +339,7 @@
 
 clean:
 	rm -rf build
+	(cd ../common && $(MAKE) clean)
 
 install-platform:
 ifdef BROWSER
diff --git a/xpcom/install-template.rdf b/xpcom/install-template.rdf
index ee6704d..ba123b0 100644
--- a/xpcom/install-template.rdf
+++ b/xpcom/install-template.rdf
@@ -12,7 +12,7 @@
       <Description>
         <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
         <em:minVersion>3.0</em:minVersion>
-        <em:maxVersion>12.0.*</em:maxVersion>
+        <em:maxVersion>13.0.*</em:maxVersion>
       </Description>
 
     <!-- TODO: This seems to break Firefox 3.6. With this on, FF gets into a
diff --git a/xpcom/mozincludes.h b/xpcom/mozincludes.h
index 14f50e4..80961cc 100755
--- a/xpcom/mozincludes.h
+++ b/xpcom/mozincludes.h
@@ -11,4 +11,20 @@
 #include "xpcom-config.h"
 #include "mozilla-config.h"
 
+// See https://developer.mozilla.org/en/SpiderMonkey/1.8.8
+#if GECKO_VERSION >= 13000
+
+// See https://bugzilla.mozilla.org/show_bug.cgi?id=417710
+//     https://bugzilla.mozilla.org/show_bug.cgi?id=723517 
+#define JS_GET_CLASS(cx, obj) JS_GetClass(obj)
+#define MOZ_JS_SetPrivate(cx, obj, data) JS_SetPrivate(obj, data)
+#define MOZ_JS_SetReservedSlot(cx, obj, index, v) JS_SetReservedSlot(obj, index, v)
+#define uintN unsigned int
+#define intN int
+#define jsdouble double
+#else
+#define MOZ_JS_SetPrivate(cx, obj, data) JS_SetPrivate(cx, obj, data)
+#define MOZ_JS_SetReservedSlot(cx, obj, index, v) JS_SetReservedSlot(cx, obj, index, v)
+#endif
+
 #endif
diff --git a/xpcom/prebuilt/extension/chrome.manifest b/xpcom/prebuilt/extension/chrome.manifest
index 5ead6e2..ed2da66 100644
--- a/xpcom/prebuilt/extension/chrome.manifest
+++ b/xpcom/prebuilt/extension/chrome.manifest
@@ -66,5 +66,12 @@
 binary-component lib/Darwin-gcc3/ff120/libgwt_dev_ff120.dylib ABI=Darwin_x86-gcc3 appversion<=12.0.*
 binary-component lib/WINNT_x86-msvc/ff120/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=12.0.*
 
+# Firefox 13
+binary-component lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so ABI=Linux_x86_64-gcc3 appversion<=13.0.*
+binary-component lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so ABI=Linux_x86-gcc3 appversion<=13.0.*
+binary-component lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib ABI=Darwin_x86_64-gcc3 appversion<=13.0.*
+binary-component lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib ABI=Darwin_x86-gcc3 appversion<=13.0.*
+binary-component lib/WINNT_x86-msvc/ff130/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=13.0.*
+
 interfaces components/IOOPHM.xpt
 contract @gwt.google.com/ExternalWrapper;1 {028DD88B-6D65-401D-AAFD-17E497D15D09}
diff --git a/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib b/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib
new file mode 100755
index 0000000..03501fa
--- /dev/null
+++ b/xpcom/prebuilt/extension/lib/Darwin-gcc3/ff130/libgwt_dev_ff130.dylib
Binary files differ
diff --git a/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so b/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so
new file mode 100755
index 0000000..7aca049
--- /dev/null
+++ b/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff130/libgwt_dev_ff130.so
Binary files differ
diff --git a/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so b/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so
new file mode 100755
index 0000000..cead4df
--- /dev/null
+++ b/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff130/libgwt_dev_ff130.so
Binary files differ
diff --git a/xpcom/prebuilt/ff110/include/IOOPHM.h b/xpcom/prebuilt/ff110/include/IOOPHM.h
new file mode 100644
index 0000000..e37792d
--- /dev/null
+++ b/xpcom/prebuilt/ff110/include/IOOPHM.h
@@ -0,0 +1,105 @@
+/*
+ * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
+ */
+
+#ifndef __gen_IOOPHM_h__
+#define __gen_IOOPHM_h__
+
+
+#ifndef __gen_nsISupports_h__
+#include "nsISupports.h"
+#endif
+
+/* For IDL files that don't want to include root IDL files. */
+#ifndef NS_NO_VTABLE
+#define NS_NO_VTABLE
+#endif
+class nsIDOMWindow; /* forward declaration */
+
+
+/* starting interface:    IOOPHM */
+#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
+
+#define IOOPHM_IID \
+  {0x90cef17b, 0xc3fe, 0x4251, \
+    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
+
+class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
+ public: 
+
+  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
+
+  /* boolean init (in nsIDOMWindow window); */
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
+
+  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
+
+};
+
+  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
+
+/* Use this macro when declaring classes that implement this interface. */
+#define NS_DECL_IOOPHM \
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
+
+/* Use this macro to declare functions that forward the behavior of this interface to another object. */
+#define NS_FORWARD_IOOPHM(_to) \
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
+
+/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
+#define NS_FORWARD_SAFE_IOOPHM(_to) \
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
+
+#if 0
+/* Use the code below as a template for the implementation class for this interface. */
+
+/* Header file */
+class _MYCLASS_ : public IOOPHM
+{
+public:
+  NS_DECL_ISUPPORTS
+  NS_DECL_IOOPHM
+
+  _MYCLASS_();
+
+private:
+  ~_MYCLASS_();
+
+protected:
+  /* additional members */
+};
+
+/* Implementation file */
+NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
+
+_MYCLASS_::_MYCLASS_()
+{
+  /* member initializers and constructor code */
+}
+
+_MYCLASS_::~_MYCLASS_()
+{
+  /* destructor code */
+}
+
+/* boolean init (in nsIDOMWindow window); */
+NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
+{
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
+NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
+{
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* End of implementation class template. */
+#endif
+
+
+#endif /* __gen_IOOPHM_h__ */
diff --git a/xpcom/prebuilt/ff130/include/IOOPHM.h b/xpcom/prebuilt/ff130/include/IOOPHM.h
new file mode 100644
index 0000000..e37792d
--- /dev/null
+++ b/xpcom/prebuilt/ff130/include/IOOPHM.h
@@ -0,0 +1,105 @@
+/*
+ * DO NOT EDIT.  THIS FILE IS GENERATED FROM IOOPHM.idl
+ */
+
+#ifndef __gen_IOOPHM_h__
+#define __gen_IOOPHM_h__
+
+
+#ifndef __gen_nsISupports_h__
+#include "nsISupports.h"
+#endif
+
+/* For IDL files that don't want to include root IDL files. */
+#ifndef NS_NO_VTABLE
+#define NS_NO_VTABLE
+#endif
+class nsIDOMWindow; /* forward declaration */
+
+
+/* starting interface:    IOOPHM */
+#define IOOPHM_IID_STR "90cef17b-c3fe-4251-af68-4381b3d938a0"
+
+#define IOOPHM_IID \
+  {0x90cef17b, 0xc3fe, 0x4251, \
+    { 0xaf, 0x68, 0x43, 0x81, 0xb3, 0xd9, 0x38, 0xa0 }}
+
+class NS_NO_VTABLE NS_SCRIPTABLE IOOPHM : public nsISupports {
+ public: 
+
+  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
+
+  /* boolean init (in nsIDOMWindow window); */
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) = 0;
+
+  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) = 0;
+
+};
+
+  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
+
+/* Use this macro when declaring classes that implement this interface. */
+#define NS_DECL_IOOPHM \
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM); \
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM); 
+
+/* Use this macro to declare functions that forward the behavior of this interface to another object. */
+#define NS_FORWARD_IOOPHM(_to) \
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return _to Init(window, _retval); } \
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return _to Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
+
+/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
+#define NS_FORWARD_SAFE_IOOPHM(_to) \
+  NS_SCRIPTABLE NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
+  NS_SCRIPTABLE NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM) { return !_to ? NS_ERROR_NULL_POINTER : _to->Connect(url, sessionKey, addr, moduleName, hostedHtmlVersion, _retval); } 
+
+#if 0
+/* Use the code below as a template for the implementation class for this interface. */
+
+/* Header file */
+class _MYCLASS_ : public IOOPHM
+{
+public:
+  NS_DECL_ISUPPORTS
+  NS_DECL_IOOPHM
+
+  _MYCLASS_();
+
+private:
+  ~_MYCLASS_();
+
+protected:
+  /* additional members */
+};
+
+/* Implementation file */
+NS_IMPL_ISUPPORTS1(_MYCLASS_, IOOPHM)
+
+_MYCLASS_::_MYCLASS_()
+{
+  /* member initializers and constructor code */
+}
+
+_MYCLASS_::~_MYCLASS_()
+{
+  /* destructor code */
+}
+
+/* boolean init (in nsIDOMWindow window); */
+NS_IMETHODIMP _MYCLASS_::Init(nsIDOMWindow *window, bool *_retval NS_OUTPARAM)
+{
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
+NS_IMETHODIMP _MYCLASS_::Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval NS_OUTPARAM)
+{
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* End of implementation class template. */
+#endif
+
+
+#endif /* __gen_IOOPHM_h__ */
diff --git a/xpcom/prebuilt/gwt-dev-plugin.xpi b/xpcom/prebuilt/gwt-dev-plugin.xpi
index 2681554..38ef8d5 100644
--- a/xpcom/prebuilt/gwt-dev-plugin.xpi
+++ b/xpcom/prebuilt/gwt-dev-plugin.xpi
Binary files differ
diff --git a/xpcom/prebuilt/update.rdf b/xpcom/prebuilt/update.rdf
index f6d737c..b849181 100644
--- a/xpcom/prebuilt/update.rdf
+++ b/xpcom/prebuilt/update.rdf
@@ -14,7 +14,7 @@
               <Description>
                 <em:id>{ec8030f7-c20a-464f-9b0e-13a3a9e97384}</em:id>
                 <em:minVersion>3.0</em:minVersion>
-                <em:maxVersion>12.0.*</em:maxVersion>
+                <em:maxVersion>13.0.*</em:maxVersion>
                 <em:updateLink>https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin.xpi</em:updateLink>
                 <em:updateInfoURL>https://dl-ssl.google.com/gwt/plugins/firefox/gwt-dev-plugin-info.xhtml?locale=%APP_LOCALE%</em:updateInfoURL>