diff options
Diffstat (limited to 'embed')
-rw-r--r-- | embed/ephy-embed.c | 11 | ||||
-rw-r--r-- | embed/mozilla/EphyBrowser.cpp | 33 | ||||
-rw-r--r-- | embed/mozilla/EphyHeaderSniffer.cpp | 2 | ||||
-rw-r--r-- | embed/mozilla/EventContext.cpp | 64 |
4 files changed, 60 insertions, 50 deletions
diff --git a/embed/ephy-embed.c b/embed/ephy-embed.c index 9e00ea0ff..2a2397236 100644 --- a/embed/ephy-embed.c +++ b/embed/ephy-embed.c @@ -249,7 +249,16 @@ 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, diff --git a/embed/mozilla/EphyBrowser.cpp b/embed/mozilla/EphyBrowser.cpp index 17666e7fa..0205d376e 100644 --- a/embed/mozilla/EphyBrowser.cpp +++ b/embed/mozilla/EphyBrowser.cpp @@ -61,13 +61,14 @@ #include "nsIDOMElement.h" #include "nsIDOMWindow2.h" #include "nsEmbedString.h" +#include "nsMemory.h" #ifdef ALLOW_PRIVATE_API #include "nsIMarkupDocumentViewer.h" #endif static PRUnichar DOMLinkAdded[] = { 'D', 'O', 'M', 'L', 'i', 'n', 'k', - 'A', 'd', 'd', 'e', 'd' }; + 'A', 'd', 'd', 'e', 'd', '\0' }; EphyEventListener::EphyEventListener(void) : mOwner(nsnull) @@ -106,8 +107,8 @@ EphyFaviconEventListener::HandleFaviconLink (nsIDOMNode *node) nsEmbedCString rel; NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, rel); - if (strcasecmp (rel.get(), "SHORTCUT ICON") == 0 || - strcasecmp (rel.get(), "ICON") == 0) + if (g_ascii_strcasecmp (rel.get(), "SHORTCUT ICON") == 0 || + g_ascii_strcasecmp (rel.get(), "ICON") == 0) { PRUnichar hrefAttr[] = { 'h', 'r', 'e', 'f', '\0' }; nsEmbedString value; @@ -209,8 +210,8 @@ EphyBrowser::GetListener (void) nsCOMPtr<nsIDOMWindow> domWindowExternal; mWebBrowser->GetContentDOMWindow (getter_AddRefs(domWindowExternal)); - nsCOMPtr<nsIDOMWindow2> domWindow; - domWindow = do_QueryInterface (domWindowExternal); + nsCOMPtr<nsIDOMWindow2> domWindow (do_QueryInterface (domWindowExternal)); + NS_ENSURE_TRUE (domWindow, NS_ERROR_FAILURE); nsCOMPtr<nsIDOMEventTarget> rootWindow; domWindow->GetWindowRoot (getter_AddRefs(rootWindow)); @@ -615,7 +616,7 @@ nsresult EphyBrowser::GetEncoding (nsACString &encoding) char *charset; docCharset->GetCharset (&charset); encoding = charset; - g_free (charset); + nsMemory::Free (charset); return NS_OK; } @@ -678,6 +679,11 @@ nsresult EphyBrowser::GetCommandState (const char *command, PRBool *enabled) 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++) @@ -688,16 +694,9 @@ EphyBrowser::CompareFormsText (nsAString &aDefaultText, nsAString &aUserText) } } - if (aDefaultText.Length() != aUserText.Length()) - { - return FALSE; - } - else - { - return (memcmp (aDefaultText.BeginReading(), - aUserText.BeginReading(), - aUserText.Length()) == 0); - } + return (memcmp (aDefaultText.BeginReading(), + aUserText.BeginReading(), + aUserText.Length() * sizeof (PRUnichar)) == 0); } nsresult EphyBrowser::GetDocumentHasModifiedForms (nsIDOMDocument *aDomDoc, PRUint32 *aNumTextFields, PRBool *aHasTextArea) @@ -762,7 +761,7 @@ nsresult EphyBrowser::GetDocumentHasModifiedForms (nsIDOMDocument *aDomDoc, PRUi nsEmbedCString cType; NS_UTF16ToCString (type, NS_CSTRING_ENCODING_UTF8, cType); - if (strcasecmp (cType.get(), "text") == 0) + if (g_ascii_strcasecmp (cType.get(), "text") == 0) { nsEmbedString defaultText, userText; PRInt32 max_length; diff --git a/embed/mozilla/EphyHeaderSniffer.cpp b/embed/mozilla/EphyHeaderSniffer.cpp index 4ca8d9de5..e455f80b9 100644 --- a/embed/mozilla/EphyHeaderSniffer.cpp +++ b/embed/mozilla/EphyHeaderSniffer.cpp @@ -298,7 +298,7 @@ nsresult EphyHeaderSniffer::PerformSave (nsIURI* inOriginalURI) } } - if (defaultFileName.Length() && mURL) + if (!defaultFileName.Length() && mURL) { /* 4 Use the host. */ nsEmbedCString hostName; diff --git a/embed/mozilla/EventContext.cpp b/embed/mozilla/EventContext.cpp index 2c3bc5d72..1ad257010 100644 --- a/embed/mozilla/EventContext.cpp +++ b/embed/mozilla/EventContext.cpp @@ -142,6 +142,8 @@ nsresult EventContext::GatherTextUnder (nsIDOMNode* aNode, nsAString& aResult) } } + /* FIXME we should trim spaces here */ + aResult = text; return NS_OK; @@ -222,7 +224,7 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, nsEmbedCString tag; NS_UTF16ToCString (uTag, NS_CSTRING_ENCODING_UTF8, tag); - if (strcasecmp (tag.get(), "img") == 0) + if (g_ascii_strcasecmp (tag.get(), "img") == 0) { info->context |= EMBED_CONTEXT_IMAGE; @@ -235,7 +237,7 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, if (NS_FAILED(rv)) return NS_ERROR_FAILURE; SetStringProperty ("image", img); } - else if (strcasecmp (tag.get(), "input") == 0) + else if (g_ascii_strcasecmp (tag.get(), "input") == 0) { nsCOMPtr<nsIDOMElement> element; element = do_QueryInterface (node); @@ -247,7 +249,7 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, nsEmbedCString value; NS_UTF16ToCString (uValue, NS_CSTRING_ENCODING_UTF8, value); - if (strcasecmp (value.get(), "image") == 0) + if (g_ascii_strcasecmp (value.get(), "image") == 0) { info->context |= EMBED_CONTEXT_IMAGE; nsCOMPtr<nsIDOMHTMLInputElement> input; @@ -263,21 +265,21 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, if (NS_FAILED(rv)) return NS_ERROR_FAILURE; SetStringProperty ("image", cImg.get()); } - else if (strcasecmp (value.get(), "radio") != 0 && - strcasecmp (value.get(), "submit") != 0 && - strcasecmp (value.get(), "reset") != 0 && - strcasecmp (value.get(), "hidden") != 0 && - strcasecmp (value.get(), "button") != 0 && - strcasecmp (value.get(), "checkbox") != 0) + 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 (strcasecmp (tag.get(), "textarea") == 0) + else if (g_ascii_strcasecmp (tag.get(), "textarea") == 0) { info->context |= EMBED_CONTEXT_INPUT; } - else if (strcasecmp (tag.get(), "object") == 0) + else if (g_ascii_strcasecmp (tag.get(), "object") == 0) { nsCOMPtr<nsIDOMHTMLObjectElement> object; object = do_QueryInterface (node); @@ -331,7 +333,7 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, nsEmbedCString cValue; NS_UTF16ToCString (value, NS_CSTRING_ENCODING_UTF8, cValue); - if (strcasecmp (cValue.get(), "simple") == 0) + if (g_ascii_strcasecmp (cValue.get(), "simple") == 0) { info->context |= EMBED_CONTEXT_LINK; dom_elem->GetAttributeNS (nsEmbedString(xlinknsLiteral), @@ -357,7 +359,7 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, NS_UTF16ToCString (uTag, NS_CSTRING_ENCODING_UTF8, tag); /* Link */ - if (strcasecmp (tag.get(), "a") == 0) + if (g_ascii_strcasecmp (tag.get(), "a") == 0) { nsEmbedString tmp; @@ -407,7 +409,7 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, nsEmbedCString linkType; NS_UTF16ToCString (tmp, NS_CSTRING_ENCODING_UTF8, linkType); - if (strcasecmp (linkType.get(), "text/smartbookmark") == 0) + if (g_ascii_strcasecmp (linkType.get(), "text/smartbookmark") == 0) { SetIntProperty ("link_is_smart", TRUE); @@ -436,12 +438,12 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, } } - else if (strcasecmp (tag.get(), "option") == 0) + else if (g_ascii_strcasecmp (tag.get(), "option") == 0) { info->context = EMBED_CONTEXT_NONE; return NS_OK; } - if (strcasecmp (tag.get(), "area") == 0) + if (g_ascii_strcasecmp (tag.get(), "area") == 0) { info->context |= EMBED_CONTEXT_LINK; nsCOMPtr <nsIDOMHTMLAreaElement> area = @@ -457,8 +459,8 @@ nsresult EventContext::GetEventContext (nsIDOMEventTarget *EventTarget, CheckLinkScheme (href); } } - else if (strcasecmp (tag.get(), "textarea") == 0 || - strcasecmp (tag.get(), "input") == 0) + else if (g_ascii_strcasecmp (tag.get(), "textarea") == 0 || + g_ascii_strcasecmp (tag.get(), "input") == 0) { info->context |= EMBED_CONTEXT_INPUT; } @@ -605,11 +607,11 @@ nsresult EventContext::GetMouseEventInfo (nsIDOMMouseEvent *aMouseEvent, Mozilla nsEmbedCString cNodeName; NS_UTF16ToCString (nodename, NS_CSTRING_ENCODING_UTF8, cNodeName); - if (strcasecmp (cNodeName.get(), "xul:scrollbarbutton") == 0 || - strcasecmp (cNodeName.get(), "xul:thumb") == 0 || - strcasecmp (cNodeName.get(), "xul:vbox") == 0 || - strcasecmp (cNodeName.get(), "xul:spacer") == 0 || - strcasecmp (cNodeName.get(), "xul:slider") == 0) + 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; @@ -739,14 +741,14 @@ nsresult EventContext::CheckLinkScheme (const nsAString &link) rv = uri->GetScheme (scheme); if (NS_FAILED (rv)) return NS_ERROR_FAILURE; - if (strcasecmp (scheme.get(), "http") || - strcasecmp (scheme.get(), "https") || - strcasecmp (scheme.get(), "ftp") || - strcasecmp (scheme.get(), "file") || - strcasecmp (scheme.get(), "data") || - strcasecmp (scheme.get(), "resource") || - strcasecmp (scheme.get(), "about") || - strcasecmp (scheme.get(), "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); } |