From d6a9f16ca828338c3269f32a6302d9380d754cc8 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Sat, 17 Mar 2007 11:02:35 +0000 Subject: Improve image name detection --- (limited to 'lib') diff --git a/lib/src/sugar-browser.cpp b/lib/src/sugar-browser.cpp index 3f0a1c3..bac70d0 100644 --- a/lib/src/sugar-browser.cpp +++ b/lib/src/sugar-browser.cpp @@ -399,26 +399,20 @@ NewURI(const char *uri, nsIURI **result) return ioService->NewURI (cSpec, nsnull, nsnull, result); } -static char * -get_image_name_from_cache(const char *uri) +static nsresult +ImageNameFromCache(nsIURI *imgURI, nsCString &imgName) { nsresult rv; - g_print(uri); - nsCOMPtr mgr; NS_GetServiceManager (getter_AddRefs (mgr)); - NS_ENSURE_TRUE(mgr, NULL); + NS_ENSURE_TRUE(mgr, NS_ERROR_FAILURE); nsCOMPtr imgCache; rv = mgr->GetServiceByContractID("@mozilla.org/image/cache;1", NS_GET_IID (imgICache), getter_AddRefs(imgCache)); - NS_ENSURE_SUCCESS(rv, NULL); - - nsCOMPtr imgURI; - rv = NewURI(uri, getter_AddRefs(imgURI)); - NS_ENSURE_SUCCESS(rv, NULL); + NS_ENSURE_SUCCESS(rv, NS_ERROR_FAILURE); nsCOMPtr imgProperties; imgCache->FindEntryProperties(imgURI, getter_AddRefs(imgProperties)); @@ -435,7 +429,7 @@ get_image_name_from_cache(const char *uri) nsCOMPtr mimehdrpar = do_GetService("@mozilla.org/network/mime-hdrparam;1"); - NS_ENSURE_TRUE(mimehdrpar, NULL); + NS_ENSURE_TRUE(mimehdrpar, NS_ERROR_FAILURE); nsString fileName; rv = mimehdrpar->GetParameter (contentDisposition, "filename", @@ -450,13 +444,33 @@ get_image_name_from_cache(const char *uri) if (NS_SUCCEEDED(rv) && fileName.Length()) { nsCString cFileName; - NS_UTF16ToCString (fileName, NS_CSTRING_ENCODING_UTF8, cFileName); - return g_strdup(cFileName.get()); + NS_UTF16ToCString (fileName, NS_CSTRING_ENCODING_UTF8, imgName); } } } +} + +static char * +get_image_name(const char *uri) +{ + nsresult rv; + + nsCString imgName; + + nsCOMPtr imgURI; + rv = NewURI(uri, getter_AddRefs(imgURI)); + NS_ENSURE_SUCCESS(rv, NULL); + + ImageNameFromCache(imgURI, imgName); + + if (!imgName.Length()) { + nsCOMPtr url(do_QueryInterface(imgURI)); + if (url) { + url->GetFileName(imgName); + } + } - return NULL; + return imgName.Length() ? g_strdup(imgName.get()) : NULL; } static gboolean @@ -504,7 +518,7 @@ dom_mouse_click_cb(GtkMozEmbed *embed, nsIDOMMouseEvent *mouseEvent) nsCString cImg; NS_UTF16ToCString (img, NS_CSTRING_ENCODING_UTF8, cImg); event->image_uri = g_strdup(cImg.get()); - event->image_name = get_image_name_from_cache(event->image_uri); + event->image_name = get_image_name(event->image_uri); } } -- cgit v0.9.1