Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
GNOME
rhythmbox
Commits
4c951c86
Commit
4c951c86
authored
Jun 19, 2016
by
Jonathan Matthew
🐌
Browse files
podcast: drop webkit code for displaying episode descriptions
parent
704ac8e4
Changes
4
Hide whitespace changes
Inline
Side-by-side
configure.ac
View file @
4c951c86
...
...
@@ -432,24 +432,6 @@ if test x"$enable_lirc" != xno; then
fi
AM_CONDITIONAL(WITH_LIRC, test x"$with_lirc" = xyes)
dnl WebKit
have_webkit=no
AC_ARG_WITH(webkit,
AC_HELP_STRING([--with-webkit],
[Use WebKit to display HTML]),,
with_webkit=auto)
if test "x$with_webkit" != xno; then
PKG_CHECK_MODULES(WEBKIT, [webkit2gtk-4.0], have_webkit=yes, have_webkit=no)
if test "x$have_webkit" = "xno" -a "x$with_webkit" = "xyes"; then
AC_MSG_ERROR([WebKit support explicitly requested, but WebKit could not be found])
fi
if test "x$have_webkit" = "xyes"; then
AC_DEFINE(WITH_WEBKIT, 1, [Define if WebKit is enabled])
fi
fi
AM_CONDITIONAL(WITH_WEBKIT, test x"$have_webkit" = xyes)
AC_ARG_ENABLE(uninstalled-build,
AC_HELP_STRING([--enable-uninstalled-build],
[Search for files in build directory as well]),
...
...
@@ -866,11 +848,6 @@ if test x"$have_libnotify" = xyes; then
else
AC_MSG_NOTICE([ libnotify support is disabled])
fi
if test x"$have_webkit" = xyes; then
AC_MSG_NOTICE([** WebKit support is enabled])
else
AC_MSG_NOTICE([ WebKit support is disabled])
fi
if test x"$use_gudev" = xyes; then
AC_MSG_NOTICE([** GUdev support enabled])
elif test x"$enable_hal" = xyes; then
...
...
podcast/Makefile.am
View file @
4c951c86
...
...
@@ -67,7 +67,6 @@ AM_CFLAGS = \
-I
$(top_srcdir)
/sources
\
-I
$(top_builddir)
/lib
\
$(RHYTHMBOX_CFLAGS)
\
$(WEBKIT_CFLAGS)
\
$(JSON_GLIB_CFLAGS)
\
$(TOTEM_PLPARSER_CFLAGS)
...
...
podcast/rb-podcast-properties-dialog.c
View file @
4c951c86
...
...
@@ -35,10 +35,6 @@
#include
<gtk/gtk.h>
#include
<glib.h>
#if defined(WITH_WEBKIT)
#include
<webkit2/webkit2.h>
#endif
#include
"rb-podcast-properties-dialog.h"
#include
"rb-file-helpers.h"
#include
"rb-builder-helpers.h"
...
...
@@ -114,38 +110,6 @@ enum
G_DEFINE_TYPE
(
RBPodcastPropertiesDialog
,
rb_podcast_properties_dialog
,
GTK_TYPE_DIALOG
)
#if defined(WITH_WEBKIT)
/* list of HTML-ish strings that we search for to distinguish plain text from HTML podcast
* descriptions. we don't really have anything else to go on - regular content type
* sniffing only works for proper HTML documents, but these are just tiny fragments, usually
* with some simple formatting tags. if we find any of these in a podcast description,
* we'll display it as HTML rather than text.
*/
static
const
char
*
html_clues
[]
=
{
"<a "
,
"<b>"
,
"<i>"
,
"<ul>"
,
"<br"
,
"<img "
,
"<"
,
">"
,
"&"
,
"&quo;"
,
""
,
"&#x"
};
/* list of URI prefixes for things we ignore when handling navigation requests.
* some podcast descriptions include facebook 'like' buttons as iframes, which otherwise
* show up as external web browser windows.
*/
static
const
char
*
ignore_uris
[]
=
{
"http://www.facebook.com/plugins/like.php?"
};
#endif
static
void
rb_podcast_properties_dialog_class_init
(
RBPodcastPropertiesDialogClass
*
klass
)
{
...
...
@@ -168,100 +132,6 @@ rb_podcast_properties_dialog_class_init (RBPodcastPropertiesDialogClass *klass)
g_type_class_add_private
(
klass
,
sizeof
(
RBPodcastPropertiesDialogPrivate
));
}
#if defined(WITH_WEBKIT)
static
gboolean
decide_policy_cb
(
WebKitWebView
*
web_view
,
WebKitPolicyDecision
*
decision
,
WebKitPolicyDecisionType
type
,
gpointer
user_data
)
{
const
char
*
uri
;
GError
*
error
=
NULL
;
int
i
;
WebKitNavigationPolicyDecision
*
navigation_decision
;
WebKitURIRequest
*
request
;
RBPodcastPropertiesDialog
*
dialog
=
(
RBPodcastPropertiesDialog
*
)
user_data
;
switch
(
type
)
{
case
WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION
:
navigation_decision
=
WEBKIT_NAVIGATION_POLICY_DECISION
(
decision
);
request
=
webkit_navigation_policy_decision_get_request
(
navigation_decision
);
uri
=
webkit_uri_request_get_uri
(
request
);
/* from _load_plain_text or _load_html */
if
(
g_strcmp0
(
uri
,
"about:blank"
)
==
0
)
{
webkit_policy_decision_use
(
decision
);
return
TRUE
;
}
webkit_policy_decision_ignore
(
decision
);
/* ignore some obnoxious social networking stuff */
for
(
i
=
0
;
i
<
G_N_ELEMENTS
(
ignore_uris
);
i
++
)
{
if
(
g_str_has_prefix
(
uri
,
ignore_uris
[
i
]))
{
rb_debug
(
"ignoring external URI %s"
,
uri
);
return
TRUE
;
}
}
gtk_show_uri
(
gtk_widget_get_screen
(
GTK_WIDGET
(
dialog
)),
uri
,
GDK_CURRENT_TIME
,
&
error
);
if
(
error
!=
NULL
)
{
rb_error_dialog
(
NULL
,
_
(
"Unable to display requested URI"
),
"%s"
,
error
->
message
);
g_error_free
(
error
);
}
default:
webkit_policy_decision_ignore
(
decision
);
return
FALSE
;
}
}
static
void
set_webkit_settings
(
WebKitWebView
*
view
)
{
WebKitSettings
*
settings
;
settings
=
webkit_settings_new_with_settings
(
"enable-javascript"
,
FALSE
,
"enable-plugins"
,
FALSE
,
NULL
);
webkit_web_view_set_settings
(
view
,
settings
);
}
static
void
set_webkit_font_from_gtk_style
(
WebKitWebView
*
view
)
{
WebKitSettings
*
settings
;
const
PangoFontDescription
*
font_desc
;
GtkStyleContext
*
style
;
int
font_size
;
const
char
*
font_family
;
style
=
gtk_widget_get_style_context
(
GTK_WIDGET
(
view
));
settings
=
webkit_web_view_get_settings
(
view
);
font_desc
=
gtk_style_context_get_font
(
style
,
GTK_STATE_FLAG_ACTIVE
);
font_size
=
pango_font_description_get_size
(
font_desc
);
if
(
pango_font_description_get_size_is_absolute
(
font_desc
)
==
FALSE
)
font_size
/=
PANGO_SCALE
;
font_family
=
pango_font_description_get_family
(
font_desc
);
rb_debug
(
"setting font settings: %s / %d"
,
font_family
,
font_size
);
g_object_set
(
settings
,
"default-font-size"
,
font_size
,
"default-monospace-font-size"
,
font_size
,
"sans-serif-font-family"
,
font_family
,
"monospace-font-family"
,
font_family
,
NULL
);
}
#endif
static
void
rb_podcast_properties_dialog_init
(
RBPodcastPropertiesDialog
*
dialog
)
{
...
...
@@ -307,20 +177,9 @@ rb_podcast_properties_dialog_init (RBPodcastPropertiesDialog *dialog)
dialog
->
priv
->
playcount
=
GTK_WIDGET
(
gtk_builder_get_object
(
builder
,
"playcountLabel"
));
dialog
->
priv
->
bitrate
=
GTK_WIDGET
(
gtk_builder_get_object
(
builder
,
"bitrateLabel"
));
dialog
->
priv
->
date
=
GTK_WIDGET
(
gtk_builder_get_object
(
builder
,
"dateLabel"
));
#if defined(WITH_WEBKIT)
dialog
->
priv
->
description
=
webkit_web_view_new
();
set_webkit_settings
(
WEBKIT_WEB_VIEW
(
dialog
->
priv
->
description
));
set_webkit_font_from_gtk_style
(
WEBKIT_WEB_VIEW
(
dialog
->
priv
->
description
));
g_signal_connect_object
(
dialog
->
priv
->
description
,
"decide-policy"
,
G_CALLBACK
(
decide_policy_cb
),
dialog
,
0
);
#else
dialog
->
priv
->
description
=
gtk_label_new
(
NULL
);
gtk_label_set_line_wrap
(
GTK_LABEL
(
dialog
->
priv
->
description
),
TRUE
);
#endif
/* add relationship between the description label and the description widget */
widget
=
GTK_WIDGET
(
gtk_builder_get_object
(
builder
,
"descriptionDescLabel"
));
gtk_label_set_mnemonic_widget
(
GTK_LABEL
(
widget
),
dialog
->
priv
->
description
);
...
...
@@ -679,28 +538,9 @@ rb_podcast_properties_dialog_update_date (RBPodcastPropertiesDialog *dialog)
static
void
rb_podcast_properties_dialog_update_description
(
RBPodcastPropertiesDialog
*
dialog
)
{
#if defined(WITH_WEBKIT)
const
char
*
str
;
int
i
;
gboolean
loaded
=
FALSE
;
str
=
rhythmdb_entry_get_string
(
dialog
->
priv
->
current_entry
,
RHYTHMDB_PROP_DESCRIPTION
);
for
(
i
=
0
;
i
<
G_N_ELEMENTS
(
html_clues
);
i
++
)
{
if
(
g_strstr_len
(
str
,
-
1
,
html_clues
[
i
])
!=
NULL
)
{
webkit_web_view_load_html
(
WEBKIT_WEB_VIEW
(
dialog
->
priv
->
description
),
str
,
NULL
);
loaded
=
TRUE
;
}
}
if
(
loaded
==
FALSE
)
{
webkit_web_view_load_plain_text
(
WEBKIT_WEB_VIEW
(
dialog
->
priv
->
description
),
str
);
}
#else
const
char
*
str
;
str
=
rhythmdb_entry_get_string
(
dialog
->
priv
->
current_entry
,
RHYTHMDB_PROP_DESCRIPTION
);
gtk_label_set_text
(
GTK_LABEL
(
dialog
->
priv
->
description
),
str
);
#endif
}
static
char
*
...
...
shell/Makefile.am
View file @
4c951c86
...
...
@@ -46,7 +46,6 @@ AM_CPPFLAGS = \
$(TOTEM_PLPARSER_CFLAGS)
\
$(DBUS_CFLAGS)
\
$(GUDEV_CFLAGS)
\
$(WEBKIT_FLAGS)
\
-D__EXTENSIONS__
...
...
@@ -114,7 +113,6 @@ librhythmbox_core_la_LIBADD = \
$(DBUS_LIBS)
\
$(TOTEM_PLPARSER_LIBS)
\
$(GUDEV_LIBS)
\
$(WEBKIT_LIBS)
\
$(RHYTHMBOX_LIBS)
\
-lgstpbutils-1
.0
\
-lgstcontroller-1
.0
\
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment