#include <sys/time.h>
#endif
-namespace WebCore {
+namespace WebCore {
+#if ENABLE(TIZEN_EXPONENTIAL_BUFFER_SIZE)
+#define READ_BUFFER_SIZE_MIN (8*1024)
+#define READ_BUFFER_SIZE_MAX (64*1024)
+#else
#define READ_BUFFER_SIZE 8192
+#endif
// Use the same value as in NSURLError.h
static const int gTimeoutError = -1001;
}
if (d->m_buffer) {
+#if ENABLE(TIZEN_EXPONENTIAL_BUFFER_SIZE)
+ g_slice_free1(d->m_bufferSize, d->m_buffer);
+#else
g_slice_free1(READ_BUFFER_SIZE, d->m_buffer);
+#endif
d->m_buffer = 0;
}
#endif
d->m_inputStream = adoptGRef(in);
+#if ENABLE(TIZEN_EXPONENTIAL_BUFFER_SIZE)
+ d->m_buffer = static_cast<char*>(g_slice_alloc(READ_BUFFER_SIZE_MIN));
+ d->m_bufferSize = READ_BUFFER_SIZE_MIN;
+#else
d->m_buffer = static_cast<char*>(g_slice_alloc(READ_BUFFER_SIZE));
-
+#endif
if (soupMessage) {
if (handle->shouldContentSniff() && soupMessage->status_code != SOUP_STATUS_NOT_MODIFIED) {
const char* sniffedType = soup_request_get_content_type(d->m_soupRequest.get());
cleanupSoupRequestOperation(handle.get());
return;
}
-
- g_input_stream_read_async(d->m_inputStream.get(), d->m_buffer, READ_BUFFER_SIZE,
+#if ENABLE(TIZEN_EXPONENTIAL_BUFFER_SIZE)
+ g_input_stream_read_async(d->m_inputStream.get(), d->m_buffer, d->m_bufferSize,
G_PRIORITY_DEFAULT, d->m_cancellable.get(), readCallback, handle.get());
+#else
+ g_input_stream_read_async(d->m_inputStream.get(), d->m_buffer, READ_BUFFER_SIZE,
+ G_PRIORITY_DEFAULT, d->m_cancellable.get(), readCallback, handle.get());
+#endif
}
#if ENABLE(TIZEN_ON_AUTHENTICATION_REQUESTED)
#if ENABLE(TIZEN_LOG)
LOG(Network,"[Network] ResourceHandleSoup readCallback : Invoke g_input_stream_read_async \n");
#endif
- g_input_stream_read_async(d->m_inputStream.get(), d->m_buffer, READ_BUFFER_SIZE, G_PRIORITY_DEFAULT,
+
+#if ENABLE(TIZEN_EXPONENTIAL_BUFFER_SIZE)
+ if (equalIgnoringCase(d->m_response.mimeType(), "text/html")
+ && d->m_bufferSize < READ_BUFFER_SIZE_MAX && bytesRead == d->m_bufferSize) {
+
+ g_slice_free1(d->m_bufferSize, d->m_buffer);
+ d->m_buffer = 0;
+ d->m_bufferSize *= 2;
+ d->m_buffer = static_cast<char*>(g_slice_alloc(d->m_bufferSize));
+ }
+ g_input_stream_read_async(d->m_inputStream.get(), d->m_buffer, d->m_bufferSize, G_PRIORITY_DEFAULT,
d->m_cancellable.get(), readCallback, handle.get());
+#else
+ g_input_stream_read_async(d->m_inputStream.get(), d->m_buffer, READ_BUFFER_SIZE, G_PRIORITY_DEFAULT,
+ d->m_cancellable.get(), readCallback, handle.get());
+#endif
+
}
static gboolean requestTimeoutCallback(gpointer data)