update for Firefox 24/Linux

Change-Id: I2c2962fc5c409d4d33fb202a622e19535fed2a0a
diff --git a/xpcom/JavaObject.cpp b/xpcom/JavaObject.cpp
index 3847a3d..b014d35 100644
--- a/xpcom/JavaObject.cpp
+++ b/xpcom/JavaObject.cpp
@@ -148,6 +148,15 @@
   return obj;
 }
 
+#if GECKO_VERSION >= 24000
+JSBool JavaObject::getPropertyWrapper(JSContext* ctx, JS::Handle<JSObject*> obj,
+    JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) {
+  jsval rval;
+  JSBool result = JavaObject::getProperty(ctx, obj.get(), id.get(), &rval);
+  vp.set(rval);
+  return result;
+}
+#else
 #if GECKO_VERSION >= 17000
 JSBool JavaObject::getPropertyWrapper(JSContext* ctx, JSHandleObject obj,
     JSHandleId id, JSMutableHandleValue vp) {
@@ -168,6 +177,7 @@
 }
 #endif // >= 15000
 #endif // not >= 17000
+#endif // not >= 24000
 
 JSBool JavaObject::getProperty(JSContext* ctx, JSObject* obj, jsid id,
     jsval* rval) {
@@ -220,6 +230,13 @@
   return JS_TRUE;
 }
 
+#if GECKO_VERSION >= 24000
+JSBool JavaObject::setPropertyWrapper(JSContext* ctx, JS::Handle<JSObject*> obj,
+    JS::Handle<jsid> id, JSBool strict, JS::MutableHandle<JS::Value> vp) {
+  jsval rval = vp.get();
+  return JavaObject::setProperty(ctx, obj, id, strict, &rval);
+}
+#else
 #if GECKO_VERSION >= 17000
 JSBool JavaObject::setPropertyWrapper(JSContext* ctx, JSHandleObject obj,
     JSHandleId id, JSBool strict, JSMutableHandleValue vp) {
@@ -238,6 +255,7 @@
 }
 #endif // >= 15000
 #endif // ! >= 17000
+#endif // ! >= 24000
 
 #if GECKO_VERSION < 2000
 JSBool JavaObject::setProperty(JSContext* ctx, JSObject* obj, jsid id,
diff --git a/xpcom/JavaObject.h b/xpcom/JavaObject.h
index 9fc289c..4e7a910 100755
--- a/xpcom/JavaObject.h
+++ b/xpcom/JavaObject.h
@@ -63,6 +63,12 @@
   static JSBool toString20(JSContext* ctx, uintN argc, jsval* vp);
   static JSBool call20(JSContext* ctx, uintN argc, jsval* vp);
 #endif //GECKO_VERSION
+#if GECKO_VERSION >= 24000
+  static JSBool getPropertyWrapper(JSContext* ctx, JS::Handle<JSObject*> obj,
+      JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp);
+  static JSBool setPropertyWrapper(JSContext* ctx, JS::Handle<JSObject*> obj,
+      JS::Handle<jsid> id, JSBool strict, JS::MutableHandle<JS::Value> vp);
+#else
 #if GECKO_VERSION >= 17000
   static JSBool getPropertyWrapper(JSContext* ctx, JSHandleObject obj,
       JSHandleId id, JSMutableHandleValue vp);
@@ -75,6 +81,7 @@
       JSBool strict, jsval *vp);
 #endif
 #endif
+#endif
 
 private:
   static SessionData* getSessionData(JSContext* ctx, JSObject* obj);
diff --git a/xpcom/Makefile b/xpcom/Makefile
index 5e69db4..b234914 100644
--- a/xpcom/Makefile
+++ b/xpcom/Makefile
@@ -214,6 +214,14 @@
 NSPR_DLLFLAGS = -lnss3
 endif
 else
+ifeq ($(BROWSER),ff240)
+GECKO_VERSION   = 24.0.0
+CFLAGS += -DGECKO_VERSION=24000
+GECKO_DLLFLAGS = -lxpcomglue_s
+ifeq ($(OS),mac)
+NSPR_DLLFLAGS = -lnss3
+endif
+else
 $(error Unrecognized BROWSER of $(BROWSER) - options are ff3, ff3+, ff35, ff36, ff40, ff50, ff60, ff70, ff80, ff90, ff100, ff110, ff120, ff130, ff140, ff150, ff160, ff170, ff180, ff190, ff200, ff210)
 endif
 endif
@@ -239,6 +247,7 @@
 endif
 endif
 endif
+endif
 
 CFLAGS += -fshort-wchar
 CXXFLAGS = $(CXXONLYFLAGS) $(CFLAGS)
diff --git a/xpcom/install-template.rdf b/xpcom/install-template.rdf
index 02b48f9..58f88a7 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>23.0.*</em:maxVersion>
+        <em:maxVersion>24.0.*</em:maxVersion>
       </Description>
 
     <!-- TODO: This seems to break Firefox 3.6. With this on, FF gets into a
diff --git a/xpcom/prebuilt/extension/chrome.manifest b/xpcom/prebuilt/extension/chrome.manifest
index 982bc58..e6f9ed8 100644
--- a/xpcom/prebuilt/extension/chrome.manifest
+++ b/xpcom/prebuilt/extension/chrome.manifest
@@ -143,5 +143,12 @@
 binary-component lib/Darwin-gcc3/ff230/libgwt_dev_ff230.dylib ABI=Darwin_x86_64-gcc3 appversion<=23.0.*
 binary-component lib/Darwin-gcc3/ff230/libgwt_dev_ff230.dylib ABI=Darwin_x86-gcc3 appversion<=23.0.*
 
+# Firefox 24
+binary-component lib/Linux_x86_64-gcc3/ff240/libgwt_dev_ff240.so ABI=Linux_x86_64-gcc3 appversion<=24.0.*
+binary-component lib/Linux_x86-gcc3/ff240/libgwt_dev_ff240.so ABI=Linux_x86-gcc3 appversion<=24.0.*
+#binary-component lib/WINNT_x86-msvc/ff240/xpGwtDevPlugin.dll ABI=WINNT_x86-msvc appversion<=24.0.*
+#binary-component lib/Darwin-gcc3/ff240/libgwt_dev_ff240.dylib ABI=Darwin_x86_64-gcc3 appversion<=24.0.*
+#binary-component lib/Darwin-gcc3/ff240/libgwt_dev_ff240.dylib ABI=Darwin_x86-gcc3 appversion<=24.0.*
+
 interfaces components/IOOPHM.xpt
 contract @gwt.google.com/ExternalWrapper;1 {028DD88B-6D65-401D-AAFD-17E497D15D09}
diff --git a/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff240/libgwt_dev_ff240.so b/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff240/libgwt_dev_ff240.so
new file mode 100755
index 0000000..203919b
--- /dev/null
+++ b/xpcom/prebuilt/extension/lib/Linux_x86-gcc3/ff240/libgwt_dev_ff240.so
Binary files differ
diff --git a/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff240/libgwt_dev_ff240.so b/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff240/libgwt_dev_ff240.so
new file mode 100755
index 0000000..b0b64d1
--- /dev/null
+++ b/xpcom/prebuilt/extension/lib/Linux_x86_64-gcc3/ff240/libgwt_dev_ff240.so
Binary files differ
diff --git a/xpcom/prebuilt/ff240/include/IOOPHM.h b/xpcom/prebuilt/ff240/include/IOOPHM.h
new file mode 100644
index 0000000..4a152ce
--- /dev/null
+++ b/xpcom/prebuilt/ff240/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 IOOPHM : public nsISupports {
+ public: 
+
+  NS_DECLARE_STATIC_IID_ACCESSOR(IOOPHM_IID)
+
+  /* boolean init (in nsIDOMWindow window); */
+  NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval) = 0;
+
+  /* boolean connect (in ACString url, in ACString sessionKey, in ACString addr, in ACString moduleName, in ACString hostedHtmlVersion); */
+  NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval) = 0;
+
+};
+
+  NS_DEFINE_STATIC_IID_ACCESSOR(IOOPHM, IOOPHM_IID)
+
+/* Use this macro when declaring classes that implement this interface. */
+#define NS_DECL_IOOPHM \
+  NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval); \
+  NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval); 
+
+/* Use this macro to declare functions that forward the behavior of this interface to another object. */
+#define NS_FORWARD_IOOPHM(_to) \
+  NS_IMETHOD Init(nsIDOMWindow *window, bool *_retval) { return _to Init(window, _retval); } \
+  NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval) { 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_IMETHOD Init(nsIDOMWindow *window, bool *_retval) { return !_to ? NS_ERROR_NULL_POINTER : _to->Init(window, _retval); } \
+  NS_IMETHOD Connect(const nsACString & url, const nsACString & sessionKey, const nsACString & addr, const nsACString & moduleName, const nsACString & hostedHtmlVersion, bool *_retval) { 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)
+{
+    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)
+{
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+/* End of implementation class template. */
+#endif
+
+
+#endif /* __gen_IOOPHM_h__ */
diff --git a/xpcom/prebuilt/update.rdf b/xpcom/prebuilt/update.rdf
index b6b3890..b3d152e 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>23.0.*</em:maxVersion>
+                <em:maxVersion>24.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>