diff options
Diffstat (limited to 'beos')
-rw-r--r-- | beos/beos_fetch_rsrc.cpp | 15 | ||||
-rw-r--r-- | beos/beos_gui.cpp | 51 | ||||
-rw-r--r-- | beos/beos_gui.h | 4 | ||||
-rw-r--r-- | beos/beos_login.cpp | 51 | ||||
-rw-r--r-- | beos/beos_scaffolding.cpp | 9 | ||||
-rw-r--r-- | beos/beos_thumbnail.cpp | 22 | ||||
-rw-r--r-- | beos/beos_window.cpp | 14 |
7 files changed, 96 insertions, 70 deletions
diff --git a/beos/beos_fetch_rsrc.cpp b/beos/beos_fetch_rsrc.cpp index 6d7ea4257..24126a271 100644 --- a/beos/beos_fetch_rsrc.cpp +++ b/beos/beos_fetch_rsrc.cpp @@ -80,7 +80,7 @@ static void fetch_rsrc_finalise(const char *scheme) static void *fetch_rsrc_setup(struct fetch *parent_fetch, const char *url, bool only_2xx, const char *post_urlenc, - struct fetch_multipart_data *post_multipart, + const struct fetch_multipart_data *post_multipart, const char **headers) { struct fetch_rsrc_context *ctx; @@ -241,20 +241,9 @@ static bool fetch_rsrc_process(struct fetch_rsrc_context *c) static void fetch_rsrc_poll(const char *scheme) { struct fetch_rsrc_context *c, *next; - struct cache_data cachedata; if (ring == NULL) return; - cachedata.req_time = time(NULL); - cachedata.res_time = time(NULL); - cachedata.date = 0; - cachedata.expires = 0; - cachedata.age = INVALID_AGE; - cachedata.max_age = 0; - cachedata.no_cache = true; - cachedata.etag = NULL; - cachedata.last_modified = 0; - /* Iterate over ring, processing each pending fetch */ c = ring; do { @@ -299,7 +288,7 @@ static void fetch_rsrc_poll(const char *scheme) } if (!c->aborted) { fetch_rsrc_send_callback(FETCH_FINISHED, - c, &cachedata, 0, FETCH_ERROR_NO_ERROR); + c, 0, 0, FETCH_ERROR_NO_ERROR); } } else { LOG(("Processing of %s failed!", c->url)); diff --git a/beos/beos_gui.cpp b/beos/beos_gui.cpp index b0f23b61b..768ae7680 100644 --- a/beos/beos_gui.cpp +++ b/beos/beos_gui.cpp @@ -45,6 +45,7 @@ extern "C" { #include <hubbub/hubbub.h> #include "content/content.h" +#include "content/content_protected.h" #include "content/fetch.h" #include "content/fetchers/fetch_curl.h" #include "content/urldb.h" @@ -82,6 +83,7 @@ extern "C" { static void *myrealloc(void *ptr, size_t len, void *pw); +void gui_init(int argc, char** argv); /* Where to search for shared resources. Must have trailing / */ @@ -121,7 +123,7 @@ static int sEventPipe[2]; #if 0 /* GTK */ static void nsbeos_create_ssl_verify_window(struct browser_window *bw, - struct content *c, const struct ssl_cert_info *certs, + hlcache_handle *c, const struct ssl_cert_info *certs, unsigned long num); static void nsbeos_ssl_accept(BButton *w, gpointer data); static void nsbeos_ssl_reject(BButton *w, gpointer data); @@ -226,6 +228,7 @@ NSBrowserApplication::QuitRequested() // XXX doesn't work +#if 0 static char *generate_default_css() { BString text; @@ -276,9 +279,11 @@ static char *generate_default_css() return strdup(url); } +#endif /* realpath fallback on R5 */ #if !defined(__HAIKU__) && !defined(B_BEOS_VERSION_DANO) +extern "C" char *realpath(const char *f, char *buf); char *realpath(const char *f, char *buf) { BPath path(f, NULL, true); @@ -441,12 +446,23 @@ static void gui_init2(int argc, char** argv) /** Normal entry point from OS */ int main(int argc, char** argv) { + char buf[PATH_MAX]; setbuf(stderr, NULL); + BPath options; + if (find_directory(B_USER_SETTINGS_DIRECTORY, &options, true) == B_OK) { + options.Append("x-vnd.NetSurf"); + } + + find_resource(buf, "messages", "./beos/res/messages"); + LOG(("Using '%s' as Messages file", buf)); + //messages_load(buf); + /* initialise netsurf */ - netsurf_init(argc, argv); + netsurf_init(&argc, &argv, options.Path(), buf); - gui_init2(argc, argv); + gui_init(argc, argv); + gui_init2(argc, argv); netsurf_main_loop(); @@ -585,10 +601,6 @@ void gui_init(int argc, char** argv) option_ca_path = strdup(buf); } - find_resource(buf, "messages", "./beos/res/messages"); - LOG(("Using '%s' as Messages file", buf)); - messages_load(buf); - //find_resource(buf, "mime.types", "/etc/mime.types"); beos_fetch_filetype_init(); @@ -863,20 +875,22 @@ gui_window_save_link(struct gui_window *g, const char *url, const char *title) * Send the source of a content to a text editor. */ -void nsbeos_gui_view_source(struct content *content, struct selection *selection) +void nsbeos_gui_view_source(struct hlcache_handle *content, struct selection *selection) { char *temp_name; bool done = false; BPath path; status_t err; + size_t size; + const char *source = content_get_source_data(content, &size); - if (!content || !content->source_data) { + if (!content || !source) { warn_user("MiscError", "No document source"); return; } /* try to load local files directly. */ - temp_name = url_to_path(content->url); + temp_name = url_to_path(content_get_url(content)); if (temp_name) { path.SetTo(temp_name); BEntry entry; @@ -904,12 +918,12 @@ void nsbeos_gui_view_source(struct content *content, struct selection *selection warn_user("IOError", strerror(err)); return; } - err = file.Write(content->source_data, content->source_size); + err = file.Write(source, size); if (err < B_OK) { warn_user("IOError", strerror(err)); return; } - const char *mime = content->mime_type; + const char *mime = content_get_mime_type(content); if (mime) file.WriteAttr("BEOS:TYPE", B_MIME_STRING_TYPE, 0LL, mime, strlen(mime) + 1); @@ -926,10 +940,10 @@ void nsbeos_gui_view_source(struct content *content, struct selection *selection #if 0 if (selection && selection->defined) { int32 line = -1; - if (content->type == CONTENT_HTML) { + if (content_get_type(content) == CONTENT_HTML) { // XXX: use selection, find line in source code } - if (content->type == CONTENT_TEXTPLAIN) { + if (content_get_type(content) == CONTENT_TEXTPLAIN) { line = MAKELINE_FROM_IDX(start_idx); } // not CSS! @@ -1046,12 +1060,13 @@ void die(const char * const error) } -void hotlist_visited(struct content *content) +void hotlist_visited(hlcache_handle *content) { } -void gui_cert_verify(struct browser_window *bw, struct content *c, - const struct ssl_cert_info *certs, unsigned long num) +void gui_cert_verify(const char *url, const struct ssl_cert_info *certs, + unsigned long num, nserror (*cb)(bool proceed, void *pw), + void *cbpw) { CALLED(); #if 0 /* GTK */ @@ -1060,7 +1075,7 @@ void gui_cert_verify(struct browser_window *bw, struct content *c, } static void nsbeos_create_ssl_verify_window(struct browser_window *bw, - struct content *c, const struct ssl_cert_info *certs, + hlcache_handle *c, const struct ssl_cert_info *certs, unsigned long num) { CALLED(); diff --git a/beos/beos_gui.h b/beos/beos_gui.h index 037f9cc79..0efb8e7a0 100644 --- a/beos/beos_gui.h +++ b/beos/beos_gui.h @@ -47,6 +47,7 @@ virtual bool QuitRequested(); }; +extern void schedule_run(void); extern BWindow *wndAbout; @@ -60,5 +61,6 @@ extern BFilePanel *wndOpenFile; void nsbeos_pipe_message(BMessage *message, BView *_this, struct gui_window *gui); void nsbeos_pipe_message_top(BMessage *message, BWindow *_this, struct beos_scaffolding *scaffold); -void nsbeos_gui_view_source(struct content *content, struct selection *selection); +void nsbeos_gui_view_source(struct hlcache_handle *content, struct selection *selection); image_id nsbeos_find_app_path(char *path); + diff --git a/beos/beos_login.cpp b/beos/beos_login.cpp index 2469f3c36..c732cd398 100644 --- a/beos/beos_login.cpp +++ b/beos/beos_login.cpp @@ -43,10 +43,11 @@ extern "C" { class LoginAlert : public BAlert { public: - LoginAlert(struct browser_window *bw, - const char *url, - const char *host, - const char *realm, + LoginAlert(nserror (*callback)(bool proceed, void *pw), + void *callbaclpw, + const char *url, + const char *host, + const char *realm, const char *text); virtual ~LoginAlert(); void MessageReceived(BMessage *message); @@ -55,20 +56,23 @@ private: BString fUrl; /**< URL being fetched */ BString fHost; /**< Host for user display */ BString fRealm; /**< Authentication realm */ - struct gui_window *fW; /**< GUI window handle */ + nserror (*fCallback)(bool proceed, void *pw); + void *fCallbackPw; BTextControl *fUserControl; BTextControl *fPassControl; }; -static void create_login_window(struct browser_window *bw, const char *host, - const char *realm, const char *fetchurl); +static void create_login_window(const char *host, + const char *realm, const char *fetchurl, + nserror (*cb)(bool proceed, void *pw), void *cbpw); #define TC_H 25 #define TC_MARGIN 10 -LoginAlert::LoginAlert(struct browser_window *bw, +LoginAlert::LoginAlert(nserror (*callback)(bool proceed, void *pw), + void *callbackpw, const char *url, const char *host, const char *realm, @@ -76,20 +80,21 @@ LoginAlert::LoginAlert(struct browser_window *bw, : BAlert("Login", text, "Cancel", "Ok", NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT) { + fCallback = callback; + fCallbackPw = callbackpw; fUrl = url; fHost = host; fRealm = realm; - // dereference now as we can't be sure - // the main thread won't delete from under our feet - fW = bw->window; SetFeel(B_MODAL_SUBSET_WINDOW_FEEL); + /* + // XXX: can't do that anymore nsbeos_scaffolding *s = nsbeos_get_scaffold(bw->window); if (s) { NSBrowserWindow *w = nsbeos_get_bwindow_for_scaffolding(s); if (w) AddToSubset(w); - } + }*/ // make space for controls ResizeBy(0, 2 * TC_H); @@ -138,7 +143,8 @@ LoginAlert::MessageReceived(BMessage *message) m->AddString("URL", fUrl.String()); m->AddString("Host", fHost.String()); m->AddString("Realm", fRealm.String()); - m->AddPointer("gui_window", fW); + m->AddPointer("callback", (void *)fCallback); + m->AddPointer("callback_pw", (void *)fCallbackPw); m->AddString("User", fUserControl->Text()); m->AddString("Pass", fPassControl->Text()); BString auth(fUserControl->Text()); @@ -147,7 +153,7 @@ LoginAlert::MessageReceived(BMessage *message) // notify the main thread // the event dispatcher will handle it - nsbeos_pipe_message(m, NULL, fW); + nsbeos_pipe_message(m, NULL, NULL); } break; default: @@ -157,22 +163,25 @@ LoginAlert::MessageReceived(BMessage *message) } -void gui_401login_open(struct browser_window *bw, struct content *c, - const char *realm) +void gui_401login_open(const char *url, const char *realm, + nserror (*cb)(bool proceed, void *pw), void *cbpw) { char *host; url_func_result res; - res = url_host(c->url, &host); + res = url_host(url, &host); assert(res == URL_FUNC_OK); - create_login_window(bw, host, realm, c->url); + create_login_window(url, host, realm, cb, cbpw); free(host); } -void create_login_window(struct browser_window *bw, const char *host, - const char *realm, const char *fetchurl) +//void create_login_window(struct browser_window *bw, const char *host, +// const char *realm, const char *fetchurl) +static void create_login_window(const char *url, const char *host, + const char *realm, nserror (*cb)(bool proceed, void *pw), + void *cbpw) { BString r("Secure Area"); if (realm) @@ -182,7 +191,7 @@ void create_login_window(struct browser_window *bw, const char *host, text << "Host: " << host << "\n"; //text << "\n"; - LoginAlert *a = new LoginAlert(bw, fetchurl, host, r.String(), + LoginAlert *a = new LoginAlert(cb, cbpw, url, host, r.String(), text.String()); // asynchronously a->Go(NULL); diff --git a/beos/beos_scaffolding.cpp b/beos/beos_scaffolding.cpp index 7b12d433e..a5cc832a7 100644 --- a/beos/beos_scaffolding.cpp +++ b/beos/beos_scaffolding.cpp @@ -498,7 +498,10 @@ NSBaseView::Instantiate(BMessage *archive) replicant_view = view; replicated = true; - netsurf_init(2, info->args); + //TODO:FIXME: fix replicants + // netsurf_init() needs different args now... + //netsurf_init(2, info->args); + return NULL; replicant_done_sem = create_sem(0, "NS Replicant created"); thread_id nsMainThread = spawn_thread(nsbeos_replicant_main_thread, @@ -2314,7 +2317,7 @@ void gui_window_stop_throbber(struct gui_window* _g) /** * add retrieved favicon to the gui */ -void gui_window_set_icon(struct gui_window *g, struct content *icon) +void gui_window_set_icon(struct gui_window *g, hlcache_handle *icon) { } @@ -2323,7 +2326,7 @@ void gui_window_set_icon(struct gui_window *g, struct content *icon) * \param ico may be NULL for local calls; then access current cache from * search_web_ico() */ -void gui_window_set_search_ico(struct content *ico) +void gui_window_set_search_ico(hlcache_handle *ico) { } diff --git a/beos/beos_thumbnail.cpp b/beos/beos_thumbnail.cpp index 7888999dc..65c6636d3 100644 --- a/beos/beos_thumbnail.cpp +++ b/beos/beos_thumbnail.cpp @@ -54,7 +54,7 @@ extern status_t ScaleBitmap(const BBitmap& inBitmap, BBitmap& outBitmap); * \param bitmap the bitmap to draw to * \param url the URL the thumnail belongs to, or NULL */ -bool thumbnail_create(struct content *content, struct bitmap *bitmap, +bool thumbnail_create(hlcache_handle *content, struct bitmap *bitmap, const char *url) { BBitmap *thumbnail; @@ -78,9 +78,11 @@ bool thumbnail_create(struct content *content, struct bitmap *bitmap, LOG(("Trying to create a thumbnail bitmap %d x %d for a content of %d x %d @ %d", width, height, - content->width, content->width, depth)); + content_get_width(content), content_get_width(content), depth)); - BRect contentRect(0, 0, content->width - 1, content->width - 1); + BRect contentRect(0, 0, + content_get_width(content) - 1, + content_get_width(content) - 1); big = new BBitmap(contentRect, B_BITMAP_ACCEPTS_VIEWS, B_RGB32); @@ -118,12 +120,18 @@ bool thumbnail_create(struct content *content, struct bitmap *bitmap, plot = nsbeos_plotters; nsbeos_plot_set_scale(1.0); - plot.rectangle(0, 0, content->width, content->width, plot_style_fill_white); + plot.rectangle(0, 0, + content_get_width(content), + content_get_width(content), + plot_style_fill_white); /* render the content */ - content_redraw(content, 0, 0, content->width, content->width, - 0, 0, content->width, content->width, 1.0, 0xFFFFFF); - + content_redraw(content, 0, 0, + content_get_width(content), content_get_width(content), + 0, 0, + content_get_width(content), content_get_width(content), + 1.0, 0xFFFFFF); + view->Sync(); view->UnlockLooper(); diff --git a/beos/beos_window.cpp b/beos/beos_window.cpp index 8708cd2bd..c45b221f6 100644 --- a/beos/beos_window.cpp +++ b/beos/beos_window.cpp @@ -911,7 +911,7 @@ void nsbeos_dispatch_event(BMessage *message) void nsbeos_window_expose_event(BView *view, gui_window *g, BMessage *message) { BRect updateRect; - struct content *c; + hlcache_handle *c; float scale = g->bw->scale; assert(g); @@ -935,7 +935,7 @@ void nsbeos_window_expose_event(BView *view, gui_window *g, BMessage *message) return; /* HTML rendering handles scale itself */ - if (c->type == CONTENT_HTML) + if (content_get_type(c) == CONTENT_HTML) scale = 1; if (!view->LockLooper()) @@ -1196,7 +1196,7 @@ void nsbeos_window_resize_event(BView *view, gui_window *g, BMessage *event) #if 0 - struct content *content; + hlcache_handle *content; content = g->bw->current_content; @@ -1393,7 +1393,7 @@ void gui_window_redraw_window(struct gui_window *g) void gui_window_update_box(struct gui_window *g, const union content_msg_data *data) { - struct content *c = g->bw->current_content; + hlcache_handle *c = g->bw->current_content; if (c == NULL) return; @@ -1509,8 +1509,8 @@ void gui_window_update_extent(struct gui_window *g) if (!g->view->LockLooper()) return; - float x_max = g->bw->current_content->width * g->bw->scale /* - 1*/; - float y_max = g->bw->current_content->height * g->bw->scale /* - 1*/; + float x_max = content_get_width(g->bw->current_content) * g->bw->scale /* - 1*/; + float y_max = content_get_height(g->bw->current_content) * g->bw->scale /* - 1*/; float x_prop = g->view->Bounds().Width() / x_max; float y_prop = g->view->Bounds().Height() / y_max; x_max -= g->view->Bounds().Width() + 1; @@ -1756,7 +1756,7 @@ bool gui_window_box_scroll_start(struct gui_window *g, return true; } -void gui_drag_save_object(gui_save_type type, struct content *c, +void gui_drag_save_object(gui_save_type type, hlcache_handle *c, struct gui_window *g) { |