Abstract availability of Netscape plugin support

Disable if MOZ_PLUGIN_PATH is / or MIDORI_UNARMED.
This commit is contained in:
Christian Dywan 2012-02-25 02:06:46 +01:00
parent 9275a6cd24
commit 18b6b48ef5
6 changed files with 43 additions and 11 deletions

View file

@ -67,6 +67,8 @@ If you want to "dry run" without WebKitGTK+ rendering, try this:
'MIDORI_UNARMED=1 _build_/default/midori/midori' 'MIDORI_UNARMED=1 _build_/default/midori/midori'
To disable Netscape plugins, use MOZ_PLUGIN_PATH=/.
To debug extensions you can specify the path: To debug extensions you can specify the path:
'export MIDORI_EXTENSION_PATH=_build_/default/extensions' 'export MIDORI_EXTENSION_PATH=_build_/default/extensions'

View file

@ -142,8 +142,11 @@ statusbar_features_app_add_browser_cb (MidoriApp* app,
g_signal_connect (toolbar, "notify::toolbar-style", g_signal_connect (toolbar, "notify::toolbar-style",
G_CALLBACK (statusbar_features_toolbar_notify_toolbar_style_cb), button); G_CALLBACK (statusbar_features_toolbar_notify_toolbar_style_cb), button);
gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 2); gtk_box_pack_start (GTK_BOX (bbox), button, FALSE, FALSE, 2);
button = katze_property_proxy (settings, "enable-plugins", "toggle"); if (midori_web_settings_has_plugin_support ())
g_object_set_data (G_OBJECT (button), "feature-label", _("Netscape plugins")); {
button = katze_property_proxy (settings, "enable-plugins", "toggle");
g_object_set_data (G_OBJECT (button), "feature-label", _("Netscape plugins"));
}
image = gtk_image_new_from_stock (STOCK_PLUGINS, GTK_ICON_SIZE_MENU); image = gtk_image_new_from_stock (STOCK_PLUGINS, GTK_ICON_SIZE_MENU);
gtk_button_set_image (GTK_BUTTON (button), image); gtk_button_set_image (GTK_BUTTON (button), image);
gtk_widget_set_tooltip_text (button, _("Enable Netscape plugins")); gtk_widget_set_tooltip_text (button, _("Enable Netscape plugins"));

View file

@ -1743,6 +1743,8 @@ midori_clear_web_cookies_cb (void)
} }
/* Local shared objects/ Flash cookies */ /* Local shared objects/ Flash cookies */
if (midori_web_settings_has_plugin_support ())
{
#ifdef GDK_WINDOWING_X11 #ifdef GDK_WINDOWING_X11
cache = g_build_filename (g_get_home_dir (), ".macromedia", "Flash_Player", NULL); cache = g_build_filename (g_get_home_dir (), ".macromedia", "Flash_Player", NULL);
sokoke_remove_path (cache, TRUE); sokoke_remove_path (cache, TRUE);
@ -1757,6 +1759,7 @@ midori_clear_web_cookies_cb (void)
sokoke_remove_path (cache, TRUE); sokoke_remove_path (cache, TRUE);
g_free (cache); g_free (cache);
#endif #endif
}
/* HTML5 databases */ /* HTML5 databases */
webkit_remove_all_web_databases (); webkit_remove_all_web_databases ();

View file

@ -3660,6 +3660,8 @@ midori_view_construct_web_view (MidoriView* view)
static gchar* list_netscape_plugins () static gchar* list_netscape_plugins ()
{ {
if (midori_web_settings_has_plugin_support ())
{
GtkWidget* web_view = webkit_web_view_new (); GtkWidget* web_view = webkit_web_view_new ();
WebKitWebFrame* web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (web_view)); WebKitWebFrame* web_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (web_view));
JSContextRef js_context = webkit_web_frame_get_global_context (web_frame); JSContextRef js_context = webkit_web_frame_get_global_context (web_frame);
@ -3671,7 +3673,7 @@ static gchar* list_netscape_plugins ()
"plugins (navigator.plugins)", NULL); "plugins (navigator.plugins)", NULL);
gchar** items = g_strsplit (value, ",", 0); gchar** items = g_strsplit (value, ",", 0);
guint i = 0; guint i = 0;
GString* ns_plugins = g_string_new (NULL); GString* ns_plugins = g_string_new ("<h2>Netscape Plugins:</h2><table>");
if (items != NULL) if (items != NULL)
while (items[i] != NULL) while (items[i] != NULL)
{ {
@ -3689,10 +3691,14 @@ static gchar* list_netscape_plugins ()
} }
if (g_str_has_prefix (value, "undefined")) if (g_str_has_prefix (value, "undefined"))
g_string_append (ns_plugins, "<tr><td>No plugins found</td></tr>"); g_string_append (ns_plugins, "<tr><td>No plugins found</td></tr>");
g_string_append (ns_plugins, "</table>");
g_strfreev (items); g_strfreev (items);
g_free (value); g_free (value);
gtk_widget_destroy (web_view); gtk_widget_destroy (web_view);
return g_string_free (ns_plugins, FALSE); return g_string_free (ns_plugins, FALSE);
}
else
return g_strdup ("");
} }
static gchar* static gchar*
@ -4022,7 +4028,7 @@ midori_view_set_uri (MidoriView* view,
"<tr><td>Identification</td><td>%s</td></tr>" "<tr><td>Identification</td><td>%s</td></tr>"
"<tr><td>Video&nbsp;Formats</td><td>%s</td></tr>" "<tr><td>Video&nbsp;Formats</td><td>%s</td></tr>"
"</table>" "</table>"
"<h2>Netscape Plugins:</h2><table>%s</table>" "%s"
"</body></html>", "</body></html>",
_("Version numbers in brackets show the version used at runtime."), _("Version numbers in brackets show the version used at runtime."),
command_line, command_line,

View file

@ -728,13 +728,8 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
"enable-plugins", "enable-plugins",
_("Enable Netscape plugins"), _("Enable Netscape plugins"),
_("Enable embedded Netscape plugin objects"), _("Enable embedded Netscape plugin objects"),
#ifdef G_OS_WIN32 midori_web_settings_has_plugin_support (),
FALSE, midori_web_settings_has_plugin_support () ? flags : G_PARAM_READABLE));
G_PARAM_READABLE));
#else
TRUE,
flags));
#endif
/* Override properties to override defaults */ /* Override properties to override defaults */
g_object_class_install_property (gobject_class, g_object_class_install_property (gobject_class,
PROP_ENABLE_DEVELOPER_EXTRAS, PROP_ENABLE_DEVELOPER_EXTRAS,
@ -1191,6 +1186,26 @@ midori_web_settings_finalize (GObject* object)
G_OBJECT_CLASS (midori_web_settings_parent_class)->finalize (object); G_OBJECT_CLASS (midori_web_settings_parent_class)->finalize (object);
} }
/**
* midori_web_settings_has_plugin_support:
*
* Determines if Netscape plugins are supported.
*
* Returns: %TRUE if Netscape plugins can be used
*
* Since: 0.4.4
**/
gboolean
midori_web_settings_has_plugin_support (void)
{
#ifdef G_OS_WIN32
return FALSE;
#else
return g_getenv ("MIDORI_UNARMED") == NULL
&& g_strcmp0 (g_getenv ("MOZ_PLUGIN_PATH"), "/");
#endif
}
#if (!HAVE_OSX && defined (G_OS_UNIX)) || defined (G_OS_WIN32) #if (!HAVE_OSX && defined (G_OS_UNIX)) || defined (G_OS_WIN32)
static gchar* static gchar*
get_sys_name (gchar** architecture) get_sys_name (gchar** architecture)

View file

@ -173,6 +173,9 @@ const gchar*
midori_web_settings_get_system_name (gchar** architecture, midori_web_settings_get_system_name (gchar** architecture,
gchar** platform); gchar** platform);
gboolean
midori_web_settings_has_plugin_support (void);
G_END_DECLS G_END_DECLS
#endif /* __MIDORI_WEB_SETTINGS_H__ */ #endif /* __MIDORI_WEB_SETTINGS_H__ */