aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@gnome.org>2004-02-14 00:55:59 +0800
committerMarco Pesenti Gritti <marco@src.gnome.org>2004-02-14 00:55:59 +0800
commitdbb19c8b42aafc289947199f57f656dd72a901d8 (patch)
tree9e1115bd245fd5a2eb401d6859d05b96ce6bd213
parent235a1554235f221652529e2d4458730fbf709287 (diff)
downloadgsoc2013-epiphany-dbb19c8b42aafc289947199f57f656dd72a901d8.tar.gz
gsoc2013-epiphany-dbb19c8b42aafc289947199f57f656dd72a901d8.tar.zst
gsoc2013-epiphany-dbb19c8b42aafc289947199f57f656dd72a901d8.zip
Several types are actually safe.
2004-02-13 Marco Pesenti Gritti <marco@gnome.org> * data/mime-types-permissions.xml: Several types are actually safe. * embed/mozilla/ContentHandler.cpp: * embed/mozilla/ContentHandler.h: Change the safe/unsafe logic to not consider unkown files unsafe, they will not be opened anyway. Cleanups.
-rwxr-xr-xdata/mime-types-permissions.xml88
-rw-r--r--embed/mozilla/ContentHandler.cpp34
-rw-r--r--embed/mozilla/ContentHandler.h3
3 files changed, 71 insertions, 54 deletions
diff --git a/data/mime-types-permissions.xml b/data/mime-types-permissions.xml
index 24ed74361..49b0dadc6 100755
--- a/data/mime-types-permissions.xml
+++ b/data/mime-types-permissions.xml
@@ -233,11 +233,7 @@
<mime-type type="video/x-msvideo"/>
<mime-type type="video/x-real-video"/>
<mime-type type="video/x-sgi-movie"/>
-</safe>
-<unsafe>
-<mime-type type="application/mac-binhex40"/>
<mime-type type="application/octet-stream"/>
-<mime-type type="application/oda"/>
<mime-type type="application/pgp"/>
<mime-type type="application/pgp-encrypted"/>
<mime-type type="application/pgp-keys"/>
@@ -246,28 +242,45 @@
<mime-type type="application/pkcs7-signature"/>
<mime-type type="application/postscript"/>
<mime-type type="application/rtf"/>
+<mime-type type="application/oda"/>
<mime-type type="application/smil"/>
-<mime-type type="application/x-arc"/>
<mime-type type="application/x-asp"/>
-<mime-type type="application/x-awk"/>
-<mime-type type="application/x-bcpio"/>
<mime-type type="application/x-cd-image"/>
-<mime-type type="application/x-cgi"/>
+<mime-type type="application/x-bcpio"/>
<mime-type type="application/x-chess-pgn"/>
-<mime-type type="application/x-class-file"/>
<mime-type type="application/x-core"/>
<mime-type type="application/x-cpio"/>
<mime-type type="application/x-cpio-compressed"/>
-<mime-type type="application/x-csh"/>
<mime-type type="application/x-dbase"/>
<mime-type type="application/x-dbm"/>
<mime-type type="application/x-dc-rom"/>
-<mime-type type="application/x-deb"/>
+<mime-type type="inode/blockdevice"/>
+<mime-type type="inode/chardevice"/>
+<mime-type type="inode/directory"/>
+<mime-type type="inode/fifo"/>
+<mime-type type="inode/socket"/>
+<mime-type type="inode/symlink"/>
+<mime-type type="message/delivery-status"/>
+<mime-type type="message/disposition-notification"/>
+<mime-type type="message/external-body"/>
+<mime-type type="message/news"/>
+<mime-type type="message/partial"/>
+<mime-type type="message/rfc822"/>
+<mime-type type="message/x-gnu-rmail"/>
+<mime-type type="multipart/alternative"/>
+<mime-type type="multipart/appledouble"/>
+<mime-type type="multipart/digest"/>
+<mime-type type="multipart/encrypted"/>
+<mime-type type="multipart/mixed"/>
+<mime-type type="multipart/related"/>
+<mime-type type="multipart/report"/>
+<mime-type type="multipart/signed"/>
+<mime-type type="multipart/x-mixed-replace"/>
+<mime-type type="application/x-cgi"/>
<mime-type type="application/x-designer"/>
<mime-type type="application/x-desktop"/>
<mime-type type="application/x-e-theme"/>
<mime-type type="application/x-egon"/>
-<mime-type type="application/x-executable"/>
<mime-type type="application/x-frame"/>
<mime-type type="application/x-gameboy-rom"/>
<mime-type type="application/x-gdbm"/>
@@ -289,31 +302,23 @@
<mime-type type="application/x-netcdf"/>
<mime-type type="application/x-object"/>
<mime-type type="application/x-palm-database"/>
-<mime-type type="application/x-pef-executable"/>
-<mime-type type="application/x-perl"/>
<mime-type type="application/x-php"/>
<mime-type type="application/x-pkcs12"/>
<mime-type type="application/x-profile"/>
<mime-type type="application/x-pw"/>
-<mime-type type="application/x-python"/>
-<mime-type type="application/x-python-bytecode"/>
-<mime-type type="application/x-quattropro"/>
<mime-type type="application/x-qw"/>
<mime-type type="application/x-reject"/>
-<mime-type type="application/x-rpm"/>
-<mime-type type="application/x-ruby"/>
<mime-type type="application/x-sc"/>
<mime-type type="application/x-shar"/>
<mime-type type="application/x-shared-library-la"/>
<mime-type type="application/x-sharedlib"/>
-<mime-type type="application/x-shellscript"/>
<mime-type type="application/x-shockwave-flash"/>
<mime-type type="application/x-siag"/>
-<mime-type type="application/x-slp"/>
-<mime-type type="application/x-sms-rom"/>
<mime-type type="application/x-stuffit"/>
<mime-type type="application/x-sv4cpio"/>
<mime-type type="application/x-sv4crc"/>
+<mime-type type="application/x-slp"/>
+<mime-type type="application/x-sms-rom"/>
<mime-type type="application/x-tex-gf"/>
<mime-type type="application/x-tex-pk"/>
<mime-type type="application/x-tgif"/>
@@ -327,28 +332,23 @@
<mime-type type="application/x-zerosize"/>
<mime-type type="application/x-zoo"/>
<mime-type type="application/xhtml+xml"/>
-<mime-type type="inode/blockdevice"/>
-<mime-type type="inode/chardevice"/>
-<mime-type type="inode/directory"/>
-<mime-type type="inode/fifo"/>
-<mime-type type="inode/socket"/>
-<mime-type type="inode/symlink"/>
-<mime-type type="message/delivery-status"/>
-<mime-type type="message/disposition-notification"/>
-<mime-type type="message/external-body"/>
-<mime-type type="message/news"/>
-<mime-type type="message/partial"/>
-<mime-type type="message/rfc822"/>
-<mime-type type="message/x-gnu-rmail"/>
-<mime-type type="multipart/alternative"/>
-<mime-type type="multipart/appledouble"/>
-<mime-type type="multipart/digest"/>
-<mime-type type="multipart/encrypted"/>
-<mime-type type="multipart/mixed"/>
-<mime-type type="multipart/related"/>
-<mime-type type="multipart/report"/>
-<mime-type type="multipart/signed"/>
-<mime-type type="multipart/x-mixed-replace"/>
+<mime-type type="application/x-quattropro"/>
+<mime-type type="application/x-rpm"/>
+</safe>
+<unsafe>
+<mime-type type="application/mac-binhex40"/>
+<mime-type type="application/x-arc"/>
+<mime-type type="application/x-awk"/>
+<mime-type type="application/x-class-file"/>
+<mime-type type="application/x-csh"/>
+<mime-type type="application/x-deb"/>
+<mime-type type="application/x-executable"/>
+<mime-type type="application/x-pef-executable"/>
+<mime-type type="application/x-perl"/>
+<mime-type type="application/x-python"/>
+<mime-type type="application/x-python-bytecode"/>
+<mime-type type="application/x-ruby"/>
+<mime-type type="application/x-shellscript"/>
<mime-type type="text/x-ksh"/>
</unsafe>
</mime-types-permissions>
diff --git a/embed/mozilla/ContentHandler.cpp b/embed/mozilla/ContentHandler.cpp
index cdf844c9b..622c95ca7 100644
--- a/embed/mozilla/ContentHandler.cpp
+++ b/embed/mozilla/ContentHandler.cpp
@@ -250,7 +250,7 @@ NS_METHOD GContentHandler::Init (void)
return NS_OK;
}
-NS_METHOD GContentHandler::MIMEConfirmAction ()
+NS_METHOD GContentHandler::MIMEConfirmAction (PRBool autoDownload)
{
GtkWidget *dialog;
GtkWidget *hbox, *vbox, *label, *image;
@@ -278,7 +278,9 @@ NS_METHOD GContentHandler::MIMEConfirmAction ()
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), hbox,
TRUE, TRUE, 0);
- if (mPermission != EPHY_MIME_PERMISSION_SAFE)
+ g_print ("AAA %d %p", mPermission, mHelperApp);
+
+ if (mPermission == EPHY_MIME_PERMISSION_UNSAFE && mHelperApp)
{
text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
_("Download the unsafe file?"),
@@ -287,7 +289,7 @@ NS_METHOD GContentHandler::MIMEConfirmAction ()
"It's not safe to open it directly. You "
"can save it instead."));
}
- else if (mAction == CONTENT_ACTION_OPEN)
+ else if (mAction == CONTENT_ACTION_OPEN && !autoDownload)
{
text = g_strdup_printf ("<span weight=\"bold\" size=\"larger\">%s</span>\n\n%s",
_("Open the file in another application?"),
@@ -352,23 +354,30 @@ NS_METHOD GContentHandler::MIMEDoAction (void)
CheckAppSupportScheme ();
mPermission = ephy_embed_shell_check_mime (embed_shell, mMimeType);
- mAction = CONTENT_ACTION_OPEN;
+ if (auto_downloads)
+ {
+ mAction = CONTENT_ACTION_OPEN;
+ }
+ else
+ {
+ mAction = CONTENT_ACTION_OPEN_TMP;
+ }
- if (mPermission != EPHY_MIME_PERMISSION_SAFE)
+ if (!mHelperApp || mPermission == EPHY_MIME_PERMISSION_UNSAFE)
{
mAction = CONTENT_ACTION_DOWNLOAD;
}
- if (!auto_downloads)
+ if (!auto_downloads || mAction == CONTENT_ACTION_DOWNLOAD)
{
- MIMEConfirmAction ();
+ MIMEConfirmAction (auto_downloads);
}
nsCOMPtr<nsIMIMEInfo> mimeInfo;
mLauncher->GetMIMEInfo(getter_AddRefs(mimeInfo));
NS_ENSURE_TRUE (mimeInfo, NS_ERROR_FAILURE);
- if (mAction == CONTENT_ACTION_OPEN && auto_downloads)
+ if (mAction == CONTENT_ACTION_OPEN)
{
/* HACK we use the application description to ask
MozDownload to open the file when download
@@ -387,10 +396,17 @@ NS_METHOD GContentHandler::MIMEDoAction (void)
{
LaunchHelperApp ();
}
- else if (auto_downloads)
+ else
{
mLauncher->SaveToDisk (nsnull, PR_FALSE);
}
+ }
+ else if (mAction == CONTENT_ACTION_OPEN_TMP)
+ {
+ if (mAppSupportScheme)
+ {
+ LaunchHelperApp ();
+ }
else
{
mLauncher->LaunchWithApplication (nsnull, PR_FALSE);
diff --git a/embed/mozilla/ContentHandler.h b/embed/mozilla/ContentHandler.h
index 6aa39658d..3642cc65d 100644
--- a/embed/mozilla/ContentHandler.h
+++ b/embed/mozilla/ContentHandler.h
@@ -43,6 +43,7 @@
typedef enum
{
CONTENT_ACTION_OPEN,
+ CONTENT_ACTION_OPEN_TMP,
CONTENT_ACTION_DOWNLOAD,
CONTENT_ACTION_SAVEAS,
CONTENT_ACTION_NONE
@@ -72,7 +73,7 @@ class GContentHandler : public nsIHelperAppLauncherDialog
NS_METHOD Init ();
NS_METHOD LaunchHelperApp ();
- NS_METHOD MIMEConfirmAction ();
+ NS_METHOD MIMEConfirmAction (PRBool autoDownload);
NS_METHOD MIMEDoAction ();
NS_METHOD CheckAppSupportScheme ();