summaryrefslogtreecommitdiff
path: root/javascript/content.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@netsurf-browser.org>2012-06-19 22:57:29 +0000
committerVincent Sanders <vince@netsurf-browser.org>2012-06-19 22:57:29 +0000
commit8611281b2efde71e17f20aedc9db22c1493788cc (patch)
tree13139feb9993a9babe2cb0638c31c5cd7d39c868 /javascript/content.c
parent08f18009c8d4e5b4bd16c364034e0490226c4181 (diff)
downloadnetsurf-8611281b2efde71e17f20aedc9db22c1493788cc.tar.gz
netsurf-8611281b2efde71e17f20aedc9db22c1493788cc.tar.bz2
add content handler for javascript
svn path=/trunk/netsurf/; revision=13971
Diffstat (limited to 'javascript/content.c')
-rw-r--r--javascript/content.c119
1 files changed, 119 insertions, 0 deletions
diff --git a/javascript/content.c b/javascript/content.c
new file mode 100644
index 000000000..d14862859
--- /dev/null
+++ b/javascript/content.c
@@ -0,0 +1,119 @@
+/*
+ * Copyright 2012 Vincent Sanders <vince@kyllikki.org>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/** \file
+ * Content for javascript (implementation)
+ */
+
+#include <assert.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdlib.h>
+#include <libnsbmp.h>
+
+#include "utils/config.h"
+#include "content/content_protected.h"
+#include "content/hlcache.h"
+#include "desktop/plotters.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/talloc.h"
+#include "utils/utils.h"
+
+typedef struct javascript_content {
+ struct content base;
+} javascript_content;
+
+static nserror javascript_create(const content_handler *handler,
+ lwc_string *imime_type, const http_parameter *params,
+ llcache_handle *llcache, const char *fallback_charset,
+ bool quirks, struct content **c)
+{
+ javascript_content *script;
+ nserror error;
+
+ script = talloc_zero(0, javascript_content);
+ if (script == NULL)
+ return NSERROR_NOMEM;
+
+ error = content__init(&script->base, handler, imime_type, params,
+ llcache, fallback_charset, quirks);
+ if (error != NSERROR_OK) {
+ talloc_free(script);
+ return error;
+ }
+
+ *c = (struct content *) script;
+
+ return NSERROR_OK;
+}
+
+static bool javascript_convert(struct content *c)
+{
+ content_set_ready(c);
+ content_set_done(c);
+
+ return true;
+}
+
+static nserror
+javascript_clone(const struct content *old, struct content **newc)
+{
+ javascript_content *script;
+ nserror error;
+
+ script = talloc_zero(0, javascript_content);
+ if (script == NULL)
+ return NSERROR_NOMEM;
+
+ error = content__clone(old, &script->base);
+ if (error != NSERROR_OK) {
+ content_destroy(&script->base);
+ return error;
+ }
+
+ *newc = (struct content *) script;
+
+ return NSERROR_OK;
+}
+
+static void javascript_destroy(struct content *c)
+{
+}
+
+static content_type javascript_content_type(void)
+{
+ return CONTENT_JS;
+}
+
+
+static const content_handler javascript_content_handler = {
+ .create = javascript_create,
+ .data_complete = javascript_convert,
+ .destroy = javascript_destroy,
+ .clone = javascript_clone,
+ .type = javascript_content_type,
+ .no_share = false,
+};
+
+static const char *javascript_types[] = {
+ "application/javascript",
+ "text/javascript"
+};
+
+CONTENT_FACTORY_REGISTER_TYPES(javascript, javascript_types, javascript_content_handler);