[kazehakase-svn] [3452] * module/embed/gecko/gtkmozembed/EmbedPrivate.[c|h ],

Back to archive index

svnno****@sourc***** svnno****@sourc*****
Fri Mar 7 15:31:56 JST 2008


Revision: 3452
          http://svn.sourceforge.jp/cgi-bin/viewcvs.cgi?root=kazehakase&view=rev&rev=3452
Author:   ikezoe
Date:     2008-03-07 15:31:55 +0900 (Fri, 07 Mar 2008)

Log Message:
-----------
	* module/embed/gecko/gtkmozembed/EmbedPrivate.[c|h],
	module/embed/gecko/gtkmozembed/MozillaPrivate.[c|h]: Support
	xulrunner-1.9.

Modified Paths:
--------------
    kazehakase/trunk/ChangeLog
    kazehakase/trunk/macros/gecko.m4
    kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.cpp
    kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.h
    kazehakase/trunk/module/embed/gecko/gtkmozembed/Makefile.am
    kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.cpp
    kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.h

Modified: kazehakase/trunk/ChangeLog
===================================================================
--- kazehakase/trunk/ChangeLog	2008-03-07 01:39:44 UTC (rev 3451)
+++ kazehakase/trunk/ChangeLog	2008-03-07 06:31:55 UTC (rev 3452)
@@ -2,6 +2,9 @@
 
 	* module/embed/webkit-gtk/kz-webkit-gtk.c: Fix typo. Suppress
 	G_CRITICAL warnings.
+	* module/embed/gecko/gtkmozembed/EmbedPrivate.[c|h],
+	module/embed/gecko/gtkmozembed/MozillaPrivate.[c|h]: Support
+	xulrunner-1.9.
 
 2008-03-07  Shunichi Fuji  <palgl****@gmail*****>
 

Modified: kazehakase/trunk/macros/gecko.m4
===================================================================
--- kazehakase/trunk/macros/gecko.m4	2008-03-07 01:39:44 UTC (rev 3451)
+++ kazehakase/trunk/macros/gecko.m4	2008-03-07 06:31:55 UTC (rev 3452)
@@ -271,6 +271,11 @@
 	 AC_DEFINE([HAVE_NSIBADCERTLISTENER_H],[1],
 	           [Define if mozilla nsIBadCertListener header is available])])
 
+AC_CHECK_FILES([$MOZILLA_INCLUDE_ROOT/nsIDOMEventReceiver.h],
+	[have_nsidomeventreceiver_h=yes
+	 AC_DEFINE([HAVE_NSIDOMEVENTRECEIVER_H],[1],
+	           [Define if mozilla nsIDOMEventReceiver header is available])])
+
 dnl Check for nsIDocShell::GetSecurityUI
 dnl This code is picked from galeon-1.3.21.
 dnl nsIDocShell::GetSecurityUI was added in 1.8b2 as part of the fastback
@@ -356,7 +361,11 @@
   			  Enable including GtkMozEmbed module],,
   		enable_gtkmozembed=yes)
   if test x"$enable_gtkmozembed" = "xyes"; then
-    GECKO_MODULE=$GECKO-xpcom
+    if test x"$GECKO" = "xlibxul"; then
+      GECKO_MODULE=$GECKO-unstable
+    else
+      GECKO_MODULE=$GECKO-xpcom
+    fi
   else
     if test x"$GECKO" = "xlibxul"; then
       GECKO_MODULE=$GECKO-embedding-unstable
@@ -375,9 +384,6 @@
   
   MOZILLA_INCLUDE_ROOT="`$PKG_CONFIG --variable=includedir $GECKO_MODULE`"
   mozilla_include_type="`$PKG_CONFIG --variable=includetype $GECKO_MODULE`"
-  if test x"$mozilla_include_type" = "xunstable"; then
-    MOZILLA_INCLUDE_ROOT="$MOZILLA_INCLUDE_ROOT/unstable"
-  fi
   AC_SUBST(MOZILLA_INCLUDE_ROOT)
   
   MOZILLA_HOME="`$PKG_CONFIG --variable=libdir $GECKO_MODULE`"

Modified: kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.cpp
===================================================================
--- kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.cpp	2008-03-07 01:39:44 UTC (rev 3451)
+++ kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.cpp	2008-03-07 06:31:55 UTC (rev 3452)
@@ -28,9 +28,8 @@
 #include <nsIWebProgress.h>
 #include <nsIWebBrowserFocus.h>
 #include <nsCRT.h>
-#if 0
-#include <nsNetUtil.h>
-#include <nsIWebBrowserStream.h>
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+#include <nsIDOMUIListener.h>
 #endif
 
 // for NS_APPSHELL_CID
@@ -85,7 +84,6 @@
 
 PRUint32     EmbedPrivate::sWidgetCount = 0;
 char        *EmbedPrivate::sCompPath    = nsnull;
-nsIAppShell *EmbedPrivate::sAppShell    = nsnull;
 GList       *EmbedPrivate::sWindowList  = NULL;
 char        *EmbedPrivate::sProfileDir  = nsnull;
 char        *EmbedPrivate::sProfileName = nsnull;
@@ -323,9 +321,13 @@
 
   // detach our event listeners and release the event receiver
   DetachListeners();
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+  if (mEventTarget)
+    mEventTarget = nsnull;
+#else
   if (mEventReceiver)
     mEventReceiver = nsnull;
-  
+#endif
   // destroy our child window
   mWindow->ReleaseChildren();
 
@@ -450,21 +452,6 @@
     sMozillaEmbedPrivate = new MozillaEmbedPrivate;
     rv = sMozillaEmbedPrivate->StartupProfile(sProfileDir, sProfileName);
     NS_WARN_IF_FALSE(NS_SUCCEEDED(rv), "Warning: Failed to start up profiles.\n");
-
-    // XXX startup appshell service?
-    // XXX create offscreen window for appshell service?
-    // XXX remove X prop from offscreen window?
-    
-    nsCOMPtr<nsIAppShell> appShell;
-    appShell = do_CreateInstance(kAppShellCID);
-    if (!appShell) {
-      NS_WARNING("Failed to create appshell in EmbedPrivate::PushStartup!\n");
-      return;
-    }
-    sAppShell = appShell.get();
-    NS_ADDREF(sAppShell);
-    sAppShell->Create(0, nsnull);
-    sAppShell->Spinup();
   }
 }
 
@@ -481,13 +468,6 @@
     // shut down the profiles
     sMozillaEmbedPrivate->ShutdownProfile();
 
-    if (sAppShell) {
-      // Shutdown the appshell service.
-      sAppShell->Spindown();
-      NS_RELEASE(sAppShell);
-      sAppShell = 0;
-    }
-
     delete sMozillaEmbedPrivate;
     // shut down XPCOM/Embedding
     NS_TermEmbedding();
@@ -679,9 +659,13 @@
 
   GetListener();
 
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+  if (!mEventTarget)
+    return;
+#else
   if (!mEventReceiver)
     return;
-  
+#endif  
   AttachListeners();
 
 }
@@ -757,14 +741,54 @@
   webBrowserFocus->Deactivate();
 }
 
+nsresult
+EmbedPrivate::GetPIDOMWindow(nsPIDOMWindow **aPIWin)
+{
+  *aPIWin = nsnull;
+
+  // get the web browser
+  nsCOMPtr<nsIWebBrowser> webBrowser;
+  mWindow->GetWebBrowser(getter_AddRefs(webBrowser));
+
+  // get the content DOM window for that web browser
+  nsCOMPtr<nsIDOMWindow> domWindow;
+  webBrowser->GetContentDOMWindow(getter_AddRefs(domWindow));
+  if (!domWindow)
+    return NS_ERROR_FAILURE;
+
+  // get the private DOM window
+  nsCOMPtr<nsPIDOMWindow> domWindowPrivate = do_QueryInterface(domWindow);
+  // and the root window for that DOM window
+  *aPIWin = domWindowPrivate->GetPrivateRoot();
+
+  if (*aPIWin) {
+    NS_ADDREF(*aPIWin);
+    return NS_OK;
+  }
+
+  return NS_ERROR_FAILURE;
+
+}
+
 // Get the event listener for the chrome event handler.
 
 void
 EmbedPrivate::GetListener(void)
 {
-  if (mEventReceiver)
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+  if (!mEventTarget)
     return;
+  nsCOMPtr<nsPIDOMWindow> piWin;
+  GetPIDOMWindow(getter_AddRefs(piWin));
 
+  if (!piWin)
+    return;
+
+  mEventTarget = do_QueryInterface(piWin->GetChromeEventHandler());
+#else
+  if (!mEventReceiver)
+    return;
+
   nsCOMPtr<nsIWebBrowser> webBrowser;
   mWindow->GetWebBrowser(getter_AddRefs(webBrowser));
 
@@ -775,6 +799,7 @@
     return; 
 
   MozillaPrivate::GetEventReceiver(domWindow, getter_AddRefs(mEventReceiver));
+#endif
 }
 
 // attach key and mouse event listeners
@@ -782,6 +807,36 @@
 void
 EmbedPrivate::AttachListeners(void)
 {
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+  if (!mEventTarget || mListenersAttached)
+    return;
+
+  nsIDOMEventListener *eventListener =
+    static_cast<nsIDOMEventListener *>(static_cast<nsIDOMKeyListener *>(mEventListener));
+
+  // add the key listener
+  nsresult rv;
+  rv = mEventTarget->AddEventListenerByIID(eventListener,
+					     NS_GET_IID(nsIDOMKeyListener));
+  if (NS_FAILED(rv)) {
+    NS_WARNING("Failed to add key listener\n");
+    return;
+  }
+
+  rv = mEventTarget->AddEventListenerByIID(eventListener,
+					     NS_GET_IID(nsIDOMMouseListener));
+  if (NS_FAILED(rv)) {
+    NS_WARNING("Failed to add mouse listener\n");
+    return;
+  }
+
+  rv = mEventTarget->AddEventListenerByIID(eventListener,
+                                             NS_GET_IID(nsIDOMUIListener));
+  if (NS_FAILED(rv)) {
+    NS_WARNING("Failed to add UI listener\n");
+    return;
+  }
+#else
   if (!mEventReceiver || mListenersAttached)
     return;
 
@@ -805,7 +860,7 @@
   }
   rv = mEventReceiver->AddEventListenerByIID(eventListener,
 					     NS_GET_IID(nsIDOMEventListener));
-#if 1
+
   const PRUnichar domLiteral[] = { 'D', 'O', 'M', 'L', 'i', 'n', 'k',
 	  			   'A', 'd', 'd', 'e', 'd', '\0' };
   mEventReceiver->AddEventListener(nsEmbedString(domLiteral),
@@ -826,6 +881,36 @@
 void
 EmbedPrivate::DetachListeners(void)
 {
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+  if (!mListenersAttached || !mEventTarget)
+    return;
+
+  nsIDOMEventListener *eventListener =
+    static_cast<nsIDOMEventListener *>(static_cast<nsIDOMKeyListener *>(mEventListener));
+
+  nsresult rv;
+  rv = mEventTarget->RemoveEventListenerByIID(eventListener,
+						NS_GET_IID(nsIDOMKeyListener));
+  if (NS_FAILED(rv)) {
+    NS_WARNING("Failed to remove key listener\n");
+    return;
+  }
+
+  rv =
+    mEventTarget->RemoveEventListenerByIID(eventListener,
+					     NS_GET_IID(nsIDOMMouseListener));
+  if (NS_FAILED(rv)) {
+    NS_WARNING("Failed to remove mouse listener\n");
+    return;
+  }
+
+  rv = mEventTarget->RemoveEventListenerByIID(eventListener,
+						NS_GET_IID(nsIDOMUIListener));
+  if (NS_FAILED(rv)) {
+    NS_WARNING("Failed to remove UI listener\n");
+    return;
+  }
+#else
   if (!mListenersAttached || !mEventReceiver)
     return;
 
@@ -852,13 +937,6 @@
   				   'A', 'd', 'd', 'e', 'd', '\0' };
   rv = mEventReceiver->RemoveEventListener(nsEmbedString(domLiteral),
 					     eventListener, PR_FALSE);
-#if 0
-  rv = mEventReceiver->RemoveEventListenerByIID(eventListener,
-						NS_GET_IID(nsIDOMUIListener));
-  if (NS_FAILED(rv)) {
-    NS_WARNING("Failed to remove UI listener\n");
-    return;
-  }
 #endif
   mListenersAttached = PR_FALSE;
 }

Modified: kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.h
===================================================================
--- kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.h	2008-03-07 01:39:44 UTC (rev 3451)
+++ kazehakase/trunk/module/embed/gecko/gtkmozembed/EmbedPrivate.h	2008-03-07 06:31:55 UTC (rev 3452)
@@ -32,15 +32,22 @@
 // object.
 #include <nsIWebBrowserChrome.h>
 #include <nsIAppShell.h>
-#include <nsIDOMEventReceiver.h>
 // app component registration
 #include <nsIGenericFactory.h>
+#include <nsPIDOMWindow.h>
 
 #include "gtkmozembedprivate.h"
 #include "MozillaEmbedPrivate.h"
 
 #include <glib.h>
 
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+#include <nsPIDOMEventTarget.h>
+#endif
+
 class EmbedProgress;
 class EmbedWindow;
 class EmbedContentListener;
@@ -133,8 +140,11 @@
   nsCOMPtr<nsISHistory>          mSessionHistory;
 
   // our event receiver
+#ifndef HAVE_NSIDOMEVENTRECEIVER_H
+  nsCOMPtr<nsPIDOMEventTarget>    mEventTarget;
+#else
   nsCOMPtr<nsIDOMEventReceiver>  mEventReceiver;
-
+#endif
   // the currently loaded uri
   nsEmbedString                  mURI;
 
@@ -170,6 +180,9 @@
   // is the chrome listener attached yet?
   PRBool                         mListenersAttached;
 
+  // this will get the PIDOMWindow for this widget
+  nsresult        GetPIDOMWindow   (nsPIDOMWindow **aPIWin);
+  
   void GetListener    (void);
   void AttachListeners(void);
   void DetachListeners(void);

Modified: kazehakase/trunk/module/embed/gecko/gtkmozembed/Makefile.am
===================================================================
--- kazehakase/trunk/module/embed/gecko/gtkmozembed/Makefile.am	2008-03-07 01:39:44 UTC (rev 3451)
+++ kazehakase/trunk/module/embed/gecko/gtkmozembed/Makefile.am	2008-03-07 06:31:55 UTC (rev 3452)
@@ -47,6 +47,8 @@
 	-I$(MOZILLA_INCLUDE_ROOT)/widget \
 	-I$(MOZILLA_INCLUDE_ROOT)/windowwatcher \
 	-I$(MOZILLA_INCLUDE_ROOT)/xmlextras \
+	-I$(MOZILLA_INCLUDE_ROOT)/string \
+	-I$(MOZILLA_INCLUDE_ROOT)/xpcom \
 	$(GTK_CFLAGS) \
 	-I$(top_builddir)/src \
 	-I$(top_srcdir)/src \

Modified: kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.cpp
===================================================================
--- kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.cpp	2008-03-07 01:39:44 UTC (rev 3451)
+++ kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.cpp	2008-03-07 06:31:55 UTC (rev 3452)
@@ -48,19 +48,21 @@
 #include <nsIDOMHTMLImageElement.h>
 #include <nsIWidget.h>
 #include <nsPIDOMWindow.h>
-#include <nsIChromeEventHandler.h>
 #include <nsIDOMWindowInternal.h>
 #include <nsIDOMDocument.h>
 #include <nsIDeviceContext.h>
 #include <nsIMarkupDocumentViewer.h>
 #include <nsIContentViewer.h>
+#ifdef HAVE_NSIDOMEVENTRECEIVER_H
+#include <nsIChromeEventHandler.h>
+#endif
 
-
 /* IMPORTANT. Put only code that use internal mozilla strings (nsAutoString for
  * example) in this file. Note that you cannot use embed strings here,
  * the header inclusions will conflict.
  */
 
+#ifdef HAVE_NSIPRINTOPTIONS_AVAILABLEPRINTERS
 GList *
 MozillaPrivate::GetPrinterList ()
 {
@@ -100,6 +102,7 @@
 
 	return g_list_reverse (printers);
 }
+#endif
 
 gboolean
 MozillaPrivate::CreatePrintSettings (nsIPrintSettings **options)
@@ -126,6 +129,7 @@
 	return gdk_window;
 }
 
+#ifdef HAVE_NSIDOMEVENTRECEIVER_H
 gboolean
 MozillaPrivate::GetEventReceiver (nsIDOMWindow *domWindow, nsIDOMEventReceiver **receiver)
 {
@@ -156,3 +160,4 @@
 	
   	return TRUE;
 }
+#endif

Modified: kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.h
===================================================================
--- kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.h	2008-03-07 01:39:44 UTC (rev 3451)
+++ kazehakase/trunk/module/embed/gecko/gtkmozembed/MozillaPrivate.h	2008-03-07 06:31:55 UTC (rev 3452)
@@ -36,17 +36,26 @@
 #include <nsISelection.h>
 #include <nsIDocShell.h>
 #include <nsIBaseWindow.h>
-#include <nsIDOMEventReceiver.h>
 #undef MOZILLA_INTERNAL_API
 #ifdef MOZ_NSICANVASRENDERINGCONTEXTINTERNAL_HAVE_GETINPUTSTREAM_
 #include "egg-pixbuf-thumbnail.h"
 #endif
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#ifdef HAVE_NSIDOMEVENTRECEIVER_H
+#include <nsIDOMEventReceiver.h>
+#endif
 
 namespace MozillaPrivate
 {
+#ifdef HAVE_NSIPRINTOPTIONS_AVAILABLEPRINTERS
 	GList    *GetPrinterList      ();
+#endif
 	gboolean  CreatePrintSettings (nsIPrintSettings **options);
 	GdkWindow *GetGdkWindow       (nsIBaseWindow *window);
+#ifdef HAVE_NSIDOMEVENTRECEIVER_H
 	gboolean  GetEventReceiver    (nsIDOMWindow *domWindow, nsIDOMEventReceiver **receiver);
+#endif
 }
 #endif /* __MOZILLA_PRIVATE_H__ */




More information about the Kazehakase-cvs mailing list
Back to archive index