summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/gtk/webkit/webkitwebview.cpp
diff options
context:
space:
mode:
authorSteve Block <steveblock@google.com>2011-06-08 08:26:01 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-06-08 08:26:01 -0700
commit3742ac093d35d923c81693096ab6671e9b147700 (patch)
treec2add9100f789dad45ef1ec5328bddde02c47a4c /Source/WebKit/gtk/webkit/webkitwebview.cpp
parent901401d90459bc22580842455d4588b9a697514d (diff)
parente5926f4a0d6adc9ad4a75824129f117181953560 (diff)
downloadexternal_webkit-3742ac093d35d923c81693096ab6671e9b147700.zip
external_webkit-3742ac093d35d923c81693096ab6671e9b147700.tar.gz
external_webkit-3742ac093d35d923c81693096ab6671e9b147700.tar.bz2
Merge changes I55c6d71a,Ifb3277d4,Ia1b847a2,I7ba9cf3f,Ida2b2a8a,I1280ec90,I72f818d5,I2e3b588b,I9a4e6289,Ia724c78b,Icd8612c8,Ie31b15d7,Ie125edae,I77941a88,I89dae78b,I3516e5ca,I1a4c17b5,I2c4ecc1a,I9c8e6537,Ifac13115,Ie1f80e09,Ia541ed77,I60ce9d78
* changes: Merge WebKit at r82507: Update ThirdPartyProject.prop Merge WebKit at r82507: Cherry-pick change r88166 to add INSPECTOR guards to ScriptProfiler Merge WebKit at r82507: Work around a V8 bug Merge WebKit at r82507: JNIType renamed to JavaType Merge WebKit at r82507: IconDatabaseClient interface expanded Merge WebKit at r82507: Don't use new loss-free code path in HTMLCanvasElement::toDataURL() Merge WebKit at r82507: IcondDatabaseBase::iconForPageURL() renamed Merge WebKit at r82507: IconDatabaseBase::Open() signature changed Merge WebKit at r82507: Node::isContentEditable() renamed Merge WebKit at r82507: Use icon database through IconDatabaseBase Merge WebKit at r82507: toInputElement() is now a member of Node Merge WebKit at r82507: FrameLoaderClient::objectContentType() signature changed Merge WebKit at r82507: StringImpl::computeHash() removed Merge WebKit at r82507: Stub out FontPlatformData::setOrientation() Merge WebKit at r82507: Path::strokeBoundingRect() is now const Merge WebKit at r82507: Add missing UnusedParam.h include in ApplicationCacheGroup.cpp Merge WebKit at r82507: Continue to use Android's version of FontPlatformData.h Merge WebKit at r82507: Update signature of FontCustomPlatformData::fontPlatformData() Merge WebKit at r82507: Fix conflicts due to JNI refactoring Merge WebKit at r82507: Fix conflicts due to new StorageTracker Merge WebKit at r82507: Fix conflicts Merge WebKit at r82507: Fix makefiles Merge WebKit at r82507: Initial merge by git
Diffstat (limited to 'Source/WebKit/gtk/webkit/webkitwebview.cpp')
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebview.cpp63
1 files changed, 49 insertions, 14 deletions
diff --git a/Source/WebKit/gtk/webkit/webkitwebview.cpp b/Source/WebKit/gtk/webkit/webkitwebview.cpp
index 0ffc9d9..bf74d7b 100644
--- a/Source/WebKit/gtk/webkit/webkitwebview.cpp
+++ b/Source/WebKit/gtk/webkit/webkitwebview.cpp
@@ -85,6 +85,7 @@
#include "webkitgeolocationpolicydecision.h"
#include "webkitglobalsprivate.h"
#include "webkithittestresultprivate.h"
+#include "webkiticondatabase.h"
#include "webkitmarshal.h"
#include "webkitnetworkrequest.h"
#include "webkitnetworkresponse.h"
@@ -709,8 +710,8 @@ static gboolean webkit_web_view_expose_event(GtkWidget* widget, GdkEventExpose*
frame->view()->updateLayoutAndStyleIfNeededRecursive();
RefPtr<cairo_t> cr = adoptRef(gdk_cairo_create(event->window));
- GraphicsContext ctx(cr.get());
- ctx.setGdkExposeEvent(event);
+ GraphicsContext gc(cr.get());
+ gc.setGdkExposeEvent(event);
int rectCount;
GOwnPtr<GdkRectangle> rects;
@@ -719,7 +720,7 @@ static gboolean webkit_web_view_expose_event(GtkWidget* widget, GdkEventExpose*
for (int i = 0; i < rectCount; i++)
paintRects.append(IntRect(rects.get()[i]));
- paintWebView(frame, priv->transparent, ctx, static_cast<IntRect>(event->area), paintRects);
+ paintWebView(frame, priv->transparent, gc, static_cast<IntRect>(event->area), paintRects);
}
return FALSE;
@@ -736,7 +737,7 @@ static gboolean webkit_web_view_draw(GtkWidget* widget, cairo_t* cr)
Frame* frame = core(webView)->mainFrame();
if (frame->contentRenderer() && frame->view()) {
- GraphicsContext ctx(cr);
+ GraphicsContext gc(cr);
IntRect rect = clipRect;
cairo_rectangle_list_t* rectList = cairo_copy_clip_rectangle_list(cr);
@@ -747,7 +748,7 @@ static gboolean webkit_web_view_draw(GtkWidget* widget, cairo_t* cr)
for (int i = 0; i < rectList->num_rectangles; i++)
rects.append(enclosingIntRect(FloatRect(rectList->rectangles[i])));
}
- paintWebView(frame, priv->transparent, ctx, rect, rects);
+ paintWebView(frame, priv->transparent, gc, rect, rects);
cairo_rectangle_list_destroy(rectList);
}
@@ -2315,6 +2316,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
* @icon_uri: the URI for the icon
*
* This signal is emitted when the main frame has got a favicon.
+ * See WebKitIconDatabase::icon-loaded if you want to keep track of
+ * icons for child frames.
*
* Since: 1.1.18
*/
@@ -3290,7 +3293,8 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
javaScriptCanAccessClipboard, enableOfflineWebAppCache,
enableUniversalAccessFromFileURI, enableFileAccessFromFileURI,
enableDOMPaste, tabKeyCyclesThroughElements,
- enableSiteSpecificQuirks, usePageCache, enableJavaApplet, enableHyperlinkAuditing, enableFullscreen;
+ enableSiteSpecificQuirks, usePageCache, enableJavaApplet,
+ enableHyperlinkAuditing, enableFullscreen, enableDNSPrefetching;
WebKitEditingBehavior editingBehavior;
@@ -3331,6 +3335,7 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
"enable-hyperlink-auditing", &enableHyperlinkAuditing,
"spell-checking-languages", &defaultSpellCheckingLanguages,
"enable-fullscreen", &enableFullscreen,
+ "enable-dns-prefetching", &enableDNSPrefetching,
NULL);
settings->setDefaultTextEncodingName(defaultEncoding);
@@ -3375,6 +3380,7 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
WebKit::EditorClient* client = static_cast<WebKit::EditorClient*>(core(webView)->editorClient());
static_cast<WebKit::TextCheckerClientEnchant*>(client->textChecker())->updateSpellCheckingLanguage(defaultSpellCheckingLanguages);
#endif
+ settings->setDNSPrefetchingEnabled(enableDNSPrefetching);
Page* page = core(webView);
if (page)
@@ -3441,6 +3447,8 @@ static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GPar
settings->setJavaScriptEnabled(g_value_get_boolean(&value));
else if (name == g_intern_string("enable-plugins"))
settings->setPluginsEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-dns-prefetching"))
+ settings->setDNSPrefetchingEnabled(g_value_get_boolean(&value));
else if (name == g_intern_string("resizable-text-areas"))
settings->setTextAreasAreResizable(g_value_get_boolean(&value));
else if (name == g_intern_string("user-stylesheet-uri"))
@@ -4337,8 +4345,7 @@ gboolean webkit_web_view_get_editable(WebKitWebView* webView)
{
g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
- Frame* frame = core(webView)->mainFrame();
- return frame && frame->document()->inDesignMode();
+ return core(webView)->isEditable();
}
/**
@@ -4363,15 +4370,14 @@ void webkit_web_view_set_editable(WebKitWebView* webView, gboolean flag)
{
g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
- Frame* frame = core(webView)->mainFrame();
- g_return_if_fail(frame);
-
- // TODO: What happens when the frame is replaced?
flag = flag != FALSE;
if (flag == webkit_web_view_get_editable(webView))
return;
- frame->document()->setDesignMode(flag ? WebCore::Document::on : WebCore::Document::off);
+ core(webView)->setEditable(flag);
+
+ Frame* frame = core(webView)->mainFrame();
+ g_return_if_fail(frame);
if (flag) {
frame->editor()->applyEditingStyleToBodyElement();
@@ -5058,12 +5064,41 @@ WebKitHitTestResult* webkit_web_view_get_hit_test_result(WebKitWebView* webView,
G_CONST_RETURN gchar* webkit_web_view_get_icon_uri(WebKitWebView* webView)
{
g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
- String iconURL = iconDatabase().iconURLForPageURL(core(webView)->mainFrame()->document()->url().prettyURL());
+ String iconURL = iconDatabase().synchronousIconURLForPageURL(core(webView)->mainFrame()->document()->url().prettyURL());
webView->priv->iconURI = iconURL.utf8();
return webView->priv->iconURI.data();
}
/**
+ * webkit_web_view_get_icon_pixbuf:
+ * @webView: the #WebKitWebView object
+ *
+ * Obtains a #GdkPixbuf of the favicon for the given #WebKitWebView, or
+ * a default icon if there is no icon for the given page. Use
+ * webkit_web_view_get_icon_uri() if you need to distinguish these cases.
+ * Usually you want to connect to WebKitWebView::icon-loaded and call this
+ * method in the callback.
+ *
+ * The pixbuf will have the largest size provided by the server and should
+ * be resized before it is displayed.
+ * See also webkit_icon_database_get_icon_pixbuf().
+ *
+ * Returns: (transfer full): a new reference to a #GdkPixbuf, or %NULL
+ *
+ * Since: 1.3.13
+ */
+GdkPixbuf* webkit_web_view_get_icon_pixbuf(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+
+ const gchar* pageURI = webkit_web_view_get_uri(webView);
+ WebKitIconDatabase* database = webkit_get_icon_database();
+ return webkit_icon_database_get_icon_pixbuf(database, pageURI);
+}
+
+
+
+/**
* webkit_web_view_get_dom_document:
* @webView: a #WebKitWebView
*