122 lines
3.5 KiB
Vala
122 lines
3.5 KiB
Vala
private void handle_console_message_sent(WebKit.WebExtension extension, WebKit.ConsoleMessage message) {
|
|
var ext_message = new WebKit.UserMessage(
|
|
"console-message-sent",
|
|
new Variant("(ssi)", message.get_text(), message.get_level().to_string(), message.get_line())
|
|
);
|
|
|
|
extension.send_message_to_context.begin(ext_message, null);
|
|
}
|
|
|
|
|
|
// private void handle_form_controls(WebKit.WebExtension extension, WebKit.WebPage page, GenericArray<WebKit.DOM.Element> elements, WebKit.Frame frame) {
|
|
// var data = new Json.Builder();
|
|
// data.begin_array();
|
|
//
|
|
// elements.foreach((elem) => {
|
|
// data.begin_object();
|
|
//
|
|
// data.set_member_name("tag");data.add_string_value(elem.tag_name);
|
|
// data.set_member_name("id");data.add_string_value(elem.id);
|
|
// data.set_member_name("name");data.add_string_value(elem.attributes.name);
|
|
//
|
|
// data.end_object();
|
|
// })
|
|
//
|
|
// data.end_array();
|
|
//
|
|
// var ext_message = new WebKit.UserMessage(
|
|
// "context-menu",
|
|
// new Variant("",
|
|
// new Variant("()", )
|
|
// )
|
|
// )
|
|
// }
|
|
|
|
|
|
// private async bool handle_send_request(WebKit.WebExtension extension, WebKit.URIRequest request, WebKit.URIResponse redirected_response) {
|
|
// var ext_message = new WebKit.UserMessage(
|
|
// "send-request",
|
|
// new Variant("(s)", request.get_uri())
|
|
// );
|
|
//
|
|
// var result = yield extension.send_message_to_context(ext_message, null);
|
|
// return result.get_parameters().get_boolean();
|
|
// }
|
|
|
|
|
|
private void handle_form_submit(WebKit.WebExtension extension, WebKit.FormSubmissionStep stage, GenericArray<string> keys, GenericArray<string> values) {
|
|
var gen = new Json.Generator();
|
|
var data = new Json.Builder();
|
|
|
|
data.begin_object();
|
|
data.set_member_name("keys");
|
|
data.begin_array();
|
|
|
|
keys.foreach((key) => {
|
|
data.add_string_value(key);
|
|
});
|
|
|
|
data.end_array();
|
|
|
|
data.set_member_name("values");
|
|
data.begin_array();
|
|
|
|
values.foreach((value) => {
|
|
data.add_string_value(value);
|
|
});
|
|
|
|
data.end_array();
|
|
data.end_object();
|
|
|
|
gen.set_root(data.get_root());
|
|
|
|
var ext_message = new WebKit.UserMessage(
|
|
"form-sent",
|
|
new Variant("(ss)", stage.to_string(), gen.to_data(null))
|
|
);
|
|
|
|
extension.send_message_to_context.begin(ext_message, null);
|
|
}
|
|
|
|
|
|
private void handle_page_created(WebKit.WebExtension extension, WebKit.WebPage page) {
|
|
var ext_message = new WebKit.UserMessage(
|
|
"page-created",
|
|
new Variant("(t)", page.get_id())
|
|
);
|
|
|
|
extension.send_message_to_context.begin(ext_message, null);
|
|
|
|
page.console_message_sent.connect((message) => {
|
|
handle_console_message_sent(extension, message);
|
|
});
|
|
|
|
// page.context_menu.connect((ContextMenu menu, WebHitResult, hit_result) => {
|
|
// handle_context_menu(extension, menu, hit_result)
|
|
// });
|
|
|
|
// page.form_controls_associated_for_frame.connect((web_page, elements, frame) => {
|
|
// handle_form_controls(extension, web_page, elements, frame)
|
|
// });
|
|
|
|
// page.send_request.connect((request, redirected_response) => {
|
|
// return handle_send_request(extension, request, redirected_response);
|
|
// });
|
|
|
|
page.will_submit_form.connect((form, stage, source_frame, target_rame, field_names, field_values) => {
|
|
handle_form_submit(extension, stage, field_names, field_values);
|
|
});
|
|
}
|
|
|
|
|
|
private void handle_message_recv(WebKit.WebExtension extension, WebKit.UserMessage message) {
|
|
print(message.get_name());
|
|
}
|
|
|
|
|
|
[CCode (cname="G_MODULE_EXPORT webkit_web_extension_initialize", has_target = false)]
|
|
public static void webkit_web_extension_initialize(WebKit.WebExtension extension) {
|
|
extension.page_created.connect(handle_page_created);
|
|
extension.user_message_received.connect(handle_message_recv);
|
|
}
|