summaryrefslogtreecommitdiff
path: root/content/handlers/css/css.c
diff options
context:
space:
mode:
Diffstat (limited to 'content/handlers/css/css.c')
-rw-r--r--content/handlers/css/css.c43
1 files changed, 23 insertions, 20 deletions
diff --git a/content/handlers/css/css.c b/content/handlers/css/css.c
index 93efd6a1b..f9197ddfe 100644
--- a/content/handlers/css/css.c
+++ b/content/handlers/css/css.c
@@ -16,19 +16,22 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+#include <string.h>
#include <assert.h>
#include <libwapcaplet/libwapcaplet.h>
#include <dom/dom.h>
-#include "content/content_protected.h"
-#include "content/fetch.h"
-#include "content/hlcache.h"
-#include "desktop/system_colour.h"
+#include "utils/errors.h"
#include "utils/corestrings.h"
#include "utils/utils.h"
#include "utils/http.h"
#include "utils/log.h"
#include "utils/messages.h"
+#include "content/content_protected.h"
+#include "content/content_factory.h"
+#include "content/fetch.h"
+#include "content/hlcache.h"
+#include "desktop/system_colour.h"
#include "css/css.h"
#include "css/hints.h"
@@ -37,6 +40,9 @@
/* Define to trace import fetches */
#undef NSCSS_IMPORT_TRACE
+/** Screen DPI in fixed point units: defaults to 90, which RISC OS uses */
+css_fixed nscss_screen_dpi = F_90;
+
struct content_css_data;
/**
@@ -80,8 +86,6 @@ typedef struct {
* imports array */
} nscss_import_ctx;
-static bool nscss_process_data(struct content *c, const char *data,
- unsigned int size);
static bool nscss_convert(struct content *c);
static void nscss_destroy(struct content *c);
static nserror nscss_clone(const struct content *old, struct content **newc);
@@ -98,7 +102,7 @@ static void nscss_destroy_css_data(struct content_css_data *c);
static void nscss_content_done(struct content_css_data *css, void *pw);
static css_error nscss_handle_import(void *pw, css_stylesheet *parent,
- lwc_string *url, uint64_t media);
+ lwc_string *url);
static nserror nscss_import(hlcache_handle *handle,
const hlcache_event *event, void *pw);
static css_error nscss_import_complete(nscss_import_ctx *ctx);
@@ -170,7 +174,7 @@ nscss_create(const content_handler *handler,
xnsbase, charset, result->base.quirks,
nscss_content_done, result);
if (error != NSERROR_OK) {
- content_broadcast_errorcode(&result->base, NSERROR_NOMEM);
+ content_broadcast_error(&result->base, NSERROR_NOMEM, NULL);
if (charset_value != NULL)
lwc_string_unref(charset_value);
free(result);
@@ -245,14 +249,15 @@ static nserror nscss_create_css_data(struct content_css_data *c,
* \param size Number of bytes to process
* \return true on success, false on failure
*/
-bool nscss_process_data(struct content *c, const char *data, unsigned int size)
+static bool
+nscss_process_data(struct content *c, const char *data, unsigned int size)
{
nscss_content *css = (nscss_content *) c;
css_error error;
error = nscss_process_css_data(&css->data, data, size);
if (error != CSS_OK && error != CSS_NEEDDATA) {
- content_broadcast_errorcode(c, NSERROR_CSS);
+ content_broadcast_error(c, NSERROR_CSS, NULL);
}
return (error == CSS_OK || error == CSS_NEEDDATA);
@@ -286,7 +291,7 @@ bool nscss_convert(struct content *c)
error = nscss_convert_css_data(&css->data);
if (error != CSS_OK) {
- content_broadcast_errorcode(c, NSERROR_CSS);
+ content_broadcast_error(c, NSERROR_CSS, NULL);
return false;
}
@@ -374,8 +379,8 @@ nserror nscss_clone(const struct content *old, struct content **newc)
{
const nscss_content *old_css = (const nscss_content *) old;
nscss_content *new_css;
- const char *data;
- unsigned long size;
+ const uint8_t *data;
+ size_t size;
nserror error;
new_css = calloc(1, sizeof(nscss_content));
@@ -402,7 +407,9 @@ nserror nscss_clone(const struct content *old, struct content **newc)
data = content__get_source_data(&new_css->base, &size);
if (size > 0) {
- if (nscss_process_data(&new_css->base, data, size) == false) {
+ if (nscss_process_data(&new_css->base,
+ (char *)data,
+ (unsigned int)size) == false) {
content_destroy(&new_css->base);
return NSERROR_CLONE_FAILED;
}
@@ -479,7 +486,7 @@ void nscss_content_done(struct content_css_data *css, void *pw)
/* Retrieve the size of this sheet */
error = css_stylesheet_size(css->sheet, &size);
if (error != CSS_OK) {
- content_broadcast_errorcode(c, NSERROR_CSS);
+ content_broadcast_error(c, NSERROR_CSS, NULL);
content_set_error(c);
return;
}
@@ -512,11 +519,10 @@ void nscss_content_done(struct content_css_data *css, void *pw)
* \param pw CSS object requesting the import
* \param parent Stylesheet requesting the import
* \param url URL of the imported sheet
- * \param media Applicable media for the imported sheet
* \return CSS_OK on success, appropriate error otherwise
*/
css_error nscss_handle_import(void *pw, css_stylesheet *parent,
- lwc_string *url, uint64_t media)
+ lwc_string *url)
{
content_type accept = CONTENT_CSS;
struct content_css_data *c = pw;
@@ -562,7 +568,6 @@ css_error nscss_handle_import(void *pw, css_stylesheet *parent,
}
/* Create content */
- c->imports[c->import_count].media = media;
/** \todo Why aren't we getting a relative url part, to join? */
nerror = nsurl_create(lwc_string_data(url), &ns_url);
@@ -635,7 +640,6 @@ nserror nscss_import(hlcache_handle *handle,
error = nscss_import_complete(ctx);
break;
- case CONTENT_MSG_ERRORCODE:
case CONTENT_MSG_ERROR:
hlcache_handle_release(handle);
ctx->css->imports[ctx->index].c = NULL;
@@ -643,7 +647,6 @@ nserror nscss_import(hlcache_handle *handle,
error = nscss_import_complete(ctx);
/* Already released handle */
break;
-
default:
break;
}