summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/gtk-webcore/files/NRCit_HTTP_auth.diff132
-rw-r--r--packages/gtk-webcore/files/NRCit_unmap.diff39
-rw-r--r--packages/gtk-webcore/files/build_silence.patch16
-rw-r--r--packages/gtk-webcore/osb-nrcit_svn.bb2
4 files changed, 173 insertions, 16 deletions
diff --git a/packages/gtk-webcore/files/NRCit_HTTP_auth.diff b/packages/gtk-webcore/files/NRCit_HTTP_auth.diff
new file mode 100644
index 0000000000..7a2df30d1d
--- /dev/null
+++ b/packages/gtk-webcore/files/NRCit_HTTP_auth.diff
@@ -0,0 +1,132 @@
+Index: NRCit/src/Http.cpp
+===================================================================
+--- NRCit/src/Http.cpp (revision 55)
++++ NRCit/src/Http.cpp (working copy)
+@@ -299,3 +299,9 @@
+ {
+
+ }
++
++HttpHeaderWWWAuthenticate::HttpHeaderWWWAuthenticate(const gchar * value)
++ : HttpHeader(WWWAuthenticate, "WWW-Authenticate", value)
++{
++
++}
+Index: NRCit/src/HttpCurl.cpp
+===================================================================
+--- NRCit/src/HttpCurl.cpp (revision 55)
++++ NRCit/src/HttpCurl.cpp (working copy)
+@@ -69,7 +69,7 @@
+ void setPostData(const gchar * contentType, GByteArray *);
+
+ protected:
+- bool shouldAuthenticate() { return m_authenticate; }
++ bool shouldAuthenticate() { return m_need_authenticate; }
+
+ /** Authenticates the request. */
+ void doAuth();
+@@ -89,7 +89,7 @@
+
+ GByteArray * postData;
+ bool headerEnd;
+- bool m_authenticate;
++ bool m_need_authenticate;
+
+ gchar * proxy;
+ CurlFactory* parent;
+@@ -374,7 +374,7 @@
+ ,curl_post_last(NULL)
+ ,postData(NULL)
+ ,headerEnd(false)
+- ,m_authenticate(true)
++ ,m_need_authenticate(true)
+ ,proxy(NULL)
+ ,parent(aParent)
+ ,status(-1)
+@@ -438,7 +438,8 @@
+ }
+
+ void CurlRequest::doAuth() {
+- m_authenticate = m_listener->authenticate(this);
++ m_listener->authenticate(this);
++ m_need_authenticate = false; // set false to go on processing data in CurlRequest::data
+ }
+
+ void CurlRequest::execute()
+@@ -457,6 +458,8 @@
+ curl_easy_setopt(handle, CURLOPT_FOLLOWLOCATION, 1);
+ curl_easy_setopt(handle, CURLOPT_MAXREDIRS, 10);
+
++ curl_easy_setopt(handle, CURLOPT_AUTOREFERER, 1);
++
+ // url ptr must remain valid through the request
+ curl_easy_setopt(handle, CURLOPT_URL, m_url);
+
+@@ -534,7 +537,7 @@
+
+
+ // if we are in middle of authenticating, do nothing.
+- if (status != HTTP_AUTH_REQUIRED || !m_authenticate) {
++ if (status != HTTP_AUTH_REQUIRED || !m_need_authenticate) {
+ m_listener->data(this, data, len);
+ }
+ }
+@@ -570,6 +573,8 @@
+ header = new HttpHeaderRefresh(value);
+ } else if (!strcmp(key, HTTP_SET_COOKIE)) {
+ header = new HttpHeaderSetCookie(value);
++ } else if (!strcmp(key, HTTP_WWW_AUTHENTICATE)) {
++ header = new HttpHeaderWWWAuthenticate(value);
+ } else {
+ header = new HttpHeader(HttpHeader::Unknown, key, value);
+ }
+@@ -584,7 +589,7 @@
+ {
+ HttpHeader *hdr = parseHeader(data, len);
+ if (hdr) {
+- if (hdr->key() == HTTP_WWW_AUTHENTICATE && hdr->value())
++ if (!strcmp(hdr->key(), HTTP_WWW_AUTHENTICATE) && hdr->value())
+ {
+ const gchar * value = hdr->value();
+ char * realm = g_strrstr(value, "realm=" );
+Index: NRCit/src/PageLoadListener.cpp
+===================================================================
+--- NRCit/src/PageLoadListener.cpp (revision 55)
++++ NRCit/src/PageLoadListener.cpp (working copy)
+@@ -206,8 +206,9 @@
+ creds->setCredential(newcred, space);
+ request->authenticate(newcred.user(), newcred.password());
+ }
+- if (user) g_free(user);
+- if (password) g_free(password);
++ // Do not free these values which are owned by Webi.
++ // if (user) g_free(user);
++ // if (password) g_free(password);
+ return ret;
+ }
+
+Index: NRCit/src/Http.h
+===================================================================
+--- NRCit/src/Http.h (revision 55)
++++ NRCit/src/Http.h (working copy)
+@@ -165,6 +165,7 @@
+ ContentLength,
+ Refresh,
+ SetCookie,
++ WWWAuthenticate,
+ Unknown,
+ Invalid
+ };
+@@ -236,6 +237,12 @@
+ ~HttpHeaderSetCookie() {}
+ };
+
++class HttpHeaderWWWAuthenticate : public HttpHeader
++{
++public:
++ HttpHeaderWWWAuthenticate(const gchar* value);
++ ~HttpHeaderWWWAuthenticate() {}
++};
+
+
+ #endif
diff --git a/packages/gtk-webcore/files/NRCit_unmap.diff b/packages/gtk-webcore/files/NRCit_unmap.diff
new file mode 100644
index 0000000000..1f2be39922
--- /dev/null
+++ b/packages/gtk-webcore/files/NRCit_unmap.diff
@@ -0,0 +1,39 @@
+Index: NRCit/src/gtk/webi.cc
+===================================================================
+--- NRCit/src/gtk/webi.cc (リビジョン 55)
++++ NRCit/src/gtk/webi.cc (作業コピー)
+@@ -50,6 +50,7 @@
+ static void _webi_finalize (GObject * self) G_GNUC_UNUSED;
+ static void _webi_realize (GtkWidget * widget) G_GNUC_UNUSED;
+ static void _webi_map (GtkWidget * widget) G_GNUC_UNUSED;
++static void _webi_unmap (GtkWidget * widget) G_GNUC_UNUSED;
+ static gboolean _webi_expose_event (GtkWidget * widget, GdkEventExpose * event) G_GNUC_UNUSED;
+ static void _webi_size_allocate (GtkWidget * widget, GtkAllocation * allocation) G_GNUC_UNUSED;
+
+@@ -305,6 +306,7 @@
+ g_object_class->finalize = _webi_finalize;
+ gtk_widget_class->realize = _webi_realize;
+ gtk_widget_class->map = _webi_map;
++ gtk_widget_class->unmap = _webi_unmap;
+ gtk_widget_class->expose_event = _webi_expose_event;
+ gtk_widget_class->size_allocate = _webi_size_allocate;
+ return;
+@@ -736,6 +738,18 @@
+ }
+ #undef PARENT_HANDLER
+
++static void
++_webi_unmap (GtkWidget * widget)
++{
++
++ g_return_if_fail(widget != NULL);
++ g_return_if_fail(WEBI_IS_WEBI (widget));
++
++ GTK_WIDGET_UNSET_FLAGS(widget, GTK_MAPPED);
++
++ gdk_window_hide(widget->window);
++}
++
+ static gboolean
+ _webi_expose_event (GtkWidget * widget, GdkEventExpose * event)
+ #define PARENT_HANDLER(___widget,___event) \
diff --git a/packages/gtk-webcore/files/build_silence.patch b/packages/gtk-webcore/files/build_silence.patch
index bcef3954ee..ac77e17aac 100644
--- a/packages/gtk-webcore/files/build_silence.patch
+++ b/packages/gtk-webcore/files/build_silence.patch
@@ -14,19 +14,3 @@ Index: configure.in
LDFLAGS="$LDFLAGS $PACKAGE_LIBS $X_LIBS $JSCORE_LIBS \
-nodefaultlibs -lgcc -lc"
-Index: kwiq/KWQEvent.cpp
-===================================================================
---- kwiq/KWQEvent.cpp (revision 46)
-+++ kwiq/KWQEvent.cpp (working copy)
-@@ -759,10 +759,10 @@
- #if 0
- if (state & GDK_MOD1_MASK)
- qstate |= Qt::AltButton;
--#endif
-
- if (state & GDK_META_MASK)
- qstate |= Qt::MetaButton;
-+#endif
-
- if (isKeypadEvent(event))
- qstate |= Qt::Keypad;
diff --git a/packages/gtk-webcore/osb-nrcit_svn.bb b/packages/gtk-webcore/osb-nrcit_svn.bb
index 8a11d61996..2060cb26d4 100644
--- a/packages/gtk-webcore/osb-nrcit_svn.bb
+++ b/packages/gtk-webcore/osb-nrcit_svn.bb
@@ -10,6 +10,8 @@ PR = "r0"
DEPENDS = "curl librsvg osb-nrcore"
SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=NRCit;proto=https \
+ file://NRCit_unmap.diff;patch=1 \
+ file://NRCit_HTTP_auth.diff;patch=1 \
file://gcc4-fno-threadsafe-statics-NRCit.patch;patch=1"
S = "${WORKDIR}/NRCit"