summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@src.gnome.org>2004-06-03 18:51:32 +0000
committerMarco Pesenti Gritti <marco@src.gnome.org>2004-06-03 18:51:32 +0000
commitb774b547788b74884b9eb690c548a6016e714023 (patch)
tree72b9df09c0fc257169b3e9b9cbdc349e56a63101
parentb699b40d663955560655271f7645ae277e6076c8 (diff)
downloadepiphany-b774b547788b74884b9eb690c548a6016e714023.tar.gz
merge mozilla-embed-strings branch
-rw-r--r--ChangeLog41
-rw-r--r--configure.in96
-rw-r--r--embed/ephy-embed.c25
-rw-r--r--embed/ephy-embed.h8
-rw-r--r--embed/mozilla/ContentHandler.cpp71
-rw-r--r--embed/mozilla/ContentHandler.h25
-rw-r--r--embed/mozilla/EphyAboutRedirector.cpp9
-rw-r--r--embed/mozilla/EphyBrowser.cpp276
-rw-r--r--embed/mozilla/EphyBrowser.h14
-rw-r--r--embed/mozilla/EphyContentPolicy.cpp24
-rw-r--r--embed/mozilla/EphyHeaderSniffer.cpp48
-rw-r--r--embed/mozilla/EphyHeaderSniffer.h9
-rw-r--r--embed/mozilla/EphySingle.cpp19
-rw-r--r--embed/mozilla/EphyUtils.cpp59
-rw-r--r--embed/mozilla/EphyUtils.h35
-rw-r--r--embed/mozilla/EventContext.cpp325
-rw-r--r--embed/mozilla/EventContext.h33
-rw-r--r--embed/mozilla/FilePicker.cpp125
-rw-r--r--embed/mozilla/GlobalHistory.cpp121
-rw-r--r--embed/mozilla/GlobalHistory.h14
-rw-r--r--embed/mozilla/GtkNSSClientAuthDialogs.cpp24
-rw-r--r--embed/mozilla/GtkNSSDialogs.cpp127
-rw-r--r--embed/mozilla/GtkNSSKeyPairDialogs.cpp22
-rw-r--r--embed/mozilla/Makefile.am18
-rw-r--r--embed/mozilla/MozDownload.cpp120
-rw-r--r--embed/mozilla/MozDownload.h18
-rw-r--r--embed/mozilla/MozRegisterComponents.cpp12
-rw-r--r--embed/mozilla/MozillaPrivate.cpp50
-rw-r--r--embed/mozilla/mozilla-download.cpp4
-rw-r--r--embed/mozilla/mozilla-embed-persist.cpp41
-rw-r--r--embed/mozilla/mozilla-embed-single.cpp58
-rw-r--r--embed/mozilla/mozilla-embed.cpp167
-rw-r--r--embed/mozilla/mozilla-version.h53
-rw-r--r--src/ephy-tab.c9
-rw-r--r--src/ephy-window.c2
35 files changed, 1146 insertions, 956 deletions
diff --git a/ChangeLog b/ChangeLog
index 6edfbc7af..c1e65ebeb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,44 @@
+2004-06-03 Marco Pesenti Gritti <marco@gnome.org>
+
+ * configure.in:
+ * embed/ephy-embed.c: (ephy_embed_base_init),
+ (ephy_embed_set_zoom):
+ * embed/ephy-embed.h:
+ * embed/mozilla/ContentHandler.cpp:
+ * embed/mozilla/ContentHandler.h:
+ * embed/mozilla/EphyAboutRedirector.cpp:
+ * embed/mozilla/EphyBrowser.cpp:
+ * embed/mozilla/EphyBrowser.h:
+ * embed/mozilla/EphyContentPolicy.cpp:
+ * embed/mozilla/EphyHeaderSniffer.cpp:
+ * embed/mozilla/EphyHeaderSniffer.h:
+ * embed/mozilla/EphySingle.cpp:
+ * embed/mozilla/EphyUtils.cpp:
+ * embed/mozilla/EphyUtils.h:
+ * embed/mozilla/EventContext.cpp:
+ * embed/mozilla/EventContext.h:
+ * embed/mozilla/FilePicker.cpp:
+ * embed/mozilla/GlobalHistory.cpp:
+ * embed/mozilla/GlobalHistory.h:
+ * embed/mozilla/GtkNSSClientAuthDialogs.cpp:
+ * embed/mozilla/GtkNSSDialogs.cpp:
+ * embed/mozilla/GtkNSSKeyPairDialogs.cpp:
+ * embed/mozilla/Makefile.am:
+ * embed/mozilla/MozDownload.cpp:
+ * embed/mozilla/MozDownload.h:
+ * embed/mozilla/MozRegisterComponents.cpp:
+ * embed/mozilla/MozillaPrivate.cpp:
+ * embed/mozilla/mozilla-download.cpp:
+ * embed/mozilla/mozilla-embed-persist.cpp:
+ * embed/mozilla/mozilla-embed-single.cpp:
+ * embed/mozilla/mozilla-embed.cpp:
+ * embed/mozilla/mozilla-version.h:
+ * src/ephy-tab.c: (ephy_tab_address_cb),
+ (ephy_tab_content_change_cb), (ephy_tab_init):
+ * src/ephy-window.c: (ephy_window_set_zoom):
+
+ Merge mozilla-embed-strings branch
+
2004-06-02 Christian Persch <chpe@cvs.gnome.org>
* src/ephy-window.c: (update_exit_fullscreen_popup_position):
diff --git a/configure.in b/configure.in
index afd2e6211..97daab53f 100644
--- a/configure.in
+++ b/configure.in
@@ -143,43 +143,93 @@ fi
CXXFLAGS=$_SAVE_CXXFLAGS
AC_LANG_POP(C++)
+dnl *********************
+dnl Mozilla version check
+dnl *********************
+
AC_MSG_CHECKING(for mozilla version)
MOZILLA_VERSION="`$PKG_CONFIG --modversion mozilla-gtkmozembed`"
-dnl allow user to override the autodetected mozilla version
-dnl - without arguments for cvs head
AC_ARG_WITH(mozilla-snapshot,
- AC_HELP_STRING([--with-mozilla-snapshot@<:@=1.6|1.7a|1.7b|1.8a|trunk@:>@],
- [Whether to try building against mozilla 1.6|1.7a|1.7b|1.8a|trunk
- snapshot. @<:@guessed@:>@]),
+ AC_HELP_STRING([--with-mozilla-snapshot@<:@=1.7|1.8a1|1.8a2|trunk@:>@],
+ [Which mozilla version to build against, guessed: @<:@guessed@:>@]),
[autodetect=" (guessed: $MOZILLA_VERSION)"; MOZILLA_VERSION="$withval"])
AC_MSG_RESULT($MOZILLA_VERSION$autodetect)
-case "$MOZILLA_VERSION" in
- 1.6) MOZILLA_SNAPSHOT=13 ;;
- 1.7a) MOZILLA_SNAPSHOT=14 ;;
- 1.7b) MOZILLA_SNAPSHOT=15 ;;
-1.7rc1) MOZILLA_SNAPSHOT=15 ;;
-1.7rc2) MOZILLA_SNAPSHOT=16 ;;
- 1.7) MOZILLA_SNAPSHOT=16 ;;
-branch1.7) MOZILLA_SNAPSHOT=16 ;;
- 1.8a) MOZILLA_SNAPSHOT=18 ;;
-1.8a1) MOZILLA_SNAPSHOT=18 ;;
-1.8a2) MOZILLA_SNAPSHOT=19 ;;
-trunk) MOZILLA_SNAPSHOT=19 ;;
- *) AC_ERROR([
+dnl Test for the "trunk" version
+if test $MOZILLA_VERSION == "trunk"; then
+ MOZILLA_VERSION=99.0 # use a high number
+fi
+
+dnl Split up the version string ( 1.7rc1 -> 1 7 rc 1 )
+version=$(echo $MOZILLA_VERSION | sed -e 's/\(@<:@0-9@:>@\+\|@<:@a-z@:>@\+\)/\1 /g' -e 's/\.//g')
+
+set -- $version;
+
+case $1 in
+ @<:@0-9@:>@)
+ AC_DEFINE_UNQUOTED(MOZILLA_MAJOR, $1, [Define to the Mozilla major version.])
+ ;;
+ *)
+ AC_ERROR([Invalid mozilla major version component: $1])
+ ;;
+esac
+
+case $2 in
+ @<:@0-9@:>@)
+ AC_DEFINE_UNQUOTED(MOZILLA_MINOR, $2, [Define to the Mozilla minor version.])
+ ;;
+ *)
+ AC_ERROR([Invalid mozilla minor version component: $2])
+ ;;
+esac
+
+micro=$3
+type=4
+case $3 in
+ @<:@0-9@:>@) # e.g. 1.4.1
+ ;;
+ "") # e.g. 1.7
+ micro=0
+ ;;
+ a) type=1
+ micro=$4
+ ;;
+
+ b) type=2
+ micro=$4
+ ;;
+
+ rc) type=3
+ micro=$4
+ ;;
+ *)
+ AC_ERROR([Invalid mozilla version component: $3])
+esac
+
+if test "$micro" = "" ; then
+ micro=0
+fi
+
+if test "$5" != "" ; then
+ AC_ERROR([Unexpected mozilla version component: $5])
+fi
+
+AC_DEFINE_UNQUOTED(MOZILLA_TYPE, $type, [Define to the Mozilla release type.])
+AC_DEFINE_UNQUOTED(MOZILLA_MICRO, $micro, [Define to the Mozilla micro version.])
+
+if test "$1" -lt 1 -o \( "$1" -eq 1 -a "$2" -lt 7 \) ; then
+ AC_ERROR([
*****************************************************************************
-Epiphany can be built using Mozilla 1.6, 1.7a, 1.7b, 1.8a or
-trunk snapshot, but the version available is $MOZILLA_VERSION.
+Epiphany can be built using Mozilla 1.7, 1.8a1, 1.8a2 or trunk
+snapshot, but the version available is $MOZILLA_VERSION.
When using Mozilla trunk snapshot, a successful build is not guaranteed due
to the frequently changing state of the Mozilla interfaces and the limited
resources of the Epiphany team to support non-release Mozilla snapshots.
*****************************************************************************])
-esac
-
-AC_DEFINE_UNQUOTED(MOZILLA_SNAPSHOT, $MOZILLA_SNAPSHOT, [Define mozilla snapshot])
+fi
AC_CHECK_FILE([$MOZILLA_INCLUDE_ROOT/pipnss/nsIX509Cert.h],
[AC_DEFINE(HAVE_MOZILLA_PSM, 1,
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c
index 7e55ac7b3..f3fa3bc57 100644
--- a/embed/ephy-embed.c
+++ b/embed/ephy-embed.c
@@ -249,6 +249,25 @@ ephy_embed_base_init (gpointer g_class)
G_TYPE_NONE,
1,
G_TYPE_FLOAT);
+/**
+ * EphyEmbed::ge-content-change:
+ * @embed:
+ * @uri: URI of the new content
+ *
+ * The ::ge_content_change signal is emitted when a new page content
+ * is being loadedinto the browser. It's a good place to do view
+ * related changes, for example to restore the zoom level of a page
+ * or to set an user style sheet.
+ **/
+ g_signal_new ("ge_content_change",
+ EPHY_TYPE_EMBED,
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET (EphyEmbedIface, content_change),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE,
+ 1,
+ G_TYPE_STRING);
initialized = TRUE;
}
@@ -476,7 +495,6 @@ ephy_embed_reload (EphyEmbed *embed,
* ephy_embed_set_zoom:
* @embed: an #EphyEmbed
* @zoom: the new zoom level
- * @reflow: %TRUE to reload the page
*
* Sets the zoom level for a web page.
*
@@ -486,11 +504,10 @@ ephy_embed_reload (EphyEmbed *embed,
**/
void
ephy_embed_set_zoom (EphyEmbed *embed,
- float zoom,
- gboolean reflow)
+ float zoom)
{
EphyEmbedIface *iface = EPHY_EMBED_GET_IFACE (embed);
- iface->set_zoom (embed, zoom, reflow);
+ iface->set_zoom (embed, zoom);
}
/**
diff --git a/embed/ephy-embed.h b/embed/ephy-embed.h
index 9e8f26d6f..b890222b7 100644
--- a/embed/ephy-embed.h
+++ b/embed/ephy-embed.h
@@ -171,6 +171,8 @@ struct _EphyEmbedIface
EmbedSecurityLevel level);
void (* zoom_change) (EphyEmbed *embed,
float new_zoom);
+ void (* content_change) (EphyEmbed *embed,
+ const char *uri);
/* Methods */
void (* load_url) (EphyEmbed *embed,
@@ -204,8 +206,7 @@ struct _EphyEmbedIface
EmbedSecurityLevel *level,
char **description);
void (* set_zoom) (EphyEmbed *embed,
- float zoom,
- gboolean reflow);
+ float zoom);
float (* get_zoom) (EphyEmbed *embed);
void (* find_set_properties) (EphyEmbed *embed,
const char *search_string,
@@ -284,8 +285,7 @@ void ephy_embed_get_security_level (EphyEmbed *embed,
/* Zoom */
void ephy_embed_set_zoom (EphyEmbed *embed,
- float zoom,
- gboolean reflow);
+ float zoom);
float ephy_embed_get_zoom (EphyEmbed *embed);
diff --git a/embed/mozilla/ContentHandler.cpp b/embed/mozilla/ContentHandler.cpp
index 8a6a6a6d3..8f7555a66 100644
--- a/embed/mozilla/ContentHandler.cpp
+++ b/embed/mozilla/ContentHandler.cpp
@@ -35,11 +35,12 @@
#include <libgnomevfs/gnome-vfs-utils.h>
#include <glib/gi18n.h>
+#include <nsMemory.h>
#include <nsIURL.h>
#include <nsILocalFile.h>
#include <nsIMIMEInfo.h>
#include <nsIInterfaceRequestorUtils.h>
-#include "nsCExternalHandlerService.h"
+#include <nsCExternalHandlerService.h>
#include "ephy-prefs.h"
#include "ephy-embed-single.h"
@@ -57,13 +58,13 @@ class GContentHandler;
NS_IMPL_ISUPPORTS1(GContentHandler, nsIHelperAppLauncherDialog)
-#if MOZILLA_SNAPSHOT < 18
-GContentHandler::GContentHandler() : mMimeType(nsnull)
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+GContentHandler::GContentHandler()
{
LOG ("GContentHandler ctor (%p)", this)
}
#else
-GContentHandler::GContentHandler()
+GContentHandler::GContentHandler() : mMimeType(nsnull)
{
LOG ("GContentHandler ctor (%p)", this)
}
@@ -73,7 +74,7 @@ GContentHandler::~GContentHandler()
{
LOG ("GContentHandler dtor (%p)", this)
-#if MOZILLA_SNAPSHOT < 18
+#if !MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
nsMemory::Free (mMimeType);
#endif
}
@@ -97,11 +98,11 @@ NS_IMETHODIMP GContentHandler::Show(nsIHelperAppLauncher *aLauncher,
NS_ENSURE_SUCCESS (rv, rv);
single = EPHY_EMBED_SINGLE (ephy_embed_shell_get_embed_single (embed_shell));
-#if MOZILLA_SNAPSHOT < 18
- g_signal_emit_by_name (single, "handle_content", mMimeType,
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ g_signal_emit_by_name (single, "handle_content", mMimeType.get(),
mUrl.get(), &handled);
#else
- g_signal_emit_by_name (single, "handle_content", mMimeType.get(),
+ g_signal_emit_by_name (single, "handle_content", mMimeType,
mUrl.get(), &handled);
#endif
@@ -128,11 +129,14 @@ NS_IMETHODIMP GContentHandler::PromptForSaveToFile(
EphyFileChooser *dialog;
gint response;
char *filename;
+ nsEmbedCString defaultFile;
+
+ NS_UTF16ToCString (nsEmbedString (aDefaultFile),
+ NS_CSTRING_ENCODING_UTF8, defaultFile);
if (mAction != CONTENT_ACTION_SAVEAS)
{
- return BuildDownloadPath (NS_ConvertUTF16toUTF8 (aDefaultFile).get(),
- _retval);
+ return BuildDownloadPath (defaultFile.get(), _retval);
}
nsCOMPtr<nsIDOMWindow> parentDOMWindow = do_GetInterface (aWindowContext);
@@ -142,8 +146,7 @@ NS_IMETHODIMP GContentHandler::PromptForSaveToFile(
GTK_FILE_CHOOSER_ACTION_SAVE,
CONF_STATE_SAVE_DIR,
EPHY_FILE_FILTER_ALL);
- gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog),
- NS_ConvertUTF16toUTF8 (aDefaultFile).get());
+ gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), defaultFile.get());
response = gtk_dialog_run (GTK_DIALOG (dialog));
if (response == GTK_RESPONSE_ACCEPT)
@@ -151,7 +154,7 @@ NS_IMETHODIMP GContentHandler::PromptForSaveToFile(
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog));
nsCOMPtr <nsILocalFile> destFile (do_CreateInstance(NS_LOCAL_FILE_CONTRACTID));
- destFile->InitWithNativePath (nsDependentCString (filename));
+ destFile->InitWithNativePath (nsEmbedCString (filename));
g_free (filename);
NS_IF_ADDREF (*_retval = destFile);
@@ -208,7 +211,7 @@ NS_METHOD GContentHandler::CheckAppSupportScheme (void)
{
char *uri_scheme = (char *)l->data;
- if (mScheme.Equals (uri_scheme))
+ if (strcmp (mScheme.get(), uri_scheme) == 0)
{
mAppSupportScheme = PR_TRUE;
}
@@ -227,10 +230,10 @@ NS_METHOD GContentHandler::Init (void)
mLauncher->GetMIMEInfo (getter_AddRefs(MIMEInfo));
NS_ENSURE_TRUE (MIMEInfo, NS_ERROR_FAILURE);
-#if MOZILLA_SNAPSHOT < 18
- rv = MIMEInfo->GetMIMEType (&mMimeType);
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
rv = MIMEInfo->GetMIMEType (mMimeType);
+#else
+ rv = MIMEInfo->GetMIMEType (&mMimeType);
#endif
mLauncher->GetTargetFile (getter_AddRefs(mTempFile));
@@ -345,19 +348,16 @@ NS_METHOD GContentHandler::MIMEDoAction (void)
auto_downloads = eel_gconf_get_boolean (CONF_AUTO_DOWNLOADS);
-#if MOZILLA_SNAPSHOT < 18
- mHelperApp = gnome_vfs_mime_get_default_application (mMimeType);
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
mHelperApp = gnome_vfs_mime_get_default_application (mMimeType.get());
-#endif
- CheckAppSupportScheme ();
-
-#if MOZILLA_SNAPSHOT < 18
- mPermission = ephy_embed_shell_check_mime (embed_shell, mMimeType);
-#else
mPermission = ephy_embed_shell_check_mime (embed_shell, mMimeType.get());
+#else
+ mHelperApp = gnome_vfs_mime_get_default_application (mMimeType);
+ mPermission = ephy_embed_shell_check_mime (embed_shell, mMimeType);
#endif
+ CheckAppSupportScheme ();
+
if (auto_downloads)
{
mAction = CONTENT_ACTION_OPEN;
@@ -383,23 +383,26 @@ NS_METHOD GContentHandler::MIMEDoAction (void)
if (mAction == CONTENT_ACTION_OPEN)
{
+ nsEmbedString desc;
+
+ NS_CStringToUTF16 (nsEmbedCString ("gnome-default"),
+ NS_CSTRING_ENCODING_UTF8, desc);
+
/* HACK we use the application description to ask
MozDownload to open the file when download
is finished */
-#if MOZILLA_SNAPSHOT < 18
- mimeInfo->SetApplicationDescription
- (NS_LITERAL_STRING ("gnome-default").get());
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ mimeInfo->SetApplicationDescription (desc);
#else
- mimeInfo->SetApplicationDescription
- (NS_LITERAL_STRING ("gnome-default"));
+ mimeInfo->SetApplicationDescription (desc.get());
#endif
}
else
{
-#if MOZILLA_SNAPSHOT < 18
- mimeInfo->SetApplicationDescription (nsnull);
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ mimeInfo->SetApplicationDescription (nsEmbedString ());
#else
- mimeInfo->SetApplicationDescription (NS_LITERAL_STRING (""));
+ mimeInfo->SetApplicationDescription (nsnull);
#endif
}
diff --git a/embed/mozilla/ContentHandler.h b/embed/mozilla/ContentHandler.h
index a66f36b49..df77559d4 100644
--- a/embed/mozilla/ContentHandler.h
+++ b/embed/mozilla/ContentHandler.h
@@ -25,6 +25,7 @@
#include "config.h"
#endif
+#include "mozilla-version.h"
#include "ephy-embed-shell.h"
#include <libgnomevfs/gnome-vfs-mime-handlers.h>
@@ -33,13 +34,9 @@
#include <nsISupports.h>
#include <nsIURI.h>
#include <nsIFile.h>
-
+#include <nsEmbedString.h>
#include <nsIHelperAppLauncherDialog.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#endif
-
typedef enum
{
CONTENT_ACTION_OPEN,
@@ -57,8 +54,6 @@ typedef enum
{0x9b, 0xeb, 0x93, 0x35, 0xc0, 0x6b, 0xbe, 0xae} \
}
-class nsIFactory;
-
class GContentHandler : public nsIHelperAppLauncherDialog
{
public:
@@ -82,18 +77,18 @@ class GContentHandler : public nsIHelperAppLauncherDialog
nsCOMPtr<nsIFile> mTempFile;
nsCOMPtr<nsISupports> mContext;
-#if MOZILLA_SNAPSHOT < 18
- char *mMimeType;
-#else
- nsCString mMimeType;
-#endif
PRBool mAppSupportScheme;
GnomeVFSMimeApplication *mHelperApp;
ContentAction mAction;
EphyMimePermission mPermission;
- nsCString mUrl;
- nsCString mScheme;
+ nsEmbedCString mUrl;
+ nsEmbedCString mScheme;
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ nsEmbedCString mMimeType;
+#else
+ char *mMimeType;
+#endif
};
-#endif
+#endif /* __ContentHandler_h */
diff --git a/embed/mozilla/EphyAboutRedirector.cpp b/embed/mozilla/EphyAboutRedirector.cpp
index a7f9fbffe..3a5f49913 100644
--- a/embed/mozilla/EphyAboutRedirector.cpp
+++ b/embed/mozilla/EphyAboutRedirector.cpp
@@ -50,10 +50,7 @@
#include <nsIServiceManager.h>
#include <nsCOMPtr.h>
#include <nsIURI.h>
-
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#endif
+#include <nsEmbedString.h>
static NS_DEFINE_CID(kIOServiceCID, NS_IOSERVICE_CID);
@@ -75,7 +72,7 @@ NS_IMETHODIMP
EphyAboutRedirector::NewChannel(nsIURI *aURI, nsIChannel **result)
{
NS_ENSURE_ARG(aURI);
- nsCAutoString path;
+ nsEmbedCString path;
(void)aURI->GetPath(path);
nsCOMPtr<nsIIOService> ioService(do_GetService(kIOServiceCID));
@@ -86,7 +83,7 @@ EphyAboutRedirector::NewChannel(nsIURI *aURI, nsIChannel **result)
if (strcmp(path.get(), kRedirMap[i].id) == 0)
{
nsCOMPtr<nsIChannel> tempChannel;
- ioService->NewChannel(nsDependentCString(kRedirMap[i].url),
+ ioService->NewChannel(nsEmbedCString(kRedirMap[i].url),
nsnull, nsnull, getter_AddRefs(tempChannel));
NS_ENSURE_TRUE (tempChannel, NS_ERROR_FAILURE);
diff --git a/embed/mozilla/EphyBrowser.cpp b/embed/mozilla/EphyBrowser.cpp
index 7500058c0..0205d376e 100644
--- a/embed/mozilla/EphyBrowser.cpp
+++ b/embed/mozilla/EphyBrowser.cpp
@@ -23,8 +23,7 @@
#endif
#include "EphyBrowser.h"
-#include "GlobalHistory.h"
-#include "ContentHandler.h"
+#include "EphyUtils.h"
#include "ephy-embed.h"
#include "ephy-string.h"
#include "ephy-debug.h"
@@ -37,15 +36,14 @@
#include "nsISimpleEnumerator.h"
#include "nsIContentViewer.h"
-#include "nsIGlobalHistory.h"
#include "nsIWebBrowserFind.h"
#include "nsIWebBrowserFocus.h"
#include "nsICommandManager.h"
#include "nsIWebBrowserPrint.h"
+#include "nsIDocCharset.h"
#include "nsIDocShellTreeItem.h"
#include "nsIDocShellTreeNode.h"
#include "nsIDocShellTreeOwner.h"
-#include "nsIDocumentCharsetInfo.h"
#include "nsIWebPageDescriptor.h"
#include "nsISHEntry.h"
#include "nsIHistoryEntry.h"
@@ -56,25 +54,21 @@
#include "nsIDOMHTMLInputElement.h"
#include "nsIDOMHTMLTextAreaElement.h"
#include "nsIDOMDocument.h"
+#include "nsIDOM3Document.h"
#include "nsIDOMEvent.h"
#include "nsIDOMEventTarget.h"
#include "nsIDOMNode.h"
#include "nsIDOMElement.h"
+#include "nsIDOMWindow2.h"
+#include "nsEmbedString.h"
+#include "nsMemory.h"
#ifdef ALLOW_PRIVATE_API
-#include "nsPIDOMWindow.h"
#include "nsIMarkupDocumentViewer.h"
-#include "nsIChromeEventHandler.h"
-#include "nsIDOMWindowInternal.h"
#endif
-#ifdef ALLOW_PRIVATE_STRINGS
-#include "nsReadableUtils.h"
-#include "nsIDocument.h"
-#include "nsIDeviceContext.h"
-#include "nsIPresContext.h"
-#include "nsIAtom.h"
-#endif
+static PRUnichar DOMLinkAdded[] = { 'D', 'O', 'M', 'L', 'i', 'n', 'k',
+ 'A', 'd', 'd', 'e', 'd', '\0' };
EphyEventListener::EphyEventListener(void)
: mOwner(nsnull)
@@ -105,37 +99,41 @@ EphyFaviconEventListener::HandleFaviconLink (nsIDOMNode *node)
linkElement = do_QueryInterface (node);
if (!linkElement) return NS_ERROR_FAILURE;
- NS_NAMED_LITERAL_STRING(attr_rel, "rel");
- nsAutoString value;
- result = linkElement->GetAttribute (attr_rel, value);
+ PRUnichar relAttr[] = { 'r', 'e', 'l', '\0' };
+ nsEmbedString value;
+ result = linkElement->GetAttribute (nsEmbedString(relAttr), value);
if (NS_FAILED (result)) return NS_ERROR_FAILURE;
- if (value.EqualsIgnoreCase("SHORTCUT ICON") ||
- value.EqualsIgnoreCase("ICON"))
+ nsEmbedCString rel;
+ NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, rel);
+
+ if (g_ascii_strcasecmp (rel.get(), "SHORTCUT ICON") == 0 ||
+ g_ascii_strcasecmp (rel.get(), "ICON") == 0)
{
- NS_NAMED_LITERAL_STRING(attr_href, "href");
- nsAutoString value;
- result = linkElement->GetAttribute (attr_href, value);
- if (NS_FAILED (result) || value.IsEmpty()) return NS_ERROR_FAILURE;
+ PRUnichar hrefAttr[] = { 'h', 'r', 'e', 'f', '\0' };
+ nsEmbedString value;
+ result = linkElement->GetAttribute (nsEmbedString (hrefAttr), value);
+ if (NS_FAILED (result) || !value.Length()) return NS_ERROR_FAILURE;
+
+ nsEmbedCString link;
+ NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, link);
nsCOMPtr<nsIDOMDocument> domDoc;
node->GetOwnerDocument(getter_AddRefs(domDoc));
NS_ENSURE_TRUE (domDoc, NS_ERROR_FAILURE);
- nsCOMPtr<nsIDocument> doc = do_QueryInterface (domDoc);
+ nsCOMPtr<nsIDOM3Document> doc = do_QueryInterface (domDoc);
NS_ENSURE_TRUE (doc, NS_ERROR_FAILURE);
-#if MOZILLA_SNAPSHOT > 13
- nsIURI *uri;
- uri = doc->GetDocumentURI ();
-#elif MOZILLA_SNAPSHOT > 11
- nsIURI *uri;
- uri = doc->GetDocumentURL ();
-#endif
- if (!uri) return NS_ERROR_FAILURE;
+ nsEmbedString spec;
+ result = doc->GetDocumentURI (spec);
+ NS_ENSURE_SUCCESS (result, result);
- const nsACString &link = NS_ConvertUTF16toUTF8(value);
- nsCAutoString favicon_url;
+ nsCOMPtr<nsIURI> uri;
+ result = EphyUtils::NewURI (getter_AddRefs(uri), spec);
+ NS_ENSURE_SUCCESS (result, result);
+
+ nsEmbedCString favicon_url;
result = uri->Resolve (link, favicon_url);
if (NS_FAILED (result)) return NS_ERROR_FAILURE;
@@ -210,23 +208,15 @@ EphyBrowser::GetListener (void)
if (mEventReceiver) return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMWindow> domWindowExternal;
- mWebBrowser->GetContentDOMWindow(getter_AddRefs(domWindowExternal));
+ mWebBrowser->GetContentDOMWindow (getter_AddRefs(domWindowExternal));
- nsCOMPtr<nsIDOMWindowInternal> domWindow;
- domWindow = do_QueryInterface(domWindowExternal);
+ nsCOMPtr<nsIDOMWindow2> domWindow (do_QueryInterface (domWindowExternal));
+ NS_ENSURE_TRUE (domWindow, NS_ERROR_FAILURE);
- nsCOMPtr<nsPIDOMWindow> piWin(do_QueryInterface(domWindow));
- NS_ENSURE_TRUE (piWin, NS_ERROR_FAILURE);
-
-#if MOZILLA_SNAPSHOT >= 18
- nsIChromeEventHandler* chromeHandler;
- chromeHandler = piWin->GetChromeEventHandler();
-#else
- nsCOMPtr<nsIChromeEventHandler> chromeHandler;
- piWin->GetChromeEventHandler(getter_AddRefs(chromeHandler));
-#endif
+ nsCOMPtr<nsIDOMEventTarget> rootWindow;
+ domWindow->GetWindowRoot (getter_AddRefs(rootWindow));
- mEventReceiver = do_QueryInterface(chromeHandler);
+ mEventReceiver = do_QueryInterface (rootWindow);
NS_ENSURE_TRUE (mEventReceiver, NS_ERROR_FAILURE);
return NS_OK;
@@ -242,7 +232,7 @@ EphyBrowser::AttachListeners(void)
nsCOMPtr<nsIDOMEventTarget> target;
target = do_QueryInterface (mEventReceiver);
- rv = target->AddEventListener(NS_LITERAL_STRING("DOMLinkAdded"),
+ rv = target->AddEventListener(nsEmbedString(DOMLinkAdded),
mFaviconEventListener, PR_FALSE);
NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
@@ -260,7 +250,7 @@ EphyBrowser::DetachListeners(void)
target = do_QueryInterface (mEventReceiver);
NS_ENSURE_TRUE (target, NS_ERROR_FAILURE);
- rv = target->RemoveEventListener(NS_LITERAL_STRING("DOMLinkAdded"),
+ rv = target->RemoveEventListener(nsEmbedString(DOMLinkAdded),
mFaviconEventListener, PR_FALSE);
NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
@@ -381,68 +371,18 @@ nsresult EphyBrowser::GoToHistoryIndex (PRInt16 index)
return ContentNav->GotoIndex (index);
}
-nsresult EphyBrowser::SetZoom (float aZoom, PRBool reflow)
+nsresult EphyBrowser::SetZoom (float aZoom)
{
NS_ENSURE_TRUE (mWebBrowser, NS_ERROR_FAILURE);
- if (reflow)
- {
- nsCOMPtr<nsIContentViewer> contentViewer;
- GetContentViewer (getter_AddRefs(contentViewer));
- NS_ENSURE_TRUE (contentViewer, NS_ERROR_FAILURE);
-
- nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer);
- NS_ENSURE_TRUE (mdv, NS_ERROR_FAILURE);
-
- return mdv->SetTextZoom (aZoom);
- }
- else
- {
- nsCOMPtr<nsIDocShell> DocShell;
- DocShell = do_GetInterface (mWebBrowser);
- NS_ENSURE_TRUE (DocShell, NS_ERROR_FAILURE);
-
- SetZoomOnDocshell (aZoom, DocShell);
-
- nsCOMPtr<nsIDocShellTreeNode> docShellNode(do_QueryInterface(DocShell));
- if (docShellNode)
- {
- PRInt32 i;
- PRInt32 n;
- docShellNode->GetChildCount(&n);
- for (i=0; i < n; i++)
- {
- nsCOMPtr<nsIDocShellTreeItem> child;
- docShellNode->GetChildAt(i, getter_AddRefs(child));
- nsCOMPtr<nsIDocShell> childAsShell(do_QueryInterface(child));
- if (childAsShell)
- {
- return SetZoomOnDocshell (aZoom, childAsShell);
- }
- }
- }
- }
-
- return NS_OK;
-}
-
-nsresult EphyBrowser::SetZoomOnDocshell (float aZoom, nsIDocShell *DocShell)
-{
- nsCOMPtr<nsIPresContext> PresContext;
- DocShell->GetPresContext (getter_AddRefs(PresContext));
- NS_ENSURE_TRUE (PresContext, NS_ERROR_FAILURE);
+ nsCOMPtr<nsIContentViewer> contentViewer;
+ GetContentViewer (getter_AddRefs(contentViewer));
+ NS_ENSURE_TRUE (contentViewer, NS_ERROR_FAILURE);
-#if MOZILLA_SNAPSHOT > 13
- nsIDeviceContext *DeviceContext;
- DeviceContext = PresContext->DeviceContext();
- NS_ENSURE_TRUE (DeviceContext, NS_ERROR_FAILURE);
-#else
- nsCOMPtr<nsIDeviceContext> DeviceContext;
- PresContext->GetDeviceContext (getter_AddRefs(DeviceContext));
- NS_ENSURE_TRUE (DeviceContext, NS_ERROR_FAILURE);
-#endif
+ nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer);
+ NS_ENSURE_TRUE (mdv, NS_ERROR_FAILURE);
- return DeviceContext->SetTextZoom (aZoom);
+ return mdv->SetTextZoom (aZoom);
}
nsresult EphyBrowser::GetContentViewer (nsIContentViewer **aViewer)
@@ -540,7 +480,7 @@ nsresult EphyBrowser::GetSHTitleAtIndex (PRInt32 index, PRUnichar **title)
return NS_OK;
}
-nsresult EphyBrowser::GetSHUrlAtIndex (PRInt32 index, nsCString &url)
+nsresult EphyBrowser::GetSHUrlAtIndex (PRInt32 index, nsACString &url)
{
NS_ENSURE_TRUE (mWebBrowser, NS_ERROR_FAILURE);
@@ -559,7 +499,7 @@ nsresult EphyBrowser::GetSHUrlAtIndex (PRInt32 index, nsCString &url)
nsresult result;
result = uri->GetSpec(url);
- NS_ENSURE_TRUE (NS_SUCCEEDED (result) && !url.IsEmpty(), NS_ERROR_FAILURE);
+ NS_ENSURE_TRUE (NS_SUCCEEDED (result) && url.Length(), NS_ERROR_FAILURE);
return NS_OK;
}
@@ -608,50 +548,48 @@ nsresult EphyBrowser::GetPageDescriptor(nsISupports **aPageDescriptor)
return NS_OK;
}
-nsresult EphyBrowser::GetDocumentUrl (nsCString &url)
+nsresult EphyBrowser::GetDocumentUrl (nsACString &url)
{
+ nsresult rv;
+
NS_ENSURE_TRUE (mDOMWindow, NS_ERROR_FAILURE);
nsCOMPtr<nsIDOMDocument> DOMDocument;
mDOMWindow->GetDocument (getter_AddRefs(DOMDocument));
NS_ENSURE_TRUE (DOMDocument, NS_ERROR_FAILURE);
- nsCOMPtr<nsIDocument> doc = do_QueryInterface(DOMDocument);
+ nsCOMPtr<nsIDOM3Document> doc = do_QueryInterface(DOMDocument);
NS_ENSURE_TRUE (doc, NS_ERROR_FAILURE);
-#if MOZILLA_SNAPSHOT > 13
- nsIURI *uri;
- uri = doc->GetDocumentURI ();
-#elif MOZILLA_SNAPSHOT > 11
- nsIURI *uri;
- uri = doc->GetDocumentURL ();
-#endif
- NS_ENSURE_TRUE (uri, NS_ERROR_FAILURE);
+ nsEmbedString docURI;
+ rv = doc->GetDocumentURI (docURI);
+ NS_ENSURE_SUCCESS (rv, rv);
- return uri->GetSpec (url);
+ NS_UTF16ToCString (docURI, NS_CSTRING_ENCODING_UTF8, url);
+
+ return NS_OK;
}
-nsresult EphyBrowser::GetTargetDocumentUrl (nsCString &url)
+nsresult EphyBrowser::GetTargetDocumentUrl (nsACString &url)
{
+ nsresult rv;
+
NS_ENSURE_TRUE (mWebBrowser, NS_ERROR_FAILURE);
nsCOMPtr<nsIDOMDocument> DOMDocument;
GetTargetDocument (getter_AddRefs(DOMDocument));
NS_ENSURE_TRUE (DOMDocument, NS_ERROR_FAILURE);
- nsCOMPtr<nsIDocument> doc = do_QueryInterface(DOMDocument);
+ nsCOMPtr<nsIDOM3Document> doc = do_QueryInterface(DOMDocument);
NS_ENSURE_TRUE (doc, NS_ERROR_FAILURE);
-#if MOZILLA_SNAPSHOT > 13
- nsIURI *uri;
- uri = doc->GetDocumentURI ();
-#elif MOZILLA_SNAPSHOT > 11
- nsIURI *uri;
- uri = doc->GetDocumentURL ();
-#endif
- NS_ENSURE_TRUE (uri, NS_ERROR_FAILURE);
+ nsEmbedString docURI;
+ rv = doc->GetDocumentURI (docURI);
+ NS_ENSURE_SUCCESS (rv, rv);
- return uri->GetSpec (url);
+ NS_UTF16ToCString (docURI, NS_CSTRING_ENCODING_UTF8, url);
+
+ return NS_OK;
}
nsresult EphyBrowser::ForceEncoding (const char *encoding)
@@ -665,22 +603,20 @@ nsresult EphyBrowser::ForceEncoding (const char *encoding)
nsCOMPtr<nsIMarkupDocumentViewer> mdv = do_QueryInterface(contentViewer);
NS_ENSURE_TRUE (mdv, NS_ERROR_FAILURE);
- return mdv->SetForceCharacterSet (nsDependentCString(encoding));
+ return mdv->SetForceCharacterSet (nsEmbedCString(encoding));
}
nsresult EphyBrowser::GetEncoding (nsACString &encoding)
{
NS_ENSURE_TRUE (mWebBrowser, NS_ERROR_FAILURE);
- nsCOMPtr<nsIDOMDocument> domDoc;
- GetTargetDocument (getter_AddRefs(domDoc));
- NS_ENSURE_TRUE (domDoc, NS_ERROR_FAILURE);
-
- nsCOMPtr<nsIDocument> doc = do_QueryInterface(domDoc);
- NS_ENSURE_TRUE (doc, NS_ERROR_FAILURE);
+ nsCOMPtr<nsIDocCharset> docCharset = do_GetInterface (mWebBrowser);
+ NS_ENSURE_TRUE (docCharset, NS_ERROR_FAILURE);
- encoding = doc->GetDocumentCharacterSet ();
- NS_ENSURE_TRUE (!encoding.IsEmpty(), NS_ERROR_FAILURE);
+ char *charset;
+ docCharset->GetCharset (&charset);
+ encoding = charset;
+ nsMemory::Free (charset);
return NS_OK;
}
@@ -740,6 +676,29 @@ nsresult EphyBrowser::GetCommandState (const char *command, PRBool *enabled)
#define NUM_MODIFIED_TEXTFIELDS_REQUIRED 2
+PRBool
+EphyBrowser::CompareFormsText (nsAString &aDefaultText, nsAString &aUserText)
+{
+ if (aDefaultText.Length() != aUserText.Length())
+ {
+ return FALSE;
+ }
+
+ /* Mozilla Bug 218277, 195946 and others */
+ const PRUnichar *text = aDefaultText.BeginReading();
+ for (PRUint32 i = 0; i < aDefaultText.Length(); i++)
+ {
+ if (text[i] == 0xa0)
+ {
+ aDefaultText.Replace (i, 1, ' ');
+ }
+ }
+
+ return (memcmp (aDefaultText.BeginReading(),
+ aUserText.BeginReading(),
+ aUserText.Length() * sizeof (PRUnichar)) == 0);
+}
+
nsresult EphyBrowser::GetDocumentHasModifiedForms (nsIDOMDocument *aDomDoc, PRUint32 *aNumTextFields, PRBool *aHasTextArea)
{
nsCOMPtr<nsIDOMHTMLDocument> htmlDoc = do_QueryInterface(aDomDoc);
@@ -780,14 +739,11 @@ nsresult EphyBrowser::GetDocumentHasModifiedForms (nsIDOMDocument *aDomDoc, PRUi
nsCOMPtr<nsIDOMHTMLTextAreaElement> areaElement = do_QueryInterface (domNode);
if (areaElement)
{
- nsAutoString default_text, user_text;
- areaElement->GetDefaultValue (default_text);
- areaElement->GetValue (user_text);
+ nsEmbedString defaultText, userText;
+ areaElement->GetDefaultValue (defaultText);
+ areaElement->GetValue (userText);
- /* Mozilla Bug 218277, 195946 and others */
- default_text.ReplaceChar(0xa0, ' ');
-
- if (!user_text.Equals (default_text))
+ if (!CompareFormsText (defaultText, userText))
{
*aHasTextArea = PR_TRUE;
return NS_OK;
@@ -799,31 +755,31 @@ nsresult EphyBrowser::GetDocumentHasModifiedForms (nsIDOMDocument *aDomDoc, PRUi
nsCOMPtr<nsIDOMHTMLInputElement> inputElement = do_QueryInterface(domNode);
if (!inputElement) continue;
- nsAutoString type;
+ nsEmbedString type;
inputElement->GetType(type);
- if (type.EqualsIgnoreCase("text"))
+ nsEmbedCString cType;
+ NS_UTF16ToCString (type, NS_CSTRING_ENCODING_UTF8, cType);
+
+ if (g_ascii_strcasecmp (cType.get(), "text") == 0)
{
- nsAutoString default_text, user_text;
+ nsEmbedString defaultText, userText;
PRInt32 max_length;
- inputElement->GetDefaultValue (default_text);
- inputElement->GetValue (user_text);
+ inputElement->GetDefaultValue (defaultText);
+ inputElement->GetValue (userText);
inputElement->GetMaxLength (&max_length);
/* Guard against arguably broken forms where
- * default_text is longer than maxlength
- * (user_text is cropped, default_text is not)
+ * defaultText is longer than maxlength
+ * (userText is cropped, defaultText is not)
* Mozilla bug 232057
*/
- if (default_text.Length() > (PRUint32)max_length)
+ if (defaultText.Length() > (PRUint32)max_length)
{
- default_text.Truncate (max_length);
+ defaultText.Cut (max_length, PR_UINT32_MAX);
}
- /* Mozilla Bug 218277, 195946 and others */
- default_text.ReplaceChar(0xa0, ' ');
-
- if (!user_text.Equals (default_text))
+ if (!CompareFormsText (defaultText, userText))
{
(*aNumTextFields)++;
if (*aNumTextFields >= NUM_MODIFIED_TEXTFIELDS_REQUIRED)
diff --git a/embed/mozilla/EphyBrowser.h b/embed/mozilla/EphyBrowser.h
index f244fc60b..d8a6300bb 100644
--- a/embed/mozilla/EphyBrowser.h
+++ b/embed/mozilla/EphyBrowser.h
@@ -34,10 +34,6 @@
#include <nsIDOMWindow.h>
#include <nsIPrintSettings.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include "nsString.h"
-#endif
-
#ifdef ALLOW_PRIVATE_API
#include <nsIDocShell.h>
#include <nsIDOMEventReceiver.h>
@@ -82,7 +78,7 @@ public:
nsresult DoCommand (const char *command);
nsresult GetCommandState (const char *command, PRBool *enabled);
- nsresult SetZoom (float aTextZoom, PRBool reflow);
+ nsresult SetZoom (float aTextZoom);
nsresult GetZoom (float *aTextZoom);
nsresult Print (nsIPrintSettings *options, PRBool preview);
@@ -101,7 +97,7 @@ public:
nsresult GetSHInfo (PRInt32 *count, PRInt32 *index);
nsresult GetSHTitleAtIndex (PRInt32 index, PRUnichar **title);
- nsresult GetSHUrlAtIndex (PRInt32 index, nsCString &url);
+ nsresult GetSHUrlAtIndex (PRInt32 index, nsACString &url);
nsresult GoToHistoryIndex (PRInt16 index);
nsresult ForceEncoding (const char *encoding);
@@ -113,8 +109,8 @@ public:
nsresult GetDocument (nsIDOMDocument **aDOMDocument);
nsresult GetTargetDocument (nsIDOMDocument **aDOMDocument);
- nsresult GetDocumentUrl (nsCString &url);
- nsresult GetTargetDocumentUrl (nsCString &url);
+ nsresult GetDocumentUrl (nsACString &url);
+ nsresult GetTargetDocumentUrl (nsACString &url);
nsresult GetHasModifiedForms (PRBool *modified);
@@ -130,10 +126,10 @@ private:
nsresult GetListener (void);
nsresult AttachListeners (void);
nsresult DetachListeners (void);
- nsresult SetZoomOnDocshell (float aZoom, nsIDocShell *DocShell);
nsresult GetSHistory (nsISHistory **aSHistory);
nsresult GetContentViewer (nsIContentViewer **aViewer);
nsresult GetDocumentHasModifiedForms (nsIDOMDocument *aDomDoc, PRUint32 *aNumTextFields, PRBool *aHasTextArea);
+ PRBool CompareFormsText (nsAString &aDefaultText, nsAString &aUserText);
};
#endif
diff --git a/embed/mozilla/EphyContentPolicy.cpp b/embed/mozilla/EphyContentPolicy.cpp
index 31d4610bf..b4dbfe632 100644
--- a/embed/mozilla/EphyContentPolicy.cpp
+++ b/embed/mozilla/EphyContentPolicy.cpp
@@ -25,15 +25,14 @@
#include "EphyContentPolicy.h"
+#include "mozilla-version.h"
+
#include "eel-gconf-extensions.h"
#include "ephy-debug.h"
#include <nsCOMPtr.h>
#include <nsIURI.h>
-
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#endif
+#include <nsEmbedString.h>
#define CONF_LOCKDOWN_DISABLE_UNSAFE_PROTOCOLS "/apps/epiphany/lockdown/disable_unsafe_protocols"
#define CONF_LOCKDOWN_ADDITIONAL_SAFE_PROTOCOLS "/apps/epiphany/lockdown/additional_safe_protocols"
@@ -60,7 +59,7 @@ EphyContentPolicy::~EphyContentPolicy()
g_slist_free (mSafeProtocols);
}
-#if MOZILLA_SNAPSHOT >= 18
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
NS_IMETHODIMP
EphyContentPolicy::ShouldLoad(PRUint32 aContentType,
nsIURI *aContentLocation,
@@ -78,10 +77,10 @@ EphyContentPolicy::ShouldLoad(PRUint32 aContentType,
NS_ENSURE_TRUE (aContentLocation, NS_ERROR_FAILURE);
- nsCAutoString scheme;
+ nsEmbedCString scheme;
aContentLocation->GetScheme (scheme);
- nsCAutoString spec;
+ nsEmbedCString spec;
aContentLocation->GetSpec (spec);
LOG ("ShouldLoad type=%d location=%s (scheme %s)", aContentType, spec.get(), scheme.get())
@@ -90,7 +89,7 @@ EphyContentPolicy::ShouldLoad(PRUint32 aContentType,
/* Allow the load if the protocol is in safe list, or it's about:blank */
if (g_slist_find_custom (mSafeProtocols, scheme.get(), (GCompareFunc) strcmp)
- || spec.Equals ("about:blank"))
+ || strcmp (spec.get(), "about:blank") == 0)
{
*aDecision = nsIContentPolicy::ACCEPT;
}
@@ -128,17 +127,17 @@ NS_IMETHODIMP EphyContentPolicy::ShouldLoad(PRInt32 contentType,
return NS_OK;
}
- nsCAutoString scheme;
+ nsEmbedCString scheme;
contentLocation->GetScheme (scheme);
- nsCAutoString spec;
+ nsEmbedCString spec;
contentLocation->GetSpec (spec);
*_retval = PR_FALSE;
/* Allow the load if the protocol is in safe list, or it's about:blank */
if (g_slist_find_custom (mSafeProtocols, scheme.get(), (GCompareFunc) strcmp)
- || spec.Equals ("about:blank"))
+ || strcmp (spec.get(), "about:blank") == 0)
{
*_retval = PR_TRUE;
}
@@ -159,4 +158,5 @@ NS_IMETHODIMP EphyContentPolicy::ShouldProcess(PRInt32 contentType,
*_retval = PR_TRUE;
return NS_OK;
}
-#endif /* MOZILLA_SNAPSHOT >= 18 */
+#endif /* MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1) */
+
diff --git a/embed/mozilla/EphyHeaderSniffer.cpp b/embed/mozilla/EphyHeaderSniffer.cpp
index c4be6e98f..e455f80b9 100644
--- a/embed/mozilla/EphyHeaderSniffer.cpp
+++ b/embed/mozilla/EphyHeaderSniffer.cpp
@@ -69,10 +69,6 @@
#include <nsIMIMEHeaderParam.h>
#include <nsIWindowWatcher.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsReadableUtils.h>
-#endif
-
EphyHeaderSniffer::EphyHeaderSniffer (nsIWebBrowserPersist* aPersist, MozillaEmbedPersist *aEmbedPersist,
nsIFile* aFile, nsIURI* aURL, nsIDOMDocument* aDocument, nsIInputStream* aPostData)
: mPersist(aPersist)
@@ -104,7 +100,7 @@ EphyHeaderSniffer::HandleContent ()
{
EphyEmbedSingle *single;
gboolean handled = FALSE;
- nsCString uriSpec;
+ nsEmbedCString uriSpec;
if (mPostData) return NS_ERROR_FAILURE;
@@ -138,7 +134,7 @@ EphyHeaderSniffer::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aReq
nsCOMPtr<nsIHttpChannel> httpChannel(do_QueryInterface(channel));
if (httpChannel)
{
- httpChannel->GetResponseHeader(nsCAutoString("content-disposition"),
+ httpChannel->GetResponseHeader(nsEmbedCString("content-disposition"),
mContentDisposition);
}
@@ -218,7 +214,7 @@ filechooser_response_cb (EphyFileChooser *dialog, gint response, EphyHeaderSniff
nsCOMPtr<nsILocalFile> destFile = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID);
if (destFile)
{
- destFile->InitWithNativePath (nsDependentCString (filename));
+ destFile->InitWithNativePath (nsEmbedCString (filename));
sniffer->InitiateDownload (destFile);
}
@@ -242,9 +238,9 @@ nsresult EphyHeaderSniffer::PerformSave (nsIURI* inOriginalURI)
flags = ephy_embed_persist_get_flags (EPHY_EMBED_PERSIST (mEmbedPersist));
askDownloadDest = flags & EMBED_PERSIST_ASK_DESTINATION;
- nsAutoString defaultFileName;
+ nsEmbedString defaultFileName;
- if (defaultFileName.IsEmpty() && !mContentDisposition.IsEmpty())
+ if (!defaultFileName.Length() && mContentDisposition.Length())
{
/* 1 Use the HTTP header suggestion. */
nsCOMPtr<nsIMIMEHeaderParam> mimehdrpar =
@@ -252,45 +248,46 @@ nsresult EphyHeaderSniffer::PerformSave (nsIURI* inOriginalURI)
if (mimehdrpar)
{
- nsCAutoString fallbackCharset;
+ nsEmbedCString fallbackCharset;
if (mURL)
{
mURL->GetOriginCharset(fallbackCharset);
}
- nsAutoString fileName;
+ nsEmbedString fileName;
rv = mimehdrpar->GetParameter (mContentDisposition, "filename",
fallbackCharset, PR_TRUE, nsnull,
fileName);
- if (NS_FAILED(rv) || fileName.IsEmpty())
+ if (NS_FAILED(rv) || !fileName.Length())
{
rv = mimehdrpar->GetParameter (mContentDisposition, "name",
fallbackCharset, PR_TRUE, nsnull,
fileName);
}
- if (NS_SUCCEEDED(rv) && !fileName.IsEmpty())
+ if (NS_SUCCEEDED(rv) && fileName.Length())
{
defaultFileName = fileName;
}
}
}
- if (defaultFileName.IsEmpty())
+ if (!defaultFileName.Length())
{
/* 2 For file URLs, use the file name. */
nsCOMPtr<nsIURL> url(do_QueryInterface(mURL));
if (url)
{
- nsCAutoString fileNameCString;
+ nsEmbedCString fileNameCString;
url->GetFileName(fileNameCString);
- CopyUTF8toUTF16 (fileNameCString, defaultFileName);
+ NS_CStringToUTF16 (fileNameCString, NS_CSTRING_ENCODING_UTF8,
+ defaultFileName);
}
}
- if (defaultFileName.IsEmpty() && mDocument)
+ if (!defaultFileName.Length() && mDocument)
{
/* 3 Use the title of the document. */
@@ -301,22 +298,27 @@ nsresult EphyHeaderSniffer::PerformSave (nsIURI* inOriginalURI)
}
}
- if (defaultFileName.IsEmpty() && mURL)
+ if (!defaultFileName.Length() && mURL)
{
/* 4 Use the host. */
- nsCAutoString hostName;
+ nsEmbedCString hostName;
mURL->GetHost(hostName);
- CopyUTF8toUTF16 (hostName, defaultFileName);
+ NS_CStringToUTF16 (hostName, NS_CSTRING_ENCODING_UTF8,
+ defaultFileName);
}
/* 5 One last case to handle about:blank and other untitled pages. */
- if (defaultFileName.IsEmpty())
+ if (!defaultFileName.Length())
{
- CopyUTF8toUTF16 (_("Untitled"), defaultFileName);
+ NS_CStringToUTF16 (nsEmbedCString(_("Untitled")),
+ NS_CSTRING_ENCODING_UTF8, defaultFileName);
}
/* Validate the file name to ensure legality. */
- char *default_name = g_strdup (NS_ConvertUTF16toUTF8 (defaultFileName).get());
+ nsEmbedCString cDefaultFileName;
+ NS_UTF16ToCString (defaultFileName, NS_CSTRING_ENCODING_UTF8,
+ cDefaultFileName);
+ char *default_name = g_strdup (cDefaultFileName.get());
default_name = g_strdelimit (default_name, "/", ' ');
const char *key;
diff --git a/embed/mozilla/EphyHeaderSniffer.h b/embed/mozilla/EphyHeaderSniffer.h
index 5cef29168..4aa7d1fa8 100644
--- a/embed/mozilla/EphyHeaderSniffer.h
+++ b/embed/mozilla/EphyHeaderSniffer.h
@@ -49,10 +49,7 @@
#include <nsIDOMDocument.h>
#include <nsIAuthPrompt.h>
#include <nsIPromptService.h>
-
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#endif
+#include <nsEmbedString.h>
class EphyHeaderSniffer : public nsIWebProgressListener,
public nsIAuthPrompt
@@ -81,8 +78,8 @@ private:
nsCOMPtr<nsIURI> mOriginalURI;
nsCOMPtr<nsIDOMDocument> mDocument;
nsCOMPtr<nsIInputStream> mPostData;
- nsCString mContentType;
- nsCString mContentDisposition;
+ nsEmbedCString mContentType;
+ nsEmbedCString mContentDisposition;
nsCOMPtr<nsIAuthPrompt> mAuthPrompt;
};
diff --git a/embed/mozilla/EphySingle.cpp b/embed/mozilla/EphySingle.cpp
index 939cc2fd9..1a3791b43 100644
--- a/embed/mozilla/EphySingle.cpp
+++ b/embed/mozilla/EphySingle.cpp
@@ -27,16 +27,13 @@
#include "ephy-debug.h"
+#include <nsEmbedString.h>
#include <nsIURI.h>
#include <nsIPermissionManager.h>
#include <nsICookieManager.h>
#include <nsIServiceManager.h>
#include <nsICookie2.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#endif
-
NS_IMPL_ISUPPORTS1(EphySingle, nsIObserver)
EphySingle::EphySingle()
@@ -165,7 +162,7 @@ NS_IMETHODIMP EphySingle::Observe(nsISupports *aSubject,
nsCOMPtr<nsIURI> uri = do_QueryInterface (aSubject);
if (uri)
{
- nsCAutoString spec;
+ nsEmbedCString spec;
uri->GetSpec (spec);
g_signal_emit_by_name (EPHY_COOKIE_MANAGER (mOwner), "cookie-rejected", spec.get());
@@ -219,7 +216,7 @@ mozilla_cookie_to_ephy_cookie (nsICookie *cookie)
{
EphyCookie *info = ephy_cookie_new ();
- nsCAutoString transfer;
+ nsEmbedCString transfer;
cookie->GetHost (transfer);
info->domain = g_strdup (transfer.get());
@@ -269,19 +266,19 @@ mozilla_permission_to_ephy_permission (nsIPermission *perm)
EphyPermissionType type = (EphyPermissionType) 0;
nsresult result;
- nsCAutoString str;
+ nsEmbedCString str;
result = perm->GetType(str);
NS_ENSURE_SUCCESS (result, NULL);
- if (str.Equals ("cookie"))
+ if (strcmp (str.get(), "cookie") == 0)
{
type = EPT_COOKIE;
}
- else if (str.Equals ("image"))
+ else if (strcmp (str.get(), "image"))
{
type = EPT_IMAGE;
}
- else if (str.Equals ("popup"))
+ else if (strcmp (str.get(), "popup"))
{
type = EPT_POPUP;
}
@@ -303,7 +300,7 @@ mozilla_permission_to_ephy_permission (nsIPermission *perm)
break;
}
- nsCString host;
+ nsEmbedCString host;
perm->GetHost(host);
return ephy_permission_info_new (host.get(), type, permission);
diff --git a/embed/mozilla/EphyUtils.cpp b/embed/mozilla/EphyUtils.cpp
new file mode 100644
index 000000000..aae874091
--- /dev/null
+++ b/embed/mozilla/EphyUtils.cpp
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2004 Marco Pesenti Gritti
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#include "EphyUtils.h"
+
+#include <nsIServiceManager.h>
+#include <nsEmbedString.h>
+
+nsresult
+EphyUtils::GetIOService (nsIIOService **ioService)
+{
+ nsresult rv;
+
+ nsCOMPtr<nsIServiceManager> mgr;
+ NS_GetServiceManager (getter_AddRefs (mgr));
+ if (!mgr) return NS_ERROR_FAILURE;
+
+ rv = mgr->GetServiceByContractID ("@mozilla.org/network/io-service;1",
+ NS_GET_IID (nsIIOService),
+ (void **)ioService);
+ return rv;
+}
+
+nsresult EphyUtils::NewURI (nsIURI **result, const nsAString &spec)
+{
+ nsEmbedCString cSpec;
+ NS_UTF16ToCString (spec, NS_CSTRING_ENCODING_UTF8, cSpec);
+
+ return NewURI (result, cSpec);
+}
+
+nsresult EphyUtils::NewURI (nsIURI **result, const nsACString &spec)
+{
+ nsresult rv;
+
+ nsCOMPtr<nsIIOService> ioService;
+ rv = EphyUtils::GetIOService (getter_AddRefs (ioService));
+ NS_ENSURE_SUCCESS (rv, rv);
+
+ rv = ioService->NewURI (spec, nsnull, nsnull, result);
+
+ return rv;
+}
diff --git a/embed/mozilla/EphyUtils.h b/embed/mozilla/EphyUtils.h
new file mode 100644
index 000000000..0fcbe488a
--- /dev/null
+++ b/embed/mozilla/EphyUtils.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2004 Marco Pesenti Gritti
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ */
+
+#ifndef EPHY_UTILS_H
+#define EPHY_UTILS_H
+
+#include <nsIIOService.h>
+#include <nsIURI.h>
+
+namespace EphyUtils
+{
+ nsresult GetIOService (nsIIOService **ioService);
+
+ nsresult NewURI (nsIURI **result, const nsAString &spec);
+
+ nsresult NewURI (nsIURI **result, const nsACString &spec);
+}
+
+#endif
diff --git a/embed/mozilla/EventContext.cpp b/embed/mozilla/EventContext.cpp
index d62039f31..1ad257010 100644
--- a/embed/mozilla/EventContext.cpp
+++ b/embed/mozilla/EventContext.cpp
@@ -24,10 +24,12 @@
#endif
#include "EventContext.h"
+#include "EphyUtils.h"
#include <gdk/gdkkeysyms.h>
#include <nsIInterfaceRequestor.h>
+#include <nsEmbedString.h>
#include <nsIDOMEventTarget.h>
#include <nsIDOMHTMLInputElement.h>
#include <nsIDOMHTMLObjectElement.h>
@@ -41,6 +43,8 @@
#include <nsIDOMHTMLTextAreaElement.h>
#include <nsIDOMElementCSSInlineStyle.h>
#include <nsIDOMCSSStyleDeclaration.h>
+#include <nsIDOM3Node.h>
+#include <nsIDOMCSSPrimitiveValue.h>
#ifdef ALLOW_PRIVATE_API
#include <nsIDOMXULDocument.h>
@@ -48,13 +52,6 @@
#include <nsIDOMNSHTMLElement.h>
#endif
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsIDocument.h>
-#include <nsReadableUtils.h>
-#include <nsNetUtil.h>
-#endif
-
-
#define KEY_CODE 256
EventContext::EventContext ()
@@ -73,9 +70,9 @@ nsresult EventContext::Init (EphyBrowser *browser)
return NS_OK;
}
-nsresult EventContext::GatherTextUnder (nsIDOMNode* aNode, nsString& aResult)
+nsresult EventContext::GatherTextUnder (nsIDOMNode* aNode, nsAString& aResult)
{
- nsAutoString text;
+ nsEmbedString text;
nsCOMPtr<nsIDOMNode> node;
aNode->GetFirstChild(getter_AddRefs(node));
PRUint32 depth = 1;
@@ -89,8 +86,8 @@ nsresult EventContext::GatherTextUnder (nsIDOMNode* aNode, nsString& aResult)
if (charData && nodeType == nsIDOMNode::TEXT_NODE)
{
/* Add this text to our collection. */
- text += NS_LITERAL_STRING(" ");
- nsAutoString data;
+ text += ' ';
+ nsEmbedString data;
charData->GetData(data);
text += data;
}
@@ -99,9 +96,9 @@ nsresult EventContext::GatherTextUnder (nsIDOMNode* aNode, nsString& aResult)
nsCOMPtr<nsIDOMHTMLImageElement> img(do_QueryInterface(node));
if (img)
{
- nsAutoString altText;
+ nsEmbedString altText;
img->GetAlt(altText);
- if (!altText.IsEmpty())
+ if (altText.Length())
{
text = altText;
break;
@@ -145,40 +142,29 @@ nsresult EventContext::GatherTextUnder (nsIDOMNode* aNode, nsString& aResult)
}
}
- text.CompressWhitespace();
+ /* FIXME we should trim spaces here */
+
aResult = text;
return NS_OK;
}
-nsresult EventContext::ResolveBaseURL (nsIDocument *doc, const nsAString &relurl, nsACString &url)
+nsresult EventContext::ResolveBaseURL (const nsAString &relurl, nsACString &url)
{
-#if MOZILLA_SNAPSHOT > 13
- nsIURI *base;
- base = doc->GetBaseURI ();
- if (!base) return NS_ERROR_FAILURE;
-#elif MOZILLA_SNAPSHOT > 11
- nsIURI *base;
- base = doc->GetBaseURL ();
- if (!base) return NS_ERROR_FAILURE;
-#endif
+ nsresult rv;
- return base->Resolve (NS_ConvertUTF16toUTF8(relurl), url);
-}
+ nsCOMPtr<nsIDOM3Node> node(do_QueryInterface (mDOMDocument));
+ nsEmbedString spec;
+ node->GetBaseURI (spec);
-nsresult EventContext::ResolveDocumentURL (nsIDocument *doc, const nsAString &relurl, nsACString &url)
-{
-#if MOZILLA_SNAPSHOT > 13
- nsIURI *uri;
- uri = doc->GetDocumentURI ();
- if (!uri) return NS_ERROR_FAILURE;
-#elif MOZILLA_SNAPSHOT > 11
- nsIURI *uri;
- uri = doc->GetDocumentURL ();
- if (!uri) return NS_ERROR_FAILURE;
-#endif
+ nsCOMPtr<nsIURI> base;
+ rv = EphyUtils::NewURI (getter_AddRefs(base), spec);
+ if (!base) return NS_ERROR_FAILURE;
+
+ nsEmbedCString cRelURL;
+ NS_UTF16ToCString (relurl, NS_CSTRING_ENCODING_UTF8, cRelURL);
- return uri->Resolve (NS_ConvertUTF16toUTF8(relurl), url);
+ return base->Resolve (cRelURL, url);
}
nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
@@ -186,6 +172,15 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
{
nsresult rv;
+ const PRUnichar bgLiteral[] = {'b', 'a', 'c', 'k', 'g', 'r', 'o', 'u',
+ 'n', 'd', '\0'};
+ const PRUnichar hrefLiteral[] = {'h', 'r', 'e', 'f', '\0'};
+ const PRUnichar typeLiteral[] = {'t', 'y', 'p', 'e', '\0'};
+ const PRUnichar xlinknsLiteral[] = {'h', 't', 't', 'p', ':', '/', '/','w',
+ 'w', 'w', '.', 'w', '3', '.', 'o', 'r',
+ 'g', '/', '1', '9', '9', '9', '/', 'x',
+ 'l', 'i', 'n', 'k', '\0'};
+
mEmbedEvent = info;
info->context = EMBED_CONTEXT_DOCUMENT;
@@ -205,9 +200,6 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
mDOMDocument = domDoc;
- nsCOMPtr<nsIDocument> doc = do_QueryInterface(domDoc, &rv);
- if (NS_FAILED(rv) || !doc) return NS_ERROR_FAILURE;
-
nsCOMPtr<nsIDOMXULDocument> xul_document = do_QueryInterface(domDoc);
if (xul_document)
{
@@ -225,15 +217,18 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
nsCOMPtr<nsIDOMHTMLElement> element = do_QueryInterface(node);
if ((nsIDOMNode::ELEMENT_NODE == type) && element)
{
- nsAutoString tag;
- rv = element->GetTagName(tag);
+ nsEmbedString uTag;
+ rv = element->GetTagName(uTag);
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
- if (tag.EqualsIgnoreCase("img"))
+ nsEmbedCString tag;
+ NS_UTF16ToCString (uTag, NS_CSTRING_ENCODING_UTF8, tag);
+
+ if (g_ascii_strcasecmp (tag.get(), "img") == 0)
{
info->context |= EMBED_CONTEXT_IMAGE;
- nsAutoString img;
+ nsEmbedString img;
nsCOMPtr <nsIDOMHTMLImageElement> image =
do_QueryInterface(node, &rv);
if (NS_FAILED(rv) || !image) return NS_ERROR_FAILURE;
@@ -241,98 +236,73 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
rv = image->GetSrc (img);
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
SetStringProperty ("image", img);
-
- rv = image->GetAlt (img);
- if (NS_SUCCEEDED(rv))
- {
- SetStringProperty ("image_alt", img);
- }
-
- rv = image->GetLongDesc (img);
- if (NS_SUCCEEDED(rv) && !img.IsEmpty())
- {
- nsCAutoString imglongdesc;
- rv = ResolveDocumentURL (doc, img, imglongdesc);
-
- SetStringProperty ("image_long_desc",
- NS_ConvertUTF8toUTF16(imglongdesc));
- }
-
- int imgwidth, imgheight;
- rv = image->GetWidth (&imgwidth);
- rv = image->GetHeight (&imgheight);
- SetIntProperty ("image_width", imgwidth);
- SetIntProperty ("image_height", imgheight);
-
- rv = element->GetTitle (img);
- if (NS_SUCCEEDED(rv))
- {
- SetStringProperty ("image_title",
- img);
- }
}
- else if (tag.EqualsIgnoreCase("input"))
+ else if (g_ascii_strcasecmp (tag.get(), "input") == 0)
{
nsCOMPtr<nsIDOMElement> element;
element = do_QueryInterface (node);
if (!element) return NS_ERROR_FAILURE;
- NS_NAMED_LITERAL_STRING(attr, "type");
- nsAutoString value;
- element->GetAttribute (attr, value);
+ nsEmbedString uValue;
+ element->GetAttribute (nsEmbedString(typeLiteral), uValue);
+
+ nsEmbedCString value;
+ NS_UTF16ToCString (uValue, NS_CSTRING_ENCODING_UTF8, value);
- if (value.EqualsIgnoreCase("image"))
+ if (g_ascii_strcasecmp (value.get(), "image") == 0)
{
info->context |= EMBED_CONTEXT_IMAGE;
nsCOMPtr<nsIDOMHTMLInputElement> input;
input = do_QueryInterface (node);
if (!input) return NS_ERROR_FAILURE;
- nsAutoString img;
+ nsEmbedString img;
rv = input->GetSrc (img);
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
- nsCAutoString cImg;
- rv = ResolveDocumentURL (doc, img, cImg);
+ nsEmbedCString cImg;
+ rv = ResolveBaseURL (img, cImg);
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
- SetStringProperty ("image",
- NS_ConvertUTF8toUTF16(cImg));
+ SetStringProperty ("image", cImg.get());
}
- else if (!value.EqualsIgnoreCase("radio") &&
- !value.EqualsIgnoreCase("submit") &&
- !value.EqualsIgnoreCase("reset") &&
- !value.EqualsIgnoreCase("hidden") &&
- !value.EqualsIgnoreCase("button") &&
- !value.EqualsIgnoreCase("checkbox"))
+ else if (g_ascii_strcasecmp (value.get(), "radio") != 0 &&
+ g_ascii_strcasecmp (value.get(), "submit") != 0 &&
+ g_ascii_strcasecmp (value.get(), "reset") != 0 &&
+ g_ascii_strcasecmp (value.get(), "hidden") != 0 &&
+ g_ascii_strcasecmp (value.get(), "button") != 0 &&
+ g_ascii_strcasecmp (value.get(), "checkbox") != 0)
{
info->context |= EMBED_CONTEXT_INPUT;
}
}
- else if (tag.EqualsIgnoreCase("textarea"))
+ else if (g_ascii_strcasecmp (tag.get(), "textarea") == 0)
{
info->context |= EMBED_CONTEXT_INPUT;
}
- else if (tag.EqualsIgnoreCase("object"))
+ else if (g_ascii_strcasecmp (tag.get(), "object") == 0)
{
nsCOMPtr<nsIDOMHTMLObjectElement> object;
object = do_QueryInterface (node);
if (!element) return NS_ERROR_FAILURE;
- nsAutoString value;
+ nsEmbedString value;
object->GetType(value);
+ nsEmbedCString cValue;
+ NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, cValue);
+
// MIME types are always lower case
- if (Substring (value, 0, 6).Equals(NS_LITERAL_STRING("image/")))
+ if (g_str_has_prefix (cValue.get(), "image/"))
{
info->context |= EMBED_CONTEXT_IMAGE;
- nsAutoString img;
+ nsEmbedString img;
rv = object->GetData (img);
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
- nsCAutoString cImg;
- rv = ResolveDocumentURL (doc, img, cImg);
+ nsEmbedCString cImg;
+ rv = ResolveBaseURL (img, cImg);
if (NS_FAILED (rv)) return NS_ERROR_FAILURE;
SetStringProperty ("image", cImg.get());
@@ -356,17 +326,18 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
nsCOMPtr <nsIDOMElement> dom_elem = do_QueryInterface(node);
if (dom_elem)
{
- NS_NAMED_LITERAL_STRING(nspace, "http://www.w3.org/1999/xlink");
- NS_NAMED_LITERAL_STRING(localname_type, "type");
+ nsEmbedString value;
+ dom_elem->GetAttributeNS (nsEmbedString(xlinknsLiteral),
+ nsEmbedString(typeLiteral), value);
- nsAutoString value;
- dom_elem->GetAttributeNS (nspace, localname_type, value);
+ nsEmbedCString cValue;
+ NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, cValue);
- if (value.EqualsIgnoreCase("simple"))
+ if (g_ascii_strcasecmp (cValue.get(), "simple") == 0)
{
info->context |= EMBED_CONTEXT_LINK;
- NS_NAMED_LITERAL_STRING (localname_href, "href");
- dom_elem->GetAttributeNS (nspace, localname_href, value);
+ dom_elem->GetAttributeNS (nsEmbedString(xlinknsLiteral),
+ nsEmbedString(hrefLiteral), value);
SetStringProperty ("link", value);
CheckLinkScheme (value);
@@ -380,15 +351,17 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
element = do_QueryInterface(node);
if ((nsIDOMNode::ELEMENT_NODE == type) && element)
{
- nsAutoString tag;
- rv = element->GetTagName(tag);
+ nsEmbedString uTag;
+ rv = element->GetTagName(uTag);
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
+ nsEmbedCString tag;
+ NS_UTF16ToCString (uTag, NS_CSTRING_ENCODING_UTF8, tag);
+
/* Link */
- if (tag.EqualsIgnoreCase("a"))
+ if (g_ascii_strcasecmp (tag.get(), "a") == 0)
{
- nsAutoString tmp;
- nsAutoString substr;
+ nsEmbedString tmp;
rv = GatherTextUnder (node, tmp);
if (NS_SUCCEEDED(rv))
@@ -397,16 +370,18 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
nsCOMPtr <nsIDOMHTMLAnchorElement> anchor =
do_QueryInterface(node);
+ nsEmbedCString href;
anchor->GetHref (tmp);
- substr.Assign (Substring (tmp, 0, 7));
- if (substr.EqualsIgnoreCase("mailto:"))
+ NS_UTF16ToCString (tmp, NS_CSTRING_ENCODING_UTF8, href);
+
+ if (g_str_has_prefix (href.get(), "mailto:"))
{
info->context |= EMBED_CONTEXT_EMAIL_LINK;
- const nsAString &address = Substring(tmp, 7, tmp.Length()-7);
- SetStringProperty ("email", address);
+ href.Cut (0, 7);
+ SetStringProperty ("email", href.get());
}
- if (anchor && !tmp.IsEmpty())
+ if (anchor && tmp.Length())
{
info->context |= EMBED_CONTEXT_LINK;
@@ -431,7 +406,10 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
if (NS_SUCCEEDED(rv))
SetStringProperty ("link_type", tmp);
- if (tmp.EqualsIgnoreCase("text/smartbookmark"))
+ nsEmbedCString linkType;
+ NS_UTF16ToCString (tmp, NS_CSTRING_ENCODING_UTF8, linkType);
+
+ if (g_ascii_strcasecmp (linkType.get(), "text/smartbookmark") == 0)
{
SetIntProperty ("link_is_smart", TRUE);
@@ -444,7 +422,7 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
if (image)
{
- nsAutoString img;
+ nsEmbedString img;
rv = image->GetSrc (img);
if (!NS_FAILED(rv))
{
@@ -460,19 +438,19 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
}
}
- else if (tag.EqualsIgnoreCase("option"))
+ else if (g_ascii_strcasecmp (tag.get(), "option") == 0)
{
info->context = EMBED_CONTEXT_NONE;
return NS_OK;
}
- if (tag.EqualsIgnoreCase("area"))
+ if (g_ascii_strcasecmp (tag.get(), "area") == 0)
{
info->context |= EMBED_CONTEXT_LINK;
nsCOMPtr <nsIDOMHTMLAreaElement> area =
do_QueryInterface(node, &rv);
if (NS_SUCCEEDED(rv) && area)
{
- nsAutoString href;
+ nsEmbedString href;
rv = area->GetHref (href);
if (NS_FAILED(rv))
return NS_ERROR_FAILURE;
@@ -481,8 +459,8 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
CheckLinkScheme (href);
}
}
- else if (tag.EqualsIgnoreCase("textarea") ||
- tag.EqualsIgnoreCase("input"))
+ else if (g_ascii_strcasecmp (tag.get(), "textarea") == 0 ||
+ g_ascii_strcasecmp (tag.get(), "input") == 0)
{
info->context |= EMBED_CONTEXT_INPUT;
}
@@ -493,15 +471,14 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
PRBool has_background = PR_FALSE;
- NS_NAMED_LITERAL_STRING(attr, "background");
- nsAutoString value;
- domelement->GetAttribute (attr, value);
+ nsEmbedString value;
+ domelement->GetAttribute (nsEmbedString(bgLiteral), value);
- if (!value.IsEmpty())
+ if (value.Length())
{
- nsCAutoString bgimg;
+ nsEmbedCString bgimg;
- rv = ResolveDocumentURL (doc, value, bgimg);
+ rv = ResolveBaseURL (value, bgimg);
if (NS_FAILED(rv)) return NS_ERROR_FAILURE;
SetStringProperty ("background_image", bgimg.get());
@@ -512,14 +489,14 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
bgelement = do_QueryInterface (node);
if (bgelement)
{
- nsAutoString value;
+ nsEmbedString value;
bgelement->GetBackground (value);
- if (!value.IsEmpty())
+ if (value.Length())
{
- nsCAutoString bgimg;
+ nsEmbedCString bgimg;
- rv = ResolveBaseURL (doc, value, bgimg);
+ rv = ResolveBaseURL (value, bgimg);
if (NS_FAILED(rv))
return NS_ERROR_FAILURE;
@@ -532,13 +509,13 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
if (!has_background)
{
- nsAutoString cssurl;
+ nsEmbedString cssurl;
rv = GetCSSBackground (node, cssurl);
if (NS_SUCCEEDED (rv))
{
- nsCAutoString bgimg;
+ nsEmbedCString bgimg;
- rv = ResolveBaseURL (doc, cssurl, bgimg);
+ rv = ResolveBaseURL (cssurl, bgimg);
if (NS_FAILED (rv))
return NS_ERROR_FAILURE;
SetStringProperty ("background_image",
@@ -557,10 +534,13 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget,
return NS_OK;
}
-nsresult EventContext::GetCSSBackground (nsIDOMNode *node, nsAutoString& url)
+nsresult EventContext::GetCSSBackground (nsIDOMNode *node, nsAString& url)
{
nsresult result;
+ const PRUnichar bgimage[] = {'b', 'a', 'c', 'k', 'g', 'r', 'o', 'u', 'n', 'd',
+ '-', 'i', 'm', 'a', 'g', 'e', '\0'};
+
nsCOMPtr<nsIDOMElementCSSInlineStyle> style;
style = do_QueryInterface (node);
if (!style) return NS_ERROR_FAILURE;
@@ -569,36 +549,15 @@ nsresult EventContext::GetCSSBackground (nsIDOMNode *node, nsAutoString& url)
result = style->GetStyle (getter_AddRefs(decl));
if (NS_FAILED(result)) return NS_ERROR_FAILURE;
- nsAutoString value;
- NS_NAMED_LITERAL_STRING(prop_bgi, "background-image");
- decl->GetPropertyValue (prop_bgi, value);
-
- if (value.IsEmpty())
- {
- NS_NAMED_LITERAL_STRING(prop_bg, "background");
- decl->GetPropertyValue (prop_bg, value);
- if (value.IsEmpty())
- {
- NS_NAMED_LITERAL_STRING(prop_bgr, "background-repeat");
- decl->GetPropertyValue (prop_bgr, value);
- if (value.IsEmpty())
- return NS_ERROR_FAILURE;
- }
- }
+ nsCOMPtr<nsIDOMCSSValue> cssValue;
+ decl->GetPropertyCSSValue (nsEmbedString(bgimage),
+ getter_AddRefs(cssValue));
+ nsCOMPtr<nsIDOMCSSPrimitiveValue> primitiveValue;
- PRInt32 start, end;
- nsAutoString cssurl;
+ primitiveValue = do_QueryInterface(cssValue);
+ if (!primitiveValue) return NS_ERROR_FAILURE;
- NS_NAMED_LITERAL_STRING(startsub, "url(");
- NS_NAMED_LITERAL_STRING(endsub, ")");
-
- start = value.Find (startsub) + 4;
- end = value.Find (endsub);
-
- if (start == -1 || end == -1)
- return NS_ERROR_FAILURE;
-
- url.Assign(Substring (value, start, end - start));
+ primitiveValue->GetStringValue(url);
return NS_OK;
}
@@ -643,14 +602,16 @@ nsresult EventContext::GetMouseEventInfo (nsIDOMMouseEvent *aMouseEvent, Mozilla
nsCOMPtr<nsIDOMNode> OriginalNode = do_QueryInterface(OriginalTarget);
if (!OriginalNode) return NS_ERROR_FAILURE;
- nsAutoString nodename;
+ nsEmbedString nodename;
OriginalNode->GetNodeName(nodename);
-
- if (nodename.EqualsIgnoreCase("xul:scrollbarbutton") ||
- nodename.EqualsIgnoreCase("xul:thumb") ||
- nodename.EqualsIgnoreCase("xul:vbox") ||
- nodename.EqualsIgnoreCase("xul:spacer") ||
- nodename.EqualsIgnoreCase("xul:slider"))
+ nsEmbedCString cNodeName;
+ NS_UTF16ToCString (nodename, NS_CSTRING_ENCODING_UTF8, cNodeName);
+
+ if (g_ascii_strcasecmp (cNodeName.get(), "xul:scrollbarbutton") == 0 ||
+ g_ascii_strcasecmp (cNodeName.get(), "xul:thumb") == 0 ||
+ g_ascii_strcasecmp (cNodeName.get(), "xul:vbox") == 0 ||
+ g_ascii_strcasecmp (cNodeName.get(), "xul:spacer") == 0 ||
+ g_ascii_strcasecmp (cNodeName.get(), "xul:slider") == 0)
return NS_ERROR_FAILURE;
nsCOMPtr<nsIDOMEventTarget> EventTarget;
@@ -772,22 +733,22 @@ nsresult EventContext::GetTargetDocument (nsIDOMDocument **domDoc)
nsresult EventContext::CheckLinkScheme (const nsAString &link)
{
nsCOMPtr<nsIURI> uri;
- NS_NewURI (getter_AddRefs (uri), link);
+ EphyUtils::NewURI (getter_AddRefs (uri), link);
if (!uri) return NS_ERROR_FAILURE;
nsresult rv;
- nsCAutoString scheme;
+ nsEmbedCString scheme;
rv = uri->GetScheme (scheme);
if (NS_FAILED (rv)) return NS_ERROR_FAILURE;
- if (scheme.EqualsIgnoreCase ("http") ||
- scheme.EqualsIgnoreCase ("https") ||
- scheme.EqualsIgnoreCase ("ftp") ||
- scheme.EqualsIgnoreCase ("file") ||
- scheme.EqualsIgnoreCase ("data") ||
- scheme.EqualsIgnoreCase ("resource") ||
- scheme.EqualsIgnoreCase ("about") ||
- scheme.EqualsIgnoreCase ("gopher"))
+ if (g_ascii_strcasecmp (scheme.get(), "http") ||
+ g_ascii_strcasecmp (scheme.get(), "https") ||
+ g_ascii_strcasecmp (scheme.get(), "ftp") ||
+ g_ascii_strcasecmp (scheme.get(), "file") ||
+ g_ascii_strcasecmp (scheme.get(), "data") ||
+ g_ascii_strcasecmp (scheme.get(), "resource") ||
+ g_ascii_strcasecmp (scheme.get(), "about") ||
+ g_ascii_strcasecmp (scheme.get(), "gopher"))
{
SetIntProperty ("link-has-web-scheme", TRUE);
}
@@ -824,5 +785,7 @@ nsresult EventContext::SetStringProperty (const char *name, const char *value)
nsresult EventContext::SetStringProperty (const char *name, const nsAString &value)
{
- return SetStringProperty (name, NS_ConvertUTF16toUTF8(value).get());
+ nsEmbedCString cValue;
+ NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, cValue);
+ return SetStringProperty (name, cValue.get());
}
diff --git a/embed/mozilla/EventContext.h b/embed/mozilla/EventContext.h
index 41fc1dfcb..efc05322b 100644
--- a/embed/mozilla/EventContext.h
+++ b/embed/mozilla/EventContext.h
@@ -35,39 +35,32 @@
#include <nsIDOMHTMLBodyElement.h>
#include <nsIDOMDocument.h>
-#ifdef ALLOW_PRIVATE_API
-#include <nsIDocument.h>
-#include <nsString.h>
-#endif
-
class EventContext
{
public:
EventContext();
~EventContext();
- nsresult Init (EphyBrowser *wrapper);
-
+ nsresult Init (EphyBrowser *wrapper);
nsresult GetMouseEventInfo (nsIDOMMouseEvent *event, MozillaEmbedEvent *info);
- nsresult GetKeyEventInfo (nsIDOMKeyEvent *event, MozillaEmbedEvent *info);
+ nsresult GetKeyEventInfo (nsIDOMKeyEvent *event, MozillaEmbedEvent *info);
nsresult GetTargetDocument (nsIDOMDocument **domDoc);
private:
EphyBrowser *mBrowser;
+ MozillaEmbedEvent *mEmbedEvent;
nsCOMPtr<nsIDOMDocument> mDOMDocument;
- nsresult GatherTextUnder (nsIDOMNode* aNode, nsString& aResult);
- nsresult ResolveBaseURL (nsIDocument *doc, const nsAString &relurl, nsACString &url);
- nsresult ResolveDocumentURL (nsIDocument *doc, const nsAString &relurl, nsACString &url);
- nsresult GetEventContext (nsIDOMEventTarget *EventTarget,
- MozillaEmbedEvent *info);
- nsresult GetCSSBackground (nsIDOMNode *node, nsAutoString& url);
- nsresult IsPageFramed (nsIDOMNode *node, PRBool *Framed);
- nsresult CheckLinkScheme (const nsAString &link);
- nsresult SetIntProperty (const char *name, int value);
- nsresult SetStringProperty (const char *name, const char *value);
- nsresult SetStringProperty (const char *name, const nsAString &value);
- MozillaEmbedEvent *mEmbedEvent;
+ nsresult GatherTextUnder (nsIDOMNode* aNode, nsAString& aResult);
+ nsresult ResolveBaseURL (const nsAString &relurl, nsACString &url);
+ nsresult GetEventContext (nsIDOMEventTarget *EventTarget,
+ MozillaEmbedEvent *info);
+ nsresult GetCSSBackground (nsIDOMNode *node, nsAString& url);
+ nsresult IsPageFramed (nsIDOMNode *node, PRBool *Framed);
+ nsresult CheckLinkScheme (const nsAString &link);
+ nsresult SetIntProperty (const char *name, int value);
+ nsresult SetStringProperty (const char *name, const char *value);
+ nsresult SetStringProperty (const char *name, const nsAString &value);
};
#endif
diff --git a/embed/mozilla/FilePicker.cpp b/embed/mozilla/FilePicker.cpp
index 29756b15b..4771c910c 100644
--- a/embed/mozilla/FilePicker.cpp
+++ b/embed/mozilla/FilePicker.cpp
@@ -26,7 +26,10 @@
#include "FilePicker.h"
#include "MozillaPrivate.h"
+#include "mozilla-version.h"
+
#include <nsCOMPtr.h>
+#include <nsEmbedString.h>
#include <nsIServiceManager.h>
#include <nsIURI.h>
#include <nsIFileURL.h>
@@ -35,12 +38,7 @@
#include <nsIDOMWindow.h>
#include <nsNetCID.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#include <nsReadableUtils.h>
-#endif
-
-#if MOZILLA_SNAPSHOT < 18
+#if !MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
#include <nsIDOMWindowInternal.h>
#endif
@@ -82,10 +80,10 @@ GFilePicker::~GFilePicker()
}
/* void init (in nsIDOMWindow parent, in AString title, in short mode); */
-#if MOZILLA_SNAPSHOT < 18
-NS_IMETHODIMP GFilePicker::Init(nsIDOMWindowInternal *parent, const PRUnichar *title, PRInt16 mode)
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
NS_IMETHODIMP GFilePicker::Init(nsIDOMWindow *parent, const nsAString& title, PRInt16 mode)
+#else
+NS_IMETHODIMP GFilePicker::Init(nsIDOMWindowInternal *parent, const PRUnichar *title, PRInt16 mode)
#endif
{
LOG ("GFilePicker::Init")
@@ -97,11 +95,13 @@ NS_IMETHODIMP GFilePicker::Init(nsIDOMWindow *parent, const nsAString& title, PR
gtk_window_set_transient_for (GTK_WINDOW (mDialog), GTK_WINDOW (pwin));
}
-#if MOZILLA_SNAPSHOT < 18
- gtk_window_set_title (GTK_WINDOW (mDialog), NS_ConvertUTF16toUTF8 (title).get());
+ nsEmbedCString cTitle;
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ NS_UTF16ToCString (title, NS_CSTRING_ENCODING_UTF8, cTitle);
#else
- gtk_window_set_title (GTK_WINDOW (mDialog), NS_ConvertUCS2toUTF8(title).get());
+ NS_UTF16ToCString (nsEmbedString(title), NS_CSTRING_ENCODING_UTF8, cTitle);
#endif
+ gtk_window_set_title (GTK_WINDOW (mDialog), cTitle.get());
mMode = mode;
@@ -200,20 +200,24 @@ NS_IMETHODIMP GFilePicker::AppendFilters(PRInt32 filterMask)
}
/* void appendFilter (in AString title, in AString filter); */
-#if MOZILLA_SNAPSHOT < 18
-NS_IMETHODIMP GFilePicker::AppendFilter(const PRUnichar *title, const PRUnichar *filter)
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
NS_IMETHODIMP GFilePicker::AppendFilter(const nsAString& title, const nsAString& filter)
+#else
+NS_IMETHODIMP GFilePicker::AppendFilter(const PRUnichar *title, const PRUnichar *filter)
#endif
{
- LOG ("GFilePicker::AppendFilter title '%s' for '%s'",
- NS_ConvertUTF16toUTF8 (title).get(),
- NS_ConvertUTF16toUTF8 (filter).get())
-
- NS_ConvertUTF16toUTF8 pattern(filter);
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ if (!filter.Length()) return NS_ERROR_FAILURE;
+#else
+ if (!filter) return NS_ERROR_FAILURE;
+#endif
- pattern.StripWhitespace();
- if (pattern.IsEmpty()) return NS_ERROR_FAILURE;
+ nsEmbedCString pattern;
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ NS_UTF16ToCString (filter, NS_CSTRING_ENCODING_UTF8, pattern);
+#else
+ NS_UTF16ToCString (nsEmbedString(filter), NS_CSTRING_ENCODING_UTF8, pattern);
+#endif
char **patterns;
patterns = g_strsplit (pattern.get(), ";", -1);
@@ -224,10 +228,17 @@ NS_IMETHODIMP GFilePicker::AppendFilter(const nsAString& title, const nsAString&
for (int i = 0; patterns[i] != NULL; i++)
{
- gtk_file_filter_add_pattern (filth, patterns[i]);
+ gtk_file_filter_add_pattern (filth, g_strstrip (patterns[i]));
}
- gtk_file_filter_set_name (filth, NS_ConvertUTF16toUTF8 (title).get());
+ nsEmbedCString cTitle;
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ NS_UTF16ToCString (title, NS_CSTRING_ENCODING_UTF8, cTitle);
+#else
+ NS_UTF16ToCString (nsEmbedString(title), NS_CSTRING_ENCODING_UTF8, cTitle);
+#endif
+
+ gtk_file_filter_set_name (filth, cTitle.get());
gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (mDialog), filth);
@@ -237,10 +248,10 @@ NS_IMETHODIMP GFilePicker::AppendFilter(const nsAString& title, const nsAString&
}
/* attribute AString defaultString; */
-#if MOZILLA_SNAPSHOT < 18
-NS_IMETHODIMP GFilePicker::GetDefaultString(PRUnichar **aDefaultString)
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
NS_IMETHODIMP GFilePicker::GetDefaultString(nsAString& aDefaultString)
+#else
+NS_IMETHODIMP GFilePicker::GetDefaultString(PRUnichar **aDefaultString)
#endif
{
char *filename, *converted;
@@ -252,10 +263,14 @@ NS_IMETHODIMP GFilePicker::GetDefaultString(nsAString& aDefaultString)
{
converted = g_filename_to_utf8(filename, -1, NULL, NULL, NULL);
-#if MOZILLA_SNAPSHOT < 18
- *aDefaultString = ToNewUnicode (NS_ConvertUTF8toUTF16 (converted));
+ nsEmbedString defaultString;
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ NS_CStringToUTF16 (nsEmbedCString(converted),
+ NS_CSTRING_ENCODING_UTF8, aDefaultString);
#else
- CopyUTF8toUTF16 (converted, aDefaultString);
+ NS_CStringToUTF16 (nsEmbedCString(converted),
+ NS_CSTRING_ENCODING_UTF8, defaultString);
+ *aDefaultString = NS_StringCloneData (defaultString);
#endif
g_free (filename);
@@ -265,40 +280,39 @@ NS_IMETHODIMP GFilePicker::GetDefaultString(nsAString& aDefaultString)
return NS_OK;
}
-#if MOZILLA_SNAPSHOT < 18
-NS_IMETHODIMP GFilePicker::SetDefaultString(const PRUnichar *aDefaultString)
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
NS_IMETHODIMP GFilePicker::SetDefaultString(const nsAString& aDefaultString)
+#else
+NS_IMETHODIMP GFilePicker::SetDefaultString(const PRUnichar *aDefaultString)
#endif
{
-#if MOZILLA_SNAPSHOT < 18
- LOG ("GFilePicker::SetDefaultString to %s",
- NS_ConvertUTF16toUTF8 (aDefaultString).get())
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ if (aDefaultString.Length())
#else
- LOG ("GFilePicker::SetDefaultString to %s",
- NS_ConvertUCS2toUTF8 (aDefaultString).get())
-#endif
-
-#if MOZILLA_SNAPSHOT < 18
if (aDefaultString)
-#else
- if (aDefaultString.Length())
#endif
{
+ nsEmbedCString defaultString;
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ NS_UTF16ToCString (aDefaultString, NS_CSTRING_ENCODING_UTF8,
+ defaultString);
+#else
+ NS_UTF16ToCString (nsEmbedString(aDefaultString),
+ NS_CSTRING_ENCODING_UTF8, defaultString);
+#endif
/* set_current_name takes UTF-8, not a filename */
gtk_file_chooser_set_current_name
- (GTK_FILE_CHOOSER (mDialog),
- NS_ConvertUTF16toUTF8 (aDefaultString).get());
+ (GTK_FILE_CHOOSER (mDialog), defaultString.get());
}
return NS_OK;
}
/* attribute AString defaultExtension; */
-#if MOZILLA_SNAPSHOT < 18
-NS_IMETHODIMP GFilePicker::GetDefaultExtension(PRUnichar **aDefaultExtension)
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
NS_IMETHODIMP GFilePicker::GetDefaultExtension(nsAString& aDefaultExtension)
+#else
+NS_IMETHODIMP GFilePicker::GetDefaultExtension(PRUnichar **aDefaultExtension)
#endif
{
LOG ("GFilePicker::GetDefaultExtension")
@@ -306,15 +320,12 @@ NS_IMETHODIMP GFilePicker::GetDefaultExtension(nsAString& aDefaultExtension)
return NS_ERROR_NOT_IMPLEMENTED;
}
-#if MOZILLA_SNAPSHOT < 18
-NS_IMETHODIMP GFilePicker::SetDefaultExtension(const PRUnichar *aDefaultExtension)
-#else
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
NS_IMETHODIMP GFilePicker::SetDefaultExtension(const nsAString& aDefaultExtension)
+#else
+NS_IMETHODIMP GFilePicker::SetDefaultExtension(const PRUnichar *aDefaultExtension)
#endif
{
- LOG ("GFilePicker::SetDefaultExtension to %s",
- NS_ConvertUTF16toUTF8(aDefaultExtension).get())
-
return NS_ERROR_NOT_IMPLEMENTED;
}
@@ -345,7 +356,7 @@ NS_IMETHODIMP GFilePicker::GetDisplayDirectory(nsILocalFile **aDisplayDirectory)
if (dir != NULL)
{
nsCOMPtr<nsILocalFile> file = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID);
- file->InitWithNativePath (nsDependentCString (dir));
+ file->InitWithNativePath (nsEmbedCString (dir));
NS_IF_ADDREF (*aDisplayDirectory = file);
g_free (dir);
@@ -356,7 +367,7 @@ NS_IMETHODIMP GFilePicker::GetDisplayDirectory(nsILocalFile **aDisplayDirectory)
NS_IMETHODIMP GFilePicker::SetDisplayDirectory(nsILocalFile *aDisplayDirectory)
{
- nsCAutoString dir;
+ nsEmbedCString dir;
aDisplayDirectory->GetNativePath (dir);
LOG ("GFilePicker::SetDisplayDirectory to %s", dir.get())
@@ -379,7 +390,7 @@ NS_IMETHODIMP GFilePicker::GetFile(nsILocalFile **aFile)
if (filename != NULL)
{
nsCOMPtr<nsILocalFile> file = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID);
- file->InitWithNativePath (nsDependentCString (filename));
+ file->InitWithNativePath (nsEmbedCString (filename));
NS_IF_ADDREF (*aFile = file);
g_free (filename);
diff --git a/embed/mozilla/GlobalHistory.cpp b/embed/mozilla/GlobalHistory.cpp
index 4e65161ff..d96417a69 100644
--- a/embed/mozilla/GlobalHistory.cpp
+++ b/embed/mozilla/GlobalHistory.cpp
@@ -28,16 +28,9 @@
#include "GlobalHistory.h"
#include <nsIURI.h>
+#include <nsEmbedString.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#endif
-
-#if MOZILLA_SNAPSHOT > 13
NS_IMPL_ISUPPORTS2(MozGlobalHistory, nsIGlobalHistory2, nsIBrowserHistory)
-#else
-NS_IMPL_ISUPPORTS2(MozGlobalHistory, nsIGlobalHistory, nsIBrowserHistory)
-#endif
MozGlobalHistory::MozGlobalHistory ()
{
@@ -48,13 +41,54 @@ MozGlobalHistory::~MozGlobalHistory ()
{
}
-#if MOZILLA_SNAPSHOT > 13
-
/* void addURI (in nsIURI aURI, in boolean aRedirect, in boolean aToplevel); */
NS_IMETHODIMP MozGlobalHistory::AddURI(nsIURI *aURI, PRBool aRedirect, PRBool aToplevel)
{
- nsCAutoString spec;
- aURI->GetSpec(spec);
+ nsresult rv;
+ NS_ENSURE_ARG_POINTER(aURI);
+
+ PRBool isJavascript;
+ rv = aURI->SchemeIs("javascript", &isJavascript);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ if (isJavascript || aRedirect || !aToplevel)
+ {
+ return NS_OK;
+ }
+
+ // filter out unwanted URIs such as chrome: etc
+ // The model is really if we don't know differently then add which basically
+ // means we are suppose to try all the things we know not to allow in and
+ // then if we don't bail go on and allow it in. But here lets compare
+ // against the most common case we know to allow in and go on and say yes
+ // to it.
+
+ PRBool isHTTP = PR_FALSE;
+ PRBool isHTTPS = PR_FALSE;
+
+ rv = aURI->SchemeIs("http", &isHTTP);
+ rv |= aURI->SchemeIs("https", &isHTTPS);
+ NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
+
+ if (!isHTTP && !isHTTPS)
+ {
+ PRBool isAbout, isViewSource, isChrome, isData;
+
+ rv = aURI->SchemeIs("about", &isAbout);
+ rv |= aURI->SchemeIs("view-source", &isViewSource);
+ rv |= aURI->SchemeIs("chrome", &isChrome);
+ rv |= aURI->SchemeIs("data", &isData);
+ NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE);
+
+ if (isAbout || isViewSource || isChrome || isData)
+ {
+ return NS_OK;
+ }
+ }
+
+ nsEmbedCString spec;
+ rv = aURI->GetSpec(spec);
+ NS_ENSURE_SUCCESS(rv, rv);
ephy_history_add_page (mGlobalHistory, spec.get());
@@ -64,7 +98,7 @@ NS_IMETHODIMP MozGlobalHistory::AddURI(nsIURI *aURI, PRBool aRedirect, PRBool aT
/* boolean isVisited (in nsIURI aURI); */
NS_IMETHODIMP MozGlobalHistory::IsVisited(nsIURI *aURI, PRBool *_retval)
{
- nsCAutoString spec;
+ nsEmbedCString spec;
aURI->GetSpec(spec);
*_retval = ephy_history_is_page_visited (mGlobalHistory, spec.get());
@@ -75,13 +109,14 @@ NS_IMETHODIMP MozGlobalHistory::IsVisited(nsIURI *aURI, PRBool *_retval)
/* void setPageTitle (in nsIURI aURI, in AString aTitle); */
NS_IMETHODIMP MozGlobalHistory::SetPageTitle(nsIURI *aURI, const nsAString & aTitle)
{
- const nsACString &title = NS_ConvertUTF16toUTF8(aTitle);
+ nsEmbedCString title;
+ NS_UTF16ToCString (nsEmbedString (aTitle),
+ NS_CSTRING_ENCODING_UTF8, title);
- nsCAutoString spec;
+ nsEmbedCString spec;
aURI->GetSpec(spec);
- ephy_history_set_page_title (mGlobalHistory, spec.get(),
- PromiseFlatCString(title).get());
+ ephy_history_set_page_title (mGlobalHistory, spec.get(), title.get());
return NS_OK;
}
@@ -92,43 +127,6 @@ NS_IMETHODIMP MozGlobalHistory::HidePage(nsIURI *url)
return NS_ERROR_NOT_IMPLEMENTED;
}
-#else
-
-/* void addPage (in string aURL); */
-NS_IMETHODIMP MozGlobalHistory::AddPage (const char *aURL)
-{
- ephy_history_add_page (mGlobalHistory, aURL);
-
- return NS_OK;
-}
-
-/* boolean isVisited (in string aURL); */
-NS_IMETHODIMP MozGlobalHistory::IsVisited (const char *aURL, PRBool *_retval)
-{
- *_retval = ephy_history_is_page_visited (mGlobalHistory, aURL);
-
- return NS_OK;
-}
-
-/* void setPageTitle (in string aURL, in wstring aTitle); */
-NS_IMETHODIMP MozGlobalHistory::SetPageTitle (const char *aURL,
- const PRUnichar *aTitle)
-{
- const nsACString &title = NS_ConvertUTF16toUTF8 (aTitle);
-
- ephy_history_set_page_title (mGlobalHistory, aURL, PromiseFlatCString(title).get());
-
- /* done */
- return NS_OK;
-}
-
-NS_IMETHODIMP MozGlobalHistory::HidePage(const char *url)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-
-}
-#endif /* MOZILLA_SNAPSHOT > 13 */
-
/* void removePage (in string aURL); */
NS_IMETHODIMP MozGlobalHistory::RemovePage(const char *aURL)
{
@@ -148,26 +146,11 @@ NS_IMETHODIMP MozGlobalHistory::RemoveAllPages()
return NS_ERROR_NOT_IMPLEMENTED;
}
-#if MOZILLA_SNAPSHOT > 14
/* readonly attribute AUTF8String lastPageVisited; */
NS_IMETHODIMP MozGlobalHistory::GetLastPageVisited(nsACString & aLastPageVisited)
{
return NS_ERROR_NOT_IMPLEMENTED;
}
-#else
-/* readonly attribute string lastPageVisited; */
-NS_IMETHODIMP MozGlobalHistory::GetLastPageVisited(char **aLastPageVisited)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-#endif
-
-#if MOZILLA_SNAPSHOT < 14
-NS_IMETHODIMP MozGlobalHistory::SetLastPageVisited(const char *aLastPageVisited)
-{
- return NS_ERROR_NOT_IMPLEMENTED;
-}
-#endif
/* readonly attribute PRUint32 count; */
NS_IMETHODIMP MozGlobalHistory::GetCount(PRUint32 *aCount)
diff --git a/embed/mozilla/GlobalHistory.h b/embed/mozilla/GlobalHistory.h
index 3b0bab389..883b9e8db 100644
--- a/embed/mozilla/GlobalHistory.h
+++ b/embed/mozilla/GlobalHistory.h
@@ -29,11 +29,7 @@
#include "ephy-history.h"
#include <nsIBrowserHistory.h>
-#if MOZILLA_SNAPSHOT > 13
#include <nsIGlobalHistory2.h>
-#else
-#include <nsIGlobalHistory.h>
-#endif
#define EPHY_GLOBALHISTORY_CLASSNAME "Epiphany Global History Implementation"
@@ -44,22 +40,14 @@
{ 0xb7, 0x9e, 0xf7, 0xaa, 0x49, 0xeb, 0x6a, 0x15} \
}
-class MozGlobalHistory:
-#if MOZILLA_SNAPSHOT <= 13
- public nsIGlobalHistory,
-#endif
- public nsIBrowserHistory
+class MozGlobalHistory: public nsIBrowserHistory
{
public:
MozGlobalHistory ();
virtual ~MozGlobalHistory();
NS_DECL_ISUPPORTS
-#if MOZILLA_SNAPSHOT > 13
NS_DECL_NSIGLOBALHISTORY2
-#else
- NS_DECL_NSIGLOBALHISTORY
-#endif
NS_DECL_NSIBROWSERHISTORY
private:
diff --git a/embed/mozilla/GtkNSSClientAuthDialogs.cpp b/embed/mozilla/GtkNSSClientAuthDialogs.cpp
index ca258edaf..1ff07e953 100644
--- a/embed/mozilla/GtkNSSClientAuthDialogs.cpp
+++ b/embed/mozilla/GtkNSSClientAuthDialogs.cpp
@@ -31,9 +31,7 @@
#include <nsIServiceManager.h>
#include <nsIInterfaceRequestor.h>
#include <nsIInterfaceRequestorUtils.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#endif
+#include <nsEmbedString.h>
#include <gtk/gtkdialog.h>
#include <gtk/gtkimage.h>
@@ -188,9 +186,10 @@ GtkNSSClientAuthDialogs::ChooseCertificate (nsIInterfaceRequestor *ctx,
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
- const nsACString &utf8_cn = NS_ConvertUTF16toUTF8(cn);
- tt_cn = g_strdup_printf ("\"<tt>%s</tt>\"",
- PromiseFlatCString(utf8_cn).get());
+ nsEmbedCString utf8_cn;
+ NS_UTF16ToCString (nsEmbedString (cn),
+ NS_CSTRING_ENCODING_UTF8, utf8_cn);
+ tt_cn = g_strdup_printf ("\"<tt>%s</tt>\"", utf8_cn.get());
msg = g_strdup_printf (_("Choose a certificate to present as identification to %s."),
tt_cn);
@@ -206,13 +205,18 @@ GtkNSSClientAuthDialogs::ChooseCertificate (nsIInterfaceRequestor *ctx,
store = gtk_list_store_new (2, G_TYPE_STRING, G_TYPE_STRING);
for (i = 0; i < count; i++)
{
- const nsACString &certnick = NS_ConvertUTF16toUTF8(certNickList[i]);
- const nsACString &certdetail = NS_ConvertUTF16toUTF8(certDetailsList[i]);
+ nsEmbedCString certnick;
+ nsEmbedCString certdetail;
+
+ NS_UTF16ToCString (nsEmbedString (certNickList[i]),
+ NS_CSTRING_ENCODING_UTF8, certnick);
+ NS_UTF16ToCString (nsEmbedString (certDetailsList[i]),
+ NS_CSTRING_ENCODING_UTF8, certdetail);
gtk_list_store_append (store, &iter);
gtk_list_store_set (store, &iter,
- 0, PromiseFlatCString(certnick).get(),
- 1, PromiseFlatCString(certdetail).get(),
+ 0, certnick.get(),
+ 1, certdetail.get(),
-1);
}
diff --git a/embed/mozilla/GtkNSSDialogs.cpp b/embed/mozilla/GtkNSSDialogs.cpp
index b127be568..1bd1a88e6 100644
--- a/embed/mozilla/GtkNSSDialogs.cpp
+++ b/embed/mozilla/GtkNSSDialogs.cpp
@@ -35,6 +35,7 @@
#include "MozillaPrivate.h"
#include <nsCOMPtr.h>
+#include <nsMemory.h>
#include <nsIServiceManager.h>
#include <nsIInterfaceRequestor.h>
#include <nsIInterfaceRequestorUtils.h>
@@ -46,11 +47,7 @@
#include <nsICRLInfo.h>
#include <nsISimpleEnumerator.h>
#include <nsIArray.h>
-
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsReadableUtils.h>
-#include <nsString.h>
-#endif
+#include <nsEmbedString.h>
#include <gconf/gconf-client.h>
#include <gtk/gtkdialog.h>
@@ -284,17 +281,20 @@ GtkNSSDialogs::ConfirmMismatchDomain (nsIInterfaceRequestor *ctx,
const nsACString &targetURL,
nsIX509Cert *cert, PRBool *_retval)
{
- nsAutoString commonName;
char *ttTargetUrl, *ttCommonName, *first, *second, *msg;
int res;
+ nsEmbedString commonName;
cert->GetCommonName (commonName);
+ nsEmbedCString cCommonName;
+ NS_UTF16ToCString (commonName,
+ NS_CSTRING_ENCODING_UTF8, cCommonName);
+
ttTargetUrl = g_strdup_printf ("\"<tt>%s</tt>\"",
- PromiseFlatCString(targetURL).get());
+ nsEmbedCString(targetURL).get());
- ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"",
- NS_ConvertUTF16toUTF8(commonName).get());
+ ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"", cCommonName.get());
first = g_strdup_printf (_("The site %s returned security information for "
"%s. It is possible that someone is intercepting "
@@ -329,14 +329,17 @@ GtkNSSDialogs::ConfirmUnknownIssuer (nsIInterfaceRequestor *ctx,
PRBool *_retval)
{
gboolean accept_perm = FALSE;
- nsAutoString commonName;
char *ttCommonName, *secondary, *tertiary, *msg;
int res;
+ nsEmbedString commonName;
cert->GetCommonName (commonName);
- ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"",
- NS_ConvertUTF16toUTF8(commonName).get());
+ nsEmbedCString cCommonName;
+ NS_UTF16ToCString (commonName,
+ NS_CSTRING_ENCODING_UTF8, cCommonName);
+
+ ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"", cCommonName.get());
secondary = g_strdup_printf
(_("Your browser was unable to trust %s. "
@@ -394,7 +397,6 @@ GtkNSSDialogs::ConfirmCertExpired (nsIInterfaceRequestor *ctx,
PRTime now = PR_Now();
PRTime notAfter, notBefore, timeToUse;
PRInt64 normalizedTime;
- nsAutoString commonName;
time_t t;
struct tm tm;
char formattedDate[128];
@@ -428,8 +430,13 @@ GtkNSSDialogs::ConfirmCertExpired (nsIInterfaceRequestor *ctx,
timeToUse = notBefore;
}
+ nsEmbedString commonName;
cert->GetCommonName (commonName);
+ nsEmbedCString cCommonName;
+ NS_UTF16ToCString (commonName,
+ NS_CSTRING_ENCODING_UTF8, cCommonName);
+
LL_DIV (normalizedTime, timeToUse, PR_USEC_PER_SEC);
LL_L2UI (t, normalizedTime);
/* To translators: this a time format that is used while displaying the
@@ -439,8 +446,7 @@ GtkNSSDialogs::ConfirmCertExpired (nsIInterfaceRequestor *ctx,
localtime_r (&t, &tm));
fdate = g_locale_to_utf8 (formattedDate, -1, NULL, NULL, NULL);
- ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"",
- NS_ConvertUTF16toUTF8(commonName).get());
+ ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"", cCommonName.get());
secondary = g_strdup_printf (text, ttCommonName, fdate);
@@ -468,7 +474,6 @@ GtkNSSDialogs::NotifyCrlNextupdate (nsIInterfaceRequestor *ctx,
{
GtkWidget *dialog, *label;
char *ttCommonName, *ttTargetUrl, *msg, *primary, *secondary;
- nsAutoString commonName;
nsCOMPtr<nsIDOMWindow> parent = do_GetInterface (ctx);
GtkWidget *gparent = MozillaFindGtkParent (parent);
@@ -483,13 +488,17 @@ GtkNSSDialogs::NotifyCrlNextupdate (nsIInterfaceRequestor *ctx,
higgy_setup_dialog (GTK_DIALOG (dialog), GTK_STOCK_DIALOG_ERROR,
&label, NULL);
+ nsEmbedString commonName;
cert->GetCommonName (commonName);
- ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"",
- NS_ConvertUTF16toUTF8(commonName).get());
+ nsEmbedCString cCommonName;
+ NS_UTF16ToCString (commonName,
+ NS_CSTRING_ENCODING_UTF8, cCommonName);
+
+ ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"", cCommonName.get());
- ttTargetUrl = g_strdup_printf ("\"<tt>%s</tt>\"",
- PromiseFlatCString(targetURL).get());
+ ttTargetUrl = g_strdup_printf ("\"<tt>%s</tt>\"",
+ nsEmbedCString(targetURL).get());
primary = g_strdup_printf (_("Cannot establish connection to %s."),
ttTargetUrl);
@@ -545,12 +554,16 @@ GtkNSSDialogs::ConfirmDownloadCACert(nsIInterfaceRequestor *ctx,
&label, &content_vbox);
gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_ACCEPT);
- nsAutoString commonName;
+ nsEmbedString commonName;
cert->GetCommonName (commonName);
- ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"",
- NS_ConvertUTF16toUTF8(commonName).get());
- tertiary = g_strdup_printf (_("Trust %s to identify:"), ttCommonName );
+ nsEmbedCString cCommonName;
+ NS_UTF16ToCString (commonName,
+ NS_CSTRING_ENCODING_UTF8, cCommonName);
+
+ ttCommonName = g_strdup_printf ("\"<tt>%s</tt>\"", cCommonName.get());
+
+ tertiary = g_strdup_printf (_("Trust %s to identify:"), ttCommonName);
g_free (ttCommonName);
msg = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s\n\n%s",
@@ -835,8 +848,9 @@ GtkNSSDialogs::SetPKCS12FilePassword(nsIInterfaceRequestor *ctx,
}
else
{
- gchar * text = gtk_editable_get_chars (GTK_EDITABLE (entry1), 0, -1);
- CopyUTF8toUTF16 (text, _password);
+ gchar *text = gtk_editable_get_chars (GTK_EDITABLE (entry1), 0, -1);
+ NS_CStringToUTF16 (nsEmbedCString (text),
+ NS_CSTRING_ENCODING_UTF8, _password);
g_free (text);
*_retval = PR_TRUE;
}
@@ -896,7 +910,8 @@ GtkNSSDialogs::GetPKCS12FilePassword(nsIInterfaceRequestor *ctx,
else
{
gchar * text = gtk_editable_get_chars (GTK_EDITABLE (entry), 0, -1);
- CopyUTF8toUTF16 (text, _password);
+ NS_CStringToUTF16 (nsEmbedCString (text),
+ NS_CSTRING_ENCODING_UTF8, _password);
g_free (text);
*_retval = PR_TRUE;
}
@@ -955,7 +970,7 @@ GtkNSSDialogs::CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICRLInfo *crl
gtk_table_set_row_spacings (GTK_TABLE (table), 6);
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
- nsAutoString org, orgUnit, nextUpdate;
+ nsEmbedString org, orgUnit, nextUpdate;
rv = crl->GetOrganization (org);
if (NS_FAILED(rv)) return rv;
@@ -965,13 +980,19 @@ GtkNSSDialogs::CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICRLInfo *crl
rv = crl->GetNextUpdateLocale (nextUpdate);
if (NS_FAILED(rv)) return rv;
- label = gtk_label_new (NS_ConvertUTF16toUTF8(org).get());
+ nsEmbedCString cOrg;
+ NS_UTF16ToCString (org, NS_CSTRING_ENCODING_UTF8, cOrg);
+ label = gtk_label_new (cOrg.get());
set_table_row (table, 0, _("Organization:"), label);
- label = gtk_label_new (NS_ConvertUTF16toUTF8(orgUnit).get());
+ nsEmbedCString cOrgUnit;
+ NS_UTF16ToCString (orgUnit, NS_CSTRING_ENCODING_UTF8, cOrgUnit);
+ label = gtk_label_new (cOrgUnit.get());
set_table_row (table, 1, _("Unit:"), label);
- label = gtk_label_new (NS_ConvertUTF16toUTF8(nextUpdate).get());
+ nsEmbedCString cNextUpdate;
+ NS_UTF16ToCString (nextUpdate, NS_CSTRING_ENCODING_UTF8, cNextUpdate);
+ label = gtk_label_new (cNextUpdate.get());
set_table_row (table, 2, _("Next Update:"), label);
gtk_box_pack_start (GTK_BOX (vbox), higgy_indent_widget (table), FALSE, FALSE, 0);
@@ -989,14 +1010,14 @@ GtkNSSDialogs::CrlImportStatusDialog(nsIInterfaceRequestor *ctx, nsICRLInfo *crl
* Help function to fill in the labels on the General tab
*/
static void
-set_label_cert_attribute (GladeXML* gxml, const char* label_id, nsAutoString &value)
+set_label_cert_attribute (GladeXML* gxml, const char* label_id, nsAString &value)
{
GtkWidget *label;
label = glade_xml_get_widget (gxml, label_id);
g_return_if_fail (GTK_IS_LABEL (label));
- if (value.IsEmpty()) {
+ if (!value.Length()) {
gtk_label_set_use_markup (GTK_LABEL (label), TRUE);
char *msg = g_strdup_printf ("<i>&lt;%s&gt;</i>",
_("Not part of certificate"));
@@ -1005,9 +1026,10 @@ set_label_cert_attribute (GladeXML* gxml, const char* label_id, nsAutoString &va
}
else
{
+ nsEmbedCString cValue;
+ NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, cValue);
gtk_label_set_use_markup (GTK_LABEL (label), FALSE);
- gtk_label_set_text (GTK_LABEL (label),
- NS_ConvertUTF16toUTF8(value).get());
+ gtk_label_set_text (GTK_LABEL (label), cValue.get());
}
}
@@ -1037,15 +1059,18 @@ fill_cert_chain_tree (GtkTreeView *treeview, nsIArray *certChain)
gtk_tree_store_append (GTK_TREE_STORE (model), &iter,
(i == (int)numCerts-1) ? NULL : &parent);
- nsAutoString value;
+ nsEmbedString value;
rv = nsCert->GetCommonName (value);
if (NS_FAILED(rv)) return FALSE;
+ nsEmbedCString cValue;
+ NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, cValue);
+
nsIX509Cert *nsCertP = nsCert;
- if (!value.IsEmpty())
+ if (value.Length())
{
gtk_tree_store_set (GTK_TREE_STORE(model), &iter,
- 0, NS_ConvertUTF16toUTF8(value).get(),
+ 0, cValue.get(),
1, nsCertP,
-1);
}
@@ -1079,14 +1104,17 @@ fill_cert_chain_tree (GtkTreeView *treeview, nsIArray *certChain)
static void
add_asn1_object_to_tree(GtkTreeModel *model, nsIASN1Object *object, GtkTreeIter *parent)
{
- nsAutoString dispNameU;
+ nsEmbedString dispNameU;
object->GetDisplayName(dispNameU);
+ nsEmbedCString cDispNameU;
+ NS_UTF16ToCString (dispNameU, NS_CSTRING_ENCODING_UTF8, cDispNameU);
+
GtkTreeIter iter;
gtk_tree_store_append (GTK_TREE_STORE (model), &iter, parent);
gtk_tree_store_set (GTK_TREE_STORE(model), &iter,
- 0, NS_ConvertUTF16toUTF8(dispNameU).get(),
+ 0, cDispNameU.get(),
1, object,
-1);
@@ -1155,14 +1183,16 @@ field_tree_view_selection_changed_cb (GtkTreeSelection *selection,
if (gtk_tree_selection_get_selected (selection, &model, &iter))
{
nsIASN1Object *object;
- nsAutoString dispValU;
gtk_tree_model_get (model, &iter, 1, &object, -1);
+ nsEmbedString dispValU;
object->GetDisplayValue(dispValU);
- gtk_text_buffer_set_text (text_buffer,
- NS_ConvertUTF16toUTF8(dispValU).get(),
- -1);
+
+ nsEmbedCString cDispValU;
+ NS_UTF16ToCString (dispValU, NS_CSTRING_ENCODING_UTF8, cDispValU);
+
+ gtk_text_buffer_set_text (text_buffer, cDispValU.get(), -1);
}
else
{
@@ -1252,7 +1282,7 @@ GtkNSSDialogs::ViewCert(nsIInterfaceRequestor *ctx,
{
GtkWidget *dialog, *widget;
GladeXML *gxml;
- nsAutoString value;
+ nsEmbedString value;
nsresult rv;
PRUint32 verifystate, count;
PRUnichar ** usage;
@@ -1327,8 +1357,11 @@ GtkNSSDialogs::ViewCert(nsIInterfaceRequestor *ctx,
GtkWidget *indent;
for (PRUint32 i = 0 ; i < count ; i++)
{
- const nsACString &msg = NS_ConvertUTF16toUTF8 (usage[i]);
- GtkWidget *label = gtk_label_new(PromiseFlatCString(msg).get());
+ nsEmbedCString msg;
+ NS_UTF16ToCString (nsEmbedString(usage[i]),
+ NS_CSTRING_ENCODING_UTF8, msg);
+
+ GtkWidget *label = gtk_label_new(msg.get());
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0);
nsMemory::Free (usage[i]);
diff --git a/embed/mozilla/GtkNSSKeyPairDialogs.cpp b/embed/mozilla/GtkNSSKeyPairDialogs.cpp
index b32f8bd0d..2b1b0e113 100644
--- a/embed/mozilla/GtkNSSKeyPairDialogs.cpp
+++ b/embed/mozilla/GtkNSSKeyPairDialogs.cpp
@@ -41,6 +41,8 @@
#ifdef HAVE_MOZILLA_PSM
+#include "mozilla-version.h"
+
#include "MozillaPrivate.h"
#include <nsIServiceManager.h>
@@ -91,7 +93,7 @@ public:
NS_DECL_ISUPPORTS
NS_DECL_NSIDOMWINDOWINTERNAL
NS_DECL_NSIDOMWINDOW
-#if MOZILLA_SNAPSHOT >= 19
+#if (MOZILLA_CHECK_VERSION4 (1, 7, MOZILLA_RC, 3) && !MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)) || MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 2)
NS_DECL_NSIDOMWINDOW2
#endif
@@ -101,7 +103,7 @@ public:
gboolean close_called;
};
-#if MOZILLA_SNAPSHOT >= 19
+#if (MOZILLA_CHECK_VERSION4 (1, 7, MOZILLA_RC, 3) && !MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)) || MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 2)
NS_IMPL_ISUPPORTS3(KeyPairHelperWindow, nsIDOMWindowInternal, nsIDOMWindow, nsIDOMWindow2)
#else
NS_IMPL_ISUPPORTS2(KeyPairHelperWindow, nsIDOMWindowInternal, nsIDOMWindow)
@@ -249,13 +251,6 @@ NS_IMETHODIMP KeyPairHelperWindow::GetWindow(nsIDOMWindowInternal * *aWindow)
MOZ_NOT_IMPLEMENTED
}
-#if MOZILLA_SNAPSHOT >= 19
-NS_IMETHODIMP KeyPairHelperWindow::GetWindowRoot(nsIDOMEventTarget * *aEvent)
-{
- MOZ_NOT_IMPLEMENTED
-}
-#endif
-
/* readonly attribute nsIDOMWindowInternal self; */
NS_IMETHODIMP KeyPairHelperWindow::GetSelf(nsIDOMWindowInternal * *aSelf)
{
@@ -719,4 +714,13 @@ NS_IMETHODIMP KeyPairHelperWindow::SizeToContent()
MOZ_NOT_IMPLEMENTED
}
+#if (MOZILLA_CHECK_VERSION4 (1, 7, MOZILLA_RC, 3) && !MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)) || MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 2)
+
+NS_IMETHODIMP KeyPairHelperWindow::GetWindowRoot(nsIDOMEventTarget * *aWindowRoot)
+{
+ MOZ_NOT_IMPLEMENTED
+}
+
+#endif
+
#endif
diff --git a/embed/mozilla/Makefile.am b/embed/mozilla/Makefile.am
index 249b5feaf..17824d88a 100644
--- a/embed/mozilla/Makefile.am
+++ b/embed/mozilla/Makefile.am
@@ -5,14 +5,12 @@ INCLUDES = \
$(MOZILLA_COMPONENT_CFLAGS) \
-I$(MOZILLA_INCLUDE_ROOT) \
-I$(MOZILLA_INCLUDE_ROOT)/chardet \
- -I$(MOZILLA_INCLUDE_ROOT)/chrome \
+ -I$(MOZILLA_INCLUDE_ROOT)/commandhandler \
-I$(MOZILLA_INCLUDE_ROOT)/content \
-I$(MOZILLA_INCLUDE_ROOT)/cookie \
- -I$(MOZILLA_INCLUDE_ROOT)/commandhandler \
-I$(MOZILLA_INCLUDE_ROOT)/docshell \
-I$(MOZILLA_INCLUDE_ROOT)/dom \
-I$(MOZILLA_INCLUDE_ROOT)/exthandler \
- -I$(MOZILLA_INCLUDE_ROOT)/find \
-I$(MOZILLA_INCLUDE_ROOT)/gfx \
-I$(MOZILLA_INCLUDE_ROOT)/helperAppDlg \
-I$(MOZILLA_INCLUDE_ROOT)/history \
@@ -22,23 +20,16 @@ INCLUDES = \
-I$(MOZILLA_INCLUDE_ROOT)/necko \
-I$(MOZILLA_INCLUDE_ROOT)/nkcache \
-I$(MOZILLA_INCLUDE_ROOT)/pipnss \
- -I$(MOZILLA_INCLUDE_ROOT)/pref \
- -I$(MOZILLA_INCLUDE_ROOT)/progressDlg \
-I$(MOZILLA_INCLUDE_ROOT)/shistory \
- -I$(MOZILLA_INCLUDE_ROOT)/string \
- -I$(MOZILLA_INCLUDE_ROOT)/unicharutil \
-I$(MOZILLA_INCLUDE_ROOT)/uriloader \
- -I$(MOZILLA_INCLUDE_ROOT)/wallet \
-I$(MOZILLA_INCLUDE_ROOT)/webbrowserpersist \
-I$(MOZILLA_INCLUDE_ROOT)/webbrwsr \
- -I$(MOZILLA_INCLUDE_ROOT)/webshell \
-I$(MOZILLA_INCLUDE_ROOT)/widget \
-I$(MOZILLA_INCLUDE_ROOT)/windowwatcher \
- -I$(MOZILLA_INCLUDE_ROOT)/xpcom \
+ -I$(MOZILLA_INCLUDE_ROOT)/xmlextras \
$(EPIPHANY_DEPENDENCY_CFLAGS) \
-DSHARE_DIR=\"$(pkgdatadir)\" \
-DALLOW_PRIVATE_API \
- -DALLOW_PRIVATE_STRINGS \
-include $(MOZILLA_INCLUDE_ROOT)/mozilla-config.h
if MAINTAINER_MODE
@@ -61,6 +52,8 @@ libephymozillaembed_la_SOURCES = \
EphyBrowser.h \
EphySingle.cpp \
EphySingle.h \
+ EphyUtils.cpp \
+ EphyUtils.h \
EventContext.cpp \
EventContext.h \
FilePicker.cpp \
@@ -92,4 +85,5 @@ libephymozillaembed_la_SOURCES = \
mozilla-embed-single.cpp \
mozilla-embed-single.h \
mozilla-notifiers.cpp \
- mozilla-notifiers.h
+ mozilla-notifiers.h \
+ mozilla-version.h
diff --git a/embed/mozilla/MozDownload.cpp b/embed/mozilla/MozDownload.cpp
index b50161c38..cd836599b 100644
--- a/embed/mozilla/MozDownload.cpp
+++ b/embed/mozilla/MozDownload.cpp
@@ -45,21 +45,21 @@
#include "config.h"
#endif
-#include "MozDownload.h"
+#include "mozilla-version.h"
+
#include "mozilla-download.h"
#include "eel-gconf-extensions.h"
#include "ephy-prefs.h"
#include "ephy-file-helpers.h"
#include "ephy-debug.h"
+#include "MozDownload.h"
+#include "EphyUtils.h"
#include <libgnomevfs/gnome-vfs-utils.h>
#include <glib/gi18n.h>
#include <nsIFileURL.h>
-
-#ifdef ALLOW_PRIVATE_STRINGS
-#include "nsNetUtil.h"
-#endif
+#include <nsEmbedString.h>
const char* const persistContractID = "@mozilla.org/embedding/browser/nsWebBrowserPersist;1";
@@ -79,18 +79,10 @@ MozDownload::~MozDownload()
NS_ASSERTION (!mEphyDownload, "MozillaDownload still alive!");
}
-#if MOZILLA_SNAPSHOT < 16
-NS_IMPL_ISUPPORTS2(MozDownload, nsIDownload, nsIWebProgressListener)
-#else
NS_IMPL_ISUPPORTS3(MozDownload, nsIDownload, nsITransfer, nsIWebProgressListener)
-#endif
NS_IMETHODIMP
-#if MOZILLA_SNAPSHOT < 16
-MozDownload::InitForEmbed (nsIURI *aSource, nsILocalFile *aTarget, const PRUnichar *aDisplayName,
-#else
MozDownload::InitForEmbed (nsIURI *aSource, nsIURI *aTarget, const PRUnichar *aDisplayName,
-#endif
nsIMIMEInfo *aMIMEInfo, PRInt64 startTime, nsIWebBrowserPersist *aPersist,
MozillaEmbedPersist *aEmbedPersist, PRInt32 aMaxSize)
{
@@ -100,15 +92,9 @@ MozDownload::InitForEmbed (nsIURI *aSource, nsIURI *aTarget, const PRUnichar *aD
}
/* void init (in nsIURI aSource, in nsIURI aTarget, in wstring aDisplayName, in nsIMIMEInfo aMIMEInfo, in long long startTime, in nsIWebBrowserPersist aPersist); */
-#if MOZILLA_SNAPSHOT < 16
-NS_IMETHODIMP
-MozDownload::Init(nsIURI *aSource, nsILocalFile *aTarget, const PRUnichar *aDisplayName,
- nsIMIMEInfo *aMIMEInfo, PRInt64 startTime, nsIWebBrowserPersist *aPersist)
-#else
NS_IMETHODIMP
MozDownload::Init(nsIURI *aSource, nsIURI *aTarget, const PRUnichar *aDisplayName,
nsIMIMEInfo *aMIMEInfo, PRInt64 startTime, nsIWebBrowserPersist *aPersist)
-#endif
{
PRBool addToView = PR_TRUE;
@@ -165,13 +151,8 @@ MozDownload::GetSource(nsIURI **aSource)
return NS_OK;
}
-#if MOZILLA_SNAPSHOT < 16
-NS_IMETHODIMP
-MozDownload::GetTarget(nsILocalFile **aTarget)
-#else
NS_IMETHODIMP
MozDownload::GetTarget(nsIURI **aTarget)
-#endif
{
NS_ENSURE_ARG_POINTER(aTarget);
NS_IF_ADDREF(*aTarget = mDestination);
@@ -179,7 +160,6 @@ MozDownload::GetTarget(nsIURI **aTarget)
return NS_OK;
}
-#if MOZILLA_SNAPSHOT > 15
NS_IMETHODIMP
MozDownload::GetTargetFile (nsILocalFile** aTargetFile)
{
@@ -194,7 +174,6 @@ MozDownload::GetTargetFile (nsILocalFile** aTargetFile)
rv = CallQueryInterface(file, aTargetFile);
return rv;
}
-#endif
NS_IMETHODIMP
MozDownload::GetPersist(nsIWebBrowserPersist **aPersist)
@@ -347,45 +326,49 @@ MozDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest,
else if (NS_SUCCEEDED (aStatus))
{
GnomeVFSMimeApplication *helperApp;
-#if MOZILLA_SNAPSHOT < 18
- char *mimeType;
- rv = mMIMEInfo->GetMIMEType (&mimeType);
+#if MOZILLA_CHECK_VERSION4 (1, 8, MOZILLA_ALPHA, 1)
+ nsEmbedCString mimeType;
+ rv = mMIMEInfo->GetMIMEType (mimeType);
NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
- helperApp = gnome_vfs_mime_get_default_application (mimeType);
+ helperApp = gnome_vfs_mime_get_default_application (mimeType.get());
- PRUnichar *description;
- mMIMEInfo->GetApplicationDescription (&description);
+ nsEmbedString description;
+ mMIMEInfo->GetApplicationDescription (description);
+
+ nsEmbedCString cDesc;
+ NS_UTF16ToCString (description, NS_CSTRING_ENCODING_UTF8, cDesc);
/* HACK we use the application description to decide
if we have to open the saved file */
- if ((strcmp (NS_ConvertUTF16toUTF8 (description).get(), "gnome-default") == 0) &&
+ if ((strcmp (cDesc.get(), "gnome-default") == 0) &&
helperApp)
#else
- nsCAutoString mimeType;
- rv = mMIMEInfo->GetMIMEType (mimeType);
+ char *mimeType;
+ rv = mMIMEInfo->GetMIMEType (&mimeType);
NS_ENSURE_SUCCESS (rv, NS_ERROR_FAILURE);
- helperApp = gnome_vfs_mime_get_default_application (mimeType.get());
+ helperApp = gnome_vfs_mime_get_default_application (mimeType);
- nsAutoString description;
- mMIMEInfo->GetApplicationDescription (description);
+ PRUnichar *description;
+ mMIMEInfo->GetApplicationDescription (&description);
+
+ nsEmbedCString cDesc;
+ NS_UTF16ToCString (nsEmbedString(description),
+ NS_CSTRING_ENCODING_UTF8, cDesc);
/* HACK we use the application description to decide
if we have to open the saved file */
- if ((strcmp (NS_ConvertUCS2toUTF8 (description).get(), "gnome-default") == 0) &&
+ if (strcmp (cDesc.get(), "gnome-default") == 0 &&
helperApp)
#endif
{
GList *params = NULL;
char *param;
- nsCAutoString aDest;
+ nsEmbedCString aDest;
-#if MOZILLA_SNAPSHOT < 16
- mDestination->GetNativePath (aDest);
-#else
mDestination->GetSpec (aDest);
-#endif
+
param = gnome_vfs_make_uri_canonical (aDest.get ());
params = g_list_append (params, param);
gnome_vfs_mime_application_launch (helperApp, params);
@@ -393,10 +376,7 @@ MozDownload::OnStateChange (nsIWebProgress *aWebProgress, nsIRequest *aRequest,
g_list_free (params);
}
-#if MOZILLA_SNAPSHOT < 16
- nsMemory::Free (mimeType);
- nsMemory::Free (description);
-#endif
+
gnome_vfs_mime_application_free (helperApp);
}
}
@@ -528,21 +508,19 @@ nsresult InitiateMozillaDownload (nsIDOMDocument *domDocument, nsIURI *sourceURI
PRInt64 timeNow = PR_Now();
- nsAutoString fileDisplayName;
+ nsEmbedString fileDisplayName;
inDestFile->GetLeafName(fileDisplayName);
- #if MOZILLA_SNAPSHOT >= 16
+ nsCOMPtr<nsIIOService> ioService;
+ rv = EphyUtils::GetIOService (getter_AddRefs (ioService));
+ NS_ENSURE_SUCCESS (rv, rv);
+
nsCOMPtr<nsIURI> destURI;
- NS_NewFileURI (getter_AddRefs(destURI), inDestFile);
- #endif
+ ioService->NewFileURI (inDestFile, getter_AddRefs(destURI));
MozDownload *downloader = new MozDownload ();
/* dlListener attaches to its progress dialog here, which gains ownership */
- #if MOZILLA_SNAPSHOT < 16
- rv = downloader->InitForEmbed (inOriginalURI, inDestFile, fileDisplayName.get(),
- #else
rv = downloader->InitForEmbed (inOriginalURI, destURI, fileDisplayName.get(),
- #endif
nsnull, timeNow, webPersist, embedPersist, aMaxSize);
NS_ENSURE_SUCCESS (rv, rv);
@@ -573,24 +551,22 @@ nsresult InitiateMozillaDownload (nsIDOMDocument *domDocument, nsIURI *sourceURI
* will create the directory as needed.
*/
- filesFolder = do_CreateInstance("@mozilla.org/file/local;1");
- nsAutoString unicodePath;
- inDestFile->GetPath(unicodePath);
- filesFolder->InitWithPath(unicodePath);
-
- nsAutoString leafName;
- filesFolder->GetLeafName(leafName);
- nsAutoString nameMinusExt(leafName);
- PRInt32 index = nameMinusExt.RFind(".");
- if (index >= 0)
+ nsEmbedCString cPath;
+ inDestFile->GetNativePath (cPath);
+
+ GString *path = g_string_new (cPath.get());
+ char *dot_pos = strchr (path->str, '.');
+ if (dot_pos)
{
- nameMinusExt.Left(nameMinusExt, index);
+ g_string_truncate (path, dot_pos - path->str);
}
+ g_string_append (path, " ");
+ g_string_append (path, _("Files"));
+
+ filesFolder = do_CreateInstance ("@mozilla.org/file/local;1");
+ filesFolder->InitWithNativePath (nsEmbedCString(path->str));
- nameMinusExt += NS_LITERAL_STRING (" ");
- nameMinusExt += NS_ConvertUTF8toUTF16 (_("Files"));
-
- filesFolder->SetLeafName(nameMinusExt);
+ g_string_free (path, TRUE);
rv = webPersist->SaveDocument (domDocument, inDestFile, filesFolder,
contentType, encodingFlags, 80);
@@ -684,7 +660,7 @@ nsresult BuildDownloadPath (const char *defaultFileName, nsILocalFile **_retval)
}
nsCOMPtr <nsILocalFile> destFile (do_CreateInstance(NS_LOCAL_FILE_CONTRACTID));
- destFile->InitWithNativePath (nsDependentCString (path));
+ destFile->InitWithNativePath (nsEmbedCString (path));
g_free (path);
NS_IF_ADDREF (*_retval = destFile);
diff --git a/embed/mozilla/MozDownload.h b/embed/mozilla/MozDownload.h
index 2f4042868..ed01d248e 100644
--- a/embed/mozilla/MozDownload.h
+++ b/embed/mozilla/MozDownload.h
@@ -61,10 +61,6 @@
#include <nsIRequest.h>
#include <nsIMIMEInfo.h>
-#ifdef ALLOW_PRIVATE_API
-#include <nsString.h>
-#endif
-
#include <libgnomevfs/gnome-vfs-mime-handlers.h>
/* MozDownload
@@ -103,9 +99,7 @@ public:
virtual ~MozDownload();
NS_DECL_ISUPPORTS
-#if MOZILLA_SNAPSHOT > 15
NS_DECL_NSITRANSFER
-#endif
NS_DECL_NSIDOWNLOAD
NS_DECL_NSIWEBPROGRESSLISTENER
@@ -117,25 +111,15 @@ public:
nsresult GetCurrentProgress (PRInt32 *aCurrentProgress);
nsresult GetTotalProgress (PRInt32 *aTProgress);
nsresult GetElapsedTime (PRInt64 *aTProgress);
-#if MOZILLA_SNAPSHOT < 16
- nsresult InitForEmbed (nsIURI *aSource, nsILocalFile *aTarget,
- const PRUnichar *aDisplayName, nsIMIMEInfo *aMIMEInfo,
- PRInt64 startTime, nsIWebBrowserPersist *aPersist,
- MozillaEmbedPersist *aEmbedPersist, PRInt32 aMaxSize);
-#else
nsresult InitForEmbed (nsIURI *aSource, nsIURI *aTarget,
const PRUnichar *aDisplayName, nsIMIMEInfo *aMIMEInfo,
PRInt64 startTime, nsIWebBrowserPersist *aPersist,
MozillaEmbedPersist *aEmbedPersist, PRInt32 aMaxSize);
-#endif
protected:
nsCOMPtr<nsIURI> mSource;
-#if MOZILLA_SNAPSHOT < 16
- nsCOMPtr<nsILocalFile> mDestination;
-#else
nsCOMPtr<nsIURI> mDestination;
-#endif
+
nsCOMPtr<nsIMIMEInfo> mMIMEInfo;
PRInt64 mLastUpdate;
PRInt64 mStartTime;
diff --git a/embed/mozilla/MozRegisterComponents.cpp b/embed/mozilla/MozRegisterComponents.cpp
index a99f15b10..c3247e58a 100644
--- a/embed/mozilla/MozRegisterComponents.cpp
+++ b/embed/mozilla/MozRegisterComponents.cpp
@@ -37,9 +37,8 @@
#include "GtkNSSKeyPairDialogs.h"
#endif
-#if MOZILLA_SNAPSHOT > 13
+#include <nsMemory.h>
#include <nsDocShellCID.h>
-#endif
#include <nsIGenericFactory.h>
#include <nsIComponentRegistrar.h>
#include <nsICategoryManager.h>
@@ -72,11 +71,12 @@ RegisterContentPolicy(nsIComponentManager *aCompMgr, nsIFile *aPath,
do_GetService(NS_CATEGORYMANAGER_CONTRACTID);
NS_ENSURE_TRUE (cm, NS_ERROR_FAILURE);
- nsXPIDLCString oldval;
+ char *oldval;
return cm->AddCategoryEntry("content-policy",
EPHY_CONTENT_POLICY_CONTRACTID,
EPHY_CONTENT_POLICY_CONTRACTID,
- PR_TRUE, PR_TRUE, getter_Copies (oldval));
+ PR_TRUE, PR_TRUE, &oldval);
+ nsMemory::Free (oldval);
}
static const nsModuleComponentInfo sAppComps[] = {
@@ -127,11 +127,7 @@ static const nsModuleComponentInfo sAppComps[] = {
{
EPHY_GLOBALHISTORY_CLASSNAME,
EPHY_GLOBALHISTORY_CID,
-#if MOZILLA_SNAPSHOT > 13
NS_GLOBALHISTORY2_CONTRACTID,
-#else
- NS_GLOBALHISTORY_CONTRACTID,
-#endif
MozGlobalHistoryConstructor
},
{
diff --git a/embed/mozilla/MozillaPrivate.cpp b/embed/mozilla/MozillaPrivate.cpp
index cfd69173e..3fd0e57ab 100644
--- a/embed/mozilla/MozillaPrivate.cpp
+++ b/embed/mozilla/MozillaPrivate.cpp
@@ -27,17 +27,13 @@
#include "MozillaPrivate.h"
+#include <nsEmbedString.h>
#include <nsIServiceManagerUtils.h>
#include <nsIWindowWatcher.h>
#include <nsIEmbeddingSiteWindow.h>
#include <nsIWebBrowserChrome.h>
#include <gtkmozembed.h>
-#ifdef ALLOW_PRIVATE_STRINGS
-#include "nsString.h"
-#include "nsReadableUtils.h"
-#endif
-
GtkWidget *MozillaFindEmbed (nsIDOMWindow *aDOMWindow)
{
if (!aDOMWindow) return nsnull;
@@ -108,23 +104,44 @@ NS_METHOD MozillaCollatePrintSettings (const EmbedPrintInfo *info,
options->SetMarginLeft (MM_TO_INCH (info->left_margin));
options->SetMarginRight (MM_TO_INCH (info->right_margin));
- options->SetPrinterName(NS_LITERAL_STRING("PostScript/default").get());
+ PRUnichar postscript[] = { 'P', 'o', 's', 't', 's', 'c', 'r', 'i',
+ 'p', 't', '/', 'd', 'e', 'f', 'a', 'u',
+ 'l', 't', '\0' };
+ options->SetPrinterName(postscript);
- options->SetHeaderStrLeft(NS_ConvertUTF8toUTF16(info->header_left_string).get());
+ nsEmbedString tmp;
- options->SetHeaderStrCenter(NS_ConvertUTF8toUTF16(info->header_center_string).get());
+ NS_CStringToUTF16 (nsEmbedCString(info->header_left_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetHeaderStrLeft (tmp.get());
- options->SetHeaderStrRight(NS_ConvertUTF8toUTF16(info->header_right_string).get());
+ NS_CStringToUTF16 (nsEmbedCString(info->header_center_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetHeaderStrCenter (tmp.get());
- options->SetFooterStrLeft(NS_ConvertUTF8toUTF16(info->footer_left_string).get());
+ NS_CStringToUTF16 (nsEmbedCString(info->header_right_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetHeaderStrRight (tmp.get());
- options->SetFooterStrCenter(NS_ConvertUTF8toUTF16(info->footer_center_string).get());
+ NS_CStringToUTF16 (nsEmbedCString(info->footer_left_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetFooterStrLeft (tmp.get());
- options->SetFooterStrRight(NS_ConvertUTF8toUTF16(info->footer_right_string).get());
+ NS_CStringToUTF16 (nsEmbedCString(info->footer_center_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetFooterStrCenter(tmp.get());
- options->SetToFileName (NS_ConvertUTF8toUTF16(info->file).get());
+ NS_CStringToUTF16 (nsEmbedCString(info->footer_right_string),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetFooterStrRight(tmp.get());
- options->SetPrintCommand (NS_ConvertUTF8toUTF16(info->printer).get());
+ NS_CStringToUTF16 (nsEmbedCString(info->file),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetToFileName (tmp.get());
+
+ NS_CStringToUTF16 (nsEmbedCString(info->printer),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetPrintCommand (tmp.get());
/**
* Work around a mozilla bug where paper size & orientation are ignored
@@ -143,7 +160,10 @@ NS_METHOD MozillaCollatePrintSettings (const EmbedPrintInfo *info,
/* native paper size formats. Our dialog does not support custom yet */
options->SetPaperSize (nsIPrintSettings::kPaperSizeNativeData);
- options->SetPaperName (NS_ConvertUTF8toUTF16(info->paper).get());
+
+ NS_CStringToUTF16 (nsEmbedCString(info->paper),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ options->SetPaperName (tmp.get());
options->SetPrintInColor (info->print_color);
options->SetOrientation (info->orientation);
diff --git a/embed/mozilla/mozilla-download.cpp b/embed/mozilla/mozilla-download.cpp
index 455c875a1..0ad8dc2c6 100644
--- a/embed/mozilla/mozilla-download.cpp
+++ b/embed/mozilla/mozilla-download.cpp
@@ -87,11 +87,7 @@ impl_get_target (EphyDownload *download)
mozDownload = MOZILLA_DOWNLOAD (download)->priv->moz_download;
-#if MOZILLA_SNAPSHOT < 16
- mozDownload->GetTarget (getter_AddRefs (targetFile));
-#else
mozDownload->GetTargetFile (getter_AddRefs (targetFile));
-#endif
nsCAutoString tempPathStr;
targetFile->GetNativePath (tempPathStr);
diff --git a/embed/mozilla/mozilla-embed-persist.cpp b/embed/mozilla/mozilla-embed-persist.cpp
index 7b20ad197..b014fd97e 100644
--- a/embed/mozilla/mozilla-embed-persist.cpp
+++ b/embed/mozilla/mozilla-embed-persist.cpp
@@ -29,6 +29,7 @@
#include "EphyBrowser.h"
#include "EphyHeaderSniffer.h"
#include "MozDownload.h"
+#include "EphyUtils.h"
#include <stddef.h>
@@ -36,13 +37,9 @@
#include <nsCWebBrowserPersist.h>
#include <nsIHistoryEntry.h>
#include <nsISHEntry.h>
-
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#include <nsNetUtil.h>
-#include <nsIDocumentEncoder.h>
-#include <nsIDocument.h>
-#endif
+#include <nsIDOMSerializer.h>
+#include <nsIIOService.h>
+#include <nsNetCID.h>
static void
mozilla_embed_persist_class_init (MozillaEmbedPersistClass *klass);
@@ -176,12 +173,12 @@ impl_save (EphyEmbedPersist *persist)
if (tmp_filename == NULL) return FALSE;
nsCOMPtr<nsILocalFile> tmpFile = do_CreateInstance (NS_LOCAL_FILE_CONTRACTID);
- tmpFile->InitWithNativePath (nsDependentCString (tmp_filename));
+ tmpFile->InitWithNativePath (nsEmbedCString (tmp_filename));
g_free (tmp_filename);
/* Get the uri to save to */
nsCOMPtr<nsIURI> inURI;
- nsCAutoString sURI;
+ nsEmbedCString sURI;
if (uri)
{
sURI.Assign (uri);
@@ -191,8 +188,9 @@ impl_save (EphyEmbedPersist *persist)
rv = browser->GetDocumentUrl (sURI);
NS_ENSURE_SUCCESS (rv, FALSE);
}
- NS_NewURI(getter_AddRefs(inURI), sURI);
- if (!inURI) return FALSE;
+
+ rv = EphyUtils::NewURI (getter_AddRefs(inURI), sURI);
+ NS_ENSURE_SUCCESS (rv, FALSE);
/* Get post data */
nsCOMPtr<nsIInputStream> postData;
@@ -262,7 +260,7 @@ impl_save (EphyEmbedPersist *persist)
{
/* Filename to save to */
nsCOMPtr<nsILocalFile> destFile;
- NS_NewNativeLocalFile (nsDependentCString(filename),
+ NS_NewNativeLocalFile (nsEmbedCString(filename),
PR_TRUE, getter_AddRefs(destFile));
NS_ENSURE_TRUE (destFile, FALSE);
@@ -309,19 +307,20 @@ impl_to_string (EphyEmbedPersist *persist)
}
if (NS_FAILED(rv) || !DOMDocument) return NULL;
- nsCOMPtr<nsIDocument> doc = do_QueryInterface(DOMDocument);
- if(!doc) return NULL;
+ nsCOMPtr<nsIDOMNode> node = do_QueryInterface(DOMDocument);
+ if (!node) return NULL;
- nsCOMPtr<nsIDocumentEncoder> encoder = do_CreateInstance(NS_DOC_ENCODER_CONTRACTID_BASE "text/html");
- NS_ENSURE_SUCCESS(rv, NULL);
+ nsCOMPtr<nsIDOMSerializer> serializer;
+ serializer = do_CreateInstance(NS_XMLSERIALIZER_CONTRACTID, &rv);
+ NS_ENSURE_SUCCESS (rv, FALSE);
- rv = encoder->Init(doc, NS_LITERAL_STRING("text/html"), nsIDocumentEncoder::OutputAbsoluteLinks);
- NS_ENSURE_SUCCESS(rv, NULL);
+ nsEmbedString outString;
+ serializer->SerializeToString(node, outString);
- nsAutoString aOutputString;
- encoder->EncodeToString(aOutputString);
+ nsEmbedCString cOutString;
+ NS_UTF16ToCString (outString, NS_CSTRING_ENCODING_UTF8, cOutString);
- return g_strdup (NS_ConvertUTF16toUTF8(aOutputString).get());
+ return g_strdup (cOutString.get());
}
static GObject *
diff --git a/embed/mozilla/mozilla-embed-single.cpp b/embed/mozilla/mozilla-embed-single.cpp
index 939ebd2bb..5e8fb8cb8 100644
--- a/embed/mozilla/mozilla-embed-single.cpp
+++ b/embed/mozilla/mozilla-embed-single.cpp
@@ -40,11 +40,14 @@
#include "ephy-embed-prefs.h"
#include "MozRegisterComponents.h"
#include "EphySingle.h"
+#include "EphyUtils.h"
#include <glib/gi18n.h>
#include <libgnomevfs/gnome-vfs-utils.h>
#include <nsCOMPtr.h>
+#include <nsMemory.h>
+#include <nsEmbedString.h>
#include <nsIPrefService.h>
#include <nsIServiceManager.h>
#include <nsIIOService.h>
@@ -71,12 +74,7 @@
#include <nsIHttpAuthManager.h>
#include <nsICacheService.h>
#include <nsIFontEnumerator.h>
-#endif
-
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsString.h>
-#include <nsReadableUtils.h>
-#include <nsNetUtil.h>
+#include <nsNetCID.h>
#endif
#define MOZILLA_PROFILE_DIR "/mozilla"
@@ -190,7 +188,7 @@ mozilla_set_default_prefs (MozillaEmbedSingle *mes)
/* read our predefined default prefs */
nsresult rv;
nsCOMPtr<nsILocalFile> file;
- NS_NewNativeLocalFile(NS_LITERAL_CSTRING(DEFAULT_PROFILE_FILE),
+ NS_NewNativeLocalFile(nsEmbedCString(DEFAULT_PROFILE_FILE),
PR_TRUE, getter_AddRefs(file));
if (!file) return FALSE;
@@ -398,13 +396,13 @@ static nsresult
mozilla_init_chrome (void)
{
nsresult result;
- nsAutoString uiLang;
+ nsEmbedString uiLang;
nsCOMPtr<nsIXULChromeRegistry> chromeRegistry = do_GetService (NS_CHROMEREGISTRY_CONTRACTID);
NS_ENSURE_TRUE (chromeRegistry, NS_ERROR_FAILURE);
// Set skin to 'classic' so we get native scrollbars.
- result = chromeRegistry->SelectSkin (NS_LITERAL_CSTRING("classic/1.0"), PR_FALSE);
+ result = chromeRegistry->SelectSkin (nsEmbedCString("classic/1.0"), PR_FALSE);
NS_ENSURE_SUCCESS (result, NS_ERROR_FAILURE);
// set locale
@@ -414,7 +412,10 @@ mozilla_init_chrome (void)
result = getUILang(uiLang);
NS_ENSURE_SUCCESS (result, NS_ERROR_FAILURE);
- return chromeRegistry->SelectLocale (NS_ConvertUTF16toUTF8(uiLang), PR_FALSE);
+ nsEmbedCString cUILang;
+ NS_UTF16ToCString (uiLang, NS_CSTRING_ENCODING_UTF8, cUILang);
+
+ return chromeRegistry->SelectLocale (cUILang, PR_FALSE);
}
static void
@@ -582,7 +583,10 @@ impl_get_font_list (EphyEmbedSingle *shell,
{
char *gFontString;
- gFontString = g_strdup (NS_ConvertUTF16toUTF8 (fontArray[i]).get());
+ nsEmbedCString tmp;
+ NS_UTF16ToCString (nsEmbedString(fontArray[i]),
+ NS_CSTRING_ENCODING_UTF8, tmp);
+ gFontString = g_strdup (tmp.get());
l = g_list_prepend (l, gFontString);
nsMemory::Free (fontArray[i]);
}
@@ -631,9 +635,9 @@ impl_remove_cookie (EphyCookieManager *manager,
do_GetService (NS_COOKIEMANAGER_CONTRACTID);
if (!cookieManager) return;
- cookieManager->Remove (nsDependentCString(cookie->domain),
- nsDependentCString(cookie->name),
- nsDependentCString(cookie->path),
+ cookieManager->Remove (nsEmbedCString(cookie->domain),
+ nsEmbedCString(cookie->name),
+ nsEmbedCString(cookie->path),
PR_FALSE /* block */);
}
@@ -672,18 +676,22 @@ impl_list_passwords (EphyPasswordManager *manager)
passwordEnumerator->GetNext (getter_AddRefs(nsPassword));
if (!nsPassword) continue;
- nsCAutoString transfer;
+ nsEmbedCString transfer;
rv = nsPassword->GetHost (transfer);
if (NS_FAILED (rv)) continue;
- nsAutoString unicodeName;
+ nsEmbedString unicodeName;
rv = nsPassword->GetUser (unicodeName);
if (NS_FAILED (rv)) continue;
+ nsEmbedCString userName;
+ NS_UTF16ToCString (unicodeName,
+ NS_CSTRING_ENCODING_UTF8, userName);
+
EphyPasswordInfo *p = g_new0 (EphyPasswordInfo, 1);
p->host = g_strdup (transfer.get());
- p->username = g_strdup(NS_ConvertUTF16toUTF8(unicodeName).get());
+ p->username = g_strdup (userName.get());
p->password = NULL;
passwords = g_list_prepend (passwords, p);
@@ -701,8 +709,10 @@ impl_remove_password (EphyPasswordManager *manager,
do_GetService (NS_PASSWORDMANAGER_CONTRACTID);
if (!pm) return;
- pm->RemoveUser (nsDependentCString(info->host),
- NS_ConvertUTF8toUTF16(nsDependentCString(info->username)));
+ nsEmbedString userName;
+ NS_CStringToUTF16 (nsEmbedCString(info->username),
+ NS_CSTRING_ENCODING_UTF8, userName);
+ pm->RemoveUser (nsEmbedCString(info->host), userName);
}
static const char *permission_type_string [] =
@@ -726,7 +736,7 @@ impl_permission_manager_add (EphyPermissionManager *manager,
if (!pm) return;
nsCOMPtr<nsIURI> uri;
- NS_NewURI(getter_AddRefs(uri), host);
+ EphyUtils::NewURI(getter_AddRefs(uri), nsEmbedCString(host));
if (!uri) return;
gboolean allow = (permission == EPHY_PERMISSION_ALLOWED);
@@ -746,7 +756,7 @@ impl_permission_manager_remove (EphyPermissionManager *manager,
(do_GetService (NS_PERMISSIONMANAGER_CONTRACTID));
if (!pm) return;
- pm->Remove (nsDependentCString (host), permission_type_string [type]);
+ pm->Remove (nsEmbedCString (host), permission_type_string [type]);
}
void
@@ -769,7 +779,7 @@ impl_permission_manager_test (EphyPermissionManager *manager,
if (!pm) return EPHY_PERMISSION_DEFAULT;
nsCOMPtr<nsIURI> uri;
- NS_NewURI(getter_AddRefs(uri), host);
+ EphyUtils::NewURI(getter_AddRefs(uri), nsEmbedCString (host));
if (!uri) return EPHY_PERMISSION_DEFAULT;
nsresult rv;
@@ -818,11 +828,11 @@ impl_permission_manager_list (EphyPermissionManager *manager,
if (!perm) continue;
nsresult rv;
- nsCAutoString str;
+ nsEmbedCString str;
rv = perm->GetType(str);
if (NS_FAILED (rv)) continue;
- if (str.Equals(permission_type_string[type]))
+ if (strcmp (str.get(), permission_type_string[type]) == 0)
{
EphyPermissionInfo *info =
mozilla_permission_to_ephy_permission (perm);
diff --git a/embed/mozilla/mozilla-embed.cpp b/embed/mozilla/mozilla-embed.cpp
index e5e14e98c..3f12f8e5e 100644
--- a/embed/mozilla/mozilla-embed.cpp
+++ b/embed/mozilla/mozilla-embed.cpp
@@ -32,13 +32,15 @@
#include "MozillaPrivate.h"
#include "EphyBrowser.h"
#include "EventContext.h"
+#include "EphyUtils.h"
#include <gtkmozembed.h>
+#include <nsEmbedString.h>
+#include <nsMemory.h>
#include <nsIURI.h>
-#include <nsIURL.h>
+#include <nsIChannel.h>
#include <nsIRequest.h>
#include <nsIWebProgressListener.h>
-#include <nsIPrintOptions.h>
#include <nsGfxCIID.h>
#ifdef ALLOW_PRIVATE_API
@@ -46,18 +48,12 @@
#include <nsITransportSecurityInfo.h>
#endif
-#ifdef ALLOW_PRIVATE_STRINGS
-#include <nsNetUtil.h>
-#include <nsString.h>
-#endif
-
static void mozilla_embed_class_init (MozillaEmbedClass *klass);
static void mozilla_embed_init (MozillaEmbed *gs);
static void mozilla_embed_destroy (GtkObject *object);
static void mozilla_embed_finalize (GObject *object);
static void ephy_embed_iface_init (EphyEmbedIface *iface);
-static void mozilla_embed_connect_signals (MozillaEmbed *membed);
static void mozilla_embed_location_changed_cb (GtkMozEmbed *embed,
MozillaEmbed *membed);
static void mozilla_embed_net_state_all_cb (GtkMozEmbed *embed,
@@ -85,17 +81,24 @@ static EmbedSecurityLevel mozilla_embed_security_level (MozillaEmbed *membed);
#define MOZILLA_EMBED_GET_PRIVATE(object)(G_TYPE_INSTANCE_GET_PRIVATE ((object), MOZILLA_TYPE_EMBED, MozillaEmbedPrivate))
+typedef enum
+{
+ MOZILLA_EMBED_LOAD_STARTED,
+ MOZILLA_EMBED_LOAD_REDIRECTING,
+ MOZILLA_EMBED_LOAD_LOADING,
+ MOZILLA_EMBED_LOAD_STOPPED
+} MozillaEmbedLoadState;
+
struct MozillaEmbedPrivate
{
EphyBrowser *browser;
nsCOMPtr<nsIRequest> request;
gint security_state;
+ MozillaEmbedLoadState load_state;
};
#define WINDOWWATCHER_CONTRACTID "@mozilla.org/embedcomp/window-watcher;1"
-static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID);
-
static GObjectClass *parent_class = NULL;
static void
@@ -203,9 +206,12 @@ impl_find_set_properties (EphyEmbed *embed,
{
MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv;
- mpriv->browser->FindSetProperties
- ((NS_ConvertUTF8toUTF16(search_string)).get(),
- case_sensitive, wrap_around);
+ nsEmbedString searchString;
+ NS_CStringToUTF16 (nsEmbedCString(search_string),
+ NS_CSTRING_ENCODING_UTF8, searchString);
+
+ mpriv->browser->FindSetProperties (searchString.get(), case_sensitive,
+ wrap_around);
}
static void
@@ -352,44 +358,24 @@ mozilla_embed_get_uri_parent (const char *aUri)
nsresult rv;
nsCOMPtr<nsIURI> uri;
- rv = NS_NewURI (getter_AddRefs(uri), aUri);
+ rv = EphyUtils::NewURI (getter_AddRefs(uri), nsEmbedCString(aUri));
if (NS_FAILED(rv) || !uri) return NULL;
- nsCOMPtr<nsIURL> url = do_QueryInterface(uri, &rv);
- if (NS_FAILED(rv) || !url) return NULL;
-
- nsCAutoString dirPath;
- rv = url->GetDirectory (dirPath);
- if (NS_FAILED(rv) || !dirPath.Length()) return NULL;
-
- nsCAutoString filePath;
- rv = url->GetFilePath (filePath);
- if (NS_FAILED(rv) || !filePath.Length()) return NULL;
-
- PRInt32 pathLength = filePath.Length();
- PRInt32 trailingSlash = filePath.RFind("/");
-
- if(pathLength < 2 || trailingSlash == -1)
- {
- return NULL;
- }
+ nsEmbedCString path;
+ rv = uri->GetPath(path);
+ if (NS_FAILED(rv)) return NULL;
- if(trailingSlash != (pathLength-1))
- {
- uri->SetPath(dirPath);
- }
- else
- {
- PRInt32 nextSlash = filePath.RFind("/",PR_FALSE,trailingSlash-1);
- nsCAutoString parentPath;
- filePath.Left(parentPath, nextSlash);
- uri->SetPath(parentPath);
- }
+ if (!path.Length() || strcmp (path.get(), "/") == 0 ||
+ !strchr (path.get(), '/'))
+ {
+ return NULL;
+ }
- nsCAutoString spec;
- uri->GetSpec(spec);
+ nsEmbedCString parent;
+ rv = uri->Resolve (nsEmbedCString(".."), parent);
+ if (NS_FAILED(rv)) return NULL;
- return !spec.IsEmpty() ? g_strdup(spec.get()) : NULL;
+ return g_strdup (parent.get());
}
static gboolean
@@ -501,18 +487,18 @@ impl_get_location (EphyEmbed *embed,
MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv;
char *l;
nsresult rv;
- nsCAutoString url;
+ nsEmbedCString url;
if (toplevel)
{
rv = mpriv->browser->GetDocumentUrl (url);
- l = (NS_SUCCEEDED (rv) && !url.IsEmpty()) ?
+ l = (NS_SUCCEEDED (rv) && url.Length()) ?
g_strdup (url.get()) : NULL;
}
else
{
rv = mpriv->browser->GetTargetDocumentUrl (url);
- l = (NS_SUCCEEDED (rv) && !url.IsEmpty()) ?
+ l = (NS_SUCCEEDED (rv) && url.Length()) ?
g_strdup (url.get()) : NULL;
}
@@ -537,8 +523,7 @@ impl_reload (EphyEmbed *embed,
static void
impl_set_zoom (EphyEmbed *embed,
- float zoom,
- gboolean reflow)
+ float zoom)
{
EphyBrowser *browser;
nsresult result;
@@ -548,7 +533,7 @@ impl_set_zoom (EphyEmbed *embed,
browser = MOZILLA_EMBED(embed)->priv->browser;
g_return_if_fail (browser != NULL);
- result = browser->SetZoom (zoom, reflow);
+ result = browser->SetZoom (zoom);
if (NS_SUCCEEDED (result))
{
@@ -592,7 +577,7 @@ impl_shistory_get_nth (EphyEmbed *embed,
char **aTitle)
{
nsresult rv;
- nsCAutoString url;
+ nsEmbedCString url;
PRUnichar *title;
MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv;
@@ -603,14 +588,16 @@ impl_shistory_get_nth (EphyEmbed *embed,
rv = mpriv->browser->GetSHUrlAtIndex(nth, url);
- *aUrl = (NS_SUCCEEDED (rv) && !url.IsEmpty()) ? g_strdup(url.get()) : NULL;
+ *aUrl = (NS_SUCCEEDED (rv) && url.Length()) ? g_strdup(url.get()) : NULL;
rv = mpriv->browser->GetSHTitleAtIndex(nth, &title);
if (title)
{
- *aTitle = g_strdup (NS_ConvertUTF16toUTF8(title).get());
-
+ nsEmbedCString cTitle;
+ NS_UTF16ToCString (nsEmbedString(title),
+ NS_CSTRING_ENCODING_UTF8, cTitle);
+ *aTitle = g_strdup (cTitle.get());
nsMemory::Free (title);
}
else
@@ -666,13 +653,17 @@ impl_get_security_level (EphyEmbed *embed,
nsCOMPtr<nsITransportSecurityInfo> secInfo(do_QueryInterface(info));
if (!secInfo) return;
- nsXPIDLString tooltip;
- result = secInfo->GetShortSecurityDescription(getter_Copies(tooltip));
+ PRUnichar *tooltip;
+ result = secInfo->GetShortSecurityDescription(&tooltip);
if (NS_FAILED (result)) return;
if (tooltip)
{
- *description = g_strdup (NS_ConvertUTF16toUTF8(tooltip).get());
+ nsEmbedCString cTooltip;
+ NS_UTF16ToCString (nsEmbedString(tooltip),
+ NS_CSTRING_ENCODING_UTF8, cTooltip);
+ *description = g_strdup (cTooltip.get());
+ nsMemory::Free (tooltip);
}
}
@@ -744,14 +735,14 @@ impl_set_encoding (EphyEmbed *embed,
{
MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv;
nsresult result;
- nsCAutoString currEnc;
+ nsEmbedCString currEnc;
g_return_if_fail (encoding != NULL);
result = mpriv->browser->GetEncoding (currEnc);
if (NS_FAILED (result)) return;
- if (!currEnc.Equals(encoding) ||
+ if (strcmp (currEnc.get(), encoding) != 0 ||
encoding[0] == '\0' && !ephy_embed_has_automatic_encoding (embed))
{
result = mpriv->browser->ForceEncoding (encoding);
@@ -767,11 +758,11 @@ impl_get_encoding (EphyEmbed *embed)
{
MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv;
nsresult result;
- nsCAutoString encoding;
+ nsEmbedCString encoding;
result = mpriv->browser->GetEncoding (encoding);
- if (NS_FAILED (result) || encoding.IsEmpty())
+ if (NS_FAILED (result) || !encoding.Length())
{
return NULL;
}
@@ -784,11 +775,11 @@ impl_has_automatic_encoding (EphyEmbed *embed)
{
MozillaEmbedPrivate *mpriv = MOZILLA_EMBED(embed)->priv;
nsresult result;
- nsCAutoString encoding;
+ nsEmbedCString encoding;
result = mpriv->browser->GetForcedEncoding (encoding);
- if (NS_FAILED (result) || encoding.IsEmpty())
+ if (NS_FAILED (result) || !encoding.Length())
{
return TRUE;
}
@@ -820,13 +811,53 @@ mozilla_embed_location_changed_cb (GtkMozEmbed *embed,
}
static void
+update_load_state (MozillaEmbed *membed, gint state)
+{
+ MozillaEmbedPrivate *priv = membed->priv;
+
+ if (state & GTK_MOZ_EMBED_FLAG_IS_NETWORK)
+ {
+ if (state & GTK_MOZ_EMBED_FLAG_START)
+ {
+ priv->load_state = MOZILLA_EMBED_LOAD_STARTED;
+ }
+ else if (state & GTK_MOZ_EMBED_FLAG_STOP)
+ {
+ priv->load_state = MOZILLA_EMBED_LOAD_STOPPED;
+ }
+ }
+ else if (state & GTK_MOZ_EMBED_FLAG_START &&
+ state & GTK_MOZ_EMBED_FLAG_IS_REQUEST)
+ {
+ if (priv->load_state == MOZILLA_EMBED_LOAD_REDIRECTING)
+ {
+ priv->load_state = MOZILLA_EMBED_LOAD_STARTED;
+ }
+ else if (priv->load_state != MOZILLA_EMBED_LOAD_LOADING)
+ {
+ priv->load_state = MOZILLA_EMBED_LOAD_LOADING;
+
+ char *address;
+ address = gtk_moz_embed_get_location (GTK_MOZ_EMBED (membed));
+ g_signal_emit_by_name (membed, "ge_content_change", address);
+ g_free (address);
+ }
+ }
+ else if (state & GTK_MOZ_EMBED_FLAG_REDIRECTING &&
+ priv->load_state == MOZILLA_EMBED_LOAD_STARTED)
+ {
+ priv->load_state = MOZILLA_EMBED_LOAD_REDIRECTING;
+ }
+}
+
+static void
mozilla_embed_net_state_all_cb (GtkMozEmbed *embed, const char *aURI,
gint state, guint status,
MozillaEmbed *membed)
{
EmbedState estate = EMBED_STATE_UNKNOWN;
int i;
-
+
struct
{
guint state;
@@ -852,6 +883,8 @@ mozilla_embed_net_state_all_cb (GtkMozEmbed *embed, const char *aURI,
estate = (EmbedState) (estate | conversion_map[i].embed_state);
}
}
+
+ update_load_state (membed, state);
g_signal_emit_by_name (membed, "ge_net_state", aURI, estate);
}
@@ -887,10 +920,8 @@ mozilla_embed_dom_key_down_cb (GtkMozEmbed *embed, gpointer dom_event,
if ((info->keycode == nsIDOMKeyEvent::DOM_VK_F10 &&
(info->modifier == GDK_SHIFT_MASK ||
info->modifier == GDK_CONTROL_MASK))
-#if MOZILLA_SNAPSHOT > 14
|| (info->keycode == nsIDOMKeyEvent::DOM_VK_CONTEXT_MENU &&
!info->modifier)
-#endif
)
{
/* Translate relative coordinates to absolute values, and try
diff --git a/embed/mozilla/mozilla-version.h b/embed/mozilla/mozilla-version.h
new file mode 100644
index 000000000..d59f5e493
--- /dev/null
+++ b/embed/mozilla/mozilla-version.h
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2004 Crispin Flowerday
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * $Id$
+ */
+
+#ifndef MOZILLA_VERSION_H
+#define MOZILLA_VERSION_H
+
+/**
+ * Create a version int from components
+ */
+#define VERSION4(a,b,c,d) ((a << 24) + (b << 16) + (c << 8) + d)
+
+/**
+ * Macros for comparing mozilla version numbers
+ */
+#define MOZILLA_ALPHA 1
+#define MOZILLA_BETA 2
+#define MOZILLA_RC 3
+#define MOZILLA_RELEASE 4
+
+#define MOZILLA_CHECK_VERSION4(major, minor, type, micro) \
+ (VERSION4(MOZILLA_MAJOR, MOZILLA_MINOR, MOZILLA_TYPE, MOZILLA_MICRO) >= \
+ VERSION4(major, minor, type, micro))
+
+#define MOZILLA_CHECK_VERSION3(a,b,c) MOZILLA_CHECK_VERSION4(a,b,MOZILLA_RELEASE,c)
+#define MOZILLA_CHECK_VERSION2(a,b) MOZILLA_CHECK_VERSION3(a,b,0)
+
+/* Use the following:
+ *
+ * 1.4.1 -> MOZILLA_CHECK_VERSION3 (1,4,1)
+ * 1.7 -> MOZILLA_CHECK_VERSION2 (1,7)
+ * 1.8a1 -> MOZILLA_CHECK_VERSION4 (1,8,MOZILLA_ALPHA,1)
+ * 1.7a -> MOZILLA_CHECK_VERSION4 (1,7,MOZILLA_ALPHA,0)
+ * 1.7rc2 -> MOZILLA_CHECK_VERSION4 (1,7,MOZILLA_RC, 2)
+ */
+
+#endif /* MOZILLA_VERSION_H */
diff --git a/src/ephy-tab.c b/src/ephy-tab.c
index 1ef36aae6..b7f2e1729 100644
--- a/src/ephy-tab.c
+++ b/src/ephy-tab.c
@@ -676,7 +676,11 @@ ephy_tab_address_cb (EphyEmbed *embed, const char *address, EphyTab *tab)
ephy_tab_set_link_message (tab, NULL);
ephy_tab_set_icon_address (tab, NULL);
ephy_tab_update_navigation_flags (tab, embed);
+}
+static void
+ephy_tab_content_change_cb (EphyEmbed *embed, const char *address, EphyTab *tab)
+{
/* restore zoom level */
if (address_has_web_scheme (address))
{
@@ -700,7 +704,7 @@ ephy_tab_address_cb (EphyEmbed *embed, const char *address, EphyTab *tab)
if (zoom != current_zoom)
{
tab->priv->setting_zoom = TRUE;
- ephy_embed_set_zoom (embed, zoom, FALSE);
+ ephy_embed_set_zoom (embed, zoom);
tab->priv->setting_zoom = FALSE;
}
}
@@ -1284,6 +1288,9 @@ ephy_tab_init (EphyTab *tab)
g_signal_connect_object (embed, "ge_favicon",
G_CALLBACK (ephy_tab_favicon_cb),
tab, 0);
+ g_signal_connect_object (embed, "ge_content_change",
+ G_CALLBACK (ephy_tab_content_change_cb),
+ tab, 0);
cache = EPHY_FAVICON_CACHE
(ephy_embed_shell_get_favicon_cache (EPHY_EMBED_SHELL (ephy_shell)));
diff --git a/src/ephy-window.c b/src/ephy-window.c
index 585e82cb4..cdb4b6281 100644
--- a/src/ephy-window.c
+++ b/src/ephy-window.c
@@ -2584,7 +2584,7 @@ ephy_window_set_zoom (EphyWindow *window,
if (zoom != current_zoom)
{
- ephy_embed_set_zoom (embed, zoom, TRUE);
+ ephy_embed_set_zoom (embed, zoom);
}
}