gtk-webkit-ruby 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.md +33 -0
- data/Rakefile +58 -0
- data/ext/webkit/extconf.rb +74 -0
- data/ext/webkit/javascript.h +271 -0
- data/ext/webkit/webkit.c +630 -0
- data/ext/webkit/webkit.cr +160 -0
- data/ext/webkit/webkit.rd +89 -0
- metadata +102 -0
data/README.md
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
Gtk Webkit Ruby
|
2
|
+
===============
|
3
|
+
|
4
|
+
Requires
|
5
|
+
--------
|
6
|
+
* rubber-generate >= 0.0.12
|
7
|
+
* ruby-gnome2 (including development files)
|
8
|
+
* webkit (including development files)
|
9
|
+
|
10
|
+
Description
|
11
|
+
-----------
|
12
|
+
|
13
|
+
Gtk Webkit bindings for ruby. Partial coverage sufficient to embed a webview in a ruby-gnome2 application.
|
14
|
+
|
15
|
+
Also initial/experimental support for allowing ruby code to be called by javascript & executing javascript from ruby.
|
16
|
+
|
17
|
+
e.g
|
18
|
+
|
19
|
+
require 'gtk2'
|
20
|
+
require 'webkit'
|
21
|
+
require 'digest/md5'
|
22
|
+
|
23
|
+
v = WebKit::WebView.new
|
24
|
+
v.main_frame.setup_ruby
|
25
|
+
|
26
|
+
v.main_frame.add_js_api('md5') do |what|
|
27
|
+
Digest::MD5.hexdigest(what)
|
28
|
+
end
|
29
|
+
|
30
|
+
puts v.main_frame.exec_js("ruby_eval('RUBY_DESCRIPTION')")
|
31
|
+
puts v.main_frame.exec_js("md5('foo')")
|
32
|
+
puts Digest::MD5.hexdigest('foo')
|
33
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
gem 'rake-compiler'
|
3
|
+
require 'rake/extensiontask'
|
4
|
+
BASE_DIR = Dir.pwd
|
5
|
+
require 'rubygems/package_task'
|
6
|
+
require 'rake/testtask'
|
7
|
+
|
8
|
+
exts = []
|
9
|
+
|
10
|
+
namespace :prepare do
|
11
|
+
FileList["ext/*/*.cr"].each do |cr|
|
12
|
+
dir = File.dirname(cr)
|
13
|
+
name = File.basename(dir)
|
14
|
+
desc "Generate source for #{name}"
|
15
|
+
task(name.intern) do
|
16
|
+
sh 'rubber-generate', '--build-dir', dir, cr
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
spec = Gem::Specification.new do |s|
|
22
|
+
s.name = "gtk-webkit-ruby"
|
23
|
+
s.author = "Geoff Youngs"
|
24
|
+
s.email = "git@intersect-uk.co.uk"
|
25
|
+
s.version = "0.0.3"
|
26
|
+
s.homepage = "http://github.com/geoffyoungs/gtk-webkit-ruby"
|
27
|
+
s.summary = "Webkit bindings using rubber-generate"
|
28
|
+
s.add_dependency("rubber-generate", ">= 0.0.12")
|
29
|
+
s.platform = Gem::Platform::RUBY
|
30
|
+
s.extensions = FileList["ext/*/extconf.rb"]
|
31
|
+
s.files = FileList['ext/*/*.{c,h,cr,rd}'] + ['Rakefile', 'README.md']
|
32
|
+
s.description = <<-EOF
|
33
|
+
Gtk Webkit bindings for ruby. Partial coverage sufficient to embed a webview in a Ruby-GNOME2 application.
|
34
|
+
|
35
|
+
Also initial/experimental support for allowing ruby code to be called by javascript & executing javascript
|
36
|
+
from ruby.
|
37
|
+
|
38
|
+
e.g
|
39
|
+
require 'gtk2'
|
40
|
+
require 'webkit'
|
41
|
+
|
42
|
+
v = WebKit::WebView.new
|
43
|
+
v.main_frame.setup_ruby
|
44
|
+
puts v.main_frame.exec_js("ruby_eval('RUBY_DESCRIPTION')")
|
45
|
+
puts v.main_frame.exec_js("document.root.innerHTML")
|
46
|
+
EOF
|
47
|
+
end
|
48
|
+
Gem::PackageTask.new(spec) do |pkg|
|
49
|
+
pkg.need_tar = true
|
50
|
+
end
|
51
|
+
Rake::ExtensionTask.new("webkit", spec)
|
52
|
+
|
53
|
+
Rake::TestTask.new do |t|
|
54
|
+
t.test_files = FileList['test/*_test.rb']
|
55
|
+
end
|
56
|
+
|
57
|
+
task :default, :compile
|
58
|
+
|
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'mkmf'
|
2
|
+
require 'mkmf-gnome2'
|
3
|
+
PKGConfig.have_package("gtk+-2.0") or exit(-1)
|
4
|
+
PKGConfig.have_package("webkit-1.0") or exit(-1)
|
5
|
+
have_header("webkit/webkit.h") or exit(-1)
|
6
|
+
have_header("JavaScriptCore/JavaScript.h") or exit(-1)
|
7
|
+
|
8
|
+
STDOUT.print("checking for new allocation framework... ") # for ruby-1.7
|
9
|
+
if Object.respond_to? :allocate
|
10
|
+
STDOUT.print "yes
|
11
|
+
"
|
12
|
+
$defs << "-DHAVE_OBJECT_ALLOCATE"
|
13
|
+
else
|
14
|
+
STDOUT.print "no
|
15
|
+
"
|
16
|
+
end
|
17
|
+
|
18
|
+
top = File.expand_path(File.dirname(__FILE__) + '/..') # XXX
|
19
|
+
$CFLAGS += " " + ['glib/src'].map{|d|
|
20
|
+
"-I" + File.join(top, d)
|
21
|
+
}.join(" ")
|
22
|
+
|
23
|
+
have_func("rb_define_alloc_func") # for ruby-1.8
|
24
|
+
|
25
|
+
#set_output_lib('libruby-webkit.a')
|
26
|
+
if /cygwin|mingw/ =~ RUBY_PLATFORM
|
27
|
+
top = "../.."
|
28
|
+
[
|
29
|
+
["glib/src", "ruby-glib2"],
|
30
|
+
].each{|d,l|
|
31
|
+
$LDFLAGS << sprintf(" -L%s/%s", top, d)
|
32
|
+
$libs << sprintf(" -l%s", l)
|
33
|
+
}
|
34
|
+
end
|
35
|
+
begin
|
36
|
+
srcdir = File.expand_path(File.dirname($0))
|
37
|
+
|
38
|
+
begin
|
39
|
+
|
40
|
+
obj_ext = "."+$OBJEXT
|
41
|
+
|
42
|
+
$libs = $libs.split(/ /).uniq.join(' ')
|
43
|
+
$source_files = Dir.glob(sprintf("%s/*.c", srcdir)).map{|fname|
|
44
|
+
fname[0, srcdir.length+1] = ''
|
45
|
+
fname
|
46
|
+
}
|
47
|
+
$objs = $source_files.collect do |item|
|
48
|
+
item.gsub(/.c$/, obj_ext)
|
49
|
+
end
|
50
|
+
|
51
|
+
#
|
52
|
+
# create Makefile
|
53
|
+
#
|
54
|
+
$defs << "-DRUBY_WEBKIT_COMPILATION"
|
55
|
+
# $CFLAGS << $defs.join(' ')
|
56
|
+
create_makefile("webkit", srcdir)
|
57
|
+
raise Interrupt if not FileTest.exist? "Makefile"
|
58
|
+
|
59
|
+
File.open("Makefile", "a") do |mfile|
|
60
|
+
$source_files.each do |e|
|
61
|
+
mfile.print sprintf("%s: %s
|
62
|
+
", e.gsub(/.c$/, obj_ext), e)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
ensure
|
66
|
+
#Dir.chdir ".."
|
67
|
+
end
|
68
|
+
|
69
|
+
#create_top_makefile()
|
70
|
+
rescue Interrupt
|
71
|
+
print " [error] " + $!.to_s + "
|
72
|
+
"
|
73
|
+
end
|
74
|
+
|
@@ -0,0 +1,271 @@
|
|
1
|
+
#include <alloca.h>
|
2
|
+
|
3
|
+
#define STRINGIZE(s) #s
|
4
|
+
|
5
|
+
#define JS_fn(f) _JS_fn(ctx, STRINGIZE(f), f)
|
6
|
+
|
7
|
+
JSObjectRef _JS_fn(JSContextRef ctx, const char *name, JSObjectCallAsFunctionCallback f)
|
8
|
+
{
|
9
|
+
JSStringRef nameStr = JSStringCreateWithUTF8CString(name);
|
10
|
+
JSObjectRef value = JSObjectMakeFunctionWithCallback(ctx, nameStr, f);
|
11
|
+
JSStringRelease(nameStr);
|
12
|
+
return value;
|
13
|
+
}
|
14
|
+
|
15
|
+
static inline bool
|
16
|
+
js_obj_set_value(JSContextRef ctx, JSObjectRef object, char *name, JSObjectRef value)
|
17
|
+
{
|
18
|
+
JSValueRef *_exception = NULL;
|
19
|
+
JSStringRef nameStr = JSStringCreateWithUTF8CString(name);
|
20
|
+
|
21
|
+
JSObjectSetProperty(ctx, object, nameStr, value, kJSPropertyAttributeNone, _exception);
|
22
|
+
|
23
|
+
JSStringRelease(nameStr);
|
24
|
+
|
25
|
+
if (*_exception) { return false; }
|
26
|
+
|
27
|
+
return true;
|
28
|
+
}
|
29
|
+
|
30
|
+
static JSValueRef
|
31
|
+
convert_string_to_jsval(JSContextRef ctx, char *str) {
|
32
|
+
JSStringRef js_s_ref;
|
33
|
+
JSValueRef js_val_ref;
|
34
|
+
|
35
|
+
js_s_ref = JSStringCreateWithUTF8CString(str);
|
36
|
+
js_val_ref = JSValueMakeString(ctx, js_s_ref);
|
37
|
+
JSStringRelease(js_s_ref);
|
38
|
+
|
39
|
+
return js_val_ref;
|
40
|
+
}
|
41
|
+
|
42
|
+
static char *
|
43
|
+
convert_javascript_to_utf8_string(JSContextRef ctx, JSValueRef val, size_t* out_len)
|
44
|
+
{
|
45
|
+
JSStringRef str = JSValueToStringCopy(ctx, val, NULL);
|
46
|
+
size_t max = 0, len;
|
47
|
+
char *buf;
|
48
|
+
|
49
|
+
max = JSStringGetMaximumUTF8CStringSize(str);
|
50
|
+
buf = malloc(max);
|
51
|
+
len = JSStringGetUTF8CString(str, buf, max);
|
52
|
+
|
53
|
+
if (out_len) {
|
54
|
+
*out_len = len;
|
55
|
+
}
|
56
|
+
|
57
|
+
JSStringRelease(str);
|
58
|
+
|
59
|
+
return buf;
|
60
|
+
}
|
61
|
+
|
62
|
+
static inline VALUE
|
63
|
+
convert_javascript_string_to_ruby(JSContextRef ctx, JSValueRef val)
|
64
|
+
{
|
65
|
+
VALUE output = Qnil;
|
66
|
+
JSStringRef str;
|
67
|
+
size_t len = 0, max = 0;
|
68
|
+
char *buf;
|
69
|
+
|
70
|
+
str = JSValueToStringCopy(ctx, val, NULL);
|
71
|
+
max = JSStringGetMaximumUTF8CStringSize(str);
|
72
|
+
buf = malloc(max);
|
73
|
+
len = JSStringGetUTF8CString(str, buf, max);
|
74
|
+
|
75
|
+
output = rb_str_new(buf, len-1); // Ignore terminator
|
76
|
+
|
77
|
+
free(buf);
|
78
|
+
JSStringRelease(str);
|
79
|
+
|
80
|
+
return output;
|
81
|
+
}
|
82
|
+
|
83
|
+
static VALUE
|
84
|
+
convert_javascript_to_ruby(JSContextRef ctx, JSValueRef val)
|
85
|
+
{
|
86
|
+
VALUE output = Qnil;
|
87
|
+
JSValueRef *_exception = NULL;
|
88
|
+
|
89
|
+
switch (JSValueGetType(ctx, val)) {
|
90
|
+
case kJSTypeUndefined:
|
91
|
+
case kJSTypeNull:
|
92
|
+
output = Qnil;
|
93
|
+
break;
|
94
|
+
case kJSTypeBoolean:
|
95
|
+
output = JSValueToBoolean(ctx, val) ? Qtrue : Qfalse;
|
96
|
+
break;
|
97
|
+
case kJSTypeNumber:
|
98
|
+
output = rb_float_new(JSValueToNumber(ctx, val, _exception));
|
99
|
+
break;
|
100
|
+
case kJSTypeString:
|
101
|
+
output = convert_javascript_string_to_ruby(ctx, val);
|
102
|
+
break;
|
103
|
+
case kJSTypeObject:
|
104
|
+
output = convert_javascript_string_to_ruby(ctx, val);
|
105
|
+
break;
|
106
|
+
}
|
107
|
+
|
108
|
+
return output;
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
static JSValueRef
|
113
|
+
convert_ruby_to_javascript(JSContextRef ctx, VALUE value)
|
114
|
+
{
|
115
|
+
JSStringRef str;
|
116
|
+
JSValueRef jsval;
|
117
|
+
|
118
|
+
switch (TYPE(value)) {
|
119
|
+
case T_FIXNUM:
|
120
|
+
return JSValueMakeNumber(ctx, (double) FIX2LONG(value));
|
121
|
+
case T_FLOAT:
|
122
|
+
return JSValueMakeNumber(ctx, (double) NUM2DBL(value));
|
123
|
+
case T_BIGNUM:
|
124
|
+
return JSValueMakeNumber(ctx, (double) rb_big2long(value));
|
125
|
+
case T_TRUE:
|
126
|
+
case T_FALSE:
|
127
|
+
return JSValueMakeBoolean(ctx, RTEST(value));
|
128
|
+
case T_UNDEF:
|
129
|
+
return JSValueMakeUndefined(ctx);
|
130
|
+
case T_NIL:
|
131
|
+
return JSValueMakeNull(ctx);
|
132
|
+
default:
|
133
|
+
if (TYPE(value) != T_STRING) {
|
134
|
+
value = rb_funcall(value, rb_intern("to_s"), 0);
|
135
|
+
}
|
136
|
+
str = JSStringCreateWithUTF8CString(RSTRING_PTR(value));
|
137
|
+
jsval = JSValueMakeString(ctx, str);
|
138
|
+
JSStringRelease(str);
|
139
|
+
return jsval;
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
143
|
+
static JSValueRef
|
144
|
+
js_call_ruby_eval (JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject,
|
145
|
+
size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
|
146
|
+
{
|
147
|
+
JSValueRef value = NULL;
|
148
|
+
|
149
|
+
if (argumentCount == 1) {
|
150
|
+
char *script;
|
151
|
+
VALUE val;
|
152
|
+
|
153
|
+
script = convert_javascript_to_utf8_string(ctx, arguments[0], NULL);
|
154
|
+
val = rb_eval_string(script);
|
155
|
+
|
156
|
+
value = convert_ruby_to_javascript(ctx, val);
|
157
|
+
|
158
|
+
free(script);
|
159
|
+
} else {
|
160
|
+
*exception = convert_string_to_jsval(ctx, "Wrong number of arguments");
|
161
|
+
}
|
162
|
+
|
163
|
+
return value;
|
164
|
+
}
|
165
|
+
|
166
|
+
static GHashTable *ruby_fns = NULL;
|
167
|
+
|
168
|
+
static JSValueRef
|
169
|
+
js_ruby_fn(JSContextRef ctx, JSObjectRef function, JSObjectRef thisObject,
|
170
|
+
size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
|
171
|
+
{
|
172
|
+
size_t i;
|
173
|
+
VALUE *args = ALLOC_N(VALUE, argumentCount);
|
174
|
+
VALUE ruby_fn = (VALUE) JSObjectGetPrivate(function);
|
175
|
+
JSValueRef retval;
|
176
|
+
|
177
|
+
if ((!ruby_fn) && ruby_fns) {
|
178
|
+
ruby_fn = (VALUE)g_hash_table_lookup(ruby_fns, (gpointer)function);
|
179
|
+
}
|
180
|
+
|
181
|
+
//printf("Hmm. Found: %p\n", function);
|
182
|
+
|
183
|
+
for (i = 0; i < argumentCount; i++) {
|
184
|
+
args[i] = convert_javascript_to_ruby(ctx, arguments[i]);
|
185
|
+
}
|
186
|
+
|
187
|
+
retval = convert_ruby_to_javascript(ctx,
|
188
|
+
rb_funcall2(ruby_fn, rb_intern("call"), argumentCount, args));
|
189
|
+
|
190
|
+
xfree(args);
|
191
|
+
|
192
|
+
return retval;
|
193
|
+
}
|
194
|
+
|
195
|
+
/**
|
196
|
+
* Javascript functions called directly from binding
|
197
|
+
**/
|
198
|
+
static void *
|
199
|
+
javascript_add_ruby_fn(JSGlobalContextRef ctx, char *name, VALUE ruby_fn)
|
200
|
+
{
|
201
|
+
JSObjectRef fn = NULL;
|
202
|
+
|
203
|
+
if (!ruby_fns) {
|
204
|
+
ruby_fns = g_hash_table_new(NULL, NULL);
|
205
|
+
}
|
206
|
+
|
207
|
+
JSObjectRef global = JSContextGetGlobalObject(ctx);
|
208
|
+
|
209
|
+
fn = JS_fn(js_ruby_fn);
|
210
|
+
|
211
|
+
if (!JSObjectSetPrivate(fn, (void*)ruby_fn)) {
|
212
|
+
gpointer old_value = g_hash_table_lookup(ruby_fns, (gpointer)fn);
|
213
|
+
if (old_value != NULL)
|
214
|
+
RUBYFUNC_DEL((VALUE)old_value);
|
215
|
+
RUBYFUNC_ADD(ruby_fn);
|
216
|
+
g_hash_table_insert(ruby_fns, (gpointer)fn, (gpointer)ruby_fn);
|
217
|
+
}
|
218
|
+
|
219
|
+
js_obj_set_value(ctx, global, name, fn); // Check failure?
|
220
|
+
|
221
|
+
return NULL;
|
222
|
+
}
|
223
|
+
|
224
|
+
static void *
|
225
|
+
javascript_add_ruby_eval(JSGlobalContextRef ctx)
|
226
|
+
{
|
227
|
+
JSObjectRef global = JSContextGetGlobalObject(ctx);
|
228
|
+
|
229
|
+
js_obj_set_value(ctx, global, "ruby_eval", JS_fn(js_call_ruby_eval));
|
230
|
+
|
231
|
+
return NULL;
|
232
|
+
}
|
233
|
+
|
234
|
+
static VALUE
|
235
|
+
javascript_exec(JSGlobalContextRef ctx, char *script)
|
236
|
+
{
|
237
|
+
VALUE output = Qnil;
|
238
|
+
|
239
|
+
JSStringRef js_script = JSStringCreateWithUTF8CString(script);
|
240
|
+
JSStringRef url = JSStringCreateWithUTF8CString("x-ruby://string");
|
241
|
+
|
242
|
+
JSValueRef err = JSValueMakeUndefined(ctx);
|
243
|
+
JSValueRef retval = NULL;
|
244
|
+
|
245
|
+
|
246
|
+
retval = JSEvaluateScript(ctx, js_script, NULL, url, 0, &err);
|
247
|
+
|
248
|
+
JSStringRelease(url);
|
249
|
+
JSStringRelease(js_script);
|
250
|
+
|
251
|
+
/* Convert output to ruby */
|
252
|
+
if (retval) {
|
253
|
+
output = convert_javascript_to_ruby(ctx, retval);
|
254
|
+
} else {
|
255
|
+
JSStringRef str = JSValueToStringCopy(ctx, err, NULL);
|
256
|
+
size_t len = 0, max = 0;
|
257
|
+
char *buf;
|
258
|
+
|
259
|
+
max = JSStringGetMaximumUTF8CStringSize(str);
|
260
|
+
buf = alloca(max);
|
261
|
+
len = JSStringGetUTF8CString(str, buf, max);
|
262
|
+
|
263
|
+
JSStringRelease(str);
|
264
|
+
rb_raise(cJavascriptError, buf);
|
265
|
+
//free(buf); // Will this ever be called?
|
266
|
+
}
|
267
|
+
|
268
|
+
return output;
|
269
|
+
}
|
270
|
+
|
271
|
+
|
data/ext/webkit/webkit.c
ADDED
@@ -0,0 +1,630 @@
|
|
1
|
+
/* Includes */
|
2
|
+
#include <ruby.h>
|
3
|
+
#include <stdlib.h>
|
4
|
+
#include <stdio.h>
|
5
|
+
#include <string.h>
|
6
|
+
#include "webkit/webkit.h"
|
7
|
+
#include "JavaScriptCore/JavaScript.h"
|
8
|
+
|
9
|
+
/* Setup types */
|
10
|
+
/* Try not to clash with other definitions of bool... */
|
11
|
+
typedef int rubber_bool;
|
12
|
+
#define bool rubber_bool
|
13
|
+
|
14
|
+
/* Prototypes */
|
15
|
+
#include "rbglib.h"
|
16
|
+
|
17
|
+
#include "rbgtk.h"
|
18
|
+
|
19
|
+
#if defined(G_PLATFORM_WIN32) && !defined(RUBY_GTK2_STATIC_COMPILATION)
|
20
|
+
# ifdef RUBY_GTK2_COMPILATION
|
21
|
+
# define RUBY_GTK2_VAR __declspec(dllexport)
|
22
|
+
# else
|
23
|
+
# define RUBY_GTK2_VAR extern __declspec(dllimport)
|
24
|
+
# endif
|
25
|
+
#else
|
26
|
+
# define RUBY_GTK2_VAR extern
|
27
|
+
#endif
|
28
|
+
|
29
|
+
RUBY_GTK2_VAR VALUE mGtk;
|
30
|
+
RUBY_GTK2_VAR VALUE mGdk;
|
31
|
+
|
32
|
+
#define RBGTK_INITIALIZE(obj,gtkobj) (rbgtk_initialize_gtkobject(obj, GTK_OBJECT(gtkobj)))
|
33
|
+
static VALUE mWebKit;
|
34
|
+
static VALUE
|
35
|
+
WebKit_CLASS_set_web_database_path(VALUE self, VALUE __v_path);
|
36
|
+
static VALUE
|
37
|
+
WebKit_CLASS_remove_all_web_databases(VALUE self);
|
38
|
+
static VALUE
|
39
|
+
WebKit_CLASS_set_default_web_database_quota(VALUE self, VALUE __v_quota);
|
40
|
+
static VALUE cJavascriptError;
|
41
|
+
static VALUE cWebSettings;
|
42
|
+
static VALUE
|
43
|
+
WebSettings_initialize(VALUE self);
|
44
|
+
static VALUE cWebFrame;
|
45
|
+
static VALUE
|
46
|
+
WebFrame_exec_js(VALUE self, VALUE __v_js);
|
47
|
+
static VALUE
|
48
|
+
WebFrame_add_ruby_eval(VALUE self);
|
49
|
+
static VALUE
|
50
|
+
WebFrame_add_js_api(VALUE self, VALUE __v_name);
|
51
|
+
static VALUE
|
52
|
+
WebFrame_load_string(VALUE self, VALUE __v_content, VALUE __v_mime_type, VALUE __v_encoding, VALUE __v_base_uri);
|
53
|
+
static VALUE cWebView;
|
54
|
+
static VALUE
|
55
|
+
WebView_initialize(VALUE self);
|
56
|
+
static VALUE
|
57
|
+
WebView_open(VALUE self, VALUE __v_uri);
|
58
|
+
static VALUE
|
59
|
+
WebView_execute_script(VALUE self, VALUE __v_script);
|
60
|
+
static VALUE
|
61
|
+
WebView_set_settings(VALUE self, VALUE __v_settings);
|
62
|
+
static VALUE
|
63
|
+
WebView_load_string(VALUE self, VALUE __v_content, VALUE __v_mime_type, VALUE __v_encoding, VALUE __v_base_uri);
|
64
|
+
static VALUE
|
65
|
+
WebView_load_uri(VALUE self, VALUE __v_uri);
|
66
|
+
static VALUE
|
67
|
+
WebView_main_frame(VALUE self);
|
68
|
+
static VALUE
|
69
|
+
WebView_focused_frame(VALUE self);
|
70
|
+
static VALUE
|
71
|
+
WebView_progress(VALUE self);
|
72
|
+
static VALUE
|
73
|
+
WebView_title(VALUE self);
|
74
|
+
static VALUE
|
75
|
+
WebView_uri(VALUE self);
|
76
|
+
static VALUE
|
77
|
+
WebView_reload(VALUE self);
|
78
|
+
static VALUE
|
79
|
+
WebView_reload_bypass_cache(VALUE self);
|
80
|
+
static VALUE
|
81
|
+
WebView_set_custom_encoding(VALUE self, VALUE __v_encoding);
|
82
|
+
static VALUE
|
83
|
+
WebView_stop_loading(VALUE self);
|
84
|
+
static VALUE cWebResource;
|
85
|
+
static VALUE
|
86
|
+
WebResource_encoding(VALUE self);
|
87
|
+
static VALUE
|
88
|
+
WebResource_frame_name(VALUE self);
|
89
|
+
static VALUE
|
90
|
+
WebResource_mime_type(VALUE self);
|
91
|
+
static VALUE
|
92
|
+
WebResource_uri(VALUE self);
|
93
|
+
static VALUE
|
94
|
+
WebResource_data(VALUE self);
|
95
|
+
static VALUE
|
96
|
+
WebResource_data_equals(VALUE self, VALUE data);
|
97
|
+
static VALUE cWebNetworkRequest;
|
98
|
+
static VALUE
|
99
|
+
WebNetworkRequest_uri(VALUE self);
|
100
|
+
static VALUE
|
101
|
+
WebNetworkRequest_uri_equals(VALUE self, VALUE __v_uri);
|
102
|
+
static VALUE cWebNetworkResponse;
|
103
|
+
static VALUE
|
104
|
+
WebNetworkResponse_uri(VALUE self);
|
105
|
+
static VALUE
|
106
|
+
WebNetworkResponse_uri_equals(VALUE self, VALUE __v_uri);
|
107
|
+
static VALUE _gcpool_RubyFunc = Qnil;
|
108
|
+
static void __gcpool_RubyFunc_add(VALUE val);
|
109
|
+
static void __gcpool_RubyFunc_del(VALUE val);
|
110
|
+
#define RUBYFUNC_ADD(val) __gcpool_RubyFunc_add(val)
|
111
|
+
#define RUBYFUNC_DEL(val) __gcpool_RubyFunc_del(val)
|
112
|
+
|
113
|
+
/* Inline C code */
|
114
|
+
|
115
|
+
#include <intern.h>
|
116
|
+
|
117
|
+
#include "javascript.h"
|
118
|
+
|
119
|
+
static inline VALUE strOrNil(const char *str) {
|
120
|
+
if (str) {
|
121
|
+
return rb_str_new2(str);
|
122
|
+
} else {
|
123
|
+
return Qnil;
|
124
|
+
}
|
125
|
+
}
|
126
|
+
|
127
|
+
|
128
|
+
/* Code */
|
129
|
+
static VALUE
|
130
|
+
WebKit_CLASS_set_web_database_path(VALUE self, VALUE __v_path)
|
131
|
+
{
|
132
|
+
char * path; char * __orig_path;
|
133
|
+
__orig_path = path = ( NIL_P(__v_path) ? NULL : StringValuePtr(__v_path) );
|
134
|
+
|
135
|
+
#line 31 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
136
|
+
webkit_set_web_database_directory_path(path);
|
137
|
+
|
138
|
+
return self;
|
139
|
+
}
|
140
|
+
|
141
|
+
static VALUE
|
142
|
+
WebKit_CLASS_remove_all_web_databases(VALUE self)
|
143
|
+
{
|
144
|
+
|
145
|
+
#line 34 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
146
|
+
webkit_remove_all_web_databases();
|
147
|
+
|
148
|
+
return Qnil;
|
149
|
+
}
|
150
|
+
|
151
|
+
static VALUE
|
152
|
+
WebKit_CLASS_set_default_web_database_quota(VALUE self, VALUE __v_quota)
|
153
|
+
{
|
154
|
+
guint64 quota; guint64 __orig_quota;
|
155
|
+
__orig_quota = quota = rb_num2ull(__v_quota);
|
156
|
+
|
157
|
+
#line 37 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
158
|
+
webkit_set_default_web_database_quota(quota);
|
159
|
+
|
160
|
+
return self;
|
161
|
+
}
|
162
|
+
|
163
|
+
static VALUE
|
164
|
+
WebSettings_initialize(VALUE self)
|
165
|
+
{
|
166
|
+
|
167
|
+
#line 43 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
168
|
+
G_INITIALIZE(self, webkit_web_settings_new());
|
169
|
+
|
170
|
+
return Qnil;
|
171
|
+
}
|
172
|
+
|
173
|
+
static VALUE
|
174
|
+
WebFrame_exec_js(VALUE self, VALUE __v_js)
|
175
|
+
{
|
176
|
+
VALUE __p_retval = Qnil;
|
177
|
+
char * js; char * __orig_js;
|
178
|
+
WebKitWebFrame *_self = ((WebKitWebFrame*)RVAL2GOBJ(self));
|
179
|
+
__orig_js = js = ( NIL_P(__v_js) ? NULL : StringValuePtr(__v_js) );
|
180
|
+
|
181
|
+
#line 50 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
182
|
+
do { __p_retval = javascript_exec(webkit_web_frame_get_global_context(_self), js); goto out; } while(0);
|
183
|
+
out:
|
184
|
+
return __p_retval;
|
185
|
+
}
|
186
|
+
|
187
|
+
static VALUE
|
188
|
+
WebFrame_add_ruby_eval(VALUE self)
|
189
|
+
{
|
190
|
+
WebKitWebFrame *_self = ((WebKitWebFrame*)RVAL2GOBJ(self));
|
191
|
+
|
192
|
+
#line 53 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
193
|
+
javascript_add_ruby_eval(webkit_web_frame_get_global_context(_self));
|
194
|
+
|
195
|
+
return Qnil;
|
196
|
+
}
|
197
|
+
|
198
|
+
static VALUE
|
199
|
+
WebFrame_add_js_api(VALUE self, VALUE __v_name)
|
200
|
+
{
|
201
|
+
char * name; char * __orig_name;
|
202
|
+
WebKitWebFrame *_self = ((WebKitWebFrame*)RVAL2GOBJ(self));
|
203
|
+
__orig_name = name = ( NIL_P(__v_name) ? NULL : StringValuePtr(__v_name) );
|
204
|
+
VALUE block = rb_block_proc();
|
205
|
+
|
206
|
+
#line 56 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
207
|
+
javascript_add_ruby_fn(webkit_web_frame_get_global_context(_self), name, block);
|
208
|
+
|
209
|
+
return Qnil;
|
210
|
+
}
|
211
|
+
|
212
|
+
static VALUE
|
213
|
+
WebFrame_load_string(VALUE self, VALUE __v_content, VALUE __v_mime_type, VALUE __v_encoding, VALUE __v_base_uri)
|
214
|
+
{
|
215
|
+
char * content; char * __orig_content;
|
216
|
+
char * mime_type; char * __orig_mime_type;
|
217
|
+
char * encoding; char * __orig_encoding;
|
218
|
+
char * base_uri; char * __orig_base_uri;
|
219
|
+
WebKitWebFrame *_self = ((WebKitWebFrame*)RVAL2GOBJ(self));
|
220
|
+
__orig_content = content = ( NIL_P(__v_content) ? NULL : StringValuePtr(__v_content) );
|
221
|
+
__orig_mime_type = mime_type = ( NIL_P(__v_mime_type) ? NULL : StringValuePtr(__v_mime_type) );
|
222
|
+
__orig_encoding = encoding = ( NIL_P(__v_encoding) ? NULL : StringValuePtr(__v_encoding) );
|
223
|
+
__orig_base_uri = base_uri = ( NIL_P(__v_base_uri) ? NULL : StringValuePtr(__v_base_uri) );
|
224
|
+
|
225
|
+
#line 59 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
226
|
+
webkit_web_frame_load_string(_self, content, mime_type, encoding, base_uri);
|
227
|
+
|
228
|
+
return Qnil;
|
229
|
+
}
|
230
|
+
|
231
|
+
static VALUE
|
232
|
+
WebView_initialize(VALUE self)
|
233
|
+
{
|
234
|
+
|
235
|
+
#line 65 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
236
|
+
RBGTK_INITIALIZE(self, webkit_web_view_new());
|
237
|
+
|
238
|
+
return Qnil;
|
239
|
+
}
|
240
|
+
|
241
|
+
static VALUE
|
242
|
+
WebView_open(VALUE self, VALUE __v_uri)
|
243
|
+
{
|
244
|
+
char * uri; char * __orig_uri;
|
245
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
246
|
+
__orig_uri = uri = ( NIL_P(__v_uri) ? NULL : StringValuePtr(__v_uri) );
|
247
|
+
|
248
|
+
#line 68 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
249
|
+
webkit_web_view_open(_self, uri);
|
250
|
+
|
251
|
+
return Qnil;
|
252
|
+
}
|
253
|
+
|
254
|
+
static VALUE
|
255
|
+
WebView_execute_script(VALUE self, VALUE __v_script)
|
256
|
+
{
|
257
|
+
char * script; char * __orig_script;
|
258
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
259
|
+
__orig_script = script = ( NIL_P(__v_script) ? NULL : StringValuePtr(__v_script) );
|
260
|
+
|
261
|
+
#line 71 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
262
|
+
webkit_web_view_execute_script(_self, script);
|
263
|
+
|
264
|
+
return Qnil;
|
265
|
+
}
|
266
|
+
|
267
|
+
static VALUE
|
268
|
+
WebView_set_settings(VALUE self, VALUE __v_settings)
|
269
|
+
{
|
270
|
+
WebKitWebSettings * settings; WebKitWebSettings * __orig_settings;
|
271
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
272
|
+
__orig_settings = settings = RVAL2GOBJ(__v_settings);
|
273
|
+
|
274
|
+
#line 74 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
275
|
+
webkit_web_view_set_settings(_self, settings);
|
276
|
+
|
277
|
+
return self;
|
278
|
+
}
|
279
|
+
|
280
|
+
static VALUE
|
281
|
+
WebView_load_string(VALUE self, VALUE __v_content, VALUE __v_mime_type, VALUE __v_encoding, VALUE __v_base_uri)
|
282
|
+
{
|
283
|
+
char * content; char * __orig_content;
|
284
|
+
char * mime_type; char * __orig_mime_type;
|
285
|
+
char * encoding; char * __orig_encoding;
|
286
|
+
char * base_uri; char * __orig_base_uri;
|
287
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
288
|
+
__orig_content = content = ( NIL_P(__v_content) ? NULL : StringValuePtr(__v_content) );
|
289
|
+
__orig_mime_type = mime_type = ( NIL_P(__v_mime_type) ? NULL : StringValuePtr(__v_mime_type) );
|
290
|
+
__orig_encoding = encoding = ( NIL_P(__v_encoding) ? NULL : StringValuePtr(__v_encoding) );
|
291
|
+
__orig_base_uri = base_uri = ( NIL_P(__v_base_uri) ? NULL : StringValuePtr(__v_base_uri) );
|
292
|
+
|
293
|
+
#line 77 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
294
|
+
webkit_web_view_load_string(_self, content, mime_type, encoding, base_uri);
|
295
|
+
|
296
|
+
return Qnil;
|
297
|
+
}
|
298
|
+
|
299
|
+
static VALUE
|
300
|
+
WebView_load_uri(VALUE self, VALUE __v_uri)
|
301
|
+
{
|
302
|
+
char * uri; char * __orig_uri;
|
303
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
304
|
+
__orig_uri = uri = ( NIL_P(__v_uri) ? NULL : StringValuePtr(__v_uri) );
|
305
|
+
|
306
|
+
#line 80 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
307
|
+
webkit_web_view_load_uri(_self, uri);
|
308
|
+
|
309
|
+
return Qnil;
|
310
|
+
}
|
311
|
+
|
312
|
+
static VALUE
|
313
|
+
WebView_main_frame(VALUE self)
|
314
|
+
{
|
315
|
+
VALUE __p_retval = Qnil;
|
316
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
317
|
+
|
318
|
+
#line 83 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
319
|
+
do { __p_retval = GOBJ2RVAL(webkit_web_view_get_main_frame(_self)); goto out; } while(0);
|
320
|
+
out:
|
321
|
+
return __p_retval;
|
322
|
+
}
|
323
|
+
|
324
|
+
static VALUE
|
325
|
+
WebView_focused_frame(VALUE self)
|
326
|
+
{
|
327
|
+
VALUE __p_retval = Qnil;
|
328
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
329
|
+
|
330
|
+
#line 86 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
331
|
+
do { __p_retval = GOBJ2RVAL(webkit_web_view_get_focused_frame(_self)); goto out; } while(0);
|
332
|
+
out:
|
333
|
+
return __p_retval;
|
334
|
+
}
|
335
|
+
|
336
|
+
static VALUE
|
337
|
+
WebView_progress(VALUE self)
|
338
|
+
{
|
339
|
+
VALUE __p_retval = Qnil;
|
340
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
341
|
+
|
342
|
+
#line 89 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
343
|
+
do { __p_retval = rb_float_new(webkit_web_view_get_progress(_self)); goto out; } while(0);
|
344
|
+
out:
|
345
|
+
return __p_retval;
|
346
|
+
}
|
347
|
+
|
348
|
+
static VALUE
|
349
|
+
WebView_title(VALUE self)
|
350
|
+
{
|
351
|
+
VALUE __p_retval = Qnil;
|
352
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
353
|
+
|
354
|
+
#line 92 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
355
|
+
do { __p_retval = rb_str_new2(webkit_web_view_get_title(_self)); goto out; } while(0);
|
356
|
+
out:
|
357
|
+
return __p_retval;
|
358
|
+
}
|
359
|
+
|
360
|
+
static VALUE
|
361
|
+
WebView_uri(VALUE self)
|
362
|
+
{
|
363
|
+
VALUE __p_retval = Qnil;
|
364
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
365
|
+
|
366
|
+
#line 95 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
367
|
+
do { __p_retval = rb_str_new2(webkit_web_view_get_uri(_self)); goto out; } while(0);
|
368
|
+
out:
|
369
|
+
return __p_retval;
|
370
|
+
}
|
371
|
+
|
372
|
+
static VALUE
|
373
|
+
WebView_reload(VALUE self)
|
374
|
+
{
|
375
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
376
|
+
|
377
|
+
#line 98 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
378
|
+
webkit_web_view_reload(_self);
|
379
|
+
|
380
|
+
return Qnil;
|
381
|
+
}
|
382
|
+
|
383
|
+
static VALUE
|
384
|
+
WebView_reload_bypass_cache(VALUE self)
|
385
|
+
{
|
386
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
387
|
+
|
388
|
+
#line 101 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
389
|
+
webkit_web_view_reload_bypass_cache(_self);
|
390
|
+
|
391
|
+
return Qnil;
|
392
|
+
}
|
393
|
+
|
394
|
+
static VALUE
|
395
|
+
WebView_set_custom_encoding(VALUE self, VALUE __v_encoding)
|
396
|
+
{
|
397
|
+
char * encoding; char * __orig_encoding;
|
398
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
399
|
+
__orig_encoding = encoding = ( NIL_P(__v_encoding) ? NULL : StringValuePtr(__v_encoding) );
|
400
|
+
|
401
|
+
#line 104 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
402
|
+
webkit_web_view_set_custom_encoding(_self, encoding);
|
403
|
+
|
404
|
+
return self;
|
405
|
+
}
|
406
|
+
|
407
|
+
static VALUE
|
408
|
+
WebView_stop_loading(VALUE self)
|
409
|
+
{
|
410
|
+
WebKitWebView *_self = ((WebKitWebView*)RVAL2GOBJ(self));
|
411
|
+
|
412
|
+
#line 107 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
413
|
+
webkit_web_view_stop_loading(_self);
|
414
|
+
|
415
|
+
return Qnil;
|
416
|
+
}
|
417
|
+
|
418
|
+
static VALUE
|
419
|
+
WebResource_encoding(VALUE self)
|
420
|
+
{
|
421
|
+
VALUE __p_retval = Qnil;
|
422
|
+
WebKitWebResource *_self = ((WebKitWebResource*)RVAL2GOBJ(self));
|
423
|
+
|
424
|
+
#line 114 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
425
|
+
do { __p_retval = strOrNil(webkit_web_resource_get_encoding(_self)); goto out; } while(0);
|
426
|
+
out:
|
427
|
+
return __p_retval;
|
428
|
+
}
|
429
|
+
|
430
|
+
static VALUE
|
431
|
+
WebResource_frame_name(VALUE self)
|
432
|
+
{
|
433
|
+
VALUE __p_retval = Qnil;
|
434
|
+
WebKitWebResource *_self = ((WebKitWebResource*)RVAL2GOBJ(self));
|
435
|
+
|
436
|
+
#line 117 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
437
|
+
do { __p_retval = strOrNil(webkit_web_resource_get_frame_name(_self)); goto out; } while(0);
|
438
|
+
out:
|
439
|
+
return __p_retval;
|
440
|
+
}
|
441
|
+
|
442
|
+
static VALUE
|
443
|
+
WebResource_mime_type(VALUE self)
|
444
|
+
{
|
445
|
+
VALUE __p_retval = Qnil;
|
446
|
+
WebKitWebResource *_self = ((WebKitWebResource*)RVAL2GOBJ(self));
|
447
|
+
|
448
|
+
#line 120 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
449
|
+
do { __p_retval = strOrNil(webkit_web_resource_get_mime_type(_self)); goto out; } while(0);
|
450
|
+
out:
|
451
|
+
return __p_retval;
|
452
|
+
}
|
453
|
+
|
454
|
+
static VALUE
|
455
|
+
WebResource_uri(VALUE self)
|
456
|
+
{
|
457
|
+
VALUE __p_retval = Qnil;
|
458
|
+
WebKitWebResource *_self = ((WebKitWebResource*)RVAL2GOBJ(self));
|
459
|
+
|
460
|
+
#line 123 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
461
|
+
do { __p_retval = strOrNil(webkit_web_resource_get_mime_type(_self)); goto out; } while(0);
|
462
|
+
out:
|
463
|
+
return __p_retval;
|
464
|
+
}
|
465
|
+
|
466
|
+
static VALUE
|
467
|
+
WebResource_data(VALUE self)
|
468
|
+
{
|
469
|
+
VALUE __p_retval = Qnil;
|
470
|
+
WebKitWebResource *_self = ((WebKitWebResource*)RVAL2GOBJ(self));
|
471
|
+
|
472
|
+
#line 126 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
473
|
+
|
474
|
+
do {
|
475
|
+
GString * data =
|
476
|
+
webkit_web_resource_get_data(_self);
|
477
|
+
do { __p_retval = rb_str_new(data->str, data->len); goto out; } while(0);
|
478
|
+
|
479
|
+
} while(0);
|
480
|
+
|
481
|
+
out:
|
482
|
+
return __p_retval;
|
483
|
+
}
|
484
|
+
|
485
|
+
static VALUE
|
486
|
+
WebResource_data_equals(VALUE self, VALUE data)
|
487
|
+
{
|
488
|
+
VALUE __p_retval = data;
|
489
|
+
WebKitWebResource *_self = ((WebKitWebResource*)RVAL2GOBJ(self));
|
490
|
+
Check_Type(data, T_STRING);
|
491
|
+
|
492
|
+
#line 130 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
493
|
+
|
494
|
+
do {
|
495
|
+
GString * odata =
|
496
|
+
webkit_web_resource_get_data(_self);
|
497
|
+
g_free(odata->str);
|
498
|
+
odata->str = g_malloc(RSTRING_LEN(data)+1);
|
499
|
+
odata->len = odata->allocated_len = RSTRING_LEN(data);
|
500
|
+
memcpy(RSTRING_PTR(data), odata->str, RSTRING_LEN(data));
|
501
|
+
do { __p_retval = data; goto out; } while(0);
|
502
|
+
|
503
|
+
} while(0);
|
504
|
+
|
505
|
+
out:
|
506
|
+
return __p_retval;
|
507
|
+
}
|
508
|
+
|
509
|
+
static VALUE
|
510
|
+
WebNetworkRequest_uri(VALUE self)
|
511
|
+
{
|
512
|
+
VALUE __p_retval = Qnil;
|
513
|
+
WebKitNetworkRequest *_self = ((WebKitNetworkRequest*)RVAL2GOBJ(self));
|
514
|
+
|
515
|
+
#line 142 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
516
|
+
do { __p_retval = rb_str_new2(webkit_network_request_get_uri(_self)); goto out; } while(0);
|
517
|
+
out:
|
518
|
+
return __p_retval;
|
519
|
+
}
|
520
|
+
|
521
|
+
static VALUE
|
522
|
+
WebNetworkRequest_uri_equals(VALUE self, VALUE __v_uri)
|
523
|
+
{
|
524
|
+
char * uri; char * __orig_uri;
|
525
|
+
WebKitNetworkRequest *_self = ((WebKitNetworkRequest*)RVAL2GOBJ(self));
|
526
|
+
__orig_uri = uri = ( NIL_P(__v_uri) ? NULL : StringValuePtr(__v_uri) );
|
527
|
+
|
528
|
+
#line 145 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
529
|
+
webkit_network_request_set_uri(_self, uri);
|
530
|
+
|
531
|
+
return __v_uri;
|
532
|
+
}
|
533
|
+
|
534
|
+
static VALUE
|
535
|
+
WebNetworkResponse_uri(VALUE self)
|
536
|
+
{
|
537
|
+
VALUE __p_retval = Qnil;
|
538
|
+
WebKitNetworkResponse *_self = ((WebKitNetworkResponse*)RVAL2GOBJ(self));
|
539
|
+
|
540
|
+
#line 152 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
541
|
+
do { __p_retval = rb_str_new2(webkit_network_response_get_uri(_self)); goto out; } while(0);
|
542
|
+
out:
|
543
|
+
return __p_retval;
|
544
|
+
}
|
545
|
+
|
546
|
+
static VALUE
|
547
|
+
WebNetworkResponse_uri_equals(VALUE self, VALUE __v_uri)
|
548
|
+
{
|
549
|
+
char * uri; char * __orig_uri;
|
550
|
+
WebKitNetworkResponse *_self = ((WebKitNetworkResponse*)RVAL2GOBJ(self));
|
551
|
+
__orig_uri = uri = ( NIL_P(__v_uri) ? NULL : StringValuePtr(__v_uri) );
|
552
|
+
|
553
|
+
#line 155 "/home/geoff/Projects/gtk-webkit-ruby/ext/webkit/webkit.cr"
|
554
|
+
webkit_network_response_set_uri(_self, uri);
|
555
|
+
|
556
|
+
return __v_uri;
|
557
|
+
}
|
558
|
+
|
559
|
+
static void __gcpool_RubyFunc_add(VALUE val)
|
560
|
+
{
|
561
|
+
if (_gcpool_RubyFunc == Qnil)
|
562
|
+
{
|
563
|
+
_gcpool_RubyFunc = rb_ary_new3(1, val);
|
564
|
+
}
|
565
|
+
else
|
566
|
+
{
|
567
|
+
rb_ary_push(_gcpool_RubyFunc, val);
|
568
|
+
}
|
569
|
+
}
|
570
|
+
|
571
|
+
static void __gcpool_RubyFunc_del(VALUE val)
|
572
|
+
{
|
573
|
+
if (_gcpool_RubyFunc == Qnil)
|
574
|
+
{
|
575
|
+
rb_warn("Trying to remove object from empty GC queue RubyFunc");
|
576
|
+
return;
|
577
|
+
}
|
578
|
+
rb_ary_delete(_gcpool_RubyFunc, val);
|
579
|
+
// If nothing is referenced, don't keep an empty array in the pool...
|
580
|
+
if (RARRAY(_gcpool_RubyFunc)->len == 0)
|
581
|
+
_gcpool_RubyFunc = Qnil;
|
582
|
+
}
|
583
|
+
|
584
|
+
/* Init */
|
585
|
+
void
|
586
|
+
Init_webkit(void)
|
587
|
+
{
|
588
|
+
mWebKit = rb_define_module("WebKit");
|
589
|
+
rb_define_singleton_method(mWebKit, "set_web_database_path", WebKit_CLASS_set_web_database_path, 1);
|
590
|
+
rb_define_singleton_method(mWebKit, "remove_all_web_databases", WebKit_CLASS_remove_all_web_databases, 0);
|
591
|
+
rb_define_singleton_method(mWebKit, "set_default_web_database_quota", WebKit_CLASS_set_default_web_database_quota, 1);
|
592
|
+
cJavascriptError = rb_define_class_under(mWebKit, "JavascriptError", rb_eStandardError);
|
593
|
+
cWebSettings = G_DEF_CLASS(WEBKIT_TYPE_WEB_SETTINGS, "WebSettings", mWebKit);
|
594
|
+
rb_define_method(cWebSettings, "initialize", WebSettings_initialize, 0);
|
595
|
+
cWebFrame = G_DEF_CLASS(WEBKIT_TYPE_WEB_FRAME, "WebFrame", mWebKit);
|
596
|
+
rb_define_method(cWebFrame, "exec_js", WebFrame_exec_js, 1);
|
597
|
+
rb_define_method(cWebFrame, "add_ruby_eval", WebFrame_add_ruby_eval, 0);
|
598
|
+
rb_define_method(cWebFrame, "add_js_api", WebFrame_add_js_api, 1);
|
599
|
+
rb_define_method(cWebFrame, "load_string", WebFrame_load_string, 4);
|
600
|
+
cWebView = G_DEF_CLASS(WEBKIT_TYPE_WEB_VIEW, "WebView", mWebKit);
|
601
|
+
rb_define_method(cWebView, "initialize", WebView_initialize, 0);
|
602
|
+
rb_define_method(cWebView, "open", WebView_open, 1);
|
603
|
+
rb_define_method(cWebView, "execute_script", WebView_execute_script, 1);
|
604
|
+
rb_define_method(cWebView, "set_settings", WebView_set_settings, 1);
|
605
|
+
rb_define_method(cWebView, "load_string", WebView_load_string, 4);
|
606
|
+
rb_define_method(cWebView, "load_uri", WebView_load_uri, 1);
|
607
|
+
rb_define_method(cWebView, "main_frame", WebView_main_frame, 0);
|
608
|
+
rb_define_method(cWebView, "focused_frame", WebView_focused_frame, 0);
|
609
|
+
rb_define_method(cWebView, "progress", WebView_progress, 0);
|
610
|
+
rb_define_method(cWebView, "title", WebView_title, 0);
|
611
|
+
rb_define_method(cWebView, "uri", WebView_uri, 0);
|
612
|
+
rb_define_method(cWebView, "reload", WebView_reload, 0);
|
613
|
+
rb_define_method(cWebView, "reload_bypass_cache", WebView_reload_bypass_cache, 0);
|
614
|
+
rb_define_method(cWebView, "set_custom_encoding", WebView_set_custom_encoding, 1);
|
615
|
+
rb_define_method(cWebView, "stop_loading", WebView_stop_loading, 0);
|
616
|
+
cWebResource = G_DEF_CLASS(WEBKIT_TYPE_WEB_RESOURCE, "WebResource", mWebKit);
|
617
|
+
rb_define_method(cWebResource, "encoding", WebResource_encoding, 0);
|
618
|
+
rb_define_method(cWebResource, "frame_name", WebResource_frame_name, 0);
|
619
|
+
rb_define_method(cWebResource, "mime_type", WebResource_mime_type, 0);
|
620
|
+
rb_define_method(cWebResource, "uri", WebResource_uri, 0);
|
621
|
+
rb_define_method(cWebResource, "data", WebResource_data, 0);
|
622
|
+
rb_define_method(cWebResource, "data=", WebResource_data_equals, 1);
|
623
|
+
cWebNetworkRequest = G_DEF_CLASS(WEBKIT_TYPE_NETWORK_REQUEST, "WebNetworkRequest", mWebKit);
|
624
|
+
rb_define_method(cWebNetworkRequest, "uri", WebNetworkRequest_uri, 0);
|
625
|
+
rb_define_method(cWebNetworkRequest, "uri=", WebNetworkRequest_uri_equals, 1);
|
626
|
+
cWebNetworkResponse = G_DEF_CLASS(WEBKIT_TYPE_NETWORK_RESPONSE, "WebNetworkResponse", mWebKit);
|
627
|
+
rb_define_method(cWebNetworkResponse, "uri", WebNetworkResponse_uri, 0);
|
628
|
+
rb_define_method(cWebNetworkResponse, "uri=", WebNetworkResponse_uri_equals, 1);
|
629
|
+
rb_gc_register_address(&_gcpool_RubyFunc);
|
630
|
+
}
|