Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/lib/src/sugar-content-handler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/src/sugar-content-handler.cpp')
-rw-r--r--lib/src/sugar-content-handler.cpp46
1 files changed, 45 insertions, 1 deletions
diff --git a/lib/src/sugar-content-handler.cpp b/lib/src/sugar-content-handler.cpp
index 56fe587..0597c48 100644
--- a/lib/src/sugar-content-handler.cpp
+++ b/lib/src/sugar-content-handler.cpp
@@ -1,5 +1,13 @@
#include <stdio.h>
+#include <nsStringAPI.h>
+#include <nsCExternalHandlerService.h>
+#include <nsIMIMEInfo.h>
+#include <nsIURL.h>
+#include <nsIFile.h>
+
+#include "sugar-browser-chandler.h"
+
#include "sugar-content-handler.h"
GSugarContentHandler::GSugarContentHandler()
@@ -18,7 +26,43 @@ NS_IMETHODIMP
GSugarContentHandler::Show (nsIHelperAppLauncher *aLauncher,
nsISupports *aContext,
PRUint32 aReason)
-{
+{
+ SugarBrowserChandler *browser_chandler;
+ nsresult rv;
+ nsCString url;
+ nsCString mimeType;
+ nsString suggested_file_name_utf16;
+ nsCString suggested_file_name;
+ nsCString tmp_file_name;
+
+ NS_ENSURE_TRUE (aLauncher, NS_ERROR_FAILURE);
+
+ nsCOMPtr<nsIMIMEInfo> MIMEInfo;
+ aLauncher->GetMIMEInfo (getter_AddRefs(MIMEInfo));
+ NS_ENSURE_TRUE (MIMEInfo, NS_ERROR_FAILURE);
+
+ rv = MIMEInfo->GetMIMEType (mimeType);
+
+ nsCOMPtr<nsIURI> uri;
+ aLauncher->GetSource (getter_AddRefs(uri));
+ NS_ENSURE_TRUE (uri, NS_ERROR_FAILURE);
+
+ uri->GetSpec (url);
+
+ aLauncher->GetSuggestedFileName (suggested_file_name_utf16);
+ NS_UTF16ToCString (suggested_file_name_utf16,
+ NS_CSTRING_ENCODING_UTF8, suggested_file_name);
+
+ nsCOMPtr<nsIFile> tmp_file;
+ aLauncher->GetTargetFile(getter_AddRefs(tmp_file));
+ tmp_file->GetNativeLeafName (tmp_file_name);
+
+ browser_chandler = sugar_get_browser_chandler();
+ sugar_browser_chandler_handle_content(browser_chandler,
+ url.get(),
+ suggested_file_name.get(),
+ mimeType.get(),
+ tmp_file_name.get());
return NS_OK;
}