summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/gtk
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-05-13 16:23:25 +0100
committerBen Murdoch <benm@google.com>2011-05-16 11:35:02 +0100
commit65f03d4f644ce73618e5f4f50dd694b26f55ae12 (patch)
treef478babb801e720de7bfaee23443ffe029f58731 /Source/WebKit/gtk
parent47de4a2fb7262c7ebdb9cd133ad2c54c187454d0 (diff)
downloadexternal_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.zip
external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.gz
external_webkit-65f03d4f644ce73618e5f4f50dd694b26f55ae12.tar.bz2
Merge WebKit at r75993: Initial merge by git.
Change-Id: I602bbdc3974787a3b0450456a30a7868286921c3
Diffstat (limited to 'Source/WebKit/gtk')
-rw-r--r--Source/WebKit/gtk/ChangeLog16563
-rw-r--r--Source/WebKit/gtk/GNUmakefile.am593
-rw-r--r--Source/WebKit/gtk/JSCore.gir.in20
-rw-r--r--Source/WebKit/gtk/NEWS631
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp731
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h161
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp207
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h62
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp126
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h74
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp164
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h67
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp534
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h89
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp1025
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h149
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp1363
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h208
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h45
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp578
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h95
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp359
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h110
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp64
-rw-r--r--Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h51
-rw-r--r--Source/WebKit/gtk/docs/GNUmakefile.am107
-rw-r--r--Source/WebKit/gtk/docs/version.xml.in1
-rw-r--r--Source/WebKit/gtk/docs/webkitenvironment.xml98
-rw-r--r--Source/WebKit/gtk/docs/webkitgtk-docs.sgml132
-rw-r--r--Source/WebKit/gtk/docs/webkitgtk-overrides.txt0
-rw-r--r--Source/WebKit/gtk/docs/webkitgtk-sections.txt705
-rw-r--r--Source/WebKit/gtk/docs/webkitgtk.types13
-rw-r--r--Source/WebKit/gtk/gdom/ConvertToGCharPrivate.h48
-rw-r--r--Source/WebKit/gtk/org.webkitgtk.gschema.xml.in32
-rw-r--r--Source/WebKit/gtk/po/ChangeLog494
-rw-r--r--Source/WebKit/gtk/po/GNUmakefile.am213
-rw-r--r--Source/WebKit/gtk/po/POTFILES13
-rw-r--r--Source/WebKit/gtk/po/README11
-rw-r--r--Source/WebKit/gtk/po/cs.po1089
-rw-r--r--Source/WebKit/gtk/po/de.po1099
-rw-r--r--Source/WebKit/gtk/po/en_GB.po1095
-rw-r--r--Source/WebKit/gtk/po/es.po1101
-rw-r--r--Source/WebKit/gtk/po/et.po803
-rw-r--r--Source/WebKit/gtk/po/gl.po1117
-rw-r--r--Source/WebKit/gtk/po/gu.po1084
-rw-r--r--Source/WebKit/gtk/po/he.po1096
-rw-r--r--Source/WebKit/gtk/po/it.po1171
-rw-r--r--Source/WebKit/gtk/po/ko.po1382
-rw-r--r--Source/WebKit/gtk/po/lt.po1082
-rw-r--r--Source/WebKit/gtk/po/lv.po704
-rw-r--r--Source/WebKit/gtk/po/nb.po1104
-rw-r--r--Source/WebKit/gtk/po/nl.po1355
-rw-r--r--Source/WebKit/gtk/po/pa.po1095
-rw-r--r--Source/WebKit/gtk/po/pt.po1096
-rw-r--r--Source/WebKit/gtk/po/pt_BR.po1101
-rw-r--r--Source/WebKit/gtk/po/ru.po1092
-rw-r--r--Source/WebKit/gtk/po/sl.po1093
-rw-r--r--Source/WebKit/gtk/po/sr.po1086
-rw-r--r--Source/WebKit/gtk/po/sr@latin.po1086
-rw-r--r--Source/WebKit/gtk/po/sv.po1101
-rw-r--r--Source/WebKit/gtk/po/uk.po1108
-rw-r--r--Source/WebKit/gtk/po/vi.po1078
-rw-r--r--Source/WebKit/gtk/po/zh_CN.po1096
-rw-r--r--Source/WebKit/gtk/resources/error.html60
-rw-r--r--Source/WebKit/gtk/tests/resources/blank.icobin0 -> 198 bytes
-rw-r--r--Source/WebKit/gtk/tests/resources/test.html6
-rw-r--r--Source/WebKit/gtk/tests/resources/test.oggbin0 -> 30131 bytes
-rw-r--r--Source/WebKit/gtk/tests/resources/test.pdfbin0 -> 7421 bytes
-rw-r--r--Source/WebKit/gtk/tests/resources/test.txt1
-rw-r--r--Source/WebKit/gtk/tests/test_utils.c50
-rw-r--r--Source/WebKit/gtk/tests/test_utils.h3
-rw-r--r--Source/WebKit/gtk/tests/testatk.c1345
-rw-r--r--Source/WebKit/gtk/tests/testatkroles.c428
-rw-r--r--Source/WebKit/gtk/tests/testcopyandpaste.c276
-rw-r--r--Source/WebKit/gtk/tests/testdomdocument.c375
-rw-r--r--Source/WebKit/gtk/tests/testdomdomwindow.c229
-rw-r--r--Source/WebKit/gtk/tests/testdomnode.c206
-rw-r--r--Source/WebKit/gtk/tests/testdownload.c272
-rw-r--r--Source/WebKit/gtk/tests/testglobals.c66
-rw-r--r--Source/WebKit/gtk/tests/testhittestresult.c174
-rw-r--r--Source/WebKit/gtk/tests/testhttpbackend.c86
-rw-r--r--Source/WebKit/gtk/tests/testkeyevents.c402
-rw-r--r--Source/WebKit/gtk/tests/testloading.c445
-rw-r--r--Source/WebKit/gtk/tests/testmimehandling.c228
-rw-r--r--Source/WebKit/gtk/tests/testnetworkrequest.c107
-rw-r--r--Source/WebKit/gtk/tests/testnetworkresponse.c108
-rw-r--r--Source/WebKit/gtk/tests/testwebbackforwardlist.c337
-rw-r--r--Source/WebKit/gtk/tests/testwebdatasource.c253
-rw-r--r--Source/WebKit/gtk/tests/testwebframe.c231
-rw-r--r--Source/WebKit/gtk/tests/testwebhistoryitem.c81
-rw-r--r--Source/WebKit/gtk/tests/testwebplugindatabase.c89
-rw-r--r--Source/WebKit/gtk/tests/testwebresource.c342
-rw-r--r--Source/WebKit/gtk/tests/testwebsettings.c81
-rw-r--r--Source/WebKit/gtk/tests/testwebview.c378
-rw-r--r--Source/WebKit/gtk/tests/testwindow.c130
-rw-r--r--Source/WebKit/gtk/webkit.pc.in11
-rw-r--r--Source/WebKit/gtk/webkit/webkit.h52
-rw-r--r--Source/WebKit/gtk/webkit/webkitapplicationcache.cpp35
-rw-r--r--Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h35
-rw-r--r--Source/WebKit/gtk/webkit/webkitdefines.h106
-rw-r--r--Source/WebKit/gtk/webkit/webkitdownload.cpp956
-rw-r--r--Source/WebKit/gtk/webkit/webkitdownload.h117
-rw-r--r--Source/WebKit/gtk/webkit/webkitdownloadprivate.h36
-rw-r--r--Source/WebKit/gtk/webkit/webkiterror.cpp37
-rw-r--r--Source/WebKit/gtk/webkit/webkiterror.h71
-rw-r--r--Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp97
-rw-r--r--Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h64
-rw-r--r--Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h34
-rw-r--r--Source/WebKit/gtk/webkit/webkitglobals.cpp282
-rw-r--r--Source/WebKit/gtk/webkit/webkitglobals.h64
-rw-r--r--Source/WebKit/gtk/webkit/webkitglobalsprivate.h44
-rw-r--r--Source/WebKit/gtk/webkit/webkithittestresult.cpp278
-rw-r--r--Source/WebKit/gtk/webkit/webkithittestresult.h83
-rw-r--r--Source/WebKit/gtk/webkit/webkithittestresultprivate.h35
-rw-r--r--Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp273
-rw-r--r--Source/WebKit/gtk/webkit/webkitnetworkrequest.h74
-rw-r--r--Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h33
-rw-r--r--Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp273
-rw-r--r--Source/WebKit/gtk/webkit/webkitnetworkresponse.h74
-rw-r--r--Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h35
-rw-r--r--Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp425
-rw-r--r--Source/WebKit/gtk/webkit/webkitsecurityorigin.h79
-rw-r--r--Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h51
-rw-r--r--Source/WebKit/gtk/webkit/webkitsoupauthdialog.c372
-rw-r--r--Source/WebKit/gtk/webkit/webkitsoupauthdialog.h50
-rw-r--r--Source/WebKit/gtk/webkit/webkitversion.cpp63
-rw-r--r--Source/WebKit/gtk/webkit/webkitversion.h.in55
-rw-r--r--Source/WebKit/gtk/webkit/webkitviewportattributes.cpp571
-rw-r--r--Source/WebKit/gtk/webkit/webkitviewportattributes.h62
-rw-r--r--Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h54
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp472
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h121
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h34
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebdatabase.cpp530
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebdatabase.h96
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebdatasource.cpp442
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebdatasource.h96
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h35
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebframe.cpp1002
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebframe.h180
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebframeprivate.h59
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp529
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebhistoryitem.h90
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h49
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebinspector.cpp620
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebinspector.h77
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h42
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp381
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebnavigationaction.h96
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h35
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebplugin.cpp251
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebplugin.h87
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp151
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebplugindatabase.h64
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h40
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebpluginprivate.h46
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp134
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebpolicydecision.h68
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h36
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebresource.cpp400
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebresource.h84
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebresourceprivate.h48
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebsettings.cpp1443
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebsettings.h76
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h38
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebview.cpp5143
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebview.h408
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebviewprivate.h136
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp449
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h68
-rw-r--r--Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h34
-rw-r--r--Source/WebKit/gtk/webkitmarshal.list25
172 files changed, 79235 insertions, 0 deletions
diff --git a/Source/WebKit/gtk/ChangeLog b/Source/WebKit/gtk/ChangeLog
new file mode 100644
index 0000000..ef1f2aa
--- /dev/null
+++ b/Source/WebKit/gtk/ChangeLog
@@ -0,0 +1,16563 @@
+2011-01-17 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed, build fix for 2 GTK tests html file paths.
+
+ * tests/testmimehandling.c:
+ (main):
+ * tests/testwebview.c:
+
+2011-01-16 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move WebKit into Source
+ https://bugs.webkit.org/show_bug.cgi?id=52530
+
+ * GNUmakefile.am:
+
+2011-01-14 Yuzo Fujishima <yuzo@google.com>
+
+ Reviewed by Antti Koivisto.
+
+ Rename cache() to memoryCache()
+ https://bugs.webkit.org/show_bug.cgi?id=52433
+
+ * webkit/webkitglobals.cpp:
+ (webkit_set_cache_model):
+
+2011-01-14 Pavel Feldman <pfeldman@chromium.org>
+
+ Not reviewed: gtk build fix (2).
+
+ * webkit/webkitwebview.cpp:
+
+2011-01-14 Pavel Feldman <pfeldman@chromium.org>
+
+ Not reviewed: gtk build fix.
+
+ * webkit/webkitwebinspector.cpp:
+
+2011-01-13 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [gtk] Zero-sized font does not yet work
+ https://bugs.webkit.org/show_bug.cgi?id=49793
+
+ Allow 0 as a minimum-font-size value for the settings.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2011-01-12 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed build fix for 32-bits Release. Include GRefPtrGtk.h so
+ the GdkCursor templates are found and used at runtime.
+
+ * WebCoreSupport/FullscreenVideoController.cpp:
+
+2011-01-11 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] GRefPtr should not be used with Gtk widgets
+ https://bugs.webkit.org/show_bug.cgi?id=51241
+
+ GRefPtr breaks the widget life-cycle, the main problem is
+ that GRefPtr calls g_object_unref() when it's destroyed,
+ which is undesirable for widgets. In gtk+ widgets are created with
+ a floating reference and when added to a container, the container
+ takes the ownership of the widget consuming the floating
+ reference. So you don't usually need to call g_object_ref/unref on
+ widgets (only for some operations like reparent a widget) and
+ toplevel widgets are destroyed with gtk_widget_destroy().
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::DragClient):
+ (WebKit::DragClient::~DragClient):
+ (WebKit::DragClient::startDrag):
+ * WebCoreSupport/DragClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::postCommitFrameViewSetup):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose):
+ * webkit/webkitwebviewprivate.h:
+
+2011-01-10 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Update the NEWS file in preparation for the 1.3.10 release.
+
+ * NEWS: Update the NEWS.
+
+2011-01-10 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Remove use of deprecated GTK+ methods before the 1.3.10 release
+ https://bugs.webkit.org/show_bug.cgi?id=52173
+
+ * WebCoreSupport/FullscreenVideoController.cpp:
+ (FullscreenVideoController::enterFullscreen): Use a GRefPtr here to avoid having to
+ call either g_object_unref or gdk_cursor_unref.
+ * webkit/webkitwebview.cpp: Guard use of deprecated methods.
+ (webkit_web_view_realize): Ditto.
+ (webkit_web_view_drag_end): Ditto.
+
+2011-01-10 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Fix gtk2 compilation for master
+ https://bugs.webkit.org/show_bug.cgi?id=51885
+
+ * webkit/webkitsoupauthdialog.c:
+ (show_auth_dialog): Removed the call to
+ gtk_dialog_set_has_separator API to remove a warning.
+
+2011-01-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Create intermediate libWebCore library
+ https://bugs.webkit.org/show_bug.cgi?id=52116
+
+ * GNUmakefile.am: add libWebCore.la to LIBADD and remove webcore
+ sources from the libwebkit library SOURCES.
+
+2011-01-09 Xianzhu Wang <phnixwxz@gmail.com>
+
+ Reviewed by Darin Fisher.
+
+ https://bugs.webkit.org/show_bug.cgi?id=41441
+ createWindow method should only do window-creating without URL navigation
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::createWindow):
+
+2011-01-08 Martin Robinson <mrobinson@igalia.com>
+
+ GTK+ build fix. Adding missing headers to the source list, fixing make dist.
+
+ * GNUmakefile.am: Fix make dist.
+
+2011-01-07 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move WebCore to Source
+ https://bugs.webkit.org/show_bug.cgi?id=52050
+
+ * GNUmakefile.am:
+
+2011-01-07 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Chris Fleizach.
+
+ GTK: AX: atk tests need to be updated after recent changes
+ https://bugs.webkit.org/show_bug.cgi?id=51932
+
+ Fix gtk_widget_get_accessible() in WebKitWebView to keep returning
+ the AtkObject of role ATK_ROLE_DOCUMENT_FRAME.
+
+ With the change to support WK2 accessibility, the root object of
+ the AX hierarchy is different from what GTK expects as the current
+ hirarchy right now includes a new accessible object as the parent
+ of the accessible web area (AXScrollView).
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_accessible): Return the first child of the
+ wrapper associated to the root accessible object in the document,
+ to keep everything in the GTK port working as it used to be.
+
+ Re-enable skipped ATK unit tests now they are passing again.
+
+ * tests/testatk.c:
+ (main): Re-enable skipped tests.
+ * tests/testatkroles.c:
+ (main): Ditto.
+
+2011-01-06 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ GTK: AX: atk tests need to be updated after recent changes
+ https://bugs.webkit.org/show_bug.cgi?id=51932
+
+ Skip ATK unit tests until we can look into what is causing these failures.
+
+ * tests/testatk.c:
+ (main): Skip all tests.
+ * tests/testatkroles.c:
+ (main): Ditto.
+
+2011-01-06 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Include a new header in the static headers list. This is necessary
+ so that "make install" installs the header.
+
+ * GNUmakefile.am: Include webkitglobals.h in the header list.
+
+2011-01-05 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Build fix for GTK+ 3.x. Remove the call to gtk_range_set_update_policy.
+ GTK+ 3.x has removed this method and the default in GTK+ 2.x is continuous,
+ so this call is unnecessary.
+
+ * WebCoreSupport/FullscreenVideoController.cpp:
+ (FullscreenVideoController::createHud): Remove call to gtk_range_set_update_policy().
+
+2011-01-04 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Martin Robinson.
+
+ GTK: AX: DRT needs to use correct root object method.
+ https://bugs.webkit.org/show_bug.cgi?id=51911
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::getRootAccessibleElement):
+ (DumpRenderTreeSupportGtk::getFocusedAccessibleElement):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+
+2011-01-04 Chris Fleizach <cfleizach@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ WK2: Support Accessibility
+ https://bugs.webkit.org/show_bug.cgi?id=51859
+
+ Use rootObject() method to get top of ax tree.
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::getFocusedAccessibleElement):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_accessible):
+
+2011-01-03 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Darin Adler.
+
+ Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr
+ https://bugs.webkit.org/show_bug.cgi?id=51846
+
+ Changed all references to PlatformRefPtr in GTK+ code to GRefPtr.
+
+2011-01-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Split webkitprivate.{cpp,h} in more manageable chunks
+ https://bugs.webkit.org/show_bug.cgi?id=50698
+
+ Final patch, removing webkitprivate.{cpp,h}, and adding a
+ webkitglobals module to hold non-object-specific functions and
+ definitions that do not make sense on their own.
+
+ * GNUmakefile.am:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::createWindow):
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * WebCoreSupport/DocumentLoaderGtk.cpp:
+ (WebKit::DocumentLoader::attachToFrame):
+ * WebCoreSupport/DragClientGtk.cpp:
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::ignoreWordInSpellDocument):
+ (WebKit::EditorClient::learnWord):
+ (WebKit::EditorClient::checkSpellingOfString):
+ (WebKit::EditorClient::getGuessesForWord):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createDocumentLoader):
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ * webkit/webkit.h:
+ * webkit/webkitapplicationcache.cpp:
+ (webkit_application_cache_set_maximum_size):
+ * webkit/webkitdownload.cpp:
+ (webkit_download_class_init):
+ * webkit/webkitgeolocationpolicydecision.cpp:
+ * webkit/webkitglobals.cpp: Added.
+ (webkit_get_default_session):
+ (webkit_set_cache_model):
+ (webkit_get_cache_model):
+ (webkit_get_web_plugin_database):
+ (currentToplevelCallback):
+ (closeIconDatabaseOnExit):
+ (webkitInit):
+ (WebKit::pasteboardHelperInstance):
+ * webkit/webkitglobals.h: Added.
+ * webkit/webkitglobalsprivate.h: Copied from WebKit/gtk/webkit/webkitwebsettingsprivate.h.
+ * webkit/webkithittestresult.cpp:
+ (webkit_hit_test_result_class_init):
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_class_init):
+ * webkit/webkitnetworkresponse.cpp:
+ (webkit_network_response_class_init):
+ * webkit/webkitprivate.cpp: Removed.
+ * webkit/webkitprivate.h: Removed.
+ * webkit/webkitsecurityorigin.cpp:
+ * webkit/webkitviewportattributes.cpp:
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_class_init):
+ * webkit/webkitwebdatabase.cpp:
+ * webkit/webkitwebdatasource.cpp:
+ (webkit_web_data_source_class_init):
+ (webkit_web_data_source_new_with_request):
+ (WebKit::kitNew):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_class_init):
+ * webkit/webkitwebframeprivate.h:
+ * webkit/webkitwebhistoryitem.cpp:
+ (webkit_web_history_item_class_init):
+ * webkit/webkitwebinspector.cpp:
+ * webkit/webkitwebnavigationaction.cpp:
+ * webkit/webkitwebplugin.cpp:
+ (webkit_web_plugin_class_init):
+ * webkit/webkitwebplugindatabase.cpp:
+ (webkit_web_plugin_database_class_init):
+ * webkit/webkitwebpluginprivate.h:
+ * webkit/webkitwebpolicydecision.cpp:
+ * webkit/webkitwebresource.cpp:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkitWebViewGetEnchantDicts):
+ (WebKit::core):
+ * webkit/webkitwebsettingsprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+ * webkit/webkitwebview.h:
+ * webkit/webkitwebwindowfeatures.cpp:
+ (webkit_web_window_features_class_init):
+ (WebKit::kitNew):
+
+2011-01-02 Xan Lopez <xlopez@igalia.com>
+
+ Fix GTK+ build.
+
+ * GNUmakefile.am: tests do actually include JSC.
+
+2011-01-02 Xan Lopez <xlopez@igalia.com>
+
+ Fix GTK+ build.
+
+ * GNUmakefile.am: remove individual -I$(srcdir)/Source when we'll
+ already get them from javascriptcore_cppflags, and add it for the
+ introspection build (which is not tested in the bots).
+
+2011-01-02 Adam Barth <abarth@webkit.org>
+
+ Speculative build fix for GTK. Add Source to the include paths.
+
+ * GNUmakefile.am:
+
+2011-01-01 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Move JavaScriptCore to Source
+ https://bugs.webkit.org/show_bug.cgi?id=51604
+
+ * GNUmakefile.am:
+ * docs/GNUmakefile.am:
+ - Point to JavaScriptCore in its new location.
+
+2010-12-29 Martin Robinson <mrobinson@igalia.com>
+
+ Build fix for GTK+.
+
+ * webkit/webkitwebinspector.cpp: Add missing DumpRenderTreeSupportGtk include.
+
+2010-12-29 Martin Robinson <mrobinson@igalia.com>
+
+ [GTK] GSettings warning is concealing real warnings on the build bots
+ https://bugs.webkit.org/show_bug.cgi?id=51691
+
+ Reviewed by Xan Lopez.
+
+ Do not print the GSettings warning message when running in DumpRenderTree.
+
+ * webkit/webkitwebinspector.cpp:
+ (inspectorGSettings): Do not print the GSettings warning if we are running
+ in DumpRenderTree. This should clean up the test results page a great deal.
+
+2010-12-28 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Closing a window during an onload event can trigger serious GLib warnings
+ https://bugs.webkit.org/show_bug.cgi?id=51686
+
+ Don't emit the close-web-view signal immediately during execution of closeWindowSoon.
+ The signal handler may choose to destroy the web view while handling that signal,
+ which may remove the last reference to the web view. FrameLoaderClient depends on the
+ view still existing though. Instead, let the caller finish executing and emit the signal
+ after a 0 length timeout. This matches the behavior on the Windows and Mac ports.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::ChromeClient): Initialize the timer id.
+ (WebKit::emitCloseWebViewSignalLater): Callback for the timer.
+ (WebKit::ChromeClient::closeWindowSoon): Do the actual signal invocation after
+ the caller finishes its tasks.
+ * WebCoreSupport/ChromeClientGtk.h: Add a new member for the timer id. We
+ can use this to prevent emitting the close-web-view signal twice.
+
+2010-12-28 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ [GTK] Clean up usage of NULL in webkitwebframe.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=51685
+
+ Replace occurrences of NULL with 0, in webkitwebframe.cpp. Not all
+ uses of NULL have been changed, as certain GLib functions require
+ an explicit NULL as a sentinel.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_data_source_from_core_loader):
+ (webkit_web_frame_class_init):
+ (webkit_web_frame_new):
+ (webkit_web_frame_get_title):
+ (webkit_web_frame_get_uri):
+ (webkit_web_frame_get_web_view):
+ (webkit_web_frame_get_name):
+ (webkit_web_frame_get_parent):
+ (webkit_web_frame_load_string):
+ (webkit_web_frame_load_alternate_string):
+ (webkit_web_frame_find_frame):
+ (webkit_web_frame_get_global_context):
+ (webkit_web_frame_get_data_source):
+ (webkit_web_frame_get_provisional_data_source):
+ (webkit_web_frame_print_full):
+ (webkit_web_frame_get_security_origin):
+ (webkit_web_frame_get_network_response):
+
+2010-12-27 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Ryosuke Niwa.
+
+ [GTK] EditorClient::generateEditorCommands queues up "null string" commands
+ https://bugs.webkit.org/show_bug.cgi?id=51569
+
+ Prevent adding "null string" editor commands by first checking whether or not
+ the command string is null in generateEditorCommands before appending it to the
+ list of pending editor command strings.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::generateEditorCommands): Check for the null string (no
+ command for this key combination) before appending a command string to the list of
+ pending editor commands.
+ (WebKit::EditorClient::executePendingEditorCommands): Add an ASSERT which detects
+ null command strings.
+
+2010-12-27 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Remove unneeded includes from our headers.
+
+ * WebCoreSupport/PasteboardHelperGtk.h: ditto.
+ * webkit/webkitprivate.h: ditto.
+ * webkit/webkitsoupauthdialog.h: ditto.
+
+2010-12-21 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ [GTK] minimal build with --database fails
+ https://bugs.webkit.org/show_bug.cgi?id=51394
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init): Use cacheStorage() only if the
+ OFFLINE_WEB_APPLICATIONS feature is enabled.
+
+2010-12-22 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ WebKit2 needs to mirror the frame tree in the UIProcess
+ https://bugs.webkit.org/show_bug.cgi?id=51546
+
+ - Add client functions to notify that a frame has been added or
+ removed from the page cache.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didSaveToPageCache):
+ (WebKit::FrameLoaderClient::didRestoreFromPageCache):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-12-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ * NEWS: update for 1.3.9 release.
+
+2010-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Add WebPlugin, WebPluginDatabase, and ViewportAttributes to the
+ documentation control files, in preparation for 1.3.8. Also take
+ the opportunity to add descriptions to WebPlugin and
+ WebPluginDatabase.
+
+ * docs/GNUmakefile.am:
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+ * webkit/webkitwebplugin.cpp:
+ * webkit/webkitwebplugindatabase.cpp:
+
+2010-12-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ * GNUmakefile.am: add missing files.
+ * NEWS: update for 1.3.8 release.
+
+2010-12-18 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK+] Simplify spatial navigation handling in EditorClientGtk.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=51302
+
+ Patch changes:
+ 1) The editor command for LEFT arrow key press without modifier
+ from MoveBackward to MoveLeft;
+ 2) And similarly changes the editor command for RIGHT arrow key
+ press without modifier from MoveForward to MoveRight.
+
+ It has no implications since SelectionController::modifyMovingRight()
+ handles "MoveRight" equaly to how SelectionController::modifyMovingForward()
+ handles "MoveForward" when granularity is 'CharacterGranularity'. The former
+ falls back to the later in the case of other editor commands.
+
+ Analogously, the same applies to how SelectionController::modifyMovingLeft() and
+ SelectionController::modifyMovingForward() handle "MoveLeft" and "MoveBackward"
+ editor commands, respectively.
+
+ With this change we can remove the spatial navigation hack from moveCursorCallback(),
+ in EditorClientGtk.cpp.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::moveCursorCallback):
+
+2010-12-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] scrolling artifacts
+ https://bugs.webkit.org/show_bug.cgi?id=45029
+
+ Call gdk_window_process_updates() right after moving the window
+ when scrolling.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::scroll):
+
+2010-12-15 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r74117.
+ http://trac.webkit.org/changeset/74117
+ https://bugs.webkit.org/show_bug.cgi?id=51113
+
+ This broke the GTK1 build. (Requested by mrobinson on
+ #webkit).
+
+ * GNUmakefile.am:
+
+2010-12-15 Amruth Raj <amruthraj@motorola.com> and Ravi Phaneendra Kasibhatla <ravi.kasibhatla@motorola.com>
+
+ Reviewed by Martin Robinson.
+
+ Changes to enable building WebKit2 for Gtk port.
+ (https://bugs.webkit.org/show_bug.cgi?id=37369)
+
+ * GNUmakefile.am: Added WebCore/bindings/gobject to webkitgtk_sources & webkitgtk_cppflags.
+ They should get compiled only when WebKit/gtk/GNUmakefile.am is getting included but not
+ with WebKit2/GNUmakefile.am inclusion.
+
+2010-12-14 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Simplify context-menu handling code
+ https://bugs.webkit.org/show_bug.cgi?id=49658
+
+ Use gtk_container_foreach() so that we only iterate the list of
+ children once and we avoid creating/destroying the list. It also
+ connects the activate signal for submenu items.
+
+ * webkit/webkitwebview.cpp:
+ (contextMenuConnectActivate):
+ (webkit_web_view_forward_context_menu_event):
+
+2010-12-14 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Fix several issues in r73858
+ https://bugs.webkit.org/show_bug.cgi?id=51032
+
+ - It uses both glib private data and it allocates its own private
+ structure.
+ - It calls parent's dispose method from finalize.
+ - webkit_web_plugin_get_mimetypes() uses a wrong annotation for the
+ returned value, it should be transfer none rather than transfer
+ container.
+ - Since the mime type list is internal and we return the list and not a
+ copy, it should never be freed by the caller, so
+ webkit_web_plugin_mime_type_list_free() should be removed from the
+ public API.
+ - Mime types list is used uninitialized.
+ - Mention in the docs that list returned by
+ webkit_web_plugin_database_get_plugins() must be freed with
+ webkit_web_plugin_database_plugins_list_free().
+
+ * webkit/webkitwebplugin.cpp:
+ (webkit_web_plugin_finalize):
+ (webkit_web_plugin_class_init):
+ (webkit_web_plugin_init):
+ * webkit/webkitwebplugin.h:
+ * webkit/webkitwebplugindatabase.cpp:
+
+2010-12-14 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [gtk] misnamed gtk-doc strings for webkit_web_view_can_{c|c|p}_clipboard
+ https://bugs.webkit.org/show_bug.cgi?id=50571
+
+ * webkit/webkitwebview.cpp:
+
+2010-12-13 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add API to enable/disable plugins at runtime
+ https://bugs.webkit.org/show_bug.cgi?id=50891
+
+ * tests/testwebplugindatabase.c:
+ (test_webkit_web_plugin_database_get_plugins): test that disabling
+ a plugin works.
+ * webkit/webkitwebplugin.cpp:
+ (webkit_web_plugin_get_property): hook 'enabled' property.
+ (webkit_web_plugin_set_property): ditto.
+ (webkit_web_plugin_class_init): define 'enabled' property.
+ (webkit_web_plugin_set_enabled): setter for the property.
+ (webkit_web_plugin_get_enabled): getter for the property.
+ * webkit/webkitwebplugin.h: add the APIs to the header.
+
+2010-12-13 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Do not use GET_PRIVATE macros
+ https://bugs.webkit.org/show_bug.cgi?id=50915
+
+ GET_PRIVATE macros are slow and should only be used in the object
+ init() method.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::inputMethodsMenuItem):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::postProgressFinishedNotification):
+ (WebKit::FrameLoaderClient::setTitle):
+ (WebKit::FrameLoaderClient::dispatchCreatePage):
+ (WebKit::postCommitFrameViewSetup):
+ * webkit/webkitdownload.cpp:
+ (webkit_download_init):
+ * webkit/webkitgeolocationpolicydecision.cpp:
+ (webkit_geolocation_policy_decision_init):
+ * webkit/webkithittestresult.cpp:
+ (webkit_hit_test_result_init):
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_init):
+ * webkit/webkitsecurityorigin.cpp:
+ (webkit_security_origin_init):
+ * webkit/webkitsecurityoriginprivate.h:
+ * webkit/webkitviewportattributes.cpp:
+ (webkit_viewport_attributes_init):
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_init):
+ * webkit/webkitwebdatabase.cpp:
+ (webkit_web_database_init):
+ * webkit/webkitwebdatasource.cpp:
+ (webkit_web_data_source_init):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_init):
+ (webkit_web_frame_new):
+ * webkit/webkitwebframeprivate.h:
+ * webkit/webkitwebhistoryitem.cpp:
+ (webkit_web_history_item_init):
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_init):
+ * webkit/webkitwebnavigationaction.cpp:
+ (webkit_web_navigation_action_init):
+ * webkit/webkitwebplugin.cpp:
+ (webkit_web_plugin_init):
+ * webkit/webkitwebplugindatabase.cpp:
+ (webkit_web_plugin_database_init):
+ * webkit/webkitwebplugindatabaseprivate.h:
+ * webkit/webkitwebpluginprivate.h:
+ * webkit/webkitwebpolicydecision.cpp:
+ (webkit_web_policy_decision_init):
+ * webkit/webkitwebresource.cpp:
+ (webkit_web_resource_init):
+ * webkit/webkitwebresourceprivate.h:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_init):
+ * webkit/webkitwebview.cpp:
+ (PopupMenuPositionFunc):
+ (webkit_web_view_forward_context_menu_event):
+ (webkit_web_view_drag_end):
+ (webkit_web_view_drag_data_get):
+ (webkit_web_view_query_tooltip):
+ (webkit_web_view_init):
+ * webkit/webkitwebwindowfeatures.cpp:
+ (webkit_web_window_features_init):
+
+2010-10-28 MORITA Hajime <morrita@google.com>
+
+ Reviewed by Ojan Vafai.
+
+ spellcheck does not check pasted text
+ https://bugs.webkit.org/show_bug.cgi?id=40092
+
+ Added a stub implememntation.
+
+ * WebCoreSupport/EditorClientGtk.h:
+ (WebKit::EditorClient::requestCheckingOfString):
+
+2010-12-12 Xan Lopez <xlopez@igalia.com>
+
+ Rubber-stamped by Martin Robinson.
+
+ * webkit/webkitwebplugin.h: add a note about the extension list
+ being a NULL-terminated array.
+
+2010-12-12 Xan Lopez <xlopez@igalia.com>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Stop checking for glib >= 2.16, we have dependend on a newer
+ version for a long time now.
+
+ * tests/testatk.c: Stop checking for glib >= 2.16.
+ * tests/testatkroles.c: ditto.
+ * tests/testdomdocument.c: ditto.
+ * tests/testdomdomwindow.c: ditto.
+ * tests/testdomnode.c: ditto.
+ * tests/testglobals.c: ditto.
+ * tests/testhttpbackend.c: ditto.
+ * tests/testloading.c: ditto.
+ * tests/testmimehandling.c: ditto.
+ * tests/testnetworkrequest.c: ditto.
+ * tests/testnetworkresponse.c: ditto.
+ * tests/testwebbackforwardlist.c: ditto.
+ * tests/testwebdatasource.c: ditto.
+ * tests/testwebframe.c: ditto.
+ * tests/testwebhistoryitem.c: ditto.
+ * tests/testwebresource.c: ditto.
+ * tests/testwebsettings.c: ditto.
+ * tests/testwebview.c: ditto.
+ * tests/testwindow.c: ditto.
+
+2010-12-11 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add APIs for plugin management
+ https://bugs.webkit.org/show_bug.cgi?id=50827
+
+ Add WebKitWebPluginDatabase and WebKitWebPlugin classes for basic
+ plugin management at the client level. For now they provide
+ "read-only" access to the plugin list.
+
+ * GNUmakefile.am: add new files to the build.
+ * tests/testwebplugindatabase.c: Test that the database contains
+ the test plugin, which should always be loaded.
+ * webkit/webkit.h: add new headers.
+ * webkit/webkitdefines.h: add new defines.
+ * webkit/webkitwebplugin.cpp: An new class representing a plugin object.
+ * webkit/webkitwebplugin.h: ditto.
+ * webkit/webkitwebplugindatabase.cpp: A new class that contains the list of active plugins.
+ * webkit/webkitwebplugindatabase.h: ditto.
+ * webkit/webkitwebplugindatabaseprivate.h: Private header.
+ * webkit/webkitwebpluginprivate.h: Private header.
+ * webkit/webkitwebview.cpp:
+ (webkit_get_web_plugin_database): returns the WebKitWebPluginDatabase for this session.
+ * webkit/webkitwebview.h: add method to header.
+
+2010-12-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Split webkitprivate.{cpp,h} in more manageable chunks
+ https://bugs.webkit.org/show_bug.cgi?id=50698
+
+ Split private bits of several objects to their own private
+ headers, and to their implementation files.
+
+ * GNUmakefile.am:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/EditorClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchWillSendRequest):
+ * webkit/webkitdownload.cpp:
+ (webkit_download_set_response):
+ * webkit/webkitdownloadprivate.h: Added.
+ * webkit/webkithittestresult.cpp:
+ (WebKit::kit):
+ * webkit/webkithittestresultprivate.h: Added.
+ * webkit/webkitnetworkresponse.cpp:
+ (WebKit::core):
+ (WebKit::kitNew):
+ * webkit/webkitnetworkresponseprivate.h: Added.
+ * webkit/webkitprivate.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitsecurityorigin.cpp:
+ (webkit_security_origin_get_web_database):
+ (WebKit::core):
+ (WebKit::kit):
+ * webkit/webkitsecurityoriginprivate.h: Added.
+ * webkit/webkitviewportattributes.cpp:
+ * webkit/webkitviewportattributesprivate.h: Added.
+ * webkit/webkitwebbackforwardlist.cpp:
+ * webkit/webkitwebbackforwardlistprivate.h: Added.
+ * webkit/webkitwebdatabase.cpp:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_network_response):
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebhistoryitemprivate.h: Added.
+ * webkit/webkitwebnavigationaction.cpp:
+ (WebKit::kit):
+ (WebKit::core):
+ * webkit/webkitwebnavigationactionprivate.h: Added.
+ * webkit/webkitwebpolicydecision.cpp:
+ * webkit/webkitwebpolicydecisionprivate.h: Added.
+ * webkit/webkitwebresource.cpp:
+ * webkit/webkitwebresourceprivate.h: Added.
+ * webkit/webkitwebsettings.cpp:
+ * webkit/webkitwebsettingsprivate.h: Added.
+ * webkit/webkitwebview.cpp:
+
+2010-12-10 Alejandro G. Castro <alex@igalia.com>
+
+ Unreviewed, fixed small typo in the name of a function.
+
+ * webkit/webkitwebsettings.cpp:
+ (getAvailableDictionariesCallback):
+ (webkit_web_settings_set_property):
+
+2010-12-09 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add hasSpellingMarker support to the DRT
+ https://bugs.webkit.org/show_bug.cgi?id=50739
+
+ Added a new private API function to support the spelling marker
+ tests in the DRT.
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::webkitWebFrameSelectionHasSpellingMarker):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+
+2010-12-10 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Choose a dictionary in case there is no one defined or the
+ env LANG does not propose one
+ https://bugs.webkit.org/show_bug.cgi?id=50738
+
+ In case no dict is set and we can not find one using the
+ environment just get the first dictionary installed in the list.
+
+ * webkit/webkitwebsettings.cpp:
+ (getAvilableDictionariesCallback):
+ (webkit_web_settings_set_property):
+
+2010-12-10 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Remove unnecessary variable names from DumpRenderTreeSupportGtk
+ https://bugs.webkit.org/show_bug.cgi?id=50815
+
+ There were some unnecessary variable names in DumpRenderTreeSupportGtk,
+ so remove them.
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h: Do it.
+
+2010-12-10 Joone Hur <joone@kldp.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Unskipping some test cases in /userscripts dependent on addUserStyleSheet
+ https://bugs.webkit.org/show_bug.cgi?id=50808
+
+ Unskipping the following test cases:
+ userscripts/mixed-case-stylesheet.html
+ userscripts/simple-stylesheet.html
+ userscripts/user-style-all-frames.html
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::addUserStyleSheet): Added "bool allFrames" parameter.
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+
+2010-12-10 Joone Hur <joone@kldp.org>
+
+ Reviewed by Eric Seidel.
+
+ [GTK] Add DRT support for pageProperty, isPageBoxVisible, pageSizeAndMarginsInPixels, and addUserStyleSheet
+ https://bugs.webkit.org/show_bug.cgi?id=50783
+
+ This patch allows to unskip the following test cases:
+ printing/page-rule-selection.html
+ printing/page-format-data.html
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::pageProperty): Added.
+ (DumpRenderTreeSupportGtk::isPageBoxVisible): Ditto.
+ (DumpRenderTreeSupportGtk::pageSizeAndMarginsInPixels): Ditto.
+ (DumpRenderTreeSupportGtk::addUserStyleSheet): Ditto.
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+
+2010-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Split webkitprivate.{cpp,h} in more manageable chunks
+ https://bugs.webkit.org/show_bug.cgi?id=50698
+
+ Split private bits of WebKitWebInspector to its own private
+ header, and to its implementation file.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ * webkit/webkitprivate.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebinspector.cpp:
+ (isSchemaAvailable):
+ (inspectorGSettings):
+ * webkit/webkitwebinspectorprivate.h: Added.
+ * webkit/webkitwebview.cpp:
+
+2010-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Split webkitprivate.{cpp,h} in more manageable chunks
+ https://bugs.webkit.org/show_bug.cgi?id=50698
+
+ Split private bits of WebKitNetworkRequest to its own private
+ header, and to its implementation file. Also take the opportunity
+ to use PlatformRefPtr for NetworkRequest where it makes sense, and
+ make the creation less verbose by adding kitNew.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchWillSendRequest):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ (WebKit::FrameLoaderClient::download):
+ (WebKit::FrameLoaderClient::startDownload):
+ * webkit/webkitdownload.cpp:
+ * webkit/webkitnetworkrequest.cpp:
+ (WebKit::kitNew):
+ (WebKit::core):
+ * webkit/webkitnetworkrequestprivate.h: Added.
+ * webkit/webkitprivate.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebdatasource.cpp:
+ (webkit_web_data_source_get_initial_request):
+ (webkit_web_data_source_get_request):
+ * webkit/webkitwebframe.cpp:
+
+2010-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Split webkitprivate.{cpp,h} in more manageable chunks
+ https://bugs.webkit.org/show_bug.cgi?id=50698
+
+ Split private bits of WebKitWebFrame to its own private header, and
+ to its implementation file.
+
+ * GNUmakefile.am:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/DragClientGtk.cpp:
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * webkit/webkitprivate.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebdatasource.cpp:
+ * webkit/webkitwebframe.cpp:
+ (WebKit::getViewFromFrame):
+ (WebKit::core):
+ (WebKit::kit):
+ * webkit/webkitwebframeprivate.h: Added.
+ * webkit/webkitwebpolicydecision.cpp:
+ * webkit/webkitwebview.cpp:
+
+2010-12-09 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] Populate DumpRenderTreeSupportGtk (part IV)
+ https://bugs.webkit.org/show_bug.cgi?id=48429
+
+ Moved also webkit_worker_thread_count() to DumpRenderTreeSupportGtk,
+ since it was only used by DRT for now.
+
+ Since this method was the only one in webkitworker.cpp, the file was
+ also removed.
+
+ * GNUmakefile.am:
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::workerThreadCount):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitworkers.cpp: Removed.
+
+2010-12-06 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Support the Mozilla-style Fullscreen Javascript API
+ https://bugs.webkit.org/show_bug.cgi?id=50572
+
+ Fullscreen API support. It is controlled at runtime using a new
+ setting called enable-fullscreen, set to FALSE by default.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::supportsFullScreenForElement):
+ (WebKit::ChromeClient::enterFullScreenForElement):
+ (WebKit::ChromeClient::exitFullScreenForElement):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+
+2010-12-09 Joone Hur <joone@kldp.org>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Support for viewport meta tag
+ https://bugs.webkit.org/show_bug.cgi?id=45443
+
+ This patch adds a new gobject to offer the viewport properties to user agents.
+ It is WebKitViewportAttributes that contains the viewport size, initial scale with limits,
+ and information about whether a user is able to scale the contents in the viewport.
+
+ This feature was introduced by Safari on the iPhone. For more information on
+ the viewport properties, refer to the Safari reference library at
+ http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html
+
+ * GNUmakefile.am: Added webkitviewportattributes.h webkitviewportattributes.cpp.
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::dispatchViewportDataDidChange): Added this callback to know whether the viewport arguments is available.
+ * WebCoreSupport/ChromeClientGtk.h:
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::dumpConfigurationForViewport): Added this function to compute the viewport attributes with the given availableWidth and availableHeight.
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::postCommitFrameViewSetup): Invalidate the viewport attributes.
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkitprivate.h: Added webkitViewportAttributesRecompute as a private function.
+ * webkit/webkitviewportattributes.cpp: Added.
+ (webkit_viewport_attributes_class_init):
+ (webkit_viewport_attributes_init):
+ (webkit_viewport_attributes_get_property):
+ (webkit_viewport_attributes_set_property):
+ (webkitViewportAttributesRecompute): Recompute the optimal viewport attributes and emit the viewport-attributes-changed signal.
+ (webkit_viewport_attributes_recompute): a public API for calling webkitViewportAttributesRecompute.
+ * webkit/webkitviewportattributes.h: Added.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_property): Added PROP_VIEWPORT_ATTRIBUTES.
+ (webkit_web_view_dispose): Deallocate the WebKitViewportAttributes instance.
+ (webkit_web_view_class_init): Added the viewport-attributes-recompute-requested and viewport-attributes-changed signals.
+ (webkit_web_view_init): Set the WebKitViewportAttributes instance.
+ (webkit_web_view_get_viewport_attributes): Added a getter to obtain the WebKitViewportAttributes instance held by the given WebKitWebView.
+ * webkit/webkitwebview.h:
+ * webkit/webkitwebviewprivate.h: Added WebKitViewportAttributes as a private variable.
+
+2010-12-09 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Fix 'make install' woes with some versions of automake.
+
+ * GNUmakefile.am: use $(top_builddir) instead of $(builddir),
+ since we actually want a valid path for the file regardless of the
+ place from where the script is called.
+
+2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Build fix. Take webView{Enter,Exit}Fullscreen back out of the
+ WebKit namespace, and remove a function signature that got in by
+ mistake because of a bad merge.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (WebKit::core):
+ (WebKit::kit):
+
+2010-12-08 Brian Weinstein <bweinstein@apple.com>
+
+ Reviewed by John Sullivan.
+
+ Layering Violation in ContextMenu - member variable of type HitTestResult
+ https://bugs.webkit.org/show_bug.cgi?id=50586
+
+ Update users of ContextMenu and ContextMenuController to match where the new functions
+ are located.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems):
+
+2010-12-08 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by John Sullivan.
+
+ [GTK] Layering violation in ContextMenuGtk.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=50676
+
+ ContextMenuGtk accesses the page's ContextMenuController, which is a layering
+ violation. This was fixed for Mac with change r73469. We make a similar fix here
+ by moving the "activated" signal connection to the WebKit layer.
+
+ * webkit/webkitwebview.cpp:
+ (popupMenuItemActivated): Have ContextMenuController handle this signal.
+ (webkit_web_view_forward_context_menu_event): For all items in the untouched
+ context menu, connect their "activated" signal to the new popupMenuItemActivated
+ handler.
+
+2010-12-08 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] Populate DumpRenderTreeSupportGtk (part III)
+ https://bugs.webkit.org/show_bug.cgi?id=48429
+
+ Adjusted some call sites of previously internal API declared
+ webkitprivate.h that have moved to DumpRenderTreeSupportGtk.
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::gcCollectJavascriptObjects):
+ (DumpRenderTreeSupportGtk::gcCollectJavascriptObjectsOnAlternateThread):
+ (DumpRenderTreeSupportGtk::gcCountJavascriptObjects):
+ (DumpRenderTreeSupportGtk::layoutFrame):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+
+2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Split webkitprivate.{cpp,h} in more manageable chunks
+ https://bugs.webkit.org/show_bug.cgi?id=50698
+
+ Split private bits of WebKitWebView to its own private header, and
+ to its implementation file. Take the opportunity to fix includes
+ sorting to comply with the style guide.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::enterFullscreenForNode):
+ (WebKit::ChromeClient::exitFullscreenForNode):
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * WebCoreSupport/DragClientGtk.cpp:
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ * WebCoreSupport/EditorClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebbackforwardlist.cpp:
+ * webkit/webkitwebdatasource.cpp:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+ (WebKit::core):
+ (WebKit::kit):
+ (WebKit::webViewEnterFullscreen):
+ (WebKit::webViewExitFullscreen):
+ * webkit/webkitwebviewprivate.h: Added.
+
+2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ The storage for the subresources is a GHashTable which does not
+ guarantee order, so we need to make our checking more resilient.
+
+ * tests/testwebresource.c:
+ (test_web_resource_sub_resource_loading):
+
+2010-12-08 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Fix assertion in the API test, we are requesting the favicon and
+ the subresource so we have to make sure we are assigning just the
+ first subresource.
+
+ * tests/testwebresource.c:
+ (resource_request_starting_sub_cb):
+
+2010-12-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] clears the subresources prematurely
+ https://bugs.webkit.org/show_bug.cgi?id=50634
+
+ Make adding the main resource explicit, and only clear
+ subresources when the new load is committed, avoid clearing them
+ prematurely.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest):
+ (WebKit::FrameLoaderClient::provisionalLoadStarted):
+ (WebKit::FrameLoaderClient::prepareForDataSourceReplacement):
+ (WebKit::postCommitFrameViewSetup):
+ * tests/testwebdatasource.c:
+ (notify_load_status_lifetime_cb):
+ (test_webkit_web_data_source_lifetime):
+ (main):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_add_main_resource):
+ (webkit_web_view_add_resource):
+ (webkit_web_view_clear_resources):
+
+2010-12-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] testwebdatasource - unreachable test is broken
+ https://bugs.webkit.org/show_bug.cgi?id=50629
+
+ Fix, and disable testwebdatasource's unreachable test (it is not
+ passing now that it actually tests what it should). This also
+ fixes the wait timer to actually work as expected.
+
+ * tests/testwebdatasource.c:
+ (notify_load_status_unreachable_cb):
+ (notify_load_status_cb):
+ (test_webkit_web_data_source):
+
+2010-12-07 Martin Robinson <mrobinson@igalia.com>
+
+ Unreviewed, rolling out r73392.
+ http://trac.webkit.org/changeset/73392
+ https://bugs.webkit.org/show_bug.cgi?id=50489
+
+ This commit caused crashes on the GTK+ bots
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::finishedLoading):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_encoding):
+
+2010-12-06 Nate Chapin <japhet@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Update calls to DocumentWriter.
+ https://bugs.webkit.org/show_bug.cgi?id=50489
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::finishedLoading):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_encoding):
+
+2010-12-06 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Build is broken after r73353
+ https://bugs.webkit.org/show_bug.cgi?id=50568
+
+ Fix the gtk-doc build by making all members of the cache model
+ enum public. gtk-doc does not support making only some enum
+ members private. We should also expose it so that users querying
+ the cache model do not get mysterious, undocumented results.
+
+ * webkit/webkitwebview.h: Fix gtk-doc for the cache model enum.
+
+2010-12-06 Derek Weitzel <djw8605@gmail.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] API Documentation referencing depreciated GTK_WIDGET_TOPLEVEL
+ https://bugs.webkit.org/show_bug.cgi?id=50512
+
+ Fixed reference to depreciated GTK_WIDGET_TOPLEVEL.
+
+ * webkit/webkitwebview.cpp:
+
+2010-12-06 Joone Hur <joone@kldp.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] The webkit cache model needs to be set when WebFrameLoaderClient::didPerformFirstNavigation() is called
+ https://bugs.webkit.org/show_bug.cgi?id=50430
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didPerformFirstNavigation): Set the webview cache model.
+ * webkit/webkitprivate.cpp:
+ (webkit_init): Removed the code of setting the webview cache model.
+
+2010-12-04 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] Populate DumpRenderTreeSupportGtk (Part II)
+ https://bugs.webkit.org/show_bug.cgi?id=48429
+
+ Moved more private method declared with WEBKIT_API to
+ DumpRenderTreeSupportGtk, since they were only being used by DRT.
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::executeCoreCommandByName):
+ (DumpRenderTreeSupportGtk::isCommandEnabled):
+ (DumpRenderTreeSupportGtk::whiteListAccessFromOrigin):
+ (DumpRenderTreeSupportGtk::resetOriginAccessWhiteLists):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+ * webkit/webkitprivate.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+
+2010-11-08 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] Populate DumpRenderTreeSupportGtk
+ https://bugs.webkit.org/show_bug.cgi?id=48429
+
+ Moved most of the webkit_web_frame* methods defined as private APIs in webkitprivate.h
+ to DumpRenderTreeSupportGtk, as static class methods. These methods had
+ not gone throught the formal API review process and were only being used by DRT for now.
+
+ The essence of each original method name were kept. For example
+ webkit_web_frame_get_children(...) was renamed to DumpRenderTreeSupportGtk::getFrameChildren(...),
+ and so on.
+
+ Also some of the method bodies were changed to return non-glib types (gchar* -> CString).
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::getFrameChildren):
+ (DumpRenderTreeSupportGtk::getInnerText):
+ (DumpRenderTreeSupportGtk::dumpRenderTree):
+ (DumpRenderTreeSupportGtk::counterValueForElementById):
+ (DumpRenderTreeSupportGtk::pageNumberForElementById):
+ (DumpRenderTreeSupportGtk::numberOfPagesForFrame):
+ (DumpRenderTreeSupportGtk::getPendingUnloadEventCount):
+ (DumpRenderTreeSupportGtk::pauseAnimation):
+ (DumpRenderTreeSupportGtk::pauseTransition):
+ (DumpRenderTreeSupportGtk::pauseSvgAnimation):
+ (DumpRenderTreeSupportGtk::markerTextForListItem):
+ (DumpRenderTreeSupportGtk::numberOfActiveAnimations):
+ (DumpRenderTreeSupportGtk::suspendAnimations):
+ (DumpRenderTreeSupportGtk::resumeAnimations):
+ (DumpRenderTreeSupportGtk::clearMainFrameName):
+ (DumpRenderTreeSupportGtk::getFocusedAccessibleElement):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+
+2010-12-02 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] DumpRenderTree has two copies of JavaScriptCore
+ https://bugs.webkit.org/show_bug.cgi?id=49877
+
+ Keep WebKit/WebCore symbols hidden.
+
+ * GNUmakefile.am: Move the symbol visibility rules here, because
+ now JSC symbols are visible, but WebCore/WebKit symbols are hidden.
+
+2010-12-02 Daniel Bates <dbates@rim.com>
+
+ Ignore WebKit/gtk/docs/GNUmakefile.in and WebKit/gtk/po/*.pot so that
+ these files do not appear in an svn stat. This change makes SVN
+ consistent with the current Git ignore behavior for these files.
+
+ * docs: Added property svn:ignore.
+ * po: Added property svn:ignore.
+
+2010-12-01 Jia Pu <jpu@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Support multiple correction candidates panel for misspelled word on Mac OS X.
+ https://bugs.webkit.org/show_bug.cgi?id=50137
+ <rdar://problem/8568059>
+
+ Adopted new function signature defined in base class.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::getGuessesForWord):
+ * WebCoreSupport/EditorClientGtk.h:
+
+2010-11-30 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Fix wrong type in assert return value
+ https://bugs.webkit.org/show_bug.cgi?id=50208
+
+ Use appropriate return type in different g_return_val_if_fail(). This
+ removes some compiler warning.
+
+ * webkit/webkitwebdatasource.cpp:
+ (webkit_web_data_source_is_loading):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_page_number_for_element_by_id):
+ (webkit_web_frame_number_of_pages):
+
+2010-11-30 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Chris Fleizach.
+
+ [GTK] Implement ROLE_COMBO_BOX
+ https://bugs.webkit.org/show_bug.cgi?id=25678
+
+ New test to check the implementation of the combo boxes.
+
+ * tests/testatk.c:
+ (testWebkitAtkComboBox): New test, checking that the roles and the
+ implemented interfaces for a combo box and its descendants work.
+ (main): Added the new unit test.
+
+2010-11-30 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Test fast/events/mouseover-mouseout2.html crashes
+ https://bugs.webkit.org/show_bug.cgi?id=50214
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_query_tooltip):
+
+2010-11-30 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r72764.
+ http://trac.webkit.org/changeset/72764
+ https://bugs.webkit.org/show_bug.cgi?id=50215
+
+ This change is causing assertion failures on the debug bots.
+ (Requested by mrobinson on #webkit).
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::notifyStatus):
+ * tests/testatk.c:
+ (main):
+
+2010-11-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ * NEWS: update for 1.3.7 release.
+
+2010-11-29 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Tooltips should be fully keyboard accessible
+ https://bugs.webkit.org/show_bug.cgi?id=25525
+
+ Position the tooltip under the current focused element when the
+ tooltip has been triggered using the keyboard.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_query_tooltip):
+ (webkit_web_view_show_help):
+ (webkit_web_view_class_init):
+
+2010-11-29 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Tooltips not shown when scrolling
+ https://bugs.webkit.org/show_bug.cgi?id=50143
+
+ Convert tooltip area to window coordinates so that tooltips are
+ shown even after scrolling.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+
+2010-11-26 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Inspector: add a way to inspect a WebKitDOMNode
+ https://bugs.webkit.org/show_bug.cgi?id=49903
+
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_inspect_node):
+ * webkit/webkitwebinspector.h:
+
+2010-11-26 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] events missing when a document is (re)loaded
+ https://bugs.webkit.org/show_bug.cgi?id=25831
+
+ Emit the right signals when reloading a document.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::notifyAccessibilityStatus): New function, to make sure
+ the signals involved in reloading a document are properly emitted.
+ (WebKit::notifyStatus): Also notify accessibility if enabled.
+
+ New unit test to check the signals are being actually emitted.
+
+ * tests/testatk.c:
+ (stateChangedCb): Callback for 'state-change' signal emitted by
+ the accessible object associated to the webView.
+ (documentReloadCb): Callback for 'reload' signal.
+ (documentLoadCompleteCb): Callback for 'load-complete' signal.
+ (webviewLoadStatusChangedCb): Callback for 'notify::load-status'
+ signal, emitted by the WebKitWebView object (not the AtkObject).
+ (testWebkitAtkDocumentReloadEvents): New unit test.
+ (main): Added the new unit test.
+
+2010-11-24 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Make kit() methods return the proper type instead of gpointer
+ https://bugs.webkit.org/show_bug.cgi?id=50034
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::shouldDeleteRange): get rid of unneeded cast.
+ (WebKit::EditorClient::shouldShowDeleteInterface): ditto.
+ (WebKit::EditorClient::shouldBeginEditing): ditto.
+ (WebKit::EditorClient::shouldEndEditing): ditto.
+ (WebKit::EditorClient::shouldInsertText): ditto.
+ (WebKit::EditorClient::shouldChangeSelectedRange): ditto.
+ (WebKit::EditorClient::shouldApplyStyle): ditto.
+ (WebKit::EditorClient::shouldInsertNode): ditto.
+ * webkit/webkitprivate.cpp:
+ (WebKit::kit): ditto.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_dom_document): ditto.
+
+2010-11-24 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Fix crashes in GTK+ bots. Use kit() instead of wrapFoo, otherwise
+ the DOM objects won't be in the cache and we'll ASSERT when
+ unreffing them.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::shouldDeleteRange): use kit to get the
+ GObject wrapper for the DOM object.
+ (WebKit::EditorClient::shouldShowDeleteInterface): ditto.
+ (WebKit::EditorClient::shouldBeginEditing): ditto.
+ (WebKit::EditorClient::shouldEndEditing): ditto.
+ (WebKit::EditorClient::shouldInsertText): ditto.
+ (WebKit::EditorClient::shouldChangeSelectedRange): ditto.
+ (WebKit::EditorClient::shouldApplyStyle): ditto.
+ (WebKit::EditorClient::shouldInsertNode): ditto.
+
+2010-11-24 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] The WebKitWebView should expose a set of signals encapsulating the behavior of the EditorClient
+ https://bugs.webkit.org/show_bug.cgi?id=49143
+
+ Add signals that encapsulate the functionality of the Mac EditingDelegate. These signals
+ are private for now, but DRT consumes them to produce proper output for editing tests.
+ After some time, these may be part of the public API.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::shouldDeleteRange): Fire the appropriate editing signal.
+ (WebKit::EditorClient::shouldShowDeleteInterface): Ditto.
+ (WebKit::EditorClient::shouldBeginEditing): Ditto.
+ (WebKit::EditorClient::shouldEndEditing): Ditto.
+ (WebKit::kit): Added helper function.
+ (WebKit::EditorClient::shouldInsertText): Fire the appropriate editing signal.
+ (WebKit::EditorClient::shouldChangeSelectedRange): Ditto.
+ (WebKit::EditorClient::shouldApplyStyle): Ditto.
+ (WebKit::EditorClient::didBeginEditing): Ditto.
+ (WebKit::EditorClient::respondToChangedContents): Ditto.
+ (WebKit::EditorClient::respondToChangedSelection): Ditto.
+ (WebKit::EditorClient::didEndEditing): Ditto.
+ (WebKit::EditorClient::shouldInsertNode): Ditto.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_real_should_allow_editing_action): Added this default signal
+ callback which explicitly allows cancellable editing actions.
+ (webkit_web_view_class_init): Add new editing signal declarations to the view.
+ * webkit/webkitwebview.h:
+ * webkitmarshal.list: Added some new marshaling definitions.
+
+2010-11-24 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r72499.
+ http://trac.webkit.org/changeset/72499
+ https://bugs.webkit.org/show_bug.cgi?id=50022
+
+ This change is causing crashes on the bots. (Requested by
+ mrobinson on #webkit).
+
+ * tests/testatk.c:
+ (main):
+
+2010-11-23 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Fix IFrame DOM bindings API
+ https://bugs.webkit.org/show_bug.cgi?id=49980
+
+ * tests/testdomdocument.c:
+ (test_dom_document_garbage_collection): change to use the fixed
+ IFrame APIs.
+
+2010-11-23 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ focus issue with links that have tooltips
+ https://bugs.webkit.org/show_bug.cgi?id=49498
+
+ Set the area of the widget where the tooltip should be shown when
+ a new tooltip is set. Since the widget is the same (the view), if
+ the tooltip area is not set and a new tooltip is triggered while
+ the previous one is still visible, the text of the tooltip is
+ updated but its position doesn't change.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_query_tooltip):
+
+2010-11-21 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Chris Fleizach.
+
+ [GTK] Implement ROLE_COMBO_BOX
+ https://bugs.webkit.org/show_bug.cgi?id=25678
+
+ New test to check the implementation of the combo boxes.
+
+ * tests/testatk.c:
+ (testWebkitAtkComboBox): New test, checking that the roles and the
+ implemented interfaces for a combo box and its descendants work.
+ (main): Added the new unit test.
+
+2010-11-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Remove leftover code in unit test.
+
+ * GNUmakefile.am: remove unneeded utils file in dependency list.
+ * tests/testdomdocument.c:
+ (main): do not change to the directory of a non existing resource
+ list.
+
+2010-11-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Memory managament for DOM GObject wrappers
+ https://bugs.webkit.org/show_bug.cgi?id=40302
+
+ Initial attempt to have a kind of poor man's garbage collection
+ for GObject DOM objects. We tie the object's lifecycle to their
+ parent Frame and/or its document; that is, all objects will be
+ collected when their parent frame is destroyed or when that frame
+ transitions to a new document. Manual management (calling
+ g_object_unref on them) is also allowed, and is required for
+ objects that are not in the DOM tree (eg NodeLists).
+
+ * GNUmakefile.am: add testutils file to testdomdocument.c
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::setMainFrameDocumentReady): collect
+ DOM objects on document transition.
+ * tests/testdomdocument.c:
+ (dom_document_fixture_teardown): only destroy the view if it's not
+ already destroyed, since the new test detroys it on its own.
+ (test_dom_document_get_elements_by_tag_name): manually unref node list.
+ (test_dom_document_get_elements_by_class_name): ditto.
+ (test_dom_document_get_links): ditto.
+ (test_dom_document_garbage_collection): test all possible
+ scenarios for DOM object "garbage collection".
+ (main): add new test.
+ * tests/testdomnode.c:
+ (test_dom_node_hierarchy_navigation): manually unref node list.
+ (test_dom_node_insertion): ditto.
+ * webkit/webkithittestresult.cpp:
+ (webkit_hit_test_result_dispose): unref the inner node on dispose
+ now that the memory management model is clarified.
+ (webkit_hit_test_result_class_init): hook dispose.
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_core_frame_gone): clear DOM objects attached to this frame.
+ (webkit_web_frame_finalize): ditto.
+
+2010-11-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Fix introspection build, we were missing a -I flag.
+
+ * GNUmakefile.am:
+
+2010-11-18 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] atk_text_get_selection returns the wrong offsets after a link
+ https://bugs.webkit.org/show_bug.cgi?id=49514
+
+ Updated test case to also chech this specific subcase.
+
+ We need to explicitly check the case of having a selection in a
+ paragraph after an embedded object (i.e. a link) to make sure the
+ right calculations are being done when the paragraph is composed
+ of more than just one text object, and the current selection is
+ made only in one of them.
+
+ * tests/testatk.c:
+ (testWebkitAtkTextSelections): Make sure that a selection after a
+ link in a paragraph is working ok when asking for the text
+ selection from the point of view of the paragraph.
+
+2010-11-17 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Changing any GNUmakefile.am in the source tree forces a rebuld of the DOM bindings and WebKit APi
+ https://bugs.webkit.org/show_bug.cgi?id=49400
+
+ Add GNUmakefile.am and include all WebKit API build rules. Make webkitenum.*
+ depend on this new file, instead of the generated GNUmakefile.am.
+
+ * GNUmakefile.am: Copied from GNUmakefile.am.
+
+2010-11-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ Fix a typo that leads to emitting the wrong signal if it is done
+ by using the signals array.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2010-11-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Some key-press events can't be handled by WebView
+ https://bugs.webkit.org/show_bug.cgi?id=48986
+
+ The problem is that "popup-menu" and "show-help" signals are
+ handled by GtkTextView, as they are added to the key bindings set
+ of every widget in gtk_widget_class_init(). For all other bindings
+ handled by GtkTextView we are stopping the signal emission in
+ their callbacks, so we only need to do the same for "popup-menu"
+ and "show-help" signals.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::toggleOverwriteCallback):
+ (WebKit::popupMenuCallback):
+ (WebKit::showHelpCallback):
+ (WebKit::EditorClient::EditorClient):
+
+2010-11-16 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Show default context menu for the currently focused element when activated with keyboard
+ https://bugs.webkit.org/show_bug.cgi?id=49376
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_popup_menu_handler):
+
+2010-11-11 Joone Hur <joone@kldp.org>
+
+ Reviewed by Antonio Gomes.
+
+ [GTK][DRT] Implement LayoutTestController::nodesFromRect
+ https://bugs.webkit.org/show_bug.cgi?id=46598
+
+ Support nodesFromRect in DRT
+
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp:
+ (DumpRenderTreeSupportGtk::nodesFromRect): Added.
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h:
+
+2010-11-11 Chang Shu <chang.shu@nokia.com>
+
+ Reviewed by Antonio Gomes.
+
+ [GTK] Replace "MoveForward"/"MoveBackward" with "MoveRight"/"MoveLeft"
+ to make spatial navigation work on input/textarea.
+ https://bugs.webkit.org/show_bug.cgi?id=49056
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::moveCursorCallback):
+
+2010-11-08 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Link with target name set does not work
+ https://bugs.webkit.org/show_bug.cgi?id=48865
+
+ When a new page is created with a name (target=myFrame), the new
+ mainFrame could not be found because they where not stored in the
+ same PageGroup. As PageGroup are not exposed externally so the
+ simpliest solution is to use a global page group name. This also fixes
+ issue with visited link coloration across pages. After this change the
+ private function webkit_web_view_set_group_name() was no longer used
+ so it was removed completly.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::closeWindowSoon):
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+
+2010-11-08 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=48685
+ Notify UI process about focused frame
+
+ Added an empty implementation of the new ChromeClient method.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::focusedFrameChanged):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-11-08 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Andreas Kling.
+
+ [GTK] Error page templates are not filled properly
+ https://bugs.webkit.org/show_bug.cgi?id=49148
+
+ Replace a call to makeString with String::format. This was mistakenly
+ changed to makeString in an earlier commit.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+
+2010-11-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ * NEWS: update for release.
+
+2010-11-08 Csaba Osztrogonac <ossy@webkit.org>
+
+ Unreviewed, rolling out r71466.
+ http://trac.webkit.org/changeset/71466
+ https://bugs.webkit.org/show_bug.cgi?id=48865
+
+ It broke layout tests on GTK bots.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::closeWindowSoon):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+ (webkit_web_view_set_group_name):
+
+2010-11-07 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Rename Cache to MemoryCache
+ https://bugs.webkit.org/show_bug.cgi?id=49159
+
+ * webkit/webkitwebview.cpp:
+
+2010-11-05 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Link with target name set does not work correctly
+ https://bugs.webkit.org/show_bug.cgi?id=48865
+
+ When a new page is created with a name (target=myFrame), the new
+ mainFrame could not be found because they where not stored in the
+ same PageGroup. As PageGroup are not exposed externally so the
+ simpliest solution is to use a global page group name. This also fixes
+ issue with visited link coloration across pages. After this change the
+ private function webkit_web_view_set_group_name() was no longer used
+ so it was removed completly.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::closeWindowSoon):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+
+2010-11-05 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Move resumeAnimations/suspendAnimations from Frame to AnimationController.
+ https://bugs.webkit.org/show_bug.cgi?id=49073
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_suspend_animations):
+ (webkit_web_frame_resume_animations):
+
+2010-11-05 Chris Marrin <cmarrin@apple.com>
+
+ Unreviewed.
+
+ Small fix to GTK build
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_suspend_animations):
+ (webkit_web_frame_resume_animations):
+
+2010-11-05 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Simon Fraser.
+
+ Make suspendAnimations/resumeAnimations and setCSSAnimations traverse through subframes and remember state
+ https://bugs.webkit.org/show_bug.cgi?id=46945
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_suspend_animations):
+ (webkit_web_frame_resume_animations):
+
+2010-11-03 Daniel Bates <dbates@rim.com>
+
+ For unnamed frames, window.name returns a generated name
+ https://bugs.webkit.org/show_bug.cgi?id=6751
+
+ Part 1 of 2.
+
+ Substitute FrameTree::uniqueName() for FrameTree::name() in the GTK port.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_name):
+
+2010-11-02 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Adam Barth.
+
+ [Cairo] Remove PlatformRefPtrCairo
+ https://bugs.webkit.org/show_bug.cgi?id=48192
+
+ Replace instances of PlatformRefPtr smart pointers that wrap Cairo
+ types with RefPtrs.
+
+ * WebCoreSupport/DragClientGtk.cpp: Use RefPtr instead of PlatformRefPtr.
+ (WebKit::dragIconWindowDrawEventCallback):
+ * WebCoreSupport/DragClientGtk.h: Ditto.
+
+2010-11-02 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Martin Robinson.
+
+ Set frame name before appending it to the frame tree in the Apple Windows,
+ GTK, and EFL ports
+ https://bugs.webkit.org/show_bug.cgi?id=48806
+
+ Make the frame creation process in the GTK-port consistent with the
+ Mac, Qt, and Haiku ports. In particular, set the name of the new
+ frame before it's appended to the frame tree.
+
+ At this time we cannot test this change since it is being masked by
+ HTMLFrameElementBase::setName() <http://trac.webkit.org/browser/trunk/WebCore/html/HTMLFrameElementBase.cpp?rev=70976#L160>.
+ We'll be able to test this once we fix bug #6751.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+
+2010-11-01 Jennifer Braithwaite <jennb@google.com>
+
+ Reviewed by Martin Robinson.
+
+ GTK: Update resource tracking when moving a frame between documents
+ https://bugs.webkit.org/show_bug.cgi?id=48362
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transferLoadingResourceFromPage):
+ Assign resource id to current web view and remove from former web view.
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_remove_resource):
+ Added.
+
+2010-11-01 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Cleanup needed in testatk.c file
+ https://bugs.webkit.org/show_bug.cgi?id=48759
+
+ Cleanup done in testatk.c, mainly addressing the following issues:
+
+ - Removed any trace of extra main loops in tests, so now we just
+ spin the original main loop in all of them to get the a11y
+ objects.
+
+ - As we no longer use the extra main loops, removed the bail_out
+ function, used along with g_idle_add() to stop those extra loops.
+
+ - As we now spin the loop in every test, created a new function
+ waitForAccessibilityObjects() to write the loop just once.
+
+ - Fixed name in incorrectly named test testWekitAtkTextSelections.
+
+ - Alphabetically sorted the list of includes.
+
+ - Renamed all identifiers to camel Case notation.
+
+ - Declare variables when needed only (instead of declaring all of
+ them at the beginning of the function).
+
+ - Don't declare two variables of the same type in the same line.
+
+ - No more short names like 'obj', 'textObj' or 'alloc'. Use names
+ like 'object', 'textObject' and 'allocation' instead.
+
+ - Fixed indentation.
+
+ - Make sure all comments finish with '.'
+
+ - Replace NULL's with 0's.
+
+ * tests/testatk.c:
+ (waitForAccessibleObjects): New, manually spins the main context
+ to make sure accessible objects are created before continuing.
+ (testGetTextFunction): Fixed this function to be compliant with
+ the WebKit's coding style.
+ (runGetTextTests): Ditto.
+ (testWebkitAtkGetTextAtOffsetForms): Ditto.
+ (testWebkitAtkGetTextAtOffset): Ditto.
+ (testWebkitAtkGetTextAtOffsetNewlines): Ditto.
+ (testWebkitAtkGetTextAtOffsetTextarea): Ditto.
+ (testWebkitAtkGetTextAtOffsetTextInput): Ditto.
+ (testWebkitAtkGetTextInParagraphAndBodySimple): Ditto.
+ (testWebkitAtkGetTextInParagraphAndBodyModerate): Ditto.
+ (testWebkitAtkGetTextInTable): Ditto.
+ (testWebkitAtkGetHeadersInTable): Ditto.
+ (compAtkAttribute): Ditto.
+ (atkAttributeSetAttributeNameHasValue): Ditto.
+ (testWebkitAtkTextAttributes): Ditto.
+ (testWebkitAtkTextSelections): Ditto.
+ (testWebkitAtkGetExtents): Ditto.
+ (testWebkitAtkLayoutAndDataTables): Ditto.
+ (testWebkitAtkLinksWithInlineImages): Ditto.
+ (testWebkitAtkHypertextAndHyperlinks): Ditto.
+ (testWebkitAtkListsOfItems): Ditto.
+ (testWebkitAtkTextChangedNotifications): Ditto.
+ (main): Ditto.
+
+2010-11-01 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Anders Carlsson.
+
+ <rdar://problem/7660547> and https://bugs.webkit.org/show_bug.cgi?id=48699
+ Context menu support for WebKit 2.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::showContextMenu):
+
+2010-11-01 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Pasting markup into Thunderbird compose window produces no text
+ https://bugs.webkit.org/show_bug.cgi?id=43737
+
+ Added a test verifying that the meta tag prefix on markup data exists.
+
+ * tests/testcopyandpaste.c:
+ (load_status_cb): Add a check for the meta tag prefix.
+
+2010-11-01 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] AtkHyperlink needs to be implemented
+ https://bugs.webkit.org/show_bug.cgi?id=33785
+
+ New test to ensure the AtkHypertext/AtkHyperlink stuff works.
+
+ * tests/testatk.c:
+ (testWebkitAtkHypertextAndHyperlinks): New test, checking both the
+ implementation of the AtkHypertext interface, the subclass of the
+ AtkHyperlink abstract class, and the implementation of the
+ AtkAction interface in that subclass.
+ (main): Added the new unit test.
+
+2010-10-30 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Use new width for height APIs in GTK+ 3.x
+ https://bugs.webkit.org/show_bug.cgi?id=48709
+
+ Use the new width for height APIs in GTK+ 3.x, since size-request
+ is deprecated.
+
+ For now we just return the same value for preferred and minimum
+ width/height, which should match the 2.x behavior. Probably we
+ could do something smarter for the minimum values.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_preferred_width): return our preferred width.
+ (webkit_web_view_get_preferred_height): return our preferred height.
+ (webkit_web_view_class_init): hook the new default handlers.
+
+2010-10-29 Daniel Bates <dbates@rim.com>
+
+ No review, rolling out 70971.
+ http://trac.webkit.org/changeset/70971
+ https://bugs.webkit.org/show_bug.cgi?id=6751
+
+ Rolling out changeset 70971 <http://trac.webkit.org/changeset/70971> since
+ it caused layout test failures on all bots. In particular, the
+ child count in a generated frame name differs after this patch. We need
+ to look into this further.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_name):
+
+2010-10-28 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Ojan Vafai.
+
+ Needs a "LinuxEditingBehavior", perhaps with a better name
+ https://bugs.webkit.org/show_bug.cgi?id=36627
+
+ Added the corresponding GTK+ setting to WebCore's EditingUnixBehavior: WEBKIT_EDITING_BEHAVIOR_UNIX.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ * webkit/webkitwebsettings.h:
+
+2010-10-29 Daniel Bates <dbates@rim.com>
+
+ Reviewed by Adam Barth.
+
+ For unnamed frames, window.name returns a generated name
+ https://bugs.webkit.org/show_bug.cgi?id=6751
+
+ Modified GTK-port to use FrameTree::uniqueName().
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_name):
+
+2010-10-29 Martin Robinson <mrobinson@igalia.com>
+
+ Build fix for GTK+ after BackForwardListImpl introduction.
+
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_new_with_web_view):
+
+2010-10-29 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Change BackForwardList clients to use BackForwardListImpl to prepare for further refactoring
+ https://bugs.webkit.org/show_bug.cgi?id=48574
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_dispose):
+ (webkit_web_back_forward_list_new_with_web_view):
+ (webkit_web_back_forward_list_go_forward):
+ (webkit_web_back_forward_list_go_back):
+ (webkit_web_back_forward_list_contains_item):
+ (webkit_web_back_forward_list_go_to_item):
+ (webkit_web_back_forward_list_get_forward_list_with_limit):
+ (webkit_web_back_forward_list_get_back_list_with_limit):
+ (webkit_web_back_forward_list_get_back_item):
+ (webkit_web_back_forward_list_get_current_item):
+ (webkit_web_back_forward_list_get_forward_item):
+ (webkit_web_back_forward_list_get_nth_item):
+ (webkit_web_back_forward_list_get_back_length):
+ (webkit_web_back_forward_list_get_forward_length):
+ (webkit_web_back_forward_list_get_limit):
+ (webkit_web_back_forward_list_set_limit):
+ (webkit_web_back_forward_list_add_item):
+ (webkit_web_back_forward_list_clear):
+ (WebKit::core):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_maintains_back_forward_list):
+ (webkit_web_view_get_back_forward_list):
+ Use BackForwardListImpl.
+
+2010-10-29 Alexey Proskuryakov <ap@apple.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=48576
+ Let WebKit2 client know when a frame is a frameset
+
+ Added a blank implementation of the new FrameLoaderClient method.
+
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidBecomeFrameset):
+
+2010-10-29 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add the GtkScrollablePolicy property to the webview
+ https://bugs.webkit.org/show_bug.cgi?id=48357
+
+ Added the GtkScrollablePolicy properties to the webview widget, it
+ is now required for GtkScrollable widgets in GTK+ 3.x.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (setHorizontalScrollPolicy): Added.
+ (setVerticalScrollPolicy): Added.
+ (getHorizontalScrollPolicy): Added.
+ (getVerticalScrollPolicy): Added.
+ (webkit_web_view_get_property):
+ (webkit_web_view_set_property):
+ (webkit_web_view_class_init):
+
+2010-10-28 Sergio Villar Senin <svillar@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] WebKitWebFrame's load-status is not properly notified to the tests
+ https://bugs.webkit.org/show_bug.cgi?id=48048
+
+ "frame-created" signal must be issued before loading any data,
+ that way clients can correctly capture all the loading related
+ signals for that frame.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+
+2010-10-27 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ getTextAtOffset returns incorrect results if a link includes text and an image
+ https://bugs.webkit.org/show_bug.cgi?id=47365
+
+ New test to make sure this bug is actually fixed.
+
+ * tests/testatk.c:
+ (testWebkitAtkLinksWithInlineImages): New test.
+ (main): Added new test.
+
+2010-10-26 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Implement DumpRenderTreeSupportGtk (similarly to DumpRenderTreeSupportQt idea)
+ https://bugs.webkit.org/show_bug.cgi?id=48199
+
+ Implemented an initial version of the DumpRenderTreeSupportGtk class.
+ The main idea is that it groups together the bodies of many LayoutTestController
+ methods, so they can directly access WebCore features. This way we eliminate the
+ need of adding APIs to WebKitGTK just to expand its test coverage through DRT.
+
+ The DumpRenderTreeSupportGtk class so far includes a getter and setter for the WebKitTabToLinksPreferenceKey
+ property as a sample implementation. Also it makes it possible to unskip fast/events/tab-focus-anchor.html and
+ to fix stderr messages from all 22 spatial-navigation tests in fast/events/spatial-navigation.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::tabsToLinks):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.cpp: Added.
+ (DumpRenderTreeSupportGtk::DumpRenderTreeSupportGtk):
+ (DumpRenderTreeSupportGtk::~DumpRenderTreeSupportGtk):
+ (DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled):
+ (DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled): Getter to the WebKitTabToLinksPreferenceKey property.
+ (DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain): Setter to the WebKitTabToLinksPreferenceKey property.
+ (DumpRenderTreeSupportGtk::linksIncludedInFocusChain):
+ * WebCoreSupport/DumpRenderTreeSupportGtk.h: Added.
+
+2010-10-26 Jenn Braithwaite <jennb@chromium.org>
+
+ Reviewed by Dmitry Titov.
+
+ Resource tracking failure when trying to move a frame between documents
+ https://bugs.webkit.org/show_bug.cgi?id=44713
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transferLoadingResourceFromPage):
+ Empty method.
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-10-26 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Chris Fleizach.
+
+ [Gtk] Layout tables should indicate that they are not data tables via an object attribute
+ https://bugs.webkit.org/show_bug.cgi?id=35422
+
+ New unit test to check the 'layout-guess' attribute in tables.
+
+ * tests/testatk.c:
+ (atkAttributeSetAttributeNameHasValue): New, looks for a attribute
+ with a specific value, by the name of attribute.
+ (atkAttributeSetContainsAttributeName): New, just checks whether
+ an attribute with a specified name is present in the set.
+ (atkAttributeSetAttributeHasValue): Modified to relay on the new
+ function atkAttributeSetAttributeNameHasValue().
+ (testWebkitAtkLayoutAndDataTables): New test.
+ (main): Added the new test.
+
+2010-10-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Port to new GtkScrollable interface in GTK+ 3.x
+ https://bugs.webkit.org/show_bug.cgi?id=48202
+
+ Use the new GtkScrollable interface when compiling against GTK+
+ 3.x.
+
+ * webkit/webkitwebview.cpp:
+ (setHorizontalAdjustment):
+ (setVerticalAdjustment):
+ (getHorizontalAdjustment):
+ (getVerticalAdjustment):
+ (webkit_web_view_get_property):
+ (webkit_web_view_set_property):
+ (webkit_web_view_class_init):
+
+2010-10-22 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ WebKit2 needs to pass the current event modifier flags when requesting a new window
+ https://bugs.webkit.org/show_bug.cgi?id=48140
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::createWindow):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchCreatePage):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ Add NavigationAction parameter.
+
+2010-10-20 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] use gtk_widget_hide instead of gtk_widget_hide_all in the fullscreen video conroller
+ https://bugs.webkit.org/show_bug.cgi?id=47972
+
+ * WebCoreSupport/FullscreenVideoController.cpp:
+ (FullscreenVideoController::hideHud):
+ (FullscreenVideoController::exitFullscreen):
+
+2010-10-19 Joone Hur <joone@kldp.org>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Needs fixing mistyped comments in the API documentation
+ https://bugs.webkit.org/show_bug.cgi?id=47656
+
+ Fixed mistyped comments in the API documenentation.
+
+ * webkit/webkitwebsettings.cpp: Fixed a mistyped comment in the the section block.
+ * webkit/webkitwebwindowfeatures.cpp: Fixed a mistyped comment in the section block.
+
+2010-10-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ * NEWS: update for 1.3.5 release.
+ * docs/webkitgtk-sections.txt: add new APIs.
+
+2010-10-18 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Simon Fraser.
+
+ Web Inspector: [crash] when Inspector Open in CSSStyleSelector::loadPendingImages().
+ https://bugs.webkit.org/show_bug.cgi?id=46224
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::sendMessageToFrontend):
+
+2010-10-14 Antonio Gomes <agomes@rim.com>
+
+ Reviewed by Martin Robinson and Xan Lopez.
+
+ [Gtk]: DRT does not support frame flattening testing
+ https://bugs.webkit.org/show_bug.cgi?id=38650
+
+ Implement enable-frame-flattening API for Gtk+.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2010-10-15 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Dirk Schulze.
+
+ Replace some String::format() usages by StringConcatenate in WebKit
+ https://bugs.webkit.org/show_bug.cgi?id=47714
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+ * webkit/webkitwebsettings.cpp:
+ (webkitOSVersion):
+ (webkitUserAgent):
+
+2010-10-14 Joone Hur <joone@kldp.org>
+
+ Reviewed by Andreas Kling.
+
+ [GTK] google.co.kr was missed when checking Google domains
+ https://bugs.webkit.org/show_bug.cgi?id=47652
+
+ WebKitGtk+ maintains a list of Google domains for working well with Google sites.
+ Add google.co.kr also to the list to be checked with other Google domains.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::initializeDomainsList): Added google.co.kr.
+
+2010-10-13 Sergio Villar Senin <svillar@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ WebKitGtk+ to use the new API from the imported SoupURILoader code
+
+ [GTK] Add HTTP caching support
+ https://bugs.webkit.org/show_bug.cgi?id=44261
+
+ ResourceHandleInternal m_msg is now called m_soupMessage.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_new_with_handle):
+ (webkit_download_start):
+
+2010-10-13 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Remove more warnings from the g-i scanner run
+ https://bugs.webkit.org/show_bug.cgi?id=47255
+
+ Fixes almost all warnings coming from the g-i scanner.
+
+ * webkit/webkitsecurityorigin.cpp: Rename parameter names in
+ gtk-doc blurb to the actual name of the parameter.
+ * webkit/webkitsoupauthdialog.c: ditto.
+ (webkit_soup_auth_dialog_class_init): Write missing doc for the
+ 'current-toplevel' signal.
+ * webkit/webkitsoupauthdialog.h: Rename signal parameter to its
+ actual name.
+ * webkit/webkitwebdatabase.cpp: Rename parameter names in
+ gtk-doc blurb to the actual name of the parameter.
+ * webkit/webkitwebinspector.cpp: ditto.
+ (webkit_web_inspector_class_init): ditto.
+ * webkit/webkitwebview.cpp: ditto.
+ (webkit_web_view_class_init): ditto.
+ * webkit/webkitwebview.h: Rename the parameter names to be in sync
+ with the ones we use in the function definition.
+
+2010-10-12 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r69589.
+ http://trac.webkit.org/changeset/69589
+ https://bugs.webkit.org/show_bug.cgi?id=47547
+
+ Wrong patch landed from a bug with two patches (Requested by
+ mrobinson on #webkit).
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_new_with_handle):
+ (webkit_download_start):
+
+2010-10-12 Sergio Villar Senin <svillar@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Add HTTP caching support
+ https://bugs.webkit.org/show_bug.cgi?id=44261
+
+ ResourceHandle's m_msg renamed to m_soupMsg and it's also now a PlatformRefPtr
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_new_with_handle):
+ (webkit_download_start):
+
+2010-10-09 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Removed unused callback in webkitwebview
+ https://bugs.webkit.org/show_bug.cgi?id=47092
+
+ In webkit_web_view_forward_context_menu_event() a callback is
+ connected for the destroy signal of the popup menu, however we
+ reuse the same menu always, holding a ref to it, so it's not
+ destroyed when withdrawn by the user.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_forward_context_menu_event):
+
+2010-10-08 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Remove duplicate code in WebKit/gtk/WebCoreSupport/DragClientGtk.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=47367
+
+ Remove as much duplicate code as possible from DragClientGtk. Most of this code
+ is GTK2/GTK3 independent, so only the bits that aren't should be protected by
+ #ifdefs.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::dragIconWindowDrawEventCallback): Modified the name of this callback
+ so that it is shared between build types.
+ (WebKit::DragClient::DragClient): Updated the signal connectors to reflect the change above.
+ (WebKit::DragClient::~DragClient): The build types share the callback name, so remove
+ the #ifdef here.
+ (WebKit::DragClient::drawDragIconWindow): Changed the name of this method and make it
+ independent of the build type.
+ * WebCoreSupport/DragClientGtk.h: Update method declaration and remove #ifdefs.
+
+2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Use draw instead of expose_event in WebView when building with gtk3
+ https://bugs.webkit.org/show_bug.cgi?id=47338
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_expose_event):
+ (webkit_web_view_draw):
+ (webkit_web_view_class_init):
+
+2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Don't use GtkObject
+ https://bugs.webkit.org/show_bug.cgi?id=47090
+
+ GtkObject has been removed in gtk3.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::generateEditorCommands):
+ * WebCoreSupport/FullscreenVideoController.cpp:
+ (FullscreenVideoController::createHud):
+
+2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Fix the build for GTK+ 3
+ https://bugs.webkit.org/show_bug.cgi?id=47249
+
+ Use GdkVisual instead of GdkColormap. GdkColormap has been removed
+ in gtk3
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_realize):
+
+2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Fix the build for GTK+ 3
+ https://bugs.webkit.org/show_bug.cgi?id=47249
+
+ Do not use GdkDrawable deprecated API. Some methods of GdkDrawable
+ are deprecated in gtk2 and have been removed in gtk3. Equivalent
+ API has been added to GdkWindow.
+
+ * tests/testcopyandpaste.c:
+ (runPasteTestCallback):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_button_press_event):
+
+2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Use draw signal instead of expose_event in DragClientGtk when building with gtk3
+ https://bugs.webkit.org/show_bug.cgi?id=47326
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::dragIconWindowDrawCallback):
+ (WebKit::DragClient::DragClient):
+ (WebKit::DragClient::~DragClient):
+ (WebKit::DragClient::startDrag):
+ (WebKit::DragClient::dragIconWindowDraw):
+ * WebCoreSupport/DragClientGtk.h:
+
+2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Fix the build for GTK+ 3
+ https://bugs.webkit.org/show_bug.cgi?id=47249
+
+ Don't use gtk_size_request_get_size(). It has been removed,
+ gtk_widget_get_preferred_size() should be used instead
+
+ * webkit/webkitwebview.cpp:
+ (PopupMenuPositionFunc):
+
+2010-10-06 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r69201.
+ http://trac.webkit.org/changeset/69201
+ https://bugs.webkit.org/show_bug.cgi?id=47279
+
+ This change broke the WebKitGTK+ build for GTK+ 2.0.
+ (Requested by mrobinson on #webkit).
+
+ * tests/testcopyandpaste.c:
+ (runPasteTestCallback):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_button_press_event):
+
+2010-10-06 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Port to gtk+3 (2.91.0)
+ https://bugs.webkit.org/show_bug.cgi?id=47249
+
+ Do not use GdkDrawable deprecated API
+
+ Some methods of GdkDrawable are deprecated in gtk2 and have been
+ remmoved in gtk3. Equivalent API has been added to GdkWindow.
+
+ * tests/testcopyandpaste.c:
+ (runPasteTestCallback):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_button_press_event):
+
+2010-09-28 Jenn Braithwaite <jennb@chromium.org>
+
+ Reviewed by Dmitry Titov.
+
+ Added oldPage param to FrameLoaderClient::didTransferChildFrameToNewDocument.
+ https://bugs.webkit.org/show_bug.cgi?id=46663
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didTransferChildFrameToNewDocument):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-09-27 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Chris Fleizach.
+
+ [Gtk] Adjust atk_text_get_text_at_offset to account for bullets/numbers in list items
+ https://bugs.webkit.org/show_bug.cgi?id=45381
+
+ Updated test to match the new exposure of list item markers.
+
+ Also, added some extra assertions in that test to make sure the
+ accessible objects associated to the items implement AtkText.
+
+ * tests/testatk.c:
+ (testWebkitAtkListsOfItems):
+ (main):
+
+2010-09-27 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Doesn't build with gtk+ 2.14
+ https://bugs.webkit.org/show_bug.cgi?id=46565
+
+ Fixed the build for GTK+ 2.14. Don't use gdk_window_get_cursor()
+ for that GTK+ version as I found no acceptable way to work-around
+ its absence.
+
+ * WebCoreSupport/FullscreenVideoController.cpp:
+ (FullscreenVideoController::showHud):
+ (FullscreenVideoController::hideHud):
+ (FullscreenVideoController::enterFullscreen):
+
+2010-09-26 Jenn Braithwaite <jennb@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ GTK client needs updating when live iframe element is moved
+ between pages.
+ https://bugs.webkit.org/show_bug.cgi?id=46300
+
+ Test: fast/frames/iframe-reparenting-adopt-node.html
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didTransferChildFrameToNewDocument):
+ Update the webView for the frame to match the parent frame's
+ webView.
+
+2010-09-24 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] opening local files on win32
+ https://bugs.webkit.org/show_bug.cgi?id=31066
+
+ Add tests that check the mime type returned by local files loaded via file URLs.
+
+ * tests/testmimehandling.c:
+ (testRemoteMimeType): Added.
+ (testLocalMimeType): Added.
+ (main): Run tests by using g_test_add_data_func with either
+ testRemoteMimeType or testLocalMimeType.
+
+2010-09-23 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Nate Chapin.
+
+ [GTK] Some tests from r68174 fail on the GTK+ bots
+ https://bugs.webkit.org/show_bug.cgi?id=46396
+
+ Fix since version number in this new WebKitWebSettings property.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init): Fix the since version number.
+
+2010-09-23 Nate Chapin <japhet@chromium.org>
+
+ Unreviewed, build fix.
+
+ Add a missing comma in webkitwebsettings.cpp.
+
+ * webkit/webkitwebsettings.cpp:
+
+2010-09-23 Nate Chapin <japhet@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Add hyperlink auditing settings (i.e., <a ping>).
+ https://bugs.webkit.org/show_bug.cgi?id=30458
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2010-09-22 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Replace instances of g_timeout_add() with g_idle_add() in testatk.c
+ https://bugs.webkit.org/show_bug.cgi?id=46284
+
+ Use g_idle_add() whenever g_timeout_add() was being used.
+
+ This is desired because it's better to rely on the main loop to
+ decide when it's a good moment to execute the task (when idle)
+ than manually setting a timeout, which also sets a minimum amount
+ of time needed to get the function executed.
+
+ * tests/testatk.c:
+ (testWekitAtkTextSelections):
+ (testWebkitAtkGetExtents):
+ (testWebkitAtkListsOfItems):
+ (main):
+
+2010-09-22 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] object:text-changed events should be emitted for entries and password text
+ https://bugs.webkit.org/show_bug.cgi?id=25898
+
+ New unit test to make sure text-changed signals are emitted
+
+ * tests/testatk.c:
+ (textChangedCb): New. Signal handler for the
+ text-changed::insert and text-changed::delete signals.
+ (checkTextChangesAndBailOut): New. Source function to check
+ the global result of the test and quit from the main loop.
+ (testWebkitAtkTextChangedNotifications): New test.
+ (main):
+
+2010-09-22 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Added information about drop shadow improvements to the NEWS file.
+
+ * NEWS: Added information about drop shadow improvements.
+
+2010-09-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Fix transfer annotations for WebKitGTK+ static API
+ https://bugs.webkit.org/show_bug.cgi?id=46244
+
+ Deal with all the warnings related to transfer issues. Mostly the
+ problem was the transfer being missing, but there were also typos
+ in the function name or missing ':' at the end of the function
+ name in the gtk-doc.
+
+ * webkit/webkitdownload.cpp:
+ * webkit/webkitnetworkrequest.cpp:
+ * webkit/webkitnetworkresponse.cpp:
+ * webkit/webkitsecurityorigin.cpp:
+ * webkit/webkitwebdatabase.cpp:
+ * webkit/webkitwebdatasource.cpp:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebinspector.cpp:
+ * webkit/webkitwebresource.cpp:
+ * webkit/webkitwebsettings.cpp:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+ (webkit_web_view_get_main_frame):
+
+2010-09-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for 1.3.4 release.
+
+ * NEWS:
+
+2010-09-17 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ REGRESSION (r60104): Zoom level is unexpectedly reset on page reload
+ https://bugs.webkit.org/show_bug.cgi?id=42863
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_zoom_level):
+ (webkit_web_view_apply_zoom_level):
+ (webkit_web_view_set_full_content_zoom):
+ Call functions on Frame instead of FrameView.
+
+2010-09-16 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Implement dissolveDragImageToFraction
+ https://bugs.webkit.org/show_bug.cgi?id=45826
+
+ To support full alpha in the drag icon, changed the drag icon to be a
+ GtkWindow with an RGBA colormap. Added logic to support painting the drag
+ image to this window during the expose event.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::dragIconWindowExposeEventCallback): Added.
+ (WebKit::DragClient::DragClient): Initialize the new drag icon window.
+ (WebKit::DragClient::~DragClient): Disconnect the expose event signal.
+ (WebKit::DragClient::startDrag): Resize the drag icon window the appropriate size and
+ if necessary, set its colormap.
+ (WebKit::DragClient::dragIconWindowExposeEvent): Added.
+ * WebCoreSupport/DragClientGtk.h: Added new member and method declarations.
+
+2010-09-14 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Eric Carlson and Martin Robinson.
+
+ [GTK] eventSender.contextClick() should return the contents of the context menu
+ https://bugs.webkit.org/show_bug.cgi?id=39102
+
+ New private WebView API to retrieve the context-menu widget. This
+ is used by DRT only.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_context_menu):
+
+2010-09-16 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ GTK+ 3.x. updates, gtk_widget_size_request is deprecated and
+ "activate-slider" style property for scrollbars is gone.
+
+ * webkit/webkitwebview.cpp:
+ (PopupMenuPositionFunc):
+
+2010-09-15 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by David Levin.
+
+ [GTK] [REGRESSION] r67591 broke the testwebbackforwardlist API test and introduced a memory leak
+ https://bugs.webkit.org/show_bug.cgi?id=45865
+
+ When initializing the backForwardList private member of the WebView, do
+ so with adoptPlatformRef to prevent a memory leak.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init): Initialize member with adoptPlatformRef.
+
+2010-09-15 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ [Gtk] Use GOwnPtr for code that needs it
+ https://bugs.webkit.org/show_bug.cgi?id=21594
+
+ Convert as reference counted private members of WebKitWebView to
+ smart pointers as possible. This removes a lot of unecessary manual
+ memory management. Also convert some pointer members away from pointer
+ types, now that we are sure their destructors are called.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::inputMethodsMenuItem): Updated to reflect PlatformRefPtr changes.
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag): Ditto.
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::setInputMethodState): Ditto.
+ (WebKit::EditorClient::respondToChangedSelection): Ditto.
+ (WebKit::EditorClient::handleInputMethodKeydown): Ditto.
+ (WebKit::EditorClient::handleInputMethodMousePress): Ditto.
+ (WebKit::EditorClient::EditorClient): Ditto.
+ (WebKit::EditorClient::~EditorClient): Ditto.
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::postCommitFrameViewSetup): Ditto.
+ * webkit/webkitprivate.h: Ditto.
+ * webkit/webkitwebview.cpp: Ditto.
+ (destroy_menu_cb): Ditto.
+ (webkit_web_view_forward_context_menu_event): Ditto.
+ (webkit_web_view_key_release_event): Ditto.
+ (webkit_web_view_button_press_event): Ditto.
+ (webkit_web_view_button_release_event): Ditto.
+ (webkit_web_view_focus_in_event): Ditto.
+ (webkit_web_view_focus_out_event): Ditto.
+ (webkit_web_view_realize): Ditto.
+ (webkit_web_view_set_scroll_adjustments): Ditto.
+ (webkit_web_view_dispose): Changed all g_object_unref calls to
+ PlatformRefPtr.clear(). Although this will also be done by the manual
+ call to the WebKitWebViewPrivate destructor, the order that these
+ fields are zero'd in is still very sensitive.
+ (webkit_web_view_finalize): Updated to reflect PlatformRefPtr changes.
+ (webViewGetDPI): Ditto.
+ (webkit_web_view_screen_changed): Ditto.
+ (webkit_web_view_drag_end): Ditto.
+ (webkit_web_view_drag_data_get): Ditto.
+ (doDragLeaveLater): Ditto.
+ (webkit_web_view_drag_leave): Ditto.
+ (webkit_web_view_drag_motion): Ditto.
+ (webkit_web_view_drag_data_received): Ditto.
+ (webkit_web_view_drag_drop): Ditto.
+ (webkit_web_view_get_im_context): Ditto.
+ (webkit_web_view_update_settings): Ditto.
+ (webkit_web_view_init): Ditto.
+ (webkit_web_view_set_settings): Ditto.
+ (webkit_web_view_get_settings): Ditto.
+ (webkit_web_view_get_inspector): Ditto.
+ (webkit_web_view_set_window_features): Ditto.
+ (webkit_web_view_get_window_features): Ditto.
+ (webkit_web_view_get_back_forward_list): Ditto.
+ (webkit_web_view_zoom_in): Ditto.
+ (webkit_web_view_zoom_out): Ditto.
+ (webkit_web_view_add_resource): Ditto.
+ (webkit_web_view_get_resource): Ditto.
+ (webkit_web_view_get_main_resource): Ditto.
+ (webkit_web_view_clear_resources): Ditto.
+ (webkit_web_view_get_subresources): Ditto.
+
+2010-09-14 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] fast/events/keydown-numpad-keys.html produces many GLib warnings
+ https://bugs.webkit.org/show_bug.cgi?id=45775
+
+ Handle the toggle-overwrite signal on the GtkTextView used for generating editing
+ commands. Ignore this signals, as the default handler assumes that the GtkTextView
+ has a layout and this one does not.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::toggleOverwriteCallback): Added. Cancels the default handler.
+ (WebKit::EditorClient::EditorClient): Attach a handler for toggle-overwrite.
+
+2010-09-14 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: Provide network-based load timing.
+ Before this change, inspector used timers taken from
+ within WebCore notifications (that are by definition
+ synchronous and serialized). As a result, timing was
+ affected by the routines running on the main thread
+ (JavaScript and such).
+ https://bugs.webkit.org/show_bug.cgi?id=45664
+
+ * webkit/webkitdownload.cpp:
+ (DownloadClient::didFinishLoading):
+
+2010-09-15 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r67551.
+ http://trac.webkit.org/changeset/67551
+ https://bugs.webkit.org/show_bug.cgi?id=45816
+
+ "Plugin tests fail" (Requested by yurys on #webkit).
+
+ * webkit/webkitdownload.cpp:
+ (DownloadClient::didFinishLoading):
+
+2010-09-14 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: Provide network-based load timing.
+ Before this change, inspector used timers taken from
+ within WebCore notifications (that are by definition
+ synchronous and serialized). As a result, timing was
+ affected by the routines running on the main thread
+ (JavaScript and such).
+ https://bugs.webkit.org/show_bug.cgi?id=45664
+
+ * webkit/webkitdownload.cpp:
+ (DownloadClient::didFinishLoading):
+
+2010-09-13 Enrica Casucci <enrica@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Paste should be implemented in WebCore like Copy and Cut for Mac also.
+ https://bugs.webkit.org/show_bug.cgi?id=45494
+ <rdar://problem/7660537>
+
+ On the Mac platform, the implementation of the paste operation is all done
+ at the WebKit level. In order to support it on WebKit2 it is necessary to
+ refactor the code and move this functionality at the level of WebCore like
+ we already have on Windows.
+ The original code relies on some in AppKit functions that call back into
+ WebKit causing problems in WebKit2. All this functionality has been moved
+ at the level of the editor client where it can be dealt with appropriately.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::canShowMIMETypeAsHTML): Added stub.
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-09-13 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Provide unit tests for AtkText's text selection functions
+ https://bugs.webkit.org/show_bug.cgi?id=43919
+
+ New tests to check getting, setting and removing text selections
+
+ * tests/testatk.c:
+ (testWekitAtkTextSelections): New unit tests to check all the text
+ selection related functions altogether through a single test
+ function.
+ (main):
+
+ Make sure that code dependant on getting information from the
+ clipboard gets executed only when there's a GDK window associated
+ to the webview widget, as that's not the case when executing the
+ unit tests (the wedbview is not inside of any toplevel window) and
+ will make the tests crash if not taken into account.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::respondToChangedSelection):
+
+2010-09-11 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Make introspection work with g-o-i 0.9.5
+ https://bugs.webkit.org/show_bug.cgi?id=45590
+
+ Use new type syntax and bump version number of the gir file.
+
+ * JSCore.gir.in:
+
+2010-09-10 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
+
+ Reviewed by Darin Adler.
+
+ Add NetworkingContext to avoid layer violations
+ https://bugs.webkit.org/show_bug.cgi?id=42292
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_start):
+ * webkit/webkitprivate.cpp:
+ (currentToplevelCallback):
+
+2010-09-10 Sam Weinig <sam@webkit.org>
+
+ Fix GTK build.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_full_content_zoom):
+
+2010-09-10 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
+ Precursor to <rdar://problem/7660657>
+ https://bugs.webkit.org/show_bug.cgi?id=45522
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_zoom_level):
+ (webkit_web_view_apply_zoom_level):
+ (webkit_web_view_set_full_content_zoom):
+
+2010-09-10 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Fix warnings because of bad assignments in testatk.c
+ https://bugs.webkit.org/show_bug.cgi?id=45538
+
+ Use AtkObject and AtkText instances properly in the code.
+
+ * tests/testatk.c:
+ (testWebkitAtkListsOfItems):
+
+2010-09-10 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Darin Fisher.
+
+ Move code from WebKit-layer to DocumentLoader
+ https://bugs.webkit.org/show_bug.cgi?id=45569
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+
+2010-09-10 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Main resource bytes shouldn't bounce through FrameLoader
+ https://bugs.webkit.org/show_bug.cgi?id=45496
+
+ Now return the bytes to the DocumentLoader.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+
+2010-09-10 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Placement new / manual destructor invocation should be used on private GObject memory
+ https://bugs.webkit.org/show_bug.cgi?id=45550
+
+ GLib allocates and deallocates GObject private data structs itself. When
+ those structs contain C++ members, their constructors and destructors are not
+ called. This is not only dangerous, it makes RefPtr-type smart pointers much
+ less useful. We can fix this problem by calling placement new on the private
+ data struct during instance initialization and calling the destructor during
+ finalization.
+
+ This patch takes that approach and switches plain char* members of
+ WebKitWebView (with manual memory allocation) to use CString.
+
+ * webkit/webkitprivate.h: Switch char* members to CString.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_finalize): Manually call the destructor on the private
+ data. Remove manual deallocation of members which are now CString.
+ (webkit_web_view_query_tooltip): Update to reflect CString change.
+ (webkit_web_view_init): Use placement new to initialize C++ members of
+ the private data section.
+ (webkit_web_view_get_encoding): Update to reflect CString change.
+ (webkit_web_view_get_custom_encoding): Ditto.
+ (webkit_web_view_add_resource): Ditto.
+ (webkit_web_view_get_resource): Ditto.
+ (webkit_web_view_clear_resources): Ditto.
+ (webkit_web_view_set_tooltip_text): Ditto.
+ (webkit_web_view_get_icon_uri): Ditto.
+
+2010-09-10 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Google sites do not like WebKitGTK+
+ https://bugs.webkit.org/show_bug.cgi?id=39617
+
+ Special-case Google domains, and spoof User-Agent when talking to
+ them, to stop being treated as a second-class citizen.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::initializeDomainsList):
+ (WebKit::isGoogleDomain):
+ (WebKit::FrameLoaderClient::userAgent): If enable-site-specific-quirks
+ is enabled, send the standard WebKit User-Agent string, disregarding the
+ custom one set by the browser for Google domains.
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebsettings.cpp:
+ (webkitPlatform): Fix style, and simplify.
+ (webkitOSVersion): Ditto.
+ (webkitUserAgent): Add the Version/x.y string Safari has been
+ using since Safari 2.2.
+
+2010-09-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Fix compilation with GTK+ 3.x.
+
+ GDK key macros were renamed from GDK_FOO to GDK_KEY_FOO, we need
+ to include the compat header provided if we want to keep using the
+ old names.
+
+ * WebCoreSupport/FullscreenVideoController.cpp: include GtkVersioning.h
+
+2010-09-08 Darin Adler <darin@apple.com>
+
+ Reviewed by Adam Barth.
+
+ Move functions from Frame to Editor as planned
+ https://bugs.webkit.org/show_bug.cgi?id=45218
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_highlight_text_matches):
+ (webkit_web_view_get_selected_text):
+ (webkit_web_view_set_editable):
+ Changed call sites to use editor().
+
+2010-09-09 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] testmimehandling falsely succeeds testing Ogg mime type
+ https://bugs.webkit.org/show_bug.cgi?id=45349
+
+ Make this actually test an ogg file request instead of pdf and
+ changed the expected result to match libsoup content-sniffing
+ result in the case of ogg/vorbis file.
+
+ * tests/testmimehandling.c:
+ (mime_type_policy_decision_requested_cb):
+ (test_mime_ogg):
+
+2010-09-08 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] A list item's number/bullet should not be a child of that list item
+ https://bugs.webkit.org/show_bug.cgi?id=45190
+
+ New unit test added.
+
+ * tests/testatk.c:
+ (testWebkitAtkListsOfItems): New test to check ordered/unordered
+ list of items are properly exposed to AT technologies.
+ (main):
+
+2010-09-07 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Fix some feature guards
+ https://bugs.webkit.org/show_bug.cgi?id=45302
+
+ * webkit/webkitprivate.h: Add ENABLE(VIDEO) guards for video specific members.
+
+2010-09-03 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
+
+ Reviewed by Darin Adler.
+
+ Add NetworkingContext to avoid layer violations
+ https://bugs.webkit.org/show_bug.cgi?id=42292
+
+ Add GTK's specific implementation of FrameNetworkingContext.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createNetworkingContext):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-09-03 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Dialog separators are gone in GTK+ 3.x.
+
+ * webkit/webkitsoupauthdialog.c:
+ (show_auth_dialog):
+
+2010-09-02 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector
+ https://bugs.webkit.org/show_bug.cgi?id=44230
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::notifyWebViewDestroyed):
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+ (WebKit::InspectorFrontendClient::closeWindow):
+ (WebKit::InspectorFrontendClient::disconnectFromBackend):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-08-31 Dave Hyatt <hyatt@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=44863, disentangle style recalc from layout, so that
+ the former can occur in more places without having to do the latter.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_expose_event):
+
+2010-08-31 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Isolate all GTK+ typedefs into one file
+ https://bugs.webkit.org/show_bug.cgi?id=44900
+
+ * WebCoreSupport/EditorClientGtk.h: Remove GTK+ typedefs.
+ * WebCoreSupport/FullscreenVideoController.h: Ditto.
+
+2010-08-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ Preparations for the 1.3.4 release.
+
+ * NEWS:
+ * docs/webkitgtk-docs.sgml:
+
+2010-08-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Minor documentation typo fix.
+
+ * webkit/webkitwebview.cpp:
+
+2010-08-30 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ [Gtk] gdk_display_get_core_pointer and gdk_device_get_core_pointer
+ are deprecated
+ https://bugs.webkit.org/show_bug.cgi?id=44787
+
+ We have replaced GtkVersioning.cpp with GtkVersioning.c and
+ created a function (getDefaultGDKPointerDevice) to get the pointer
+ of the window with the new APIs. We added that function to DRT and
+ copyandpaste unit test.
+
+ * tests/testcopyandpaste.c:
+ (runPasteTestCallback):
+
+2010-08-30 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r66198.
+ http://trac.webkit.org/changeset/66198
+ https://bugs.webkit.org/show_bug.cgi?id=44856
+
+ It made tests crash on Qt bot (Requested by Ossy_ on #webkit).
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::notifyWebViewDestroyed):
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+ (WebKit::InspectorFrontendClient::closeWindow):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-08-27 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector
+ https://bugs.webkit.org/show_bug.cgi?id=44230
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::notifyWebViewDestroyed):
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+ (WebKit::InspectorFrontendClient::closeWindow):
+ (WebKit::InspectorFrontendClient::disconnectFromBackend):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-08-26 Yury Semikhatsky <yurys@chromium.org>
+
+ Unreviewed. Revert r66103 since Qt tests are failing.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::notifyWebViewDestroyed):
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+ (WebKit::InspectorFrontendClient::closeWindow):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-08-26 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ REGRESSION: Crash occurs at objc_msgSend when closing a window that is displaying the web inspector
+ https://bugs.webkit.org/show_bug.cgi?id=44230
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::notifyWebViewDestroyed):
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+ (WebKit::InspectorFrontendClient::closeWindow):
+ (WebKit::InspectorFrontendClient::disconnectFromBackend):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-08-26 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] WebKitGTK+ needs proper introspection annotation for most types and methods
+ https://bugs.webkit.org/show_bug.cgi?id=44565
+
+ Add documentation and introspection specific information to a few
+ getter and setter methods.
+
+ * webkit/webkitwebview.cpp:
+
+2010-08-25 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ confirm dialog should show OK/Cancel instead of Yes/No for consistency
+ https://bugs.webkit.org/show_bug.cgi?id=32877
+
+ Change the button labels for the fallback confirmation dialog to be
+ OK and Cancel.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_script_dialog):
+
+2010-08-25 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Cairo and EFL port shouldn't depend on glib.
+ https://bugs.webkit.org/show_bug.cgi?id=44354
+
+ Replace occurrences of GRefPtr and adoptGRef with PlatformRefPtr and
+ adoptPlatformRef.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::requestGeolocationPermissionForFrame):
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag):
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchWillSendRequest):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType):
+ (WebKit::FrameLoaderClient::createPlugin):
+ * WebCoreSupport/FullscreenVideoController.h:
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::populateSetting):
+ (WebKit::InspectorClient::storeSetting):
+ * webkit/webkitdownload.cpp:
+ (webkit_download_error):
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_new_with_core_request):
+ * webkit/webkitnetworkresponse.cpp:
+ (webkit_network_response_new_with_core_response):
+
+2010-08-24 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Martin Robinson.
+
+ Set a device to the event struct when building with GTK+ 3.x, it's
+ mandatory.
+
+ * tests/testcopyandpaste.c:
+ (runPasteTestCallback):
+
+2010-08-24 Martin Robinson <mrobinson@igalia.com>
+
+ Build fix for GTK+.
+
+ * tests/testkeyevents.c:
+ (key_press_event_cb):
+ (key_release_event_cb):
+
+2010-08-24 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
+ https://bugs.webkit.org/show_bug.cgi?id=44534
+
+ Fix an issue where a GdkEvent* is treated like a GdkEvent.
+
+ * tests/testkeyevents.c:
+ (key_press_event_cb):
+ (key_release_event_cb):
+
+2010-08-24 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
+ https://bugs.webkit.org/show_bug.cgi?id=44534
+
+ * tests/testcopyandpaste.c:
+ (runPasteTestCallback): Switch to using gdk_event_new and also reference the GdkWindow.
+ when setting it on the event. It is dereferenced by gdk_event_free(...).
+ * tests/testhittestresult.c:
+ (load_status_cb): Switch to using gdk_event_new.
+
+2010-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Do not initialize the GSettings object in webkit_init - the other
+ call sites are always called in the main thread so this is
+ unnecessary.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+
+2010-08-20 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Pavel Feldman.
+
+ Web Inspector: Inspector tests were disabled for GTK.
+ https://bugs.webkit.org/show_bug.cgi?id=43977
+
+ Allow setting the inspector resources path via an environment variables
+ and add a method, inspectorFilesPath, to the WebKit InspectorClient that
+ encapsulates this logic.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend): Use the new inspectorFilesPath method to
+ get the path to the resource.
+ (WebKit::InspectorClient::inspectorFilesPath): Added.
+ (WebKit::InspectorFrontendClient::localizedStringsURL): Use inspectorFilesPath method.
+ * WebCoreSupport/InspectorClientGtk.h: Add method and member variables for caching the result.
+
+2010-08-19 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ [Gtk] Enable view mode media feature layout test
+ https://bugs.webkit.org/show_bug.cgi?id=43278
+
+ Add the view-mode property, to control the WebCore page's viewMode.
+
+ * docs/webkitgtk-sections.txt:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_property):
+ (webkit_web_view_set_property):
+ (webkit_web_view_class_init):
+ (webkit_web_view_set_view_mode):
+ (webkit_web_view_get_view_mode):
+ * webkit/webkitwebview.h:
+
+2010-08-19 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GStreamer] GTK XOverlay support in GStreamerGWorld
+ https://bugs.webkit.org/show_bug.cgi?id=39474
+
+ New FullscreenVideoController object, private in the webview. It
+ is created when the user presses the fullscreen button of the
+ video controls. Video is displayed in fullscreen, controls are
+ displayed when the user moves the mouse and when the video is
+ paused. There's also basic keyboard shortcuts support: F/f to
+ leave fullscreen, space to toggle play/pause and up/down to
+ control volume.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::supportsFullscreenForNode):
+ (WebKit::ChromeClient::enterFullscreenForNode):
+ (WebKit::ChromeClient::exitFullscreenForNode):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * WebCoreSupport/FullscreenVideoController.cpp: Added.
+ (hideHudCallback):
+ (onFullscreenGtkMotionNotifyEvent):
+ (onFullscreenGtkActiveNotification):
+ (onFullscreenGtkConfigureEvent):
+ (onFullscreenGtkDestroy):
+ (togglePlayPauseActivated):
+ (exitFullscreenActivated):
+ (progressBarUpdateCallback):
+ (timeScaleButtonPressed):
+ (timeScaleButtonReleased):
+ (timeScaleValueChanged):
+ (volumeValueChanged):
+ (playerVolumeChangedCallback):
+ (playerMuteChangedCallback):
+ (FullscreenVideoController::FullscreenVideoController):
+ (FullscreenVideoController::~FullscreenVideoController):
+ (FullscreenVideoController::setMediaElement):
+ (FullscreenVideoController::gtkConfigure):
+ (FullscreenVideoController::showHud):
+ (FullscreenVideoController::hideHud):
+ (onFullscreenGtkKeyPressEvent):
+ (FullscreenVideoController::enterFullscreen):
+ (FullscreenVideoController::updateHudPosition):
+ (FullscreenVideoController::exitOnUserRequest):
+ (FullscreenVideoController::exitFullscreen):
+ (FullscreenVideoController::canPlay):
+ (FullscreenVideoController::play):
+ (FullscreenVideoController::pause):
+ (FullscreenVideoController::playStateChanged):
+ (FullscreenVideoController::togglePlay):
+ (FullscreenVideoController::volume):
+ (FullscreenVideoController::muted):
+ (FullscreenVideoController::setVolume):
+ (FullscreenVideoController::volumeChanged):
+ (FullscreenVideoController::muteChanged):
+ (FullscreenVideoController::currentTime):
+ (FullscreenVideoController::setCurrentTime):
+ (FullscreenVideoController::duration):
+ (FullscreenVideoController::percentLoaded):
+ (FullscreenVideoController::beginSeek):
+ (FullscreenVideoController::doSeek):
+ (FullscreenVideoController::endSeek):
+ (timeToString):
+ (FullscreenVideoController::updateHudProgressBar):
+ (FullscreenVideoController::createHud):
+ * WebCoreSupport/FullscreenVideoController.h: Added.
+ (FullscreenVideoController::mediaElement):
+ * webkit/webkitprivate.cpp:
+ (webkit_web_view_enter_fullscreen):
+ (webkit_web_view_exit_fullscreen):
+ * webkit/webkitprivate.h:
+
+2010-08-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] WebBackForwardList's new_with_web_view should not be public
+ https://bugs.webkit.org/show_bug.cgi?id=43802
+
+ Deprecate the constructor. The introspection annotation has been
+ fixed in a previous commit.
+
+ * webkit/webkitwebbackforwardlist.cpp:
+
+2010-08-17 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: replace hand written InspectorBackendStub.js with generated one.
+ https://bugs.webkit.org/show_bug.cgi?id=43791
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+
+2010-08-18 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r65595.
+ http://trac.webkit.org/changeset/65595
+ https://bugs.webkit.org/show_bug.cgi?id=44161
+
+ qt build failed (Requested by loislo on #webkit).
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+
+2010-08-17 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: replace hand written InspectorBackendStub.js by generated one.
+ https://bugs.webkit.org/show_bug.cgi?id=43791
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+
+2010-08-17 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix the builds when HAVE_GSETTINGS is defined.
+
+ * webkit/webkitprivate.cpp:
+ (isSchemaAvailable):
+ (inspectorGSettings):
+
+2010-08-17 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
+
+ Reviewed by Darin Adler.
+
+ Add NetworkingContext to avoid layer violations
+ https://bugs.webkit.org/show_bug.cgi?id=42292
+
+ Preparation: Just add the files to the build system.
+
+ * WebCoreSupport/FrameNetworkingContextGtk.h: Added.
+ Placeholder with tentative code that might be changed when landing
+ the rest of it.
+
+2010-08-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ WebBackForwardList.get_{back|forward}_list_with_limit not introspectable
+ https://bugs.webkit.org/show_bug.cgi?id=43054
+
+ Annotate WebKitWebBackForwardList and the function that is used to fetch it from
+ the WebKitWebView. More will follow.
+
+ * webkit/webkitwebbackforwardlist.cpp: Annotations, and small
+ improvements to the docs.
+ * webkit/webkitwebbackforwardlist.h: Couple empty lines missing.
+ * webkit/webkitwebview.cpp:
+
+2010-08-17 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Clean up WebCore/platform/graphics/gtk/ImageGtk.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=44069
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend): Switched to using the new WEBKITGTK_API_VERSION_STRING define.
+ * webkit/webkitprivate.cpp:
+ (inspectorGSettings): Ditto.
+
+2010-08-17 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r65500.
+ http://trac.webkit.org/changeset/65500
+ https://bugs.webkit.org/show_bug.cgi?id=44108
+
+ Qt bots failed to compile. (Requested by loislo on #webkit).
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+
+2010-08-17 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Web Inspector: replace hand written InspectorBackendStub.js by generated one.
+ https://bugs.webkit.org/show_bug.cgi?id=43791
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+
+2010-08-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] GSettings support adds annoying warnings on systems with older glib versions
+ https://bugs.webkit.org/show_bug.cgi?id=44056
+
+ Use #ifdef instead of #if for HAVE_GSETTINGS to avoid warnings
+ when it is not defined.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+ * webkit/webkitprivate.h:
+
+2010-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Really add a missing file. I wish I would remember running git add
+ on them after applying a patch =(.
+
+ * org.webkitgtk.gschema.xml.in: Added.
+
+2010-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Use GSettings to save/restore Web Inspector settings
+ https://bugs.webkit.org/show_bug.cgi?id=43512
+
+ Use GSettings to save/restore settings used by the Web Inspector.
+ A few helper functions were added to have settings that use
+ boolean values be actual booleans, and also to conform with the
+ GSettings naming requirements for keys.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::toGSettingName):
+ (WebKit::truthStringFromVariant):
+ (WebKit::variantFromTruthString):
+ (WebKit::InspectorClient::populateSetting):
+ (WebKit::InspectorClient::storeSetting):
+ * org.webkit.gtk.gschema.xml: Added.
+ * webkit/webkitprivate.cpp:
+ (inspectorGSettings):
+ (webkit_init):
+ * webkit/webkitprivate.h:
+
+2010-08-11 Joone Hur <joone@kldp.org>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Last Hangul letter is typed again when a composition is finished with mouse press
+ https://bugs.webkit.org/show_bug.cgi?id=40518
+
+ When a mouse press fires during a IME composition, the current composition character
+ can be entered twice at the previous editing position and a new editing position.
+ Because the IME commit signal is emitted after the mouse press event.
+ This patch allows to prevent the commit signal during a composition when a mouse press fires.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+ (WebKit::EditorClient::handleInputMethodKeydown): Allow to accept the next composition commit.
+ (WebKit::EditorClient::handleInputMethodMousePress): Added for handling IME when a mouse press fires.
+ (WebKit::EditorClient::EditorClient): Initialize m_preventNextCompositionCommit
+ * WebCoreSupport/EditorClientGtk.h:
+ (WebKit::EditorClient::preventNextCompositionCommit): Added for checking whether skipping a commit.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_button_press_event): Call handleInputMethodMousePress()
+
+2010-08-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ Small improvement to the documentation of the geolocation-policy-decision-requested
+ signal, stating more clearly what is expected from the handler.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2010-08-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ [GTK] Geolocation policy decision object leaking
+ https://bugs.webkit.org/show_bug.cgi?id=43884
+
+ Use GRefPtr on the policy decision object to fix the leak.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::requestGeolocationPermissionForFrame):
+
+2010-08-10 Chris Marrin <cmarrin@apple.com>
+
+ Reviewed by Oliver Hunt.
+
+ Add suspendAnimations/resumeAnimation API to DRT
+ https://bugs.webkit.org/show_bug.cgi?id=43733
+
+ Gtk specific API.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_suspend_animations):
+ (webkit_web_frame_resume_animations):
+
+2010-08-10 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Sam Weinig.
+
+ Bug 43786 - Move AtomicStringHash from WebCore to WTF
+ Also remove deprecated string headers from WebCore/platform/text.
+
+ * gdom/ConvertToGCharPrivate.h:
+
+2010-08-06 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Sam Weinig
+
+ Bug 43594 - Add string forwards to Forward.h
+ This allows us to remove forward declarations for these classes from
+ WebCore/WebKit (a step in moving these class from WebCore:: to WTF::).
+
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-08-09 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [gtk] gtk_im_context_focus_in() should only be called when an input-able element has focus
+ https://bugs.webkit.org/show_bug.cgi?id=43602
+
+ Only call gtk_im_context_focus_in() when we focus a frame which is currently in
+ an editable node.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_focus_in_event): Conditionalize call to gtk_im_context_focus_in().
+
+2010-08-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Use the new paths, and also fix the path for localizedStrings.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+ (WebKit::InspectorFrontendClient::localizedStringsURL):
+
+2010-08-06 Jessie Berlin <jberlin@apple.com>
+
+ Roll out http://trac.webkit.org/changeset/64801, which broke the Safari Windows Build.
+ Unreviewed.
+
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-08-05 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Use correct path for Inspector data files in GTK+3.x builds
+ https://bugs.webkit.org/show_bug.cgi?id=43445
+
+ Use the right data path for inspector files when building with
+ GTK+ 3.x.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::openInspectorFrontend):
+
+2010-08-03 Daniel Bates <dbates@rim.com>
+
+ Fix misspelled word 'teh' in the description of the XSS Auditor setting.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2010-08-03 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Fix DOM event dispatch
+ https://bugs.webkit.org/show_bug.cgi?id=40847
+
+ Test DOM event dispatch.
+
+ * tests/testdomdomwindow.c:
+ (load_event_callback):
+ (test_dom_domview_signals):
+ (clicked_cb):
+ (load_status_callback):
+ (test_dom_domview_dispatch_event):
+ (main):
+
+2010-08-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Does not paint the node highlight used by the inspector
+ https://bugs.webkit.org/show_bug.cgi?id=43429
+
+ Implement highlighting the nodes when using the inspector.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::highlight):
+ (WebKit::InspectorClient::hideHighlight):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_expose_event):
+
+2010-08-03 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update unit tests now that string parameters are 'const char*'.
+
+ * tests/testdomdocument.c:
+ (test_dom_document_title):
+ (test_dom_document_get_elements_by_tag_name):
+ (test_dom_document_get_elements_by_class_name):
+ (test_dom_document_get_element_by_id):
+ * tests/testdomnode.c:
+ (test_dom_node_insertion):
+
+2010-08-02 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] DRT implement execCommand()
+ https://bugs.webkit.org/show_bug.cgi?id=35351
+
+ * webkit/webkitprivate.h: Add some private methods for the DRT which enable
+ LayoutTestController.execCommand and LayoutTestController.isCommandEnabled:
+ webkit_web_view_execute_core_command_by_name and webkit_web_view_is_command_enabled.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_execute_core_command_by_name): added.
+ (webkit_web_view_is_command_enabled): Added.
+
+2010-07-27 Luiz Agostini <luiz.agostini@openbossa.org>
+
+ Reviewed by Darin Fisher.
+
+ PopupMenu refactoring in preparation to WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=42592
+
+ As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu
+ instances, concrete classes that inherit from ChromeClient needed to be changed to
+ implement the new methods.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::selectItemWritingDirectionIsNatural):
+ (WebKit::ChromeClient::createPopupMenu):
+ (WebKit::ChromeClient::createSearchPopupMenu):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-08-02 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Create a frame-created signal
+ https://bugs.webkit.org/show_bug.cgi?id=43284
+
+ Add a frame-created signal, which will allow developers to track
+ the beginning of a frame lifecycle and attach signal handlers to
+ all new frames.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame): Emit the frame-created signal.
+ * tests/testwebframe.c: Add a test which verifies that the correct number of
+ frame-created signals is fired when a page with iframes loads.
+ (createFrameSignalTestFrameCreatedCallback): Added.
+ (createFrameSignalTestTimeout): Added.
+ (test_webkit_web_frame_created_signal): Added.
+ (main): Add a reference to the new test.
+ * webkit/webkitprivate.h: De-normalize webkit_web_frame_init_with_web_view into
+ the one place that it is used, so that the frame-created signal may be fired there.
+ * webkit/webkitwebframe.cpp: Remove webkit_web_frame_init_with_web_view.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init): Add the frame-created signal declaration.
+
+2010-08-02 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Chris Fleizach.
+
+ [GTK] Implement support for get_character_extents and get_range_extents
+ https://bugs.webkit.org/show_bug.cgi?id=25677
+
+ Added new unit tests to check get_character_extents and
+ get_range_extents functions for the ATK_TEXT interface
+
+ Based on a previous patch by Joanmarie Diggs.
+
+ * tests/testatk.c:
+ (test_webkit_atk_get_extents):
+ (main):
+
+2010-08-02 Jeremy Orlow <jorlow@chromium.org>
+
+ Speculative revert of 64425 due to Chromium instability
+ https://bugs.webkit.org/show_bug.cgi?id=43347
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-07-27 Luiz Agostini <luiz.agostini@openbossa.org>
+
+ Reviewed by Darin Fisher.
+
+ PopupMenu refactoring in preparation to WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=42592
+
+ As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu
+ instances, concrete classes that inherit from ChromeClient needed to be changed to
+ implement the new methods.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::selectItemWritingDirectionIsNatural):
+ (WebKit::ChromeClient::createPopupMenu):
+ (WebKit::ChromeClient::createSearchPopupMenu):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-07-31 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r64422.
+ http://trac.webkit.org/changeset/64422
+ https://bugs.webkit.org/show_bug.cgi?id=43304
+
+ Build fixes are needed for Snow Leopard and Windows.
+ (Requested by lca on #webkit).
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-07-27 Luiz Agostini <luiz.agostini@openbossa.org>
+
+ Reviewed by Darin Fisher.
+
+ PopupMenu refactoring in preparation to WebKit2
+ https://bugs.webkit.org/show_bug.cgi?id=42592
+
+ As ChromeClient was made responsible for providing PopupMenu and SearchPopupMenu
+ instances, concrete classes that inherit from ChromeClient needed to be changed to
+ implement the new methods.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::selectItemWritingDirectionIsNatural):
+ (WebKit::ChromeClient::createPopupMenu):
+ (WebKit::ChromeClient::createSearchPopupMenu):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-07-30 Joseph Pecoraro <joepeck@webkit.org>
+
+ Reviewed by David Kilzer.
+
+ Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas)
+ https://bugs.webkit.org/show_bug.cgi?id=40627
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::reachedApplicationCacheOriginQuota):
+ * WebCoreSupport/ChromeClientGtk.h:
+2010-07-26 Steve Block <steveblock@google.com>
+
+ Reviewed by Jeremy Orlow.
+
+ Page clients should be passed to Page constructor via structure of pointers
+ https://bugs.webkit.org/show_bug.cgi?id=42834
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+
+2010-07-16 Zhe Su <suzhe@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ REGRESSION(r61484): Broke focus behaviour on Qt and probably other platforms
+ https://bugs.webkit.org/show_bug.cgi?id=42253
+
+ Dummy implementation of EditorClient::willSetInputMethodState.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::willSetInputMethodState):
+ * WebCoreSupport/EditorClientGtk.h:
+
+2010-07-16 Nate Chapin <japhet@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ Uncomment an assert that broke due to r63100.
+
+ https://bugs.webkit.org/show_bug.cgi?id=42298
+
+ * tests/testwebview.c:
+
+2010-07-14 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Patch for https://bugs.webkit.org/show_bug.cgi?id=42232
+ Make changing Cursors work in WebKit2.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::setCursor):
+ * WebCoreSupport/ChromeClientGtk.h:
+ Change prototype to match new one.
+
+2010-07-12 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] r63100 broke the testwebview test
+ https://bugs.webkit.org/show_bug.cgi?id=42114
+
+ * tests/testwebview.c: Disable a failing assertion in test_webkit_web_view_adjustments
+ until we can get to the bottom of the failure.
+
+2010-07-12 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for 1.3.3
+
+ * NEWS:
+
+2010-07-12 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix compilation with sealed GTK+.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_drag_motion):
+ (webkit_web_view_drag_data_received):
+ (webkit_web_view_drag_drop):
+
+2010-07-11 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] WebKitWebView should support drops
+ https://bugs.webkit.org/show_bug.cgi?id=39843
+
+ Add support for dropping content onto GTK+ WebViews.
+
+ * webkit/webkitprivate.h:
+ Add a DroppingContext struct to keep track of drop data while the drop is
+ in progress. Have WebKitWebView keep a map of GdkDragContexts to DroppingContexts.
+ * webkit/webkitwebview.cpp: Add necessary includes and globalPointForClientPoint helper.
+ (webkit_web_view_popup_menu_handler): Use globalPointForClientPoint helper.
+ (webkit_web_view_dispose): Properly clean up droppingContexts member.
+ (webkit_web_view_finalize): Delete droppingContext member.
+ (globalPointForClientPoint): Added.
+ (doDragLeaveLater): Added.
+ (webkit_web_view_drag_leave): Added.
+ (webkit_web_view_drag_motion): Added.
+ (webkit_web_view_drag_data_received): Added.
+ (webkit_web_view_drag_drop): Added.
+ (webkit_web_view_class_init): Connect new drop signal handlers to the widget definition.
+ (webkit_web_view_init): Set up the widget as a drop destination and initialize droppingContexts.
+
+2010-07-07 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Patch for https://bugs.webkit.org/show_bug.cgi?id=41772
+ Add basic piping for BackForwardControllerClient.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+
+2010-06-19 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ WebInspector: js function name was fixed.
+ dispatchMessageToFrontend -> dispatchMessageFromBackend.
+ https://bugs.webkit.org/show_bug.cgi?id=40675
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::sendMessageToFrontend):
+
+2010-06-23 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Separate DerivedSources per-project
+ https://bugs.webkit.org/show_bug.cgi?id=41109
+
+ Separate WebKitGTK+ DerivedSources into per-project subdirectories to prepare
+ for properly building WebKit2.
+
+ * webkitmarshal.list: Touch this file to force a rebuild of the marshaling code.
+
+2010-07-01 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Stop using GdkRegion in 3.x mode
+ https://bugs.webkit.org/show_bug.cgi?id=41463
+
+ Make us compile without using GdkRegion, since it's gone from GTK+
+ 3.x.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::scroll):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_expose_event):
+
+2010-07-01 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Convert WebKitWebView's private draggingDataObjects member to a pointer
+ https://bugs.webkit.org/show_bug.cgi?id=40333
+
+ Convert draggingDataObjects to a pointer. The constructor and destructor of the
+ HashMap should be called explicitly. GObject memory allocation does not do this.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose):
+ (webkit_web_view_drag_end):
+ (webkit_web_view_drag_data_get):
+ (webkit_web_view_init):
+
+2010-06-30 Martin Robinson <mrobinson@igalia.com>
+
+ Unreviewed, rolling out r62226.
+ http://trac.webkit.org/changeset/62226
+ https://bugs.webkit.org/show_bug.cgi?id=40333
+
+ This change caused 13 new crashers.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose):
+ (webkit_web_view_drag_end):
+ (webkit_web_view_drag_data_get):
+ (webkit_web_view_init):
+
+2010-06-30 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Convert WebKitWebView's private draggingDataObjects member to a pointer
+ https://bugs.webkit.org/show_bug.cgi?id=40333
+
+ Convert draggingDataObjects to a pointer. The constructor and destructor of the
+ HashMap should be called explicitly. GObject memory allocation does not do this.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose):
+ (webkit_web_view_drag_end):
+ (webkit_web_view_drag_data_get):
+ (webkit_web_view_init):
+
+2010-06-30 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Unit test for DOM insertion methods
+ https://bugs.webkit.org/show_bug.cgi?id=40495
+
+ Add unit test for webkit_dom_node_remove_child.
+
+ * tests/testdomnode.c:
+ (test_dom_node_insertion):
+
+2010-06-30 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Unit test for DOM insertion methods
+ https://bugs.webkit.org/show_bug.cgi?id=40495
+
+ Add unit tests for node insertion and replacement methods.
+
+ * tests/testdomnode.c:
+ (test_dom_node_insertion):
+ (main):
+
+2010-06-30 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Random failure on 'testdownload' unit test
+ https://bugs.webkit.org/show_bug.cgi?id=38256
+
+ Make sure the set_filename function is called after handling the
+ 'download-requested' signal for the asynchronous test. This change
+ is needed because it could happen, with the current code, that the
+ set_filename () function got called too early in the mainloop,
+ therefore screwing the tests because the 'theDownload' global
+ variable wouldn't be properly set yet.
+
+ With this modification we ensure the set_filename() function gets
+ called always after handling the download-requested signal,
+ therefore avoiding potentialproblems.
+
+ * tests/testdownload.c:
+ (set_filename):
+ (handle_download_requested_cb):
+ (download_requested_cb):
+ (download_requested_asynch_cb):
+ (test_webkit_download_perform):
+
+2010-06-30 José Millán Soto <jmillan@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Text attributes not exposed
+ https://bugs.webkit.org/show_bug.cgi?id=25528
+
+ Added new tests for accessible text attributes
+
+ * tests/testatk.c:
+ (compAtkAttribute):
+ (compAtkAttributeName):
+ (atkAttributeSetAttributeHasValue):
+ (atkAttributeSetAreEqual):
+ (testWebkitAtkTextAttributes):
+ (main):
+
+2010-06-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for 1.3.2.
+
+ * NEWS:
+
+2010-06-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Does not compile with -DGSEAL_ENABLE
+ https://bugs.webkit.org/show_bug.cgi?id=37851
+
+ Fix build with GSEAL enabled.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+ * webkit/webkitsoupauthdialog.c:
+ (show_auth_dialog):
+
+2010-06-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Add support for GTK+3
+ https://bugs.webkit.org/show_bug.cgi?id=41253
+
+ Adapt build system to 3.x support, allow the JSCore gir and webkit
+ pc files to be configurable at build time for different API
+ versions.
+
+ * JSCore-1.0.gir: Removed.
+ * JSCore.gir.in: Added.
+ * docs/GNUmakefile.am:
+ * webkit.pc.in:
+
+2010-06-25 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Implement atk_table_get_column_header
+ https://bugs.webkit.org/show_bug.cgi?id=30896
+
+ Replace g_timeout_add() with g_idle_add().
+
+ * tests/testatk.c:
+ (test_webkit_atk_get_text_at_offset_forms):
+ (test_webkit_atk_get_text_at_offset):
+ (test_webkit_atk_get_text_at_offset_newlines):
+ (test_webkit_atk_get_text_at_offset_textarea):
+ (test_webkit_atk_get_text_at_offset_text_input):
+ (testWebkitAtkGetTextInParagraphAndBodySimple):
+ (testWebkitAtkGetTextInParagraphAndBodyModerate):
+ (testWebkitAtkGetTextInTable):
+ (testWebkitAtkGetHeadersInTable):
+
+2010-06-25 Mario Sanchez Prada <msanchez@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Implement atk_table_get_column_header
+ https://bugs.webkit.org/show_bug.cgi?id=30896
+
+ Added new test to check whether the implementation of
+ get_column_headers() and get_row_headers() works ok.
+
+ * tests/testatk.c:
+ (testWebkitAtkGetHeadersInTable):
+ (main):
+
+2010-06-25 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Pasteboard code does not take into account the nil character when getting and setting markup/netscape-url data
+ https://bugs.webkit.org/show_bug.cgi?id=41221
+
+ Add a test for this issue which simulates a paste keyboard event into an editable
+ body. The pasteboard should contain a markup portion containing a null terminator.
+
+ * tests/testcopyandpaste.c:
+ (test_info_new):
+ (test_info_destroy):
+ (load_status_cb):
+ (runPasteTestCallback):
+ (window_object_cleared_callback):
+ (pasting_test_get_data_callback):
+ (pasting_test_clear_data_callback):
+ (test_pasting_markup):
+ (main):
+
+2010-06-24 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Cannot change the selection via the keyboard
+ https://bugs.webkit.org/show_bug.cgi?id=41162
+
+ Fix issue where the selection could not be extended via the keyboard by
+ adjusting the logic guarding against inserting text in non-editable nodes.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeyboardEvent):
+ Allow editor commands that do not insert text in non-editable nodes. This
+ fixes keyboard selection extension in non-editable nodes. Move the existing
+ check to after the execution of any editor commands.
+
+2010-06-15 Dumitru Daniliuc <dumi@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Move isAvailable()/setIsAvailable() from Database/DatabaseSync to AbstractDatabase.
+ https://bugs.webkit.org/show_bug.cgi?id=39041
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+ (webkit_get_cache_model):
+
+2010-06-16 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Remove the abuse of GDK_CURRENT_TIME in the DRT
+ https://bugs.webkit.org/show_bug.cgi?id=40600
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag): Reset the click count after a drag starts.
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::postCommitFrameViewSetup): Reset the click count after a load is committed.
+ * webkit/webkitprivate.h: Move static click counting variables to be per-view.
+ * webkit/webkitwebview.cpp:
+ (getEventTime): Added.
+ (webkit_web_view_button_press_event): If the event time is zero, use the current time.
+ (webkit_web_view_finalize): Clean up click counting member.
+ (webkit_web_view_init): Initialize click counting member.
+
+2010-06-15 Xan Lopez <xlopez@igalia.com>
+
+ Fix compilation with older GTK+.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::pageRect):
+
+2010-06-15 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Does not compile with -DGSEAL_ENABLE
+ https://bugs.webkit.org/show_bug.cgi?id=37851
+
+ Fix compilation with GSEAL_ENABLE.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::pageRect):
+ (WebKit::ChromeClient::contentsSizeChanged):
+ * tests/testdomnode.c:
+ (test_dom_node_insertion):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_realize):
+ (webkit_web_view_script_dialog):
+ (webkit_web_view_drag_end):
+ (webkit_web_view_init):
+
+2010-06-14 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Unreviewed build fix.
+
+ This is a fix for flaky inspector tests at gtk-debug bots.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+
+2010-06-14 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
+ data from inspected page to WebInspector as JSON string via http. The native
+ serialization to JSON string is supported by InspectorValue's classes. This patch
+ has the implementation of sendMessageToFrontend function. WebKit version of it still
+ uses ScriptFunctionCall and will be switched to another transport a little bit later.
+ https://bugs.webkit.org/show_bug.cgi?id=40134
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::releaseFrontendPage):
+ (WebKit::InspectorClient::sendMessageToFrontend):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-06-10 Eric Seidel <eric@webkit.org>
+
+ Reviewed by Adam Barth.
+
+ Reduce FrameView.h includes to speed up build times
+ https://bugs.webkit.org/show_bug.cgi?id=40408
+
+ * webkit/webkitwebinspector.cpp:
+ - Include RenderLayer.h
+
+2010-06-09 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r60889.
+ http://trac.webkit.org/changeset/60889
+ https://bugs.webkit.org/show_bug.cgi?id=40365
+
+ gtk bot has some kind of memory corruption (Requested by
+ loislo on #webkit).
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::InspectorClient):
+ (WebKit::InspectorClient::openInspectorFrontend):
+ (WebKit::InspectorFrontendClient::InspectorFrontendClient):
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-06-07 Ilya Tikhonovsky <loislo@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ WebInspector: On the way to Remote Debugging we want to transfer dom/timeline/etc
+ data from inspected page to WebInspector as JSON string via http. The native
+ serialization to JSON string is supported by InspectorValue's classes. This patch
+ has the implementation of sendMessageToFrontend function. WebKit version of it still
+ uses ScriptFunctionCall and will be switched to another transport a little bit later.
+ https://bugs.webkit.org/show_bug.cgi?id=40134
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::releaseFrontendPage):
+ (WebKit::InspectorClient::sendMessageToFrontend):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-06-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Unit testing for WebKitDOMNode hierarchy walk
+ https://bugs.webkit.org/show_bug.cgi?id=40171
+
+ Add some DOM node unit testing.
+
+ * tests/testdomnode.c: Added.
+ (finish_loading):
+ (dom_node_fixture_setup):
+ (dom_node_fixture_teardown):
+ (test_dom_node_hierarchy_navigation):
+ (main):
+
+2010-06-08 Antonio Gomes <tonikitoo@webkit.org>
+
+ Reviewed by Ojan Vafai and Darin Adler.
+
+ Refactor platform dependent editing behavior code out of Settings
+ https://bugs.webkit.org/show_bug.cgi?id=39854
+
+ EditingBehavior enum was renamed to EditingBehaviorTypes and moved out from Settings.h to
+ EditingBehaviorTypes.h . Call sites in WebKit/ adjusted accordingly.
+
+ * webkit/webkitprivate.cpp:
+ (WebKit::core):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2010-06-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Add inner-node property to WebKitHitTestResult
+ https://bugs.webkit.org/show_bug.cgi?id=40131
+
+ Add a 'inner-node' property to WebKitHitTestResult, carrying the
+ DOM node where the hit test happened.
+
+ * tests/testhittestresult.c:
+ (load_status_cb):
+ * webkit/webkithittestresult.cpp:
+ (webkit_hit_test_result_get_property):
+ (webkit_hit_test_result_set_property):
+ (webkit_hit_test_result_class_init):
+ * webkit/webkitprivate.cpp:
+ (WebKit::kit):
+
+2010-06-07 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] gtk_widget_get_window should replace widget->window
+ https://bugs.webkit.org/show_bug.cgi?id=40180
+
+ Replace uses of widget->window with gtk_widget_get_window.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::invalidateContentsAndWindow): Replace widget->window uses.
+ (WebKit::ChromeClient::scroll): Ditto.
+ (WebKit::widgetScreenPosition): Ditto.
+ * WebCoreSupport/DragClientGtk.cpp: Move gtk_widget_get_window define to GtkVersioning.h.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_popup_menu_handler): Replace widget->window uses.
+ (webkit_web_view_button_press_event): Ditto.
+
+2010-06-04 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Drag gesture can take mouse grab indefinitely
+ https://bugs.webkit.org/show_bug.cgi?id=32840
+
+ Initiate drag events with the current GTK+ event instead of synthesizing
+ an event. Something about synthesized events is causing a drag freeze in
+ certain situations.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag): Start the drag with the current GTK+ event.
+
+2010-06-03 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r60632.
+ http://trac.webkit.org/changeset/60632
+ https://bugs.webkit.org/show_bug.cgi?id=40143
+
+ This change broke the 64-bit bots. (Requested by mrobinson on
+ #webkit).
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::DragClient):
+ (WebKit::DragClient::startDrag):
+ * WebCoreSupport/DragClientGtk.h:
+
+2010-06-03 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Drag gesture can take mouse grab indefinitely
+ https://bugs.webkit.org/show_bug.cgi?id=32840
+
+ Start GTK+ drags with the previous mouse button down event instead of
+ synthesizing the event. The synthesized event was not completely valid
+ and froze some drags indefinitely.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::buttonPressEvent): Added.
+ (WebKit::DragClient::DragClient):
+ Connect to the 'button-press-event' signal of the WebView.
+ (WebKit::DragClient::startDrag):
+ Instead of synthesizing a button press event use the last real one.
+ * WebCoreSupport/DragClientGtk.h:
+ (WebKit::DragClient::setLastButtonPressEvent): Added.
+
+2010-06-01 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Memory Leak: The main resource of page is not free.
+ https://bugs.webkit.org/show_bug.cgi?id=39973
+
+ Fix refcount tracking of the main resource. Patch by Genhua Liu.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoading):
+
+2010-06-01 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix-up for previous leak fix, the identifier was not always duped.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_add_resource):
+
+2010-06-01 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Plug a small leak.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest):
+
+2010-06-01 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Double clicks cause three button press events
+ https://bugs.webkit.org/show_bug.cgi?id=38853
+
+ Handle click counting much like the Windows port. GTK+ only
+ counts triple-clicks natively, so use GTK+ double-click settings
+ to count clicks with even larger click counts. Also filter the
+ extra GDK_BUTTON_PRESS before GDK_{2,3}BUTTON_PRESS events using
+ gdk_event_peek().
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_button_press_event): Count clicks manually. Filter extra events.
+
+2010-05-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Missing links to documentation of general functions
+ https://bugs.webkit.org/show_bug.cgi?id=39964
+
+ Add global functions section, and move those functions that are
+ currently in WebKitWebView's source file to the bottom, along with
+ the description.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_dom_document):
+ (webkit_get_default_session):
+
+2010-05-31 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Text copied from a WebView cannot be pasted into gnome-terminal
+ https://bugs.webkit.org/show_bug.cgi?id=39827
+
+ Add a test to prevent regressions for this issue.
+
+ * tests/testcopyandpaste.c: Added.
+ (test_info_new):
+ (test_info_destroy):
+ (copy_and_paste_fixture_setup):
+ (copy_and_paste_fixture_teardown):
+ (load_status_cb):
+ (map_event_cb):
+ (test_copy_and_paste):
+ (main):
+
+2010-05-27 Gustavo Noronha Silva <gns@gnome.org>
+
+ Update documentation control files, and fix Since tags for 1.3.1.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+ * webkit/webkitwebbackforwardlist.cpp:
+ * webkit/webkitwebview.cpp:
+
+2010-05-27 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for 1.3.1 release.
+
+ * NEWS:
+
+2010-05-27 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Dragging onto the desktop causes a critical GLib warning
+ https://bugs.webkit.org/show_bug.cgi?id=39718
+
+ Only increment the window reference count if it is not null during drag-end
+ signal processing.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_drag_end): Guard against null window values.
+
+2010-05-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Add support for DOM events in the GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=38844
+
+ Test DOMWindow signals.
+
+ * tests/testdomdomwindow.c: Added.
+ (finish_loading):
+ (dom_domview_fixture_setup):
+ (dom_domview_fixture_teardown):
+ (loadedCallback):
+ (clickedCallback):
+ (map_event_cb):
+ (load_event_callback):
+ (test_dom_domview_signals):
+ (main):
+
+2010-05-24 Darin Adler <darin@apple.com>
+
+ Reviewed by Eric Seidel.
+
+ Move view-related functions from Frame to FrameView
+ https://bugs.webkit.org/show_bug.cgi?id=39366
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_editable): Remove call to empty function
+ removeEditngStyleFromBodyElement.
+ (webkit_web_view_get_zoom_level): Call functions on FrameView.
+ (webkit_web_view_apply_zoom_level): Ditto.
+
+2010-05-22 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] webkit_web_view_drag_end should call EventHandler::dragSourceEndedAt
+ https://bugs.webkit.org/show_bug.cgi?id=39465
+
+ Properly call EventHandler::dragSourceEndedAt so that dragEnd events are processed in the DOM.
+ dragSourceEndedAt is responsible for calling the dragEnd DOM event as well as cleaning up assets
+ (such as the Clipboard) associated with the drag source.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_drag_end): Remember to call dragSourceEndedAt here.
+
+2010-05-22 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] WebKit/gtk/WebCoreSupport/DragClientGtk::startDrag should use the Clipboard::sourceOperation
+ https://bugs.webkit.org/show_bug.cgi?id=39459
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag):
+ Use Clipboard::sourceOperation instead of trying to figure out the GdkDragAction
+ manually. The DOM may have changed the appropriate list of actions anyhow.
+
+2010-05-21 Steve Block <steveblock@google.com>
+
+ Reviewed by Jeremy Orlow.
+
+ Add DeviceOrientation and DeviceOrientationClient
+ https://bugs.webkit.org/show_bug.cgi?id=39479
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+
+2010-05-19 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r59240.
+ http://trac.webkit.org/changeset/59240
+ https://bugs.webkit.org/show_bug.cgi?id=39377
+
+ "Might cause crashes in GTK+ bots" (Requested by xan_ on
+ #webkit).
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::inputMethodsMenuItem):
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::setInputMethodState):
+ (WebKit::EditorClient::respondToChangedSelection):
+ (WebKit::EditorClient::handleInputMethodKeydown):
+ (WebKit::EditorClient::EditorClient):
+ (WebKit::EditorClient::~EditorClient):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::postCommitFrameViewSetup):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (destroy_menu_cb):
+ (webkit_web_view_forward_context_menu_event):
+ (webkit_web_view_key_release_event):
+ (webkit_web_view_button_release_event):
+ (webkit_web_view_focus_in_event):
+ (webkit_web_view_focus_out_event):
+ (webkit_web_view_realize):
+ (webkit_web_view_set_scroll_adjustments):
+ (webkit_web_view_dispose):
+ (webkit_web_view_finalize):
+ (webViewGetDPI):
+ (webkit_web_view_screen_changed):
+ (webkit_web_view_query_tooltip):
+ (webkit_web_view_get_im_context):
+ (webkit_web_view_update_settings):
+ (webkit_web_view_init):
+ (webkit_web_view_set_settings):
+ (webkit_web_view_get_settings):
+ (webkit_web_view_get_inspector):
+ (webkit_web_view_set_window_features):
+ (webkit_web_view_get_window_features):
+ (webkit_web_view_get_back_forward_list):
+ (webkit_web_view_zoom_in):
+ (webkit_web_view_zoom_out):
+ (webkit_web_view_get_encoding):
+ (webkit_web_view_get_custom_encoding):
+ (webkit_web_view_add_resource):
+ (webkit_web_view_get_resource):
+ (webkit_web_view_get_main_resource):
+ (webkit_web_view_clear_resources):
+ (webkit_web_view_get_subresources):
+ (webkit_web_view_set_tooltip_text):
+ (webkit_web_view_get_icon_uri):
+
+2010-05-18 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] DragClientGtk::startDrag leaks GdkEvents
+ https://bugs.webkit.org/show_bug.cgi?id=39322
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::startDrag): Properly clean up allocated GdkEvent.
+
+2010-05-12 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Use GOwnPtr for code that needs it
+ https://bugs.webkit.org/show_bug.cgi?id=21594
+
+ Convert many uses of raw pointers to GRefPtr and GOwnPtr in WebKitWebView.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::inputMethodsMenuItem):
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::setInputMethodState):
+ (WebKit::EditorClient::respondToChangedSelection):
+ (WebKit::EditorClient::handleInputMethodKeydown):
+ (WebKit::EditorClient::EditorClient):
+ (WebKit::EditorClient::~EditorClient):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::postCommitFrameViewSetup):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (destroy_menu_cb):
+ (webkit_web_view_forward_context_menu_event):
+ (webkit_web_view_key_release_event):
+ (webkit_web_view_button_release_event):
+ (webkit_web_view_focus_in_event):
+ (webkit_web_view_focus_out_event):
+ (webkit_web_view_realize):
+ (webkit_web_view_set_scroll_adjustments):
+ (webkit_web_view_dispose):
+ (webkit_web_view_finalize):
+ (webViewGetDPI):
+ (webkit_web_view_screen_changed):
+ (webkit_web_view_query_tooltip):
+ (webkit_web_view_get_im_context):
+ (webkit_web_view_update_settings):
+ (webkit_web_view_init):
+ (webkit_web_view_set_settings):
+ (webkit_web_view_get_settings):
+ (webkit_web_view_get_inspector):
+ (webkit_web_view_set_window_features):
+ (webkit_web_view_get_window_features):
+ (webkit_web_view_get_back_forward_list):
+ (webkit_web_view_zoom_in):
+ (webkit_web_view_zoom_out):
+ (webkit_web_view_get_encoding):
+ (webkit_web_view_get_custom_encoding):
+ (webkit_web_view_add_resource):
+ (webkit_web_view_get_resource):
+ (webkit_web_view_get_main_resource):
+ (webkit_web_view_clear_resources):
+ (webkit_web_view_get_subresources):
+ (webkit_web_view_set_tooltip_text):
+ (webkit_web_view_get_icon_uri):
+
+2010-05-11 Martin Robinson <mrobinson@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Doesn't support gtk-key-themes
+ https://bugs.webkit.org/show_bug.cgi?id=28257
+
+ Add support for GTK+ key themes.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::backspaceCallback): Added.
+ (WebKit::cutClipboardCallback): Added.
+ (WebKit::copyClipboardCallback): Added.
+ (WebKit::pasteClipboardCallback): Added.
+ (WebKit::selectAllCallback): Added.
+ (WebKit::deleteFromCursorCallback): Added.
+ (WebKit::moveCursorCallback): Added.
+ (WebKit::EditorClient::generateEditorCommands): Added.
+ (WebKit::EditorClient::executePendingEditorCommands): Added.
+ (WebKit::EditorClient::handleKeyboardEvent): Derive editor commands both from internal text widget and a list of fallbacks.
+ (WebKit::EditorClient::EditorClient): Add m_nativeWidget initializer.
+ * WebCoreSupport/EditorClientGtk.h:
+ (WebKit::EditorClient::addPendingEditorCommand): Add m_nativeWidget member.
+
+2010-05-06 Martin Robinson <mrobinson@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ Remove use of GOwnPtr to hold GObject types.
+ https://bugs.webkit.org/show_bug.cgi?id=38669
+
+ Change use of GOwnPtr to GRefPtr to types which are natively reference-counted.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchWillSendRequest): Change GOwnPtr to GRefPtr in some places.
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): Ditto.
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_new_with_core_request): Ditto.
+ * webkit/webkitnetworkresponse.cpp:
+ (webkit_network_response_new_with_core_response): Ditto.
+ * webkit/webkitprivate.cpp: Remove GOwnPtr reference counting template specialization.
+ * webkit/webkitprivate.h: Ditto.
+
+2010-05-06 Martin Robinson <mrobinson@webkit.org>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Enable DOM clipboard and drag-and-drop access
+ https://bugs.webkit.org/show_bug.cgi?id=30623
+
+ Convert dragging portion of drag-and-drop to use DataObjectGtk.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::willPerformDragDestinationAction): Remove the notImplemented. It is implemented, it's just a no-op.
+ (WebKit::DragClient::startDrag): Start the drag context via the ClipboardGtk and PasteboardHelper now.
+ * WebCoreSupport/DragClientGtk.h: Small style fix.
+ * webkit/webkitprivate.h: Add a HashMap of contexts and DataObjects here to to represent all current drag operations.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose): Clear all data objects during disposal.
+ (webkit_web_view_drag_end): When a drag is over, just remove it from the map.
+ (webkit_web_view_drag_data_get): To get the drag data, just grab it from the DataObject.
+
+2010-05-03 Abhishek Arya <inferno@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Add support for controlling clipboard access from javascript.
+ Clipboard access from javascript is disabled by default.
+ https://bugs.webkit.org/show_bug.cgi?id=27751
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2010-05-03 Jens Alfke <snej@chromium.org>
+
+ Reviewed by Darin Fisher.
+
+ [chromium] Add "willSendSubmitEvent" hook to WebFrameClient and FrameLoaderClient
+ https://bugs.webkit.org/show_bug.cgi?id=38397
+
+ No tests (functionality is exposed only through native WebKit API.)
+
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ (WebKit::FrameLoaderClient::dispatchWillSendSubmitEvent):
+
+2010-05-01 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Oliver Hunt.
+
+ [GTK] GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=33590
+
+ Test webkit_dom_document_get_links.
+
+ * tests/testdomdocument.c:
+ (test_dom_document_get_links):
+ (main):
+
+2010-04-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=33590
+
+ Test webkit_dom_document_get_element_by_id;
+
+ * tests/testdomdocument.c:
+ (test_dom_document_get_element_by_id):
+ (main):
+
+2010-04-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=33590
+
+ Test webkit_dom_document_get_elements_by_class_name.
+
+ * tests/testdomdocument.c:
+ (test_dom_document_get_elements_by_class_name):
+ (main):
+
+2010-04-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=33590
+
+ Test webkit_dom_document_get_elements_by_tag_name.
+
+ * tests/testdomdocument.c:
+ (test_dom_document_get_elements_by_tag_name):
+ (main):
+
+2010-04-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=33590
+
+ Move WebKitDOMDocument unit tests to their own file.
+
+ * tests/testdomdocument.c: Added.
+ (finish_loading):
+ (dom_document_fixture_setup):
+ (dom_document_fixture_teardown):
+ (test_dom_document_title):
+ (main):
+ * tests/testwebview.c:
+
+2010-04-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=33590
+
+ Include <webkit/webkitdom.h> in the main webkit.h header.
+
+ * webkit/webkit.h:
+
+2010-04-25 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=38097
+ Disentangle initializing the main thread from initializing threading
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init): Add call to initializeMainThread.
+
+2010-04-22 Dave Moore <davemoore@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ Added notification when the favicons for a page are changed
+ from a script.
+ The Document object will notify the frame loader, which will
+ notify the client. Implementations of FrameLoaderClient will
+ have to add one method; dispatchDidChangeIcons().
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidChangeIcons):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-04-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] GObject DOM bindings
+ https://bugs.webkit.org/show_bug.cgi?id=33590
+
+ Add webkit_web_view_get_document to retrieve the WebKitDOMDocument
+ from a WebKitWebView, and a very simple test for it.
+
+ * tests/testwebview.c:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_document):
+ * webkit/webkitwebview.h:
+
+2010-04-22 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Evaluate and create tests for all the AtkRole's implemented by
+ WebKitGtk
+ https://bugs.webkit.org/show_bug.cgi?id=34449
+
+ Expand testatkroles to test ATK_ROLE_COMBO_BOX.
+
+ * tests/testatkroles.c:
+ (test_webkit_atk_get_role_combobox):
+ (main):
+
+2010-04-22 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Evaluate and create tests for all the AtkRole's implemented by
+ WebKitGtk
+ https://bugs.webkit.org/show_bug.cgi?id=34449
+
+ Expand testatkroles to test ATK_ROLE_SEPARATOR.
+
+ * tests/testatkroles.c:
+ (test_webkit_atk_get_role_separator):
+ (main):
+
+2010-04-22 Adam Barth <abarth@webkit.org>
+
+ Unreviewed, rolling out r58069.
+ http://trac.webkit.org/changeset/58069
+ https://bugs.webkit.org/show_bug.cgi?id=27751
+
+ Broke compile on Windows.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2010-04-22 Abhishek Arya <inferno@chromium.org>
+
+ Reviewed by Adam Barth.
+
+ Add support for controlling clipboard access from javascript.
+ Clipboard access from javascript is disabled by default.
+ https://bugs.webkit.org/show_bug.cgi?id=27751
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2010-04-21 Jakub Wieczorek <jwieczorek@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ List item markers are not always updated after changes in the DOM.
+ https://bugs.webkit.org/show_bug.cgi?id=37060
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_marker_text_for_list_item): Add a private API to get the marker text for a list item.
+
+2010-04-21 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Evaluate and create tests for all the AtkRole's implemented by
+ WebKitGtk
+ https://bugs.webkit.org/show_bug.cgi?id=34449
+
+ Expand testatkroles to test ATK_ROLE_FORM.
+
+ * tests/testatkroles.c:
+ (test_webkit_atk_get_role_form):
+ (main):
+
+2010-04-20 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Factor DocumentWriter out of FrameLoader
+ https://bugs.webkit.org/show_bug.cgi?id=37175
+
+ Update these callsites because the method moved to DocumentWriter.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::finishedLoading):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_encoding):
+
+2010-04-20 Kent Tamura <tkent@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Change a parameter type of chooseIconForFiles()
+ https://bugs.webkit.org/show_bug.cgi?id=37504
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::chooseIconForFiles):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-04-20 Martin Robinson <mrobinson@webkit.org>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Enable DOM clipboard and drag-and-drop access
+ https://bugs.webkit.org/show_bug.cgi?id=30623
+
+ Move most of the PasteboardHelper logic into WebCore. This helps
+ prepare for WebKit2 and leads to a clearer separation of concerns
+ between the WebKit and WebCore layers.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::collapseSelection): Converted this logic to a GClosure callback.
+ (WebKit::EditorClient::respondToChangedSelection): Collapse selection via GClosure now.
+ * WebCoreSupport/PasteboardHelperGtk.cpp: Moved most of the code to WebCore.
+ (WebKit::PasteboardHelperGtk::PasteboardHelperGtk): This constructor just initializes the target list.
+ (WebKit::PasteboardHelperGtk::~PasteboardHelperGtk): The destructor no longer needs to free the target list.
+ (WebKit::PasteboardHelperGtk::getIdForTargetType): Added, virtual method for getting target ids.
+ (WebKit::PasteboardHelperGtk::usePrimarySelectionClipboard): Added, virtual method for querying current clipboard.
+ * WebCoreSupport/PasteboardHelperGtk.h: Update method list to reflect reduced functionality.
+
+2010-04-19 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Evaluate and create tests for all the AtkRole's implemented by
+ WebKitGtk
+ https://bugs.webkit.org/show_bug.cgi?id=34449
+
+ Expand testatkroles to test ATK form roles.
+
+ * tests/testatkroles.c:
+ (test_webkit_atk_get_role_check_box):
+ (test_webkit_atk_get_role_entry):
+ (test_webkit_atk_get_role_label):
+ (test_webkit_atk_get_role_listbox):
+ (test_webkit_atk_get_role_password_text):
+ (test_webkit_atk_get_role_push_button):
+ (test_webkit_atk_get_role_radio_button):
+ (main):
+
+2010-04-19 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Evaluate and create tests for all the AtkRole's implemented by
+ WebKitGtk
+ https://bugs.webkit.org/show_bug.cgi?id=34449
+
+ Add testatkroles to test ATK non form roles.
+
+ * tests/testatkroles.c: Added.
+ (finish_loading):
+ (atk_roles_fixture_setup):
+ (atk_roles_fixture_teardown):
+ (get_child_and_test_role):
+ (test_webkit_atk_get_role_document_frame):
+ (test_webkit_atk_get_role_heading):
+ (test_webkit_atk_get_role_image):
+ (test_webkit_atk_get_role_link):
+ (test_webkit_atk_get_role_list_and_item):
+ (test_webkit_atk_get_role_paragraph):
+ (test_webkit_atk_get_role_section):
+ (test_webkit_atk_get_role_table):
+ (main):
+
+2010-04-17 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ We have to initialize the timer attribute after destroying it, not
+ doing it was causing crashes in some situations.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_finalize):
+
+2010-04-13 Timothy Hatcher <timothy@apple.com>
+
+ Rename SecurityOrigin::whiteListAccessFromOrigin to addOriginAccessWhitelistEntry.
+ And SecurityOrigin::resetOriginAccessWhiteLists to resetOriginAccessWhitelists.
+
+ SecurityOrigin needs a way to remove individual OriginAccessEntries
+ https://bugs.webkit.org/show_bug.cgi?id=37449
+
+ Reviewed by Dave Hyatt.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_white_list_access_from_origin):
+ (webkit_reset_origin_access_white_lists):
+
+2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r57468.
+ http://trac.webkit.org/changeset/57468
+ https://bugs.webkit.org/show_bug.cgi?id=37433
+
+ Broke the world... Must have applied the patch wrong
+ (Requested by abarth on #webkit).
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::finishedLoading):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_encoding):
+
+2010-04-11 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Factor DocumentWriter out of FrameLoader
+ https://bugs.webkit.org/show_bug.cgi?id=37175
+
+ Update these callsites because the method moved to DocumentWriter.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::finishedLoading):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_encoding):
+
+2010-04-07 Andrey Kosyakov <caseq@chromium.org>
+
+ Reviewed by Yury Semikhatsky.
+
+ Removed redundant FrameLoaderClient::dispatchDidLoadResourceByXMLHttpRequest()
+ https://bugs.webkit.org/show_bug.cgi?id=36949
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-04-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] webkit_get_default_session() should make sure webkit_init() is called
+ https://bugs.webkit.org/show_bug.cgi?id=36754
+
+ Make sure global functions that do not require a WebKitWebView to
+ be created call webkit_init() before doing their job. Also add an
+ API test to check for that.
+
+ * tests/testglobals.c: Added.
+ (test_globals_default_session):
+ (main):
+ * webkit/webkitwebview.cpp:
+ (webkit_get_default_session):
+ (webkit_set_cache_model):
+ (webkit_get_cache_model):
+
+2010-03-31 Marcus Bulach <bulach@chromium.org>
+
+ Reviewed by Jeremy Orlow.
+
+ Adds Geolocation param for cancelGeolocationPermissionRequestForFrame.
+ https://bugs.webkit.org/show_bug.cgi?id=35031
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::cancelGeolocationPermissionRequestForFrame):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-03-30 Gavin Barraclough <barraclough@apple.com>
+
+ Rubber stamped by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=36866
+ Move CString to WTF
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * WebCoreSupport/EditorClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ * gdom/ConvertToGCharPrivate.h:
+ * webkit/webkitdownload.cpp:
+ * webkit/webkithittestresult.cpp:
+ * webkit/webkitnetworkrequest.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitsecurityorigin.cpp:
+ * webkit/webkitwebdatabase.cpp:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebhistoryitem.cpp:
+ (webkit_web_history_item_finalize):
+ (webkit_web_history_item_get_target):
+ * webkit/webkitwebresource.cpp:
+ * webkit/webkitwebsettings.cpp:
+ * webkit/webkitwebview.cpp:
+
+2010-03-28 Alexey Proskuryakov <ap@apple.com>
+
+ Build fix. Include WindowsKeyboardCodes.h instead of KeyboardCodes.h.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+
+2010-03-27 Sergio Villar Senin <svillar@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ FrameLoader emits onload-event when handling
+ dispatchDidHandleOnloadEvents
+
+ [GTK] Improve reporting of frame loader callbacks in DRT
+ https://bugs.webkit.org/show_bug.cgi?id=36454
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidHandleOnloadEvents):
+ implemented, now it emits onload-event signal
+ * webkit/webkitwebview.cpp: added onload-event signal
+
+2010-03-25 Sergio Villar Senín <svillar@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Added new API webkit_web_back_forward_list_clear. This function
+ clears the back forward list
+
+ [GTK] http/history tests are failing
+ https://bugs.webkit.org/show_bug.cgi?id=36173
+
+ * tests/testwebbackforwardlist.c:
+ (test_webkit_web_back_forward_list_clear):
+ (main): added new unit test for the new API
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_clear):
+ * webkit/webkitwebbackforwardlist.h: new function that clears the
+ back forward list
+
+2010-03-24 Kent Tamura <tkent@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Make Icon::createIconForFiles() optional.
+ https://bugs.webkit.org/show_bug.cgi?id=35072
+
+ - Rename iconForFiles() to chooseIconForFiles().
+ - Call Icon::createIconForFiles() from chooseIconForFiles().
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-03-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] Does not build with latest GTK+ development release
+ https://bugs.webkit.org/show_bug.cgi?id=36398
+
+ Fix building with newest GTK+ versions.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::windowRect):
+ (WebKit::ChromeClient::setWindowRect):
+ (WebKit::ChromeClient::unfocus):
+ (WebKit::ChromeClient::canTakeFocus):
+ (WebKit::ChromeClient::contentsSizeChanged):
+ * webkit/webkitprivate.cpp:
+ (currentToplevelCallback):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_print_full):
+ (webkit_web_frame_print):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_grab_focus):
+ (webkit_web_view_focus_in_event):
+ (webkit_web_view_script_dialog):
+
+2010-03-18 Philip Chimento <philip.chimento@gmail.com>
+
+ Reviewed by Oliver Hunt.
+
+ Setting the GObject WebKitWebView property 'window-features' to NULL
+ causes a crash.
+ https://bugs.webkit.org/show_bug.cgi?id=36144
+
+ * tests/testwebview.c: Add unit test for this bug.
+ * webkit/webkitwebview.cpp: Don't allow the 'window-features' property
+ to be set to NULL.
+ * webkit/webkitwebwindowfeatures.cpp:
+ (webkit_web_window_features_equal): Don't examine the members of either
+ web_window_features argument if either is NULL, just return that they
+ are not equal. Additionally, if they are the same object, return that
+ they are equal.
+
+2010-03-16 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for 1.1.90 release.
+
+ * NEWS:
+
+2010-03-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Fix one too many empty lines in documentation of
+ window-obejct-cleared signal, which caused the documentation to be
+ rendered funny. Thanks to Martin Robinson for noticing.
+
+ * webkit/webkitwebview.cpp:
+
+2010-03-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Add missing symbol to GeoLocation documentation
+ section.
+
+ * docs/webkitgtk-sections.txt:
+
+2010-03-16 Martin Robinson <mrobinson@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ can't input korean into lower all input box except adress input box in webkit gtk launcher
+ https://bugs.webkit.org/show_bug.cgi?id=32290
+
+ Make the GTK+ EditorClient properly handle different types of input module
+ behavior such as commit and preedit signals that happen outside of key event
+ filtering and multiple times in a row. Filter keyup events as well as keydown
+ events and call gtk_im_context_focus_{in/out} when the WebView focus changes.
+
+ Added tests for this behavior to the GTK+ unit tests.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted): Handle this signal properly when it happens outside of
+ key event filtering.
+ (WebKit::imContextPreeditChanged): Immediately update the preedit state and do not reject
+ empty preedits, so that cancellation works properly.
+ (WebKit::EditorClient::updatePendingComposition): Add this method, which handles the
+ situation where a commit signal happens when there is still a pending commit.
+ (WebKit::EditorClient::shouldBeginEditing): Clear pending composition state before editing
+ starts.
+ (WebKit::EditorClient::shouldEndEditing): Clear pending composition state before editing ends.
+ (WebKit::EditorClient::handleKeyboardEvent): No longer special case preedits which happen during
+ key event filtering. When confirming a pending composition use insertText instead of confirmComposition.
+ (WebKit::EditorClient::handleInputMethodKeydown):
+ * WebCoreSupport/EditorClientGtk.h: Make pendingComposition a member, so that multiple WebViews
+ do not share state.
+ (WebKit::EditorClient::webView): Added.
+ (WebKit::EditorClient::treatContextCommitAsKeyEvent): Added.
+ (WebKit::EditorClient::clearPendingComposition): Added.
+ * tests/testkeyevents.c:
+ (test_keypress_events_load_status_cb):
+ (map_event_cb):
+ (setup_keyevent_test):
+ (test_keypress_events):
+ (element_text_equal_to):
+ (test_ime_load_status_cb):
+ (test_ime):
+ (main):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_key_release_event):
+ (webkit_web_view_focus_in_event):
+
+2010-03-16 Yury Semikhatsky <yurys@chromium.org>
+
+ Reviewed by Pavel Feldman.
+
+ Introduce InspectorFrontendClient that provides InspectorFrontend with an interface to the embedder. InspectorClient now serves as a delegate for InspectorController and does not contain methods for managing inspector frontend window. That allows to create remote InspectorFrontendHost.
+
+ Introduce InspectorFrontendClient that would provide InspectorFrontend with an interface to the embedder
+ https://bugs.webkit.org/show_bug.cgi?id=35036
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::notifyWebViewDestroyed):
+ (WebKit::InspectorClient::InspectorClient):
+ (WebKit::InspectorClient::inspectorDestroyed):
+ (WebKit::InspectorClient::openInspectorFrontend):
+ (WebKit::InspectorClient::highlight):
+ (WebKit::InspectorClient::hideHighlight):
+ (WebKit::InspectorClient::populateSetting):
+ (WebKit::InspectorClient::storeSetting):
+ (WebKit::InspectorFrontendClient::InspectorFrontendClient):
+ (WebKit::InspectorFrontendClient::~InspectorFrontendClient):
+ (WebKit::InspectorFrontendClient::destroyInspectorWindow):
+ (WebKit::InspectorFrontendClient::localizedStringsURL):
+ (WebKit::InspectorFrontendClient::hiddenPanels):
+ (WebKit::InspectorFrontendClient::bringToFront):
+ (WebKit::InspectorFrontendClient::closeWindow):
+ (WebKit::InspectorFrontendClient::attachWindow):
+ (WebKit::InspectorFrontendClient::detachWindow):
+ (WebKit::InspectorFrontendClient::setAttachedWindowHeight):
+ (WebKit::InspectorFrontendClient::inspectedURLChanged):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2010-03-15 Joanmarie Diggs <joanmarie.diggs@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=35502
+ [Gtk] Objects of ATK_ROLE_TABLE should not implement AtkText
+
+ New test to be sure we do not accidentally implement AtkText for tables
+
+ * tests/testatk.c
+ (testWebkitAtkGetTextInTable):
+ (main):
+
+2010-03-09 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] GTK_WIDGET_IS_SENSITIVE is deprecated in GTK+ 2.20
+ https://bugs.webkit.org/show_bug.cgi?id=35909
+
+ * webkit/webkitwebview.cpp: GTK_WIDGET_IS_SENSITIVE has been
+ deprecated in gtk 2.20. Use gtk_widget_is_sensitive when available.
+
+2010-03-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Kenneth Rohde Christiansen.
+
+ Misc documentation fixes. Fixes (almost) all warnings emitted by
+ the documentation build process. Only the broken references to JSC
+ objects remain.
+
+ * webkit/webkitsecurityorigin.cpp:
+ * webkit/webkitwebbackforwardlist.cpp:
+ * webkit/webkitwebdatasource.cpp:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_class_init):
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_class_init):
+
+2010-03-11 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by David Hyatt.
+
+ Remove invalidateContents, it isn't used and it never makes sense to only invalidate the contents.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-03-09 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] testkeyevents doesn't stop if input event injection fails
+ https://bugs.webkit.org/show_bug.cgi?id=35922
+
+ * tests/testkeyevents.c:
+ (load_status_cb): Added a safeguard to exit from the test if the
+ input event injection failed.
+
+2010-03-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Documentation control files update for 1.1.23.
+
+ * docs/webkitgtk-docs.sgml:
+
+2010-03-08 Csaba Osztrogonác <ossy@webkit.org>
+
+ [GTK] Unreviewed buildfix after r55688.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_start):
+
+2010-03-02 Adam Treat <atreat@rim.com>
+
+ Reviewed by Dave Hyatt.
+
+ Adapt the gtk port to the refactoring of repaint methods.
+
+ https://bugs.webkit.org/show_bug.cgi?id=34214
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-03-08 Eric Uhrhane <ericu@chromium.org>
+
+ Reviewed by David Levin.
+
+ Remove the now-redundant Settings fields for the Database
+ https://bugs.webkit.org/show_bug.cgi?id=35763
+
+ No new tests; this code isn't called.
+
+ * webkit/webkitwebview.cpp: Remove the calls into Settings.
+ (DNDContentsRequest::webkit_web_view_update_settings):
+ (DNDContentsRequest::webkit_web_view_settings_notify):
+
+2010-03-06 Arno Renevier <arno@renevier.net>
+
+ Reviewed by Eric Seidel.
+
+ [Gtk] GEOLOCATION_POLICY_DECISION_CANCELLED unused
+ https://bugs.webkit.org/show_bug.cgi?id=35803
+
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_class_init):
+
+2010-03-03 Antonio Gomes <tonikitoo@webkit.org>
+
+ Reviewed by Gustavo Noronha.
+ Patch by Antonio Gomes <tonikitoo@webkit.org>
+
+ [Gtk] Add 'enable-spatial-navigation' setting for toggle Spatial Navigation on/off
+ https://bugs.webkit.org/show_bug.cgi?id=35701
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_update_settings):
+ (DNDContentsRequest::webkit_web_view_settings_notify):
+
+2010-03-03 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Xan Lopez.
+
+ Miscellaneous little fixes for the windows build of webkit-gtk
+ https://bugs.webkit.org/show_bug.cgi?id=35640
+
+ * webkit/webkitdownload.cpp: Windows headers define ERROR
+ which breaks the build. Undef ERROR if it is defined.
+
+2010-03-03 Philippe Normand <pnormand@igalia.com>
+
+ Unreviewed, build fix after r55452.
+
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_settings_notify): added missing braces.
+
+2010-03-02 Eric Uhrhane <ericu@chromium.org>
+
+ Reviewed by David Levin.
+
+ Move database enable bit fully out of settings
+ This is stage one of a three-stage commit [webkit, then chromium, then
+ webkit again]. In this change I'm adding calls to
+ Database::setIsAvailable inside Settings::setDatabaseEnabled and
+ anywhere else that called it, and switching webkit fully over to using
+ that flag [added in a previous checkin]. Phase two will remove
+ Chromium's use of Settings for the Database, and phase three will remove
+ the Setting for the Database enable entirely, leaving only
+ Database::isAvailable/setIsAvailable.
+
+ No new tests; tested by existing storage tests.
+
+ https://bugs.webkit.org/show_bug.cgi?id=35310
+
+ * webkit/webkitwebview.cpp: Add calls to Database::setIsAvailable
+ (DNDContentsRequest::webkit_web_view_update_settings):
+ (DNDContentsRequest::webkit_web_view_settings_notify):
+
+2010-03-02 Arno Renevier <arno@renevier.net>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [Gtk] implements ChromeClient::requestGeolocationPermissionForFrame
+ https://bugs.webkit.org/show_bug.cgi?id=35210
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ChromeClientGtk.h:
+ * docs/webkitgtk-sections.txt:
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkitgeolocationpolicydecision.cpp: Added.
+ (webkit_geolocation_policy_decision_class_init):
+ (webkit_geolocation_policy_decision_init):
+ (webkit_geolocation_policy_decision_new):
+ (webkit_geolocation_policy_allow):
+ (webkit_geolocation_policy_deny):
+ * webkit/webkitgeolocationpolicydecision.h: Added.
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_class_init):
+ * webkitmarshal.list:
+
+2010-03-01 José Millán Soto <jmillan@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Right click does not activate text entry
+ https://bugs.webkit.org/show_bug.cgi?id=29177
+
+ Makes the frame handle the mouse click event before sending the
+ context menu event.
+
+ * webkit/webkitwebview.cpp:
+ (PopupMenuPositionFunc):
+ Function created to make the popup menu appear in the correct position, especially
+ when invoked from the keyboard.
+ (webkit_web_view_forward_context_menu_event):
+ Mouse click event is sent to frame before creating context menu,
+ PopupMenuPositionFunc used to determine the position where the menu should appear.
+ (webkit_web_view_popup_menu_handler):
+ Improved focused node position detection. Event button set to right button.
+
+2010-03-01 Jakob Petsovits <jpetsovits@rim.com>
+
+ Reviewed by Adam Barth.
+
+ Adapt to the new ZoomMode enum.
+ https://bugs.webkit.org/show_bug.cgi?id=35347
+
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_apply_zoom_level):
+
+2010-03-01 Kalle Vahlman <zuh@iki.fi>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Queue a resize when either of the content dimensions change
+ https://bugs.webkit.org/show_bug.cgi?id=35489
+
+ The check for size changes only queued a resize if both of the content
+ dimensions change, leaving the widget size out-of-sync if eg. only the
+ width changes.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+
+2009-12-04 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Needs proper reporting of frame loader callbacks, in DRT
+ https://bugs.webkit.org/show_bug.cgi?id=32170
+
+ Add new signal to report when the document load is finished for a
+ frame.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFinishDocumentLoad):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2010-02-26 Antonio Gomes <tonikitoo@webkit.org>
+
+ Complementary commit of r55300. Missing "notify::" to signal name.
+
+ * tests/testwebview.c:
+ (test_webkit_web_view_grab_focus):
+
+2010-02-26 Antonio Gomes <tonikitoo@webkit.org>
+
+ Reviewed by Xan Lopez.
+ Patch by Antonio Gomes <tonikitoo@webkit.org>
+
+ [GTK] Make webkit_web_view_grab_focus to active focus controller.
+ https://bugs.webkit.org/show_bug.cgi?id=35402
+
+ When programatically setting focus to an element in an inner document,
+ calling "hasFocus()" from this document returns FALSE, because
+ document's FocusController is not activated. It does not happen
+ if |document| is the main document.
+
+ Making webkit_web_view_grab_focus to actually activate the FocusController,
+ fixes the issue.
+
+ * tests/testwebview.c:
+ (server_callback):
+ (test_webkit_web_view_grab_focus):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_grab_focus):
+
+2010-02-26 Alejandro G. Castro <alex@igalia.com>
+
+ Unreviewed.
+
+ Reverted last patch (r55295), it causes problems with the frames.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+
+2010-02-19 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Some region checks in scroll are not required
+ https://bugs.webkit.org/show_bug.cgi?id=35142
+
+ Removes some of the operations checking the moved and invalidated
+ regions when scrolling, it is done already in
+ gdk_window_move_region.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+
+2010-02-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] crashed when destroying
+ https://bugs.webkit.org/show_bug.cgi?id=31271
+
+ NULL-check the page before relaying the focus out event, since
+ this might happen when destroying the widget without destroying
+ its parent, and we currently crash.
+
+ * tests/testwebview.c:
+ (delayed_destroy):
+ (test_webkit_web_view_destroy):
+ (main):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_focus_in_event):
+
+2010-02-24 Krzysztof Kotlenga <pocek@users.sf.net>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [Gtk] Creation of a WebkitWebView widget is very slow
+ https://bugs.webkit.org/show_bug.cgi?id=30032
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::ignoreWordInSpellDocument): Change 'langs' to 'dicts'
+ to reflect the fact that the list just holds Enchant dictionaries now.
+ (WebKit::EditorClient::learnWord): Ditto.
+ (WebKit::EditorClient::checkSpellingOfString): Ditto.
+ (WebKit::EditorClient::getGuessesForWord): Ditto.
+ * webkit/webkitprivate.h: Remove the now unused SpellLanguage struct.
+ * webkit/webkitwebsettings.cpp: Change function call to reflect new
+ webkit_web_settings_get_enchant_dicts name.
+ (get_enchant_broker): Add this method which returns the enchant broker singleton.
+ (free_spell_checking_language): The list contents have changed, so change
+ the way each element is freed.
+ (webkit_web_settings_finalize): Change to reflect 'spell_checking_languages_list'
+ to 'enchant_dicts' member name change.
+ (webkit_web_settings_set_property): Use the broker singleton here instead of making
+ a new one for each language. The Enchant dictionary is now the list payload.
+ (webkit_web_settings_copy): More name-change updates.
+ (webkit_web_settings_get_enchant_dicts): Ditto.
+
+2010-02-23 Leandro Pereira <leandro@profusion.mobi>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Fixes references to GOwnPtr and GRefPtr so the GTK+ port builds
+ again.
+ http://webkit.org/b/35084
+
+ * WebKit/gtk/webkit/webkitwebview.cpp:
+
+2010-02-23 Shinichiro Hamaji <hamaji@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ [Gtk] Implement layoutTestController.numberOfPages
+ https://bugs.webkit.org/show_bug.cgi?id=35228
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_number_of_pages):
+
+2010-02-23 José Millán Soto <jmillan@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Server message not shown on http authentication
+ https://bugs.webkit.org/show_bug.cgi?id=34219
+
+ * webkit/webkitsoupauthdialog.c:
+ (show_auth_dialog):
+ Server message is displayed, messageLabel and message variables were
+ renamed to avoid confusion.
+
+2010-02-23 Steve Block <steveblock@google.com>
+
+ Reviewed by Darin Adler.
+
+ Adds ChromeClient::cancelGeolocationPermissionRequestForFrame
+ https://bugs.webkit.org/show_bug.cgi?id=34962
+
+ This method is required so that a Geolocation object can cancel an
+ asynchronous permission request. This allows the chrome client to cancel
+ any UI it is showing for the permission request.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::cancelGeolocationPermissionRequestForFrame):
+
+2010-02-23 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Do not do unnecessary work during size_allocate.
+
+ FrameView::resize will already queue a layout, so there's no need
+ to force one ourselves. On top of that, the layout function
+ already adjusts the view size when needed, so there's no need to
+ do that manually either. No change in the layout tests or unit
+ tests after this.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_size_allocate):
+
+2010-02-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for release.
+
+ * NEWS:
+
+2010-02-22 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [Soup] loses information related to message flags when converting from/to Resource{Request,Response}
+ https://bugs.webkit.org/show_bug.cgi?id=35093
+
+ Update the flags that are stored in the request, when the response
+ is received.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidReceiveResponse):
+
+2010-02-20 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed. Trivial fix - unnecessary variable got added by
+ mistake.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidReceiveResponse):
+
+2010-02-18 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] WebKitDownload documentation is incomplete
+ https://bugs.webkit.org/show_bug.cgi?id=35018
+
+ Concretely the error signal was undocumented. Also two relevant enums
+ were not included.
+
+ * docs/webkitgtk-sections.txt:
+ * docs/webkitgtk.types:
+ * webkit/webkitdownload.cpp:
+ (webkit_download_class_init):
+
+2010-02-17 Dmitry Titov <dimich@chromium.org>
+
+ Reviewed by David Levin, Darin Fisher, Simon Hausmann.
+
+ When a live iframe element is moved between pages, it still depends on the old page.
+ https://bugs.webkit.org/show_bug.cgi?id=34382
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didTransferChildFrameToNewDocument):
+ Added empty implementation of a new virtual method.
+
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2010-02-17 Kent Tamura <tkent@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ Introduces new Icon loading interface in order to support
+ asynchronous loading.
+ https://bugs.webkit.org/show_bug.cgi?id=32054
+
+ Add an empty implementation of ChromeClient::iconForFiles().
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::iconForFiles):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2010-02-17 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Rename 'enable-java' setting to 'enable-java-applet', since it
+ only controls whether <applet> is supported or not instead of
+ whether all Java content is supported or not.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_update_settings):
+ (DNDContentsRequest::webkit_web_view_settings_notify):
+
+2010-02-17 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [Linux] Webkit incompatible with Java plugins
+ https://bugs.webkit.org/show_bug.cgi?id=24912
+
+ Implement FrameLoaderClient::createJavaAppletWidget.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createJavaAppletWidget):
+
+2010-02-17 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [Linux] Webkit incompatible with Java plugins
+ https://bugs.webkit.org/show_bug.cgi?id=24912
+
+ Add a WebKitWebSetting to enable/disable the Java plugin support.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2010-02-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Test that data URIs that cause downloads to be started do not crash.
+
+ * tests/testdownload.c:
+ (mime_type_policy_decision_requested_cb):
+ (idle_quit_loop_cb):
+ (test_webkit_download_data):
+ (main):
+
+2010-02-17 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Missing property warning after r54873
+ https://bugs.webkit.org/show_bug.cgi?id=35023
+
+ Add a new WebKitWebSettings setting, 'enable-file-access-from-file-uris', set to
+ FALSE by default, that when enabled will assign each file:// URI
+ their own security domain.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+
+2010-02-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Check if the handle has a SoupMessage before trying to use
+ it. This will be the case in non-HTTP(S) URLs.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_new_with_handle):
+ (webkit_download_start):
+
+2010-02-16 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Add a new WebKitWebSettings setting, 'auto-resize-window', set to
+ FALSE by default, that when enabled will apply any resizes or
+ moves done by a page through various DOM methods (moveTo,
+ resizeTo, moveBy, resizeBy).
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+
+2010-02-15 Emilio Pozuelo Monfort <pochu27@gmail.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Fails to build on GNU/Hurd because of PATH_MAX usage
+ https://bugs.webkit.org/show_bug.cgi?id=34920
+
+ Use dynamic allocation instead of fixed PATH_MAX size buffers to
+ fix the build on GNU/Hurd, where PATH_MAX is undefined.
+
+ * tests/testmimehandling.c:
+ (main):
+ * tests/testwebview.c:
+ (main):
+
+2010-02-14 Diego Escalante Urrelo <descalante@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [gtk] WebKitDownload's currentSize property is guint, should be guint64
+ https://bugs.webkit.org/show_bug.cgi?id=34829
+
+ Actually use a guint64 for current-size property in WebKitDownload, we
+ were using a guint which is likely the cause for wrong sizes for files
+ over 4 Gb.
+
+ * webkit/webkitdownload.cpp:
+
+2010-02-09 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Hits assertion on history back, with page cache enabled, in specific conditions
+ https://bugs.webkit.org/show_bug.cgi?id=34773
+
+ Make sure cached frames have their scrollbars disconnected from
+ the WebView's adjustments.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::savePlatformDataToCachedFrame):
+
+2010-02-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Set GtkAdjustments on our FrameView when loading a page in the PageCache
+ https://bugs.webkit.org/show_bug.cgi?id=34754
+
+ Test that lower, and upper bounds are kept when goibg back with
+ page cache enabled, and disabled. Page cache behaviour is still a
+ bit broken (see FIXME).
+
+ * tests/testwebview.c:
+ (server_callback):
+ (map_event_cb):
+ (do_test_webkit_web_view_adjustments):
+ (test_webkit_web_view_adjustments):
+ (main):
+
+2010-02-09 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Set GtkAdjustments on our FrameView when loading a page in the PageCache
+ https://bugs.webkit.org/show_bug.cgi?id=34754
+
+ Set the Gtk Adjustments of the FrameViews when they are restored
+ from the PageCache too. Right we only do it for the newly created
+ FrameViews in transitionToCommittedForNewPage, but we it also
+ needs to be done in the equilavent transition method for cached
+ pages.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::postCommitFrameViewSetup):
+ (WebKit::FrameLoaderClient::transitionToCommittedFromCachedFrame):
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2010-02-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Implement FrameLoaderClient::hasWebView
+ https://bugs.webkit.org/show_bug.cgi?id=34682
+
+ Used for sanity-check ASSERTS in the FrameLoader code.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::hasWebView):
+
+2010-02-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ News about 1.1.21.
+
+ * NEWS:
+
+2010-02-05 Shinichiro Hamaji <hamaji@chromium.org>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [Gtk] Implement layoutTestController.pageNumberForElementById
+ https://bugs.webkit.org/show_bug.cgi?id=34572
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_page_number_for_element_by_id):
+
+2010-02-04 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Add and cleanup return values of signals in view and frame
+ https://bugs.webkit.org/show_bug.cgi?id=33484
+
+ Add missing and cleanup return values of web frame and web view signals.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_class_init):
+ * webkit/webkitwebview.cpp:
+ (DNDContentsRequest::webkit_web_view_class_init):
+
+2010-02-02 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ Changes in 1.1.20, and documentation control files update.
+
+ * NEWS:
+ * docs/webkitgtk-docs.sgml:
+
+2010-02-02 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] When selection changes selections in other WebView are not collapsed
+ https://bugs.webkit.org/show_bug.cgi?id=34043
+
+ Collapse the selection of a WebView even when the new selection owner is
+ a new WebView.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::clearClipboardContentsCallback): Only clear the DataObject we are setting
+ is not the same as the one referenced in this callback. Use the same behavior for
+ collapsing the selection.
+ (WebKit::PasteboardHelperGtk::writeClipboardContents): Instead of recording a boolean
+ record the actual data used while writing to the clipboard.
+
+2010-01-27 Martin Robinson <mrobinson@webkit.org>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Expose the IM context via the API
+ https://bugs.webkit.org/show_bug.cgi?id=33327
+
+ Expose the GtkIMMultiContext as a property of WebKitWebView. This will
+ allow embedders to generate the input method context menu entries and
+ make testing certain IM context behavior possible.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_property):
+ (DNDContentsRequest::webkit_web_view_get_im_context):
+ (DNDContentsRequest::webkit_web_view_class_init):
+
+2010-01-19 Joanmarie Diggs <joanmarie.diggs@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=30883
+ [Gtk] Implement AtkText for HTML elements which contain text
+
+ Adds two news tests.
+
+ * tests/testatk.c
+ (testWebkitAtkGetTextInParagraphAndBodySimple):
+ (testWebkitAtkGetTextInParagraphAndBodyModerate):
+ (main):
+
+2010-01-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed. Changes to the test I forgot to make after a last
+ minute change before landing 53294 - this causes make distcheck to
+ fail.
+
+ * tests/testloading.c:
+ (load_error_status_changed_cb):
+ (test_loading_error):
+
+2010-01-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ News items for 1.1.19.
+
+ * NEWS:
+
+2010-01-19 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] More crashes related to the clipboard management
+ https://bugs.webkit.org/show_bug.cgi?id=33746
+
+ Pass the WebKitWebView object (which is a GObject, thus
+ ref-counted) to the clipboard functions instead of passing the
+ Page - this allows us to explicitely protect the object inbetween
+ the clipboard call and its callbacks, which fixes the crash.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::respondToChangedSelection):
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::getClipboardContentsCallback):
+ (WebKit::clearClipboardContentsCallback):
+ (WebKit::PasteboardHelperGtk::writeClipboardContents):
+
+2010-01-15 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Original patch by David Ronis <david.ronis@mcgill.ca>
+
+ Upgrade 1.1.17->1.1.18 fails: GTK_WIDGET_TOPLEVEL' was not declared in this scope
+ https://bugs.webkit.org/show_bug.cgi?id=33486
+
+ Deprecated symbols replaced for gtk+ versions over 2.18.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::windowRect):
+ * webkit/webkitprivate.cpp:
+ (currentToplevelCallback):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_print_full):
+ (webkit_web_frame_print):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_focus_in_event):
+
+2010-01-14 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Eric Seidel.
+
+ [GTK] Crashes cleaning clipboard contents, with page cache enabled
+ https://bugs.webkit.org/show_bug.cgi?id=32900
+
+ Null-check the focus controller to avoid crashing. Could not find
+ a way to reproduce this consistently, thus no test.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::clearClipboardContentsCallback):
+
+2010-01-14 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Oliver Hunter.
+
+ [GTK] couple fixes for signal emissions, and property notifications
+ https://bugs.webkit.org/show_bug.cgi?id=33428
+
+ Do not emit signals and property notifications for error
+ pages. The notifications are not really useful for anything, you
+ can get them back by overriding the error pages, and it avoids a
+ number of hacks.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoad):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveIcon):
+ (WebKit::FrameLoaderClient::dispatchDidStartProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveTitle):
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ * tests/testloading.c:
+ (load_error_status_changed_cb):
+ (test_loading_error):
+
+2010-01-14 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Enable DOM clipboard and drag-and-drop access
+ https://bugs.webkit.org/show_bug.cgi?id=30623
+
+ Use DataObjectGtk when setting and clearing pasteboard data on
+ the GDK_SELECTION_PRIMARY clipboard.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::respondToChangedSelection):
+ (WebKit::EditorClient::EditorClient):
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::fillSelectionData):
+ (WebKit::targetListForDataObject):
+ (WebKit::getClipboardContentsCallback):
+ (WebKit::clearClipboardContentsCallback):
+ (WebKit::PasteboardHelperGtk::writeClipboardContents):
+ * WebCoreSupport/PasteboardHelperGtk.h:
+
+2010-01-14 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Review the tooltip implementation
+ https://bugs.webkit.org/show_bug.cgi?id=32819
+
+ Change the GTK tooltip implementation to avoid the workaround that
+ we are currently using. Now we use a new private API to set the
+ text and all the tooltip handling is done in the webview widget.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_tooltip_text): Added, new private API.
+ (webkit_web_view_query_tooltip): Added
+
+2010-01-09 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] couple fixes for signal emissions, and property notifications
+ https://bugs.webkit.org/show_bug.cgi?id=33428
+
+ Fix commitedLoad being called where it should not, causing it to
+ be called one time too many in some cases. We now match Qt's and
+ Mac's behavior here.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::finishedLoading):
+ * tests/testloading.c:
+ (load_error_status_changed_cb):
+
+2010-01-08 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] loading test should use SoupServer instead of actual sites
+ https://bugs.webkit.org/show_bug.cgi?id=33353
+
+ Make all the loading tests use SoupServer, instead of fetching
+ stuff from the Internet.
+
+ * tests/testloading.c:
+ (server_callback):
+ (get_uri_for_path):
+ (test_loading_status):
+ (test_loading_error):
+ (test_loading_cancelled):
+ (load_wentback_status_changed_cb):
+ (load_error_test):
+ (test_loading_goback):
+ (main):
+
+2010-01-06 Joanmarie Diggs <joanmarie.diggs@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=30883
+ [Gtk] Implement AtkText for HTML elements which contain text
+
+ * tests/testatk.c
+ (test_webkit_atk_get_text_at_offset):
+ (test_webkit_atk_get_text_at_offset_forms):
+ (test_webkit_atk_get_text_at_offset_newlines):
+
+2010-01-05 Gustavo Noronha Silva <gns@gnome.org>
+
+ Updated docs for 1.1.18 release.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2010-01-05 Xan Lopez <xlopez@igalia.com>
+
+ Update for 1.1.18 release.
+
+ * NEWS:
+
+2010-01-04 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Darin Fisher.
+
+ Reorganize, document and rename OS() platform macros.
+ https://bugs.webkit.org/show_bug.cgi?id=33198
+
+ Adapt to name changes.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_get_user_agent):
+
+2010-01-04 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Adam Barth.
+
+ Reorganize, document and rename CPU() platform macros.
+ https://bugs.webkit.org/show_bug.cgi?id=33145
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_get_user_agent):
+
+2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Remove emission of signal that does not exist.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::inspectorDestroyed):
+ (WebKit::InspectorClient::webViewDestroyed):
+
+2009-12-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Unset the adjustments in our FrameView when detaching from
+ parent. Fixes some crashers when transitioning to a new page from
+ a scrolled page.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::detachedFromParent2):
+
+2009-12-20 Xan Lopez <xlopez@igalia.com>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Disable the page cache by default since:
+
+ - It was previously off by default.
+ - There are still some issues when enabling it.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Provides a new API to copy WebKitWebHistoryItem objects.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (webkit_web_history_item_copy):
+ * webkit/webkitwebhistoryitem.h:
+
+2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Make sure we get the URI that is being loaded when updating
+ WebKitWebFrame's knowledge of it. This was causing problems now
+ that page cache is enabled.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad):
+ * tests/testloading.c:
+ (load_goback_status_changed_cb):
+ (load_wentback_status_changed_cb):
+ (test_loading_goback):
+ (main):
+
+2009-12-20 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Cache control APIs
+ https://bugs.webkit.org/show_bug.cgi?id=24001
+
+ Original patch by Bobby Powers <bobby@laptop.org>
+
+ Added new API to specify cache models for GTK port.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init): set a default cache model.
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+ (webkit_set_cache_model): Added function.
+ (webkit_get_cache_model): Added function.
+
+2009-12-20 Xan Lopez <xlopez@igalia.com>
+
+ Revert the previous patch, it introduces some failures in the
+ bots.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2009-12-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] crash when loading new page
+ https://bugs.webkit.org/show_bug.cgi?id=32752
+
+ Wait until the document is attached to adjust our alignments,
+ since we need to make sure the FrameView in the document content
+ render object matches the newly created FrameView for the new
+ page, otherwise we'll try to relayout the wrong view.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Create a new WebKitDataSource object when attaching to a frame, if
+ one does not exist. This may happen when we are fetching data from
+ the page cache.
+
+ * WebCoreSupport/DocumentLoaderGtk.cpp:
+ (WebKit::DocumentLoader::attachToFrame):
+ (WebKit::DocumentLoader::unrefDataSource):
+
+2009-12-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Make sure the text encoding machinery is initialized from the main
+ frame, before opening the icon database.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+
+2009-12-19 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ Fixed the problem when pasting in the same window with the
+ middle-button, now we store a reference to the range instead of
+ requesting it every time, and we do not release it until the
+ clipboard is requested.
+ https://bugs.webkit.org/show_bug.cgi?id=28153
+
+ * WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp:
+ * WebKit/gtk/WebCoreSupport/EditorClientGtk.h:
+
+2009-12-19 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Protect download objects when reporting errors, to make sure the
+ download stays alive between the status change notification, and
+ the error signal emission.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_error):
+
+2009-12-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix gtk-doc of webkit_web_resource_new.
+
+ * webkit/webkitwebresource.cpp:
+
+2009-12-18 Adam Roben <aroben@apple.com>
+
+ GTK build fix
+
+ * webkit/webkitprivate.cpp: Added #include.
+
+2009-12-18 Kalle Vahlman <kalle.vahlman@movial.com> and Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Add enable-page-cache property to WebSettings for disabling the Page Cache
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+
+2009-12-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ More make distcheck fixes. Use a more robust solution to making
+ sure we are in the correct directory for running these tests.
+
+ * tests/testmimehandling.c:
+ (main):
+ * tests/testwebview.c:
+ (main):
+
+2009-12-17 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] Don't assume downloads are always synchronous
+ http://bugs.webkit.org/show_bug.cgi?id=32359
+
+ * tests/testdownload.c:
+ (download_requested_cb):
+ (set_filename):
+ (test_webkit_download_perform):
+ (test_webkit_download_synch):
+ (test_webkit_download_asynch):
+ (main): Test downloads synchronously and asynchronously.
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+ (webkit_web_view_request_download): Only try to start a requested
+ download if the destination URI is set and clarify the documentation.
+
+2009-12-17 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Xan Lopez.
+
+ Deprecate the title-changed signal of WebKitWebFrame.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_class_init):
+
+2009-12-17 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs
+ https://bugs.webkit.org/show_bug.cgi?id=21599
+
+ Convert a use of GOwnPtr for a reference counted type to GRefPtr.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createPlugin):
+
+2009-12-17 Evan Martin <evan@chromium.org>
+
+ Reviewed by Xan Lopez.
+
+ Expose the page workarounds ("quirks") setting to the GTK+ WebKit API.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+
+2009-12-16 Dan Winship <danw@gnome.org>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Content-Encoding support
+
+ https://bugs.webkit.org/show_bug.cgi?id=522772
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init): add a SoupContentDecoder feature to the session
+
+2009-12-16 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Deprecate the old loading signals load-started, load-committed,
+ load-finished, load-progress-changed and change unit tests to use
+ load-status instead.
+
+ * tests/testmimehandling.c:
+ (idle_quit_loop_cb):
+ (test_mime_type): use notify::load-status
+ * tests/testwebdatasource.c:
+ (notify_load_status_unreachable_cb):
+ (notify_load_status_cb):
+ (test_webkit_web_data_source):
+ (test_webkit_web_data_source_unreachable_uri): Remove uses of
+ g_main_loop_is_running. It's an error if the loop is wrongly terminated.
+ * tests/testwebresource.c:
+ (notify_load_status_cb):
+ (test_web_resource_loading):
+ (notify_load_status_sub_cb):
+ (test_web_resource_sub_resource_loading): use notify::load-status
+ * tests/testwebview.c:
+ (idle_quit_loop_cb):
+ (test_webkit_web_view_icon_uri):
+ * tests/testwindow.c:
+ (notify_load_status_cb):
+ (test_webkit_window_scrollbar_policy): use notify::load-status
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_class_init):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init): Deprecate old load signals.
+
+2009-12-16 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Take into account favicon.ico in the webresource test.
+
+ * tests/testwebresource.c:
+ (test_web_resource_sub_resource_loading):
+
+2009-12-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Add tab_key_cycles_through_elements to copies of
+ WebKitWebSettings.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_copy):
+
+2009-12-16 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GTK] webkit_web_navigation_action_get_button() documentation
+ https://bugs.webkit.org/show_bug.cgi?id=25555
+
+ Small documentation improvement for webkit_web_navigation_action_get_button.
+
+ * webkit/webkitwebnavigationaction.cpp:
+
+2009-12-13 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix for https://bugs.webkit.org/show_bug.cgi?id=32499
+ Add client based Geolocation provider
+
+ Add first cut of a client based Geolocation provider. This is guarded by
+ ENABLE(CLIENT_BASED_GEOLOCATION) and is off by default for now. This adds a
+ GeolocationControllerClient interface that no-one currently implements,
+ but will in a subsequent patch.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+
+2009-12-14 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ New setting to allow applications to completely suppress the
+ default context menu that is generated by WebKit. This allows them
+ to still pass the event to the default handler without needing to
+ use ugly hacks such as handling populate-popup, and removing all
+ the items from the default context menu.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_forward_context_menu_event):
+
+2009-12-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Also give the right click event to the frame's event handler, if
+ there WebCore decides to not generate the default context
+ menu. This fixes some pages that handle right-button clicks for
+ things other than context menu creation.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_forward_context_menu_event):
+
+2009-12-13 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=31014
+ [Gtk] Build fails with gtk+-2.10 (no tested with older releases)
+
+ Guard GTK+ 2.12 specific tooltip code with #ifdef.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+
+2009-12-11 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Eric Seidel.
+
+ [GTK] Build with --disable-svg is broken
+ http://bugs.webkit.org/show_bug.cgi?id=32361
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_pause_svg_animation): Fix ENABLE(SVG) guards.
+
+2009-12-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Add a missing null-check, that is causing some crash reports.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+
+2009-12-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Should provide an API to control the IconDatabase
+ https://bugs.webkit.org/show_bug.cgi?id=32334
+
+ First step towards a full IconDatabase API. This provides
+ notification for pages with favicons, and lets clients handle
+ them.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::registerForIconNotification):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveIcon):
+ * tests/resources/blank.ico: Added.
+ * tests/testwebview.c: Added.
+ (server_callback):
+ (idle_quit_loop_cb):
+ (icon_uri_changed_cb):
+ (icon_loaded_cb):
+ (test_webkit_web_view_icon_uri):
+ (main):
+ * webkit/webkitprivate.cpp:
+ (closeIconDatabaseOnExit):
+ (webkit_init):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_property):
+ (webkit_web_view_finalize):
+ (webkit_web_view_class_init):
+ (webkit_web_view_get_icon_uri):
+ * webkit/webkitwebview.h:
+
+2009-12-08 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Point out the meaning of "Content-Disposition" when implementing the
+ mime-type-policy-decision-requested signal.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2009-12-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Doesn't respect Content-Disposition for downloads, and provides no way for apps to do that
+ https://bugs.webkit.org/show_bug.cgi?id=32247
+
+ Provide a way for applications to respect Content-Disposition, by
+ fetching the WebKitNetworkResponse from the frame during
+ mime-type-policy-decision-requested.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType): Download
+ content when Content-Disposition is attachment.
+ * tests/testmimehandling.c:
+ (server_callback):
+ (mime_type_policy_decision_requested_cb):
+ * tests/testwebframe.c:
+ (test_webkit_web_frame_response):
+ (main):
+ * webkit/webkitprivate.cpp:
+ (WebKit::core):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_network_response):
+ * webkit/webkitwebframe.h:
+
+2009-12-07 Gyuyoung Kim <gyuyoung@gmail.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=32024
+ [GTK] WebKit does not compile without JAVASCRIPT_DEBUGGER
+
+ Fix build errors when javascript-debugger is disabled on GTK
+
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_set_property):
+ (webkit_web_inspector_get_property):
+
+2009-12-07 Joanmarie Diggs <joanmarie.diggs@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25415
+ [GTK][ATK] Please implement support for get_text_at_offset
+
+ Eliminate the segfaults which occur when accessing the text interface now
+ implemented by text controls.
+
+ * tests/testatk.c
+ (test_webkit_atk_get_text_at_offset_textarea):
+ (test_webkit_atk_get_text_at_offset_text_input):
+ (main):
+
+2009-12-06 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ New test to make sure we do not regress this feature anymore. All
+ test files were created by me.
+
+ [GTK] REGRESSION: webkit thinks it can render PDFs
+ https://bugs.webkit.org/show_bug.cgi?id=32183
+
+ * tests/resources/test.html: Added.
+ * tests/resources/test.ogg: Added.
+ * tests/resources/test.pdf: Added.
+ * tests/resources/test.txt: Added.
+ * tests/testmimehandling.c: Added.
+ (server_callback):
+ (idle_quit_loop_cb):
+ (mime_type_policy_decision_requested_cb):
+ (test_mime_type):
+ (test_mime_pdf):
+ (test_mime_html):
+ (test_mime_text):
+ (test_mime_ogg):
+ (main):
+
+2009-12-05 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Use a better URI for the unreachable test. localhost:80 is very
+ likely to be open.
+
+ * tests/testwebdatasource.c:
+ (load_finished_unreachable_cb):
+ (test_webkit_web_data_source_unreachable_uri):
+
+2009-12-03 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ <rdar://problem/7214236> and http://webkit.org/b/32052 - Implement HTML5 state object history API
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidPushStateWithinPage):
+ (WebKit::FrameLoaderClient::dispatchDidReplaceStateWithinPage):
+ (WebKit::FrameLoaderClient::dispatchDidPopStateWithinPage):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-12-03 Pavel Feldman <pfeldman@dhcp-172-28-174-220.spb.corp.google.com>
+
+ Reviewed by Timothy Hatcher.
+
+ Web Inspector: Simplify the settings support in inspector controller.
+
+ https://bugs.webkit.org/show_bug.cgi?id=32076
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::populateSetting):
+ (WebKit::InspectorClient::storeSetting):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2009-12-03 Ben Murdoch <benm@google.com>
+
+ Reviewed by Brady Eidson.
+
+ [Android] The FrameLoaderClient is unaware of BackForwardList changes.
+ https://bugs.webkit.org/show_bug.cgi?id=31914
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidAddBackForwardItem): Add an empty implementation. Method added to FrameLoaderClient by Android (see bug).
+ (WebKit::FrameLoaderClient::dispatchDidRemoveBackForwardItem): ditto.
+ (WebKit::FrameLoaderClient::dispatchDidChangeBackForwardIndex): ditto.
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-12-01 Nikolas Zimmermann <nzimmermann@rim.com>
+
+ Reviewed by Simon Fraser.
+
+ Add SVG animation test framework with 'snapshot' functionality
+ https://bugs.webkit.org/show_bug.cgi?id=31897
+
+ Add API used by the new 'sampleSVGAnimationForElementAtTime' DRT method,
+ forwarding the call to SVGDocumentExtensions, if SVG is enabled.
+
+ Implemented just like the existing pauseAnimation* methods for CSS animations.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_pause_svg_animation):
+
+2009-11-30 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Prepare for 1.1.17 release.
+
+ * NEWS:
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2009-11-26 Laszlo Gombos <laszlo.1.gombos@nokia.com>
+
+ Reviewed by Oliver Hunt.
+
+ Move GOwnPtr* from wtf to wtf/gtk
+ https://bugs.webkit.org/show_bug.cgi?id=31793
+
+ * webkit/webkitwebview.cpp: Change the path for GOwnPtr.h.
+
+2009-11-24 Joanmarie Diggs <joanmarie.diggs@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25415
+ [GTK][ATK] Please implement support for get_text_at_offset
+
+ When building up the pango layout from text boxes, only append a
+ newline char after verifying there are no more boxes on this line.
+
+ * tests/testatk.c
+ (test_webkit_atk_get_text_at_offset_newlines):
+ (main):
+
+2009-11-19 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Web Inspector: Implement "show inspector" in WebKit GTK
+ API and enable console tests.
+
+ https://bugs.webkit.org/show_bug.cgi?id=31669
+
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_show):
+ * webkit/webkitwebinspector.h:
+
+2009-11-18 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Tab key does not cycle through elements by default
+ https://bugs.webkit.org/show_bug.cgi?id=31505
+
+ Properly localize documentation strings for the
+ tab-key-cycles-through-elements property.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2009-11-17 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Tab key does not cycle through elements by default
+ https://bugs.webkit.org/show_bug.cgi?id=31505
+
+ Ensure that WebKitWebSettings tab-key-cycles-through-elements
+ property is true by default with the G_PARAM_CONSTRUCT_FLAG.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2009-11-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Failing test media/video-document-types.html
+ https://bugs.webkit.org/show_bug.cgi?id=31352
+
+ Match what Mac has been doing since r36001: cancel the main load,
+ and handle failures caused by 'will be handled by plugin' errors.
+
+ Covered by test media/video-document-types.html
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::shouldFallBack):
+
+2009-11-17 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Web Inspector: Make DRT show web inspector for tests in inspector/ folder.
+ - Updated DRT to show/close inspector for all tests under /inspector
+ - Introduced LayoutTestController::setTimelineProfilingEnabled and
+ WebInspector::setTimelineProfilingEnabled beside setJavaScriptProfilingEnabled
+ - Removed reload on each inspector test
+ - Renamed fast/inspector to fast/inspector-support in order not to trigger
+ inspector for those.
+ - Reimplemented timeline tests in order to get rid of reload there.
+ - Moved tests that don't require harness into the fast group.
+
+ https://bugs.webkit.org/show_bug.cgi?id=31472
+
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_class_init):
+ (webkit_web_inspector_set_property):
+ (webkit_web_inspector_get_property):
+
+2009-11-13 Adam Roben <aroben@apple.com>
+
+ Update for changes to FrameLoaderClient
+
+ Fixes <http://webkit.org/b/31124> Tell the WebFrameLoadDelegate when
+ window objects in isolated worlds are cleared
+
+ Reviewed by Dave Hyatt.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidClearWindowObjectInWorld):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ Replaced windowObjectCleared with this function. Does nothing if the
+ passed-in world is not the mainThreadNormalWorld().
+
+2009-11-12 Shinichiro Hamaji <hamaji@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ externalRepresentation should take Frame as the argument
+ https://bugs.webkit.org/show_bug.cgi?id=31393
+
+ No new tests as this is just a refactoring.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_dump_render_tree):
+
+2009-11-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ Should not print javascript console messages to stdout
+ https://bugs.webkit.org/show_bug.cgi?id=31346
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_real_console_message): Print console messages to
+ stderr instead, using the recommended method (a g_log variant).
+
+2009-11-11 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=30221
+ [GTK] fails to load media embedded in iframe element
+
+ The FrameLoader can show Media if the audio/video support is
+ enabled at compile time.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::canShowMIMEType):
+
+2009-11-10 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK] Remove WebSocket configuration from WebKitWebSettings
+ https://bugs.webkit.org/show_bug.cgi?id=31244
+
+ Remove non-functional enable-web-sockets property from WebKitWebSettings.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+
+2009-11-09 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK] Expose Page::tabKeyCyclesThroughElements in the API
+ https://bugs.webkit.org/show_bug.cgi?id=30482
+
+ Expose Page::tabKeyCyclesThroughElements as a property of
+ WebKitWebSettings.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-11-04 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK] Enable DOM clipboard and drag-and-drop access
+ https://bugs.webkit.org/show_bug.cgi?id=30623
+
+ Move handling of target list to PasteboardHelperGtk.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::PasteboardHelperGtk::PasteboardHelperGtk):
+ (WebKit::PasteboardHelperGtk::~PasteboardHelperGtk):
+ (WebKit::PasteboardHelperGtk::fullTargetList):
+ * WebCoreSupport/PasteboardHelperGtk.h:
+ * webkit/webkitprivate.cpp:
+ (WebKit::pasteboardHelperInstance):
+ (webkit_init):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose):
+ (webkit_web_view_init):
+ (webkit_web_view_get_copy_target_list):
+ (webkit_web_view_get_paste_target_list):
+
+2009-10-30 Evan Stade <estade@chromium.org>
+
+ Reviewed by David Levin.
+
+ Notify the chrome when the focused node has changed.
+ https://bugs.webkit.org/show_bug.cgi?id=30832
+
+ Added stub implementation for new ChromeClient function.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::focusedNodeChanged):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2009-10-29 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Trivial fix - move public API declaration into the
+ public subsection of the doc.
+
+ * docs/webkitgtk-sections.txt:
+
+2009-10-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK] API to start inspector for a WebView
+ https://bugs.webkit.org/show_bug.cgi?id=22551
+
+ Provide a simple, coordinates-based API to start the inspector.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::createPage): Use files from the source
+ tree when running from the top of the source directory.
+ (WebKit::InspectorClient::localizedStringsURL): Ditto.
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_inspect_coordinates):
+ (webkit_web_inspector_close):
+ (webkit_web_inspector_execute_script):
+ * webkit/webkitwebinspector.h:
+
+2009-10-27 Shinichiro Hamaji <hamaji@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Provide a way to get counter values with layoutTestContoller
+ https://bugs.webkit.org/show_bug.cgi?id=30555
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_counter_value_for_element_by_id):
+
+2009-10-28 Joe Mason <jmason@rim.com>
+
+ Reviewed by Adam Treat.
+
+ Call the shared FrameLoader::defaultObjectContentType instead of
+ copying code into FrameLoaderClient::objectContentType. This causes no
+ behavioural change.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::objectContentType):
+
+2009-10-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ [Gtk] Extraneous object of ROLE_PANEL in hierarchy for entries
+ https://bugs.webkit.org/show_bug.cgi?id=25897
+
+ Update test to also check that entries implement the AtkText
+ interface.
+
+ * tests/testatk.c:
+ (run_get_text_tests):
+ (test_webkit_atk_get_text_at_offset_forms):
+ (test_webkit_atk_get_text_at_offset):
+ (main):
+
+2009-10-26 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Update documentation control files for 1.1.16.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-10-26 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=30759
+ [GTK] Should use WebKitNetworkResponse, and expose it
+
+ WebKitDownload now uses our WebKitNetworkResponse instead of using
+ ResourceResponse directly. By exposing the response, like we do
+ with the request, we give our users the ability to look at the
+ response headers, status code, and so on, through the SoupMessage
+ object.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_dispose):
+ (webkit_download_finalize):
+ (webkit_download_get_property):
+ (webkit_download_set_property):
+ (webkit_download_class_init):
+ (webkit_download_get_network_response):
+ (webkit_download_set_response):
+ (webkit_download_get_total_size):
+ (webkit_download_get_progress):
+ (webkit_download_received_data):
+ * webkit/webkitdownload.h:
+
+2009-10-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for 1.1.16 release.
+
+ * NEWS:
+
+2009-10-22 Gavin Barraclough <barraclough@apple.com>
+
+ Reviewed by NOBODY (build fix).
+ Build fix following bug #30696.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_global_context):
+
+2009-10-22 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ m_webView should be private attribute of the EditorClientGtk.
+ https://bugs.webkit.org/show_bug.cgi?id=30664
+
+ * WebKit/gtk/WebCoreSupport/EditorClientGtk.h:
+
+2009-10-20 Fumitoshi Ukai <ukai@chromium.org>
+
+ Reviewed by David Levin.
+
+ Removed WebSocket runtime settings.
+ https://bugs.webkit.org/show_bug.cgi?id=29896
+
+ WebSocket runtime configuration is supported by chromium/v8 only.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-10-19 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ [Gtk] ApplicationCacheStorage error while compiling WebKit/gtk/webkit/webkitapplicationcache.cpp
+ https://bugs.webkit.org/show_bug.cgi?id=30358
+
+ Guard calls to cacheStorage() with ENABLE(OFFLINE_WEB_APPLICATIONS).
+
+ * webkit/webkitapplicationcache.cpp:
+
+2009-10-19 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Add a settings to allow DOM pastes to be performed.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-10-19 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Make WebKitHitTestResult actually appear in the
+ documentation index.
+
+ * docs/webkitgtk-docs.sgml:
+
+2009-10-15 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Protect WebSocket calls in case the feature is not compiled in.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-10-15 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Add a settings to enable support for experimental Web Sockets.
+ Currently this comes in handy in layout tests.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-10-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ page transition may crash webkit
+ https://bugs.webkit.org/show_bug.cgi?id=29890
+
+ There are actually cases in which a resource may be asked using
+ webkit_web_view_get_resource after a new load has already been
+ started, so protect ourselves from crashes in this case.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoading):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_resource):
+
+2009-10-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Remove unnecessary self-include.
+
+ * webkit/webkitsecurityorigin.h:
+
+2009-10-12 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Crash when right-clicking misspelled word
+ https://bugs.webkit.org/show_bug.cgi?id=29772
+
+ Make sure the dictionary exist before adding it to the list of
+ dictionaries.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::checkSpellingOfString):
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_set_property):
+
+2009-10-08 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ Move executeScript from FrameLoader to ScriptController
+ https://bugs.webkit.org/show_bug.cgi?id=30200
+
+ Update API call.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_execute_script):
+
+2009-10-07 Xan Lopez <xlopez@igalia.com>
+
+ Fix the GTK+ build.
+
+ * webkit/webkitwebpolicydecision.cpp:
+ (webkit_web_policy_decision_use):
+ (webkit_web_policy_decision_ignore):
+ (webkit_web_policy_decision_download):
+
+2009-10-07 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ Factor PolicyChecker out of FrameLoader
+ https://bugs.webkit.org/show_bug.cgi?id=30155
+
+ Move the policy callback to the policy object.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchWillSubmitForm):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+
+2009-10-07 Martin Robinson <martin.james.robinson@gmail.com>
+
+ [GTK] Segfault while testing fast/events/keydown-keypress-preventDefault.html
+ https://bugs.webkit.org/show_bug.cgi?id=30121
+
+ Clear previous preedit or pending composition before storing new ones.
+ This can happen when a WebView receives a native keydown event without
+ a matching keyup event or when preventDefault() is called on DOM keydown
+ events.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::setPendingComposition):
+ (WebKit::setPendingPreedit):
+ (WebKit::clearPendingIMData):
+ (WebKit::imContextCommitted):
+ (WebKit::imContextPreeditChanged):
+
+2009-10-06 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25526
+ [Gtk] Additional support is needed for caret browsing
+
+ Remove special cases for caret browsing, they are now handled in
+ cross-platform code.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeyboardEvent):
+
+2009-10-06 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Web Inspector: close inspector client view on
+ InspectorController::close API call.
+
+ In order to run batch web inspector layout tests (and not affect
+ subsequent tests) we should close inspector client's view upon
+ InspectorController::close API call.
+
+ https://bugs.webkit.org/show_bug.cgi?id=30009
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::createPage):
+
+2009-10-06 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Xan Lopez.
+
+ ASSERT executing the webhistory unittest in a debug build
+ https://bugs.webkit.org/show_bug.cgi?id=28947
+
+ We have to call g_object_new first to initialize webkit threading
+ before creating the KURL.
+
+ * WebKit/gtk/webkit/webkitwebhistoryitem.cpp:
+
+2009-10-06 José Millán Soto <fid@gpul.org>
+
+ Reviewed by Xan Lopez.
+
+ Header files of WebKitGTK do not comply with WebKit coding style (Patch attached)
+ https://bugs.webkit.org/show_bug.cgi?id=30076
+
+ Solves various issues in header files.
+
+ * WebCoreSupport/DocumentLoaderGtk.h: Added "headed guards"
+ * webkit/webkitdefines.h:
+ * webkit/webkitdownload.h:
+ * webkit/webkiterror.h:
+ * webkit/webkithittestresult.h:
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitnetworkresponse.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitsecurityorigin.h:
+ * webkit/webkitsoupauthdialog.h:
+ * webkit/webkitversion.h.in:
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebdatabase.h:
+ * webkit/webkitwebdatasource.h:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebinspector.h:
+ * webkit/webkitwebnavigationaction.h:
+ * webkit/webkitwebpolicydecision.h:
+ * webkit/webkitwebresource.h:
+ * webkit/webkitwebsettings.h:
+ * webkit/webkitwebview.h:
+ * webkit/webkitwebwindowfeatures.h:
+
+2009-10-03 Adam Barth <abarth@webkit.org>
+
+ More build fixing.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_go_back_or_forward):
+ (webkit_web_view_can_go_back_or_forward):
+
+2009-10-03 Adam Barth <abarth@webkit.org>
+
+ Unreviewed build fix.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_go_back_or_forward):
+
+2009-10-03 Adam Barth <abarth@webkit.org>
+
+ Reviewed by Sam Weinig.
+
+ Factor PageController out of FrameLoader and Page
+ https://bugs.webkit.org/show_bug.cgi?id=30037
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_can_go_back_or_forward):
+
+2009-10-01 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Set the type for the fake event, otherwise the test ASSERTs in
+ debug builds.
+
+ * tests/testhittestresult.c:
+ (load_status_cb):
+
+2009-10-01 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] GtkIMContext filtering interferes with DOM key events
+ https://bugs.webkit.org/show_bug.cgi?id=28733
+
+ Ensure that keyboard events filtered by the GtkIMContext still create
+ the proper DOM events.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::clearPendingIMData):
+ (WebKit::imContextCommitted):
+ (WebKit::imContextPreeditChanged):
+ (WebKit::EditorClient::shouldBeginEditing):
+ (WebKit::EditorClient::shouldEndEditing):
+ (WebKit::interpretEditorCommandKeyEvent):
+ (WebKit::handleCaretBrowsingKeyboardEvent):
+ (WebKit::EditorClient::handleKeyboardEvent):
+ (WebKit::EditorClient::handleInputMethodKeydown):
+ * tests/testkeyevents.c: Added.
+ (test_info_new):
+ (test_info_destroy):
+ (key_event_fixture_setup):
+ (key_event_fixture_teardown):
+ (key_press_event_cb):
+ (key_release_event_cb):
+ (load_status_cb):
+ (map_event_cb):
+ (test_keypress):
+ (main):
+
+2009-09-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Do not set a non-default parent window for child widgets. We are
+ just doing the same than the default path does, and on top of that
+ if the widget's window changes (for example, during DnD widgets
+ are usually unrealized/realized) the child widget will we left
+ pointing to a dead window.
+
+ For examples of crashers caused by this see
+ https://bugzilla.gnome.org/show_bug.cgi?id=596397 and
+ https://bugzilla.gnome.org/show_bug.cgi?id=596398
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_container_add):
+
+2009-09-29 Xan Lopez <xlopez@igalia.com>
+
+ Rubber-stamped by Eric Seidel.
+
+ [Gtk] Crash when saving a password
+ https://bugs.webkit.org/show_bug.cgi?id=28070
+
+ Disconnect the 'got-headers' callback when we are done with
+ it. The signal can be emitted more than once if the message is
+ retransmitted, but each time that happens authData is created
+ again and a new callback connected, so we have to get rid of the
+ old one (which will crash because we free authData).
+
+ * webkit/webkitsoupauthdialog.c:
+ (save_password_callback):
+
+2009-09-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Pop down the context menu when the page transitions to committed,
+ to avoid keeping a context menu out of context.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (destroy_menu_cb):
+ (webkit_web_view_forward_context_menu_event):
+
+2009-09-24 Jon Honeycutt <jhoneycutt@apple.com>
+
+ Reviewed by Alice Liu.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_init):
+ Pass 0 for new Page constructor argument.
+
+2009-09-24 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha and Jan Alonzo.
+ [GTK] Add WEBKIT_LOAD_ERROR status
+ https://bugs.webkit.org/show_bug.cgi?id=29644
+
+ Add a new load-status enum value, WEBKIT_LOAD_FAILED, emitted when
+ there's an error during the load process. This is needed if we
+ want notify::load-status to be able to handle all situations,
+ since WEBKIT_LOAD_FINISHED is not emitted when there's an error
+ and we are lacking a notification of the load being stopped.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+ * tests/testloading.c:
+ (web_loading_fixture_setup):
+ (load_error_status_changed_cb):
+ (load_error_cb):
+ (test_loading_error):
+ (load_cancelled_cb):
+ (stop_load):
+ (load_cancelled_status_changed_cb):
+ (test_loading_cancelled):
+ (main):
+ * webkit/webkitwebframe.h:
+
+2009-09-24 Xan Lopez <xlopez@igalia.com>
+
+ Revert r48697, since it broke key handling notification to GTK+.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+ (WebKit::imContextPreeditChanged):
+ (WebKit::EditorClient::shouldBeginEditing):
+ (WebKit::EditorClient::shouldEndEditing):
+ (WebKit::interpretKeyEvent):
+ (WebKit::handleEditingKeyboardEvent):
+ (WebKit::EditorClient::handleKeyboardEvent):
+ (WebKit::EditorClient::handleInputMethodKeydown):
+
+2009-09-23 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] REGRESSION: BitmapImage::getGdkPixbuf fails for non-square images
+ https://bugs.webkit.org/show_bug.cgi?id=29654
+
+ Ensure that even when GTKSimpleIMContext filters non-IME keystrokes,
+ keyboard events are fired properly.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::clearPendingIMData):
+ (WebKit::imContextCommitted):
+ (WebKit::imContextPreeditChanged):
+ (WebKit::EditorClient::shouldBeginEditing):
+ (WebKit::EditorClient::shouldEndEditing):
+ (WebKit::interpretEditorCommandKeyEvent):
+ (WebKit::handleCaretBrowsingKeyboardEvent):
+ (WebKit::EditorClient::handleKeyboardEvent):
+ (WebKit::EditorClient::handleInputMethodKeydown):
+
+2009-09-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] need to dump number of pending unload handlers
+ https://bugs.webkit.org/show_bug.cgi?id=29685
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_pending_unload_event_count): New function to
+ satisfy DRT needs.
+
+2009-09-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ Minor reorganization to the patch landed in
+ http://trac.webkit.org/changeset/48670. Also move JSCore-1.0.gir
+ in the gtk directory as that's only useful to the Gtk port at the
+ moment.
+
+ * JSCore-1.0.gir: Renamed from JSCore-1.0.gir.
+
+2009-09-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ Hardcode element positions at 0,0 so that we know where to
+ generate events to test WebKitHitTestResult.
+
+ * tests/testhittestresult.c:
+ (load_status_cb):
+ (test_webkit_hit_test_result):
+ (main):
+
+2009-09-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK] WebKitHitTestResult is completely broken in gmail
+ https://bugs.webkit.org/show_bug.cgi?id=29527
+
+ We need to use the main or focused frame when doing the coordinate
+ transformation instead of always using the main frame.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_hit_test_result):
+
+2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Update documentation control files to 1.1.15.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed docs build fix. Current CFLAGS and LIBS variables no
+ longer bring gthread in.
+
+ * docs/GNUmakefile.am:
+
+2009-09-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update for release.
+
+ * NEWS:
+
+2009-09-20 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Small documentation fix.
+
+ * webkit/webkithittestresult.cpp:
+
+2009-09-18 Xan Lopez <xlopez@igalia.com>
+
+ Build fix.
+
+ Add missing file to the repository.
+
+ * tests/testhittestresult.c: Added.
+ (test_info_new):
+ (test_info_destroy):
+ (hit_test_result_fixture_setup):
+ (hit_test_result_fixture_teardown):
+ (load_status_cb):
+ (test_webkit_hit_test_result):
+ (main):
+
+2009-09-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ [Gtk] Unreviewed build fix.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::platformPageClient):
+
+2009-09-17 Kenneth Rohde Christiansen <kenneth@webkit.org>
+
+ Reviewed by Simon Hausmann.
+
+ Make PlatformWindow return something else than PlatformWidget
+ https://bugs.webkit.org/show_bug.cgi?id=29085
+
+ Reflect the rename of platformWindow and it's return type.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::platformPageClient):
+ (WebKit::ChromeClient::runOpenPanel):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * webkit/webkitprivate.cpp:
+ (currentToplevelCallback):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_popup_menu_handler):
+
+2009-09-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ Document webkit_web_view_stop_loading.
+
+ * webkit/webkitwebview.cpp:
+
+2009-09-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha and Jan Alonzo.
+
+ [GTK] context menu overriding API is very limited
+ https://bugs.webkit.org/show_bug.cgi?id=27546
+
+ Add webkit_web_view_get_hit_test_result, a function to get a hit
+ test result from a GdkEventButton. Useful to let applications
+ decide between several actions on button press depending on what
+ is being pressed.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_stop_loading):
+ (documentPointForWindowPoint):
+ (webkit_web_view_get_hit_test_result):
+ * webkit/webkitwebview.h:
+
+2009-09-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha and Jan Alonzo.
+
+ [GTK] context menu overriding API is very limited
+ https://bugs.webkit.org/show_bug.cgi?id=27546
+
+ Add WebKitHitTestResult, a wrapper over HitTestResult. It contains
+ context information about a point in the web page.
+
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkithittestresult.cpp: Added.
+ (webkit_hit_test_result_finalize):
+ (webkit_hit_test_result_get_property):
+ (webkit_hit_test_result_set_property):
+ (webkit_hit_test_result_class_init):
+ (webkit_hit_test_result_init):
+ * webkit/webkithittestresult.h: Added.
+ * webkit/webkitprivate.cpp:
+ (WebKit::kit):
+ * webkit/webkitprivate.h:
+
+2009-09-14 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez and Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=29134
+ [GTK] Add API to access sub resources
+
+ Implement getting subresources, and improve testing of
+ main, and sub resources loading.
+
+2009-09-11 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK] Use gtk_style_set_background instead of gdk_window_set_background
+ https://bugs.webkit.org/show_bug.cgi?id=29173
+
+ Use gtk_style_set_background instead of gdk_window_set_background,
+ as suggested by the documentation. Also, use GTK_STATE_NORMAL
+ directly, since that's the default state of a GtkWidget.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_realize):
+
+2009-09-09 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] DumpRenderTree needs eventSender object and implementation
+ https://bugs.webkit.org/show_bug.cgi?id=25990
+
+ Creates a function that is accessible from the DumpRenderTree tool
+ and calls the layout method on the frame view.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_layout):
+
+2009-09-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=29044
+ [GTK] Should update suggested-filename when the response is received
+
+ Set suggested filename also when the response only comes after the
+ download has started.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_set_response):
+ (webkit_download_set_suggested_filename):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_request_download):
+
+2009-09-08 Priit Laes <plaes@plaes.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix up erroneus 'Since: @version@' tags in documentation.
+
+ * webkit/webkitwebdatasource.cpp:
+ * webkit/webkitwebresource.cpp:
+ (webkit_web_resource_class_init):
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+ * webkit/webkitwebwindowfeatures.cpp:
+
+2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Link new objects documents in the main document.
+
+ * docs/webkitgtk-docs.sgml:
+
+2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Documentation control files updated for 1.1.14.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ What's new for 1.1.14.
+
+ * NEWS:
+
+2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Use g_return_if_fail to check for the SoupURI creation, instead of
+ printing a custom warning.
+
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_set_uri):
+
+2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26854
+ [GTK] Needs API to allow more control over outgoing requests
+
+ Map the willSendRequest delegate to the 'resource-request-starting'
+ signal, allowing more control of the resources that are fetched.
+
+ Mapping willSendRequest properly requires an appropriate Response
+ object, so we are introducing WebKitNetworkResponse, which works in a
+ way similar to WebKitNetworkRequest.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchWillSendRequest):
+ (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoading):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoading):
+ * tests/testnetworkresponse.c: Added.
+ (test_network_response_create_destroy):
+ (test_network_response_properties):
+ (main):
+ * tests/testwebresource.c:
+ (resource_request_starting_cb):
+ (load_finished_cb):
+ (test_web_resource_loading):
+ (main):
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkitnetworkrequest.cpp:
+ * webkit/webkitnetworkresponse.cpp: Added.
+ (webkit_network_response_dispose):
+ (webkit_network_response_finalize):
+ (webkit_network_response_get_property):
+ (webkit_network_response_set_property):
+ (webkit_network_response_class_init):
+ (webkit_network_response_init):
+ (webkit_network_response_new_with_core_response):
+ (webkit_network_response_new):
+ (webkit_network_response_set_uri):
+ (webkit_network_response_get_uri):
+ (webkit_network_response_get_message):
+ * webkit/webkitnetworkresponse.h: Added.
+ * webkit/webkitprivate.cpp:
+ (WTF::SoupMessage):
+ (WTF::WebKitNetworkRequest):
+ (WTF::WebKitNetworkResponse):
+ (WTF::WebKitWebResource):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebresource.cpp:
+ (webkit_web_resource_cleanup):
+ (webkit_web_resource_finalize):
+ (webkit_web_resource_class_init):
+ (webkit_web_resource_set_property):
+ (webkit_web_resource_get_uri):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+ * webkitmarshal.list:
+
+2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28979
+ [GTK] Misc improvments to NetworkRequest
+
+ Unref message in dispose, as it should be, not in finalize.
+
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_dispose):
+ (webkit_network_request_finalize):
+ (webkit_network_request_class_init):
+
+2009-09-07 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28979
+ [GTK] Misc improvments to NetworkRequest
+
+ Bring documentation up-to-date with reality regarding NetworkRequest.
+
+ * webkit/webkitnetworkrequest.cpp:
+
+2009-09-07 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Make the auth dialog usable when libsoup does not have a
+ SoupPasswordManager, since it might go away in the next
+ development cycle.
+
+ * webkit/webkitsoupauthdialog.c:
+ (response_callback):
+ (session_can_save_passwords):
+ (session_authenticate):
+2009-09-06 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update the unitests to latest changes wrt scrollbar policy.
+
+ * tests/testwindow.c:
+ (test_webkit_window_scrollbar_policy):
+
+2009-09-06 Martin Robinson <martin.james.robinson@gmail.com>
+
+ Reviewed by Gustavo Noronha, Jan Alonzo and Xan Lopez.
+
+ [Gtk] Expose a database API
+ https://bugs.webkit.org/show_bug.cgi?id=27899
+
+ Expose an HTML5 database API for GTK+.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::print):
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+ * webkit/webkitprivate.h:
+ * webkit/webkitsecurityorigin.cpp: Added.
+ (webkit_security_origin_finalize):
+ (webkit_security_origin_dispose):
+ (webkit_security_origin_set_property):
+ (webkit_security_origin_get_property):
+ (webkit_security_origins):
+ (webkit_security_origin_class_init):
+ (webkit_security_origin_init):
+ (webkit_security_origin_get_protocol):
+ (webkit_security_origin_get_host):
+ (webkit_security_origin_get_port):
+ (webkit_security_origin_get_web_database_usage):
+ (webkit_security_origin_get_web_database_quota):
+ (webkit_security_origin_set_web_database_quota):
+ (webkit_security_origin_get_all_web_databases):
+ (WebKit::kit):
+ (WebKit::core):
+ (webkit_security_origin_get_web_database):
+ * webkit/webkitsecurityorigin.h: Added.
+ * webkit/webkitwebdatabase.cpp: Added.
+ (webkit_web_database_finalize):
+ (webkit_web_database_dispose):
+ (webkit_web_database_set_property):
+ (webkit_web_database_get_property):
+ (webkit_web_database_class_init):
+ (webkit_web_database_init):
+ (webkit_web_database_set_security_origin):
+ (webkit_web_database_set_name):
+ (webkit_web_database_get_security_origin):
+ (webkit_web_database_get_name):
+ (webkit_web_database_get_display_name):
+ (webkit_web_database_get_expected_size):
+ (webkit_web_database_get_size):
+ (webkit_web_database_get_filename):
+ (webkit_web_database_remove):
+ (webkit_remove_all_web_databases):
+ (webkit_get_web_database_directory_path):
+ (webkit_set_web_database_directory_path):
+ (webkit_get_default_web_database_quota):
+ * webkit/webkitwebdatabase.h: Added.
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_new):
+ (webkit_web_frame_get_focused_accessible_element):
+ (webkit_web_frame_get_horizontal_scrollbar_policy):
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2009-09-03 Adam Barth <abarth@webkit.org>
+
+ Reviewed by eric@webkit.org.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24696
+
+ Stub implementations of mixed content methods of FrameLoaderClient.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didDisplayInsecureContent):
+ (WebKit::FrameLoaderClient::didRunInsecureContent):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-09-03 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Access private member variables directly instead of using the
+ accessor.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+
+2009-09-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Remove bogus asserts that break Debug builds at runtime.
+
+ * WebCoreSupport/DocumentLoaderGtk.cpp:
+ (WebKit::DocumentLoader::detachFromFrame):
+ (WebKit::DocumentLoader::decreaseLoadCount):
+
+2009-09-02 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez and Gustavo Noronha.
+
+ [Gtk] Implement a WebDataSource for the gtk port
+ https://bugs.webkit.org/show_bug.cgi?id=24758
+
+ Add data source API getters to WebKitWebFrame.
+ Also add WebKitWebDataSource unit test.
+
+ * tests/testwebdatasource.c: Added.
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+
+2009-09-02 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez and Gustavo Noronha.
+
+ [Gtk] Implement a WebDataSource for the gtk port
+ https://bugs.webkit.org/show_bug.cgi?id=24758
+
+ Subclass DocumentLoader for Gtk and implement it under the WebKit
+ namespace. Add WebKitWebDataSource implementation that closely
+ follows the mac implementation of the API.
+
+ * WebCoreSupport/DocumentLoaderGtk.cpp: Added.
+ * WebCoreSupport/DocumentLoaderGtk.h: Added.
+ * webkit/webkitwebdatasource.cpp: Added.
+ * webkit/webkitwebdatasource.h: Added.
+
+2009-09-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Avoid causing unexpected issues with window sizing when sites
+ disable scrollbars completely.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::scrollbarsModeDidChange):
+ * tests/testwindow.c:
+ (test_webkit_window_scrollbar_policy):
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_class_init):
+
+2009-09-01 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez and Gustavo Noronha.
+
+ [Gtk] Implement a WebDataSource for the gtk port
+ https://bugs.webkit.org/show_bug.cgi?id=24758
+
+ Implement WebKitWebResource for the resource-related API for
+ WebKitWebDataSource.
+
+ * GNUmakefile.am:
+
+2009-09-01 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28842
+ [GTK] Do not emit extra FINISHED load-status signals
+
+ Do not emit FINISHED load-status signals on our own, just rely on
+ WebCore for that. Avoids emitting FINISHED several times when we
+ fail to load a URI.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+ * tests/testloading.c:
+ (web_loading_fixture_setup):
+ (web_loading_fixture_teardown):
+ (load_finished_cb):
+ (status_changed_cb):
+ (test_loading_status):
+ (load_error_status_changed_cb):
+ (load_error_cb):
+ (test_loading_error):
+ (main):
+ * webkit/webkitwebframe.h:
+
+2009-08-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28466
+ When downloading a file, two GET requests are sent to the HTTP server
+
+ Support reusing a connection that is already ongoing, instead of
+ cancelling the connection and creating another.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::download):
+ * webkit/webkitdownload.cpp:
+ (webkit_download_new_with_handle):
+ (webkit_download_start):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_request_download):
+
+2009-08-31 Alexey Proskuryakov <ap@apple.com>
+
+ Gtk build fix.
+
+ This is also a behavior fix, at least on debug builds - a caller of
+ webkit_web_history_item_new_with_data() could pass an URL that could cause an assertion
+ failure in KURL.
+
+ * webkit/webkitwebhistoryitem.cpp: (webkit_web_history_item_new_with_data): Pass a null
+ KURL as base to parse properly.
+
+2009-08-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25889
+ [GTK] scrollbar policy for main frame is not implementable
+
+ Add properties and a signal to report scrollbar policy changes to
+ client code, and a default handler that does the right thing when
+ using GtkScrolledWindow.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::scrollbarsModeDidChange):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_property):
+ (webkit_web_frame_class_init):
+ (webkit_web_frame_get_horizontal_scrollbar_policy):
+ (webkit_web_frame_get_vertical_scrollbar_policy):
+ * webkit/webkitwebframe.h:
+ * tests/testwindow.c: Added.
+ (load_finished_cb):
+ (test_webkit_window_scrollbar_policy):
+ (main):
+
+2009-08-28 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha and Xan Lopez.
+
+ [Gtk] Add view source mode API
+ https://bugs.webkit.org/show_bug.cgi?id=28805
+
+ Implement setter and getter for "view source" mode.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_view_source_mode):
+ (webkit_web_frame_get_view_source_mode):
+ * webkit/webkitwebview.h:
+
+2009-08-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28738
+ Expose undo/redo functionality in WebKitWebView
+
+ Expose undo/redo functionality in WebKitWebView, keeping the
+ default bindings as they were.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_real_undo):
+ (webkit_web_view_real_redo):
+ (webkit_web_view_class_init):
+ (webkit_web_view_can_undo):
+ (webkit_web_view_undo):
+ (webkit_web_view_can_redo):
+ (webkit_web_view_redo):
+ * webkit/webkitwebview.h:
+
+2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ News about the 1.1.13 release.
+
+ * NEWS:
+
+2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Add new symbols, and an index of new symbols for the 1.1.13
+ release.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-08-23 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix a couple of typos.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2009-08-23 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update editing-behavior property here too.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_settings_notify):
+
+2009-08-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Rubberstamped by Gustavo Noronha.
+
+ Fix regressions introduced by http://trac.webkit.org/changeset/47690.
+
+ Update the setting whenever the property gets set.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_settings_notify):
+
+2009-08-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] API for disabling local file access to web URLs
+ https://bugs.webkit.org/show_bug.cgi?id=28663
+
+ Add a setting to enable or disable file access to web URLs. It's
+ disabled by default for security reasons.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+
+2009-08-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28154
+ clicking below end of text in a textarea moves cursor to wrong position
+
+ Expose the EditingBehavior setting and set it by default to Mac,
+ since that what matches the GTK+ default behavior.
+
+ * webkit/webkitprivate.cpp:
+ (WebKit::core):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebsettings.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+
+2009-08-20 Aaron Boodman <aa@chromium.org>
+
+ Hopefully the last speculative build for gtk.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_white_list_access_from_origin):
+ * webkit/webkitprivate.h:
+
+2009-08-20 David Levin <levin@chromium.org>
+
+ Another speculative build for gtk.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_white_list_access_to_origin):
+
+2009-08-20 David Levin <levin@chromium.org>
+
+ Speculative build for gtk.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_white_list_access_to_origin):
+
+2009-08-19 Aaron Boodman <aa@chromium.org>
+
+ Fix build break.
+
+ * webkit/webkitprivate.h: "WEBKIT API" -> "WEBKIT_API"
+
+2009-08-19 Aaron Boodman <aa@chromium.org>
+
+ Reviewed by David Levin.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24853: Provide a way for WebKit clients to
+ specify a more granular policy for cross-origin XHR access.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_white_list_access_to_origin): Add API to manipulate origin access whitelists.
+ (webkit_reset_origin_access_white_lists): Ditto.
+ * webkit/webkitprivate.h: Ditto.
+
+2009-08-18 Xan Lopez <xlopez@igalia.com>
+
+ Rubber-stamped by Holger Freyther.
+
+ Remove an unneeded include.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+
+2009-08-18 Fumitoshi Ukai <ukai@chromium.org>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=28443
+ Fix build break with gtk older than 2.14.
+
+ WebKit gtk port requires gtk 2.10 or later, but DragClientGtk.cpp
+ uses gtk_widget_get_window that is introduced in 2.14.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ define gtk_widget_get_window for gtk older than 2.14.
+
+2009-08-18 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Oliver Hunt.
+
+ [Gtk] crash when closing page from javascript
+ https://bugs.webkit.org/show_bug.cgi?id=27439
+
+ Do not unref the WebView in ChromeClientGtk::closeWindowSoon
+ because (1) a create-web-view handler can return a NULL WebView,
+ (2) the created WebView is owned by its containing widget, and (3)
+ clients may not handle the close-web-view signal so this avoids
+ unreffing a WebView more than once.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::closeWindowSoon):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2009-08-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19360
+ Frags on current page don't generate "navigation-requested" events
+
+ Fix order of parameters for the creation of SubstituteData object,
+ so that normal data loads do not have an unreachable URL. Also
+ remove a confusion about the purpose of the last parameter.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_load_data):
+
+2009-08-18 Drew Wilson <atwilson@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Need to extend DumpRenderTree to expose number of worker threads
+ https://bugs.webkit.org/show_bug.cgi?id=28292
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitworkers.cpp: Added.
+ (webkit_worker_thread_count):
+ Exposed WebCore::WorkerThread::workerThreadCount() for the gtk version of DumpRenderTree.
+
+2009-08-18 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix the ATK unit test.
+
+ We now support line boundaries in the get_text functions, so we
+ need to make sure the test has the layout we expect by giving it
+ enough space to fit in one line.
+
+ * tests/testatk.c:
+ (test_webkit_atk_get_text_at_offset):
+
+2009-08-15 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Xan Lopez.
+
+ Fix compiler warnings.
+
+ * webkit/webkitwebview.cpp:
+ (clipboard_contents_received):
+ (webkit_web_view_drag_data_get):
+
+2009-08-14 Jiahua Huang <jhuangjiahua@gmail.com>
+
+ Reviewed by Jan Alonzo.
+
+ [gtk] Pasteboard/GtkClipboard can't handle the "text/html" target.
+ https://bugs.webkit.org/show_bug.cgi?id=27028
+
+ Add a function in WebKit::PasteboardHelperGtk that will return the
+ value of WEBKIT_WEB_VIEW_TARGET_INFO_HTML,
+ and WebCore::clipboard_get_contents_cb will use that.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::PasteboardHelperGtk::getWebViewTargetInfoHtml):
+ * WebCoreSupport/PasteboardHelperGtk.h:
+
+2009-08-14 Benjamin Otte <otte@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Fix webkit_web_view_set_highlight_text_matches() so that highlighting
+ works properly in documents with frames.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_highlight_text_matches):
+
+2009-08-13 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Drag and drop support
+ https://bugs.webkit.org/show_bug.cgi?id=23642
+
+ Adds support for drag actions in WebKitWebView and DragClient.
+
+ Defines a support structure that can hold additional drag and drop data,
+ such as selection data or target IDs (infos) and can be passed through
+ clipboard requests.
+
+ Implements DragClient functions that gather start position of the drag
+ and start the GTK drag.
+
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::DragClient):
+ (WebKit::DragClient::willPerformDragSourceAction):
+ (WebKit::DragClient::startDrag):
+ (WebKit::DragClient::createDragImageForLink): A small style fix.
+ * WebCoreSupport/DragClientGtk.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_drag_end):
+ (clipboard_contents_received): GtkClipboard callback.
+ (webkit_web_view_drag_data_get):
+ (webkit_web_view_class_init):
+ (webkit_web_view_init):
+ * webkit/webkitwebview.h: Add GTK selection targets.
+
+2009-08-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed build fix.
+
+ Last-minute change on the new soup API to use the keyring was not
+ reflected in our usage - the documentation says we should use
+ g_slist_free, and soup_auth_free_saved_users doesn't exist.
+
+ * webkit/webkitsoupauthdialog.c:
+ (session_authenticate):
+
+2009-08-12 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK] Remove keyring optional features
+ https://bugs.webkit.org/show_bug.cgi?id=28173
+
+ Remove keyring support from our code and rely on libsoup to store
+ the authentication data if the user requests that support in their
+ application/library.
+
+ * webkit/webkitsoupauthdialog.c:
+ (response_callback):
+ (show_auth_dialog):
+ (session_authenticate):
+
+2009-08-11 Benjamin Otte <otte@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ When instructed to print an out-of-range page, print an empty page
+ instead of crashing.
+
+ * webkit/webkitwebframe.cpp:
+ (draw_page_callback):
+
+2009-08-10 Brady Eidson <beidson@apple.com>
+
+ GTK build fix.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_get_suggested_filename):
+
+2009-08-08 Xan Lopez <xlopez@igalia.com>
+
+ Roll out r46928, since it wasn't done in accordance with the
+ agreed naming.
+
+ * ChangeLog:
+
+ Remove the ChangeLog entry, since it was added at the bottom of
+ the file.
+
+ * gdom/GdomDOMObject.h: Removed.
+ * gdom/GdomDOMObjectPrivate.h: Removed.
+
+2009-08-08 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Enable accessibility in Gtk DRT
+ https://bugs.webkit.org/show_bug.cgi?id=25989
+
+ Add SPI to get the focused accessible element to be used by DRT.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_focused_accessible_element):
+
+2009-07-30 Martin Robinson <mrobinson@appcelerator.com>
+
+ Reviewed by Xan Lopez, Gustavo Noronha and Jan Alonzo.
+
+ [GTK] new-window-policy-decision-requested provides no information about the target frame
+ https://bugs.webkit.org/show_bug.cgi?id=27792
+
+ Add frameName property to the WebKitWebNavigation object.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::getNavigationAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ * webkit/webkitwebnavigationaction.cpp:
+ (webkit_web_navigation_action_get_property):
+ (webkit_web_navigation_action_set_property):
+ (webkit_web_navigation_action_class_init):
+ (webkit_web_navigation_action_get_target_frame):
+ (webkit_web_navigation_action_set_target_frame):
+ * webkit/webkitwebnavigationaction.h:
+
+2009-07-29 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Darin Adler.
+
+ Added foundation work to allow a testing infrastructure for the Web
+ Inspector.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::inspectorWindowObjectCleared):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2009-07-29 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Eric Seidel and Xan Lopez.
+
+ [Gtk] Enable http/tests/appcache tests
+ https://bugs.webkit.org/show_bug.cgi?id=27674
+
+ Add 'enable-offline-web-application-cache' WebSetting to enable
+ or disable the appcache. Also, Add appcache SPI for DRT to use.
+
+ * webkit/webkitapplicationcache.cpp: Added.
+ (webkit_application_cache_set_maximum_size):
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-07-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Add information about the regression fix for WEBKIT_DEBUG.
+
+ * NEWS:
+
+2009-07-28 Priit Laes <plaes@plaes.org>
+
+ Reviewed by Xan Lopez.
+
+ Fix mnemonics in the soup authentication dialog.
+
+ * webkit/webkitsoupauthdialog.c:
+ (show_auth_dialog):
+
+2009-07-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ * NEWS: update for 1.1.12 release.
+
+2009-07-27 Alexey Proskuryakov <ap@webkit.org>
+
+ Build fix.
+
+ * webkit/webkitwebframe.cpp: (webkit_gc_count_javascript_objects): Added a namespace to
+ SilenceAssertionsOnly.
+
+2009-07-27 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=27735
+ Give a helpful name to JSLock constructor argument
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_gc_count_javascript_objects):
+
+2009-07-24 Priit Laes <plaes@plaes.org>
+
+ Reviewed by Xan Lopez.
+
+ [Gtk] Password is saved into gnome-keyring even if auth. fails
+ https://bugs.webkit.org/show_bug.cgi?id=27560
+
+ Check authentication result and save password only when authentication
+ succeeds.
+
+ * webkit/webkitsoupauthdialog.c:
+ (free_authData):
+ (response_callback):
+ (save_password_callback):
+
+2009-07-24 Andrei Popescu <andreip@google.com>
+
+ Reviewed by Anders Carlsson.
+
+ ApplicationCache should have size limit
+ https://bugs.webkit.org/show_bug.cgi?id=22700
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::reachedMaxAppCacheSize):
+ Adds empty implementation of reachedMaxAppCacheSize.
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2009-07-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Eric Seidel.
+
+ [Gtk] Add implementation of GCController for DRT
+ https://bugs.webkit.org/show_bug.cgi?id=27636
+
+ Add SPI for GCController to use.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_gc_collect_javascript_objects):
+ (webkit_gc_collect_javascript_objects_on_alternate_thread):
+ (webkit_gc_count_javascript_objects):
+
+2009-07-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Mark Rowe.
+
+ Fix compiler warning.
+
+ * tests/testwebsettings.c:
+ (test_webkit_web_settings_user_agent):
+
+2009-07-22 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Remove unused variables.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_grab_focus):
+ (webkit_web_view_focus_in_event):
+
+2009-07-21 Priit Laes <plaes@plaes.org>
+
+ Reviewed by Holger Freyther.
+
+ [GTK+] Missing accelerator in authentication dialog
+ https://bugs.webkit.org/show_bug.cgi?id=25509
+
+ Add accelerator to checkbox text.
+
+ * WebKit/gtk/webkit/webkitsoupauthdialog.c:
+ (show_auth_dialog):
+
+2009-07-21 Priit Laes <plaes@plaes.org>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] http auth dialog pops up twice after a cancelled atempt
+ https://bugs.webkit.org/show_bug.cgi?id=24818
+
+ Remove workaround required for libsoup versions <=2.26.2 as we depend
+ on 2.27.4 now.
+
+ * webkit/webkitsoupauthdialog.c:
+ (session_authenticate):
+
+2009-07-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] Widget size negotiation
+ https://bugs.webkit.org/show_bug.cgi?id=17154
+
+ Implement proper size request for the WebView widget.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::contentsSizeChanged):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_size_request):
+ (webkit_web_view_class_init):
+
+2009-07-16 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Jan Alonzo.
+
+ [GTK+] Update the focus handling code.
+
+ Change focus-in to always call setActive(true), call
+ FocusController::setFocusedFrame when no focused frame exists
+ other SelectionController::setActive. This is matching Windows
+ and Qt.
+
+ On focus-out call FocusController::setActive(false) and
+ SelectionController::setFocued(false). This is matching Windows
+ and Qt as well.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_focus_in_event):
+ (webkit_web_view_focus_out_event):
+
+2009-07-16 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by Dan Bernstein.
+
+ This is the 2nd part of fixing "RTL: tooltip does not get its directionlity from its element's."
+ https://bugs.webkit.org/show_bug.cgi?id=24187
+
+ Add one extra parameter to the callee of HitTestResult::title() due to the signature change.
+
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement): Add direction as a parameter to the callee of HitTestResult::title().
+
+2009-07-16 Xiaomei Ji <xji@chromium.org>
+
+ Reviewed by Darin Adler.
+
+ Fix tooltip does not get its directionality from its element's directionality.
+ https://bugs.webkit.org/show_bug.cgi?id=24187
+
+ Per mitz's suggestion in comment #6, while getting the plain-text
+ title, we also get the directionality of the title. How to handle
+ the directionality is up to clients. Clients could ignore it,
+ or use attribute or unicode control characters to display the title
+ as what they want.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::setToolTip): Add directionality as 2nd parameter to setToopTip() (without handling it yet).
+ * WebCoreSupport/ChromeClientGtk.h: Add directionality as 2nd parameter to setToolTip().
+
+2009-07-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Jan Alonzo.
+
+ Fix enable-xss-auditor property documentation, and default value
+ to match the fact that it is now enabled by default.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+
+2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
+
+ Reviewed by Darin Adler.
+
+ Change all Noncopyable inheriting visibility to public.
+ https://bugs.webkit.org/show_bug.cgi?id=27225
+
+ Change all Noncopyable inheriting visibility to public because
+ it is needed to the custom allocation framework (bug #20422).
+
+ * webkit/webkitdownload.cpp:
+
+2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Late NEWS file for 1.1.11.
+
+ * NEWS:
+
+2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Changes to the doc control files for 1.1.11.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Holger Freyther.
+
+ Fix unit test to use the correct assumption that the SoupMessage
+ will be NULL when WebKitNetworkRequest is created from an URI.
+
+ * tests/testnetworkrequest.c:
+ (test_network_request_create_destroy):
+
+2009-07-13 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ <https://bugs.webkit.org/show_bug.cgi?id=27171> [Gtk]
+ REGRESSION (r45440): fails at fast/events/frame-programmatic-focus.html
+
+ Reviewed by Gustavo Noronha.
+
+ focus-in and focus-out events only get triggered when there's user
+ interaction, hence setFocused(bool) never gets called when
+ focusEvent is triggered when running the layout tests. The
+ solution seems to be to implement grab-focus too so we can call
+ setFocused(bool) when a widget has focus.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_grab_focus):
+ (webkit_web_view_focus_in_event):
+ (webkit_web_view_class_init):
+
+2009-07-13 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ https://bugs.webkit.org/show_bug.cgi?id=26718 [Gtk] Add support for javascript windows for DRT
+
+ Reviewed by Gustavo Noronha and Xan Lopez.
+
+ Add API to support opening and closing of JavaScript windows automatically.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::closeWindowSoon):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_real_close_web_view):
+ (webkit_web_view_class_init):
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+ (webkit_web_view_set_group_name):
+ * webkit/webkitwebview.h:
+
+2009-07-12 Brent Fulgham <bfulgham@gmail.com>
+
+ Speculative build fix after http://trac.webkit.org/changeset/45786.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::addMessageToConsole):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2009-07-09 Beth Dakin and Jon Honeycutt <bdakin@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ Make Widget RefCounted to fix:
+
+ <rdar://problem/7038831> REGRESSION (TOT): In Mail, a crash occurs
+ at WebCore::Widget::afterMouseDown() after clicking To Do's close
+ box
+ <rdar://problem/6978804> WER #16: Repro Access Violation in
+ WebCore::PluginView::bindingInstance (1310178023)
+ -and-
+ <rdar://problem/6991251> WER #13: Crash in WebKit!
+ WebCore::PluginView::performRequest+203 (1311461169)
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createPlugin):
+ (WebKit::FrameLoaderClient::createJavaAppletWidget):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-07-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Jan Alonzo.
+
+ Use soup's content sniffing
+ https://bugs.webkit.org/show_bug.cgi?id=26982
+
+ Add the new Content Sniffing feature provided by libsoup.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+
+2009-07-05 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ Always initialize WebCore.
+
+ It is possible that WebKitWebSettings and other classes get
+ constructed before the WebKitWebView. In this case WebCore is
+ not yet properly initialized. Add webkit_init to every class
+ that can be constructed by API users.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_class_init):
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_class_init):
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_class_init):
+ * webkit/webkitwebhistoryitem.cpp:
+ (webkit_web_history_item_class_init):
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ * webkit/webkitwebwindowfeatures.cpp:
+ (webkit_web_window_features_class_init):
+
+2009-07-03 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez and Gustavo Noronha.
+
+ Set user-agent from application
+ https://bugs.webkit.org/show_bug.cgi?id=17375
+
+ Add 'user-agent' setter/getter API to WebSettings.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::FrameLoaderClient::userAgent):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitversion.h.in:
+ * webkit/webkitwebsettings.cpp:
+ (webkit_get_user_agent):
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_finalize):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ (webkit_web_settings_get_user_agent):
+ * webkit/webkitwebsettings.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose):
+
+2009-07-02 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ Update the new boolean property in FocusController that keeps
+ track of whether or not the Page is focused.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_focus_in_event):
+ (webkit_web_view_focus_out_event):
+
+2009-06-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ Fix a couple of compiler warnings.
+
+ * webkit/webkitwebnavigationaction.cpp:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_real_move_cursor):
+
+2009-06-28 Xan Lopez <xlopez@igalia.com>
+
+ Fix the GTK+ build.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::ContextMenuClient::isSpeaking):
+ * WebCoreSupport/ContextMenuClientGtk.h:
+
+2009-06-24 Jiahua Huang <jhuangjiahua@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] Add Undo/Redo support to WebKitGtk
+ https://bugs.webkit.org/show_bug.cgi?id=26573
+
+ Implement EditorClient::undo and other interested funcs.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::registerCommandForUndo):
+ (WebKit::EditorClient::registerCommandForRedo):
+ (WebKit::EditorClient::clearUndoRedoOperations):
+ (WebKit::EditorClient::canUndo):
+ (WebKit::EditorClient::canRedo):
+ (WebKit::EditorClient::undo):
+ (WebKit::EditorClient::redo):
+ (WebKit::EditorClient::EditorClient):
+ * WebCoreSupport/EditorClientGtk.h:
+
+2009-06-20 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha and Xan Lopez.
+
+ [Gtk] Implement DRT XSS auditor support
+ https://bugs.webkit.org/show_bug.cgi?id=26571
+
+ Add a setting "enable-xss-auditor" to enable this feature.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-06-20 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha and Xan Lopez.
+
+ webkit_web_back_forward_list_add_item() should add a ref for the history item
+ https://bugs.webkit.org/show_bug.cgi?id=26517
+
+ Add a ref to the WebHistoryItem when it's added to the back
+ forward list through webkit_web_back_forward_list_add_item.
+ This keeps the history item alive and prevents pywebkitgtk from
+ crashing
+
+ * tests/testwebbackforwardlist.c:
+ (test_webkit_web_history_item_lifetime):
+ (test_webkit_web_back_forward_list_order):
+ (test_webkit_web_back_forward_list_add_item):
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_add_item):
+
+2009-06-20 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Jan Alonzo.
+
+ Initial test case for loading statuses.
+
+ * tests/testloading.c: Added.
+ (load_finished_cb):
+ (status_changed_cb):
+ (test_loading_status):
+ (main):
+
+2009-06-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Jan Alonzo.
+
+ Fix the ordering in which the new load status goes into the enum
+ to avoid ABI breakage.
+
+ * webkit/webkitwebframe.h:
+
+2009-06-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez and Christian Dywan.
+
+ Add a new load status to report that the first visually non-empty
+ layout has been done.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout):
+ * webkit/webkitwebframe.h:
+
+2009-06-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Fix parameters of navigation-policy-decision-requested callback,
+ to be correct in number and type
+
+ * tests/testhttpbackend.c:
+ (navigation_policy_decision_requested_cb):
+
+2009-06-18 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::loadDone):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad): Introduce the static
+ function loadDone to emit "load-done" and update the status and update
+ the relevent places. We missed some status notifications before.
+
+2009-06-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Be consistent in always using the term URI instead of URL in the
+ documentation of WebKitWebView signals.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2009-06-16 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Do not use g_assert_cmpint to test for NULL pointer, just
+ g_assert.
+
+ * tests/testnetworkrequest.c:
+ (test_network_request_create_destroy):
+
+2009-06-15 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26377
+ [GTK] Confusion about range of 'progress' property
+
+ Range for the progress property is 0.0 .. 1.0, don't multiply it
+ by 100 to make it a percentage.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_progress):
+
+2009-06-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Add new symbols list for 1.1.10 release.
+
+ * docs/webkitgtk-docs.sgml:
+
+2009-06-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ Fix Since tags for the new uri and message properties.
+
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_class_init):
+
+2009-06-15 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Adding new documented API to the generated
+ documentation.
+
+ * docs/webkitgtk-sections.txt:
+
+2009-06-15 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Update NEWS for 1.1.10 release.
+
+ * NEWS:
+
+2009-06-11 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ Add a test to perform an actual download.
+
+ * tests/testdownload.c:
+ (navigation_policy_decision_requested_cb):
+ (notify_status_cb):
+ (download_requested_cb):
+ (test_webkit_download_perform):
+ (main):
+
+2009-06-11 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ Fix crash when downloading, caused by assuming SoupMessage would
+ be there. This change factors the logic required to create a
+ ResourceRequest from a WebKitNetworkRequest into a core()
+ function, like we have for some other classes.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_start):
+ * webkit/webkitprivate.cpp:
+ (WebKit::core):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_load_request):
+
+2009-06-10 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ Make WebKitNetworkRequest a proper GObject, making URI and
+ SoupMessage properties. Also adding unit tests for creation and
+ destruction.
+
+ * tests/testnetworkrequest.c: Added.
+ (test_network_request_create_destroy):
+ (test_network_request_properties):
+ (main):
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_get_property):
+ (webkit_network_request_set_property):
+ (webkit_network_request_class_init):
+ (webkit_network_request_init):
+ (webkit_network_request_constructor):
+ (webkit_network_request_new_with_core_request):
+ (webkit_network_request_new):
+ (webkit_network_request_set_uri):
+ (webkit_network_request_get_uri):
+ * webkit/webkitnetworkrequest.h:
+
+2009-06-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ News for 1.1.9.
+
+ * NEWS:
+
+2009-06-09 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Clear the frame name before we run each tests so we don't get
+ "someFloaString" or "3" in the target frame name.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_clear_main_frame_name):
+
+
+2009-06-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25415
+ [GTK][ATK] Please implement support for get_text_at_offset
+
+ Update test for new implementation (it fixes two bugs and adds
+ actual implementations for LINE boundaries).
+
+ * tests/testatk.c:
+ (test_webkit_atk_get_text_at_offset):
+
+2009-06-09 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26104
+ [GTK] Make NetworkRequest a proper GObject and expose SoupMessage
+
+ Refactor how SoupMessage is handled, so that our ResourceRequest
+ object doesn't have to store it as a member, which complicates
+ managing ResourceRequest's lifetvime.
+
+ * tests/testhttpbackend.c:
+ (navigation_policy_decision_requested_cb):
+ (test_soup_message_lifetime):
+ * webkit/webkitnetworkrequest.cpp:
+ (WTF::SoupMessage):
+ (webkit_network_request_new_with_core_request):
+
+2009-06-08 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26240
+ [GTK] Try again button loses query strings
+
+ Only trigger reload, when try again is clicked, this way we do not
+ lose the query strings, like we did when also triggering a form
+ submission.
+
+ * resources/error.html:
+
+2009-06-06 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26175
+ [GTK] Download progress notification should be throttled, for the benefit of download managers
+
+ Throttle notifications for the 'progress' property of the Download
+ object, and update documentation to note the fact that this is
+ being done, and how to get all notifications if you really care
+ about them.
+
+ * webkit/webkitdownload.cpp:
+ (webkit_download_class_init):
+ (webkit_download_received_data):
+
+2009-05-29 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Fixed compile warning when comparing the different navigation types
+
+ * webkit/webkitwebnavigationaction.cpp:
+ (webkit_web_navigation_action_class_init):
+
+2009-05-29 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26075
+ [GTK] Refactor key scrolling code
+
+ After the scrolling changes in r44177 we can now use the
+ FrameView::scroll method like the other ports, keeping the magic
+ constants for the scrolling amounts inside WebCore proper.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_real_move_cursor):
+
+2009-05-29 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Jan Alonzo.
+
+ Make NetworkRequest carry a reference of the SoupMessage used by
+ ResourceRequest, and use that to create new ResourceRequests where
+ needed, so that no information is lost while passing around
+ NetworkRequest objects.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ (WebKit::FrameLoaderClient::startDownload):
+ * webkit/webkitdownload.cpp:
+ (webkit_download_start):
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_finalize):
+ (webkit_network_request_new_with_core_request):
+ (webkit_network_request_new):
+ (webkit_network_request_get_message):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_load_request):
+
+2009-05-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26048
+ navigation-policy-decision-requested documentation incomplete
+
+ Fix documentation for all policy decision request signals, to
+ mention that an actual decision is expected when you return TRUE,
+ meaning that you handled the signal.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2009-05-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Mention the implementation of the new AtkText methods.
+
+ * NEWS:
+
+2009-05-19 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo and Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25415
+ [GTK][ATK] Please implement support for get_text_at_offset
+
+ New test file for ATK functionality.
+
+ * tests/testatk.c: Added.
+ (bail_out):
+ (test_get_text_function):
+ (test_webkit_atk_get_text_at_offset):
+ (main):
+
+2009-05-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Document changes worth noting for 1.1.8.
+
+ * NEWS:
+
+2009-05-27 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26039
+ [GTK] WebKitWebHistoryItem lifetime fixes
+
+ Modify the management of history items by the BackForward list.
+
+ Having the objects add themselves to a hash table with an extra
+ reference made impossible for the cleanup code in the dispose
+ method to be ever called in normal conditions, since dispose is
+ called before getting rid of the last reference, which the objects
+ were making to themselves. Get rid of this extra reference and
+ move the responsibility of the cleanup to the BackForward list
+ itself, which effectively owns the WebKitWebHistoryItems now.
+
+ Also, update the tests to reflect this change.
+
+ * tests/testwebbackforwardlist.c:
+ (test_webkit_web_history_item_lifetime):
+ (test_webkit_web_back_forward_list_order):
+ (test_webkit_web_back_forward_list_add_item):
+ * tests/testwebhistoryitem.c:
+ (web_history_item_fixture_setup):
+ (web_history_item_fixture_teardown):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebbackforwardlist.cpp:
+ (webkit_web_back_forward_list_dispose):
+ (webkit_web_back_forward_list_class_init):
+ * webkit/webkitwebhistoryitem.cpp:
+ (webkit_history_items):
+ (webkit_history_item_add):
+ (webkit_web_history_item_dispose):
+ (WebKit::kit):
+
+2009-05-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=26039
+ [GTK] WebKitWebHistoryItem lifetime fixes
+
+ Delete the BackForwardList before the Page, otherwise the references
+ to the WebKitWebHistoryItems will be gone.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_dispose):
+
+2009-05-27 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ Add comment to clarify why scrolling is done as it is and not with
+ gdk_window_scroll.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::scroll):
+
+2009-05-27 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Adding new symbols index for 1.1.8.
+
+ * docs/webkitgtk-docs.sgml:
+
+2009-05-26 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ Add a new signal called "create-plugin-widget" and emit it from
+ within the FrameLoaderClientGtk::createPlugin method. If a
+ GtkWidget gets returned it will be embedded as a WebCore::Widget
+ using the new GtkPluginWidget.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createPlugin):
+ * webkit/webkitwebview.cpp:
+ (webkit_signal_accumulator_object_handled):
+ (webkit_web_view_class_init):
+ * webkitmarshal.list:
+
+2009-05-24 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25987
+ [GTK] Clarify WebKitWebView::download-requested documentation
+
+ Explain a bit why this signal is not emitted by default and offer
+ a common solution/setup for that issue.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_class_init):
+
+2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Break the switch once private browsing is selected.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+
+2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Gustavo Noronha and Xan Lopez.
+
+ [Gtk] Enable database and localStorage support
+ https://bugs.webkit.org/show_bug.cgi?id=25629
+
+ Add settings to enable or disable database and localStorage
+ support and enable them by default. This allows databases to be
+ shown in the WebInspector as well as allow us to run the storage
+ layout tests.
+
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_class_init):
+ (webkit_web_settings_set_property):
+ (webkit_web_settings_get_property):
+ (webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_update_settings):
+ (webkit_web_view_settings_notify):
+
+2009-05-23 David Kilzer <ddkilzer@apple.com>
+
+ Part 2 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr
+
+ <https://bugs.webkit.org/show_bug.cgi?id=25495>
+
+ Reviewed by Oliver Hunt.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::createHTMLParserQuirks): Return a
+ PassOwnPtr<> instead of a raw HTMLParserQuirks pointer.
+
+2009-05-22 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Jan Alonzo.
+
+ Improve NetworkRequest documentation.
+
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_class_init):
+ (webkit_network_request_init):
+
+2009-05-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Maciej Stachowiak.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24818
+ [GTK] http auth dialog pops up twice after a cancelled atempt
+
+ Workaround libsoup bug
+ http://bugzilla.gnome.org/show_bug.cgi?id=583462, which made
+ libsoup emit the 'authenticate' signal more often than it was
+ expected.
+
+ We'll be able to remove this when we depend on libsoup > 2.26.2.
+
+ * webkit/webkitsoupauthdialog.c:
+ (session_authenticate):
+
+2009-05-21 Darin Fisher <darin@chromium.org>
+
+ Fix build bustage.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::getAutoCorrectSuggestionForMisspelledWord): Add stub for method.
+ * WebCoreSupport/EditorClientGtk.h:
+
+2009-05-20 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25834
+
+ Make ChromeClient a interface again
+
+ With recent additions to ChromeClient.h empty defaults were
+ added. This is bad for porters as these changes go unnoticed
+ and at runtime no notImplemented warning is logged and grepping
+ for notImplemented will not show anything. Change this Client
+ to be like the other Clients again and always have pure virtuals
+ (but for stuff inside #ifdef PLATFORM(MAC)).
+
+ Update the various WebKit/* implementations to compile again.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::setCursor):
+ (WebKit::ChromeClient::requestGeolocationPermissionForFrame):
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::scrollRectIntoView):
+
+2009-05-19 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Jan Alonzo.
+
+ Do not try to free enchant broker and dictionary if they do not
+ exist, those functions aren't NULL-safe.
+
+ * webkit/webkitwebsettings.cpp:
+ (free_spell_checking_language):
+
+2009-05-15 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Jan Alonzo.
+
+ Plug memory leak.
+
+ * webkit/webkitwebsettings.cpp:
+ (free_spell_checking_language):
+ (webkit_web_settings_finalize):
+ (webkit_web_settings_set_property):
+
+2009-05-15 Fridrich Strba <fridrich.strba@bluewin.ch>
+
+ Reviewed by Jan Alonzo.
+
+ Converting filename to uri by concatenating strings is broken
+ on Windows. Use proper glib conversion functions.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_open):
+ * tests/testdownload.c:
+ (test_webkit_download_create):
+
+2009-05-13 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Do not handle KeyEvents with Ctrl or Alt modifiers that we
+ otherwise know nothing about. Otherwise shortcuts defined in the
+ WebView will never be executed.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::handleEditingKeyboardEvent):
+
+2009-05-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Add information about the SVG index bounds check committed in
+ r43590.
+
+ * NEWS:
+
+2009-05-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Note changes since 1.1.6.
+
+ * NEWS:
+
+2009-05-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Updated control file, and main file for the 1.1.7
+ release.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-05-11 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25685
+ [GTK] Middle click paste form the pasteboard
+
+ For paste from middle button (button==2) we want to use
+ the GDK_PRIMARY_SELECTION. Implement the new getCurrentTarget
+ method in PasteboardHelperGtk by asking the WebView which
+ clipboard to use.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::PasteboardHelperGtk::getCurrentTarget):
+ * WebCoreSupport/PasteboardHelperGtk.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_button_press_event):
+ (webkit_web_view_use_primary_for_paste):
+
+2009-05-12 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] Various autotools build refactoring and fixes
+ https://bugs.webkit.org/show_bug.cgi?id=25286
+
+ Add glib-2.0 to the list of required package.
+
+ * webkit.pc.in:
+
+2009-05-11 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25697
+ [GTK] Warnings building WebKit/gtk/tests/testwebframe.c
+
+ * tests/testwebframe.c:
+ (test_webkit_web_frame_create_destroy): Declare webView as a GtkWidget*
+ to fix pointer type incompatibility warnings.
+
+2009-05-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Make the scan program call g_thread_init(NULL) in addition to
+ g_type_init(), so that it actually works.
+
+ * docs/GNUmakefile.am:
+
+2009-05-08 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Unify scrolling code via adjustments and keys. Use the WebCore
+ defined constants, since that's what people are most used to at
+ this point.
+
+ * ChangeLog:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_real_move_cursor):
+
+2009-05-07 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage):
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad): Add missing
+ call to notifyStatus in the committed case and a missing property notify.
+
+2009-05-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24786
+ WebKitDownload sometimes suggests peculiar filenames
+
+ When a download is requested by an ongoing request, use the already
+ provided response to set the suggested filename for the WebKitDownload
+ object, if available.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::download):
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::webkit_download_set_property):
+ (_WebKitDownloadPrivate::webkit_download_get_suggested_filename):
+ (_WebKitDownloadPrivate::webkit_download_set_suggested_filename):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+
+2009-05-06 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ GTK+ API implementation files have bogus extern "C" entries
+ https://bugs.webkit.org/show_bug.cgi?id=24322
+
+ Remove bogus extern "C" from the source files.
+
+ * webkit/webkitdownload.cpp:
+ (DownloadClient::cannotShowURL):
+ * webkit/webkiterror.cpp:
+ (webkit_plugin_error_quark):
+ * webkit/webkitnetworkrequest.cpp:
+ (webkit_network_request_get_uri):
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+ * webkit/webkitversion.cpp:
+ (webkit_micro_version):
+ * webkit/webkitwebbackforwardlist.cpp:
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_get_load_status):
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebinspector.cpp:
+ (webkit_web_inspector_set_inspector_client):
+ * webkit/webkitwebnavigationaction.cpp:
+ (webkit_web_navigation_action_get_modifier_state):
+ * webkit/webkitwebpolicydecision.cpp:
+ (webkit_web_policy_decision_cancel):
+ * webkit/webkitwebsettings.cpp:
+ (webkit_web_settings_get_spell_languages):
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebwindowfeatures.cpp:
+ (webkit_web_window_features_equal):
+
+2009-05-06 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ Misc fixes to InspectorClientGtk.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::createPage): use g_filename_to_uri to
+ get the URI and use web_view_load_uri instead of the deprecated
+ web_view_open method for loading the URI.
+ (WebKit::InspectorClient::localizedStringsURL): implement.
+
+2009-05-05 Ben Murdoch <benm@google.com>
+
+ Reviewed by Eric Seidel.
+
+ Add #if ENABLE(DATABASE) guards around database code so toggling ENABLE_DATABASE off does not break builds.
+ https://bugs.webkit.org/show_bug.cgi?id=24776
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::exceededDatabaseQuota):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2009-05-06 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Gustavo Noronha.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17066
+ [GTK] Improve frameloader signals
+
+ Implement load-status and progress properties on the view, as well as
+ load-status on the frame. This supersedes the different load signals
+ load-progress-changed, load-committed, load-done, load-started and
+ load-finished which are not only misnamed but broken by design.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::notifyStatus):
+ (WebKit::FrameLoaderClient::postProgressStartedNotification):
+ (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoad):
+ (WebKit::FrameLoaderClient::dispatchDidStartProvisionalLoad):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2009-05-05 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ Fix memory leaks.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::checkSpellingOfString):
+
+2009-05-02 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25466
+ WebKitGtk+ 1.1.6 prints weird error messages in Liferea
+
+ Use strlen instead of g_utf8_strlen when calculating the size of
+ the data that is being given to webkit_web_frame_load_string to be
+ loaded, so that we don't miss any of the content.
+
+ * webkit/webkitwebframe.cpp:
+
+2009-05-01 Dimitri Glazkov <dglazkov@chromium.org>
+
+ Unreviewed, bulid fix.
+
+ Fix mis-applied patch.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
+
+2009-05-01 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Timothy Hatcher.
+
+ Add a FrameLoaderClient callback for the ResourceRetrievedByXMLHttpRequest.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25347
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidLoadResourceByXMLHttpRequest):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-04-30 David Kilzer <ddkilzer@apple.com>
+
+ Provide a mechanism to create a quirks delegate for HTMLParser
+
+ Reviewed by David Hyatt.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::createHTMLParserQuirks): Added. The
+ default implementation of this factory method returns 0.
+
+2009-04-30 Pavel Feldman <pfeldman@chromium.org>
+
+ Reviewed by Dimitri Glazkov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25342
+ Add MessageSource and MessageLevel parameters to the ChromeClient::addMessageToConsole.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::addMessageToConsole):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2009-04-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Update gtk-doc control and base sgml files for 1.1.6.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-04-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Updated with news for the 1.1.6 release.
+
+ * NEWS:
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Leave a bit of space from the previous page when advacing a whole
+ page. This matches the behavior of our scrollbar scrolling code
+ and is just nicer in general.
+
+ * webkit/webkitwebview.cpp:
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed: committed a few bits by mistake, remove them.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::handleEditingKeyboardEvent):
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16135
+ [GTK] Support caret browsing
+
+ Refactor keyboard event handling to work properly under caret
+ browsing mode. Most of the code comes from the Windows port.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::):
+ (WebKit::interpretKeyEvent):
+ (WebKit::handleEditingKeyboardEvent):
+ (WebKit::EditorClient::handleKeyboardEvent):
+
+2009-04-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16135
+ [GTK] Support caret browsing
+
+ Based on a patch by Alp Toker.
+
+ Add enable-caret-browsing setting to WebKitWebView.
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+
+2009-04-27 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25409
+ [GTK] incorrectly fallsback on cancellation
+
+ Check whether we should fallback also on didFailLoad, so that we
+ don't get error pages showing up in parts of the content of some
+ sites because of, for instance, location changes.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+
+2009-04-27 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25409
+ [GTK] incorrectly fallsback on cancellation
+
+ Correctly handle cancellation and frame loading interruption
+ caused by policy change. This also fixes
+ fast/frames/location-change.html.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::shouldFallBack):
+
+2009-04-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Mark Rowe.
+
+ Plug memory leak.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+
+2009-04-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25391
+ G_SIGNAL_ACTION flag in WebKitWebView signals
+
+ Most of the signals in WebKitGTK+ have the G_SIGNAL_ACTION flag,
+ but I don't think this makes sense. The flag is meant for those
+ signals that can be emitted by the user to trigger some action in
+ the view, as if it were a normal API, which is not the case for
+ most of them.
+
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::webkit_download_class_init):
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebinspector.cpp:
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init):
+ * webkit/webkitwebview.cpp:
+
+2009-04-26 Xan Lopez <xlopez@igalia.com>
+
+ Unreviewed, actually apply the right patch.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_move_cursor):
+
+2009-04-26 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Pass a variable to hold the return value of the 'move-cursor'
+ signal, otherwise a crash can happen.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_move_cursor):
+
+2009-04-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24786
+ WebKitDownload sometimes suggests peculiar filenames
+
+ Refactor the emission of the download-requested signal so that we
+ have less code duplication.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::ContextMenuClient::downloadURL):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::startDownload):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+
+2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Error reporting
+ https://bugs.webkit.org/show_bug.cgi?id=18344
+
+ Update FrameLoad errors to use WebKitErrors.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::cancelledError):
+ (WebKit::FrameLoaderClient::blockedError):
+ (WebKit::FrameLoaderClient::cannotShowURLError):
+ (WebKit::FrameLoaderClient::interruptForPolicyChangeError):
+ (WebKit::FrameLoaderClient::cannotShowMIMETypeError):
+ (WebKit::FrameLoaderClient::fileDoesNotExistError):
+ (WebKit::FrameLoaderClient::pluginWillHandleLoadError):
+ (WebKit::FrameLoaderClient::shouldFallBack):
+ * webkit/webkiterror.h: Added.
+ * webkit/webkiterror.cpp: Added.
+
+2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Error reporting
+ https://bugs.webkit.org/show_bug.cgi?id=18344
+
+ Display a default error page for load errors.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+ * resources/error.html: Added.
+
+2009-04-25 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] Error reporting
+ https://bugs.webkit.org/show_bug.cgi?id=18344
+
+ Add a WebKitWebFrame API to load alternate content for unreachable URLs.
+ Also add a new signal "load-error" for handling load errors.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::postProgressFinishedNotification):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoading):
+ (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebview.cpp:
+
+2009-04-24 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Fix braces to comply with style guidelines.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::PasteboardHelperGtk::getClipboard):
+ (WebKit::PasteboardHelperGtk::getCopyTargetList):
+ (WebKit::PasteboardHelperGtk::getPasteTargetList):
+
+2009-04-24 Sergio García-Cuevas <sergio_gcg@telefonica.net>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17267
+ [GTK] Primary selection/clipboard support
+
+ Add a method for getting the primary selection.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ (WebKit::PasteboardHelperGtk::getPrimary):
+ * WebCoreSupport/PasteboardHelperGtk.h:
+
+2009-04-24 Johan Bilien <jobi@via.ecp.fr>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25373
+ Popup menu has the wrong size when popped up near the edge
+ of the screen
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_forward_context_menu_event): Let GTK place
+ the popup menu instead of trying to do better and failing
+
+2009-04-24 Christian Dywan <christian@twotoasts.de>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init): Reword the
+ description of the enable-spell-checking property and correct the
+ mentioning of the default language used.
+
+2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15616
+ [GTK] Add spell checking
+
+ Implement EditorClient::ignoreWordInSpellDocument,
+ EditorClient::learnWord and EditorClient::getGuessesForWord. This
+ enables the corresponding user actions.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::ignoreWordInSpellDocument):
+ (WebKit::EditorClient::learnWord):
+ (WebKit::EditorClient::getGuessesForWord):
+
+2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15616
+ [GTK] Add spell checking
+
+ Implement EditorClient::checkSpellingOfString; enabling spell checking
+ to actually happen, this is the basis for other spelling functions.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::checkSpellingOfString):
+
+2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15616
+ [GTK] Add spell checking
+
+ Add spell-checking-languages property to WebKitWebSettings.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_finalize):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_copy):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_spell_languages):
+
+2009-04-24 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15616
+ [GTK] Add spell checking
+
+ Add enable-spell-checking property to WebKitWebSettings and implement
+ EditorClient::isContinuousSpellCheckingEnabled and
+ EditorClient::toggleContinuousSpellChecking to allow the UI to
+ enable check as you type spell checking.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::isContinuousSpellCheckingEnabled):
+ (WebKit::EditorClient::toggleContinuousSpellChecking):
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_copy):
+
+2009-04-21 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Implement window<->screen coordinate transformation functions.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::widgetScreenPosition):
+ (WebKit::ChromeClient::windowToScreen):
+ (WebKit::ChromeClient::screenToWindow):
+
+2009-04-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24786
+ WebKitDownload sometimes suggests peculiar filenames
+
+ Remove query and ref from the URI that is to be downloaded when
+ using it to provide a file name suggestion.
+
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::webkit_download_set_property):
+
+2009-04-20 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Xan Lopez.
+
+ Handle the case when the plugin view is destroyed during
+ didReceiveResponse, to avoid crashing.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::committedLoad):
+
+2009-04-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25251
+ Crash when frame creation removes it from the parent
+
+ This brings us up-to-date with the expectations of sub-frame
+ creation, following what Mac has done. It fixes crashes when
+ calling init on the child frame removes it from the page.
+
+ This makes the following test pass instead of crash:
+
+ fast/loader/frame-creation-removal.html
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+
+2009-04-16 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=25042
+ destroying webview widget directly causes crash.
+
+ * tests/testwebframe.c:
+ (test_webkit_web_frame_create_destroy): Add a test case for destroying
+ a web view shortly after packing it in a window.
+
+2009-04-16 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25241
+ Remove superfluous NotImplemented.h includes.
+
+ * webkit/webkitprivate.cpp:
+
+2009-04-14 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Update gtk-doc control and base sgml files for 1.1.5.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-04-14 Xan Lopez <xlopez@igalia.com>
+
+ * NEWS: updated for 1.1.5 release.
+
+2009-04-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22898
+ [GTK] need proper API for printing
+
+ Added simple printing unit tests.
+
+ * tests/testwebframe.c:
+ (print_requested_cb):
+ (print_timeout):
+ (test_webkit_web_frame_printing):
+ (main):
+
+2009-04-13 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22898
+ [GTK] need proper API for printing
+
+ Implement proper printing API, using the GTK+ printing API.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::print):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebview.cpp:
+
+2009-04-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25124
+ [GTK] many strings still missing translation calls
+
+ Mark the missing strings for translation.
+
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::webkit_download_cancel):
+ * webkit/webkitsoupauthdialog.c:
+ (show_auth_dialog):
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init):
+ * webkit/webkitwebinspector.cpp:
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init):
+ * webkit/webkitwebnavigationaction.cpp:
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_class_init):
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ * webkit/webkitwebview.cpp:
+
+2009-04-08 Alejandro Piñeiro <apinheiro@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21546
+ [GTK] ATK accessibility enhancements
+
+ Use getOrCreate instead of just get, as we need to actually create
+ the wrapper object the first time this function is called.
+
+ * webkit/webkitwebview.cpp:
+
+2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Sam Weinig.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20575
+ No localization in WebKitGtk
+
+ Implemented localization support for WebKitGTK+.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * po/POTFILES: Added.
+ * po/README: Added.
+ * po/webkit.pot: Added.
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::webkit_download_class_init):
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+ * webkit/webkitwebframe.cpp:
+
+2009-04-05 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25042
+ destroying webview widget directly causes crash.
+
+ Do not connect the WebView to its own screen-changed signal, set a
+ default handler instead.
+
+ * webkit/webkitwebview.cpp:
+
+2009-04-05 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25042
+ destroying webview widget directly causes crash.
+
+ GtkWidget::screen-changed can be emitted when a widget is being
+ destroyed, protect against it.
+
+ * webkit/webkitwebview.cpp:
+
+2009-04-05 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] Implement LayoutTestControllerGtk::setPrivateBrowsingEnabled
+ https://bugs.webkit.org/show_bug.cgi?id=24487
+
+ Updated documentation and put more information about the
+ private-browsing setting for WebKitGtk.
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+
+2009-04-03 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ Remove pre-processor checks for GTK+ >= 2.10, since we now require
+ at least that version.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::clipboard_clear_contents_cb):
+ (WebKit::EditorClient::respondToChangedSelection):
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+
+2009-04-02 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24844
+ Unit test WebKitDownload
+
+ Extra checks to avoid crashing and a critical message when
+ property accessor functions are called before the download is
+ started.
+
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::webkit_download_get_progress):
+ (_WebKitDownloadPrivate::webkit_download_get_elapsed_time):
+
+2009-04-01 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ * tests/testdownload.c: Added.
+ (test_webkit_download_create):
+ (main): Add an initial unit test for downloading.
+
+2009-04-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed typo fixes, and naming normalization in the
+ documentation.
+
+ * docs/webkitenvironment.xml:
+ * webkit/webkitwebview.cpp:
+
+2009-03-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ Updated gtk-doc configuration files for the 1.1.1, 1.1.2, 1.1.3,
+ and 1.1.4 versions of WebKitGTK+.
+
+ * docs/webkitgtk-docs.sgml:
+ * docs/webkitgtk-sections.txt:
+
+2009-03-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17045
+ [GTK] Documentation
+
+ Added header documentation for WebKitWebNavigationAction and
+ WebKitWebPolicyDecision.
+
+ Added missing documentation pieces for WebKitSoupAuthDialog,
+ WebKitDownload and WebKitWebPolicyDecision.
+
+ Wrote a section about using the WEBKIT_DEBUG environment variable.
+
+ * docs/GNUmakefile.am:
+ * docs/webkitenvironment.xml: Added.
+ * docs/webkitgtk-docs.sgml:
+ * webkit/webkitdownload.cpp:
+ * webkit/webkitsoupauthdialog.c:
+ * webkit/webkitwebnavigationaction.cpp:
+ * webkit/webkitwebpolicydecision.cpp:
+
+2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ Integrate gtk-doc into the Gtk+ buildsystem.
+
+ Based on original work by Holger Freyther.
+
+ Integrate gtk-doc into our buildsystem. We are forced to
+ use recursive make for gtk-doc itself as the to be installed
+ gtk-doc.make (done by gtkdocize) is not working in a non
+ recursive environment.
+
+ The documentation can only be generated when srcdir == builddir.
+ In all other cases the generated files will not be found. This
+ limitation can be found in pango and gtk+ as well. There is no
+ easy way around. The resulting html documentation will be saved
+ in the srcdir as well.
+
+ * docs/GNUmakefile.am: Added.
+ * docs/version.xml.in: Added.
+ * docs/webkitgtk-docs.sgml:
+
+2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Documenting what changed since the 1.1.3 release, in
+ the GTK+ port.
+
+ * NEWS:
+
+2009-03-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed. Add information on the bug-fix-only 1.1.3 release.
+
+ * NEWS:
+
+2009-03-30 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24878
+ [GTK] Use GtkBinding system to handle key events in WebView
+
+ Use GtkBinding system for key events in WebKitWebView. Allows the
+ user to reconfigure the bindings and fixes a bunch of bugs along
+ the way (we were not checking modifier keys in most actions).
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_move_cursor):
+ * webkit/webkitwebview.h:
+ * webkitmarshal.list:
+
+2009-03-28 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24790
+ [GTK] webkitsoupauthdialog.h lacks WEBKIT_API before function
+
+ Set the right visibility to the WebKitSoupAuthDialog get_type
+ function.
+
+ * webkit/webkitsoupauthdialog.h:
+
+2009-03-28 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Gtk build fix. Not reviewed.
+
+ FrameLoader::loadURL and FrameLoader::detachChildren went private
+ per changes in http://trac.webkit.org/changeset/42055. Follow
+ Mac's behaviour and use FrameLoader::loadURLIntoChildFrame for
+ loadURL and FrameLoader::detachParent for detachChildrem.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+ * webkit/webkitwebview.cpp:
+
+2009-03-25 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=15793
+ [GTK] tooltip position doesn't update when hovering consecutive links
+
+ Work-around tooltips not updating their location when the elements
+ are consecutive, by clearing the tooltip when handling
+ mouseDidMoveOverElement.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+
+2009-03-23 Alejandro Garcia Castro <alex@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] Current API does not allow us to open target="_blank" links
+ in new tabs instead of windows
+ https://bugs.webkit.org/show_bug.cgi?id=23932
+
+ Added a signal to the API (new-window-policy-decision-requested)
+ that allows the browser to decide the policy for the new window
+ request, if the signal is not handled we open the new window as
+ usual.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::getNavigationAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ * webkit/webkitwebview.cpp:
+
+2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com>
+
+ Not reviewed. Fix style issues with my previous commit (r41866) as
+ suggested by Holger in https://bugs.webkit.org/show_bug.cgi?id=24493
+
+ * tests/testwebhistoryitem.c:
+ (test_webkit_web_history_item_get_data):
+ (test_webkit_web_history_item_alternate_title):
+
+2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] Misc patches for WebKitWebHistoryItem
+ https://bugs.webkit.org/show_bug.cgi?id=24493
+
+ Add unit test for WebKitWebHistoryItem
+
+ * tests/testwebhistoryitem.c: Added.
+ (web_history_item_fixture_setup):
+ (web_history_item_fixture_teardown):
+ (test_webkit_web_history_item_get_data):
+ (test_webkit_web_history_item_alternate_title):
+ (main):
+
+2009-03-20 Jan Michael Alonzo <jmalonzo@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ Separate gtk unit tests
+ https://bugs.webkit.org/show_bug.cgi?id=24039
+
+ Split the current single-file unit test to make it more
+ modularized and manageable in the future as more unit tests are
+ written.
+
+ * tests/main.c: Removed.
+ * tests/testwebbackforwardlist.c: Copied from WebKit/gtk/tests/main.c.
+ (main):
+ * tests/testwebframe.c: Copied from WebKit/gtk/tests/main.c.
+ (main):
+
+2009-03-16 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Adam Roben.
+
+ [gtk] API implementation: url and title
+ http://bugs.webkit.org/show_bug.cgi?id=14807
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveTitle):
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad):
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h: Implement "title" and "uri" properties as well
+ as according functions. "uri" always reflects the current location
+ including navigation inside the same page. title-changed is deprecated.
+
+2009-03-15 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Anders Carlsson.
+
+ Fix default policy decision to be ignore, on MIME checks, if
+ WebKit doesn't know how to handle the MIME type. The documentation
+ is already correct, and this was an oversight when the policy
+ decision code was first committed. Since 1.1.2 will be the first
+ release to support download, there is no practical change in
+ behavior.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType):
+
+2009-03-15 Xan Lopez <xlopez@igalia.com>
+
+ * NEWS: update for 1.1.2.
+
+2009-03-14 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] use of confirm dialog (yes/no) causes segfault
+ https://bugs.webkit.org/show_bug.cgi?id=20940
+
+ Change the script-confirm marshaller from OBJECT,STRING,BOOLEAN to
+ OBJECT,STRING,POINTER
+
+ * webkit/webkitwebview.cpp:
+ * webkitmarshal.list:
+
+2009-03-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24553
+ [GTK] Improvements to WebKitDownload
+
+ Rename 'state' to 'status' to match the naming in the frame
+ loader rework that we plan to land soonish, and make it a
+ property, for the same reason.
+
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::):
+ (_WebKitDownloadPrivate::webkit_download_finalize):
+ (_WebKitDownloadPrivate::webkit_download_get_property):
+ (_WebKitDownloadPrivate::webkit_download_set_property):
+ (_WebKitDownloadPrivate::webkit_download_class_init):
+ (_WebKitDownloadPrivate::webkit_download_init):
+ (_WebKitDownloadPrivate::webkit_download_start):
+ (_WebKitDownloadPrivate::webkit_download_cancel):
+ (_WebKitDownloadPrivate::webkit_download_set_destination_uri):
+ (_WebKitDownloadPrivate::webkit_download_get_status):
+ (_WebKitDownloadPrivate::webkit_download_set_status):
+ (_WebKitDownloadPrivate::webkit_download_received_data):
+ (_WebKitDownloadPrivate::webkit_download_finished_loading):
+ (_WebKitDownloadPrivate::webkit_download_error):
+ * webkit/webkitdownload.h:
+
+2009-03-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24553
+ [GTK] Improvements to WebKitDownload
+
+ Improved documentation for the download-requested signal, to make
+ its usage clear.
+
+ * webkit/webkitwebview.cpp:
+
+2009-03-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24541
+ Scrolling with home and end keys not always works
+
+ Also make page up and page down keys be handled by the webview key
+ event code, so that they also work in cases where the GTK+
+ scrollbars don't handle them directly, like in the bugzill's patch
+ review page.
+
+ * webkit/webkitwebview.cpp:
+
+2009-03-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24541
+ Scrolling with home and end keys not always works
+
+ Make home and end keys behave more consistently for scrolling the
+ view.
+
+ * webkit/webkitwebview.cpp:
+
+2009-03-12 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24254
+ [GTK] spacebar doesn't scroll down
+
+ Make spacebar and shift+spacebar scroll like page up and down
+ respectively would.
+
+ * webkit/webkitwebview.cpp:
+
+2009-03-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24493
+ [GTK] Misc patches for WebKitWebHistoryItem
+
+ Only run code in dispose once per instance.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose):
+
+2009-03-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24493
+ [GTK] Misc patches for WebKitWebHistoryItem
+
+ Call deref() on our internal HistoryItem on dispose, as we always
+ acquire it with a releaseRef() call to a PassRefPtr, which passes
+ ownership.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose):
+
+2009-03-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24493
+ [GTK] Misc patches for WebKitWebHistoryItem
+
+ return foo? foo : NULL == return foo
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (WebKit::core):
+
+2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ Gtk] Implement LayoutTestControllerGtk::setPrivateBrowsingEnabled
+ https://bugs.webkit.org/show_bug.cgi?id=24487
+
+ Add private browsing option "enable-private-browsing" to WebKitWebSettings.
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+
+2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] BackForward history leak?
+ https://bugs.webkit.org/show_bug.cgi?id=19528
+
+ Don't ref the history items when returning the back/forward list
+ Added test_webkit_web_history_item_lifetime test case for this.
+
+ * tests/main.c:
+ (test_webkit_web_history_item_lifetime):
+ (test_webkit_web_back_forward_list_order): Style fix.
+ (test_webkit_web_back_forward_list_add_item): Style fix.
+ (main):
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit):
+
+2009-03-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24493
+ [GTK] Misc patches for WebKitWebHistoryItem
+
+ Use g_hash_table_new_full so we can save the manual unref on the
+ values when removing them from the table.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose):
+
+2009-03-10 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24493
+ [GTK] Misc patches for WebKitWebHistoryItem
+
+ Use 'if (foo)' instead of 'if (foo != NULL)', per coding style
+ guidelines.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_history_item_remove):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_last_visited_time):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_target):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_is_target_item):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_children):
+
+2009-03-10 Xan Lopez <xlopez@igalia.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ Correct return value to false instead of NULL.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_is_target_item):
+
+2009-03-08 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Mark Rowe.
+
+ Add javascript-profiling-enabled property and implement it. This
+ will enable/disable the profiler on the InstpectorController.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebinspector.cpp:
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_set_property):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_get_property):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_set_inspector_client):
+ * webkit/webkitwebview.cpp:
+
+2009-03-05 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Olliej.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24295
+ webkit_web_back_forward_list_add_item needs a Since tag
+
+ Add missing Since tag to webkit_web_back_forward_list_add_item
+ documentation.
+
+ * webkit/webkitwebbackforwardlist.cpp:
+
+2009-03-05 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24417
+ [GTK] WebKitDownload's _cancel and _dispose methods may emit warnings
+
+ NULL-check for timer on _cancel and _dispose, to avoid bad
+ warnings.
+
+ * webkit/webkitdownload.cpp:
+ (_WebKitDownloadPrivate::webkit_download_finalize):
+ (_WebKitDownloadPrivate::webkit_download_cancel):
+
+2009-03-02 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24287
+ [GTK] Move auth dialog feature to WebKit/
+
+ Add WebKitSoupAuthDialog and add it to the session in webkit_init.
+
+ * webkit/webkitprivate.cpp:
+ (currentToplevelCallback):
+ (webkit_init):
+ * webkit/webkitsoupauthdialog.c: Added.
+ (webkit_soup_auth_dialog_class_init):
+ (webkit_soup_auth_dialog_init):
+ (webkit_soup_auth_dialog_session_feature_init):
+ (free_authData):
+ (set_password_callback):
+ (response_callback):
+ (table_add_entry):
+ (show_auth_dialog):
+ (find_password_callback):
+ (session_authenticate):
+ (attach):
+ * webkit/webkitsoupauthdialog.h: Added.
+
+2009-03-03 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16826
+ [Gtk] Implement WebKitDownload
+
+ Implement download, and provide a nice object wrapping the
+ download process. Initial work done by Marco Barisione and
+ Pierre-Luc Beaudoin for Collabora.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::ContextMenuClient::downloadURL):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::download):
+ (WebKit::FrameLoaderClient::startDownload):
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkitdownload.cpp: Added.
+ (_WebKitDownloadPrivate::):
+ (_WebKitDownloadPrivate::webkit_download_dispose):
+ (_WebKitDownloadPrivate::webkit_download_finalize):
+ (_WebKitDownloadPrivate::webkit_download_get_property):
+ (_WebKitDownloadPrivate::webkit_download_set_property):
+ (_WebKitDownloadPrivate::webkit_download_class_init):
+ (_WebKitDownloadPrivate::webkit_download_init):
+ (_WebKitDownloadPrivate::webkit_download_new):
+ (_WebKitDownloadPrivate::webkit_download_open_stream_for_uri):
+ (_WebKitDownloadPrivate::webkit_download_close_stream):
+ (_WebKitDownloadPrivate::webkit_download_start):
+ (_WebKitDownloadPrivate::webkit_download_cancel):
+ (_WebKitDownloadPrivate::webkit_download_get_uri):
+ (_WebKitDownloadPrivate::webkit_download_get_network_request):
+ (_WebKitDownloadPrivate::webkit_download_set_response):
+ (_WebKitDownloadPrivate::webkit_download_get_suggested_filename):
+ (_WebKitDownloadPrivate::webkit_download_get_destination_uri):
+ (_WebKitDownloadPrivate::webkit_download_set_destination_uri):
+ (_WebKitDownloadPrivate::webkit_download_get_state):
+ (_WebKitDownloadPrivate::webkit_download_get_total_size):
+ (_WebKitDownloadPrivate::webkit_download_get_current_size):
+ (_WebKitDownloadPrivate::webkit_download_get_progress):
+ (_WebKitDownloadPrivate::webkit_download_get_elapsed_time):
+ (_WebKitDownloadPrivate::webkit_download_received_data):
+ (_WebKitDownloadPrivate::webkit_download_finished_loading):
+ (_WebKitDownloadPrivate::webkit_download_error):
+ (_WebKitDownloadPrivate::DownloadClient::DownloadClient):
+ (_WebKitDownloadPrivate::DownloadClient::didReceiveResponse):
+ (_WebKitDownloadPrivate::DownloadClient::didReceiveData):
+ (_WebKitDownloadPrivate::DownloadClient::didFinishLoading):
+ (_WebKitDownloadPrivate::DownloadClient::didFail):
+ (_WebKitDownloadPrivate::DownloadClient::wasBlocked):
+ (_WebKitDownloadPrivate::DownloadClient::cannotShowURL):
+ * webkit/webkitdownload.h: Added.
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ * webkitmarshal.list:
+
+2009-03-01 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] get the HTTP layout tests going
+ https://bugs.webkit.org/show_bug.cgi?id=24259
+
+ Added API to get the response mime type from a frame. We need this
+ so we can decide if we need to dump the frame as text or its
+ render tree
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+
+2009-03-01 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Holger Freyther.
+
+ [Gtk] get the HTTP layout tests going
+ https://bugs.webkit.org/show_bug.cgi?id=24259
+
+ Create a WebKitWebHistoryItem for each WebCore::HistoryItem when
+ necessary.
+ Add necessary API additions for us to be able to dump a WebKitWebHistoryItem
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit):
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_target):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_is_target_item):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_children):
+ (WebKit::core):
+ (WebKit::kit):
+
+2009-03-01 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_get_encoding):
+ * webkit/webkitwebview.h: Implement 'encoding' and 'custom-encoding'
+ properties as well as webkit_web_view_get_encoding.
+
+2009-03-01 Gustavo Noronha Silva <gns@gnome.org>
+
+ Unreviewed simple wording fix for the NEWS file.
+
+ * NEWS:
+
+2009-03-01 Xan Lopez <xan@gnome.org>
+
+ Add NEWS file to track progress between releases.
+
+ * NEWS: Added.
+
+2009-02-28 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ * webkit/webkitwebview.cpp: Let webkit_web_view_open add file:// if a
+ locale path is passed for compatibility, since we used to support that.
+
+2009-02-27 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by David Hyatt.
+
+ Automatically ignore empty requests to avoid crashing. This fixes
+ the crash in fast/loader/empty-embed-src-attribute.html.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+
+2009-02-27 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24221
+ [GTK] Do not emit load-finished when being disposed
+
+ webkit_web_view_stop_load() is called from dispose() on
+ WebKitWebView. This eventually calls postProgressFinishedNotification
+ in FrameLoaderClientGtk, which emits load-finished. Add
+ a 'disposing' flag to WebView that we can check here, so
+ we avoid emitting signals on objects on their way to be
+ destroyed. This fixes a bunch of critical warnings when
+ closing a loading WebView.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::postProgressFinishedNotification):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+
+2009-02-27 Xan Lopez <xan@gnome.org>
+
+ Rubber-stamped by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24222
+ [GTK] Remove checks for old glib versions
+
+ libsoup, which is a hard dependency, needs at least glib 2.15.3,
+ so remove all glib checks for versions older than that.
+
+ * webkit/webkitwebview.cpp:
+
+2009-02-26 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16947
+ [GTK] Missing HTTP Auth challenge
+
+ Add new marshalers list.
+
+ * webkitmarshal.list: Added.
+
+2009-02-26 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24193
+ [GTK] Checkbuttons not activated with space
+
+ Do not swallow key events with GtkIMContext for non-editable
+ content.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleInputMethodKeydown):
+
+2009-02-26 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=24103
+ [GTK] Use correct return value for WebView button-release handler
+
+ We are returning whatever the core code tells us it did, but this
+ does not play well with the GTK+ model. GTK+ in general expects it
+ will see a button-release if it saw a button-press and no
+ motion/leave/etc events in between. EventHandler.cpp will, in some
+ cases, not handle press but handle release, confusing the parent
+ container of the WebView.
+
+ As a workaround return always FALSE for button-release (this is
+ the same than the Windows port does).
+
+ * webkit/webkitwebview.cpp:
+
+2009-02-26 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17585
+ [gtk] get|set encoding api
+
+ Add functions to get and set a custom encoding an a view.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_set_custom_encoding):
+ (webkit_web_view_get_custom_encoding):
+ * webkit/webkitwebview.h:
+
+2009-02-23 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22624
+ [SOUP][GTK] Need API to get SoupSession from WebKit.
+
+ Add API to get the default soup session.
+
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2009-02-23 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22624
+ [SOUP][GTK] Need API to get SoupSession from WebKit.
+
+ Add soup dependency to pc file.
+
+ * webkit.pc.in:
+
+2009-02-23 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ [GTK] Back / Forward history menus are flipped
+ https://bugs.webkit.org/show_bug.cgi?id=22694
+
+ Don't call g_list_reverse when returning the back or forward list.
+
+ * tests/main.c:
+ (test_webkit_web_back_forward_list_order):
+ (main):
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit):
+
+2009-02-17 Xan Lopez <xan@gnome.org>
+
+ Rubber-stamped by Alexey Proskuryakov.
+
+ Restoring change landed in r40715, which was accidentally undone
+ by r40918.
+
+ * webkit/webkitwebframe.cpp:
+
+2009-02-12 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17176
+ [GTK] API: hovering-over-link and webkit_web_view_open /_load_foo
+
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h: Introduce webkit_web_frame_load_uri,
+ webkit_web_frame_load_string, webkit_web_view_load_uri and
+ webkit_web_view_load_request and unify implementations.
+
+2009-02-11 Dimitri Dupuis-latour <dupuislatour@apple.com>
+
+ Stub out InspectorClient::hiddenPanels.
+
+ Reviewed by Timothy Hatcher.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::hiddenPanels):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2009-02-07 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix Use toNormalizedRange().
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::clipboard_get_contents_cb):
+
+2009-02-06 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::updateGlobalHistoryRedirectLinks):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-02-06 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Reported by Daniel Macks.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20412
+
+ Use positive numbers for the target info IDs, gtk_target_list_add
+ casts them to 'guint'. Also just start them from 0, since the
+ values are not relevant or magic in any way, they are just used as
+ tokens for the user of the API.
+
+ * webkit/webkitwebview.h:
+
+2009-02-06 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23769
+
+ Do not use empty ResourceError errors.
+
+ Rather create bogus but non-null errors, since some codepaths
+ expect these. For example, see DocumentLoader::mainReceivedError.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::cancelledError):
+ (WebKit::FrameLoaderClient::blockedError):
+ (WebKit::FrameLoaderClient::cannotShowURLError):
+ (WebKit::FrameLoaderClient::interruptForPolicyChangeError):
+ (WebKit::FrameLoaderClient::cannotShowMIMETypeError):
+ (WebKit::FrameLoaderClient::fileDoesNotExistError):
+ (WebKit::FrameLoaderClient::pluginWillHandleLoadError):
+
+2009-02-06 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alexey Proskuryakov.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23761
+
+ Use two-arg KURL ctor.
+
+ We are using the one-arg ctor currently, but:
+
+ - It assumes the strings are already encoded, which is not
+ necesarily the case for us.
+
+ - The single-argument KURL ctors expect their input to already be
+ the output of a previous KURL::parse call, so for the general
+ case (ie, random user input) we need to use the two-arg ctor
+ anyway.
+
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+
+2009-02-05 Aaron Boodman <aa@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23708
+ Adds documentElementAvailable() callback to FrameLoaderClient.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::documentElementAvailable):
+ Stub out documentElementAvailable()
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ Ditto.
+
+2009-02-03 Hiroyuki Ikezoe <poincare@ikezoe.net>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22988
+ [GTK] Need a public method to add a WebKitWebHistoryItem to
+ WebKitWebBackForwardList.
+
+ Wrap WebCore::BackForwardList::addItem.
+
+ * tests/main.c:
+ (test_webkit_web_back_forward_list_add_item):
+ (main):
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_add_item):
+ * webkit/webkitwebbackforwardlist.h:
+
+2009-02-02 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * webkit/webkitwebview.cpp:
+
+2009-02-02 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * webkit/webkitwebframe.cpp:
+
+2009-02-02 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+
+2009-02-02 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ Track redirects in global history.
+
+ Keep GTK building.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+ (WebKit::FrameLoaderClient::updateGlobalHistoryForRedirectWithoutHistoryItem):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-02-02 Anders Carlsson <andersca@apple.com>
+
+ Build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-02-02 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ Update for changes to WebCore.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createPlugin):
+ (WebKit::FrameLoaderClient::createJavaAppletWidget):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-02-02 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ Move Frame::forceLayout, Frame::adjustPageHeight and Frame::forceLayoutWithPageWidthRange to FrameView
+
+ https://bugs.webkit.org/show_bug.cgi?id=23428
+
+ FrameView::forceLayout could be killed but the comment might
+ contain a value over the the plain FrameView::layout...
+
+ Adjust the WebCore/WebKit consumers of these methods.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::forceLayout):
+ * webkit/webkitwebview.cpp:
+
+2009-01-30 Geoffrey Garen <ggaren@apple.com>
+
+ Build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+
+2009-01-30 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22056
+
+ Kill FrameLoaderClient.cpp, move the code over to Frame::createView
+
+ FrameLoaderClient is supposed to be an interface, move the
+ to be shared code to Frame which is a controller and is
+ allowed to create a FrameView.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2009-01-27 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Dan Bernstein
+
+ Rework FrameLoaderClient to work on a CachedFrame basis instead of CachedPage
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::savePlatformDataToCachedFrame):
+ (WebKit::FrameLoaderClient::transitionToCommittedFromCachedFrame):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2009-01-25 Darin Adler <darin@apple.com>
+
+ Try to fix GTK build.
+
+ * webkit/webkitwebview.cpp: Added include of FloatQuad.h.
+
+2009-01-13 Alexander V. Butenko <alex@digiqube.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23279
+
+ Fix crash on WebView dispose stage.
+
+ Add null checks to webkit_web_view_set_scroll_adjustments and
+ webkit_web_view_get_accessible as they get called from within
+ the dispose.
+
+ * webkit/webkitwebview.cpp:
+
+2009-01-11 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Use NULL instead of 0 when dealing with pointers, as agreed for
+ the coding style of the WebKit GTK port for its GTK+ specific
+ files.
+
+ * webkit/webkitwebview.cpp:
+
+2009-01-11 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ Add padding to the class structs to avoid breaking ABI each time
+ we add stuff there.
+
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebnavigationaction.h:
+ * webkit/webkitwebpolicydecision.h:
+ * webkit/webkitwebview.h:
+
+2009-01-09 Benjamin Otte <otte@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23194
+
+ make the finalize function the dispose function. Not releasing held
+ objects in dispose can cause crashers later.
+
+ * webkit/webkitwebview.cpp:
+
+2009-01-09 Benjamin Otte <otte@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=23194
+
+ Remove broken code that uses a fallback. The previous code did 2
+ policy decisions which caused crashes.
+ Download is still notImplemented();
+
+ * webkit/webkitwebpolicydecision.cpp:
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_download):
+
+2009-01-03 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ [GTK] Need a public method to reload view bypassing cache
+ https://bugs.webkit.org/show_bug.cgi?id=19815
+
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+ Add webkit_web_view_reload_bypass_cache.
+
+2009-01-07 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Maciej Stachowiak.
+
+ Add private API to get the number of active animations of
+ a frame. This is required by the DumpRenderTree utility.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+
+2009-01-05 Adam Treat <adam.treat@torchmobile.com>
+
+ Fix build
+
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2009-01-05 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Build fix for contentsSizeChanged
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::contentsSizeChanged):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2009-01-04 Adam Treat <adam.treat@torchmobile.com>
+
+ Reviewed by George Staikos.
+
+ Make the gtk port build with the new fixedLayoutSize feature
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2009-01-03 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Darin Adler.
+
+ [GTK] Fix the reference counting of WebKitWebFrames
+
+ The ownership is the following: WebKitWebView owns a WebCore::Page.
+ WebKitWebView is creating one WebKitWebFrame which will be the
+ mainFrame of the WebCore::Page (having the reference on the Frame).
+
+ The FrameLoaderClient has the reference of the WebKitWebFrame for
+ the main frame and also any other frame. This means when the
+ WebCore::Frame goes away the FrameLoaderClient will go away which
+ will normally remove the last reference of the WebKitWebFrame. Because
+ an API user might have g_object_ref'ed the WebKitWebFrame null
+ checks had to be added to WebKitWebFrame.
+
+ For WebCore::Frames created by the FrameLoaderClient the ownership
+ will be passed down to the FrameTree, the WebKitWebFrame is not holding
+ a reference to the WebCore::Frame.
+
+ Do not g_object_unref the mainFrame in the destructor of the
+ WebKitWebFrame as this will happen from within the WebCore::Page
+ destruction. Do not hold a reference to the WebCore::Frame (circle) in
+ WebKitWebFrame, add null checks as the WebCore::Frame might have gone
+ away. Do not keep track of the FrameLoaderClient in the private
+ structures as it was mostly unusued.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21837
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::frameLoaderDestroyed):
+ (WebKit::FrameLoaderClient::createFrame):
+ * tests/main.c: Add test case.
+ (test_webkit_web_frame_create_destroy):
+ (test_webkit_web_frame_lifetime):
+ (main):
+ * webkit/webkitprivate.cpp:
+ (WebKit::core):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+
+2009-01-02 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Unreviewed build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+
+2008-12-31 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17045
+
+ Add section information for View, Frame, Settings, HistoryItem, BackForwardList, WindowFeatures and Inspector
+
+ Add section information and informal examples for WebKitWebView,
+ WebKitWebFrame, WebKitWebSettings, WebKitWebNetworkRequest,
+ WebKitWebWindowFeatures, WebKitWebHistoryItem,
+ WebKitWebBackForwardList and WebKitWebInspector.
+
+ * docs/webkitgtk-sections.txt: Decide to not document some bits
+ * webkit/webkitnetworkrequest.cpp:
+ * webkit/webkitwebbackforwardlist.cpp:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebinspector.cpp:
+ * webkit/webkitwebsettings.cpp:
+ * webkit/webkitwebsettings.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebwindowfeatures.cpp:
+
+2008-12-21 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16092
+ [GTK] Middle-mouse click should allow opening a URL in a new tab
+
+ Add mouse button and keyboard state modifiers info to navigation action.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ * webkit/webkitwebnavigationaction.cpp:
+ (_WebKitWebNavigationActionPrivate::):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_property):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_property):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_class_init):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_button):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_modifier_state):
+ * webkit/webkitwebnavigationaction.h:
+
+2008-12-19 Marco Barisione <marco.barisione@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16562
+ [gtk] Implement WebPolicyDelegate methods
+
+ Original work by Pierre-Luc Beaudoin. Final touches by Gustavo
+ Noronha.
+
+ This implements the delegates methods of WebPolicyDelegate.
+ Since Gtk+/C doesn't have delegate methods, they are replaced with
+ signals.
+
+ A new object WebKitWebPolicyDecision allows the browser to delay its
+ response in certain cases. WebKitWebNavigationAction contains the
+ information about what caused a navigation request.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::FrameLoaderClient::~FrameLoaderClient):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForMIMEType):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ (WebKit::FrameLoaderClient::cancelPolicyCheck):
+ (WebKit::FrameLoaderClient::canShowMIMEType):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkitprivate.cpp:
+ (WebKit::kit):
+ (WebKit::core):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebnavigationaction.cpp: Added.
+ (_WebKitWebNavigationActionPrivate::):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_property):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_property):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_init):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_finalize):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_class_init):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_reason):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_reason):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_get_original_uri):
+ (_WebKitWebNavigationActionPrivate::webkit_web_navigation_action_set_original_uri):
+ * webkit/webkitwebnavigationaction.h: Added.
+ * webkit/webkitwebpolicydecision.cpp: Added.
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_class_init):
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_init):
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_new):
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_use):
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_ignore):
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_download):
+ (_WebKitWebPolicyDecisionPrivate::webkit_web_policy_decision_cancel):
+ * webkit/webkitwebpolicydecision.h: Added.
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-12-18 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Sam Weinig.
+
+ - stub out FrameLoaderClient::shouldUseCredentialStorage().
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::shouldUseCredentialStorage):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-12-18 Sam Weinig <sam@webkit.org>
+
+ Reviewed by John Sullivan.
+
+ Stub out FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout()
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-12-13 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Cameron Zwarich.
+
+ [GTK] Fix crash with LayoutTests/fast/loader/frame-creation-removal.html
+
+ Call WebCore::Frame::init after the frame has been given
+ a name and been added to the FrameTree of the parent.
+
+ Removing the call to init is fine as FrameLoaderClientGtk::createFrame
+ is the only user of webkit_web_frame_init_with_web_view and is already
+ calling WebCore::Frame::init.
+
+ * webkit/webkitwebframe.cpp:
+
+2008-12-13 Adam Bergkvist <adam.bergkvist@ericsson.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22779
+
+ Check for GTK version >= 2.14.0 before using gtk_test_init.
+
+ * tests/main.c:
+ (main):
+
+2008-12-13 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22039
+
+ Implement animation and transition pausing as needed by DumpRenderTree.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+
+2008-11-29 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Rubber-stamped by Simon Hausmann.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22574
+
+ Make webkit_web_view_set_window_features internal
+
+ Calling this method will not result in a notify::window-features
+ signal being emitted. This would allow replacing a
+ WebKitWebWindowFeature on a WebKitWebView without anyone noticing
+ and the client code would monitor the wrong object.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::createWindow):
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-12-09 Brett Wilson <brettw@chromium.org>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22177
+
+ Add a callback on ChromeClient that the state of form elements on
+ the page has changed. This is to allow clients implementing session
+ saving to know when the current state is dirty.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::formStateDidChange):
+
+2008-12-07 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Eric Seidel.
+
+ [Gtk+] Use glib's unit test facilities to test the WebKit/Gtk+ API
+
+ https://bugs.webkit.org/show_bug.cgi?id=22491
+
+ Add the skeleton to WebKit/gtk/tests and integrate that into the
+ buildsystem. Testing support was added in glib 2.16. For versions
+ using glib < 2.16 we compile an empty application.
+
+ * tests/main.c: Added. https://bugs.webkit.org/show_bug.cgi?id=21837
+ will be the first consumer.
+ (main):
+
+2008-12-06 Simon Fraser <simon.fraser@apple.com>
+
+ Reviewed by Dave Hyatt
+
+ https://bugs.webkit.org/show_bug.cgi?id=15671
+
+ Renderer::caretRect() is now localCaretRect(), which needs
+ converting to absolute coordinates (taking transforms into account).
+
+ * webkit/webkitwebview.cpp:
+
+2008-12-01 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=22553
+ Remove unneeded GObject casts.
+
+ Remove unneeded casts to GObject in functions that take a gpointer
+ argument.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::setWindowRect):
+ (WebKit::ChromeClient::createWindow):
+ (WebKit::ChromeClient::setToolbarsVisible):
+ (WebKit::ChromeClient::toolbarsVisible):
+ (WebKit::ChromeClient::setStatusbarVisible):
+ (WebKit::ChromeClient::statusbarVisible):
+ (WebKit::ChromeClient::setScrollbarsVisible):
+ (WebKit::ChromeClient::scrollbarsVisible):
+ (WebKit::ChromeClient::setMenubarVisible):
+ (WebKit::ChromeClient::menubarVisible):
+ (WebKit::ChromeClient::setToolTip):
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::createPage):
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebwindowfeatures.cpp:
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_new_from_core_features):
+
+2008-11-29 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17122
+ [GTK] Bad font default settings
+
+ Implement a property "enforce-96-dpi" in WebKitWebSettings
+ that can be enabled to force the view to assume 96 DPI.
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ * webkit/webkitwebview.cpp:
+
+2008-11-28 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Simplify the code. There is no reason to have code like
+ if (true) return false; which is using temporary variables.
+
+ * webkit/webkitwebview.cpp:
+
+2008-11-28 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Nikolas Zimmermann.
+
+ Remove bogus null checks. The WebKitWebView own's a WebCore::Page
+ which is owning a WebCore::ChromeClient. There is no way that a
+ WebCore::ChromeClient is still around when the WebKitWebView is gone.
+
+ m_webView can only be null when a ChromeClient gets constructed with
+ a null WebKitWebView which is not allowed.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::ChromeClient):
+ (WebKit::ChromeClient::windowRect):
+ (WebKit::ChromeClient::setWindowRect):
+ (WebKit::ChromeClient::pageRect):
+ (WebKit::ChromeClient::focus):
+ (WebKit::ChromeClient::unfocus):
+ (WebKit::ChromeClient::show):
+ (WebKit::ChromeClient::setToolbarsVisible):
+ (WebKit::ChromeClient::toolbarsVisible):
+ (WebKit::ChromeClient::setStatusbarVisible):
+ (WebKit::ChromeClient::statusbarVisible):
+ (WebKit::ChromeClient::setScrollbarsVisible):
+ (WebKit::ChromeClient::setMenubarVisible):
+ (WebKit::ChromeClient::menubarVisible):
+ (WebKit::ChromeClient::canTakeFocus):
+ (WebKit::ChromeClient::repaint):
+ (WebKit::ChromeClient::scroll):
+ (WebKit::ChromeClient::platformWindow):
+
+2008-11-28 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed and slightly modified by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19130
+
+ ChromeClient::createWindow and friends need to be implemented
+
+ Code from Gustavo Noronha and Marco Barisione
+ <marco.barisione@collabora.co.uk> in this change set.
+
+ Implemented all the ChromeClient interfaces needed to have new
+ window creation functioning and exposed to client code. We
+ implemented a mirror GObject to the WindowFeatures object provided
+ by WebCore.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::windowRect):
+ (WebKit::ChromeClient::setWindowRect):
+ (WebKit::ChromeClient::unfocus):
+ (WebKit::ChromeClient::createWindow):
+ (WebKit::ChromeClient::show):
+ (WebKit::ChromeClient::setToolbarsVisible):
+ (WebKit::ChromeClient::toolbarsVisible):
+ (WebKit::ChromeClient::setStatusbarVisible):
+ (WebKit::ChromeClient::statusbarVisible):
+ (WebKit::ChromeClient::setScrollbarsVisible):
+ (WebKit::ChromeClient::scrollbarsVisible):
+ (WebKit::ChromeClient::setMenubarVisible):
+ (WebKit::ChromeClient::menubarVisible):
+ (WebKit::ChromeClient::setResizable):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchShow):
+ (WebKit::FrameLoaderClient::dispatchCreatePage):
+ * webkit/webkit.h:
+ * webkit/webkitdefines.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+ * webkit/webkitwebwindowfeatures.cpp: Added.
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_class_init):
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_init):
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_finalize):
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_set_property):
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_get_property):
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_new):
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_new_from_core_features):
+ (_WebKitWebWindowFeaturesPrivate::webkit_web_window_features_equal):
+ * webkit/webkitwebwindowfeatures.h: Added.
+
+2008-11-24 Darin Fisher <darin@chromium.org>
+
+ Fix bustage.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15643
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::isSelectTrailingWhitespaceEnabled):
+ * WebCoreSupport/EditorClientGtk.h:
+
+2008-11-24 Darin Adler <darin@apple.com>
+
+ Reviewed by Dan Bernstein.
+
+ - https://bugs.webkit.org/show_bug.cgi?id=22470
+ remove unneeded URL argument from FrameLoaderClient::updateGlobalHistory
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::updateGlobalHistory): Remove argument.
+ * WebCoreSupport/FrameLoaderClientGtk.h: Ditto.
+
+2008-11-24 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17122
+ [GTK] Bad font default settings
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ Use default font size 12 instead of 10
+
+2008-11-24 Zan Dobersek <zandobersek@gmail.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22039
+
+ Implement a semi-private function for adding a directory to
+ PluginDatabase's paths.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_add_extra_plugin_directory):
+
+2008-11-23 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Rubber-stamped by Sam Weinig.
+
+ Add gtk-doc configuration/source for the WebKit/Gtk+ Reference Manual
+
+ These files will be used by gtk-doc to generate the documentation. They
+ contain information how to group the symbols of our API, which objects
+ to inspect during the generation of the manual and how to display the
+ manual.
+
+ * docs/webkitgtk-docs.sgml: Added.
+ * docs/webkitgtk-overrides.txt: Added.
+ * docs/webkitgtk-sections.txt: Added.
+ * docs/webkitgtk.types: Added.
+
+2008-11-23 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Sam Weinig.
+
+ Make gtk-doc happy with the existing API documentation
+
+ - Mark the *Private pointers in the struct private
+ - Use Returns: where gtk-doc wants us to
+ - Fix the parameters to make gtk-doc happy
+ - Fix signal references
+
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitwebbackforwardlist.cpp:
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebinspector.cpp:
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init):
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-11-19 Darin Fisher <darin@chromium.org>
+
+ Bustage fix.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22373
+ Ports busted by addition of ScriptValue.{h,cpp}
+
+ * webkit/webkitwebview.cpp:
+
+2008-11-18 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Simon Hausmann.
+
+ Attempt to share transitionToCommittedForNewPage of FrameLoaderClient with the different ports
+
+ After Hyatt's work on Widget and ScrollView there is little difference
+ between the implementation of Qt, Gtk+ and Win. In fact any kind of
+ difference is mostly a bug. Alp has fixed two of such errors for the Gtk+
+ port and the Qt port has at least one of them left.
+
+ The only difference between the implementations is in getting the the
+ IntSize for the new FrameView, the background color to be applied and
+ eventually some post processing.
+
+ Unify the implementations by providing a static helper function that
+ takes a Frame, IntSize, color and transparency bit and calling it from
+ the Gtk+, the Qt and the Windows port.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2008-11-16 Christian Dywan <christian@twoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22207
+ [Gtk] Font sizes are not handled properly when updated at runtime
+
+ * webkit/webkitwebview.cpp: Move the DPI/ conversion into a
+ helper function and apply the logic in the notification callback.
+
+2008-11-06 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=22047
+ GTK: Add support for multiple file selection in the file upload control
+
+ Implemented with GtkFileChooser.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::runOpenPanel):
+
+2008-11-03 Cameron Zwarich <zwarich@apple.com>
+
+ Rubber-stamped by Maciej Stachowiak.
+
+ Move more files into the runtime subdirectory of JavaScriptCore.
+
+ * webkit/webkitprivate.cpp:
+
+2008-11-03 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Holger Freyther.
+
+ Deprecate flawed webkit_web_frame_new() function. This would never
+ have worked properly when used outside WebCore since Frame::create()
+ can only be called without an owner element once in the lifetime of a
+ Page and would result in assertions, leaks and an unusable WebView
+ instance.
+
+ Frame creation may be exposed in API some time later via the DOM
+ binding but probably not in the WebKit GTK+ core API.
+
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+
+2008-11-03 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Holger Freyther.
+
+ Redundant scrollbars appear in frames where they shouldn't be visible
+ eg. embedded Google adverts.
+
+ Call setCanHaveScrollbars() when necessary. The Mac and Win ports
+ already have this but it was missing in FrameLoaderClientGtk.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2008-11-03 Alp Toker <alp@nuanti.com>
+
+ Rubber-stamped by Holger Freyther.
+
+ Sync WebKit GTK+ default UA version string to 528.5+. (We're still
+ doing this manually!)
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::composeUserAgent):
+
+2008-10-31 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=22018
+ enable-developer-extras doesn't toggle WebInspector
+
+ * webkit/webkitwebview.cpp:
+ Add missing 'if' in notification for 'enable-developer-extras'.
+
+2008-10-30 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Dave Hyatt.
+
+ Fix GIF animations. WebCore will not update animated GIFs if
+ the WebView is marked offscreen so we need to call
+ frameView->setParentVisible() when necessary like the Mac and Win
+ ports do. Regression was introduced around r37155 during the
+ HostWindow refactor.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2008-10-30 Alp Toker <alp@nuanti.com>
+
+ Rubber-stamped by Holger Freyther.
+
+ Fix typo in recently added web inspector signal. dettach -> detach.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::detachWindow):
+ * webkit/webkitwebinspector.cpp:
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init):
+
+2008-10-30 Alp Toker <alp@nuanti.com>
+
+ Fix version comments for the web inspector added in r37982. Available
+ since 1.0.3, not 1.0.2.
+
+ * webkit/webkitwebinspector.cpp:
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init):
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ * webkit/webkitwebview.cpp:
+
+2008-10-29 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed and slightly changed by Holger Freyther.
+
+ Implemented a new WebKitWebInspector class to provide a GObject
+ API for the Web Inspector. Also implemented InspectorClient.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::notifyWebViewDestroyed):
+ (WebKit::InspectorClient::InspectorClient):
+ (WebKit::InspectorClient::inspectorDestroyed):
+ (WebKit::InspectorClient::webViewDestroyed):
+ (WebKit::InspectorClient::createPage):
+ (WebKit::InspectorClient::showWindow):
+ (WebKit::InspectorClient::closeWindow):
+ (WebKit::InspectorClient::attachWindow):
+ (WebKit::InspectorClient::detachWindow):
+ (WebKit::InspectorClient::inspectedURLChanged):
+ * WebCoreSupport/InspectorClientGtk.h:
+ * webkit/webkit.h:
+ * webkit/webkit-marshal.list:
+ * webkit/webkitdefines.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebinspector.cpp: Added.
+ (_WebKitWebInspectorPrivate::webkit_inspect_web_view_request_handled):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_class_init):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_init):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_finalize):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_set_property):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_get_property):
+ (_WebKitWebInspectorPrivate::webkit_web_inspector_set_web_view):
+ * webkit/webkitwebinspector.h: Added.
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_copy):
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-10-27 Michael Tross <michael@tross.org>
+
+ Reviewed by Alp Toker. Landed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21827
+ [GTK] Fix memory leak in webkit_web_view_load_string
+
+ * webkit/webkitwebview.cpp:
+
+2008-10-24 Sam Weinig <sam@webkit.org>
+
+ Fix the Gtk build.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+
+2008-10-24 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Dan Bernstein.
+
+ Fix https://bugs.webkit.org/show_bug.cgi?id=21759
+ Layering violation: FileChooser should not depend on Document/Frame/Page
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::runOpenPanel):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2008-10-24 Timothy Hatcher <timothy@apple.com>
+
+ Stub out new InspectorClient methods.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21856
+
+ Reviewed by Darin Adler.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::populateSetting): Not implemented.
+ (WebKit::InspectorClient::storeSetting): Ditto.
+ (WebKit::InspectorClient::removeSetting): Ditto.
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2008-10-22 Alp Toker <alp@nuanti.com>
+
+ Build fix for older GTK+ versions where GTK_TYPE_TARGET_LIST isn't
+ defined.
+
+ * webkit/webkitwebview.cpp:
+
+2008-10-22 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Adam Roben.
+
+ Avoid critical warnings on older GTK+ versions (2.8) by not checking
+ for GTK+ setting properties when we know they don't exist.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::inputMethodsMenuItem):
+ (WebKit::unicodeMenuItem):
+
+2008-10-20 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Anders Carlsson.
+
+ Remove FrameLoaderClient::detachedFromParent4. It is no longer used by any port.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-10-20 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Dave Hyatt.
+
+ https://bugs.webkit.org/show_bug.cgi?id=21303
+ [GTK] Scrolling glitches
+
+ Implement a buffering scheme to avoid full repaints when scrolling
+ views or subframes significantly improving scrolling performance.
+
+ Improve rendering performance by coalescing large numbers of small
+ repaints.
+
+ Also fixes long-running issues with scrollbar positioning and frame
+ invalidation.
+
+ Rendering in the GTK+ port should be more similar to other ports after
+ these changes.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::repaint):
+ (WebKit::ChromeClient::scroll):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::forceLayout):
+ * webkit/webkitwebview.cpp:
+
+2008-10-17 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+
+ Reviewed by Mark Rowe. Landed by Jan Alonzo.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20403
+ [Gtk] Segfault after a table with an iframe is attempted to be added twice to DOM model with javascript
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::frameLoaderDestroyed):
+ (WebKit::FrameLoaderClient::detachedFromParent4):
+
+2008-10-06 David Hyatt <hyatt@apple.com>
+
+ Enable viewless Mac WebKit to paint some basic pages.
+
+ Reviewed by Sam Weinig
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-10-03 David Hyatt <hyatt@apple.com>
+
+ Fix Gtk bustage from use of containingWindow() over on the WebKit side. Replace with HostWindow use.
+
+ * webkit/webkitwebview.cpp:
+
+2008-10-03 David Hyatt <hyatt@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=21340
+
+ Remove "containingWindow()/setContainingWindow()" from Widget. HostWindow covers this now.
+
+ Reviewed by Dan Bernstein & Darin Adler
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+
+2008-10-03 Alp Toker <alp@nuanti.com>
+
+ Remove some left-over GTK+ includes. No change in functionality.
+
+ * webkit/webkitwebhistoryitem.h:
+
+2008-10-03 Alp Toker <alp@nuanti.com>
+
+ Build fix following r37234. Remove addToDirtyRegion from the header
+ too.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2008-10-03 David Hyatt <hyatt@apple.com>
+
+ Remove addToDirtyRegion.
+
+ Reviewed by Oliver Hunt
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+
+2008-10-02 David Hyatt <hyatt@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=21314
+
+ Make scrollBackingStore cross-platform.
+
+ Reviewed by Sam Weinig
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::repaint):
+ (WebKit::ChromeClient::scroll):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2008-10-01 David Hyatt <hyatt@apple.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=21282
+
+ Make contentsToScreen/screenToContents cross-platform. Only implemented by Mac/Win right now.
+
+ Reviewed by Adam Roben
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::windowToScreen):
+ (WebKit::ChromeClient::screenToWindow):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2008-09-30 Dave Hyatt <hyatt@apple.com>
+
+ http://bugs.webkit.org/show_bug.cgi?id=21250
+
+ Rename updateContents to repaintContentRectangle and make it cross-platform by always sending
+ repaints up through the ChromeClient.
+
+ Reviewed by Darin Adler
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::repaint):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2008-09-16 Alp Toker <alp@nuanti.com>
+
+ Suggested by Dave Hyatt.
+
+ Build fix and cleanup. Rename ScrollBar to Scrollbar.
+
+ * webkit/webkitwebview.cpp:
+
+2008-09-13 Adrien Nader <camaradetux@gmail.com>
+
+ Gtk build fix, not reviewed.
+
+ * webkit/webkitwebview.cpp:
+
+2008-09-10 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Mark Rowe.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17267
+ [GTK] Primary selection/clipboard support
+
+ Implement primary selection support (copying only, no paste yet).
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::clipboard_get_contents_cb):
+ (WebKit::clipboard_clear_contents_cb):
+ (WebKit::EditorClient::respondToChangedSelection):
+
+2008-09-07 Cameron Zwarich <cwzwarich@uwaterloo.ca>
+
+ Reviewed by Maciej Stachowiak.
+
+ Bug 20704: Replace the KJS namespace
+ <https://bugs.webkit.org/show_bug.cgi?id=20704>
+
+ Rename the KJS namespace to JSC.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+
+2008-09-05 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18346
+ [GTK] Remove build warnings
+
+ Removed/commented code that is not (yet) used, and reordered
+ member variables initialization for FrameLoaderClient, so that the
+ compiler is happy and prints less warnings when building.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+
+2008-09-03 Alp Toker <alp@nuanti.com>
+
+ Build fix following r36073. Include config.h where necessary.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp:
+ * webkit/webkitversion.cpp:
+
+2008-09-01 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19939
+ [GTK] webkit_web_history_item_get_title() fails with assertion
+
+ Make sure newly constructed WebHistoryItem objects wrap a WebCore
+ history item when necessary. Avoid G_PARAM_CONSTRUCT since it destroys
+ history data -- use WEBKIT_PARAM flags instead as they do the right
+ thing. This restores history functionality.
+
+ Also use CString to simplify UTF-8 string management.
+
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit):
+ No need to initialize the vector with a size since it's cleared by the
+ callee.
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_finalize):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri):
+
+2008-08-27 Adrien Nader <camaradetux@gmail.com>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20099
+ [GTK] SHIFT+PAGE_UP/DOWN doesn't extend selection
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeyboardEvent):
+
+2008-08-27 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Anders
+
+ <rdar://problem/6134133> - Crash when loading large movie as a standalone document
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::pluginWillHandleLoadError): Stubbed for now
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-08-18 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20350
+ [GTK] Get DumpRenderTree working
+
+ Add a private function to WebFrame to dump the render tree as required
+ for the DumpRenderTree testing tool.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+
+2008-08-12 Timothy Hatcher <timothy@apple.com>
+
+ Add a stub for InspectorClient::setAttachedWindowHeight.
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::setAttachedWindowHeight):
+ Call notImplemented().
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2008-08-10 Alp Toker <alp@nuanti.com>
+
+ Remove leftover qmake/GTK+ build files.
+
+ * webkit/headers.pri: Removed.
+
+2008-08-02 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Eric Seidel.
+
+ Remove webkit-marshal.list, which was made obsolete in #19742
+
+ * webkit/webkit-marshal.list: Removed.
+
+2008-08-01 Wouter Bolsterlee <uws@xs4all.nl>
+
+ Reviewed by Eric Seidel.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20035
+ [GTK] Fix return value for webkit_web_view_go_to_back_forward_item()
+
+ * webkit/webkitwebview.cpp:
+
+2008-07-30 Marco Barisione <marco.barisione@collabora.co.uk>
+
+ Reviewed by Holger.
+
+ http://bugs.webkit.org/show_bug.cgi?id=19742
+ [GTK] Auto generate webkitmarshal.list
+
+ Auto generate webkitmarshal.list from source files to reduce the
+ number of conflicts when merging git branches or when applying
+ patches.
+ Also rename webkit-marshal.* to webkitmarshal.* for consistency.
+
+ * webkit/webkitwebframe.cpp: Include webkitmarshal.h instead of
+ webkit-marshal.h.
+ * webkit/webkitwebview.cpp: Ditto.
+
+2008-07-30 Gustavo Noronha Silva <gns@gnome.org>
+
+ Reviewed by Sam.
+
+ https://bugs.webkit.org/show_bug.cgi?id=20205
+ Typo in comment for bracer ending block
+
+ * webkit/webkitprivate.cpp: Typo fix in comment for the brace
+ that ends the WebKit namespace; WebCore -> WebKit
+
+2008-07-26 Mark Rowe <mrowe@apple.com>
+
+ Build fix. Changes to accommodate newly named/signatured loading methods in WebCore.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+
+2008-07-17 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19813
+ [GTK] WebKit crashes on invalid settings notify callback
+
+ * webkit/webkitwebview.cpp: Disconnect in webkit_web_view_finalize
+
+2008-07-08 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Christian Dywan.
+
+ Replace 'const' with G_CONST_RETURN macro to make it flexible to
+ disable constness
+
+ * webkit/webkitnetworkrequest.cpp:
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebhistoryitem.h:
+
+2008-06-18 Marco Barisione <marco.barisione@collabora.co.uk>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=19171
+ [GTK] GTypes for enumerations
+
+ Generate GTypes for public enumerations so they can be used as
+ properties.
+
+ * GNUmakefile.am: Generate webkit-enum-types.cpp and
+ webkit-enum-types.h.
+
+2008-06-17 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp.
+
+ [GTK] WebKitWebHistoryItem needs properties
+ https://bugs.webkit.org/show_bug.cgi?id=19558
+
+ Implement properties matching the existing accessors.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_property):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_property):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title):
+
+2008-06-15 Darin Adler <darin@apple.com>
+
+ - give Frame object functions shorter names: scriptProxy() -> script(),
+ selectionController() -> selection(), animationController() -> animation()
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeyboardEvent):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+
+2008-06-15 Darin Adler <darin@apple.com>
+
+ - undo bogus renaming done by the script
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebsettings.h:
+
+2008-06-15 Darin Adler <darin@apple.com>
+
+ - new names for a few key JavaScriptCore files
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebsettings.h:
+
+2008-06-15 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ [GTK] Property setters do not call g_object_notify()
+ https://bugs.webkit.org/show_bug.cgi?id=18405
+
+ * webkit/webkitwebview.cpp:
+
+2008-06-15 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ Tiny documentation fix, s/capacity/limit
+
+ * webkit/webkitwebbackforwardlist.cpp:
+
+2008-06-14 Darin Adler <darin@apple.com>
+
+ Rubber stamped by Sam.
+
+ - new names for kjs_binding.h and kjs_proxy.h
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * webkit/webkitwebframe.cpp:
+
+2008-06-14 Darin Adler <darin@apple.com>
+
+ - fix build
+
+ * webkit/webkitwebframe.cpp: Remove a bogus release() call.
+
+2008-06-14 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam.
+
+ - more https://bugs.webkit.org/show_bug.cgi?id=17257
+ start ref counts at 1 instead of 0 for speed
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createDocumentLoader): Use create instead of new.
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_new): Ditto.
+ (webkit_web_frame_init_with_web_view): Ditto.
+
+2008-06-13 Darin Adler <darin@apple.com>
+
+ - try to fix build
+
+ * WebCoreSupport/FrameLoaderClientGtk.h: Add missing argument.
+
+2008-06-13 Darin Adler <darin@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - updated for addition of FormState argument to action policy functions
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNewWindowAction):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+
+2008-06-10 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker and Darin Adler.
+
+ https://bugs.webkit.org/show_bug.cgi?id=16676
+ Apply GTK coding style to WebKit Gtk public headers
+
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebsettings.h:
+ * webkit/webkitwebview.h:
+
+2008-06-07 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Confirmed by Christian Dywan.
+
+ Gtk build fix for r34432
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_history_item_add):
+ (_WebKitWebHistoryItemPrivate::webkit_history_item_remove):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data):
+ (WebKit::core):
+
+2008-06-07 Darin Adler <darin@apple.com>
+
+ - try to fix build after HistoryItem changes
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new): Use HistoryItem::create.
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data): Ditto. I also
+ believe this fixes a memory leak in the old version.
+
+2008-06-07 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17324
+ Remove PLATFORM ifdefs from ContextMenu.cpp
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::ContextMenuClient::ContextMenuClient):
+ (WebKit::ContextMenuClient::contextMenuDestroyed):
+ (WebKit::inputMethodsMenuItem):
+ (WebKit::):
+ (WebKit::insertControlCharacter):
+ (WebKit::unicodeMenuItem):
+ (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems):
+ * WebCoreSupport/ContextMenuClientGtk.h:
+ * webkit/webkitwebview.cpp:
+
+2008-06-05 Alp Toker <alp@nuanti.com>
+
+ Add 'Since' documentation for API versioning functions.
+
+ * webkit/webkitversion.cpp:
+
+2008-06-05 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=14141
+ Please add a version to the Gtk port
+
+ * webkit/webkit.h:
+ * webkit/webkitversion.cpp: Added.
+ * webkit/webkitversion.h.in: Added.
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ * webkit/webkitwebview.cpp:
+
+2008-06-01 Alp Toker <alp@nuanti.com>
+
+ Suggested by Christian Dywan.
+
+ Use float literals for zoom values and improve documentation wording.
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ * webkit/webkitwebview.cpp:
+
+2008-06-01 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Oliver.
+
+ Remove webkit_web_view_go_backward(),
+ webkit_web_view_can_go_backward(). These have been obsoleted by
+ the back() versions for quite a while.
+
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-05-31 Alp Toker <alp@nuanti.com>
+
+ Fix inconsistent zoom docs and enum name landed in r34249. Issue
+ noticed by Marco Barisione.
+
+ * webkit/webkitwebview.cpp:
+
+2008-05-30 Carlos Martín Nieto <carlos@cmartin.tk>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=18383
+ [GTK] The "hovering-over-link" signal arguments aren't documented.
+
+ * webkit/webkitwebview.cpp:
+
+2008-05-29 Marco Barisione <marco@collabora.co.uk>
+
+ Reviewed (and tweaked) by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=18281
+ [GTK] add functions to set/get the zoom level
+
+ * webkit/webkitwebsettings.cpp:
+ (_WebKitWebSettingsPrivate::):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_class_init):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_set_property):
+ (_WebKitWebSettingsPrivate::webkit_web_settings_get_property):
+ * webkit/webkitwebview.cpp: Add functions to get and set the zoom
+ level.
+ * webkit/webkitwebview.h: Ditto.
+ * webkit/webkitprivate.h:
+
+2008-05-28 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Alexey Proskuryakov.
+
+ http://bugs.webkit.org/show_bug.cgi?id=18704
+ [gtk] cannot type letters with dead keys in textarea
+
+ http://bugs.webkit.org/show_bug.cgi?id=14120
+ [GDK] Support input methods
+
+ Add support for input method composition.
+
+ Remove some old hacks so we handle input method events more
+ consistently.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+ (WebKit::imContextPreeditChanged):
+ (WebKit::EditorClient::setInputMethodState):
+ (WebKit::EditorClient::respondToChangedSelection):
+ (WebKit::EditorClient::handleInputMethodKeydown):
+ (WebKit::EditorClient::EditorClient):
+ (WebKit::EditorClient::~EditorClient):
+ (WebKit::EditorClient::textFieldDidBeginEditing):
+ (WebKit::EditorClient::textFieldDidEndEditing):
+ (WebKit::EditorClient::textDidChangeInTextField):
+ (WebKit::EditorClient::doTextFieldCommandFromEvent):
+ * webkit/webkitwebview.cpp:
+
+2008-05-25 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Niko.
+
+ Drop WebView focus when the widget is focused out.
+
+ * webkit/webkitwebview.cpp:
+
+2008-05-25 Sriram Neelakandan <sriram.neelakandan@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=18935
+ [Gtk] Plugin Load crashes with NP_FULL mode
+
+ Fix crash due to uninitialized variable.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+
+2008-05-24 Alp Toker <alp@nuanti.com>
+
+ https://bugs.webkit.org/show_bug.cgi?id=18825
+ webkitgtk fails to build from source: "Database Tracker" has not been declared
+
+ GTK+ fix for building without database support.
+ exceededDatabaseQuota() still needs to be present, just a no-op.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::exceededDatabaseQuota):
+
+2008-05-23 Alp Toker <alp@nuanti.com>
+
+ GTK+ fixes for building without database support.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+
+2008-05-19 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Anders and Beth.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16495
+ [GTK] Accessibility support with ATK/AT-SPI
+
+ Initial ATK/AT-SPI accessibility support for the GTK+ port.
+
+ * webkit/webkitwebview.cpp:
+
+2008-05-06 Christian Dywan <christian@twotoasts.de>
+
+ Rubber stamped by Alp.
+
+ Back out 17626. It wasn't ready for commit.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-05-01 Marc Ordinas i Llopis <marc.ordinasillopis@collabora.co.uk>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=14750
+ Added support for NPAPI plugins on Gtk and Qt-x11 ports.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::createPlugin):
+ (WebKit::FrameLoaderClient::redirectDataToPlugin):
+ (WebKit::FrameLoaderClient::finishedLoading):
+ (WebKit::FrameLoaderClient::setMainDocumentError):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-04-30 Sean Egan <seanegan@gmail.com>
+
+ Reviewed and modified by Holger.
+
+ https://bugs.webkit.org/show_bug.cgi?id=17626
+ Support setting background color and a 16-bit alpha channel.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-04-24 Dan Bernstein <mitz@apple.com>
+
+ - build fix
+
+ * webkit/webkitwebview.cpp:
+
+2008-04-24 Anders Carlsson <andersca@apple.com>
+
+ Reviewed by Sam.
+
+ Change some String arguments to be const references instead.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::shouldInsertText):
+ * WebCoreSupport/EditorClientGtk.h:
+
+2008-04-23 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ Emit a warning about an unknown setting only if it is
+ not a valid property. Otherwise applications can't
+ subclass WebKitWebSettings to add new properties.
+
+ * webkit/webkitwebview.cpp:
+
+2008-04-20 Simon Hausmann <hausmann@webkit.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=18578
+ Share the printing code between the Gtk and the Qt port
+
+ Share the printing code between the Gtk and the Qt port
+ and added printing to the Qt WebKit API.
+
+ * webkit/webkitwebframe.cpp: Removed PrintContext in favour of
+ page/Printcontext.cpp/h
+
+2008-04-19 Alp Toker <alp@nuanti.com>
+
+ Reviewed by Maciej.
+
+ Enable visited link tracking by default at startup.
+
+ With this patch, the GTK+ port rendering of Acid3 now matches the
+ reference page.
+
+ * webkit/webkitprivate.cpp:
+ (WebKit::core):
+ (webkit_init):
+
+2008-04-11 Mark Rowe <mrowe@apple.com>
+
+ Gtk build fix after r32231.
+
+ * webkit/webkitwebview.cpp: Update to use contentRenderer.
+
+2008-04-18 Alp Toker <alp@atoker.com>
+
+ Rubber-stamped by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=18218
+ [Gtk] segfault when clicking on a disabled button
+
+ Always use the main frame for mouse events (not the focused frame)
+ since it knows best how to get the event through to the right target.
+
+ This also fixes a null crasher.
+
+ * webkit/webkitwebview.cpp:
+
+2008-04-17 Alp Toker <alp@atoker.com>
+
+ Rubber-stamped by Holger Freyther.
+
+ Reduce hard-coded page-cache count to 3 based on research done for the
+ Mac port on value / page.
+
+ We will need to make this more dynamic or configurable at some point
+ but for now it's best to keep closer to the behaviour before page
+ caching was enabled.
+
+ Issue spotted by Mark Rowe.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+
+2008-04-17 Daniele Metilli <daniele.metilli@gmail.com>
+
+ Reviewed by Eric.
+
+ Fixed a typo in the copyright header.
+
+ * webkit/webkitprivate.h:
+
+2008-04-14 Holger Freyther <zecke@selfish.org>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18411
+ Enable Page caching and create FrameViews on the fly
+
+ Create the FrameView on the fly and cache pages
+
+ - Keep a copy of the GtkAdjustment to be able to reuse it for the
+ FrameViews
+ - Do not initially create a FrameView and update the WebKit code to
+ cope with not having a view.
+ - Cache seven pages by default.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+ (WebKit::FrameLoaderClient::canCachePage):
+ (WebKit::FrameLoaderClient::savePlatformDataToCachedPage):
+ (WebKit::FrameLoaderClient::transitionToCommittedFromCachedPage):
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+ * webkit/webkitprivate.cpp:
+ (webkit_init):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+
+2008-04-10 Mario Bensi <mbensi@pleyo.com>
+
+ Reviewed by Alp Toker.
+
+ https://bugs.webkit.org/show_bug.cgi?id=18400
+ Database example doesn't work on Gtk port
+
+ Fix quota in ChromeClient
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::exceededDatabaseQuota):
+
+2008-04-08 Adam Roben <aroben@apple.com>
+
+ Move callOnMainThread to WTF
+
+ Reviewed by Alexey Proskuryakov.
+
+ * webkit/webkitprivate.cpp: Updated #include.
+ (webkit_init): Changed to call KJS::initializeThreading.
+
+2008-04-06 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ Fix webkit_web_view_get_transparent() return value.
+
+ * webkit/webkitwebview.cpp:
+
+2008-03-31 Jasper Bryant-Greene <jasper@unix.geek.nz>
+
+ Reviewed by Darin Adler.
+
+ Resolves http://bugs.webkit.org/show_bug.cgi?id=18010
+ "WebKitNetworkRequestPrivate is defined in two places unnecessarily"
+
+ Removed unnecessary definition of WebKitNetworkRequestPrivate in
+ webkitprivate.h
+
+ * webkit/webkitprivate.h:
+
+2008-03-25 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Darin
+
+ Remove newly obsolete FrameLoaderClient methods
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-03-20 Alp Toker <alp@atoker.com>
+
+ GTK+ build fix. Back out r31183. This patch also introduced API style
+ issues.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ * webkit/headers.pri:
+ * webkit/webkit-marshal.list:
+ * webkit/webkitdefines.h:
+ * webkit/webkitnavigationaction.cpp: Removed.
+ * webkit/webkitnavigationaction.h: Removed.
+ * webkit/webkitprivate.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-03-20 Jasper Bryant-Greene <jasper@unix.geek.nz>
+
+ Reviewed and tweaked by Anders.
+
+ Resolves http://bugs.webkit.org/show_bug.cgi?id=16092
+ "[GTK] Middle-mouse click should allow opening a URL in a new tab"
+
+ Created WebKitNavigationAction object exported through the API. The
+ navigation-requested signal provides this object as context for the
+ requested navigation, allowing the application to decide what to do
+ with the navigation based on which mouse button was used, which
+ modifier keys were held down, etc. This allows, for example, the
+ application to open links in a new tab when either middle-click or
+ control-click are used to initiate the navigation.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ * webkit/headers.pri:
+ * webkit/webkit-marshal.list:
+ * webkit/webkitdefines.h:
+ * webkit/webkitnavigationaction.cpp: Added.
+ (webkit_navigation_action_finalize):
+ (webkit_navigation_action_class_init):
+ (webkit_navigation_action_init):
+ (webkit_navigation_action_get_button):
+ (webkit_navigation_action_get_modifier_flags):
+ (webkit_navigation_action_get_navigation_type):
+ (webkit_navigation_action_get_original_url):
+ * webkit/webkitnavigationaction.h: Added.
+ * webkit/webkitprivate.cpp:
+ (WebKit::kit):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-03-18 Rodney Dawes <dobey@wayofthemonkey.com>
+
+ Reviewed and landed by jhoneycutt.
+
+ Update to check if the MIME type is supported by a plugin.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (FrameLoaderClient::objectContentType):
+
+2008-03-18 Rodney Dawes <dobey@wayofthemonkey.com>
+
+ Reviewed by Jon Honeycutt.
+
+ Update setContainingWindow() calls to pass a GtkWidget.
+
+ * webkit/webkitwebframe.cpp:
+ (webkit_web_frame_new):
+ (webkit_web_frame_init_with_web_view):
+
+2008-03-13 Rodney Dawes <dobey@wayofthemonkey.com>
+
+ Fix GTK+ build for SharedBuffer changes.
+
+ * webkit/webkitwebview.cpp:
+ (webkit_web_view_load_string):
+
+2008-03-12 Tommi Komulainen <tommi.komulainen@iki.fi>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17799
+ WebView signals should use more specific types
+
+ * webkit/webkitwebview.cpp: Use WEBKIT_TYPE_WEB_FRAME argument
+ type in "script-alert", "script-confirm", "script-script-prompt"
+ signals so that it gets more clearly documented rather than just
+ plain GObject.
+
+2008-03-10 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ Fix "missing braces" compiler warning.
+
+ * webkit/webkitwebview.cpp:
+
+2008-03-04 Sam Weinig <sam@webkit.org>
+
+ Reviewed by Mark Rowe.
+
+ - Remove all unnecessary includes of JSDOMWindowBase.h, we prefer including
+ JSDOMWindow.h
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * webkit/webkitwebframe.cpp:
+
+2008-03-03 Sam Weinig <sam@webkit.org>
+
+ GTK+ build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+
+2008-03-03 Alp Toker <alp@atoker.com>
+
+ Fix the GTK+ build following breakage introduced in r30712.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+
+2008-03-02 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Split the WebKit GTK+ build out of the WebCore build and change the
+ shared object name to match the package name.
+
+ * webkit.pc.in:
+
+2008-02-27 Adam Roben <aroben@apple.com>
+
+ Attempt to fix the GTK+ build
+
+ * webkit/webkitwebframe.cpp:
+
+2008-02-24 Darin Adler <darin@apple.com>
+
+ Reviewed by Sam.
+
+ - remove separate client calls for "standard" and "reload' history
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::updateGlobalHistory):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2008-02-23 Alexey Proskuryakov <ap@webkit.org>
+
+ Build fix.
+
+ * webkit/webkitprivate.cpp:
+ (webkit_init): Renamed initializeThreading to initializeThreadingAndMainThread.
+
+2008-02-18 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17312
+ [GTK] Webview Transparent Background
+
+ Add support for WebView background transparency.
+
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-02-18 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Implement webkit_web_view_get_focused_frame()
+
+ Equivalent to selectedFrame in the Mac API.
+
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-02-17 Jan Michael Alonzo <jmalonzo@unpluggable.com>
+
+ Reviewed by Mark Rowe.
+
+ Fix a crash introduced in changeset #29985 by moving the dereference to after
+ the null check.
+
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item):
+
+2008-02-15 Alp Toker <alp@atoker.com>
+
+ Fix the GTK+ build following breakage introduced in r30243.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::objectContentType):
+
+2008-02-15 Darin Adler <darin@apple.com>
+
+ - another try at fixing the build
+
+ * webkit/webkitwebview.cpp: Added some explicit conversions to KURL.
+
+2008-02-14 Darin Adler <darin@apple.com>
+
+ * webkit/webkitwebframe.cpp: Removed DeprecatedString use to try to keep it building.
+ * webkit/webkitwebview.cpp: Ditto.
+
+2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Alp.
+
+ * Make the handling of the coreFrame consistent. We construct the coreFrame
+ at the beginning and it will live until the end. Change the g_return_(val_)if
+ to ASSERTs as having a 0 coreFrame can never happen.
+
+ * webkit/webkitwebframe.cpp:
+ (PrintContext::webkit_web_frame_print):
+
+2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Alp.
+
+ * Make sure that the WebCore::Frame is living as long as the WebKitWebFrame
+ wrapped around it. All current calls to WebCore::Frame from within the
+ WebKitWebFrame are safe, even in the case where the WebCore::Frame is already
+ detached from the WebCore::Page.
+ * For the mainFrame the WebKitWebView is holding the initial reference and
+ will unref on destruction.
+ * For sub-frames the FramerLoaderClientGtk.cpp will do the unrefing when the
+ frame gets detached from the parent.
+ * Make sure FrameLoader::detachFromParent gets called by calling FrameLoader::detachChildren
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::detachedFromParent4):
+ * webkit/webkitprivate.cpp:
+ (WebKit::core):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebview.cpp:
+
+2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Alp.
+
+ WebCore::Frame is RefCounted, do not manually delete it!
+
+ * webkit/webkitwebframe.cpp:
+
+2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Alp.
+
+ * Plug a leak
+
+ * webkit/webkitwebframe.cpp:
+
+2008-02-14 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Alp.
+
+ * Update the Copyright Information
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebframe.cpp:
+
+2008-02-13 Alp Toker <alp@atoker.com>
+
+ Reviewed by Adam Roben.
+
+ Fix very small, upside down, inside out text on GTK+/DirectFB.
+
+ Based on an initial patch by Sriram Neelakandan <sriram.neelakandan@gmail.com>
+
+ Test the result of gdk_screen_get_resolution() and use a default
+ fallback in case of failure.
+
+ Also remove an unhelpful runtime warning.
+
+ * webkit/webkitwebview.cpp:
+
+2008-02-08 Pierre-Luc Beaudoin <pierre-luc.beaudoin@collabora.co.uk>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17009
+ [Gtk] Webkit strips accents from some dead-key combinations
+
+ KeyEvents have to go through the gtk input method.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+ (WebKit::EditorClient::doTextFieldCommandFromEvent):
+
+2008-02-05 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Alp Toker.
+
+ Fix warnings seen on the Gtk port by declaring variables and using constants of the correct types.
+
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_contains_item):
+ * webkit/webkitwebhistoryitem.cpp:
+ * webkit/webkitwebview.cpp:
+
+2008-02-04 Christian Dywan <christian@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17065
+ [GTK] Use a consistent coding style
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+ (WebKit::EditorClient::EditorClient):
+ (WebKit::EditorClient::~EditorClient):
+ (WebKit::EditorClient::textFieldDidEndEditing):
+ * webkit/webkitdefines.h:
+ * webkit/webkitnetworkrequest.cpp:
+ (_WebKitNetworkRequestPrivate::webkit_network_request_finalize):
+ (_WebKitNetworkRequestPrivate::webkit_network_request_class_init):
+ (_WebKitNetworkRequestPrivate::webkit_network_request_init):
+ (_WebKitNetworkRequestPrivate::webkit_network_request_new):
+ (_WebKitNetworkRequestPrivate::webkit_network_request_set_uri):
+ (_WebKitNetworkRequestPrivate::webkit_network_request_get_uri):
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitprivate.cpp:
+ (WebKit::getViewFromFrame):
+ (WebKit::core):
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_new_with_web_view):
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebframe.cpp:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_finalize):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri):
+ (WebKit::core):
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebsettings.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-02-04 Alp Toker <alp@atoker.com>
+
+ Rubber-stamped by Mark Rowe.
+
+ Remove all trailing whitespace in the GTK+ port and related
+ components.
+
+ * WebCoreSupport/DragClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ * WebCoreSupport/InspectorClientGtk.h:
+ * WebCoreSupport/PasteboardHelperGtk.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebbackforwardlist.cpp:
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_contains_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_length):
+ * webkit/webkitwebhistoryitem.cpp:
+ (_WebKitWebHistoryItemPrivate::webkit_history_items):
+ (_WebKitWebHistoryItemPrivate::webkit_history_item_add):
+ (_WebKitWebHistoryItemPrivate::webkit_history_item_remove):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_last_visited_time):
+ (WebKit::kit):
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebview.cpp:
+ * webkit/webkitwebview.h:
+
+2008-02-03 Christian Dywan <christian@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17046
+ [GTK] Context menu fixes and customisation suport
+
+ * webkit/webkitwebview.cpp:
+
+2008-01-31 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Fix the pkg-config file to follow GTK+ package naming and versioning
+ conventions.
+
+ Remove unneeded dependency listings.
+
+ * WebKitGtk.pc.in: Removed.
+ * webkit.pc.in: Copied from WebKit/gtk/WebKitGtk.pc.in.
+
+2008-01-31 Alp Toker <alp@atoker.com>
+
+ Rubber-stamped by Adam Roben.
+
+ http://bugs.webkit.org/show_bug.cgi?id=17006
+ [GTK] Header path should be webkit/webkit.h
+
+ Move the GTK+ API sources as needed and update the build systems.
+
+ * WebView: Removed.
+ * WebView/headers.pri: Removed.
+ * WebView/webkit-marshal.list: Removed.
+ * WebView/webkit.h: Removed.
+ * WebView/webkitdefines.h: Removed.
+ * WebView/webkitnetworkrequest.cpp: Removed.
+ * WebView/webkitnetworkrequest.h: Removed.
+ * WebView/webkitprivate.cpp: Removed.
+ * WebView/webkitprivate.h: Removed.
+ * WebView/webkitwebbackforwardlist.cpp: Removed.
+ * WebView/webkitwebbackforwardlist.h: Removed.
+ * WebView/webkitwebframe.cpp: Removed.
+ * WebView/webkitwebframe.h: Removed.
+ * WebView/webkitwebhistoryitem.cpp: Removed.
+ * WebView/webkitwebhistoryitem.h: Removed.
+ * WebView/webkitwebsettings.cpp: Removed.
+ * WebView/webkitwebsettings.h: Removed.
+ * WebView/webkitwebview.cpp: Removed.
+ * WebView/webkitwebview.h: Removed.
+ * webkit: Copied from WebKit/gtk/WebView.
+ * webkit/webkit.h:
+ * webkit/webkitnetworkrequest.h:
+ * webkit/webkitprivate.h:
+ * webkit/webkitwebbackforwardlist.h:
+ * webkit/webkitwebframe.h:
+ * webkit/webkitwebhistoryitem.h:
+ * webkit/webkitwebsettings.h:
+ * webkit/webkitwebview.h:
+
+2008-01-27 Jan Michael Alonzo <jmalonzo@unpluggable.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=14811
+ [gtk] [request] add a webkit_gtk_page_go_to_history_item function
+
+ implement back/forward list and history item
+
+ * WebView/headers.pri:
+ * WebView/webkit.h:
+ * WebView/webkitprivate.cpp:
+ * WebView/webkitprivate.h:
+ * WebView/webkitwebbackforwardlist.cpp: Added.
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_dispose):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_class_init):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_init):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_new_with_web_view):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_go_forward):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_go_back):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_contains_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_go_to_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_list_with_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_list_with_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_current_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_nth_item):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_back_length):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_forward_length):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_get_limit):
+ (_WebKitWebBackForwardListPrivate::webkit_web_back_forward_list_set_limit):
+ * WebView/webkitwebbackforwardlist.h: Added.
+ * WebView/webkitwebhistoryitem.cpp: Added.
+ (_WebKitWebHistoryItemPrivate::webkit_history_items):
+ (_WebKitWebHistoryItemPrivate::webkit_history_item_add):
+ (_WebKitWebHistoryItemPrivate::webkit_history_item_remove):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_dispose):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_finalize):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_class_init):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_init):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_core_item):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_new_with_data):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_set_alternate_title):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_uri):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_original_uri):
+ (_WebKitWebHistoryItemPrivate::webkit_web_history_item_get_last_visited_time):
+ (WebKit::core):
+ (WebKit::kit):
+ * WebView/webkitwebhistoryitem.h: Added.
+ * WebView/webkitwebview.cpp:
+ * WebView/webkitwebview.h:
+
+2008-01-25 Ori Bernstein <ori@eigenstate.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16795
+ WebKitGtk crashes when there is no focused Frame
+
+ Add a null check. focusedFrame() isn't used directly anywhere else so
+ this is the only case that needs to be fixed.
+
+ * WebView/webkitwebview.cpp:
+
+2008-01-22 Christian Dywan <christian@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ [GTK] API: WebKitWebSettings is not usable
+ http://bugs.webkit.org/show_bug.cgi?id=16219
+
+ Implement WebKitWebSettings.
+
+ * WebView/headers.pri:
+ * WebView/webkit.h:
+ * WebView/webkitprivate.cpp:
+ * WebView/webkitprivate.h:
+ * WebView/webkitsettings.cpp: Removed.
+ * WebView/webkitsettings.h: Removed.
+ * WebView/webkitwebsettings.cpp: Added.
+ * WebView/webkitwebsettings.h: Added.
+ * WebView/webkitwebview.cpp:
+ * WebView/webkitwebview.h:
+
+2008-01-21 Alp Toker <alp@atoker.com>
+
+ GTK+ build fix for breakage introduced in r29698.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2008-01-21 Darin Adler <darin@apple.com>
+
+ Reviewed by John Sullivan.
+
+ - updated for changes to database functions
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::exceededDatabaseQuota):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * WebView/webkitprivate.cpp:
+ (webkit_init):
+
+2008-01-20 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Attach the widget's style to its window and set the background to the
+ base background to avoid black flicker when repainting. This is
+ similar to what GtkTextView does.
+
+ * WebView/webkitwebview.cpp:
+
+2008-01-19 Christian Dywan <christian@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16882
+ [GTK] ChromeClientGtk is incompete
+
+ Implement these functions.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::windowRect):
+ (WebKit::ChromeClient::pageRect):
+ (WebKit::ChromeClient::scaleFactor):
+ (WebKit::ChromeClient::focus):
+ (WebKit::ChromeClient::unfocus):
+ (WebKit::ChromeClient::canTakeFocus):
+ (WebKit::ChromeClient::takeFocus):
+ (WebKit::ChromeClient::canRunBeforeUnloadConfirmPanel):
+
+2008-01-18 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16910
+ [GTK] REGRESSION: keyboard cursor doesn't blink
+
+ http://bugs.webkit.org/show_bug.cgi?id=16863
+ [GTK] REGRESSION: tab focusing doesn't work
+
+ * WebView/webkitwebview.cpp:
+ (webkit_web_view_focus_in_event): Added. Set the active frame.
+ (webkit_web_view_class_init):
+
+2008-01-16 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16218
+ [GTK] API: Should this entry point be called go_back rather than go_backward?
+
+ Obsolete 'backward' terminology in API in favour of 'back'. Introduce
+ step-based back/forward functions.
+
+ Document more functions.
+
+ * WebView/webkitdefines.h:
+ * WebView/webkitwebview.cpp:
+ * WebView/webkitwebview.h:
+
+2008-01-10 Maciej Stachowiak <mjs@apple.com>
+
+ Reviewed by Sam.
+
+ - remove SecurityOriginData and fold its functionality into SecurityOrigin
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::requestQuotaIncreaseForNewDatabase):
+ (WebKit::ChromeClient::requestQuotaIncreaseForDatabaseOperation):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2008-01-09 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16802
+ [GTK] Missing gtk properties
+
+ Add missing properties to WebKitViewFrame and WebKitWebView.
+
+ * WebView/webkitprivate.h: add some useful defines for param specs
+ * WebView/webkitwebframe.cpp:
+ (webkit_web_frame_get_property): added
+ (webkit_web_frame_class_init): add name, title and uri read-only properties
+ * WebView/webkitwebview.cpp:
+ (webkit_web_view_get_property): add editable property read
+ (webkit_web_view_set_property): added for editable property write
+ (webkit_web_view_class_init): add read-write editable property
+
+2008-01-03 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16654
+ [GTK] Signal "navigation-requested" does not react correctly on
+ return TRUE from callbacks
+
+ * WebView/webkitwebview.cpp: use our own accumulator for signals
+ returning WebKitNavigationResponse. The emission will be stopped
+ when any callback returns anything but
+ WEBKIT_NAVIGATION_RESPONSE_ACCEPT.
+
+2008-01-02 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Rubber stamped by Darin Adler.
+
+ Coding Style fix. Do not use an else because we use a return in the
+ if branch.
+
+ * WebView/webkitwebview.cpp:
+
+2008-01-02 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16115
+ [GTK] ContextMenu and ContextMenuItem lacks an implementation
+
+ Add context menu support.
+
+ Based on a patch by Holger Freyther.
+
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems):
+ * WebView/webkitprivate.h:
+ * WebView/webkitwebview.cpp:
+
+2007-12-29 Jan Michael Alonzo <jmalonzo@unpluggable.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16669
+ autotools update and fixes
+
+ pkgconfig file and icon database inclusion fix
+
+ * WebKitGtk.pc.in: Remove ICU_FLAGS from Cflags
+ * WebView/webkitprivate.cpp: Guard ICONDATABASE inclusions
+
+2007-12-28 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16642
+ [GTK] webkit_web_view_has_selection returns the opposite result
+
+ Invert the return value.
+
+ * WebView/webkitwebview.cpp:
+
+2007-12-26 Jan Michael Alonzo <jmalonzo@unpluggable.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16390
+ Use autotools or GNU make as the build system for the GTK port
+
+ * WebKitGtk.pc.in: Added.
+
+2007-12-24 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/attachment.cgi?id=18099
+ There are no NULL checks for strings in public api
+
+ Add missing NULL checks for string parameters.
+
+ Provide sensible defaults when NULL is passed for the optional
+ parameters in webkit_web_view_load_string(). UTF-8 is the default
+ encoding used by GLib and text/html is a reasonable default content
+ type.
+
+ * WebView/webkitnetworkrequest.cpp:
+ * WebView/webkitwebview.cpp:
+
+2007-12-22 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ Use webView, web_view, etc for variable names instead of page, which
+ was left over from the old API.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+ (WebKit::EditorClient::EditorClient):
+ (WebKit::EditorClient::~EditorClient):
+ (WebKit::EditorClient::textFieldDidBeginEditing):
+ (WebKit::EditorClient::textFieldDidEndEditing):
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::postProgressStartedNotification):
+ (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification):
+ (WebKit::FrameLoaderClient::postProgressFinishedNotification):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveIcon):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveTitle):
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad):
+
+2007-12-22 Alp Toker <alp@atoker.com>
+
+ GTK+ build fix
+
+ GTK_TARGET_OTHER_APP is not available in older GTK+ versions. Pass
+ empty target flags for now.
+
+ Check GTK+, not GLib versions, since they are different.
+
+ * WebView/webkitwebview.cpp:
+
+2007-12-22 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16311
+ [Gtk] Copy rich text to clipboard as text/plain and text/html.
+
+ Add copy and paste targets for WebView and implement
+ WebCore::PasteboardHelper.
+
+ * WebCoreSupport/PasteboardHelperGtk.cpp: Added.
+ (WebKit::PasteboardHelperGtk::getClipboard):
+ (WebKit::PasteboardHelperGtk::getCopyTargetList):
+ (WebKit::PasteboardHelperGtk::getPasteTargetList):
+ * WebCoreSupport/PasteboardHelperGtk.h: Added.
+ * WebView/webkitprivate.cpp:
+ (webkit_init): set the PasteboardHelperGtk as WebCore::Pasteboard helper
+ * WebView/webkitprivate.h:
+ (_WebKitWebViewPrivate::copy_target_list): added
+ (_WebKitWebViewPrivate::paste_target_list): added
+ * WebView/webkitwebview.cpp:
+ (webkit_web_view_get_property): added
+ (webkit_web_view_finalize):
+ (webkit_web_view_class_init): create properties for COPY_TARGET and PASTE_TARGET and create the copy and paste target lists
+ (webkit_web_view_get_copy_target_list): added
+ (webkit_web_view_get_paste_target_list): added
+ * WebView/webkitwebview.h:
+ (webkit_web_view_get_copy_target_list): added
+ (webkit_web_view_get_paste_target_list): added
+
+2007-12-22 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ Follow up to http://bugs.webkit.org/show_bug.cgi?id=16144
+
+ * WebView/webkitwebview.cpp:
+ Fix signal id arguments for g_signal_emit in
+ clipboard functions.
+
+2007-12-21 Alp Toker <alp@atoker.com>
+
+ Documentation typo fix: s/wether/whether
+
+ * WebView/webkitwebview.cpp:
+
+2007-12-21 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16144
+ [GTK] Clipboard/ selection handling functions
+
+ * WebView/webkitprivate.h:
+ * WebView/webkitwebview.cpp:
+ * WebView/webkitwebview.h:
+
+2007-12-19 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16222
+ [GTK] Implement inline search and highlighting of matching strings.
+
+ * WebView/webkitwebview.cpp:
+ * WebView/webkitwebview.h:
+
+2007-12-19 Alp Toker <alp@atoker.com>
+
+ Reviewed by Holger Freyther.
+
+ Delete when Destroy functions are called to avoid leaks
+
+ This matches the Mac port.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * WebCoreSupport/InspectorClientGtk.cpp:
+
+2007-12-14 Juan A. Suarez Romero <jasuarez@igalia.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16042
+ [GTK] Eliminate webkit_init()
+
+ Move webkit initialization to WebView class init.
+
+ * WebView/headers.pri:
+ * WebView/webkit.h:
+ * WebView/webkitglobal.cpp: Removed.
+ * WebView/webkitglobal.h: Removed.
+ * WebView/webkitprivate.cpp:
+ (WebKit::webkit_init):
+ * WebView/webkitprivate.h:
+ * WebView/webkitwebframe.cpp:
+ * WebView/webkitwebview.cpp:
+
+2007-12-17 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=13542
+ gdklauncher doesnt change URL in adress GTKEntry.
+
+ Let DOMDocument observers do their work before emitting title-changed.
+ The load-committed signal has been added for both the view and the frame.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDidReceiveTitle): emit title-changed
+ (WebKit::FrameLoaderClient::setTitle): set private title
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad): update the frame uri and emit load-committed
+ * WebView/webkit-marshal.list:
+ * WebView/webkitprivate.h:
+ (_WebKitWebFramePrivate): rename location to uri
+ * WebView/webkitwebframe.cpp:
+ (webkit_web_frame_get_location): renamed to *_get_uri
+ (webkit_web_frame_get_uri):
+ (webkit_web_frame_real_title_changed): removed (see FrameLoaderClient::setTitle)
+ (webkit_web_frame_class_init): pass the frame and the title in title-changed, not the uri
+ (webkit_web_frame_finalize):
+ * WebView/webkitwebframe.h:
+ (_WebKitWebFrameClass): removed title_changed
+ * WebView/webkitwebview.cpp:
+ (webkit_web_view_class_init): pass only the title in title-changed
+
+2007-12-14 Alp Toker <alp@atoker.com>
+
+ Fix inconsistent indentation in the license header. Maciej was right!
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+
+2007-12-14 Alp Toker <alp@atoker.com>
+
+ Reviewed by Maciej.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16432
+ [GTK] Update license headers
+
+ Consent has been given by the authors of these files to change license
+ to the LGPL as outlined in the bug report.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * WebCoreSupport/DragClientGtk.cpp:
+ * WebCoreSupport/EditorClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::makeRepresentation):
+ (WebKit::FrameLoaderClient::forceLayout):
+ (WebKit::FrameLoaderClient::forceLayoutForNonHTML):
+ (WebKit::FrameLoaderClient::setCopiesOnScroll):
+ (WebKit::FrameLoaderClient::detachedFromParent1):
+ (WebKit::FrameLoaderClient::detachedFromParent2):
+ (WebKit::FrameLoaderClient::detachedFromParent3):
+ (WebKit::FrameLoaderClient::detachedFromParent4):
+ (WebKit::FrameLoaderClient::loadedFromCachedPage):
+ (WebKit::FrameLoaderClient::dispatchDidHandleOnloadEvents):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidCancelClientRedirect):
+ (WebKit::FrameLoaderClient::dispatchWillPerformClientRedirect):
+ (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage):
+ (WebKit::FrameLoaderClient::dispatchWillClose):
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFinishDocumentLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFirstLayout):
+ (WebKit::FrameLoaderClient::dispatchShow):
+ (WebKit::FrameLoaderClient::cancelPolicyCheck):
+ (WebKit::FrameLoaderClient::dispatchDidLoadMainResource):
+ (WebKit::FrameLoaderClient::revertToProvisionalState):
+ (WebKit::FrameLoaderClient::clearUnarchivingState):
+ (WebKit::FrameLoaderClient::willChangeTitle):
+ (WebKit::FrameLoaderClient::didChangeTitle):
+ (WebKit::FrameLoaderClient::finalSetupForReplace):
+ (WebKit::FrameLoaderClient::setDefersLoading):
+ (WebKit::FrameLoaderClient::isArchiveLoadPending):
+ (WebKit::FrameLoaderClient::cancelPendingArchiveLoad):
+ (WebKit::FrameLoaderClient::clearArchivedResources):
+ (WebKit::FrameLoaderClient::canHandleRequest):
+ (WebKit::FrameLoaderClient::canShowMIMEType):
+ (WebKit::FrameLoaderClient::representationExistsForURLScheme):
+ (WebKit::FrameLoaderClient::generatedMIMETypeForURLScheme):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveContentLength):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoading):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoading):
+ (WebKit::FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
+ (WebKit::FrameLoaderClient::download):
+ (WebKit::FrameLoaderClient::cancelledError):
+ (WebKit::FrameLoaderClient::blockedError):
+ (WebKit::FrameLoaderClient::cannotShowURLError):
+ (WebKit::FrameLoaderClient::interruptForPolicyChangeError):
+ (WebKit::FrameLoaderClient::cannotShowMIMETypeError):
+ (WebKit::FrameLoaderClient::fileDoesNotExistError):
+ (WebKit::FrameLoaderClient::shouldFallBack):
+ (WebKit::FrameLoaderClient::willUseArchive):
+ (WebKit::FrameLoaderClient::canCachePage):
+ (WebKit::FrameLoaderClient::dispatchCreatePage):
+ (WebKit::FrameLoaderClient::dispatchUnableToImplementPolicy):
+ (WebKit::FrameLoaderClient::setMainDocumentError):
+ (WebKit::FrameLoaderClient::startDownload):
+ (WebKit::FrameLoaderClient::updateGlobalHistoryForStandardLoad):
+ (WebKit::FrameLoaderClient::updateGlobalHistoryForReload):
+ (WebKit::FrameLoaderClient::savePlatformDataToCachedPage):
+ (WebKit::FrameLoaderClient::transitionToCommittedFromCachedPage):
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ * WebView/webkitwebview.cpp:
+
+2007-12-14 Darin Adler <darin@apple.com>
+
+ Reviewed by Alexey.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeyboardEvent): Changed to use Editor::command
+ instead of Editor::execCommand.
+ * WebView/webkitwebview.cpp: Ditto.
+
+2007-12-12 Brady Eidson <beidson@apple.com>
+
+ Reviewed by Sam Weinig
+
+ As part of doing some CachedPage and client cleanup, keep GTK building
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::savePlatformDataToCachedPage):
+ (WebKit::FrameLoaderClient::transitionToCommittedFromCachedPage):
+ (WebKit::FrameLoaderClient::transitionToCommittedForNewPage):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-12-12 Alp Toker <alp@atoker.com>
+
+ Reviewed by Holger Freyther.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15576
+ [GTK] Printing support
+
+ Add printing support.
+
+ The API will be kept internal for the time being, but printing can now
+ be triggered by Web pages or the JSC API using JavaScript.
+
+ The print spooler and pagination code is fairly abstract and could be
+ shared by other ports including Win and Qt once complete. It doesn't
+ have header/footer support yet.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::print):
+ * WebView/webkitprivate.h:
+ * WebView/webkitwebframe.cpp:
+ (PrintContext::begin_print):
+ (PrintContext::draw_page):
+ (PrintContext::end_print):
+ (PrintContext::webkit_web_frame_print):
+
+2007-12-12 Sam Weinig <sam@webkit.org>
+
+ Build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didChangeTitle):
+
+2007-12-12 Sam Weinig <sam@webkit.org>
+
+ Build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+
+2007-12-11 George Wright <george.wright@collabora.co.uk>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=14120
+ [GDK] Support input methods
+
+ This patch adds infrastructure for input method support.
+
+ It also adds Hildon features for the Maemo mobile platform sufficient
+ to support the virtual keyboard.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::imContextCommitted):
+ (WebKit::EditorClient::EditorClient):
+ (WebKit::EditorClient::~EditorClient):
+ (WebKit::EditorClient::textFieldDidBeginEditing):
+ (WebKit::EditorClient::textFieldDidEndEditing):
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebView/webkitprivate.h:
+ * WebView/webkitwebview.cpp:
+
+2007-12-07 Alexey Proskuryakov <ap@webkit.org>
+
+ Reviewed by Darin Adler.
+
+ <rdar://problem/5535636>
+ Have to press 4 times instead of 2 times to get the expected result of ^^ with german keyboard.
+
+ http://bugs.webkit.org/show_bug.cgi?id=13916
+ JavaScript detects Tab as a character input on a textfield validation
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeyboardEvent):
+ (WebKit::EditorClient::handleInputMethodKeydown):
+ * WebCoreSupport/EditorClientGtk.h:
+ Updated for cross-platform changes as much as it was possible without a gtk build environment.
+
+2007-12-08 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16346
+ [GTK] Some webview parts must use the focused frame.
+
+ Also update some old code.
+
+ * WebView/webkitprivate.cpp:
+ (getFrameFromView): removed
+
+ * WebView/webkitprivate.h:
+ (getFrameFromView): removed
+
+ * WebView/webkitwebview.cpp:
+ (webkit_web_view_expose_event):
+ (webkit_web_view_key_press_event): use focused frame
+ (webkit_web_view_key_release_event): use focused frame
+ (webkit_web_view_button_press_event):
+ (webkit_web_view_button_release_event):
+ (webkit_web_view_motion_event):
+ (webkit_web_view_scroll_event):
+ (webkit_web_view_size_allocate):
+ (webkit_web_view_set_scroll_adjustments):
+ (webkit_web_view_execute_script):
+ (webkit_web_view_stop_loading):
+ (webkit_web_view_load_string):
+ (webkit_web_view_reload):
+ (webkit_web_view_open):
+ (webkit_web_view_can_go_forward):
+ (webkit_web_view_can_go_backward):
+ (webkit_web_view_go_forward):
+ (webkit_web_view_go_backward):
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeypress): fix for page up and page down keys for editable contents
+
+2007-12-07 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16333
+ [GTK] Key bindings must work with focused frames.
+
+ There are still more cases where getFrameFromView() is mis-used that
+ need to be fixed, but this is a good start.
+
+ * WebView/webkitwebview.cpp:
+ (webkit_web_view_real_select_all):
+ (webkit_web_view_real_cut_clipboard):
+ (webkit_web_view_real_copy_clipboard):
+ (webkit_web_view_real_paste_clipboard):
+
+2007-12-06 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16329
+ [GTK] Two small cleanups
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::createWindow):
+ (WebKit::ChromeClient::addMessageToConsole):
+ (WebKit::ChromeClient::runJavaScriptAlert):
+ (WebKit::ChromeClient::runJavaScriptConfirm):
+ (WebKit::ChromeClient::runJavaScriptPrompt):
+ (WebKit::ChromeClient::setStatusbarText):
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ (WebKit::ChromeClient::setToolTip):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * WebView/webkitprivate.cpp:
+ (WebKit::kit):
+ s/m_webPage/m_webView/
+ * WebView/webkitwebview.cpp:
+ Chain up to the parent class to activate bindings instead
+ of doing it explicitely.
+
+2007-12-06 Holger Hans Peter Freyther <holger.freyther@trolltech.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16173
+ Licensing change
+
+ Change license from BSD to LGPL.
+
+ * WebCoreSupport/ChromeClientGtk.h:
+ * WebView/webkitdefines.h:
+ * WebView/webkitglobal.cpp:
+ * WebView/webkitglobal.h:
+ * WebView/webkitnetworkrequest.cpp:
+ * WebView/webkitnetworkrequest.h:
+ * WebView/webkitprivate.cpp:
+ * WebView/webkitprivate.h:
+ * WebView/webkitsettings.cpp:
+ * WebView/webkitsettings.h:
+ * WebView/webkitwebframe.cpp:
+ * WebView/webkitwebframe.h:
+ * WebView/webkitwebview.h:
+
+2007-12-05 Michael Natterer <mitch@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ * WebView/webkitwebview.cpp: split key and button event handlers
+ into separate press and release functions.
+
+2007-12-05 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ Handle events for Home and End keys.
+
+ * WebView/webkitwebview.cpp:
+ (webkit_web_view_key_event):
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (EditorClient::handleKeypress):
+
+2007-12-05 Michael Natterer <mitch@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ * WebView/webkitwebview.cpp
+ * WebCoreSupport/ChromeClientGtk.cpp
+ * WebCoreSupport/FrameLoaderClientGtk.cpp: canonicalize signal names.
+
+2007-12-04 Darin Adler <darin@apple.com>
+
+ Reviewed by Kevin Decker.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp: Removed obsolete privateBrowsingEnabled.
+ * WebCoreSupport/FrameLoaderClientGtk.h: Ditto.
+
+2007-12-04 Michael Natterer <mitch@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ * WebView/webkitwebframe.cpp: don't redeclare the marshaller
+ prototype but simply include "webkit-marshal.h" now that its build
+ is fixed.
+
+2007-12-04 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ Fix a regression in key press propagation in r28386.
+
+ Fix indentation (was off by two spaces).
+
+ * WebView/webkitwebview.cpp:
+
+2007-12-04 Luca Bruno <lethalman88@gmail.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15911
+ [GTK] Use GtkBindingSet to make key bindings user-configurable
+
+ This patch doesn't cover the full range of bindings, only the ones
+ that seem obviously correct and have clear public API.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeypress): do not handle clipboard operations and select-all
+ * WebView/webkitwebview.cpp: add cut, copy, paste and select-all signals and allow binding sets (issue #15911 and #16144)
+ * WebView/webkitwebview.h:
+
+2007-12-04 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15561
+ GTK port needs DumpRenderTree implementation
+
+ Start work on the GTK+ DRT.
+
+ Add a couple of proposed new API entry points. They are currently for
+ internal use only by DRT and not in the public headers.
+
+ * WebView/webkitprivate.h:
+ * WebView/webkitwebframe.cpp:
+
+2007-12-03 Dan Bernstein <mitz@apple.com>
+
+ Reviewed by Dave Hyatt.
+
+ - fix <rdar://problem/5346452> Resize event doesn't fire on body element inside a frame
+
+ * WebView/webkitwebview.cpp: Remove the call to sendResizeEvent() since
+ FrameView sends it now.
+
+2007-12-03 Alp Toker <alp@atoker.com>
+
+ globalObject() GTK+ build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+
+2007-12-03 Geoffrey Garen <ggaren@apple.com>
+
+ GTK Build fix: get globalExec from the right place.
+
+ * WebView/webkitwebframe.cpp:
+
+2007-12-01 Alp Toker <alp@atoker.com>
+
+ Reviewed by Adam Roben.
+
+ Wrap type definitions in webkitdefines.h with G_BEGIN_DECLS, which
+ takes care of extern "C".
+
+ Introduce a webkit.h convenience header.
+
+ Remove another left-over from the old API.
+
+ * WebView/headers.pri:
+ * WebView/webkit.h: Added.
+ * WebView/webkitdefines.h:
+
+2007-12-01 Alp Toker <alp@atoker.com>
+
+ Reviewed by Adam Roben.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15687
+ [Gtk] Allow API clients to interact with JavaScript in web pages
+
+ Include the necessary JavaScriptCore headers directly in the public
+ API headers.
+
+ This is the last of a series of changes needed to allow GTK+
+ applications to access the JS API.
+
+ Until http://bugs.webkit.org/show_bug.cgi?id=16029 is resolved,
+ developers will still have to include the individual JS API headers
+ individually if they want to use it in their applications.
+
+ Patch also removes some old legacy use of GDK that was in
+ WebKitWebFrame. No ABI change.
+
+ * WebView/webkitdefines.h:
+ * WebView/webkitwebframe.h:
+ * WebView/webkitwebview.h:
+
+2007-11-30 Jan Michael Alonzo <jmalonzo@unpluggable.com>
+
+ Fix for GTK+ Debug build breakage introduced in r28273.
+
+ * WebView/webkitprivate.cpp:
+ (WebKit::kit):
+
+2007-11-30 Alp Toker <alp@atoker.com>
+
+ Reviewed by Adam Roben.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15691
+ [GTK] Public API does not follow GTK+ conventions
+
+ Refactor the WebKit/GTK+ public API. Changes:
+ WebKitPage -> WebKitWebView
+ WebKitFrame -> WebKitWebFrame
+
+ Public API source and header names have been updated to mirror the API
+ changes.
+
+ The API is now kept in WebKit/gtk/WebView to match other ports in the
+ same class such as Mac and Win.
+
+ API/ABI-breaking change.
+
+ * Api: Removed.
+ * Api/headers.pri: Removed.
+ * Api/webkitgtk-marshal.list: Removed.
+ * Api/webkitgtkdefines.h: Removed.
+ * Api/webkitgtkframe.cpp: Removed.
+ * Api/webkitgtkframe.h: Removed.
+ * Api/webkitgtkglobal.cpp: Removed.
+ * Api/webkitgtkglobal.h: Removed.
+ * Api/webkitgtknetworkrequest.cpp: Removed.
+ * Api/webkitgtknetworkrequest.h: Removed.
+ * Api/webkitgtkpage.cpp: Removed.
+ * Api/webkitgtkpage.h: Removed.
+ * Api/webkitgtkprivate.cpp: Removed.
+ * Api/webkitgtkprivate.h: Removed.
+ * Api/webkitgtksettings.cpp: Removed.
+ * Api/webkitgtksettings.h: Removed.
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::ChromeClient):
+ (WebKit::ChromeClient::createWindow):
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::webPage):
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::isEditable):
+ (WebKit::EditorClient::EditorClient):
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::FrameLoaderClient::postProgressStartedNotification):
+ (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification):
+ (WebKit::FrameLoaderClient::postProgressFinishedNotification):
+ (WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction):
+ (WebKit::FrameLoaderClient::createFrame):
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveIcon):
+ (WebKit::FrameLoaderClient::setTitle):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ (WebKit::FrameLoaderClient::webFrame):
+ * WebView: Added.
+ * WebView/headers.pri: Added.
+ * WebView/webkit-marshal.list: Added.
+ * WebView/webkitdefines.h: Added.
+ * WebView/webkitglobal.cpp: Added.
+ * WebView/webkitglobal.h: Added.
+ * WebView/webkitnetworkrequest.cpp: Added.
+ * WebView/webkitnetworkrequest.h: Added.
+ * WebView/webkitprivate.cpp: Added.
+ (WebKit::apply):
+ (WebKit::create):
+ (WebKit::getFrameFromView):
+ (WebKit::getViewFromFrame):
+ (WebKit::core):
+ (WebKit::kit):
+ * WebView/webkitprivate.h: Added.
+ * WebView/webkitsettings.cpp: Added.
+ * WebView/webkitsettings.h: Added.
+ * WebView/webkitwebframe.cpp: Added.
+ * WebView/webkitwebframe.h: Added.
+ * WebView/webkitwebview.cpp: Added.
+ * WebView/webkitwebview.h: Added.
+
+2007-11-28 Alp Toker <alp@atoker.com>
+
+ Reviewed by Timothy Hatcher.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16174
+ [GTK] Use "URI" not "URL" in public API
+
+ Replace use of the term "URL" with "URI" in public headers,
+ documentation and some internal code to match GLib/GTK+ convention.
+
+ This is now mentioned in the API guidelines:
+ http://trac.webkit.org/projects/webkit/wiki/HackingGtk
+
+ API/ABI-breaking change.
+
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtknetworkrequest.cpp:
+ * Api/webkitgtknetworkrequest.h:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * Api/webkitgtkprivate.h:
+ * Api/webkitgtksettings.h:
+
+2007-11-29 Brady Eidson <beidson@apple.com>
+
+ Better build fix for Gtk
+
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2007-11-29 Brady Eidson <beidson@apple.com>
+
+ Keep it building with new client method
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::requestQuotaIncreaseForNewDatabase):
+ (WebKit::ChromeClient::requestQuotaIncreaseForDatabaseOperation):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2007-11-26 Alp Toker <alp@atoker.com>
+
+ Reviewed by Adam Roben.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16149
+ Implement the window-object-cleared signal
+
+ This implementation provides the JSGlobalContextRef and JSObjectRef
+ directly rather than using an intermediate JS wrapper object, similar
+ to the approach taken by the Win port.
+
+ * Api/webkitgtk-marshal.list:
+ * Api/webkitgtkframe.h:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+
+2007-11-24 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15691
+ [GTK] Public API does not follow GTK+ conventions
+
+ Public API enhancements:
+
+ Implement webkit_page_get_editable() and webkit_page_set_editable().
+
+ Implement webkit_frame_get_name().
+
+ Remove definitions for functions that are unusable or not implemented.
+ This has caused much confusion for application developers.
+
+ Improve documentation.
+
+ Correct/constify some return types.
+
+ Add parameter checks.
+
+ Make the default fixed font "Courier New" to match the other Web
+ font names.
+
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkframe.h:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * Api/webkitgtkprivate.h:
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::isEditable):
+
+2007-11-24 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=16125
+ [GTK] Up key doesn't work properly when content is editable
+
+ Add a missing 'break' to avoid falling through to the next case when
+ handling VK_UP keystrokes. This was noticed when working on editing
+ support in the GTK+ port.
+
+ I've checked the other cases for similar typos and they seem fine.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeypress):
+
+2007-11-24 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15745
+ [GTK] Arrow keys do not Scroll
+
+ * Api/webkitgtkpage.cpp:
+
+ Support Up/Down/Right/Left keys to scroll. Slight hack, see FIXME for
+ details.
+
+2007-11-24 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15891
+ [GTK] Javascript console and dialogs are not implemented
+
+ Fix call to gtk_message_dialog_new() which expects a format string.
+
+ * Api/webkitgtkpage.cpp:
+
+2007-11-24 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15793
+ [GTK] Webkit doesn't show title attribute tooltip when hovering over an image
+
+ Implement tooltip support using the new Tooltip API.
+
+ Support for older versions of GTK+ is still lacking.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::setToolTip):
+
+2007-11-22 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Implement and document several WebKitFrame functions, some of which
+ are necessary to support DRT.
+
+ Correct NULL handling and improve run-time checks.
+
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkframe.h:
+ * Api/webkitgtkprivate.cpp:
+
+2007-11-22 Alp Toker <alp@atoker.com>
+
+ Whitespace fixes only.
+
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * Api/webkitgtkprivate.h:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ * WebCoreSupport/ContextMenuClientGtk.h:
+ * WebCoreSupport/DragClientGtk.h:
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::dispatchWillSendRequest):
+ (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest):
+ (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification):
+ (WebKit::FrameLoaderClient::createFrame):
+ (WebKit::FrameLoaderClient::createJavaAppletWidget):
+ (WebKit::FrameLoaderClient::registerForIconNotification):
+ (WebKit::FrameLoaderClient::setMainFrameDocumentReady):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoad):
+ (WebKit::FrameLoaderClient::frameLoadCompleted):
+ (WebKit::FrameLoaderClient::saveViewStateToItem):
+ (WebKit::FrameLoaderClient::restoreViewState):
+ (WebKit::FrameLoaderClient::shouldGoToHistoryItem):
+ (WebKit::FrameLoaderClient::setTitle):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-11-22 Michael Natterer <mitch@imendio.com>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15984
+ Implement "navigation-requested" signal for WebKit Gtk
+
+ * Api/webkitgtknetworkrequest.h: fix parent class member.
+
+ * Api/webkitgtknetworkrequest.cpp
+ * Api/webkitgtkprivate.h: basic implementation featuring an
+ "url" member and API.
+
+ * Api/webkitgtkdefines.h: added network request typedefs.
+
+ * Api/webkitgtkpage.h: fix enum name:
+ s/WEBKIT_NAVIGATION_REQUEST_RESPONSE/WebKitNavigationRequestResponse/
+ and sanitized enum values.
+
+ * Api/webkitgtkpage.cpp: made "navigation-requested" a signal.
+
+ * Api/webkitgtk-marshal.list: added INT:OBJECT,OBJECT
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp: emit the new signal in
+ dispatchDecidePolicyForNavigationAction().
+
+2007-11-18 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15891
+ [GTK] Javascript console and dialogs are not implemented
+
+ Correct script-prompt to return NULL when cancelled.
+
+ Small changes to avoid compiler warnings.
+
+ * Api/webkitgtkpage.cpp:
+
+2007-11-17 Timothy Hatcher <timothy@apple.com>
+
+ Reviewed by Mark Rowe.
+
+ Bug 13470: i18n: The Web Inspector is not localizable
+ http://bugs.webkit.org/show_bug.cgi?id=13470
+
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::localizedStringsURL): Empty stub.
+ * WebCoreSupport/InspectorClientGtk.h: Add localizedStringsURL.
+
+2007-11-13 Mark Rowe <mrowe@apple.com>
+
+ Gtk build fix. Replace incorrect use of the LOG macro with g_print.
+
+ * Api/webkitgtkpage.cpp:
+
+2007-11-13 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Alp.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15891
+ [GTK] Javascript console and dialogs are not implemented
+
+ Implement signals for script dialogs and console messages.
+
+ * Api/webkitgtk-marshal.list:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::addMessageToConsole):
+ (WebKit::ChromeClient::runJavaScriptAlert):
+ (WebKit::ChromeClient::runJavaScriptConfirm):
+ (WebKit::ChromeClient::runJavaScriptPrompt):
+
+2007-11-11 Alp Toker <alp@atoker.com>
+
+ Reviewed by Anders.
+
+ Initialize m_userAgent.
+
+ Fix typos in GDK_WINDOWING conditionals.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::agentPlatform):
+
+2007-11-11 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Mention Safari in the UserAgent string to improve site compatibility.
+
+ Also bump the hard-coded AppleWebKit version number.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::composeUserAgent):
+
+2007-11-09 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Alp.
+
+ Fix http://bugs.webkit.org/show_bug.cgi?id=15926
+ [GTK] WebKitPage map handler is redundant.
+
+ * Api/webkitgtkpage.cpp:
+ The map handler for WebKitPage is redundant, GtkContainer does
+ the same (and more correctly).
+
+2007-11-08 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15653
+ [GTK] Text editor does not handle common keystrokes
+
+ Handle more keystrokes in EditorClientGtk. Note that this is a
+ temporary measure pending a proper solution using GtkBindingSet (see
+ http://bugs.webkit.org/show_bug.cgi?id=15911).
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeypress):
+
+2007-11-08 Kevin McCullough <kmccullough@apple.com>
+
+ Reviewed by Sam.
+
+ - windowObjectCleared() is no longer const. It needs to setup the
+ script debugger and cannot be const to do so.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-11-06 Rodney Dawes <dobey@wayofthemonkey.com>
+
+ Fix http://bugs.webkit.org/attachment.cgi?id=17043&action=view
+ Bug 15766: [GTK] WebKit sometimes spews binary data as text/plain into iframes
+
+ FrameLoaderClient::objectContentType needs to check with the MIMETypeRegistry
+ to determine whether the given MIME type is displayable as an image or non-image.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (FrameLoaderClient::objectContentType): Change logic to match that in
+ the Windows and Mac ports.
+
+2007-11-05 Christian Dywan <christian@twotoasts.de>
+
+ Reviewed by Maciej.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15409
+ FrameLoaderClientGtk hardcodes data, including platform to Linux i686
+
+ Compute a proper user agent string.
+
+ Patch includes fixes by Alp.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::agentPlatform):
+ (WebKit::agentOS):
+ (WebKit::composeUserAgent):
+ (WebKit::FrameLoaderClient::userAgent):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-11-05 Mark Rowe <mrowe@apple.com>
+
+ Rubber-stamped by Alp Toker.
+
+ Remove unused m_firstData member from FrameLoaderClientGtk.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-11-05 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Alp Toker.
+
+ Fix http://bugs.webkit.org/show_bug.cgi?id=15842
+ Bug 15842: [Gtk] about:blank doesn't work
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::finishedLoading): Set the encoding on the frame loader to
+ get work done that is normally done when the first bit of data is received, even in the
+ case of a document with no data (like about:blank).
+
+2007-11-03 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Restore correct double and triple click behaviour
+
+ We ended up ignoring GDK_2BUTTON_PRESS and GDK_3BUTTON_PRESS after
+ recent refactoring.
+
+ * Api/webkitgtkpage.cpp:
+
+2007-11-03 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ Frame scrolling and invalidation fixes
+
+ Make upward scroll events have a positive delta to match other ports.
+
+ Fix the invalidation rect offset for frames so that scrolling works properly.
+
+ Avoid allocating negative sizes to widgets to avoid GTK+ warnings.
+
+ Allow tabbing to all widgets and links.
+
+ Fix event returns, improving the focus situation and correcting scroll wheel
+ behavior.
+
+ * Api/webkitgtkpage.cpp:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+
+2007-10-29 Alp Toker <alp@atoker.com>
+
+ Reviewed by Maciej.
+
+ Do not allow control to reach end of non-void functions
+
+ * Api/webkitgtksettings.cpp:
+
+2007-10-28 Lars Lindner <lars.lindner@gmail.com>
+
+ Reviewed by Alp.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15466
+ [gtk] widget does not take focus on mouse click
+
+ Grab widget focus in mouse press callback.
+
+ * Api/webkitgtkpage.cpp:
+
+2007-10-25 Alp Toker <alp@atoker.com>
+
+ Reviewed by Brady.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15686
+ GtkLauncher aborts on launch due to uninitialized threading subsystem
+
+ Re-enable database support in the GTK+ port, with a fix.
+
+ Initialize GLib threading as early as possible.
+
+ * Api/webkitgtkglobal.cpp:
+
+2007-10-25 Alp Toker <alp@atoker.com>
+
+ Unreviewed fix to make the GTK+ port run.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15686
+ GtkLauncher aborts on launch due to uninitialized threading subsystem
+
+ http://bugs.webkit.org/show_bug.cgi?id=15688
+ [GTK] Make it possible to disable database support
+
+ Make database path initialization conditional on database support
+ being enabled.
+
+ * Api/webkitgtkglobal.cpp:
+
+2007-10-24 Mark Rowe <mrowe@apple.com>
+
+ Gtk build fix. Track WebCore changes in r27004.
+
+ * Api/webkitgtkglobal.cpp:
+
+2007-10-22 Alp Toker <alp@atoker.com>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15611
+ [GTK] Text selection behaviour different in Debug and Release builds
+
+ http://bugs.webkit.org/show_bug.cgi?id=15578
+ [GTK] Text editor caret does not blink
+
+ Never allow control to reach the end of non-void functions.
+
+ Return more sensible values, or in some cases, nulls.
+
+ * Api/webkitgtksettings.cpp:
+ * Api/webkitgtksettings.h:
+ * WebCoreSupport/DragClientGtk.cpp:
+ (WebKit::DragClient::actionMaskForDrag):
+ (WebKit::DragClient::dragSourceActionMaskForPoint):
+ (WebKit::DragClient::createDragImageForLink):
+
+2007-10-20 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Alp.
+
+ Gtk changes needed to enable HTML 5 client-side database storage.
+
+ * Api/webkitgtkglobal.cpp: Set a default database path based on the user data directory.
+ This should become configurable by client applications in the future.
+
+2007-10-20 Mark Rowe <mrowe@apple.com>
+
+ Reviewed by Eric.
+
+ Don't allow control characters to be inserted into editable regions.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::handleKeypress):
+
+2007-10-19 Alp Toker <alp@atoker.com>
+
+ Reviewed by Oliver.
+
+ GTK+ build fix enabling the new local database storage feature.
+ There is also a prospective Qt build fix.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::runDatabaseSizeLimitPrompt):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2007-10-14 Jan Michael Alonzo <jmalonzo@unpluggable.com>
+
+ Reviewed by Adam.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15299
+ Fix "hovering_over_link" signal not emitted when consecutive links
+ are hovered.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ * WebCoreSupport/ChromeClientGtk.h:
+ - Remove m_didSendLinkSignal as it is superseded by m_hoveredLinkURL
+
+2007-10-10 Alice Liu <alice.liu@apple.com>
+
+ Reviewed by Geoff Garen.
+
+ changes to keep the build from breaking
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createFrame):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-10-03 Alp Toker <alp@atoker.com>
+
+ Reviewed by Adam.
+
+ http://bugs.webkit.org/show_bug.cgi?id=14726
+ [gtk] API design. Mapping the WebView delegates to signals.
+
+ Change the API namespace of the Gtk+ port from 'WebKitGtk' to 'WebKit'.
+
+ * Api/webkitgtkdefines.h:
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkframe.h:
+ * Api/webkitgtkglobal.cpp:
+ * Api/webkitgtkglobal.h:
+ * Api/webkitgtknetworkrequest.h:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * Api/webkitgtkprivate.cpp:
+ (WebKit::apply):
+ (WebKit::create):
+ (WebKit::getFrameFromPage):
+ (WebKit::getPageFromFrame):
+ (WebKit::core):
+ (WebKit::kit):
+ * Api/webkitgtkprivate.h:
+ * Api/webkitgtksettings.cpp:
+ * Api/webkitgtksettings.h:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::ChromeClient):
+ (WebKit::ChromeClient::createWindow):
+ (WebKit::ChromeClient::addMessageToConsole):
+ (WebKit::ChromeClient::runJavaScriptAlert):
+ (WebKit::ChromeClient::runJavaScriptConfirm):
+ (WebKit::ChromeClient::runJavaScriptPrompt):
+ * WebCoreSupport/ChromeClientGtk.h:
+ (WebKit::ChromeClient::webPage):
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::EditorClient):
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::FrameLoaderClient::postProgressStartedNotification):
+ (WebKit::FrameLoaderClient::postProgressEstimateChangedNotification):
+ (WebKit::FrameLoaderClient::postProgressFinishedNotification):
+ (WebKit::FrameLoaderClient::createFrame):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveIcon):
+ (WebKit::FrameLoaderClient::setTitle):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ (WebKit::FrameLoaderClient::webFrame):
+
+2007-10-02 Cosimo Cecchi <cosimoc@svn.gnome.org>
+
+ Reviewed by Mark.
+
+ http://bugs.webkit.org/show_bug.cgi?id=15299
+ Fix "hovering_over_link" signal being fired every time mouse moves.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::ChromeClient):
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ * WebCoreSupport/ChromeClientGtk.h:
+
+2007-09-21 Sean Egan <seanegan@gmail.com>
+
+ Reviewed by Alp.
+
+ Add an "execute_script" method to programmatically call Javascript
+ http://bugs.webkit.org/show_bug.cgi?id=15255
+
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+
+2007-09-29 Lars Lindner <lars.lindner@gmail.com>
+
+ Reviewed by Adam.
+
+ ChromeClientGtk.cpp does not implement mouseDidMoveOverElement()
+ http://bugs.webkit.org/show_bug.cgi?id=15299
+
+ Implementing "hovering_over_link" signal.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+
+2007-09-26 Mark Rowe <mrowe@apple.com>
+
+ Gtk build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp: Check for empty URL instead of invalid URL.
+
+2007-09-17 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ WebKitGtkPage and WebKitGtkFrame have a dependency on each other. To
+ allow client code to include both headers the typedef's for
+ WebKitGtkFrame, WebKitGtkPage, WebKitGtkFrameData and WebKitGtkNetworkRequest
+ are moved into webkitgtkdefines.h and included by both webkitgtkpage.h and
+ webkitgtkframe.h
+
+ * Api/webkitgtkdefines.h:
+ * Api/webkitgtkframe.h:
+ * Api/webkitgtkpage.h:
+
+2007-09-17 Cyril Brulebois <cyril.brulebois@enst-bretagne.fr>
+
+ Reviewed by Mark, some Coding Style changes by Holger.
+
+ This is from http://bugs.webkit.org/show_bug.cgi?id=14812.
+
+ Add title and location to WebKitGtkFramePrivate, add
+ webkit_gtk_frame_get_location to the WebKitGtkFrame API as well
+ as a title_changed callback, implement
+ webkit_gtk_frame_get_title and webkit_gtk_frame_get_location.
+
+ Initial patch by Diego Escalante Urrelo.
+
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkframe.h:
+ * Api/webkitgtkprivate.h:
+
+2007-09-15 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Mark.
+
+ Use the new WebCore::String::fromUTF8 function to convert
+ from the Gtk+ representation of a string to WebCore::String.
+
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::runJavaScriptPrompt):
+
+2007-09-10 Nigel Tao <nigeltao@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ Fix a typo where webkit_gtk_page_can_copy was declared twice,
+ rather than webkit_gtk_page_can_paste.
+
+ * Api/webkitgtkpage.h:
+
+2007-09-08 Brady Eidson <beidson@apple.com>
+
+ Better build fix
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::registerForIconNotification):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-09-08 Brady Eidson <beidson@apple.com>
+
+ Build fix
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::registerForIconNotification):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-09-05 Geoffrey Garen <ggaren@apple.com>
+
+ Reviewed by Darin Adler, Maciej Stachowiak, Mark Rowe, Tim Hatcher.
+
+ Fixed <rdar://problem/5326009> Make non-browser WebKit clients have no
+ memory cache, or a very tiny one
+
+ Keep the GTK build working with an empty stub.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::didPerformFirstNavigation):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-09-01 Oliver Hunt <oliver@apple.com>
+
+ Reviewed by Sam.
+
+ <rdar://problem/5344848> IME is incorrectly used for key events when on non-editable regions
+
+ EditorClient::setInputMethodState stub
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::setInputMethodState):
+ * WebCoreSupport/EditorClientGtk.h:
+
+2007-08-18 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Build fix. Add const to the first parameter of createPlugin
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+
+2007-08-17 Anders Carlsson <andersca@apple.com>
+
+ Build fix.
+
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::createPlugin):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+
+2007-08-11 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ To not hit the needsLayout() assert of Frame::paint for subframes we need to
+ make sure they are layed out. Use the newly created FrameView::layoutIfNeededRecursive
+ method to do this.
+
+ * Api/webkitgtkpage.cpp:
+
+2007-08-11 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ Fix text selection by setting a DragClient when creating the Page. Now
+ that we have a DragClient we can free the Page when WebKitGtkPage gets
+ destructed.
+
+ * Api/webkitgtkpage.cpp:
+ * WebCoreSupport/DragClientGtk.cpp: Added.
+ (WebKit::DragClient::willPerformDragDestinationAction):
+ (WebKit::DragClient::willPerformDragSourceAction):
+ (WebKit::DragClient::actionMaskForDrag):
+ (WebKit::DragClient::dragSourceActionMaskForPoint):
+ (WebKit::DragClient::startDrag):
+ (WebKit::DragClient::createDragImageForLink):
+ * WebCoreSupport/DragClientGtk.h: Added.
+
+2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Anders.
+
+ Make WebKitGtkPage a GtkContainer to avoid a size_allocate
+ race of GtkScrollBar and GtkLayout.
+
+ * Api/webkitgtk-marshal.list:
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * Api/webkitgtkprivate.h:
+
+2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Niko.
+
+ Minor changes to the WebKit::EditorClient to allow removing
+ of text from TextFields. Remove the selectWordBeforeMenuEvent method
+ which is not used and not within WebCore::EditorClient.
+
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::shouldDeleteRange):
+ (WebKit::EditorClient::shouldBeginEditing):
+ (WebKit::EditorClient::shouldEndEditing):
+ (WebKit::EditorClient::shouldApplyStyle):
+ (WebKit::EditorClient::shouldInsertNode):
+ * WebCoreSupport/EditorClientGtk.h:
+
+2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Mark.
+
+ Rename the namespace from WebKitGtk to WebKit. Move the various *Client
+ classes into the WebKit namespace. Change the class names to not contain Gtk.
+ The file names have to contain the Gtk suffix to not clash with files in WebCore (e.g.
+ bridge/EditorClient.h).
+
+
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkprivate.cpp:
+ * Api/webkitgtkprivate.h:
+ * ChangeLog:
+ * WebCoreSupport/ChromeClientGtk.cpp:
+ (WebKit::ChromeClient::ChromeClient):
+ (WebKit::ChromeClient::chromeDestroyed):
+ (WebKit::ChromeClient::windowRect):
+ (WebKit::ChromeClient::setWindowRect):
+ (WebKit::ChromeClient::pageRect):
+ (WebKit::ChromeClient::scaleFactor):
+ (WebKit::ChromeClient::focus):
+ (WebKit::ChromeClient::unfocus):
+ (WebKit::ChromeClient::createWindow):
+ (WebKit::ChromeClient::createModalDialog):
+ (WebKit::ChromeClient::show):
+ (WebKit::ChromeClient::canRunModal):
+ (WebKit::ChromeClient::runModal):
+ (WebKit::ChromeClient::setToolbarsVisible):
+ (WebKit::ChromeClient::toolbarsVisible):
+ (WebKit::ChromeClient::setStatusbarVisible):
+ (WebKit::ChromeClient::statusbarVisible):
+ (WebKit::ChromeClient::setScrollbarsVisible):
+ (WebKit::ChromeClient::scrollbarsVisible):
+ (WebKit::ChromeClient::setMenubarVisible):
+ (WebKit::ChromeClient::menubarVisible):
+ (WebKit::ChromeClient::setResizable):
+ (WebKit::ChromeClient::closeWindowSoon):
+ (WebKit::ChromeClient::canTakeFocus):
+ (WebKit::ChromeClient::takeFocus):
+ (WebKit::ChromeClient::canRunBeforeUnloadConfirmPanel):
+ (WebKit::ChromeClient::runBeforeUnloadConfirmPanel):
+ (WebKit::ChromeClient::runJavaScriptAlert):
+ (WebKit::ChromeClient::runJavaScriptConfirm):
+ (WebKit::ChromeClient::setStatusbarText):
+ (WebKit::ChromeClient::shouldInterruptJavaScript):
+ (WebKit::ChromeClient::tabsToLinks):
+ (WebKit::ChromeClient::windowResizerRect):
+ (WebKit::ChromeClient::addToDirtyRegion):
+ (WebKit::ChromeClient::scrollBackingStore):
+ (WebKit::ChromeClient::updateBackingStore):
+ (WebKit::ChromeClient::mouseDidMoveOverElement):
+ (WebKit::ChromeClient::setToolTip):
+ * WebCoreSupport/ChromeClientGtk.h:
+ * WebCoreSupport/ContextMenuClientGtk.cpp:
+ (WebKit::ContextMenuClient::contextMenuDestroyed):
+ (WebKit::ContextMenuClient::getCustomMenuFromDefaultItems):
+ (WebKit::ContextMenuClient::contextMenuItemSelected):
+ (WebKit::ContextMenuClient::downloadURL):
+ (WebKit::ContextMenuClient::copyImageToClipboard):
+ (WebKit::ContextMenuClient::searchWithGoogle):
+ (WebKit::ContextMenuClient::lookUpInDictionary):
+ (WebKit::ContextMenuClient::speak):
+ * WebCoreSupport/ContextMenuClientGtk.h:
+ * WebCoreSupport/EditorClientGtk.cpp:
+ (WebKit::EditorClient::shouldDeleteRange):
+ (WebKit::EditorClient::shouldShowDeleteInterface):
+ (WebKit::EditorClient::isContinuousSpellCheckingEnabled):
+ (WebKit::EditorClient::isGrammarCheckingEnabled):
+ (WebKit::EditorClient::spellCheckerDocumentTag):
+ (WebKit::EditorClient::shouldBeginEditing):
+ (WebKit::EditorClient::shouldEndEditing):
+ (WebKit::EditorClient::shouldInsertText):
+ (WebKit::EditorClient::shouldChangeSelectedRange):
+ (WebKit::EditorClient::shouldApplyStyle):
+ (WebKit::EditorClient::shouldMoveRangeAfterDelete):
+ (WebKit::EditorClient::didBeginEditing):
+ (WebKit::EditorClient::respondToChangedContents):
+ (WebKit::EditorClient::respondToChangedSelection):
+ (WebKit::EditorClient::didEndEditing):
+ (WebKit::EditorClient::didWriteSelectionToPasteboard):
+ (WebKit::EditorClient::didSetSelectionTypesForPasteboard):
+ (WebKit::EditorClient::selectWordBeforeMenuEvent):
+ (WebKit::EditorClient::isEditable):
+ (WebKit::EditorClient::registerCommandForUndo):
+ (WebKit::EditorClient::registerCommandForRedo):
+ (WebKit::EditorClient::clearUndoRedoOperations):
+ (WebKit::EditorClient::canUndo):
+ (WebKit::EditorClient::canRedo):
+ (WebKit::EditorClient::undo):
+ (WebKit::EditorClient::redo):
+ (WebKit::EditorClient::shouldInsertNode):
+ (WebKit::EditorClient::pageDestroyed):
+ (WebKit::EditorClient::smartInsertDeleteEnabled):
+ (WebKit::EditorClient::toggleContinuousSpellChecking):
+ (WebKit::EditorClient::toggleGrammarChecking):
+ (WebKit::EditorClient::handleInputMethodKeypress):
+ (WebKit::EditorClient::EditorClient):
+ (WebKit::EditorClient::textFieldDidBeginEditing):
+ (WebKit::EditorClient::textFieldDidEndEditing):
+ (WebKit::EditorClient::textDidChangeInTextField):
+ (WebKit::EditorClient::doTextFieldCommandFromEvent):
+ (WebKit::EditorClient::textWillBeDeletedInTextField):
+ (WebKit::EditorClient::textDidChangeInTextArea):
+ (WebKit::EditorClient::ignoreWordInSpellDocument):
+ (WebKit::EditorClient::learnWord):
+ (WebKit::EditorClient::checkSpellingOfString):
+ (WebKit::EditorClient::checkGrammarOfString):
+ (WebKit::EditorClient::updateSpellingUIWithGrammarString):
+ (WebKit::EditorClient::updateSpellingUIWithMisspelledWord):
+ (WebKit::EditorClient::showSpellingUI):
+ (WebKit::EditorClient::spellingUIIsShowing):
+ * WebCoreSupport/EditorClientGtk.h:
+ * WebCoreSupport/FrameLoaderClientGtk.cpp:
+ (WebKit::FrameLoaderClient::FrameLoaderClient):
+ (WebKit::FrameLoaderClient::userAgent):
+ (WebKit::FrameLoaderClient::createDocumentLoader):
+ (WebKit::FrameLoaderClient::committedLoad):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge):
+ (WebKit::FrameLoaderClient::dispatchDidCancelAuthenticationChallenge):
+ (WebKit::FrameLoaderClient::dispatchWillSendRequest):
+ (WebKit::FrameLoaderClient::assignIdentifierToInitialRequest):
+ (WebKit::FrameLoaderClient::postProgressStartedNotification):
+ (WebKit::FrameLoaderClient::postProgressFinishedNotification):
+ (WebKit::FrameLoaderClient::frameLoaderDestroyed):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveResponse):
+ (WebKit::FrameLoaderClient::createPlugin):
+ (WebKit::FrameLoaderClient::redirectDataToPlugin):
+ (WebKit::FrameLoaderClient::createJavaAppletWidget):
+ (WebKit::FrameLoaderClient::overrideMediaType):
+ (WebKit::FrameLoaderClient::windowObjectCleared):
+ (WebKit::FrameLoaderClient::setMainFrameDocumentReady):
+ (WebKit::FrameLoaderClient::hasWebView):
+ (WebKit::FrameLoaderClient::hasFrameView):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoad):
+ (WebKit::FrameLoaderClient::frameLoadCompleted):
+ (WebKit::FrameLoaderClient::saveViewStateToItem):
+ (WebKit::FrameLoaderClient::restoreViewState):
+ (WebKit::FrameLoaderClient::privateBrowsingEnabled):
+ (WebKit::FrameLoaderClient::makeDocumentView):
+ (WebKit::FrameLoaderClient::makeRepresentation):
+ (WebKit::FrameLoaderClient::forceLayout):
+ (WebKit::FrameLoaderClient::forceLayoutForNonHTML):
+ (WebKit::FrameLoaderClient::setCopiesOnScroll):
+ (WebKit::FrameLoaderClient::detachedFromParent1):
+ (WebKit::FrameLoaderClient::detachedFromParent2):
+ (WebKit::FrameLoaderClient::detachedFromParent3):
+ (WebKit::FrameLoaderClient::detachedFromParent4):
+ (WebKit::FrameLoaderClient::loadedFromCachedPage):
+ (WebKit::FrameLoaderClient::dispatchDidHandleOnloadEvents):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidCancelClientRedirect):
+ (WebKit::FrameLoaderClient::dispatchWillPerformClientRedirect):
+ (WebKit::FrameLoaderClient::dispatchDidChangeLocationWithinPage):
+ (WebKit::FrameLoaderClient::dispatchWillClose):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveIcon):
+ (WebKit::FrameLoaderClient::dispatchDidStartProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveTitle):
+ (WebKit::FrameLoaderClient::dispatchDidCommitLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFinishDocumentLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFirstLayout):
+ (WebKit::FrameLoaderClient::dispatchShow):
+ (WebKit::FrameLoaderClient::cancelPolicyCheck):
+ (WebKit::FrameLoaderClient::dispatchDidLoadMainResource):
+ (WebKit::FrameLoaderClient::revertToProvisionalState):
+ (WebKit::FrameLoaderClient::clearUnarchivingState):
+ (WebKit::FrameLoaderClient::willChangeTitle):
+ (WebKit::FrameLoaderClient::didChangeTitle):
+ (WebKit::FrameLoaderClient::finishedLoading):
+ (WebKit::FrameLoaderClient::finalSetupForReplace):
+ (WebKit::FrameLoaderClient::setDefersLoading):
+ (WebKit::FrameLoaderClient::isArchiveLoadPending):
+ (WebKit::FrameLoaderClient::cancelPendingArchiveLoad):
+ (WebKit::FrameLoaderClient::clearArchivedResources):
+ (WebKit::FrameLoaderClient::canHandleRequest):
+ (WebKit::FrameLoaderClient::canShowMIMEType):
+ (WebKit::FrameLoaderClient::representationExistsForURLScheme):
+ (WebKit::FrameLoaderClient::generatedMIMETypeForURLScheme):
+ (WebKit::FrameLoaderClient::provisionalLoadStarted):
+ (WebKit::FrameLoaderClient::didFinishLoad):
+ (WebKit::FrameLoaderClient::setDocumentViewFromCachedPage):
+ (WebKit::FrameLoaderClient::dispatchDidReceiveContentLength):
+ (WebKit::FrameLoaderClient::dispatchDidFinishLoading):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoading):
+ (WebKit::FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache):
+ (WebKit::FrameLoaderClient::dispatchDidFailProvisionalLoad):
+ (WebKit::FrameLoaderClient::dispatchDidFailLoad):
+ (WebKit::FrameLoaderClient::download):
+ (WebKit::FrameLoaderClient::cancelledError):
+ (WebKit::FrameLoaderClient::blockedError):
+ (WebKit::FrameLoaderClient::cannotShowURLError):
+ (WebKit::FrameLoaderClient::interruptForPolicyChangeError):
+ (WebKit::FrameLoaderClient::cannotShowMIMETypeError):
+ (WebKit::FrameLoaderClient::fileDoesNotExistError):
+ (WebKit::FrameLoaderClient::shouldFallBack):
+ (WebKit::FrameLoaderClient::willUseArchive):
+ (WebKit::FrameLoaderClient::saveDocumentViewToCachedPage):
+ (WebKit::FrameLoaderClient::canCachePage):
+ (WebKit::FrameLoaderClient::dispatchCreatePage):
+ (WebKit::FrameLoaderClient::dispatchUnableToImplementPolicy):
+ * WebCoreSupport/FrameLoaderClientGtk.h:
+ * WebCoreSupport/InspectorClientGtk.cpp:
+ (WebKit::InspectorClient::inspectorDestroyed):
+ (WebKit::InspectorClient::createPage):
+ (WebKit::InspectorClient::showWindow):
+ (WebKit::InspectorClient::closeWindow):
+ (WebKit::InspectorClient::attachWindow):
+ (WebKit::InspectorClient::detachWindow):
+ (WebKit::InspectorClient::highlight):
+ (WebKit::InspectorClient::hideHighlight):
+ * WebCoreSupport/InspectorClientGtk.h:
+
+2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ As of http://bugs.webkit.org/show_bug.cgi?id=14727 move the
+ various *ClientGdk.{cpp,h} files from WebCore to WebKit/gtk/WebCoreSupport and
+ rename it from Gdk to Gtk.
+
+ * Api/webkitgtkdefines.h:
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkframe.h:
+ * Api/webkitgtkglobal.cpp:
+ * Api/webkitgtkglobal.h:
+ * Api/webkitgtknetworkrequest.cpp:
+ * Api/webkitgtknetworkrequest.h:
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * Api/webkitgtkprivate.cpp:
+ * Api/webkitgtkprivate.h:
+ * Api/webkitgtksettings.cpp:
+ * Api/webkitgtksettings.h:
+ * WebCoreSupport/ChromeClientGtk.cpp: Renamed from WebKit/gtk/WebCoreSupport/ChromeClientGdk.cpp.
+ (WebKitGtk::ChromeClientGtk::ChromeClientGtk):
+ (WebKitGtk::ChromeClientGtk::chromeDestroyed):
+ (WebKitGtk::ChromeClientGtk::windowRect):
+ (WebKitGtk::ChromeClientGtk::setWindowRect):
+ (WebKitGtk::ChromeClientGtk::pageRect):
+ (WebKitGtk::ChromeClientGtk::scaleFactor):
+ (WebKitGtk::ChromeClientGtk::focus):
+ (WebKitGtk::ChromeClientGtk::unfocus):
+ (WebKitGtk::ChromeClientGtk::createWindow):
+ (WebKitGtk::ChromeClientGtk::createModalDialog):
+ (WebKitGtk::ChromeClientGtk::show):
+ (WebKitGtk::ChromeClientGtk::canRunModal):
+ (WebKitGtk::ChromeClientGtk::runModal):
+ (WebKitGtk::ChromeClientGtk::setToolbarsVisible):
+ (WebKitGtk::ChromeClientGtk::toolbarsVisible):
+ (WebKitGtk::ChromeClientGtk::setStatusbarVisible):
+ (WebKitGtk::ChromeClientGtk::statusbarVisible):
+ (WebKitGtk::ChromeClientGtk::setScrollbarsVisible):
+ (WebKitGtk::ChromeClientGtk::scrollbarsVisible):
+ (WebKitGtk::ChromeClientGtk::setMenubarVisible):
+ (WebKitGtk::ChromeClientGtk::menubarVisible):
+ (WebKitGtk::ChromeClientGtk::setResizable):
+ (WebKitGtk::ChromeClientGtk::closeWindowSoon):
+ (WebKitGtk::ChromeClientGtk::canTakeFocus):
+ (WebKitGtk::ChromeClientGtk::takeFocus):
+ (WebKitGtk::ChromeClientGtk::canRunBeforeUnloadConfirmPanel):
+ (WebKitGtk::ChromeClientGtk::runBeforeUnloadConfirmPanel):
+ (WebKitGtk::ChromeClientGtk::addMessageToConsole):
+ (WebKitGtk::ChromeClientGtk::runJavaScriptAlert):
+ (WebKitGtk::ChromeClientGtk::runJavaScriptConfirm):
+ (WebKitGtk::ChromeClientGtk::runJavaScriptPrompt):
+ (WebKitGtk::ChromeClientGtk::setStatusbarText):
+ (WebKitGtk::ChromeClientGtk::shouldInterruptJavaScript):
+ (WebKitGtk::ChromeClientGtk::tabsToLinks):
+ (WebKitGtk::ChromeClientGtk::windowResizerRect):
+ (WebKitGtk::ChromeClientGtk::addToDirtyRegion):
+ (WebKitGtk::ChromeClientGtk::scrollBackingStore):
+ (WebKitGtk::ChromeClientGtk::updateBackingStore):
+ (WebKitGtk::ChromeClientGtk::mouseDidMoveOverElement):
+ (WebKitGtk::ChromeClientGtk::setToolTip):
+ * WebCoreSupport/ChromeClientGtk.h: Renamed from WebKit/gtk/WebCoreSupport/ChromeClientGdk.h.
+ (WebKitGtk::ChromeClientGtk::webPage):
+ * WebCoreSupport/ContextMenuClientGtk.cpp: Renamed from WebCore/page/gdk/ContextMenuClientGdk.cpp.
+ (WebCore::ContextMenuClientGtk::contextMenuDestroyed):
+ (WebCore::ContextMenuClientGtk::getCustomMenuFromDefaultItems):
+ (WebCore::ContextMenuClientGtk::contextMenuItemSelected):
+ (WebCore::ContextMenuClientGtk::downloadURL):
+ (WebCore::ContextMenuClientGtk::copyImageToClipboard):
+ (WebCore::ContextMenuClientGtk::searchWithGoogle):
+ (WebCore::ContextMenuClientGtk::lookUpInDictionary):
+ (WebCore::ContextMenuClientGtk::speak):
+ (WebCore::ContextMenuClientGtk::stopSpeaking):
+ * WebCoreSupport/ContextMenuClientGtk.h: Renamed from WebCore/page/gdk/ContextMenuClientGdk.h.
+ * WebCoreSupport/EditorClientGtk.cpp: Renamed from WebCore/platform/gdk/EditorClientGdk.cpp.
+ (WebCore::EditorClientGtk::shouldDeleteRange):
+ (WebCore::EditorClientGtk::shouldShowDeleteInterface):
+ (WebCore::EditorClientGtk::isContinuousSpellCheckingEnabled):
+ (WebCore::EditorClientGtk::isGrammarCheckingEnabled):
+ (WebCore::EditorClientGtk::spellCheckerDocumentTag):
+ (WebCore::EditorClientGtk::shouldBeginEditing):
+ (WebCore::EditorClientGtk::shouldEndEditing):
+ (WebCore::EditorClientGtk::shouldInsertText):
+ (WebCore::EditorClientGtk::shouldChangeSelectedRange):
+ (WebCore::EditorClientGtk::shouldApplyStyle):
+ (WebCore::EditorClientGtk::shouldMoveRangeAfterDelete):
+ (WebCore::EditorClientGtk::didBeginEditing):
+ (WebCore::EditorClientGtk::respondToChangedContents):
+ (WebCore::EditorClientGtk::respondToChangedSelection):
+ (WebCore::EditorClientGtk::didEndEditing):
+ (WebCore::EditorClientGtk::didWriteSelectionToPasteboard):
+ (WebCore::EditorClientGtk::didSetSelectionTypesForPasteboard):
+ (WebCore::EditorClientGtk::selectWordBeforeMenuEvent):
+ (WebCore::EditorClientGtk::isEditable):
+ (WebCore::EditorClientGtk::registerCommandForUndo):
+ (WebCore::EditorClientGtk::registerCommandForRedo):
+ (WebCore::EditorClientGtk::clearUndoRedoOperations):
+ (WebCore::EditorClientGtk::canUndo):
+ (WebCore::EditorClientGtk::canRedo):
+ (WebCore::EditorClientGtk::undo):
+ (WebCore::EditorClientGtk::redo):
+ (WebCore::EditorClientGtk::shouldInsertNode):
+ (WebCore::EditorClientGtk::pageDestroyed):
+ (WebCore::EditorClientGtk::smartInsertDeleteEnabled):
+ (WebCore::EditorClientGtk::toggleContinuousSpellChecking):
+ (WebCore::EditorClientGtk::toggleGrammarChecking):
+ (WebCore::EditorClientGtk::handleKeypress):
+ (WebCore::EditorClientGtk::handleInputMethodKeypress):
+ (WebCore::EditorClientGtk::EditorClientGtk):
+ (WebCore::EditorClientGtk::textFieldDidBeginEditing):
+ (WebCore::EditorClientGtk::textFieldDidEndEditing):
+ (WebCore::EditorClientGtk::textDidChangeInTextField):
+ (WebCore::EditorClientGtk::doTextFieldCommandFromEvent):
+ (WebCore::EditorClientGtk::textWillBeDeletedInTextField):
+ (WebCore::EditorClientGtk::textDidChangeInTextArea):
+ (WebCore::EditorClientGtk::ignoreWordInSpellDocument):
+ (WebCore::EditorClientGtk::learnWord):
+ (WebCore::EditorClientGtk::checkSpellingOfString):
+ (WebCore::EditorClientGtk::checkGrammarOfString):
+ (WebCore::EditorClientGtk::updateSpellingUIWithGrammarString):
+ (WebCore::EditorClientGtk::updateSpellingUIWithMisspelledWord):
+ (WebCore::EditorClientGtk::showSpellingUI):
+ (WebCore::EditorClientGtk::spellingUIIsShowing):
+ (WebCore::EditorClientGtk::getGuessesForWord):
+ * WebCoreSupport/EditorClientGtk.h: Renamed from WebCore/platform/gdk/EditorClientGdk.h.
+ * WebCoreSupport/FrameLoaderClientGtk.cpp: Renamed from WebCore/loader/gdk/FrameLoaderClientGdk.cpp.
+ (WebCore::FrameLoaderClientGtk::FrameLoaderClientGtk):
+ (WebCore::FrameLoaderClientGtk::userAgent):
+ (WebCore::FrameLoaderClientGtk::createDocumentLoader):
+ (WebCore::FrameLoaderClientGtk::dispatchWillSubmitForm):
+ (WebCore::FrameLoaderClientGtk::committedLoad):
+ (WebCore::FrameLoaderClientGtk::dispatchDidReceiveAuthenticationChallenge):
+ (WebCore::FrameLoaderClientGtk::dispatchDidCancelAuthenticationChallenge):
+ (WebCore::FrameLoaderClientGtk::dispatchWillSendRequest):
+ (WebCore::FrameLoaderClientGtk::assignIdentifierToInitialRequest):
+ (WebCore::FrameLoaderClientGtk::postProgressStartedNotification):
+ (WebCore::FrameLoaderClientGtk::postProgressEstimateChangedNotification):
+ (WebCore::FrameLoaderClientGtk::postProgressFinishedNotification):
+ (WebCore::FrameLoaderClientGtk::frameLoaderDestroyed):
+ (WebCore::FrameLoaderClientGtk::dispatchDidReceiveResponse):
+ (WebCore::FrameLoaderClientGtk::dispatchDecidePolicyForMIMEType):
+ (WebCore::FrameLoaderClientGtk::dispatchDecidePolicyForNewWindowAction):
+ (WebCore::FrameLoaderClientGtk::dispatchDecidePolicyForNavigationAction):
+ (WebCore::FrameLoaderClientGtk::createPlugin):
+ (WebCore::FrameLoaderClientGtk::createFrame):
+ (WebCore::FrameLoaderClientGtk::redirectDataToPlugin):
+ (WebCore::FrameLoaderClientGtk::createJavaAppletWidget):
+ (WebCore::FrameLoaderClientGtk::objectContentType):
+ (WebCore::FrameLoaderClientGtk::overrideMediaType):
+ (WebCore::FrameLoaderClientGtk::windowObjectCleared):
+ (WebCore::FrameLoaderClientGtk::setMainFrameDocumentReady):
+ (WebCore::FrameLoaderClientGtk::hasWebView):
+ (WebCore::FrameLoaderClientGtk::hasFrameView):
+ (WebCore::FrameLoaderClientGtk::dispatchDidFinishLoad):
+ (WebCore::FrameLoaderClientGtk::frameLoadCompleted):
+ (WebCore::FrameLoaderClientGtk::saveViewStateToItem):
+ (WebCore::FrameLoaderClientGtk::restoreViewState):
+ (WebCore::FrameLoaderClientGtk::shouldGoToHistoryItem):
+ (WebCore::FrameLoaderClientGtk::privateBrowsingEnabled):
+ (WebCore::FrameLoaderClientGtk::makeDocumentView):
+ (WebCore::FrameLoaderClientGtk::makeRepresentation):
+ (WebCore::FrameLoaderClientGtk::forceLayout):
+ (WebCore::FrameLoaderClientGtk::forceLayoutForNonHTML):
+ (WebCore::FrameLoaderClientGtk::setCopiesOnScroll):
+ (WebCore::FrameLoaderClientGtk::detachedFromParent1):
+ (WebCore::FrameLoaderClientGtk::detachedFromParent2):
+ (WebCore::FrameLoaderClientGtk::detachedFromParent3):
+ (WebCore::FrameLoaderClientGtk::detachedFromParent4):
+ (WebCore::FrameLoaderClientGtk::loadedFromCachedPage):
+ (WebCore::FrameLoaderClientGtk::dispatchDidHandleOnloadEvents):
+ (WebCore::FrameLoaderClientGtk::dispatchDidReceiveServerRedirectForProvisionalLoad):
+ (WebCore::FrameLoaderClientGtk::dispatchDidCancelClientRedirect):
+ (WebCore::FrameLoaderClientGtk::dispatchWillPerformClientRedirect):
+ (WebCore::FrameLoaderClientGtk::dispatchDidChangeLocationWithinPage):
+ (WebCore::FrameLoaderClientGtk::dispatchWillClose):
+ (WebCore::FrameLoaderClientGtk::dispatchDidReceiveIcon):
+ (WebCore::FrameLoaderClientGtk::dispatchDidStartProvisionalLoad):
+ (WebCore::FrameLoaderClientGtk::dispatchDidReceiveTitle):
+ (WebCore::FrameLoaderClientGtk::dispatchDidCommitLoad):
+ (WebCore::FrameLoaderClientGtk::dispatchDidFinishDocumentLoad):
+ (WebCore::FrameLoaderClientGtk::dispatchDidFirstLayout):
+ (WebCore::FrameLoaderClientGtk::dispatchShow):
+ (WebCore::FrameLoaderClientGtk::cancelPolicyCheck):
+ (WebCore::FrameLoaderClientGtk::dispatchDidLoadMainResource):
+ (WebCore::FrameLoaderClientGtk::revertToProvisionalState):
+ (WebCore::FrameLoaderClientGtk::clearUnarchivingState):
+ (WebCore::FrameLoaderClientGtk::willChangeTitle):
+ (WebCore::FrameLoaderClientGtk::didChangeTitle):
+ (WebCore::FrameLoaderClientGtk::finishedLoading):
+ (WebCore::FrameLoaderClientGtk::finalSetupForReplace):
+ (WebCore::FrameLoaderClientGtk::setDefersLoading):
+ (WebCore::FrameLoaderClientGtk::isArchiveLoadPending):
+ (WebCore::FrameLoaderClientGtk::cancelPendingArchiveLoad):
+ (WebCore::FrameLoaderClientGtk::clearArchivedResources):
+ (WebCore::FrameLoaderClientGtk::canHandleRequest):
+ (WebCore::FrameLoaderClientGtk::canShowMIMEType):
+ (WebCore::FrameLoaderClientGtk::representationExistsForURLScheme):
+ (WebCore::FrameLoaderClientGtk::generatedMIMETypeForURLScheme):
+ (WebCore::FrameLoaderClientGtk::provisionalLoadStarted):
+ (WebCore::FrameLoaderClientGtk::didFinishLoad):
+ (WebCore::FrameLoaderClientGtk::prepareForDataSourceReplacement):
+ (WebCore::FrameLoaderClientGtk::setTitle):
+ (WebCore::FrameLoaderClientGtk::setDocumentViewFromCachedPage):
+ (WebCore::FrameLoaderClientGtk::dispatchDidReceiveContentLength):
+ (WebCore::FrameLoaderClientGtk::dispatchDidFinishLoading):
+ (WebCore::FrameLoaderClientGtk::dispatchDidFailLoading):
+ (WebCore::FrameLoaderClientGtk::dispatchDidLoadResourceFromMemoryCache):
+ (WebCore::FrameLoaderClientGtk::dispatchDidFailProvisionalLoad):
+ (WebCore::FrameLoaderClientGtk::dispatchDidFailLoad):
+ (WebCore::FrameLoaderClientGtk::download):
+ (WebCore::FrameLoaderClientGtk::cancelledError):
+ (WebCore::FrameLoaderClientGtk::blockedError):
+ (WebCore::FrameLoaderClientGtk::cannotShowURLError):
+ (WebCore::FrameLoaderClientGtk::interruptForPolicyChangeError):
+ (WebCore::FrameLoaderClientGtk::cannotShowMIMETypeError):
+ (WebCore::FrameLoaderClientGtk::fileDoesNotExistError):
+ (WebCore::FrameLoaderClientGtk::shouldFallBack):
+ (WebCore::FrameLoaderClientGtk::willUseArchive):
+ (WebCore::FrameLoaderClientGtk::saveDocumentViewToCachedPage):
+ (WebCore::FrameLoaderClientGtk::canCachePage):
+ (WebCore::FrameLoaderClientGtk::dispatchCreatePage):
+ (WebCore::FrameLoaderClientGtk::dispatchUnableToImplementPolicy):
+ * WebCoreSupport/FrameLoaderClientGtk.h: Renamed from WebCore/loader/gdk/FrameLoaderClientGdk.h.
+ (WebCore::FrameLoaderClientGtk::~FrameLoaderClientGtk):
+ (WebCore::FrameLoaderClientGtk::webFrame):
+ * WebCoreSupport/InspectorClientGtk.cpp: Renamed from WebCore/page/gdk/InspectorClientGdk.cpp.
+ (WebCore::InspectorClientGtk::inspectorDestroyed):
+ (WebCore::InspectorClientGtk::createPage):
+ (WebCore::InspectorClientGtk::showWindow):
+ (WebCore::InspectorClientGtk::closeWindow):
+ (WebCore::InspectorClientGtk::attachWindow):
+ (WebCore::InspectorClientGtk::detachWindow):
+ (WebCore::InspectorClientGtk::highlight):
+ (WebCore::InspectorClientGtk::hideHighlight):
+ (WebCore::InspectorClientGtk::inspectedURLChanged):
+ * WebCoreSupport/InspectorClientGtk.h: Renamed from WebCore/page/gdk/InspectorClientGdk.h.
+
+2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Build fix.
+
+ * Api/webkitgtkframe.cpp:
+
+2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ Remove the create_frame virtual method of WebKitGtkPage. This method was inspired
+ by the Qt port but to be useful for reimplementations WebKitGtkFrameData would need
+ to export/expose WebCore types. WebView doesn't offer such a method so I decided to
+ remove it.
+ Add a internal constructor to WebKitGtkFrame to be used for constructing Sub-Frames. This
+ is currently used by FrameLoaderClientGdk::createFrame.
+
+ * Api/webkitgtkframe.cpp:
+ * Api/webkitgtkframedata.cpp: Removed.
+ * Api/webkitgtkframedata.h: Removed.
+ * Api/webkitgtkpage.cpp:
+ * Api/webkitgtkpage.h:
+ * Api/webkitgtkprivate.h:
+
+2007-08-10 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ Follow the changes of ScrollView in WebCore and call setContainingWindow, set the
+ GtkAdjustment of the GtkLayout and reimplement the set_scroll_adjustments method and pass
+ the GtkAdjustments to ScrollView.
+ This makes having one GdkWindow for the complete FrameTree possible.
+
+
+ * gtk/Api/webkitgtkframe.cpp:
+ * gtk/Api/webkitgtkpage.cpp:
+
+2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Niko.
+
+ We only need to set the Settings of the Page once so do it in
+ WebKitGtkPage instead of WebKitGtkFrame.
+
+ * gtk/Api/webkitgtkframe.cpp:
+ * gtk/Api/webkitgtkpage.cpp:
+
+2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Niko.
+
+ Instead of reimplementing the general event method, reimplement
+ the specific mouse, expose, keyboard event methods.
+
+ Call the finalize implementation of the base class from WebKitGtkPage
+ and WebKitGtkFrame.
+
+ * gtk/Api/webkitgtkframe.cpp:
+ * gtk/Api/webkitgtkpage.cpp:
+
+2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Niko.
+
+ Remove the custom painting in favor of the Widget::paint
+ implementation.
+
+ * gtk/Api/webkitgtkpage.cpp:
+
+2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ Moved code from class FrameGdk into WebKitGtkFrame. Update the
+ webkitgrkprivate.h header file to not include FrameGdk.h.
+
+ * gtk/Api/webkitgtkframe.cpp:
+ * gtk/Api/webkitgtkprivate.h:
+
+2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ Change variable names to follow the Coding-Style. Replace occurences
+ of a_b with aB and place the '*' correctly.
+
+ * gtk/Api/webkitgtkframe.cpp:
+ * gtk/Api/webkitgtkpage.cpp:
+ * gtk/Api/webkitgtkprivate.h:
+
+2007-08-08 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ Reimplement GtkWidget::event and handle the keyboard and mouse
+ events inside WebKitGtkPage.
+
+ * gtk/Api/webkitgtkpage.cpp:
+ (FrameGdkExposeData::frame_gdk_expose_child):
+ (FrameGdkExposeData::webkit_gtk_page_rendering_area_handle_gdk_event):
+ (FrameGdkExposeData::webkit_gtk_page_register_rendering_area_events):
+ (FrameGdkExposeData::webkit_gtk_page_class_init):
+
+2007-08-07 Xan Lopez <xan@gnome.org>
+
+ Reviewed by Mark Rowe.
+
+ http://bugs.webkit.org/show_bug.cgi?id=14815
+ [gtk] API implementation: reload
+
+ * gtk/Api/webkitgtkpage.cpp: Implement the webkit_gtk_page_reload()
+ function.
+
+2007-07-30 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Adam.
+
+ http://bugs.webkit.org/show_bug.cgi?id=14806
+ Implement can_go_backward and can_go_forward in webkitgtkpage.cpp
+
+ * gtk/Api/webkitgtkpage.cpp: Implement webkit_gtk_page_can_go_backward() and
+ webkit_gtk_page_can_go_forward() functions.
+
+2007-07-30 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=14810
+ Bad n_params on load_finished's g_signal_new in webkitgtkpage.cpp
+
+ This is the proper fix for #14810.
+
+ * gtk/Api/webkitgtkframe.cpp:
+ * gtk/Api/webkitgtkpage.cpp: Fix the marshaller type of the "load_finished" signal and
+ correct the class_offset parameters.
+
+2007-07-29 Diego Escalante Urrelo <diegoe@gnome.org>
+
+ Reviewed by Alp Toker.
+
+ http://bugs.webkit.org/show_bug.cgi?id=14810
+ Bad n_params on load_finished's g_signal_new in webkitgtkpage.cpp
+
+ * gtk/Api/webkitgtkpage.cpp: Use a correct n_params value and the corresponding types for
+ them in the "load_finished" signal.
+
+2007-07-22 Holger Hans Peter Freyther <zecke@selfish.org>
+
+ Reviewed by Adam.
+
+ Add the first API and partial implementation of the WebKit/Gtk port as
+ of http://bugs.webkit.org/show_bug.cgi?id=14678.
+
+ The delegates of WebView will be modeled as signals. Delegates like the
+ WebPolicyDelegate will be implemented as signals with default handlers.
+
+ Start moving files to WebKit/gtk/WebCoreSupport.
+
+ * gtk: Added.
+ * gtk/Api: Added.
+ * gtk/Api/headers.pri: Added.
+ * gtk/Api/webkitgtk-marshal.list: Added.
+ * gtk/Api/webkitgtkdefines.h: Added.
+ * gtk/Api/webkitgtkframe.cpp: Added.
+ * gtk/Api/webkitgtkframe.h: Added.
+ * gtk/Api/webkitgtkframedata.cpp: Added.
+ * gtk/Api/webkitgtkframedata.h: Added.
+ * gtk/Api/webkitgtkglobal.cpp: Added.
+ * gtk/Api/webkitgtkglobal.h: Added.
+ * gtk/Api/webkitgtknetworkrequest.cpp: Added.
+ * gtk/Api/webkitgtknetworkrequest.h: Added.
+ * gtk/Api/webkitgtkpage.cpp: Added.
+ * gtk/Api/webkitgtkpage.h: Added.
+ * gtk/Api/webkitgtkprivate.cpp: Added.
+ * gtk/Api/webkitgtkprivate.h: Added.
+ * gtk/Api/webkitgtksettings.cpp: Added.
+ * gtk/Api/webkitgtksettings.h: Added.
+ * gtk/WebCoreSupport: Added.
+ * gtk/WebCoreSupport/ChromeClientGdk.cpp: Added.
+ (WebCore::ChromeClientGdk::ChromeClientGdk):
+ (WebCore::ChromeClientGdk::chromeDestroyed):
+ (WebCore::ChromeClientGdk::windowRect):
+ (WebCore::ChromeClientGdk::setWindowRect):
+ (WebCore::ChromeClientGdk::pageRect):
+ (WebCore::ChromeClientGdk::scaleFactor):
+ (WebCore::ChromeClientGdk::focus):
+ (WebCore::ChromeClientGdk::unfocus):
+ (WebCore::ChromeClientGdk::createWindow):
+ (WebCore::ChromeClientGdk::createModalDialog):
+ (WebCore::ChromeClientGdk::show):
+ (WebCore::ChromeClientGdk::canRunModal):
+ (WebCore::ChromeClientGdk::runModal):
+ (WebCore::ChromeClientGdk::setToolbarsVisible):
+ (WebCore::ChromeClientGdk::toolbarsVisible):
+ (WebCore::ChromeClientGdk::setStatusbarVisible):
+ (WebCore::ChromeClientGdk::statusbarVisible):
+ (WebCore::ChromeClientGdk::setScrollbarsVisible):
+ (WebCore::ChromeClientGdk::scrollbarsVisible):
+ (WebCore::ChromeClientGdk::setMenubarVisible):
+ (WebCore::ChromeClientGdk::menubarVisible):
+ (WebCore::ChromeClientGdk::setResizable):
+ (WebCore::ChromeClientGdk::closeWindowSoon):
+ (WebCore::ChromeClientGdk::canTakeFocus):
+ (WebCore::ChromeClientGdk::takeFocus):
+ (WebCore::ChromeClientGdk::canRunBeforeUnloadConfirmPanel):
+ (WebCore::ChromeClientGdk::runBeforeUnloadConfirmPanel):
+ (WebCore::ChromeClientGdk::addMessageToConsole):
+ (WebCore::ChromeClientGdk::runJavaScriptAlert):
+ (WebCore::ChromeClientGdk::runJavaScriptConfirm):
+ (WebCore::ChromeClientGdk::runJavaScriptPrompt):
+ (WebCore::ChromeClientGdk::setStatusbarText):
+ (WebCore::ChromeClientGdk::shouldInterruptJavaScript):
+ (WebCore::ChromeClientGdk::tabsToLinks):
+ (WebCore::ChromeClientGdk::windowResizerRect):
+ (WebCore::ChromeClientGdk::addToDirtyRegion):
+ (WebCore::ChromeClientGdk::scrollBackingStore):
+ (WebCore::ChromeClientGdk::updateBackingStore):
+ (WebCore::ChromeClientGdk::mouseDidMoveOverElement):
+ (WebCore::ChromeClientGdk::setToolTip):
+ (WebCore::ChromeClientGdk::print):
+ * gtk/WebCoreSupport/ChromeClientGdk.h: Added.
+
diff --git a/Source/WebKit/gtk/GNUmakefile.am b/Source/WebKit/gtk/GNUmakefile.am
new file mode 100644
index 0000000..c69d6ea
--- /dev/null
+++ b/Source/WebKit/gtk/GNUmakefile.am
@@ -0,0 +1,593 @@
+
+# Programs to run the WebKitGtk unit tests
+GTESTER = gtester
+GTESTER_REPORT = gtester-report
+
+lib_LTLIBRARIES += \
+ libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la
+
+nodist_libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOURCES = \
+ $(webkitgtk_built_sources)
+
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_ladir = $(prefix)/include/webkit-@WEBKITGTK_API_VERSION@/webkit
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_HEADERS = \
+ $(webkitgtk_static_h_api)
+
+nodist_libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_HEADERS = \
+ $(webkitgtk_built_h_api) \
+ $(GENSOURCES_WEBKIT)/webkitenumtypes.h
+
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_SOURCES = \
+ $(webcoregtk_sources) \
+ $(webkitgtk_sources)
+
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CXXFLAGS = \
+ $(SYMBOL_VISIBILITY_INLINES) \
+ $(global_cxxflags)
+
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CFLAGS = \
+ $(SYMBOL_VISIBILITY) \
+ $(global_cflags)
+
+# When building WebCore/WebKit, we want WebCore/config.h and NOT JavaScriptCore/config.h,
+# hence, it's important that WebCore/ should come first before JavaScriptCore in the
+# include path.
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_CPPFLAGS = \
+ -DBUILDING_WEBKIT \
+ -DPACKAGE_LOCALE_DIR=\"$(localedir)\" \
+ -DDATA_DIR=\"${datadir}\" \
+ -I$(WebCore)/bindings \
+ -I$(WebCore)/bindings/gobject \
+ -I$(WebKit) \
+ -I$(WebKit)/WebCoreSupport \
+ -I$(WebKit)/webkit \
+ -I$(GENSOURCES_WEBKIT) \
+ -ISource/WebKit/gtk/webkit \
+ $(global_cppflags) \
+ $(webcore_cppflags) \
+ $(webcoregtk_cppflags) \
+ $(javascriptcore_cppflags) \
+ -fno-strict-aliasing \
+ $(HILDON_CPPFLAGS) \
+ $(COVERAGE_CFLAGS) \
+ $(ENCHANT_CFLAGS) \
+ $(GAIL_CFLAGS) \
+ $(GEOCLUE_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GSTREAMER_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(HILDON_CFLAGS) \
+ $(LIBSOUP_CFLAGS) \
+ $(LIBXML_CFLAGS) \
+ $(LIBXSLT_CFLAGS) \
+ $(SQLITE3_CFLAGS) \
+ $(UNICODE_CFLAGS) \
+ $(XT_CFLAGS)
+
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LDFLAGS = \
+ -version-info @LIBWEBKITGTK_VERSION@ \
+ $(version_script) \
+ $(no_undefined)
+
+libwebkitgtk_@WEBKITGTK_API_MAJOR_VERSION@_@WEBKITGTK_API_MINOR_VERSION@_la_LIBADD = \
+ -lpthread \
+ libWebCore.la \
+ libJavaScriptCore.la \
+ $(webcore_ldflags) \
+ $(CAIRO_LIBS) \
+ $(COVERAGE_LDFLAGS) \
+ $(ENCHANT_LIBS) \
+ $(FREETYPE_LIBS) \
+ $(GAIL_LIBS) \
+ $(GEOCLUE_LIBS) \
+ $(GLIB_LIBS) \
+ $(GSTREAMER_LIBS) \
+ $(GTK_LIBS) \
+ $(HILDON_LIBS) \
+ $(JPEG_LIBS) \
+ $(LIBSOUP_LIBS) \
+ $(LIBXML_LIBS) \
+ $(LIBXSLT_LIBS) \
+ $(PANGO_LIBS) \
+ $(PNG_LIBS) \
+ $(SQLITE3_LIBS) \
+ $(UNICODE_LIBS) \
+ $(XT_LIBS) \
+ $(WINMM_LIBS) \
+ $(SHLWAPI_LIBS) \
+ $(OLE32_LIBS)
+
+webkitgtk_static_h_api += \
+ $(srcdir)/Source/WebCore/platform/network/soup/cache/webkit/soup-cache.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkit.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitdefines.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitdownload.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkiterror.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitglobals.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkithittestresult.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitnetworkrequest.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitnetworkresponse.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitsecurityorigin.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitviewportattributes.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebdatabase.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebdatasource.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebframe.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebinspector.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebplugin.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebresource.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebsettings.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h \
+ $(srcdir)/Source/WebKit/gtk/webkit/webkitwebview.h
+
+webkitgtk_built_h_api += \
+ Source/WebKit/gtk/webkit/webkitversion.h
+
+webkitgtk_h_api += \
+ $(webkitgtk_built_h_api) \
+ $(webkitgtk_static_h_api)
+
+# webkitenumtypes.{h,cpp} cannot be in webkitgtk_built_h_api, because
+# the rule that builds it depends on webkitgtk_built_h_api (circular dependency).
+webkitgtk_built_sources += \
+ DerivedSources/webkit/webkitenumtypes.cpp \
+ DerivedSources/webkit/webkitenumtypes.h \
+ DerivedSources/webkit/webkitmarshal.cpp \
+ DerivedSources/webkit/webkitmarshal.h \
+ $(webkitgtk_built_h_api) \
+ $(webkitgtk_gdom_built_sources)
+BUILT_SOURCES += $(webkitgtk_built_sources)
+
+webkitgtk_sources += \
+ Source/WebCore/bindings/gobject/ConvertToUTF8String.cpp \
+ Source/WebCore/bindings/gobject/ConvertToUTF8String.h \
+ Source/WebCore/bindings/gobject/DOMObjectCache.cpp \
+ Source/WebCore/bindings/gobject/DOMObjectCache.h \
+ Source/WebCore/bindings/gobject/GObjectEventListener.cpp \
+ Source/WebCore/bindings/gobject/GObjectEventListener.h \
+ Source/WebCore/bindings/gobject/WebKitDOMBinding.cpp \
+ Source/WebCore/bindings/gobject/WebKitDOMBinding.h \
+ Source/WebCore/bindings/gobject/WebKitDOMEventTarget.cpp \
+ Source/WebCore/bindings/gobject/WebKitDOMEventTarget.h \
+ Source/WebCore/bindings/gobject/WebKitDOMEventTargetPrivate.h \
+ Source/WebCore/bindings/gobject/WebKitDOMObject.cpp \
+ Source/WebCore/bindings/gobject/WebKitDOMObject.h \
+ Source/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.cpp \
+ Source/WebCore/bindings/gobject/WebKitHTMLElementWrapperFactory.h \
+ Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp \
+ Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h \
+ Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h \
+ Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp \
+ Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h \
+ Source/WebKit/gtk/webkit/webkitapplicationcache.cpp \
+ Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h \
+ Source/WebKit/gtk/webkit/webkitdownload.cpp \
+ Source/WebKit/gtk/webkit/webkitdownloadprivate.h \
+ Source/WebKit/gtk/webkit/webkiterror.cpp \
+ Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp \
+ Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h \
+ Source/WebKit/gtk/webkit/webkitglobals.cpp \
+ Source/WebKit/gtk/webkit/webkitglobals.h \
+ Source/WebKit/gtk/webkit/webkitglobalsprivate.h \
+ Source/WebKit/gtk/webkit/webkithittestresult.cpp \
+ Source/WebKit/gtk/webkit/webkithittestresultprivate.h \
+ Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp \
+ Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h \
+ Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp \
+ Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h \
+ Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp \
+ Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h \
+ Source/WebKit/gtk/webkit/webkitsoupauthdialog.c \
+ Source/WebKit/gtk/webkit/webkitversion.cpp \
+ Source/WebKit/gtk/webkit/webkitviewportattributes.cpp \
+ Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp \
+ Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebdatabase.cpp \
+ Source/WebKit/gtk/webkit/webkitwebdatasource.cpp \
+ Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebframe.cpp \
+ Source/WebKit/gtk/webkit/webkitwebframeprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp \
+ Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebinspector.cpp \
+ Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp \
+ Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp \
+ Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebresource.cpp \
+ Source/WebKit/gtk/webkit/webkitwebresourceprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebplugin.cpp \
+ Source/WebKit/gtk/webkit/webkitwebpluginprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp \
+ Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebsettings.cpp \
+ Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebview.cpp \
+ Source/WebKit/gtk/webkit/webkitwebviewprivate.h \
+ Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp \
+ Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = Source/WebKit/gtk/@WEBKITGTK_PC_NAME@-@WEBKITGTK_API_VERSION@.pc
+
+if ENABLE_INTROSPECTION
+
+JSCore-@WEBKITGTK_API_VERSION@.gir: $(top_builddir)/Source/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir
+ $(AM_V_GEN)cp $(top_builddir)/Source/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir $(top_builddir)/
+
+JSCORE_GIRSOURCES += JSCore-@WEBKITGTK_API_VERSION@.gir
+WEBKIT_GIRSOURCES += WebKit-@WEBKITGTK_API_VERSION@.gir
+
+$(WEBKIT_GIRSOURCES): $(G_IR_SCANNER) $(JSCORE_GIRSOURCES) libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la
+ $(AM_V_GEN)$(G_IR_SCANNER) -v --warn-all \
+ --symbol-prefix=webkit \
+ --identifier-prefix=WebKit \
+ --namespace=WebKit \
+ --nsversion=@WEBKITGTK_API_VERSION@ \
+ --include=GObject-2.0 \
+ --include=Gtk-@GTK_API_VERSION@ \
+ --include=JSCore-@WEBKITGTK_API_VERSION@ \
+ --include=Soup-2.4 \
+ --library=webkitgtk-@WEBKITGTK_API_VERSION@ \
+ --libtool="$(LIBTOOL)" \
+ --pkg=gobject-2.0 \
+ --pkg=gtk+-@GTK_API_VERSION@ \
+ --pkg=libsoup-2.4 \
+ --output=$@ \
+ --add-include-path=$(WebKit) \
+ --add-include-path=$(top_builddir) \
+ -I$(srcdir)/Source \
+ -I$(top_srcdir)/Source/WebCore/platform/network/soup/cache \
+ -I$(WebKit) \
+ -I$(GENSOURCES) \
+ -I$(GENSOURCES_WEBKIT) \
+ -I$(top_builddir)/Source/WebKit/gtk \
+ -I$(top_srcdir)/Source/JavaScriptCore/ForwardingHeaders \
+ -I$(top_srcdir) \
+ $(GENSOURCES_WEBKIT)/webkitenumtypes.h \
+ $(webkitgtk_h_api) \
+ $(WebKit)/webkit/*.cpp \
+ $(WebKit)/webkit/*.c
+
+girdir = $(datadir)/gir-1.0
+gir_DATA = $(WEBKIT_GIRSOURCES) $(JSCORE_GIRSOURCES)
+
+typelibsdir += $(libdir)/girepository-1.0
+typelibs_DATA += $(JSCORE_GIRSOURCES:.gir=.typelib) $(WEBKIT_GIRSOURCES:.gir=.typelib)
+
+%.typelib: %.gir $(G_IR_COMPILER)
+ $(AM_V_GEN)$(G_IR_COMPILER) --includedir $(WebKit) --includedir $(top_builddir) $< -o $@
+
+CLEANFILES += $(JSCORE_GIRSOURCES) $(WEBKIT_GIRSOURCES) $(typelibs_DATA)
+
+endif
+
+EXTRA_DIST += $(top_builddir)/Source/WebKit/gtk/JSCore-@WEBKITGTK_API_VERSION@.gir
+
+WEBKIT_MARSHAL_LIST = $(WebKit)/webkitmarshal.list
+$(GENSOURCES_WEBKIT)/webkitmarshal.cpp: stamp-webkitmarshal.cpp
+ @true
+$(GENSOURCES_WEBKIT)/webkitmarshal.h: stamp-webkitmarshal.h
+ @true
+
+stamp-webkitmarshal.cpp: $(WEBKIT_MARSHAL_LIST)
+ $(AM_V_GEN) echo "extern \"C\" {" > $(GENSOURCES_WEBKIT)/webkitmarshal.cpp && \
+ $(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --body >> $(GENSOURCES_WEBKIT)/webkitmarshal.cpp && \
+ echo '}' >> $(GENSOURCES_WEBKIT)/webkitmarshal.cpp && \
+ echo timestamp > $(@F)
+
+stamp-webkitmarshal.h: $(WEBKIT_MARSHAL_LIST)
+ $(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=webkit_marshal $(WEBKIT_MARSHAL_LIST) --header > $(GENSOURCES_WEBKIT)/webkitmarshal.h && \
+ echo timestamp > $(@F)
+
+$(GENSOURCES_WEBKIT)/webkitenumtypes.h: stamp-webkitenumtypes.h
+ @true
+stamp-webkitenumtypes.h: $(webkitgtk_h_api) $(WebKit)/GNUmakefile.am
+ $(AM_V_GEN)glib-mkenums \
+ --fhead "#ifndef WEBKIT_ENUM_TYPES_H\n" \
+ --fhead "#define WEBKIT_ENUM_TYPES_H\n\n" \
+ --fhead "#include <glib-object.h>\n\n" \
+ --fhead "#include <webkit/webkitdefines.h>\n\n" \
+ --fhead "G_BEGIN_DECLS\n\n" \
+ --ftail "G_END_DECLS\n\n" \
+ --ftail "#endif\n" \
+ --fprod "#include <webkit/@basename@>\n\n" \
+ --eprod "#define WEBKIT_TYPE_@ENUMSHORT@ @enum_name@_get_type()\n\n" \
+ --eprod "WEBKIT_API GType\n@enum_name@_get_type(void);\n\n" \
+ $(webkitgtk_h_api) | \
+ sed 's,web_kit,webkit,' | \
+ sed 's,WEBKIT_TYPE_KIT,WEBKIT_TYPE,' \
+ > xgen-gth \
+ && (cmp -s xgen-gth $(GENSOURCES_WEBKIT)/webkitenumtypes.h || cp xgen-gth $(GENSOURCES_WEBKIT)/webkitenumtypes.h) \
+ && rm -f xgen-gth \
+ && echo timestamp > $(@F)
+
+$(GENSOURCES_WEBKIT)/webkitenumtypes.cpp: $(webkitgtk_h_api) $(WebKit)/GNUmakefile.am
+ $(AM_V_GEN)glib-mkenums \
+ --fhead "#include <config.h>\n" \
+ --fhead "#include <glib-object.h>\n" \
+ --fhead "#include \"$(GENSOURCES_WEBKIT)/webkitenumtypes.h\"\n\n" \
+ --fhead "extern \"C\" {\n\n" \
+ --fprod "\n/* enumerations from \"@filename@\" */" \
+ --vhead "static const G@Type@Value _@enum_name@_values[] = {" \
+ --vprod " { @VALUENAME@, \"@VALUENAME@\", \"@valuenick@\" }," \
+ --vtail " { 0, NULL, NULL }\n};\n\n" \
+ --vtail "GType @enum_name@_get_type(void)\n{\n" \
+ --vtail " static GType type = 0;\n\n" \
+ --vtail " if (!type)\n" \
+ --vtail " type = g_@type@_register_static(\"@EnumName@\", _@enum_name@_values);\n\n" \
+ --vtail " return type;\n}\n\n" \
+ --ftail "}\n" \
+ $(webkitgtk_h_api) | \
+ sed 's,web_kit,webkit,' \
+ > xgen-gtc \
+ && cp xgen-gtc $@ \
+ && rm -f xgen-gtc
+
+# GSettings
+if USE_GSETTINGS
+gsettings_SCHEMAS = $(top_builddir)/Source/WebKit/gtk/org.webkitgtk-@WEBKITGTK_API_VERSION@.gschema.xml
+@GSETTINGS_RULES@
+endif
+
+EXTRA_DIST += \
+ $(WebKit)/ChangeLog \
+ $(WebKit)/NEWS \
+ $(WebKit)/webkitmarshal.list \
+ $(WebKit)/docs/GNUmakefile.* \
+ $(WebKit)/docs/webkitenvironment.xml \
+ $(WebKit)/docs/webkitgtk-docs.sgml \
+ $(WebKit)/docs/webkitgtk-sections.txt \
+ $(WebKit)/docs/version.xml.in \
+ $(WebKit)/po/* \
+ $(WebKit)/resources/* \
+ $(WebKit)/tests/resources/* \
+ $(WebKit)/tests/test_utils.h \
+ $(WebKit)/org.webkitgtk.gschema.xml.in
+
+# extra resource files
+resourcesdir = ${datadir}/webkit-@WEBKITGTK_API_VERSION@/resources
+dist_resources_DATA = \
+ $(shell ls $(srcdir)/Source/WebKit/gtk/resources/*.html)
+
+# Build unit tests
+noinst_PROGRAMS += $(TEST_PROGS)
+webkit_tests_cflags = \
+ -fno-strict-aliasing \
+ -I$(srcdir)/Source/JavaScriptCore/ForwardingHeaders \
+ -I$(WebCore)/platform/network/soup/cache \
+ -I$(WebKit) \
+ -I$(GENSOURCES) \
+ -I$(top_builddir)/Source/WebKit/gtk \
+ -I$(top_srcdir)/Source/WebCore/bindings \
+ -I$(top_srcdir)/Source/WebCore/bindings/gobject \
+ $(global_cppflags) \
+ $(global_cflags) \
+ $(javascriptcore_cppflags) \
+ $(GLIB_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(LIBSOUP_CFLAGS)
+
+webkit_tests_ldadd = \
+ libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
+ $(GTK_LIBS) \
+ $(GLIB_LIBS) \
+ $(LIBSOUP_LIBS)
+
+webkit_tests_ldflags = \
+ -no-install \
+ -no-fast-install
+
+TEST_PROGS += \
+ Programs/unittests/testdomdocument \
+ Programs/unittests/testdomdomwindow \
+ Programs/unittests/testdomnode \
+ Programs/unittests/testhttpbackend \
+ Programs/unittests/testloading \
+ Programs/unittests/testglobals \
+ Programs/unittests/testmimehandling \
+ Programs/unittests/testnetworkrequest \
+ Programs/unittests/testnetworkresponse \
+ Programs/unittests/testwebframe \
+ Programs/unittests/testwebbackforwardlist \
+ Programs/unittests/testwebhistoryitem \
+ Programs/unittests/testwindow \
+ Programs/unittests/testdownload \
+ Programs/unittests/testatk \
+ Programs/unittests/testatkroles \
+ Programs/unittests/testhittestresult \
+ Programs/unittests/testwebsettings \
+ Programs/unittests/testwebresource \
+ Programs/unittests/testwebdatasource \
+ Programs/unittests/testwebplugindatabase \
+ Programs/unittests/testwebview \
+ Programs/unittests/testkeyevents \
+ Programs/unittests/testcopyandpaste
+
+# Add additional tests here
+Programs_unittests_testdomdocument_SOURCES = Source/WebKit/gtk/tests/testdomdocument.c
+Programs_unittests_testdomdocument_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testdomdocument_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testdomdocument_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testdomdomwindow_SOURCES = Source/WebKit/gtk/tests/testdomdomwindow.c
+Programs_unittests_testdomdomwindow_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testdomdomwindow_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testdomdomwindow_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testdomnode_SOURCES = Source/WebKit/gtk/tests/testdomnode.c
+Programs_unittests_testdomnode_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testdomnode_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testdomnode_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testhttpbackend_SOURCES = Source/WebKit/gtk/tests/testhttpbackend.c
+Programs_unittests_testhttpbackend_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testhttpbackend_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testhttpbackend_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testglobals_SOURCES = Source/WebKit/gtk/tests/testglobals.c
+Programs_unittests_testglobals_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testglobals_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testglobals_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testloading_SOURCES = Source/WebKit/gtk/tests/testloading.c
+Programs_unittests_testloading_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testloading_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testloading_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testmimehandling_SOURCES = Source/WebKit/gtk/tests/testmimehandling.c Source/WebKit/gtk/tests/test_utils.c
+Programs_unittests_testmimehandling_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testmimehandling_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testmimehandling_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testnetworkrequest_SOURCES = Source/WebKit/gtk/tests/testnetworkrequest.c
+Programs_unittests_testnetworkrequest_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testnetworkrequest_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testnetworkrequest_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testnetworkresponse_SOURCES = Source/WebKit/gtk/tests/testnetworkresponse.c
+Programs_unittests_testnetworkresponse_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testnetworkresponse_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testnetworkresponse_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testwebframe_SOURCES = Source/WebKit/gtk/tests/testwebframe.c
+Programs_unittests_testwebframe_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwebframe_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testwebframe_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testwebplugindatabase_SOURCES = Source/WebKit/gtk/tests/testwebplugindatabase.c
+Programs_unittests_testwebplugindatabase_CFLAGS = -DTEST_PLUGIN_DIR=\"${shell pwd}/${top_builddir}/TestNetscapePlugin/.libs\" $(webkit_tests_cflags)
+Programs_unittests_testwebplugindatabase_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testwebplugindatabase_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testwebbackforwardlist_SOURCES = Source/WebKit/gtk/tests/testwebbackforwardlist.c
+Programs_unittests_testwebbackforwardlist_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwebbackforwardlist_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testwebbackforwardlist_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testwebhistoryitem_SOURCES = Source/WebKit/gtk/tests/testwebhistoryitem.c
+Programs_unittests_testwebhistoryitem_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwebhistoryitem_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testwebhistoryitem_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testwindow_SOURCES = Source/WebKit/gtk/tests/testwindow.c
+Programs_unittests_testwindow_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwindow_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testwindow_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testdownload_SOURCES = Source/WebKit/gtk/tests/testdownload.c
+Programs_unittests_testdownload_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testdownload_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testdownload_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testatk_SOURCES = Source/WebKit/gtk/tests/testatk.c
+Programs_unittests_testatk_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testatk_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testatk_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testatkroles_SOURCES = Source/WebKit/gtk/tests/testatkroles.c
+Programs_unittests_testatkroles_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testatkroles_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testatkroles_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testwebsettings_SOURCES = Source/WebKit/gtk/tests/testwebsettings.c
+Programs_unittests_testwebsettings_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwebsettings_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testwebsettings_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testwebresource_SOURCES = Source/WebKit/gtk/tests/testwebresource.c
+Programs_unittests_testwebresource_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwebresource_LDADD = $(webkit_tests_ldadd)
+
+Programs_unittests_testwebdatasource_SOURCES = Source/WebKit/gtk/tests/testwebdatasource.c
+Programs_unittests_testwebdatasource_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwebdatasource_LDADD = $(webkit_tests_ldadd)
+
+Programs_unittests_testwebview_SOURCES = Source/WebKit/gtk/tests/testwebview.c Source/WebKit/gtk/tests/test_utils.c
+Programs_unittests_testwebview_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testwebview_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testwebview_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testhittestresult_SOURCES = Source/WebKit/gtk/tests/testhittestresult.c
+Programs_unittests_testhittestresult_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testhittestresult_LDADD = $(webkit_tests_ldadd)
+
+Programs_unittests_testkeyevents_SOURCES = Source/WebKit/gtk/tests/testkeyevents.c
+Programs_unittests_testkeyevents_CFLAGS = $(webkit_tests_cflags)
+Programs_unittests_testkeyevents_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testkeyevents_LDFLAGS = $(webkit_tests_ldflags)
+
+Programs_unittests_testcopyandpaste_SOURCES = Source/WebKit/gtk/tests/testcopyandpaste.c \
+ Source/WebCore/platform/gtk/GtkVersioning.c
+Programs_unittests_testcopyandpaste_CFLAGS = $(webkit_tests_cflags) \
+ -I$(srcdir)/Source/WebCore/platform/gtk \
+ -I$(srcdir)/Source/WebCore
+Programs_unittests_testcopyandpaste_LDADD = $(webkit_tests_ldadd)
+Programs_unittests_testcopyandpaste_LDFLAGS = $(webkit_tests_ldflags)
+
+# Project-wide clean rules
+# Files that will be cleaned
+CLEANFILES += \
+ $(BUILT_SOURCES) \
+ $(top_builddir)/stamp-webkitmarshal.cpp \
+ $(top_builddir)/stamp-webkitmarshal.h \
+ $(top_builddir)/stamp-webkitenumtypes.cpp \
+ $(top_builddir)/stamp-webkitenumtypes.h \
+ $(top_builddir)/Programs/GtkLauncher
+
+DISTCLEANFILES += \
+ $(top_builddir)/Source/WebKit/gtk/docs/version.xml \
+ $(top_builddir)/Source/WebKit/gtk/docs/GNUmakefile \
+ $(top_builddir)/Source/WebKit/gtk/@WEBKITGTK_PC_NAME@-@WEBKITGTK_API_VERSION@.pc \
+ $(top_builddir)/Source/WebKit/gtk/org.webkitgtk-@WEBKITGTK_API_VERSION@.gschema.xml \
+ $(top_builddir)/Source/WebKit/gtk/webkit/webkitversion.h
+
+dist-hook:
+ cp $(WebKit)/NEWS $(distdir)
+install-data-local: po-install-data-local
+installdirs-data-local: po-installdirs-data-local
+uninstall-local: po-uninstall-local
+
+# Run all tests in cwd
+# FIXME: we should run this under xvfb
+test: $(TEST_PROGS)
+ $(GTESTER) --verbose $(TEST_PROGS);
+
+# test-report: run tests in cwd and generate report
+# full-report: run tests in cwd with -m perf and -m slow and generate report
+# perf-report: run tests in cwd with -m perf and generate report
+test-report full-report perf-report: $(TEST_PROGS)
+ @ case $@ in \
+ test-report) test_options="-k";; \
+ full-report) test_options="-k -m=perf";; \
+ perf-report) test_options="-k -m=perf -m=slow";; \
+ esac ; \
+ $(GTESTER) --verbose $$test_options -o test-report.xml $(TEST_PROGS); \
+ $(GTESTER_REPORT) test-report.xml > test-report.html ;
+
+.PHONY: test test-report perf-report full-report
+check-local: test
diff --git a/Source/WebKit/gtk/JSCore.gir.in b/Source/WebKit/gtk/JSCore.gir.in
new file mode 100644
index 0000000..e143982
--- /dev/null
+++ b/Source/WebKit/gtk/JSCore.gir.in
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<repository version="1.2"
+ xmlns="http://www.gtk.org/introspection/core/1.0"
+ xmlns:c="http://www.gtk.org/introspection/c/1.0">
+ <namespace name="JSCore" version="@WEBKITGTK_API_VERSION@" shared-library="webkitgtk-@WEBKITGTK_API_VERSION@">
+ <alias name="GlobalContextRef" target="none">
+ <type name="JSGlobalContextRef" c:type="JSGlobalContextRef"/>
+ </alias>
+ <alias name="ObjectRef" target="none">
+ <type name="JSObjectRef" c:type="JSObjectRef"/>
+ </alias>
+ <function name="EvaluateScript" c:identifier="JSEvaluateScript">
+ <return-value transfer-ownership="none">
+ <type name="none" c:type="void"/>
+ </return-value>
+ <parameters>
+ </parameters>
+ </function>
+ </namespace>
+</repository>
diff --git a/Source/WebKit/gtk/NEWS b/Source/WebKit/gtk/NEWS
new file mode 100644
index 0000000..cf77371
--- /dev/null
+++ b/Source/WebKit/gtk/NEWS
@@ -0,0 +1,631 @@
+=================
+WebKitGTK+ 1.3.10
+=================
+
+What's new in WebKitGTK+ 1.3.10?
+
+ - Port form control theming code to GtkStyleContext.
+ - Add a new 'make jsc' target to build only JavaScriptCore and the jsc binary.
+ - Initial support for drag-and-drop file uploads.
+ - WOFF font face support.
+ - Many other bugfixes.
+
+================
+WebKitGTK+ 1.3.9
+================
+
+What's new in WebKitGTK+ 1.3.9?
+
+ - Compilation fixes for the final GTK+ 2.91.7 release.
+
+================
+WebKitGTK+ 1.3.8
+================
+
+What's new in WebKitGTK+ 1.3.8?
+
+ - New WebKitWebPluginDatabase and WebKitWebPlugin classes for plugin
+ management.
+ - The usual fixes for GTK+ 3.x API changes. We are still using the
+ old GtkStyle APIs, that should be gone by the next release.
+ - Add support for Mozilla-style JS fullscreen API.
+ - Add support for the viewport metatag.
+ - Many other bugfixes.
+
+================
+WebKitGTK+ 1.3.7
+================
+
+What's new in WebKitGTK+ 1.3.7?
+
+ - Fix error pages template's not being filled properly.
+ - Fix context menu activation through keyboard.
+ - Add automatic garbage collection for most GObject DOM objects (all
+ those that are actually in the DOM tree). This gets rid of most of
+ the leaks when using the bindings.
+ - Add an Inspector API to inspect a DOM node.
+ - Tons of a11y bugfixes.
+ - Tons of fixes for the in-tree SoupCache, should work much better
+ now.
+ - Many other bugfixes.
+
+================
+WebKitGTK+ 1.3.6
+================
+
+What's new in WebKitGTK+ 1.3.6?
+
+ - Update to compile with GTK+ 3.x 2.91.4.
+ - Many, many other bugfixes.
+
+================
+WebKitGTK+ 1.3.5
+================
+
+What's new in WebKitGTK+ 1.3.5?
+
+ - Add a HTTP cache implementation. This will be eventually
+ integrated in libsoup itself, but for now it can be accessed from
+ WebKit through the WebKitSoupCache APIs.
+ - Updated to work with GTK+ 3.x 2.91.1.
+ - Add frame-flattening support, used by some mobile browser sto
+ merge all frames in a page into a continuous view.
+ - Many other bugfixes.
+
+================
+WebKitGTK+ 1.3.4
+================
+
+What's new in WebKitGTK+ 1.3.4?
+
+ - File reader/writer APIs are now enabled.
+ - The javascript JIT is now enabled by default on ARM.
+ - Clipboard data is no longer lost when the process exists.
+ - Image DnD support.
+ - GSettings support to save/restore Web Inspector settings.
+ - Add WebSocket support, now enabled by default.
+ - Added WebKitWebView::frame-created signal, emitted when a frame
+ other than the main frame is created in a view.
+ - Added WebKitWebView::view-mode, holding information about how the
+ view is being presented. See the property documentation and
+ http://www.w3.org/TR/view-mode/ for details.
+ - Fullscreen support for HTML5 media player.
+ - Identify as WebKit/Safari in Google domains when
+ enable-site-specific-quirks is activated. Otherwise we'll get a
+ degraded user experience due to their poor UA detection
+ algorihtms.
+ - Added simple media playback options in the context menu for the
+ media elements.
+ - Update (and require) to work with gobjet-introspection 0.9.5.
+ - Updated to work with GTK+ 3.x 2.90.7 when in GTK+ 3.x mode.
+ - Make --disable-jit actually work.
+ - Add --enable-opcode-stats configure flag. When enabled, statistics
+ about opcode generation will be printed by JSC.
+ - Many a11y fixes, particularly in the AtkText interface.
+ - CSS box shadows render much faster in many cases.
+ - Many other bugfixes.
+
+================
+WebKitGTK+ 1.3.3
+================
+
+What's new in WebKitGTK+ 1.3.3?
+
+ - Fixes to compile with latest GTK+ 2.90.x.
+ - Add support for dropping content in WebKitWebViews.
+ - Many other bugfixes.
+
+================
+WebKitGTK+ 1.3.2
+================
+
+What's new in WebKitGTK+ 1.3.2?
+
+*** This release is an ABI break ***
+
+The library has been renamed to libwebkitgtk, so you'll need to
+recompile your applications when upgrading to 1.3.2.
+
+ - Add support for GTK+ 3.x. A new configure flag, --with-gtk, has
+ been added, which allows to control which GTK+ version you want to
+ build against. The default value is '2.0', for GTK+ 2.x
+ support. With '3.0' the library will be compiled against GTK+ 3.x
+ (2.90.4 or newer required). In the 3.x mode the .pc file has been
+ renamed from webkit-X.X.pc to webkitgtk-X.X.pc, so you'll need to
+ update your autotools setup accordingly.
+ - Many fixes for the DOM bindings, including support to dispatch
+ events to any Node through webkit_event_target_dispatch_event.
+ - Added a 'inner-node' property to WebKitHitTestResult, carrying the
+ DOM node where the hit test happened.
+ - Many DnD fixes, including a fix for the infamous hang-of-death
+ while dragging the mouse.
+ - Support for <input type="range">.
+ - Many other bugfixes.
+
+================
+WebKitGTK+ 1.3.1
+================
+
+What's new in WebKitGTK+ 1.3.1?
+
+ - Initial support for GObject DOM bindings. Present in this release
+ is a substantial subset of the basic DOM APIs (Document, HTML
+ elements, Node, etc) including access to the DOM events through
+ GObject signals. Keep in mind that all the APIs are still
+ unstable, and will probably be subject to changes before the next
+ stable release.
+ - Add webkit_web_back_forward_list_clear, to completely clear the
+ BackForward list.
+ - Lots of improvements in DOM clipboard and drag-drop access.
+ - Add support for GTK+ key themes.
+ - Significant improvements in a11y, including improved role support
+ and many bugfixes.
+
+=================
+WebKitGTK+ 1.1.90
+=================
+
+What's new in WebKitGTK+ 1.1.90?
+
+ - Display server side messages during HTTP auth, since they
+ sometimes contain important information for the authentication
+ process.
+ - Reduce creation time for WebKitWebView widgets by reusing
+ dictionary structs used for spell-checking instead of creating a
+ new one for each instance.
+ - Implement WebKitWebView::geolocation-policy-decision-requested,
+ emitted when a frame inside the WebView wants to get its position
+ through geolocation.
+ - Add WebKitWebSettings::enable-spatial-navigation to control
+ whether Spatial Navigation is enabled or not. Spatial Navigation
+ allows the user to move through the elements in a page using only
+ the keyboard; this is similar to caret browsing, but with less
+ focus on accessibility since instead of presenting the exact
+ layout of the page to the user a more "logical" way of browsing
+ through its contents is allowed. A specification of this feature
+ can be seen at
+ http://www.w3.org/TR/WICD/#current-focus-point-algorithm
+ - Add a new build option, --enable-fast-mobile-scrolling. At the
+ moment this only disables fixed backgrounds when there are no
+ other fixed elements in a page, since they generally make
+ scrolling very slow and thus are a big burden in some mobile
+ environments.
+ - GTK+ Input Method support has received a big overhaul, and most of
+ them should work pretty well now.
+ - All known redraw issues in the plugin support (especially with the
+ Java plugin) have been fixed.
+ - Various fixes to the MediaPlayer code to improve responsiveness
+ and avoid lagging on position reporting.
+ - Lots of bugfixes and other improvements.
+
+=================
+WebKitGTK+ 1.1.22
+=================
+
+What's new in WebKitGTK+ 1.1.22?
+
+ - Preliminary support for Java plugins. Basic functionality is
+ there, but there are still a few rough edges. Also newly
+ introduced is a new WebKitWebSetting, 'enable-java-applet', which
+ controls whether WebKit will recognize the non-standard <applet>
+ tag.
+ - Add WebKitWebSettings::auto-resize-window; when enabled, WebKit
+ will act upon the DOM methods that change the size and/or position
+ of the window containing a WebView (window.{moveTo, resizeTo,
+ moveBy, resizeBy}).
+ - Add WebKitWebSettings::enable-file-access-from-file-uris; when
+ enabled, each file:// URI will be assigned its own security
+ domain.
+ - Lots of bugfixes, especially in the PageCache support.
+
+=================
+WebKitGTK+ 1.1.21
+=================
+
+What's new in WebKitGTK+ 1.1.21?
+
+ - New custom-made GStreamer source element that uses the WebCore
+ network layer to download media data; this makes sure any headers
+ and cookies will automatically get added when making requests.
+ - WebKit will now let libsoup know who the first party for a given
+ message is, making it possible to implement accept/deny policies in
+ Soup.
+ - The usual stream of fixes, and improvements
+
+=================
+WebKitGTK+ 1.1.20
+=================
+
+What's new in WebKitGTK+ 1.1.20?
+
+ - Fixes to the HTML5 Media Player infrastructure to satisfy sites
+ that require cookies, and Referer to be sent; this makes
+ WebKitGTK+ able to support the new HTML5 support added to Youtube,
+ and Vimeo, for instance.
+ - Windowless plugin support is finally here, making it possible to
+ get plugins to behave on various web pages.
+ - The usual stream of fixes, and improvements
+
+=================
+WebKitGTK+ 1.1.19
+=================
+
+What's new in WebKitGTK+ 1.1.19?
+
+ - Improvements to AtkText implementation
+ - RGBA colormap support has been added
+ - Improvements to the HTML5 media player
+ - Crashes related to clipboard handling, which were hitting many
+ users and seemed to be random have been fixed
+
+=================
+WebKitGTK+ 1.1.18
+=================
+
+What's new in WebKitGTK+ 1.1.18?
+
+ - Add methods to set and get a cache model in WebKitGTK+. We offer
+ two possibilites: document viewer (no caches are used) and browser
+ (similar to the previous defaults).
+ - Add WebKitWebSettings::enable-page-cache. Controls whether the
+ Page Cache is enabled or not. For details about what the page
+ cache is and does see
+ http://webkit.org/blog/427/webkit-page-cache-i-the-basics/
+ The page cache is disabled by default, since the gtk+ port still
+ presents some small bugs when it's enabled.
+ - Add WebKitWebSettings::enable-site-specific-quirks. Controls
+ whether a series of page-specific workarounds are used by WebKit.
+ - Use Content-Encoding support available in libsoup 2.28.2 and
+ newer.
+ - Add WebKitWebSettings::enable-default-context-menu. Controls
+ whether webkitgtk+ will show a default context menu on right click
+ in the view. Note that even with the property set to FALSE right
+ clicks can be handled by the page, either by actions or by
+ ad-hoc in-page context menus.
+ - Make the WebKitWebView::icon-loaded signal carry a string with the
+ favicon's URI. This is an API break, but the signal already had a
+ broken signature and was useless anyway, so it's extremely
+ unlikely that anybody was using it. Also, add the 'icon-uri'
+ property to the view, holding the URI for its current favicon.
+ - Respect Content-Disposition header in downloads (fixes downloads
+ in gmail).
+ - Various accessibility improvements.
+ - Many bugfixes.
+
+=================
+WebKitGTK+ 1.1.17
+=================
+
+What's new in WebKitGTK+ 1.1.17?
+
+ - New APIs to show and close the web inspector and to inspect an
+ element at the given coordinates.
+ - New property, WebKitWebSettings::tab-key-cycles-through-elements,
+ controls whether TAB is simply interpreted as another keystroke or
+ is used to cycle through the elements in a page.
+ - Many a11y improvements.
+ - The usual amount of random bugfixes.
+
+=================
+WebKitGTK+ 1.1.16
+=================
+
+What's new in WebKitGTK+ 1.1.16?
+
+ - Add optional support to generate the gobject-introspection
+ gir/typelib files. Enable with --enable-introspection, it's off by
+ default.
+ - Add a new load status value, WEBKIT_LOAD_FAILED, emitted when
+ there's an error during the load process. This is the natural
+ companion to WEBKIT_LOAD_FINISHED, which is only emitted when the
+ load finished succesfuly.
+ - Ensure that keyboard events filtered by GtkIMContext still create
+ the proper DOM events.
+ - Many a11y improvements: caret browsing fixes, expose heading
+ levels, more accessible roles supported, more work in correctly
+ showing the element's ancestry list, improved support for lists,
+ etc.
+ - Many improvements to our media support.
+ - Add a new setting to control DOM pastes
+ (document.execCommand("Paste"))
+ - Many, many bugfixes all over the place.
+
+=================
+WebKitGTK+ 1.1.15
+=================
+
+What's new in WebKitGTK+ 1.1.15?
+
+ - New API to get the subresources from a WebKitWebDataSource. This
+ provides a way of accessing all the resources that compose the
+ view to which the data source is attached.
+ - A new function, webkit_web_view_get_hit_test_result, which allows
+ to do a 'hit test' on the coordinates specified by a mouse
+ event. A hit test provides context information about that point in
+ the document, like whether it's an image, a link, an input box,
+ etc.
+ - Our DumpRenderTree implementation now supports eventSender, which
+ allows us to run many more LayoutTests and make WebKitGTK+ more
+ stable and feature-complete.
+ - JSNES runs 6x faster: http://trac.webkit.org/changeset/48573
+ - The usual small improvements and bugfixes.
+
+=================
+WebKitGTK+ 1.1.14
+=================
+
+What's new in WebKitGTK+ 1.1.14?
+
+ - New API has been added to WebKitWebFrame to allow applying
+ scrollbars policy as requested by web applications to the main
+ frame; if the parent of the WebKitWebView widget is a
+ GtkScrolledWindow, policy is applied by the default handler.
+ - A new API has been added to help dealing with the various
+ resources that are downloaded to compose the final rendering; you
+ can now obtain the source code for a page that is loaded, for
+ instance.
+ - A new property has been added to WebKitWebView to allow setting it
+ to "View Source" mode.
+ - HTML5 database has gained API to manage the individual databases,
+ including usage and quota.
+ - A new signal `resource-request-starting' has been added to the
+ WebKitWebView to allow modification of outgoing requests for every
+ resource.
+ - Connection limit has been increased to 60 total connections, 6
+ per-host, matching other browsers more closely; this seems to have
+ improved loading time of some sites.
+ - Undo/redo support has been added to editable texts.
+ - The usual stream of small improvements and bug fixes.
+
+=================
+WebKitGTK+ 1.1.13
+=================
+
+What's new in WebKitGTK+ 1.1.13?
+
+ - GNOME Keyring support was removed in favor of the new Password
+ Manager soup feature; to get exactly the same behavior,
+ applications should use SoupPasswordManagerGNOME. This requires
+ libsoup 2.27.91 or newer.
+ - Several accessibility improvements, including support for testing
+ the a11y infrastructure in our layout tests.
+ - You can now enable/disable HTML5 offline application cache using a
+ new setting added to WebKitWebSettings.
+ - Drag support has landed, meaning you can start playing with HTML5
+ drag and drop support; drop support is still missing.
+ - A crash with scripts closing windows has been fixed.
+ - Image cursors support has been added.
+ - The usual stream of small improvements and bug fixes.
+
+=================
+WebKitGTK+ 1.1.12
+=================
+
+What's new in WebKitGTK+ 1.1.12?
+
+ - Fix WebKitSoupAuthDialog to only save passwords in gnome-keyring
+ (if enabled) when authentication succeeds.
+ - Implement a proper size_request method for WebKitWebView. The
+ widget will request the size of the whole page as its size
+ requisition.
+ - Many a11y improvements.
+ - The usual amount of other misc fixes.
+ - WEBKIT_DEBUG variable now accepts channel names in any case
+ again.
+
+=================
+WebKitGTK+ 1.1.11
+=================
+
+What's new in WebKitGTK+ 1.1.11?
+
+ - WebKit has got a new feature - a XSS auditor, that should improve
+ security; this feature is still experimental, and disabled by
+ default, but applications can enable it using the setting.
+ - The hackish content sniffing code that was beig used to avoid
+ pages requesting downloads instead of displaying content has been
+ replaced by usage of a new Soup feature, which implements proper
+ content sniffing.
+ - More accessibility work, including fixes for problems which were
+ critical for a possible GNOME 2.28 release.
+ - Pasting rich text from other browsers should now work as expected.
+ - The usual amount of misc fixes.
+
+=================
+WebKitGTK+ 1.1.10
+=================
+
+What's new in WebKitGTK+ 1.1.10?
+
+ - WebKitNetworkRequest has now GObject properties for its URI and
+ the SoupMessage that backs it up.
+ - Fix AtkText methods get_selection and get_n_selections to not use
+ the global selection but only the selection that belongs to the
+ object being used.
+ - Fix a crasher when emitting the a11y signal 'text-caret-moved' in
+ some situations with debug builds.
+
+================
+WebKitGTK+ 1.1.9
+================
+
+What's new in WebKitGTK+ 1.1.9?
+
+ - Scrolling once again received a lot of love, and many subtle
+ problems and bugs were killed, and we now get correct behavior in
+ acid2; a number of smaller improvements are in the queue.
+ - Accessibility keeps gaining better support. On this release a lot
+ of work was done on the AtkText interface implementation.
+ - WebKitNetworkRequest now carries with it all the information
+ regarding the request, not only the URI. This means you will no
+ longer miss headers such as Referer when passing NetworkRequest
+ objects from a callback to webkit_web_frame_load_request.
+
+================
+WebKitGTK+ 1.1.8
+================
+
+What's new in WebKitGTK+ 1.1.8?
+
+ - We found out that WebKitWebHistoryItems were being kept with a
+ reference count of 2 instead of 1 as they should; nobody should be
+ relying on that, but if you hit reference counting problems with
+ items you were creating yourself, this is for you.
+ - You can now copy images from the web page to the clipboard.
+ - Improvements were made to the Plugin handling code.
+ - Scroll events will now be correctly reported to web applications.
+ - You can now embed arbitrary widgets as if it was a plugin, with
+ the new "create-plugin-widget" signal.
+ - The atk_text_get_text_{at,after,before}_offset methods are now
+ implemented for all boundary types except LINE_AFTER and
+ LINE_BEFORE.
+ - The usual stream of minor fixes and improvements, as always.
+
+================
+WebKitGTK+ 1.1.7
+================
+
+What's new in WebKitGTK+ 1.1.7?
+
+ - This release includes a security fix:
+ SVGList::insertItemBefore would not perform a bounds check on the
+ index it was provided, potentially leading to a buffer overflow.
+ - New frame loading properties supersede various load-* signals, and
+ are also accessible in the WebView, for convenience, making this
+ API saner.
+ - JIT is now supported for X86-64 on Linux, and enabled by default!
+ - A regression on webkit_web_view_load_string has been fixed, making
+ it work correctly again when the document uses encodings which may
+ use more than 1 byte per character.
+ - Yet more work has been done to the ATK support, caret browsing
+ support improvements in particular.
+ - Filenames suggested by the Download functionality now correctly
+ use the filename given by the host, if available.
+ - Build fixes for IA64, and AMD64
+ - gtk-doc support has also improved, and you should now be able to
+ cd WebKit/gtk/docs and type make docs, if you --enable-gtk-doc on
+ configure, as long as you build with srcdir == builddir.
+ - More crashes and other bugs fixed, and small improvements made
+ under the hood.
+
+================
+WebKitGTK+ 1.1.6
+================
+
+What's new in WebKitGTK+ 1.1.6?
+
+ - Several ATK support additions and fixes got landed, with many
+ roles being now implemented, providing better accessibility.
+ - Caret browsing is now available.
+ - Spelling check has been implemented using Enchant; the API is
+ still lacking, and some of the functionality still needs to be
+ improved, though.
+ - Error reporting is now available, with default error pages, and
+ API that allows the application to override the default behavior;
+ localization of those pages is still not supported, but planned.
+ - More crashes and other bugs fixed.
+
+================
+WebKitGTK+ 1.1.5
+================
+
+What's new in WebKitGTK+ 1.1.5?
+
+ - Added gtk-doc support to the build system. It is not fully
+ integrated yet, so some manual tweaking is still needed.
+ - Minimum required GTK+ version is now 2.10.
+ - Added l10n support with gettext. Translations are stored in
+ WebKit/gtk/po/.
+ - Many improvements to the ATK support. It's good enough to provide
+ a basic user experience with Accerciser now, but we'll keep
+ improving it in further releases.
+ - New printing API that allows applications to control and monitor
+ the printing process, when requested by javascript or started by
+ the user.
+ - Many bugfixes.
+
+================
+WebKitGTK+ 1.1.4
+================
+
+What's new in WebKitGTK+ 1.1.4?
+
+ - WebKitWebView gained uri and title properties, deprecating the
+ usage of the title-changed signal.
+ - Basic functionality for HTML5 media tags has been achieved; there
+ are many unimplented methods, and rough edges still, though.
+ - Font rendering received quite some love, with layouting, and
+ memory handling fixes, and at least one less crash.
+ - A new signal, new-window-policy-decision-requested, has been added
+ to WebKitWebView, that makes it possible for the application to
+ correctly decide what to do when new windows are requested.
+ - A bug that made tooltips for consecutive links not update their
+ location was fixed.
+ - Several improvements were made to the HTTP backend, including
+ making it more robust when talking to servers which send bad
+ Content-Type headers.
+ - WebKitWebView now uses the GtkBinding system to handle key events,
+ which means that the user is now able to customize the keys used
+ for various operations, and that many subtle bugs have been fixed.
+
+================
+WebKitGTK+ 1.1.3
+================
+
+The 1.1.3 release was just a quick bug fix release, because we made a
+mistake in library versioning.
+
+================
+WebKitGTK+ 1.1.2
+================
+
+What's new in WebKitGTK+ 1.1.2?
+
+ - Added support for downloads: a new signal, 'download-requested',
+ will be emitted by WebKit when a dowload is requested. On top of
+ that, the download process has been encapsulated in a new object,
+ WebKitDownload, which allows the user to control it or to start
+ new downloads from the client side.
+ - Added webkit_web_view_get_encoding to get the automatic encoding
+ of the current page.
+ - Added GObject properties for 'encoding' and 'custom-encoding'.
+ - Added 'javascript-profiling-enabled' property to the WebInspector,
+ which allows to enable and disable the profiling functionality.
+ - Added API to create and add history items to WebKit's history.
+ - Improved debugging support with WEBKIT_DEBUG environment
+ variable. Most of the settings will only give useful output for
+ debug builds, but WEBKIT_DEBUG=Network will log all HTTP traffic
+ form libsoup to console. See WebCore/platform/gtk/LoggingGtk.cpp
+ for all the options available.
+ - Lots of bugfixes.
+
+================
+WebKitGTK+ 1.1.1
+================
+
+What's new in WebKitGTK+ 1.1.1?
+
+ - ABI compatibility with 1.0.3 was broken, so you will need to
+ recompile your application against 1.1.1
+ - Support for the CURL backend was dropped, libsoup is the only HTTP
+ backend now.
+ - webkit_get_default_session, to get the SoupSession used internally
+ by WebKit.
+ - 'create-web-view' signal, emitted when the creation of a new
+ window is requested.
+ - 'navigation-policy-decision-requested' signal, emitted when a
+ navigation to another page is requested.
+ - 'mime-type-policy-decision-requested' signal, emitted each time
+ WebKit is about to show a URI with a given MIME type.
+ - Support for the Web Inspector
+ (see http://webkit.org/blog/197/web-inspector-redesign/)
+ - HTTP authentication support, with optional gnome-keyring storage.
+ - New load functions: webkit_web_view_open, webkit_web_view_load_uri
+ and webkit_web_view_load_request. The old
+ webkit_web_view_load_string and webkit_web_view_load_html_string
+ are now deprecated.
+ - webkit_web_view_reload_bypass_cache
+ - webkit_web_view_{get,set}_custom_encoding, to override the
+ encoding of the current page.
+ - Improved stability and lots of bugfixes.
+
diff --git a/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
new file mode 100644
index 0000000..8b6a483
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
@@ -0,0 +1,731 @@
+/*
+ * Copyright (C) 2007, 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2007, 2008 Christian Dywan <christian@imendio.com>
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2008 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org>
+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "ChromeClientGtk.h"
+
+#include "Chrome.h"
+#include "Console.h"
+#include "DumpRenderTreeSupportGtk.h"
+#include "Element.h"
+#include "FileChooser.h"
+#include "FileSystem.h"
+#include "FloatRect.h"
+#include "FrameLoadRequest.h"
+#include "FrameView.h"
+#include "GtkVersioning.h"
+#include "HTMLNames.h"
+#include "HitTestResult.h"
+#include "Icon.h"
+#include "IntRect.h"
+#include "KURL.h"
+#include "NavigationAction.h"
+#include "NotImplemented.h"
+#include "PlatformString.h"
+#include "PopupMenuClient.h"
+#include "PopupMenuGtk.h"
+#include "SearchPopupMenuGtk.h"
+#include "SecurityOrigin.h"
+#include "WindowFeatures.h"
+#include "webkitgeolocationpolicydecision.h"
+#include "webkitgeolocationpolicydecisionprivate.h"
+#include "webkitnetworkrequest.h"
+#include "webkitsecurityoriginprivate.h"
+#include "webkitviewportattributesprivate.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebview.h"
+#include "webkitwebviewprivate.h"
+#include "webkitwebwindowfeaturesprivate.h"
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <wtf/text/CString.h>
+
+#if ENABLE(DATABASE)
+#include "DatabaseTracker.h"
+#endif
+
+using namespace WebCore;
+
+namespace WebKit {
+
+ChromeClient::ChromeClient(WebKitWebView* webView)
+ : m_webView(webView)
+ , m_closeSoonTimer(0)
+{
+ ASSERT(m_webView);
+}
+
+void ChromeClient::chromeDestroyed()
+{
+ delete this;
+}
+
+FloatRect ChromeClient::windowRect()
+{
+ GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
+ if (gtk_widget_is_toplevel(window)) {
+ gint left, top, width, height;
+ gtk_window_get_position(GTK_WINDOW(window), &left, &top);
+ gtk_window_get_size(GTK_WINDOW(window), &width, &height);
+ return IntRect(left, top, width, height);
+ }
+ return FloatRect();
+}
+
+void ChromeClient::setWindowRect(const FloatRect& rect)
+{
+ IntRect intrect = IntRect(rect);
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+
+ g_object_set(webWindowFeatures,
+ "x", intrect.x(),
+ "y", intrect.y(),
+ "width", intrect.width(),
+ "height", intrect.height(),
+ NULL);
+
+ gboolean autoResizeWindow;
+ WebKitWebSettings* settings = webkit_web_view_get_settings(m_webView);
+ g_object_get(settings, "auto-resize-window", &autoResizeWindow, NULL);
+
+ if (!autoResizeWindow)
+ return;
+
+ GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
+ if (gtk_widget_is_toplevel(window)) {
+ gtk_window_move(GTK_WINDOW(window), intrect.x(), intrect.y());
+ gtk_window_resize(GTK_WINDOW(window), intrect.width(), intrect.height());
+ }
+}
+
+FloatRect ChromeClient::pageRect()
+{
+ GtkAllocation allocation;
+#if GTK_CHECK_VERSION(2, 18, 0)
+ gtk_widget_get_allocation(GTK_WIDGET(m_webView), &allocation);
+#else
+ allocation = GTK_WIDGET(m_webView)->allocation;
+#endif
+ return IntRect(allocation.x, allocation.y, allocation.width, allocation.height);
+}
+
+float ChromeClient::scaleFactor()
+{
+ // Not implementable
+ return 1.0;
+}
+
+void ChromeClient::focus()
+{
+ gtk_widget_grab_focus(GTK_WIDGET(m_webView));
+}
+
+void ChromeClient::unfocus()
+{
+ GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
+ if (gtk_widget_is_toplevel(window))
+ gtk_window_set_focus(GTK_WINDOW(window), NULL);
+}
+
+Page* ChromeClient::createWindow(Frame* frame, const FrameLoadRequest& frameLoadRequest, const WindowFeatures& coreFeatures, const NavigationAction&)
+{
+ WebKitWebView* webView = 0;
+
+ g_signal_emit_by_name(m_webView, "create-web-view", kit(frame), &webView);
+
+ if (!webView)
+ return 0;
+
+ GRefPtr<WebKitWebWindowFeatures> webWindowFeatures(adoptGRef(kitNew(coreFeatures)));
+ g_object_set(webView, "window-features", webWindowFeatures.get(), NULL);
+
+ return core(webView);
+}
+
+void ChromeClient::show()
+{
+ webkit_web_view_notify_ready(m_webView);
+}
+
+bool ChromeClient::canRunModal()
+{
+ notImplemented();
+ return false;
+}
+
+void ChromeClient::runModal()
+{
+ notImplemented();
+}
+
+void ChromeClient::setToolbarsVisible(bool visible)
+{
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+
+ g_object_set(webWindowFeatures, "toolbar-visible", visible, NULL);
+}
+
+bool ChromeClient::toolbarsVisible()
+{
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+ gboolean visible;
+
+ g_object_get(webWindowFeatures, "toolbar-visible", &visible, NULL);
+ return visible;
+}
+
+void ChromeClient::setStatusbarVisible(bool visible)
+{
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+
+ g_object_set(webWindowFeatures, "statusbar-visible", visible, NULL);
+}
+
+bool ChromeClient::statusbarVisible()
+{
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+ gboolean visible;
+
+ g_object_get(webWindowFeatures, "statusbar-visible", &visible, NULL);
+ return visible;
+}
+
+void ChromeClient::setScrollbarsVisible(bool visible)
+{
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+
+ g_object_set(webWindowFeatures, "scrollbar-visible", visible, NULL);
+}
+
+bool ChromeClient::scrollbarsVisible() {
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+ gboolean visible;
+
+ g_object_get(webWindowFeatures, "scrollbar-visible", &visible, NULL);
+ return visible;
+}
+
+void ChromeClient::setMenubarVisible(bool visible)
+{
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+
+ g_object_set(webWindowFeatures, "menubar-visible", visible, NULL);
+}
+
+bool ChromeClient::menubarVisible()
+{
+ WebKitWebWindowFeatures* webWindowFeatures = webkit_web_view_get_window_features(m_webView);
+ gboolean visible;
+
+ g_object_get(webWindowFeatures, "menubar-visible", &visible, NULL);
+ return visible;
+}
+
+void ChromeClient::setResizable(bool)
+{
+ // Ignored for now
+}
+
+static gboolean emitCloseWebViewSignalLater(WebKitWebView* view)
+{
+ gboolean isHandled;
+ g_signal_emit_by_name(view, "close-web-view", &isHandled);
+ return FALSE;
+}
+
+void ChromeClient::closeWindowSoon()
+{
+ // We may not have a WebView as create-web-view can return NULL.
+ if (!m_webView)
+ return;
+ if (m_closeSoonTimer) // Don't call close-web-view more than once.
+ return;
+
+ // We need to remove the parent WebView from WebViewSets here, before it actually
+ // closes, to make sure that JavaScript code that executes before it closes
+ // can't find it. Otherwise, window.open will select a closed WebView instead of
+ // opening a new one <rdar://problem/3572585>.
+ m_webView->priv->corePage->setGroupName("");
+
+ // We also need to stop the load to prevent further parsing or JavaScript execution
+ // after the window has torn down <rdar://problem/4161660>.
+ webkit_web_view_stop_loading(m_webView);
+
+ // Clients commonly destroy the web view during the close-web-view signal, but our caller
+ // may need to send more signals to the web view. For instance, if this happened in the
+ // onload handler, it will need to call FrameLoaderClient::dispatchDidHandleOnloadEvents.
+ // Instead of firing the close-web-view signal now, fire it after the caller finishes.
+ // This seems to match the Mac/Windows port behavior.
+ m_closeSoonTimer = g_timeout_add(0, reinterpret_cast<GSourceFunc>(emitCloseWebViewSignalLater), m_webView);
+}
+
+bool ChromeClient::canTakeFocus(FocusDirection)
+{
+ return gtk_widget_get_can_focus(GTK_WIDGET(m_webView));
+}
+
+void ChromeClient::takeFocus(FocusDirection)
+{
+ unfocus();
+}
+
+void ChromeClient::focusedNodeChanged(Node*)
+{
+}
+
+void ChromeClient::focusedFrameChanged(Frame*)
+{
+}
+
+bool ChromeClient::canRunBeforeUnloadConfirmPanel()
+{
+ return true;
+}
+
+bool ChromeClient::runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame)
+{
+ return runJavaScriptConfirm(frame, message);
+}
+
+void ChromeClient::addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceId)
+{
+ gboolean retval;
+ g_signal_emit_by_name(m_webView, "console-message", message.utf8().data(), lineNumber, sourceId.utf8().data(), &retval);
+}
+
+void ChromeClient::runJavaScriptAlert(Frame* frame, const String& message)
+{
+ gboolean retval;
+ g_signal_emit_by_name(m_webView, "script-alert", kit(frame), message.utf8().data(), &retval);
+}
+
+bool ChromeClient::runJavaScriptConfirm(Frame* frame, const String& message)
+{
+ gboolean retval;
+ gboolean didConfirm;
+ g_signal_emit_by_name(m_webView, "script-confirm", kit(frame), message.utf8().data(), &didConfirm, &retval);
+ return didConfirm == TRUE;
+}
+
+bool ChromeClient::runJavaScriptPrompt(Frame* frame, const String& message, const String& defaultValue, String& result)
+{
+ gboolean retval;
+ gchar* value = 0;
+ g_signal_emit_by_name(m_webView, "script-prompt", kit(frame), message.utf8().data(), defaultValue.utf8().data(), &value, &retval);
+ if (value) {
+ result = String::fromUTF8(value);
+ g_free(value);
+ return true;
+ }
+ return false;
+}
+
+void ChromeClient::setStatusbarText(const String& string)
+{
+ CString stringMessage = string.utf8();
+ g_signal_emit_by_name(m_webView, "status-bar-text-changed", stringMessage.data());
+}
+
+bool ChromeClient::shouldInterruptJavaScript()
+{
+ notImplemented();
+ return false;
+}
+
+bool ChromeClient::tabsToLinks() const
+{
+ if (DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled())
+ return DumpRenderTreeSupportGtk::linksIncludedInFocusChain();
+
+ return true;
+}
+
+IntRect ChromeClient::windowResizerRect() const
+{
+ notImplemented();
+ return IntRect();
+}
+
+void ChromeClient::invalidateWindow(const IntRect&, bool)
+{
+ notImplemented();
+}
+
+void ChromeClient::invalidateContentsAndWindow(const IntRect& updateRect, bool immediate)
+{
+ GdkRectangle rect = updateRect;
+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(m_webView));
+
+ if (window) {
+ gdk_window_invalidate_rect(window, &rect, FALSE);
+ // We don't currently do immediate updates since they delay other UI elements.
+ //if (immediate)
+ // gdk_window_process_updates(window, FALSE);
+ }
+}
+
+void ChromeClient::invalidateContentsForSlowScroll(const IntRect& updateRect, bool immediate)
+{
+ invalidateContentsAndWindow(updateRect, immediate);
+}
+
+void ChromeClient::scroll(const IntSize& delta, const IntRect& rectToScroll, const IntRect& clipRect)
+{
+ GdkWindow* window = gtk_widget_get_window(GTK_WIDGET(m_webView));
+ if (!window)
+ return;
+
+ // We cannot use gdk_window_scroll here because it is only able to
+ // scroll the whole window at once, and we often need to scroll
+ // portions of the window only (think frames).
+ GdkRectangle area = clipRect;
+ GdkRectangle moveRect;
+
+ GdkRectangle sourceRect = area;
+ sourceRect.x -= delta.width();
+ sourceRect.y -= delta.height();
+
+#ifdef GTK_API_VERSION_2
+ GdkRegion* invalidRegion = gdk_region_rectangle(&area);
+
+ if (gdk_rectangle_intersect(&area, &sourceRect, &moveRect)) {
+ GdkRegion* moveRegion = gdk_region_rectangle(&moveRect);
+ gdk_window_move_region(window, moveRegion, delta.width(), delta.height());
+ gdk_region_offset(moveRegion, delta.width(), delta.height());
+ gdk_region_subtract(invalidRegion, moveRegion);
+ gdk_region_destroy(moveRegion);
+ }
+
+ gdk_window_invalidate_region(window, invalidRegion, FALSE);
+ gdk_region_destroy(invalidRegion);
+#else
+ cairo_region_t* invalidRegion = cairo_region_create_rectangle(&area);
+
+ if (gdk_rectangle_intersect(&area, &sourceRect, &moveRect)) {
+ cairo_region_t* moveRegion = cairo_region_create_rectangle(&moveRect);
+ gdk_window_move_region(window, moveRegion, delta.width(), delta.height());
+ cairo_region_translate(moveRegion, delta.width(), delta.height());
+ cairo_region_subtract(invalidRegion, moveRegion);
+ cairo_region_destroy(moveRegion);
+ }
+
+ gdk_window_invalidate_region(window, invalidRegion, FALSE);
+ cairo_region_destroy(invalidRegion);
+#endif
+
+ gdk_window_process_updates(window, TRUE);
+}
+
+// FIXME: this does not take into account the WM decorations
+static IntPoint widgetScreenPosition(GtkWidget* widget)
+{
+ GtkWidget* window = gtk_widget_get_toplevel(widget);
+ int widgetX = 0, widgetY = 0;
+
+ gtk_widget_translate_coordinates(widget, window, 0, 0, &widgetX, &widgetY);
+
+ IntPoint result(widgetX, widgetY);
+ int originX, originY;
+ gdk_window_get_origin(gtk_widget_get_window(window), &originX, &originY);
+ result.move(originX, originY);
+
+ return result;
+}
+
+IntRect ChromeClient::windowToScreen(const IntRect& rect) const
+{
+ IntRect result(rect);
+ IntPoint screenPosition = widgetScreenPosition(GTK_WIDGET(m_webView));
+ result.move(screenPosition.x(), screenPosition.y());
+
+ return result;
+}
+
+IntPoint ChromeClient::screenToWindow(const IntPoint& point) const
+{
+ IntPoint result(point);
+ IntPoint screenPosition = widgetScreenPosition(GTK_WIDGET(m_webView));
+ result.move(-screenPosition.x(), -screenPosition.y());
+
+ return result;
+}
+
+PlatformPageClient ChromeClient::platformPageClient() const
+{
+ return GTK_WIDGET(m_webView);
+}
+
+void ChromeClient::contentsSizeChanged(Frame* frame, const IntSize& size) const
+{
+ // We need to queue a resize request only if the size changed,
+ // otherwise we get into an infinite loop!
+ GtkWidget* widget = GTK_WIDGET(m_webView);
+ GtkRequisition requisition;
+#if GTK_CHECK_VERSION(2, 20, 0)
+ gtk_widget_get_requisition(widget, &requisition);
+#else
+ requisition = widget->requisition;
+#endif
+ if (gtk_widget_get_realized(widget)
+ && (requisition.height != size.height())
+ || (requisition.width != size.width()))
+ gtk_widget_queue_resize_no_redraw(widget);
+}
+
+void ChromeClient::scrollbarsModeDidChange() const
+{
+ WebKitWebFrame* webFrame = webkit_web_view_get_main_frame(m_webView);
+
+ g_object_notify(G_OBJECT(webFrame), "horizontal-scrollbar-policy");
+ g_object_notify(G_OBJECT(webFrame), "vertical-scrollbar-policy");
+
+ gboolean isHandled;
+ g_signal_emit_by_name(webFrame, "scrollbars-policy-changed", &isHandled);
+
+ if (isHandled)
+ return;
+
+ GtkWidget* parent = gtk_widget_get_parent(GTK_WIDGET(m_webView));
+ if (!parent || !GTK_IS_SCROLLED_WINDOW(parent))
+ return;
+
+ GtkPolicyType horizontalPolicy = webkit_web_frame_get_horizontal_scrollbar_policy(webFrame);
+ GtkPolicyType verticalPolicy = webkit_web_frame_get_vertical_scrollbar_policy(webFrame);
+
+ // ScrolledWindow doesn't like to display only part of a widget if
+ // the scrollbars are completely disabled; We have a disparity
+ // here on what the policy requested by the web app is and what we
+ // can represent; the idea is not to show scrollbars, only.
+ if (horizontalPolicy == GTK_POLICY_NEVER)
+ horizontalPolicy = GTK_POLICY_AUTOMATIC;
+
+ if (verticalPolicy == GTK_POLICY_NEVER)
+ verticalPolicy = GTK_POLICY_AUTOMATIC;
+
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(parent),
+ horizontalPolicy, verticalPolicy);
+}
+
+void ChromeClient::mouseDidMoveOverElement(const HitTestResult& hit, unsigned modifierFlags)
+{
+ // check if the element is a link...
+ bool isLink = hit.isLiveLink();
+ if (isLink) {
+ KURL url = hit.absoluteLinkURL();
+ if (!url.isEmpty() && url != m_hoveredLinkURL) {
+ TextDirection dir;
+ CString titleString = hit.title(dir).utf8();
+ CString urlString = url.prettyURL().utf8();
+ g_signal_emit_by_name(m_webView, "hovering-over-link", titleString.data(), urlString.data());
+ m_hoveredLinkURL = url;
+ }
+ } else if (!isLink && !m_hoveredLinkURL.isEmpty()) {
+ g_signal_emit_by_name(m_webView, "hovering-over-link", 0, 0);
+ m_hoveredLinkURL = KURL();
+ }
+
+ if (Node* node = hit.innerNonSharedNode()) {
+ Frame* frame = node->document()->frame();
+ FrameView* view = frame ? frame->view() : 0;
+ m_webView->priv->tooltipArea = view ? view->contentsToWindow(node->getRect()) : IntRect();
+ } else
+ m_webView->priv->tooltipArea = IntRect();
+}
+
+void ChromeClient::setToolTip(const String& toolTip, TextDirection)
+{
+ webkit_web_view_set_tooltip_text(m_webView, toolTip.utf8().data());
+}
+
+void ChromeClient::print(Frame* frame)
+{
+ WebKitWebFrame* webFrame = kit(frame);
+ gboolean isHandled = false;
+ g_signal_emit_by_name(m_webView, "print-requested", webFrame, &isHandled);
+
+ if (isHandled)
+ return;
+
+ webkit_web_frame_print(webFrame);
+}
+
+#if ENABLE(DATABASE)
+void ChromeClient::exceededDatabaseQuota(Frame* frame, const String& databaseName)
+{
+ guint64 defaultQuota = webkit_get_default_web_database_quota();
+ DatabaseTracker::tracker().setQuota(frame->document()->securityOrigin(), defaultQuota);
+
+ WebKitWebFrame* webFrame = kit(frame);
+ WebKitWebView* webView = getViewFromFrame(webFrame);
+
+ WebKitSecurityOrigin* origin = webkit_web_frame_get_security_origin(webFrame);
+ WebKitWebDatabase* webDatabase = webkit_security_origin_get_web_database(origin, databaseName.utf8().data());
+ g_signal_emit_by_name(webView, "database-quota-exceeded", webFrame, webDatabase);
+}
+#endif
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+void ChromeClient::reachedMaxAppCacheSize(int64_t spaceNeeded)
+{
+ // FIXME: Free some space.
+ notImplemented();
+}
+
+void ChromeClient::reachedApplicationCacheOriginQuota(SecurityOrigin*)
+{
+ notImplemented();
+}
+#endif
+
+void ChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChooser)
+{
+ RefPtr<FileChooser> chooser = prpFileChooser;
+
+ GtkWidget* dialog = gtk_file_chooser_dialog_new(_("Upload File"),
+ GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(platformPageClient()))),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
+ NULL);
+
+ gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), chooser->allowsMultipleFiles());
+
+ if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) {
+ if (gtk_file_chooser_get_select_multiple(GTK_FILE_CHOOSER(dialog))) {
+ GSList* filenames = gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog));
+ Vector<String> names;
+ for (GSList* item = filenames ; item ; item = item->next) {
+ if (!item->data)
+ continue;
+ names.append(filenameToString(static_cast<char*>(item->data)));
+ g_free(item->data);
+ }
+ g_slist_free(filenames);
+ chooser->chooseFiles(names);
+ } else {
+ gchar* filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
+ if (filename)
+ chooser->chooseFile(filenameToString(filename));
+ g_free(filename);
+ }
+ }
+ gtk_widget_destroy(dialog);
+}
+
+void ChromeClient::chooseIconForFiles(const Vector<WTF::String>& filenames, WebCore::FileChooser* chooser)
+{
+ chooser->iconLoaded(Icon::createIconForFiles(filenames));
+}
+
+void ChromeClient::dispatchViewportDataDidChange(const ViewportArguments& arguments) const
+{
+ // Recompute the viewport attributes making it valid.
+ webkitViewportAttributesRecompute(webkit_web_view_get_viewport_attributes(m_webView));
+}
+
+void ChromeClient::setCursor(const Cursor&)
+{
+ notImplemented();
+}
+
+void ChromeClient::requestGeolocationPermissionForFrame(Frame* frame, Geolocation* geolocation)
+{
+ WebKitWebFrame* webFrame = kit(frame);
+ WebKitWebView* webView = getViewFromFrame(webFrame);
+
+ GRefPtr<WebKitGeolocationPolicyDecision> policyDecision(adoptGRef(webkit_geolocation_policy_decision_new(webFrame, geolocation)));
+
+ gboolean isHandled = FALSE;
+ g_signal_emit_by_name(webView, "geolocation-policy-decision-requested", webFrame, policyDecision.get(), &isHandled);
+ if (!isHandled)
+ webkit_geolocation_policy_deny(policyDecision.get());
+}
+
+void ChromeClient::cancelGeolocationPermissionRequestForFrame(WebCore::Frame* frame, WebCore::Geolocation*)
+{
+ WebKitWebFrame* webFrame = kit(frame);
+ WebKitWebView* webView = getViewFromFrame(webFrame);
+ g_signal_emit_by_name(webView, "geolocation-policy-decision-cancelled", webFrame);
+}
+
+bool ChromeClient::selectItemWritingDirectionIsNatural()
+{
+ return true;
+}
+
+PassRefPtr<WebCore::PopupMenu> ChromeClient::createPopupMenu(WebCore::PopupMenuClient* client) const
+{
+ return adoptRef(new PopupMenuGtk(client));
+}
+
+PassRefPtr<WebCore::SearchPopupMenu> ChromeClient::createSearchPopupMenu(WebCore::PopupMenuClient* client) const
+{
+ return adoptRef(new SearchPopupMenuGtk(client));
+}
+
+#if ENABLE(VIDEO)
+
+bool ChromeClient::supportsFullscreenForNode(const Node* node)
+{
+ return node->hasTagName(HTMLNames::videoTag);
+}
+
+void ChromeClient::enterFullscreenForNode(Node* node)
+{
+ WebCore::Frame* frame = node->document()->frame();
+ WebKitWebFrame* webFrame = kit(frame);
+ WebKitWebView* webView = getViewFromFrame(webFrame);
+ webViewEnterFullscreen(webView, node);
+}
+
+void ChromeClient::exitFullscreenForNode(Node* node)
+{
+ WebCore::Frame* frame = node->document()->frame();
+ WebKitWebFrame* webFrame = kit(frame);
+ WebKitWebView* webView = getViewFromFrame(webFrame);
+ webViewExitFullscreen(webView);
+}
+#endif
+
+#if ENABLE(FULLSCREEN_API)
+bool ChromeClient::supportsFullScreenForElement(const WebCore::Element* element)
+{
+ return true;
+}
+
+void ChromeClient::enterFullScreenForElement(WebCore::Element* element)
+{
+ element->document()->webkitWillEnterFullScreenForElement(element);
+ element->document()->webkitDidEnterFullScreenForElement(element);
+}
+
+void ChromeClient::exitFullScreenForElement(WebCore::Element* element)
+{
+ element->document()->webkitWillExitFullScreenForElement(element);
+ element->document()->webkitDidExitFullScreenForElement(element);
+}
+#endif
+
+
+}
diff --git a/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
new file mode 100644
index 0000000..d607c54
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef ChromeClientGtk_h
+#define ChromeClientGtk_h
+
+#include "ChromeClient.h"
+#include "KURL.h"
+#include "PopupMenu.h"
+#include "SearchPopupMenu.h"
+
+typedef struct _WebKitWebView WebKitWebView;
+
+namespace WebCore {
+class PopupMenuClient;
+}
+
+namespace WebKit {
+
+ class ChromeClient : public WebCore::ChromeClient {
+ public:
+ ChromeClient(WebKitWebView*);
+ WebKitWebView* webView() const { return m_webView; }
+
+ virtual void chromeDestroyed();
+
+ virtual void setWindowRect(const WebCore::FloatRect&);
+ virtual WebCore::FloatRect windowRect();
+
+ virtual WebCore::FloatRect pageRect();
+
+ virtual float scaleFactor();
+
+ virtual void focus();
+ virtual void unfocus();
+
+ virtual bool canTakeFocus(WebCore::FocusDirection);
+ virtual void takeFocus(WebCore::FocusDirection);
+
+ virtual void focusedNodeChanged(WebCore::Node*);
+ virtual void focusedFrameChanged(WebCore::Frame*);
+
+ virtual WebCore::Page* createWindow(WebCore::Frame*, const WebCore::FrameLoadRequest&, const WebCore::WindowFeatures&, const WebCore::NavigationAction&);
+ virtual void show();
+
+ virtual bool canRunModal();
+ virtual void runModal();
+
+ virtual void setToolbarsVisible(bool);
+ virtual bool toolbarsVisible();
+
+ virtual void setStatusbarVisible(bool);
+ virtual bool statusbarVisible();
+
+ virtual void setScrollbarsVisible(bool);
+ virtual bool scrollbarsVisible();
+
+ virtual void setMenubarVisible(bool);
+ virtual bool menubarVisible();
+
+ virtual void setResizable(bool);
+
+ virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type,
+ WebCore::MessageLevel level, const WTF::String& message,
+ unsigned int lineNumber, const WTF::String& sourceID);
+
+ virtual bool canRunBeforeUnloadConfirmPanel();
+ virtual bool runBeforeUnloadConfirmPanel(const WTF::String& message, WebCore::Frame* frame);
+
+ virtual void closeWindowSoon();
+
+ virtual void runJavaScriptAlert(WebCore::Frame*, const WTF::String&);
+ virtual bool runJavaScriptConfirm(WebCore::Frame*, const WTF::String&);
+ virtual bool runJavaScriptPrompt(WebCore::Frame*, const WTF::String& message, const WTF::String& defaultValue, WTF::String& result);
+ virtual void setStatusbarText(const WTF::String&);
+ virtual bool shouldInterruptJavaScript();
+ virtual bool tabsToLinks() const;
+
+ virtual WebCore::IntRect windowResizerRect() const;
+
+ virtual void invalidateWindow(const WebCore::IntRect&, bool);
+ virtual void invalidateContentsAndWindow(const WebCore::IntRect&, bool);
+ virtual void invalidateContentsForSlowScroll(const WebCore::IntRect&, bool);
+ virtual void scroll(const WebCore::IntSize& scrollDelta, const WebCore::IntRect& rectToScroll, const WebCore::IntRect& clipRect);
+
+ virtual WebCore::IntPoint screenToWindow(const WebCore::IntPoint&) const;
+ virtual WebCore::IntRect windowToScreen(const WebCore::IntRect&) const;
+ virtual PlatformPageClient platformPageClient() const;
+ virtual void contentsSizeChanged(WebCore::Frame*, const WebCore::IntSize&) const;
+
+ virtual void scrollbarsModeDidChange() const;
+ virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
+
+ virtual void setToolTip(const WTF::String&, WebCore::TextDirection);
+
+ virtual void dispatchViewportDataDidChange(const WebCore::ViewportArguments& arguments) const;
+
+ virtual void print(WebCore::Frame*);
+#if ENABLE(DATABASE)
+ virtual void exceededDatabaseQuota(WebCore::Frame*, const WTF::String&);
+#endif
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ virtual void reachedMaxAppCacheSize(int64_t spaceNeeded);
+ virtual void reachedApplicationCacheOriginQuota(WebCore::SecurityOrigin*);
+#endif
+#if ENABLE(CONTEXT_MENUS)
+ virtual void showContextMenu() { }
+#endif
+ virtual void runOpenPanel(WebCore::Frame*, PassRefPtr<WebCore::FileChooser>);
+ virtual void chooseIconForFiles(const Vector<WTF::String>&, WebCore::FileChooser*);
+
+ virtual void formStateDidChange(const WebCore::Node*) { }
+
+ virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; }
+
+ virtual void setCursor(const WebCore::Cursor&);
+
+ virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const {}
+ virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
+ virtual void cancelGeolocationPermissionRequestForFrame(WebCore::Frame*, WebCore::Geolocation*);
+
+ virtual bool selectItemWritingDirectionIsNatural();
+ virtual PassRefPtr<WebCore::PopupMenu> createPopupMenu(WebCore::PopupMenuClient*) const;
+ virtual PassRefPtr<WebCore::SearchPopupMenu> createSearchPopupMenu(WebCore::PopupMenuClient*) const;
+#if ENABLE(VIDEO)
+ virtual bool supportsFullscreenForNode(const WebCore::Node*);
+ virtual void enterFullscreenForNode(WebCore::Node*);
+ virtual void exitFullscreenForNode(WebCore::Node*);
+#endif
+
+#if ENABLE(FULLSCREEN_API)
+ virtual bool supportsFullScreenForElement(const WebCore::Element*);
+ virtual void enterFullScreenForElement(WebCore::Element*);
+ virtual void exitFullScreenForElement(WebCore::Element*);
+#endif
+
+ private:
+ WebKitWebView* m_webView;
+ WebCore::KURL m_hoveredLinkURL;
+ unsigned int m_closeSoonTimer;
+ };
+}
+
+#endif // ChromeClient_h
diff --git a/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp
new file mode 100644
index 0000000..d9c59d0
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "ContextMenuClientGtk.h"
+
+#include "ContextMenu.h"
+#include "ContextMenuController.h"
+#include "HitTestResult.h"
+#include "KURL.h"
+#include "NotImplemented.h"
+#include "Page.h"
+#include "webkitwebviewprivate.h"
+#include <glib-object.h>
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <wtf/text/CString.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+ContextMenuClient::ContextMenuClient(WebKitWebView *webView)
+ : m_webView(webView)
+{
+}
+
+void ContextMenuClient::contextMenuDestroyed()
+{
+ delete this;
+}
+
+static GtkWidget* inputMethodsMenuItem (WebKitWebView* webView)
+{
+ if (gtk_major_version > 2 || (gtk_major_version == 2 && gtk_minor_version >= 10)) {
+ GtkSettings* settings = webView ? gtk_widget_get_settings(GTK_WIDGET(webView)) : gtk_settings_get_default();
+
+ gboolean showMenu = TRUE;
+ if (settings)
+ g_object_get(settings, "gtk-show-input-method-menu", &showMenu, NULL);
+ if (!showMenu)
+ return 0;
+ }
+
+ GtkWidget* menuitem = gtk_image_menu_item_new_with_mnemonic(
+ _("Input _Methods"));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ GtkWidget* imContextMenu = gtk_menu_new();
+ gtk_im_multicontext_append_menuitems(GTK_IM_MULTICONTEXT(priv->imContext.get()), GTK_MENU_SHELL(imContextMenu));
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), imContextMenu);
+
+ return menuitem;
+}
+
+// Values taken from gtktextutil.c
+typedef struct {
+ const char *label;
+ gunichar ch;
+} GtkUnicodeMenuEntry;
+static const GtkUnicodeMenuEntry bidi_menu_entries[] = {
+ { N_("LRM _Left-to-right mark"), 0x200E },
+ { N_("RLM _Right-to-left mark"), 0x200F },
+ { N_("LRE Left-to-right _embedding"), 0x202A },
+ { N_("RLE Right-to-left e_mbedding"), 0x202B },
+ { N_("LRO Left-to-right _override"), 0x202D },
+ { N_("RLO Right-to-left o_verride"), 0x202E },
+ { N_("PDF _Pop directional formatting"), 0x202C },
+ { N_("ZWS _Zero width space"), 0x200B },
+ { N_("ZWJ Zero width _joiner"), 0x200D },
+ { N_("ZWNJ Zero width _non-joiner"), 0x200C }
+};
+
+static void insertControlCharacter(GtkWidget* widget)
+{
+ // GtkUnicodeMenuEntry* entry = (GtkUnicodeMenuEntry*)g_object_get_data(G_OBJECT(widget), "gtk-unicode-menu-entry");
+ notImplemented();
+}
+
+static GtkWidget* unicodeMenuItem(WebKitWebView* webView)
+{
+ if (gtk_major_version > 2 || (gtk_major_version == 2 && gtk_minor_version >= 10)) {
+ GtkSettings* settings = webView ? gtk_widget_get_settings(GTK_WIDGET(webView)) : gtk_settings_get_default();
+
+ gboolean showMenu = TRUE;
+ if (settings)
+ g_object_get(settings, "gtk-show-unicode-menu", &showMenu, NULL);
+ if (!showMenu)
+ return 0;
+ }
+
+ GtkWidget* menuitem = gtk_image_menu_item_new_with_mnemonic(
+ _("_Insert Unicode Control Character"));
+
+ GtkWidget* unicodeContextMenu = gtk_menu_new();
+ unsigned i;
+ for (i = 0; i < G_N_ELEMENTS(bidi_menu_entries); i++) {
+ GtkWidget* menuitem = gtk_menu_item_new_with_mnemonic(_(bidi_menu_entries[i].label));
+ g_object_set_data(G_OBJECT(menuitem), "gtk-unicode-menu-entry", (gpointer)&bidi_menu_entries[i]);
+ g_signal_connect(menuitem, "activate", G_CALLBACK(insertControlCharacter), 0);
+ gtk_widget_show(menuitem);
+ gtk_menu_shell_append(GTK_MENU_SHELL(unicodeContextMenu), menuitem);
+ // FIXME: Make the item sensitive as insertControlCharacter() is implemented
+ gtk_widget_set_sensitive(menuitem, FALSE);
+ }
+
+ gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), unicodeContextMenu);
+
+ return menuitem;
+}
+
+PlatformMenuDescription ContextMenuClient::getCustomMenuFromDefaultItems(ContextMenu* menu)
+{
+ GtkMenu* gtkmenu = menu->releasePlatformDescription();
+
+ WebKitWebView* webView = m_webView;
+ HitTestResult result = core(webView)->contextMenuController()->hitTestResult();
+
+ if (result.isContentEditable()) {
+
+ GtkWidget* imContextMenu = inputMethodsMenuItem(webView);
+ GtkWidget* unicodeContextMenu = unicodeMenuItem(webView);
+
+ if (imContextMenu || unicodeContextMenu) {
+ GtkWidget* separator = gtk_separator_menu_item_new();
+ gtk_menu_shell_append(GTK_MENU_SHELL(gtkmenu), separator);
+ gtk_widget_show(separator);
+ }
+
+ if (imContextMenu) {
+ gtk_menu_shell_append(GTK_MENU_SHELL(gtkmenu), imContextMenu);
+ gtk_widget_show(imContextMenu);
+ }
+
+ if (unicodeContextMenu) {
+ gtk_menu_shell_append(GTK_MENU_SHELL(gtkmenu), unicodeContextMenu);
+ gtk_widget_show(unicodeContextMenu);
+ }
+
+ }
+
+ return gtkmenu;
+}
+
+void ContextMenuClient::contextMenuItemSelected(ContextMenuItem*, const ContextMenu*)
+{
+ notImplemented();
+}
+
+void ContextMenuClient::downloadURL(const KURL& url)
+{
+ WebKitNetworkRequest* networkRequest = webkit_network_request_new(url.string().utf8().data());
+
+ webkit_web_view_request_download(m_webView, networkRequest);
+ g_object_unref(networkRequest);
+}
+
+void ContextMenuClient::copyImageToClipboard(const HitTestResult&)
+{
+ notImplemented();
+}
+
+void ContextMenuClient::searchWithGoogle(const Frame*)
+{
+ notImplemented();
+}
+
+void ContextMenuClient::lookUpInDictionary(Frame*)
+{
+ notImplemented();
+}
+
+void ContextMenuClient::speak(const String&)
+{
+ notImplemented();
+}
+
+void ContextMenuClient::stopSpeaking()
+{
+ notImplemented();
+}
+
+bool ContextMenuClient::isSpeaking()
+{
+ notImplemented();
+ return false;
+}
+
+}
+
diff --git a/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
new file mode 100644
index 0000000..07a022c
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2006 Zack Rusin <zack@kde.org>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ContextMenuClientGtk_h
+#define ContextMenuClientGtk_h
+
+#include "ContextMenuClient.h"
+
+typedef struct _WebKitWebView WebKitWebView;
+
+namespace WebCore {
+ class ContextMenu;
+}
+
+namespace WebKit {
+
+ class ContextMenuClient : public WebCore::ContextMenuClient
+ {
+ public:
+ ContextMenuClient(WebKitWebView*);
+
+ virtual void contextMenuDestroyed();
+
+ virtual WebCore::PlatformMenuDescription getCustomMenuFromDefaultItems(WebCore::ContextMenu*);
+ virtual void contextMenuItemSelected(WebCore::ContextMenuItem*, const WebCore::ContextMenu*);
+
+ virtual void downloadURL(const WebCore::KURL& url);
+ virtual void copyImageToClipboard(const WebCore::HitTestResult&);
+ virtual void searchWithGoogle(const WebCore::Frame*);
+ virtual void lookUpInDictionary(WebCore::Frame*);
+ virtual void speak(const WTF::String&);
+ virtual void stopSpeaking();
+ virtual bool isSpeaking();
+
+ private:
+ WebKitWebView* m_webView;
+ };
+}
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp
new file mode 100644
index 0000000..6031b62
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.cpp
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Jan Michael Alonzo
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include "config.h"
+#include "DocumentLoaderGtk.h"
+
+#include "GRefPtr.h"
+#include "webkitwebdatasource.h"
+#include "webkitwebdatasourceprivate.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+DocumentLoader::DocumentLoader(const ResourceRequest& request, const SubstituteData& substituteData)
+ : WebCore::DocumentLoader(request, substituteData)
+ , m_isDataSourceReffed(false)
+ , m_dataSource(0)
+{
+}
+
+void DocumentLoader::setDataSource(WebKitWebDataSource* dataSource)
+{
+ ASSERT(!m_dataSource);
+
+ m_dataSource = dataSource;
+ refDataSource();
+}
+
+void DocumentLoader::detachDataSource()
+{
+ unrefDataSource();
+}
+
+void DocumentLoader::attachToFrame()
+{
+ WebCore::DocumentLoader::attachToFrame();
+
+ if (m_dataSource) {
+ refDataSource();
+ return;
+ }
+
+ // We may get to here without having a datasource, when the data
+ // is coming from the page cache.
+ GRefPtr<WebKitWebDataSource> dataSource(adoptGRef(kitNew(this)));
+ setDataSource(dataSource.get());
+}
+
+void DocumentLoader::detachFromFrame()
+{
+ WebCore::DocumentLoader::detachFromFrame();
+
+ if (m_loadingResources.isEmpty())
+ unrefDataSource();
+}
+
+void DocumentLoader::increaseLoadCount(unsigned long identifier)
+{
+ ASSERT(m_dataSource);
+
+ if (m_loadingResources.contains(identifier))
+ return;
+ m_loadingResources.add(identifier);
+ refDataSource();
+}
+
+void DocumentLoader::decreaseLoadCount(unsigned long identifier)
+{
+ HashSet<unsigned long>::iterator it = m_loadingResources.find(identifier);
+
+ // It is valid for a load to be cancelled before it's started.
+ if (it == m_loadingResources.end())
+ return;
+
+ m_loadingResources.remove(it);
+
+ if (m_loadingResources.isEmpty() && !frame())
+ unrefDataSource();
+}
+
+// helper methos to avoid ref count churn
+void DocumentLoader::refDataSource()
+{
+ if (!m_dataSource || m_isDataSourceReffed)
+ return;
+ m_isDataSourceReffed = true;
+ g_object_ref(m_dataSource);
+}
+void DocumentLoader::unrefDataSource()
+{
+ if (!m_isDataSourceReffed)
+ return;
+ ASSERT(m_dataSource);
+ m_isDataSourceReffed = false;
+ g_object_unref(m_dataSource);
+ m_dataSource = 0;
+}
+
+} // end namespace WebKit
diff --git a/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h
new file mode 100644
index 0000000..c601bc5
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/DocumentLoaderGtk.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2009 Jan Michael Alonzo
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef DocumentLoaderGtk_h
+#define DocumentLoaderGtk_h
+
+#include "DocumentLoader.h"
+#include "webkitdefines.h"
+#include "wtf/HashSet.h"
+
+namespace WebCore {
+ class ResourceRequest;
+ class SubstituteData;
+}
+
+namespace WebKit {
+
+class DocumentLoader : public WebCore::DocumentLoader {
+public:
+ static PassRefPtr<WebKit::DocumentLoader> create(const WebCore::ResourceRequest& request, const WebCore::SubstituteData& data)
+ {
+ return adoptRef(new DocumentLoader(request, data));
+ }
+
+ void setDataSource(WebKitWebDataSource*);
+ void detachDataSource();
+ WebKitWebDataSource* dataSource() const { return m_dataSource; }
+
+ void increaseLoadCount(unsigned long identifier);
+ void decreaseLoadCount(unsigned long identifier);
+
+private:
+ DocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
+
+ virtual void attachToFrame();
+ virtual void detachFromFrame();
+
+ void refDataSource();
+ void unrefDataSource();
+
+ bool m_isDataSourceReffed;
+ WebKitWebDataSource* m_dataSource;
+ HashSet<unsigned long> m_loadingResources;
+};
+
+} // end namespace WebKit
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp
new file mode 100644
index 0000000..836ec28
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.cpp
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2009, 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "DragClientGtk.h"
+
+#include "ClipboardGtk.h"
+#include "ClipboardUtilitiesGtk.h"
+#include "DataObjectGtk.h"
+#include "Document.h"
+#include "DragController.h"
+#include "Element.h"
+#include "Frame.h"
+#include "GOwnPtrGtk.h"
+#include "GRefPtrGtk.h"
+#include "GtkVersioning.h"
+#include "NotImplemented.h"
+#include "PasteboardHelper.h"
+#include "RenderObject.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebviewprivate.h"
+#include "webkitwebview.h"
+#include <gdk/gdk.h>
+#include <gtk/gtk.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+#ifdef GTK_API_VERSION_2
+static gboolean dragIconWindowDrawEventCallback(GtkWidget* widget, GdkEventExpose* event, DragClient* client)
+{
+ RefPtr<cairo_t> context = adoptRef(gdk_cairo_create(event->window));
+ client->drawDragIconWindow(widget, context.get());
+ return TRUE;
+}
+#else
+static gboolean dragIconWindowDrawEventCallback(GtkWidget* widget, cairo_t* context, DragClient* client)
+{
+ if (!gdk_cairo_get_clip_rectangle(context, 0))
+ return FALSE;
+ client->drawDragIconWindow(widget, context);
+ return TRUE;
+}
+#endif // GTK_API_VERSION_2
+
+DragClient::DragClient(WebKitWebView* webView)
+ : m_webView(webView)
+ , m_startPos(0, 0)
+ , m_dragIconWindow(gtk_window_new(GTK_WINDOW_POPUP))
+{
+#ifdef GTK_API_VERSION_2
+ g_signal_connect(m_dragIconWindow, "expose-event", G_CALLBACK(dragIconWindowDrawEventCallback), this);
+#else
+ g_signal_connect(m_dragIconWindow, "draw", G_CALLBACK(dragIconWindowDrawEventCallback), this);
+#endif
+}
+
+DragClient::~DragClient()
+{
+ gtk_widget_destroy(m_dragIconWindow);
+}
+
+void DragClient::willPerformDragDestinationAction(DragDestinationAction, DragData*)
+{
+}
+
+void DragClient::willPerformDragSourceAction(DragSourceAction, const IntPoint& startPos, Clipboard*)
+{
+ m_startPos = startPos;
+}
+
+DragDestinationAction DragClient::actionMaskForDrag(DragData*)
+{
+ notImplemented();
+ return DragDestinationActionAny;
+}
+
+DragSourceAction DragClient::dragSourceActionMaskForPoint(const IntPoint&)
+{
+ notImplemented();
+ return DragSourceActionAny;
+}
+
+void DragClient::startDrag(DragImageRef image, const IntPoint& dragImageOrigin, const IntPoint& eventPos, Clipboard* clipboard, Frame* frame, bool linkDrag)
+{
+ ClipboardGtk* clipboardGtk = reinterpret_cast<ClipboardGtk*>(clipboard);
+
+ WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame));
+ RefPtr<DataObjectGtk> dataObject = clipboardGtk->dataObject();
+ GRefPtr<GtkTargetList> targetList(clipboardGtk->helper()->targetListForDataObject(dataObject.get()));
+ GOwnPtr<GdkEvent> currentEvent(gtk_get_current_event());
+
+ GdkDragContext* context = gtk_drag_begin(GTK_WIDGET(m_webView), targetList.get(), dragOperationToGdkDragActions(clipboard->sourceOperation()), 1, currentEvent.get());
+ webView->priv->draggingDataObjects.set(context, dataObject);
+
+ // A drag starting should prevent a double-click from happening. This might
+ // happen if a drag is followed very quickly by another click (like in the DRT).
+ webView->priv->previousClickTime = 0;
+
+ // This strategy originally comes from Chromium:
+ // src/chrome/browser/gtk/tab_contents_drag_source.cc
+ if (image) {
+ m_dragImage = image;
+ IntSize imageSize(cairo_image_surface_get_width(image), cairo_image_surface_get_height(image));
+ gtk_window_resize(GTK_WINDOW(m_dragIconWindow), imageSize.width(), imageSize.height());
+
+ if (!gtk_widget_get_realized(m_dragIconWindow)) {
+ GdkScreen* screen = gtk_widget_get_screen(m_dragIconWindow);
+#ifdef GTK_API_VERSION_2
+ GdkColormap* rgba = gdk_screen_get_rgba_colormap(screen);
+ if (rgba)
+ gtk_widget_set_colormap(m_dragIconWindow, rgba);
+#else
+ GdkVisual* visual = gdk_screen_get_rgba_visual(screen);
+ if (!visual)
+ visual = gdk_screen_get_system_visual(screen);
+ gtk_widget_set_visual(m_dragIconWindow, visual);
+#endif // GTK_API_VERSION_2
+ }
+
+ IntSize origin = eventPos - dragImageOrigin;
+ gtk_drag_set_icon_widget(context, m_dragIconWindow,
+ origin.width(), origin.height());
+ } else
+ gtk_drag_set_icon_default(context);
+}
+
+void DragClient::drawDragIconWindow(GtkWidget* widget, cairo_t* context)
+{
+ cairo_rectangle(context, 0, 0,
+ cairo_image_surface_get_width(m_dragImage.get()),
+ cairo_image_surface_get_height(m_dragImage.get()));
+ cairo_set_operator(context, CAIRO_OPERATOR_SOURCE);
+ cairo_set_source_surface(context, m_dragImage.get(), 0, 0);
+ cairo_fill(context);
+}
+
+DragImageRef DragClient::createDragImageForLink(KURL&, const String&, Frame*)
+{
+ notImplemented();
+ return 0;
+}
+
+void DragClient::dragControllerDestroyed()
+{
+ delete this;
+}
+}
diff --git a/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h
new file mode 100644
index 0000000..3a16ae5
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/DragClientGtk.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef DragClientGtk_h
+#define DragClientGtk_h
+
+#include "DragClient.h"
+#include "GRefPtr.h"
+#include "RefPtrCairo.h"
+
+typedef struct _WebKitWebView WebKitWebView;
+
+namespace WebKit {
+
+ class DragClient : public WebCore::DragClient {
+ public:
+ DragClient(WebKitWebView*);
+ ~DragClient();
+
+ virtual void willPerformDragDestinationAction(WebCore::DragDestinationAction, WebCore::DragData*);
+ virtual void willPerformDragSourceAction(WebCore::DragSourceAction, const WebCore::IntPoint&, WebCore::Clipboard*);
+ virtual WebCore::DragDestinationAction actionMaskForDrag(WebCore::DragData*);
+
+ virtual WebCore::DragSourceAction dragSourceActionMaskForPoint(const WebCore::IntPoint& windowPoint);
+
+ virtual void startDrag(WebCore::DragImageRef dragImage, const WebCore::IntPoint& dragImageOrigin, const WebCore::IntPoint& eventPos, WebCore::Clipboard*, WebCore::Frame*, bool linkDrag = false);
+ virtual WebCore::DragImageRef createDragImageForLink(WebCore::KURL&, const WTF::String& label, WebCore::Frame*);
+
+ virtual void dragControllerDestroyed();
+
+ void drawDragIconWindow(GtkWidget*, cairo_t*);
+
+ private:
+ WebKitWebView* m_webView;
+ WebCore::IntPoint m_startPos;
+ GtkWidget* m_dragIconWindow;
+ RefPtr<cairo_surface_t> m_dragImage;
+ };
+}
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp
new file mode 100644
index 0000000..6f31887
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.cpp
@@ -0,0 +1,534 @@
+/*
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
+ * Copyright (C) 2010 Joone Hur <joone@kldp.org>
+ * Copyright (C) 2009 Google Inc. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "DumpRenderTreeSupportGtk.h"
+
+#include "APICast.h"
+#include "AXObjectCache.h"
+#include "AccessibilityObjectWrapperAtk.h"
+#include "AnimationController.h"
+#include "DOMWrapperWorld.h"
+#include "Document.h"
+#include "FocusController.h"
+#include "FrameLoaderClientGtk.h"
+#include "FrameTree.h"
+#include "FrameView.h"
+#include "GCController.h"
+#include "GraphicsContext.h"
+#include "JSDOMWindow.h"
+#include "JSDocument.h"
+#include "JSElement.h"
+#include "JSLock.h"
+#include "JSNodeList.h"
+#include "JSValue.h"
+#include "NodeList.h"
+#include "PageGroup.h"
+#include "PlatformString.h"
+#include "PrintContext.h"
+#include "RenderListItem.h"
+#include "RenderTreeAsText.h"
+#include "RenderView.h"
+#include "SecurityOrigin.h"
+#include "WorkerThread.h"
+#include "webkitwebframe.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebview.h"
+#include "webkitwebviewprivate.h"
+#include <JavaScriptCore/APICast.h>
+
+#if ENABLE(SVG)
+#include "SVGDocumentExtensions.h"
+#include "SVGSMILElement.h"
+#endif
+
+using namespace JSC;
+using namespace WebCore;
+using namespace WebKit;
+
+bool DumpRenderTreeSupportGtk::s_drtRun = false;
+bool DumpRenderTreeSupportGtk::s_linksIncludedInTabChain = true;
+
+DumpRenderTreeSupportGtk::DumpRenderTreeSupportGtk()
+{
+}
+
+DumpRenderTreeSupportGtk::~DumpRenderTreeSupportGtk()
+{
+}
+
+void DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled(bool enabled)
+{
+ s_drtRun = enabled;
+}
+
+bool DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled()
+{
+ return s_drtRun;
+}
+void DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(bool enabled)
+{
+ s_linksIncludedInTabChain = enabled;
+}
+
+bool DumpRenderTreeSupportGtk::linksIncludedInFocusChain()
+{
+ return s_linksIncludedInTabChain;
+}
+
+JSValueRef DumpRenderTreeSupportGtk::nodesFromRect(JSContextRef context, JSValueRef value, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping)
+{
+ JSLock lock(SilenceAssertionsOnly);
+ ExecState* exec = toJS(context);
+ if (!value)
+ return JSValueMakeUndefined(context);
+ JSValue jsValue = toJS(exec, value);
+ if (!jsValue.inherits(&JSDocument::s_info))
+ return JSValueMakeUndefined(context);
+
+ JSDocument* jsDocument = static_cast<JSDocument*>(asObject(jsValue));
+ Document* document = jsDocument->impl();
+ RefPtr<NodeList> nodes = document->nodesFromRect(x, y, top, right, bottom, left, ignoreClipping);
+ return toRef(exec, toJS(exec, jsDocument->globalObject(), nodes.get()));
+}
+
+/**
+ * getFrameChildren:
+ * @frame: a #WebKitWebFrame
+ *
+ * Return value: child frames of @frame
+ */
+GSList* DumpRenderTreeSupportGtk::getFrameChildren(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return 0;
+
+ GSList* children = 0;
+ for (Frame* child = coreFrame->tree()->firstChild(); child; child = child->tree()->nextSibling()) {
+ FrameLoader* loader = child->loader();
+ WebKit::FrameLoaderClient* client = static_cast<WebKit::FrameLoaderClient*>(loader->client());
+ if (client)
+ children = g_slist_append(children, client->webFrame());
+ }
+
+ return children;
+}
+
+/**
+ * getInnerText:
+ * @frame: a #WebKitWebFrame
+ *
+ * Return value: inner text of @frame
+ */
+CString DumpRenderTreeSupportGtk::getInnerText(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString(""));
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return CString("");
+
+ FrameView* view = coreFrame->view();
+
+ if (view && view->layoutPending())
+ view->layout();
+
+ Element* documentElement = coreFrame->document()->documentElement();
+ return documentElement->innerText().utf8();
+}
+
+/**
+ * dumpRenderTree:
+ * @frame: a #WebKitWebFrame
+ *
+ * Return value: Non-recursive render tree dump of @frame
+ */
+CString DumpRenderTreeSupportGtk::dumpRenderTree(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString(""));
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return CString("");
+
+ FrameView* view = coreFrame->view();
+
+ if (view && view->layoutPending())
+ view->layout();
+
+ return externalRepresentation(coreFrame).utf8();
+}
+
+/**
+ * counterValueForElementById:
+ * @frame: a #WebKitWebFrame
+ * @id: an element ID string
+ *
+ * Return value: The counter value of element @id in @frame
+ */
+CString DumpRenderTreeSupportGtk::counterValueForElementById(WebKitWebFrame* frame, const char* id)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString());
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return CString();
+
+ Element* coreElement = coreFrame->document()->getElementById(AtomicString(id));
+ if (!coreElement)
+ return CString();
+
+ return counterValueForElement(coreElement).utf8();
+}
+
+/**
+ * numberForElementById
+ * @frame: a #WebKitWebFrame
+ * @id: an element ID string
+ * @pageWidth: width of a page
+ * @pageHeight: height of a page
+ *
+ * Return value: The number of page where the specified element will be put
+ */
+int DumpRenderTreeSupportGtk::pageNumberForElementById(WebKitWebFrame* frame, const char* id, float pageWidth, float pageHeight)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return -1;
+
+ Element* coreElement = coreFrame->document()->getElementById(AtomicString(id));
+ if (!coreElement)
+ return -1;
+ return PrintContext::pageNumberForElement(coreElement, FloatSize(pageWidth, pageHeight));
+}
+
+/**
+ * numberOfPagesForFrame
+ * @frame: a #WebKitWebFrame
+ * @pageWidth: width of a page
+ * @pageHeight: height of a page
+ *
+ * Return value: The number of pages to be printed.
+ */
+int DumpRenderTreeSupportGtk::numberOfPagesForFrame(WebKitWebFrame* frame, float pageWidth, float pageHeight)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return -1;
+
+ return PrintContext::numberOfPages(coreFrame, FloatSize(pageWidth, pageHeight));
+}
+
+/**
+ * pageProperty
+ * @frame: a #WebKitWebFrame
+ * @propertyName: name of a property
+ * @pageNumber: number of a page
+ *
+ * Return value: The value of the given property name.
+ */
+CString DumpRenderTreeSupportGtk::pageProperty(WebKitWebFrame* frame, const char* propertyName, int pageNumber)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString());
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return CString();
+
+ return PrintContext::pageProperty(coreFrame, propertyName, pageNumber).utf8();
+}
+
+/**
+ * isPageBoxVisible
+ * @frame: a #WebKitWebFrame
+ * @pageNumber: number of a page
+ *
+ * Return value: TRUE if a page box is visible.
+ */
+bool DumpRenderTreeSupportGtk::isPageBoxVisible(WebKitWebFrame* frame, int pageNumber)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), false);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return false;
+
+ return coreFrame->document()->isPageBoxVisible(pageNumber);
+}
+
+/**
+ * pageSizeAndMarginsInPixels
+ * @frame: a #WebKitWebFrame
+ * @pageNumber: number of a page
+ * @width: width of a page
+ * @height: height of a page
+ * @marginTop: top margin of a page
+ * @marginRight: right margin of a page
+ * @marginBottom: bottom margin of a page
+ * @marginLeft: left margin of a page
+ *
+ * Return value: The value of page size and margin.
+ */
+CString DumpRenderTreeSupportGtk::pageSizeAndMarginsInPixels(WebKitWebFrame* frame, int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), CString());
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return CString();
+
+ return PrintContext::pageSizeAndMarginsInPixels(coreFrame, pageNumber, width, height, marginTop, marginRight, marginBottom, marginLeft).utf8();
+}
+
+/**
+ * addUserStyleSheet
+ * @frame: a #WebKitWebFrame
+ * @sourceCode: code of a user stylesheet
+ *
+ */
+void DumpRenderTreeSupportGtk::addUserStyleSheet(WebKitWebFrame* frame, const char* sourceCode, bool allFrames)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ WebKitWebView* webView = getViewFromFrame(frame);
+ Page* page = core(webView);
+ page->group().addUserStyleSheetToWorld(mainThreadNormalWorld(), sourceCode, KURL(), 0, 0, allFrames ? InjectInAllFrames : InjectInTopFrameOnly);
+}
+
+/**
+ * getPendingUnloadEventCount:
+ * @frame: a #WebKitWebFrame
+ *
+ * Return value: number of pending unload events
+ */
+guint DumpRenderTreeSupportGtk::getPendingUnloadEventCount(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ return core(frame)->domWindow()->pendingUnloadEventListeners();
+}
+
+bool DumpRenderTreeSupportGtk::pauseAnimation(WebKitWebFrame* frame, const char* name, double time, const char* element)
+{
+ ASSERT(core(frame));
+ Element* coreElement = core(frame)->document()->getElementById(AtomicString(element));
+ if (!coreElement || !coreElement->renderer())
+ return false;
+ return core(frame)->animation()->pauseAnimationAtTime(coreElement->renderer(), AtomicString(name), time);
+}
+
+bool DumpRenderTreeSupportGtk::pauseTransition(WebKitWebFrame* frame, const char* name, double time, const char* element)
+{
+ ASSERT(core(frame));
+ Element* coreElement = core(frame)->document()->getElementById(AtomicString(element));
+ if (!coreElement || !coreElement->renderer())
+ return false;
+ return core(frame)->animation()->pauseTransitionAtTime(coreElement->renderer(), AtomicString(name), time);
+}
+
+bool DumpRenderTreeSupportGtk::pauseSVGAnimation(WebKitWebFrame* frame, const char* animationId, double time, const char* elementId)
+{
+ ASSERT(core(frame));
+#if ENABLE(SVG)
+ Document* document = core(frame)->document();
+ if (!document || !document->svgExtensions())
+ return false;
+ Element* coreElement = document->getElementById(AtomicString(animationId));
+ if (!coreElement || !SVGSMILElement::isSMILElement(coreElement))
+ return false;
+ return document->accessSVGExtensions()->sampleAnimationAtTime(elementId, static_cast<SVGSMILElement*>(coreElement), time);
+#else
+ return false;
+#endif
+}
+
+CString DumpRenderTreeSupportGtk::markerTextForListItem(WebKitWebFrame* frame, JSContextRef context, JSValueRef nodeObject)
+{
+ JSC::ExecState* exec = toJS(context);
+ Element* element = toElement(toJS(exec, nodeObject));
+ if (!element)
+ return CString();
+
+ return WebCore::markerTextForListItem(element).utf8();
+}
+
+unsigned int DumpRenderTreeSupportGtk::numberOfActiveAnimations(WebKitWebFrame* frame)
+{
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return 0;
+
+ return coreFrame->animation()->numberOfActiveAnimations();
+}
+
+void DumpRenderTreeSupportGtk::suspendAnimations(WebKitWebFrame* frame)
+{
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ return coreFrame->animation()->suspendAnimations();
+}
+
+void DumpRenderTreeSupportGtk::resumeAnimations(WebKitWebFrame* frame)
+{
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ return coreFrame->animation()->resumeAnimations();
+}
+
+void DumpRenderTreeSupportGtk::clearMainFrameName(WebKitWebFrame* frame)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+
+ core(frame)->tree()->clearName();
+}
+
+AtkObject* DumpRenderTreeSupportGtk::getRootAccessibleElement(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+#if HAVE(ACCESSIBILITY)
+ if (!AXObjectCache::accessibilityEnabled())
+ AXObjectCache::enableAccessibility();
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ if (!priv->coreFrame || !priv->coreFrame->document())
+ return 0;
+
+ AtkObject* wrapper = priv->coreFrame->document()->axObjectCache()->rootObject()->wrapper();
+ if (!wrapper)
+ return 0;
+
+ return wrapper;
+#else
+ return 0;
+#endif
+}
+
+AtkObject* DumpRenderTreeSupportGtk::getFocusedAccessibleElement(WebKitWebFrame* frame)
+{
+#if HAVE(ACCESSIBILITY)
+ AtkObject* wrapper = getRootAccessibleElement(frame);
+ if (!wrapper)
+ return 0;
+
+ return webkit_accessible_get_focused_element(WEBKIT_ACCESSIBLE(wrapper));
+#else
+ return 0;
+#endif
+}
+
+void DumpRenderTreeSupportGtk::executeCoreCommandByName(WebKitWebView* webView, const gchar* name, const gchar* value)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(name);
+ g_return_if_fail(value);
+
+ core(webView)->focusController()->focusedOrMainFrame()->editor()->command(name).execute(value);
+}
+
+bool DumpRenderTreeSupportGtk::isCommandEnabled(WebKitWebView* webView, const gchar* name)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+ g_return_val_if_fail(name, FALSE);
+
+ return core(webView)->focusController()->focusedOrMainFrame()->editor()->command(name).isEnabled();
+}
+
+void DumpRenderTreeSupportGtk::whiteListAccessFromOrigin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains)
+{
+ SecurityOrigin::addOriginAccessWhitelistEntry(*SecurityOrigin::createFromString(sourceOrigin), destinationProtocol, destinationHost, allowDestinationSubdomains);
+}
+
+void DumpRenderTreeSupportGtk::resetOriginAccessWhiteLists()
+{
+ SecurityOrigin::resetOriginAccessWhitelists();
+}
+
+void DumpRenderTreeSupportGtk::gcCollectJavascriptObjects()
+{
+ gcController().garbageCollectNow();
+}
+
+void DumpRenderTreeSupportGtk::gcCollectJavascriptObjectsOnAlternateThread(bool waitUntilDone)
+{
+ gcController().garbageCollectOnAlternateThreadForDebugging(waitUntilDone);
+}
+
+unsigned long DumpRenderTreeSupportGtk::gcCountJavascriptObjects()
+{
+ JSC::JSLock lock(JSC::SilenceAssertionsOnly);
+ return JSDOMWindow::commonJSGlobalData()->heap.objectCount();
+}
+
+void DumpRenderTreeSupportGtk::layoutFrame(WebKitWebFrame* frame)
+{
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ FrameView* view = coreFrame->view();
+ if (!view)
+ return;
+
+ view->layout();
+}
+
+// For testing fast/viewport.
+void DumpRenderTreeSupportGtk::dumpConfigurationForViewport(WebKitWebView* webView, gint availableWidth, gint availableHeight)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ ViewportArguments arguments = webView->priv->corePage->mainFrame()->document()->viewportArguments();
+ // desktopWidth = 980, deviceWidth = 320, deviceHeight = 480, deviceDPI = 160
+ ViewportAttributes attrs = computeViewportAttributes(arguments, 980, 320, 480, 160, IntSize(availableWidth, availableHeight));
+
+ fprintf(stdout, "viewport size %dx%d scale %f with limits [%f, %f]\n", attrs.layoutSize.width(), attrs.layoutSize.height(), attrs.initialScale, attrs.minimumScale, attrs.maximumScale);
+}
+
+unsigned int DumpRenderTreeSupportGtk::workerThreadCount()
+{
+#if ENABLE(WORKERS)
+ return WebCore::WorkerThread::workerThreadCount();
+#else
+ return 0;
+#endif
+}
+
+bool DumpRenderTreeSupportGtk::webkitWebFrameSelectionHasSpellingMarker(WebKitWebFrame *frame, gint from, gint length)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), FALSE);
+
+ return core(frame)->editor()->selectionStartHasSpellingMarkerFor(from, length);
+}
diff --git a/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h
new file mode 100644
index 0000000..663f13a
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/DumpRenderTreeSupportGtk.h
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) Research In Motion Limited 2010. All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef DumpRenderTreeSupportGtk_h
+#define DumpRenderTreeSupportGtk_h
+
+
+#include "JSStringRef.h"
+#include <webkit/webkitdefines.h>
+
+#include <atk/atk.h>
+#include <glib.h>
+#include <webkit/webkitdefines.h>
+#include <webkit/webkitwebframe.h>
+#include <wtf/text/CString.h>
+
+class DumpRenderTreeSupportGtk {
+
+public:
+ DumpRenderTreeSupportGtk();
+ ~DumpRenderTreeSupportGtk();
+
+ static void setDumpRenderTreeModeEnabled(bool);
+ static bool dumpRenderTreeModeEnabled();
+
+ static void setLinksIncludedInFocusChain(bool);
+ static bool linksIncludedInFocusChain();
+ static JSValueRef nodesFromRect(JSContextRef context, JSValueRef value, int x, int y, unsigned top, unsigned right, unsigned bottom, unsigned left, bool ignoreClipping);
+ static void dumpConfigurationForViewport(WebKitWebView* webView, gint availableWidth, gint availableHeight);
+
+ // FIXME: Move these to webkitwebframe.h once their API has been discussed.
+ static GSList* getFrameChildren(WebKitWebFrame*);
+ static WTF::CString getInnerText(WebKitWebFrame*);
+ static WTF::CString dumpRenderTree(WebKitWebFrame*);
+ static WTF::CString counterValueForElementById(WebKitWebFrame*, const char* id);
+ static int pageNumberForElementById(WebKitWebFrame*, const char* id, float pageWidth, float pageHeight);
+ static int numberOfPagesForFrame(WebKitWebFrame*, float pageWidth, float pageHeight);
+ static WTF::CString pageProperty(WebKitWebFrame*, const char* propertyName, int pageNumber);
+ static bool isPageBoxVisible(WebKitWebFrame*, int pageNumber);
+ static WTF::CString pageSizeAndMarginsInPixels(WebKitWebFrame*, int pageNumber, int width, int height, int marginTop, int marginRight, int marginBottom, int marginLeft);
+ static void addUserStyleSheet(WebKitWebFrame*, const char* sourceCode, bool allFrames);
+ static guint getPendingUnloadEventCount(WebKitWebFrame*);
+ static bool pauseAnimation(WebKitWebFrame*, const char* name, double time, const char* element);
+ static bool pauseTransition(WebKitWebFrame*, const char* name, double time, const char* element);
+ static bool pauseSVGAnimation(WebKitWebFrame*, const char* animationId, double time, const char* elementId);
+ static WTF::CString markerTextForListItem(WebKitWebFrame*, JSContextRef, JSValueRef nodeObject);
+ static unsigned int numberOfActiveAnimations(WebKitWebFrame*);
+ static void suspendAnimations(WebKitWebFrame*);
+ static void resumeAnimations(WebKitWebFrame*);
+ static void clearMainFrameName(WebKitWebFrame*);
+ static AtkObject* getFocusedAccessibleElement(WebKitWebFrame*);
+ static AtkObject* getRootAccessibleElement(WebKitWebFrame*);
+ static void layoutFrame(WebKitWebFrame*);
+
+ // WebKitWebView
+ static void executeCoreCommandByName(WebKitWebView*, const gchar* name, const gchar* value);
+ static bool isCommandEnabled(WebKitWebView*, const gchar* name);
+
+ // GC
+ static void gcCollectJavascriptObjects();
+ static void gcCollectJavascriptObjectsOnAlternateThread(bool waitUntilDone);
+ static unsigned long gcCountJavascriptObjects();
+
+ static void whiteListAccessFromOrigin(const gchar* sourceOrigin, const gchar* destinationProtocol, const gchar* destinationHost, bool allowDestinationSubdomains);
+ static void resetOriginAccessWhiteLists();
+ static unsigned int workerThreadCount();
+ static bool webkitWebFrameSelectionHasSpellingMarker(WebKitWebFrame*, gint from, gint length);
+
+private:
+ static bool s_drtRun;
+ static bool s_linksIncludedInTabChain;
+};
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
new file mode 100644
index 0000000..ee9bf9a
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
@@ -0,0 +1,1025 @@
+/*
+ * Copyright (C) 2007 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2009 Diego Escalante Urrelo <diegoe@gnome.org>
+ * Copyright (C) 2006, 2007 Apple Inc. All rights reserved.
+ * Copyright (C) 2009, 2010 Igalia S.L.
+ * Copyright (C) 2010, Martin Robinson <mrobinson@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "EditorClientGtk.h"
+
+#include "DataObjectGtk.h"
+#include "EditCommand.h"
+#include "Editor.h"
+#include <enchant.h>
+#include "EventNames.h"
+#include "FocusController.h"
+#include "Frame.h"
+#include <glib.h>
+#include "KeyboardEvent.h"
+#include "markup.h"
+#include "NotImplemented.h"
+#include "Page.h"
+#include "PasteboardHelperGtk.h"
+#include "PlatformKeyboardEvent.h"
+#include "WebKitDOMBinding.h"
+#include "WebKitDOMCSSStyleDeclarationPrivate.h"
+#include "WebKitDOMHTMLElementPrivate.h"
+#include "WebKitDOMNodePrivate.h"
+#include "WebKitDOMRangePrivate.h"
+#include "WindowsKeyboardCodes.h"
+#include "webkitglobalsprivate.h"
+#include "webkitmarshal.h"
+#include "webkitwebsettingsprivate.h"
+#include "webkitwebviewprivate.h"
+#include <wtf/text/CString.h>
+
+// Arbitrary depth limit for the undo stack, to keep it from using
+// unbounded memory. This is the maximum number of distinct undoable
+// actions -- unbroken stretches of typed characters are coalesced
+// into a single action.
+#define maximumUndoStackDepth 1000
+
+using namespace WebCore;
+
+namespace WebKit {
+
+static void imContextCommitted(GtkIMContext* context, const gchar* compositionString, EditorClient* client)
+{
+ Frame* frame = core(client->webView())->focusController()->focusedOrMainFrame();
+ if (!frame || !frame->editor()->canEdit())
+ return;
+
+ // If this signal fires during a keydown event when we are not in the middle
+ // of a composition, then treat this 'commit' as a normal key event and just
+ // change the editable area right before the keypress event.
+ if (client->treatContextCommitAsKeyEvent()) {
+ client->updatePendingComposition(compositionString);
+ return;
+ }
+
+ // If this signal fires during a mousepress event when we are in the middle
+ // of a composition, skip this 'commit' because the composition is already confirmed.
+ if (client->preventNextCompositionCommit())
+ return;
+
+ frame->editor()->confirmComposition(String::fromUTF8(compositionString));
+ client->clearPendingComposition();
+}
+
+static void imContextPreeditChanged(GtkIMContext* context, EditorClient* client)
+{
+ Frame* frame = core(client->webView())->focusController()->focusedOrMainFrame();
+ if (!frame || !frame->editor()->canEdit())
+ return;
+
+ // We ignore the provided PangoAttrList for now.
+ GOwnPtr<gchar> newPreedit(0);
+ gtk_im_context_get_preedit_string(context, &newPreedit.outPtr(), 0, 0);
+
+ String preeditString = String::fromUTF8(newPreedit.get());
+ Vector<CompositionUnderline> underlines;
+ underlines.append(CompositionUnderline(0, preeditString.length(), Color(0, 0, 0), false));
+ frame->editor()->setComposition(preeditString, underlines, 0, 0);
+}
+
+static void backspaceCallback(GtkWidget* widget, EditorClient* client)
+{
+ g_signal_stop_emission_by_name(widget, "backspace");
+ client->addPendingEditorCommand("DeleteBackward");
+}
+
+static void selectAllCallback(GtkWidget* widget, gboolean select, EditorClient* client)
+{
+ g_signal_stop_emission_by_name(widget, "select-all");
+ client->addPendingEditorCommand(select ? "SelectAll" : "Unselect");
+}
+
+static void cutClipboardCallback(GtkWidget* widget, EditorClient* client)
+{
+ g_signal_stop_emission_by_name(widget, "cut-clipboard");
+ client->addPendingEditorCommand("Cut");
+}
+
+static void copyClipboardCallback(GtkWidget* widget, EditorClient* client)
+{
+ g_signal_stop_emission_by_name(widget, "copy-clipboard");
+ client->addPendingEditorCommand("Copy");
+}
+
+static void pasteClipboardCallback(GtkWidget* widget, EditorClient* client)
+{
+ g_signal_stop_emission_by_name(widget, "paste-clipboard");
+ client->addPendingEditorCommand("Paste");
+}
+
+static void toggleOverwriteCallback(GtkWidget* widget, EditorClient*)
+{
+ // We don't support toggling the overwrite mode, but the default callback expects
+ // the GtkTextView to have a layout, so we handle this signal just to stop it.
+ g_signal_stop_emission_by_name(widget, "toggle-overwrite");
+}
+
+// GTK+ will still send these signals to the web view. So we can safely stop signal
+// emission without breaking accessibility.
+static void popupMenuCallback(GtkWidget* widget, EditorClient*)
+{
+ g_signal_stop_emission_by_name(widget, "popup-menu");
+}
+
+static void showHelpCallback(GtkWidget* widget, EditorClient*)
+{
+ g_signal_stop_emission_by_name(widget, "show-help");
+}
+
+static const char* const gtkDeleteCommands[][2] = {
+ { "DeleteBackward", "DeleteForward" }, // Characters
+ { "DeleteWordBackward", "DeleteWordForward" }, // Word ends
+ { "DeleteWordBackward", "DeleteWordForward" }, // Words
+ { "DeleteToBeginningOfLine", "DeleteToEndOfLine" }, // Lines
+ { "DeleteToBeginningOfLine", "DeleteToEndOfLine" }, // Line ends
+ { "DeleteToBeginningOfParagraph", "DeleteToEndOfParagraph" }, // Paragraph ends
+ { "DeleteToBeginningOfParagraph", "DeleteToEndOfParagraph" }, // Paragraphs
+ { 0, 0 } // Whitespace (M-\ in Emacs)
+};
+
+static void deleteFromCursorCallback(GtkWidget* widget, GtkDeleteType deleteType, gint count, EditorClient* client)
+{
+ g_signal_stop_emission_by_name(widget, "delete-from-cursor");
+ int direction = count > 0 ? 1 : 0;
+
+ // Ensuring that deleteType <= G_N_ELEMENTS here results in a compiler warning
+ // that the condition is always true.
+
+ if (deleteType == GTK_DELETE_WORDS) {
+ if (!direction) {
+ client->addPendingEditorCommand("MoveWordForward");
+ client->addPendingEditorCommand("MoveWordBackward");
+ } else {
+ client->addPendingEditorCommand("MoveWordBackward");
+ client->addPendingEditorCommand("MoveWordForward");
+ }
+ } else if (deleteType == GTK_DELETE_DISPLAY_LINES) {
+ if (!direction)
+ client->addPendingEditorCommand("MoveToBeginningOfLine");
+ else
+ client->addPendingEditorCommand("MoveToEndOfLine");
+ } else if (deleteType == GTK_DELETE_PARAGRAPHS) {
+ if (!direction)
+ client->addPendingEditorCommand("MoveToBeginningOfParagraph");
+ else
+ client->addPendingEditorCommand("MoveToEndOfParagraph");
+ }
+
+ const char* rawCommand = gtkDeleteCommands[deleteType][direction];
+ if (!rawCommand)
+ return;
+
+ for (int i = 0; i < abs(count); i++)
+ client->addPendingEditorCommand(rawCommand);
+}
+
+static const char* const gtkMoveCommands[][4] = {
+ { "MoveBackward", "MoveForward",
+ "MoveBackwardAndModifySelection", "MoveForwardAndModifySelection" }, // Forward/backward grapheme
+ { "MoveLeft", "MoveRight",
+ "MoveBackwardAndModifySelection", "MoveForwardAndModifySelection" }, // Left/right grapheme
+ { "MoveWordBackward", "MoveWordForward",
+ "MoveWordBackwardAndModifySelection", "MoveWordForwardAndModifySelection" }, // Forward/backward word
+ { "MoveUp", "MoveDown",
+ "MoveUpAndModifySelection", "MoveDownAndModifySelection" }, // Up/down line
+ { "MoveToBeginningOfLine", "MoveToEndOfLine",
+ "MoveToBeginningOfLineAndModifySelection", "MoveToEndOfLineAndModifySelection" }, // Up/down line ends
+ { "MoveParagraphForward", "MoveParagraphBackward",
+ "MoveParagraphForwardAndModifySelection", "MoveParagraphBackwardAndModifySelection" }, // Up/down paragraphs
+ { "MoveToBeginningOfParagraph", "MoveToEndOfParagraph",
+ "MoveToBeginningOfParagraphAndModifySelection", "MoveToEndOfParagraphAndModifySelection" }, // Up/down paragraph ends.
+ { "MovePageUp", "MovePageDown",
+ "MovePageUpAndModifySelection", "MovePageDownAndModifySelection" }, // Up/down page
+ { "MoveToBeginningOfDocument", "MoveToEndOfDocument",
+ "MoveToBeginningOfDocumentAndModifySelection", "MoveToEndOfDocumentAndModifySelection" }, // Begin/end of buffer
+ { 0, 0,
+ 0, 0 } // Horizontal page movement
+};
+
+static void moveCursorCallback(GtkWidget* widget, GtkMovementStep step, gint count, gboolean extendSelection, EditorClient* client)
+{
+ g_signal_stop_emission_by_name(widget, "move-cursor");
+ int direction = count > 0 ? 1 : 0;
+ if (extendSelection)
+ direction += 2;
+
+ if (static_cast<unsigned>(step) >= G_N_ELEMENTS(gtkMoveCommands))
+ return;
+
+ const char* rawCommand = gtkMoveCommands[step][direction];
+ if (!rawCommand)
+ return;
+
+ for (int i = 0; i < abs(count); i++)
+ client->addPendingEditorCommand(rawCommand);
+}
+
+void EditorClient::updatePendingComposition(const gchar* newComposition)
+{
+ // The IMContext may signal more than one completed composition in a row,
+ // in which case we want to append them, rather than overwrite the old one.
+ if (!m_pendingComposition)
+ m_pendingComposition.set(g_strdup(newComposition));
+ else
+ m_pendingComposition.set(g_strconcat(m_pendingComposition.get(), newComposition, NULL));
+}
+
+void EditorClient::willSetInputMethodState()
+{
+}
+
+void EditorClient::setInputMethodState(bool active)
+{
+ WebKitWebViewPrivate* priv = m_webView->priv;
+
+ if (active)
+ gtk_im_context_focus_in(priv->imContext.get());
+ else
+ gtk_im_context_focus_out(priv->imContext.get());
+
+#ifdef MAEMO_CHANGES
+ if (active)
+ hildon_gtk_im_context_show(priv->imContext.get());
+ else
+ hildon_gtk_im_context_hide(priv->imContext.get());
+#endif
+}
+
+bool EditorClient::shouldDeleteRange(Range* range)
+{
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range)));
+ g_signal_emit_by_name(m_webView, "should-delete-range", kitRange.get(), &accept);
+ return accept;
+}
+
+bool EditorClient::shouldShowDeleteInterface(HTMLElement* element)
+{
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMHTMLElement> kitElement(adoptGRef(kit(element)));
+ g_signal_emit_by_name(m_webView, "should-show-delete-interface-for-element", kitElement.get(), &accept);
+ return accept;
+}
+
+bool EditorClient::isContinuousSpellCheckingEnabled()
+{
+ WebKitWebSettings* settings = webkit_web_view_get_settings(m_webView);
+
+ gboolean enabled;
+ g_object_get(settings, "enable-spell-checking", &enabled, NULL);
+
+ return enabled;
+}
+
+bool EditorClient::isGrammarCheckingEnabled()
+{
+ notImplemented();
+ return false;
+}
+
+int EditorClient::spellCheckerDocumentTag()
+{
+ notImplemented();
+ return 0;
+}
+
+bool EditorClient::shouldBeginEditing(WebCore::Range* range)
+{
+ clearPendingComposition();
+
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range)));
+ g_signal_emit_by_name(m_webView, "should-begin-editing", kitRange.get(), &accept);
+ return accept;
+}
+
+bool EditorClient::shouldEndEditing(WebCore::Range* range)
+{
+ clearPendingComposition();
+
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range)));
+ g_signal_emit_by_name(m_webView, "should-end-editing", kitRange.get(), &accept);
+ return accept;
+}
+
+static WebKitInsertAction kit(EditorInsertAction action)
+{
+ switch (action) {
+ case EditorInsertActionTyped:
+ return WEBKIT_INSERT_ACTION_TYPED;
+ case EditorInsertActionPasted:
+ return WEBKIT_INSERT_ACTION_PASTED;
+ case EditorInsertActionDropped:
+ return WEBKIT_INSERT_ACTION_DROPPED;
+ }
+ ASSERT_NOT_REACHED();
+ return WEBKIT_INSERT_ACTION_TYPED;
+}
+
+bool EditorClient::shouldInsertText(const String& string, Range* range, EditorInsertAction action)
+{
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range)));
+ g_signal_emit_by_name(m_webView, "should-insert-text", string.utf8().data(), kitRange.get(), kit(action), &accept);
+ return accept;
+}
+
+static WebKitSelectionAffinity kit(EAffinity affinity)
+{
+ switch (affinity) {
+ case UPSTREAM:
+ return WEBKIT_SELECTION_AFFINITY_UPSTREAM;
+ case DOWNSTREAM:
+ return WEBKIT_SELECTION_AFFINITY_DOWNSTREAM;
+ }
+ ASSERT_NOT_REACHED();
+ return WEBKIT_SELECTION_AFFINITY_UPSTREAM;
+}
+
+bool EditorClient::shouldChangeSelectedRange(Range* fromRange, Range* toRange, EAffinity affinity, bool stillSelecting)
+{
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMRange> kitFromRange(fromRange ? adoptGRef(kit(fromRange)) : 0);
+ GRefPtr<WebKitDOMRange> kitToRange(toRange ? adoptGRef(kit(toRange)) : 0);
+ g_signal_emit_by_name(m_webView, "should-change-selected-range", kitFromRange.get(), kitToRange.get(),
+ kit(affinity), stillSelecting, &accept);
+ return accept;
+}
+
+bool EditorClient::shouldApplyStyle(WebCore::CSSStyleDeclaration* declaration, WebCore::Range* range)
+{
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMCSSStyleDeclaration> kitDeclaration(kit(declaration));
+ GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range)));
+ g_signal_emit_by_name(m_webView, "should-apply-style", kitDeclaration.get(), kitRange.get(), &accept);
+ return accept;
+}
+
+bool EditorClient::shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*)
+{
+ notImplemented();
+ return true;
+}
+
+void EditorClient::didBeginEditing()
+{
+ g_signal_emit_by_name(m_webView, "editing-began");
+}
+
+void EditorClient::respondToChangedContents()
+{
+ g_signal_emit_by_name(m_webView, "user-changed-contents");
+}
+
+static WebKitWebView* viewSettingClipboard = 0;
+static void collapseSelection(GtkClipboard* clipboard, WebKitWebView* webView)
+{
+ if (viewSettingClipboard && viewSettingClipboard == webView)
+ return;
+
+ WebCore::Page* corePage = core(webView);
+ if (!corePage || !corePage->focusController())
+ return;
+
+ Frame* frame = corePage->focusController()->focusedOrMainFrame();
+
+ // Collapse the selection without clearing it
+ ASSERT(frame);
+ frame->selection()->setBase(frame->selection()->extent(), frame->selection()->affinity());
+}
+
+#if PLATFORM(X11)
+static void setSelectionPrimaryClipboardIfNeeded(WebKitWebView* webView)
+{
+ if (!gtk_widget_has_screen(GTK_WIDGET(webView)))
+ return;
+
+ GtkClipboard* clipboard = gtk_widget_get_clipboard(GTK_WIDGET(webView), GDK_SELECTION_PRIMARY);
+ DataObjectGtk* dataObject = DataObjectGtk::forClipboard(clipboard);
+ WebCore::Page* corePage = core(webView);
+ Frame* targetFrame = corePage->focusController()->focusedOrMainFrame();
+
+ if (!targetFrame->selection()->isRange())
+ return;
+
+ dataObject->clear();
+ dataObject->setRange(targetFrame->selection()->toNormalizedRange());
+
+ viewSettingClipboard = webView;
+ GClosure* callback = g_cclosure_new_object(G_CALLBACK(collapseSelection), G_OBJECT(webView));
+ g_closure_set_marshal(callback, g_cclosure_marshal_VOID__VOID);
+ pasteboardHelperInstance()->writeClipboardContents(clipboard, callback);
+ viewSettingClipboard = 0;
+}
+#endif
+
+void EditorClient::respondToChangedSelection()
+{
+ g_signal_emit_by_name(m_webView, "selection-changed");
+
+ WebKitWebViewPrivate* priv = m_webView->priv;
+ WebCore::Page* corePage = core(m_webView);
+ Frame* targetFrame = corePage->focusController()->focusedOrMainFrame();
+
+ if (!targetFrame)
+ return;
+
+ if (targetFrame->editor()->ignoreCompositionSelectionChange())
+ return;
+
+#if PLATFORM(X11)
+ setSelectionPrimaryClipboardIfNeeded(m_webView);
+#endif
+
+ if (!targetFrame->editor()->hasComposition())
+ return;
+
+ unsigned start;
+ unsigned end;
+ if (!targetFrame->editor()->getCompositionSelection(start, end)) {
+ // gtk_im_context_reset() clears the composition for us.
+ gtk_im_context_reset(priv->imContext.get());
+ targetFrame->editor()->confirmCompositionWithoutDisturbingSelection();
+ }
+}
+
+void EditorClient::didEndEditing()
+{
+ g_signal_emit_by_name(m_webView, "editing-ended");
+}
+
+void EditorClient::didWriteSelectionToPasteboard()
+{
+ notImplemented();
+}
+
+void EditorClient::didSetSelectionTypesForPasteboard()
+{
+ notImplemented();
+}
+
+bool EditorClient::isEditable()
+{
+ return webkit_web_view_get_editable(m_webView);
+}
+
+void EditorClient::registerCommandForUndo(WTF::PassRefPtr<WebCore::EditCommand> command)
+{
+ if (undoStack.size() == maximumUndoStackDepth)
+ undoStack.removeFirst();
+ if (!m_isInRedo)
+ redoStack.clear();
+ undoStack.append(command);
+}
+
+void EditorClient::registerCommandForRedo(WTF::PassRefPtr<WebCore::EditCommand> command)
+{
+ redoStack.append(command);
+}
+
+void EditorClient::clearUndoRedoOperations()
+{
+ undoStack.clear();
+ redoStack.clear();
+}
+
+bool EditorClient::canUndo() const
+{
+ return !undoStack.isEmpty();
+}
+
+bool EditorClient::canRedo() const
+{
+ return !redoStack.isEmpty();
+}
+
+void EditorClient::undo()
+{
+ if (canUndo()) {
+ RefPtr<WebCore::EditCommand> command(*(--undoStack.end()));
+ undoStack.remove(--undoStack.end());
+ // unapply will call us back to push this command onto the redo stack.
+ command->unapply();
+ }
+}
+
+void EditorClient::redo()
+{
+ if (canRedo()) {
+ RefPtr<WebCore::EditCommand> command(*(--redoStack.end()));
+ redoStack.remove(--redoStack.end());
+
+ ASSERT(!m_isInRedo);
+ m_isInRedo = true;
+ // reapply will call us back to push this command onto the undo stack.
+ command->reapply();
+ m_isInRedo = false;
+ }
+}
+
+bool EditorClient::shouldInsertNode(Node* node, Range* range, EditorInsertAction action)
+{
+ gboolean accept = TRUE;
+ GRefPtr<WebKitDOMRange> kitRange(adoptGRef(kit(range)));
+ GRefPtr<WebKitDOMNode> kitNode(adoptGRef(kit(node)));
+ g_signal_emit_by_name(m_webView, "should-insert-node", kitNode.get(), kitRange.get(), kit(action), &accept);
+ return accept;
+}
+
+void EditorClient::pageDestroyed()
+{
+ delete this;
+}
+
+bool EditorClient::smartInsertDeleteEnabled()
+{
+ notImplemented();
+ return false;
+}
+
+bool EditorClient::isSelectTrailingWhitespaceEnabled()
+{
+ notImplemented();
+ return false;
+}
+
+void EditorClient::toggleContinuousSpellChecking()
+{
+ WebKitWebSettings* settings = webkit_web_view_get_settings(m_webView);
+
+ gboolean enabled;
+ g_object_get(settings, "enable-spell-checking", &enabled, NULL);
+
+ g_object_set(settings, "enable-spell-checking", !enabled, NULL);
+}
+
+void EditorClient::toggleGrammarChecking()
+{
+}
+
+static const unsigned CtrlKey = 1 << 0;
+static const unsigned AltKey = 1 << 1;
+static const unsigned ShiftKey = 1 << 2;
+
+struct KeyDownEntry {
+ unsigned virtualKey;
+ unsigned modifiers;
+ const char* name;
+};
+
+struct KeyPressEntry {
+ unsigned charCode;
+ unsigned modifiers;
+ const char* name;
+};
+
+static const KeyDownEntry keyDownEntries[] = {
+ { 'B', CtrlKey, "ToggleBold" },
+ { 'I', CtrlKey, "ToggleItalic" },
+ { VK_ESCAPE, 0, "Cancel" },
+ { VK_OEM_PERIOD, CtrlKey, "Cancel" },
+ { VK_TAB, 0, "InsertTab" },
+ { VK_TAB, ShiftKey, "InsertBacktab" },
+ { VK_RETURN, 0, "InsertNewline" },
+ { VK_RETURN, CtrlKey, "InsertNewline" },
+ { VK_RETURN, AltKey, "InsertNewline" },
+ { VK_RETURN, AltKey | ShiftKey, "InsertNewline" },
+};
+
+static const KeyPressEntry keyPressEntries[] = {
+ { '\t', 0, "InsertTab" },
+ { '\t', ShiftKey, "InsertBacktab" },
+ { '\r', 0, "InsertNewline" },
+ { '\r', CtrlKey, "InsertNewline" },
+ { '\r', AltKey, "InsertNewline" },
+ { '\r', AltKey | ShiftKey, "InsertNewline" },
+};
+
+void EditorClient::generateEditorCommands(const KeyboardEvent* event)
+{
+ ASSERT(event->type() == eventNames().keydownEvent || event->type() == eventNames().keypressEvent);
+
+ m_pendingEditorCommands.clear();
+
+ // First try to interpret the command as a native GTK+ key binding.
+#ifdef GTK_API_VERSION_2
+ gtk_bindings_activate_event(GTK_OBJECT(m_nativeWidget.get()), event->keyEvent()->gdkEventKey());
+#else
+ gtk_bindings_activate_event(G_OBJECT(m_nativeWidget.get()), event->keyEvent()->gdkEventKey());
+#endif
+ if (m_pendingEditorCommands.size() > 0)
+ return;
+
+ static HashMap<int, const char*> keyDownCommandsMap;
+ static HashMap<int, const char*> keyPressCommandsMap;
+
+ if (keyDownCommandsMap.isEmpty()) {
+ for (unsigned i = 0; i < G_N_ELEMENTS(keyDownEntries); i++)
+ keyDownCommandsMap.set(keyDownEntries[i].modifiers << 16 | keyDownEntries[i].virtualKey, keyDownEntries[i].name);
+
+ for (unsigned i = 0; i < G_N_ELEMENTS(keyPressEntries); i++)
+ keyPressCommandsMap.set(keyPressEntries[i].modifiers << 16 | keyPressEntries[i].charCode, keyPressEntries[i].name);
+ }
+
+ unsigned modifiers = 0;
+ if (event->shiftKey())
+ modifiers |= ShiftKey;
+ if (event->altKey())
+ modifiers |= AltKey;
+ if (event->ctrlKey())
+ modifiers |= CtrlKey;
+
+ // For keypress events, we want charCode(), but keyCode() does that.
+ int mapKey = modifiers << 16 | event->keyCode();
+ if (!mapKey)
+ return;
+ HashMap<int, const char*>* commandMap = event->type() == eventNames().keydownEvent ?
+ &keyDownCommandsMap : &keyPressCommandsMap;
+ if (const char* commandString = commandMap->get(mapKey))
+ m_pendingEditorCommands.append(commandString);
+}
+
+bool EditorClient::executePendingEditorCommands(Frame* frame, bool allowTextInsertion)
+{
+ Vector<Editor::Command> commands;
+ for (size_t i = 0; i < m_pendingEditorCommands.size(); i++) {
+ const char* commandString = m_pendingEditorCommands.at(i);
+ ASSERT(commandString);
+ Editor::Command command = frame->editor()->command(commandString);
+ if (command.isTextInsertion() && !allowTextInsertion)
+ return false;
+
+ commands.append(command);
+ }
+
+ bool success = true;
+ for (size_t i = 0; i < commands.size(); i++) {
+ if (!commands.at(i).execute()) {
+ success = false;
+ break;
+ }
+ }
+
+ m_pendingEditorCommands.clear();
+
+ // If we successfully completed all editor commands, then
+ // this signals a canceling of the composition.
+ if (success)
+ clearPendingComposition();
+
+ return success;
+}
+
+void EditorClient::handleKeyboardEvent(KeyboardEvent* event)
+{
+ Node* node = event->target()->toNode();
+ ASSERT(node);
+ Frame* frame = node->document()->frame();
+ ASSERT(frame);
+
+ const PlatformKeyboardEvent* platformEvent = event->keyEvent();
+ if (!platformEvent)
+ return;
+
+ generateEditorCommands(event);
+ if (m_pendingEditorCommands.size() > 0) {
+
+ // During RawKeyDown events if an editor command will insert text, defer
+ // the insertion until the keypress event. We want keydown to bubble up
+ // through the DOM first.
+ if (platformEvent->type() == PlatformKeyboardEvent::RawKeyDown) {
+ if (executePendingEditorCommands(frame, false))
+ event->setDefaultHandled();
+
+ return;
+ }
+
+ // Only allow text insertion commands if the current node is editable.
+ if (executePendingEditorCommands(frame, frame->editor()->canEdit())) {
+ event->setDefaultHandled();
+ return;
+ }
+ }
+
+ // Don't allow text insertion for nodes that cannot edit.
+ if (!frame->editor()->canEdit())
+ return;
+
+ // This is just a normal text insertion, so wait to execute the insertion
+ // until a keypress event happens. This will ensure that the insertion will not
+ // be reflected in the contents of the field until the keyup DOM event.
+ if (event->type() == eventNames().keypressEvent) {
+
+ // If we have a pending composition at this point, it happened while
+ // filtering a keypress, so we treat it as a normal text insertion.
+ // This will also ensure that if the keypress event handler changed the
+ // currently focused node, the text is still inserted into the original
+ // node (insertText() has this logic, but confirmComposition() does not).
+ if (m_pendingComposition) {
+ frame->editor()->insertText(String::fromUTF8(m_pendingComposition.get()), event);
+ clearPendingComposition();
+ event->setDefaultHandled();
+
+ } else {
+ // Don't insert null or control characters as they can result in unexpected behaviour
+ if (event->charCode() < ' ')
+ return;
+
+ // Don't insert anything if a modifier is pressed
+ if (platformEvent->ctrlKey() || platformEvent->altKey())
+ return;
+
+ if (frame->editor()->insertText(platformEvent->text(), event))
+ event->setDefaultHandled();
+ }
+ }
+}
+
+void EditorClient::handleInputMethodKeydown(KeyboardEvent* event)
+{
+ Frame* targetFrame = core(m_webView)->focusController()->focusedOrMainFrame();
+ if (!targetFrame || !targetFrame->editor()->canEdit())
+ return;
+
+ WebKitWebViewPrivate* priv = m_webView->priv;
+
+ m_preventNextCompositionCommit = false;
+
+ // Some IM contexts (e.g. 'simple') will act as if they filter every
+ // keystroke and just issue a 'commit' signal during handling. In situations
+ // where the 'commit' signal happens during filtering and there is no active
+ // composition, act as if the keystroke was not filtered. The one exception to
+ // this is when the keyval parameter of the GdkKeyEvent is 0, which is often
+ // a key event sent by the IM context for committing the current composition.
+
+ // Here is a typical sequence of events for the 'simple' context:
+ // 1. GDK key press event -> webkit_web_view_key_press_event
+ // 2. Keydown event -> EditorClient::handleInputMethodKeydown
+ // gtk_im_context_filter_keypress returns true, but there is a pending
+ // composition so event->preventDefault is not called (below).
+ // 3. Keydown event bubbles through the DOM
+ // 4. Keydown event -> EditorClient::handleKeyboardEvent
+ // No action taken.
+ // 4. GDK key release event -> webkit_web_view_key_release_event
+ // 5. gtk_im_context_filter_keypress is called on the release event.
+ // Simple does not filter most key releases, so the event continues.
+ // 6. Keypress event bubbles through the DOM.
+ // 7. Keypress event -> EditorClient::handleKeyboardEvent
+ // pending composition is inserted.
+ // 8. Keyup event bubbles through the DOM.
+ // 9. Keyup event -> EditorClient::handleKeyboardEvent
+ // No action taken.
+
+ // There are two situations where we do filter the keystroke:
+ // 1. The IMContext instructed us to filter and we have no pending composition.
+ // 2. The IMContext did not instruct us to filter, but the keystroke caused a
+ // composition in progress to finish. It seems that sometimes SCIM will finish
+ // a composition and not mark the keystroke as filtered.
+ m_treatContextCommitAsKeyEvent = (!targetFrame->editor()->hasComposition())
+ && event->keyEvent()->gdkEventKey()->keyval;
+ clearPendingComposition();
+ if ((gtk_im_context_filter_keypress(priv->imContext.get(), event->keyEvent()->gdkEventKey()) && !m_pendingComposition)
+ || (!m_treatContextCommitAsKeyEvent && !targetFrame->editor()->hasComposition()))
+ event->preventDefault();
+
+ m_treatContextCommitAsKeyEvent = false;
+}
+
+void EditorClient::handleInputMethodMousePress()
+{
+ Frame* targetFrame = core(m_webView)->focusController()->focusedOrMainFrame();
+
+ if (!targetFrame || !targetFrame->editor()->canEdit())
+ return;
+
+ WebKitWebViewPrivate* priv = m_webView->priv;
+
+ // When a mouse press fires, the commit signal happens during a composition.
+ // In this case, if the focused node is changed, the commit signal happens in a diffrent node.
+ // Therefore, we need to confirm the current compositon and ignore the next commit signal.
+ GOwnPtr<gchar> newPreedit(0);
+ gtk_im_context_get_preedit_string(priv->imContext.get(), &newPreedit.outPtr(), 0, 0);
+
+ if (g_utf8_strlen(newPreedit.get(), -1)) {
+ targetFrame->editor()->confirmComposition();
+ m_preventNextCompositionCommit = true;
+ gtk_im_context_reset(priv->imContext.get());
+ }
+}
+
+EditorClient::EditorClient(WebKitWebView* webView)
+ : m_isInRedo(false)
+ , m_webView(webView)
+ , m_preventNextCompositionCommit(false)
+ , m_treatContextCommitAsKeyEvent(false)
+ , m_nativeWidget(gtk_text_view_new())
+{
+ WebKitWebViewPrivate* priv = m_webView->priv;
+ g_signal_connect(priv->imContext.get(), "commit", G_CALLBACK(imContextCommitted), this);
+ g_signal_connect(priv->imContext.get(), "preedit-changed", G_CALLBACK(imContextPreeditChanged), this);
+
+ g_signal_connect(m_nativeWidget.get(), "backspace", G_CALLBACK(backspaceCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "cut-clipboard", G_CALLBACK(cutClipboardCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "copy-clipboard", G_CALLBACK(copyClipboardCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "paste-clipboard", G_CALLBACK(pasteClipboardCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "select-all", G_CALLBACK(selectAllCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "move-cursor", G_CALLBACK(moveCursorCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "delete-from-cursor", G_CALLBACK(deleteFromCursorCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "toggle-overwrite", G_CALLBACK(toggleOverwriteCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "popup-menu", G_CALLBACK(popupMenuCallback), this);
+ g_signal_connect(m_nativeWidget.get(), "show-help", G_CALLBACK(showHelpCallback), this);
+}
+
+EditorClient::~EditorClient()
+{
+ WebKitWebViewPrivate* priv = m_webView->priv;
+ g_signal_handlers_disconnect_by_func(priv->imContext.get(), (gpointer)imContextCommitted, this);
+ g_signal_handlers_disconnect_by_func(priv->imContext.get(), (gpointer)imContextPreeditChanged, this);
+}
+
+void EditorClient::textFieldDidBeginEditing(Element*)
+{
+}
+
+void EditorClient::textFieldDidEndEditing(Element*)
+{
+}
+
+void EditorClient::textDidChangeInTextField(Element*)
+{
+}
+
+bool EditorClient::doTextFieldCommandFromEvent(Element*, KeyboardEvent*)
+{
+ return false;
+}
+
+void EditorClient::textWillBeDeletedInTextField(Element*)
+{
+ notImplemented();
+}
+
+void EditorClient::textDidChangeInTextArea(Element*)
+{
+ notImplemented();
+}
+
+void EditorClient::ignoreWordInSpellDocument(const String& text)
+{
+ GSList* dicts = webkitWebViewGetEnchantDicts(m_webView);
+
+ for (; dicts; dicts = dicts->next) {
+ EnchantDict* dict = static_cast<EnchantDict*>(dicts->data);
+
+ enchant_dict_add_to_session(dict, text.utf8().data(), -1);
+ }
+}
+
+void EditorClient::learnWord(const String& text)
+{
+ GSList* dicts = webkitWebViewGetEnchantDicts(m_webView);
+
+ for (; dicts; dicts = dicts->next) {
+ EnchantDict* dict = static_cast<EnchantDict*>(dicts->data);
+
+ enchant_dict_add_to_personal(dict, text.utf8().data(), -1);
+ }
+}
+
+void EditorClient::checkSpellingOfString(const UChar* text, int length, int* misspellingLocation, int* misspellingLength)
+{
+ GSList* dicts = webkitWebViewGetEnchantDicts(m_webView);
+ if (!dicts)
+ return;
+
+ gchar* ctext = g_utf16_to_utf8(const_cast<gunichar2*>(text), length, 0, 0, 0);
+ int utflen = g_utf8_strlen(ctext, -1);
+
+ PangoLanguage* language = pango_language_get_default();
+ PangoLogAttr* attrs = g_new(PangoLogAttr, utflen+1);
+
+ // pango_get_log_attrs uses an aditional position at the end of the text.
+ pango_get_log_attrs(ctext, -1, -1, language, attrs, utflen+1);
+
+ for (int i = 0; i < length+1; i++) {
+ // We go through each character until we find an is_word_start,
+ // then we get into an inner loop to find the is_word_end corresponding
+ // to it.
+ if (attrs[i].is_word_start) {
+ int start = i;
+ int end = i;
+ int wordLength;
+
+ while (attrs[end].is_word_end < 1)
+ end++;
+
+ wordLength = end - start;
+ // Set the iterator to be at the current word end, so we don't
+ // check characters twice.
+ i = end;
+
+ for (; dicts; dicts = dicts->next) {
+ EnchantDict* dict = static_cast<EnchantDict*>(dicts->data);
+ gchar* cstart = g_utf8_offset_to_pointer(ctext, start);
+ gint bytes = static_cast<gint>(g_utf8_offset_to_pointer(ctext, end) - cstart);
+ gchar* word = g_new0(gchar, bytes+1);
+ int result;
+
+ g_utf8_strncpy(word, cstart, end - start);
+
+ result = enchant_dict_check(dict, word, -1);
+ g_free(word);
+ if (result) {
+ *misspellingLocation = start;
+ *misspellingLength = wordLength;
+ } else {
+ // Stop checking, this word is ok in at least one dict.
+ *misspellingLocation = -1;
+ *misspellingLength = 0;
+ break;
+ }
+ }
+ }
+ }
+
+ g_free(attrs);
+ g_free(ctext);
+}
+
+String EditorClient::getAutoCorrectSuggestionForMisspelledWord(const String& inputWord)
+{
+ // This method can be implemented using customized algorithms for the particular browser.
+ // Currently, it computes an empty string.
+ return String();
+}
+
+void EditorClient::checkGrammarOfString(const UChar*, int, Vector<GrammarDetail>&, int*, int*)
+{
+ notImplemented();
+}
+
+void EditorClient::updateSpellingUIWithGrammarString(const String&, const GrammarDetail&)
+{
+ notImplemented();
+}
+
+void EditorClient::updateSpellingUIWithMisspelledWord(const String&)
+{
+ notImplemented();
+}
+
+void EditorClient::showSpellingUI(bool)
+{
+ notImplemented();
+}
+
+bool EditorClient::spellingUIIsShowing()
+{
+ notImplemented();
+ return false;
+}
+
+void EditorClient::getGuessesForWord(const String& word, const String& context, WTF::Vector<String>& guesses)
+{
+ GSList* dicts = webkitWebViewGetEnchantDicts(m_webView);
+ guesses.clear();
+
+ for (; dicts; dicts = dicts->next) {
+ size_t numberOfSuggestions;
+ size_t i;
+
+ EnchantDict* dict = static_cast<EnchantDict*>(dicts->data);
+ gchar** suggestions = enchant_dict_suggest(dict, word.utf8().data(), -1, &numberOfSuggestions);
+
+ for (i = 0; i < numberOfSuggestions && i < 10; i++)
+ guesses.append(String::fromUTF8(suggestions[i]));
+
+ if (numberOfSuggestions > 0)
+ enchant_dict_free_suggestions(dict, suggestions);
+ }
+}
+
+}
diff --git a/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
new file mode 100644
index 0000000..214dbd6
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
+ * Copyright (C) 2006 Zack Rusin <zack@kde.org>
+ * Copyright (C) 2006 Apple Computer, Inc.
+ * Copyright (C) 2010 Martin Robinson <mrobinson@webkit.org>
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef EditorClientGtk_h
+#define EditorClientGtk_h
+
+#include "EditorClient.h"
+
+#include <wtf/Deque.h>
+#include <wtf/Forward.h>
+#include <wtf/gobject/GOwnPtr.h>
+#include <wtf/gobject/GRefPtr.h>
+
+typedef struct _WebKitWebView WebKitWebView;
+
+namespace WebCore {
+class Frame;
+class KeyboardEvent;
+}
+
+namespace WebKit {
+
+ class EditorClient : public WebCore::EditorClient {
+ protected:
+ bool m_isInRedo;
+
+ WTF::Deque<WTF::RefPtr<WebCore::EditCommand> > undoStack;
+ WTF::Deque<WTF::RefPtr<WebCore::EditCommand> > redoStack;
+
+ public:
+ EditorClient(WebKitWebView*);
+ ~EditorClient();
+ WebKitWebView* webView() { return m_webView; }
+ bool treatContextCommitAsKeyEvent() { return m_treatContextCommitAsKeyEvent; }
+ bool preventNextCompositionCommit() { return m_preventNextCompositionCommit; }
+ void clearPendingComposition() { m_pendingComposition.set(0); }
+ bool hasPendingComposition() { return m_pendingComposition; }
+ void addPendingEditorCommand(const char* command) { m_pendingEditorCommands.append(command); }
+ void updatePendingComposition(const char*);
+ void generateEditorCommands(const WebCore::KeyboardEvent*);
+ bool executePendingEditorCommands(WebCore::Frame*, bool);
+
+ // from EditorClient
+ virtual void pageDestroyed();
+
+ virtual bool shouldDeleteRange(WebCore::Range*);
+ virtual bool shouldShowDeleteInterface(WebCore::HTMLElement*);
+ virtual bool smartInsertDeleteEnabled();
+ virtual bool isSelectTrailingWhitespaceEnabled();
+ virtual bool isContinuousSpellCheckingEnabled();
+ virtual void toggleContinuousSpellChecking();
+ virtual bool isGrammarCheckingEnabled();
+ virtual void toggleGrammarChecking();
+ virtual int spellCheckerDocumentTag();
+
+ virtual bool isEditable();
+
+ virtual bool shouldBeginEditing(WebCore::Range*);
+ virtual bool shouldEndEditing(WebCore::Range*);
+ virtual bool shouldInsertNode(WebCore::Node*, WebCore::Range*, WebCore::EditorInsertAction);
+ virtual bool shouldInsertText(const WTF::String&, WebCore::Range*, WebCore::EditorInsertAction);
+ virtual bool shouldChangeSelectedRange(WebCore::Range* fromRange, WebCore::Range* toRange, WebCore::EAffinity, bool stillSelecting);
+
+ virtual bool shouldApplyStyle(WebCore::CSSStyleDeclaration*, WebCore::Range*);
+
+ virtual bool shouldMoveRangeAfterDelete(WebCore::Range*, WebCore::Range*);
+
+ virtual void didBeginEditing();
+ virtual void respondToChangedContents();
+ virtual void respondToChangedSelection();
+ virtual void didEndEditing();
+ virtual void didWriteSelectionToPasteboard();
+ virtual void didSetSelectionTypesForPasteboard();
+
+ virtual void registerCommandForUndo(WTF::PassRefPtr<WebCore::EditCommand>);
+ virtual void registerCommandForRedo(WTF::PassRefPtr<WebCore::EditCommand>);
+ virtual void clearUndoRedoOperations();
+
+ virtual bool canUndo() const;
+ virtual bool canRedo() const;
+
+ virtual void undo();
+ virtual void redo();
+
+ virtual void handleKeyboardEvent(WebCore::KeyboardEvent*);
+ virtual void handleInputMethodKeydown(WebCore::KeyboardEvent*);
+ virtual void handleInputMethodMousePress();
+
+ virtual void textFieldDidBeginEditing(WebCore::Element*);
+ virtual void textFieldDidEndEditing(WebCore::Element*);
+ virtual void textDidChangeInTextField(WebCore::Element*);
+ virtual bool doTextFieldCommandFromEvent(WebCore::Element*, WebCore::KeyboardEvent*);
+ virtual void textWillBeDeletedInTextField(WebCore::Element*);
+ virtual void textDidChangeInTextArea(WebCore::Element*);
+
+ virtual void ignoreWordInSpellDocument(const WTF::String&);
+ virtual void learnWord(const WTF::String&);
+ virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength);
+ virtual WTF::String getAutoCorrectSuggestionForMisspelledWord(const WTF::String&);
+ virtual void checkGrammarOfString(const UChar*, int length, WTF::Vector<WebCore::GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength);
+ virtual void updateSpellingUIWithGrammarString(const WTF::String&, const WebCore::GrammarDetail&);
+ virtual void updateSpellingUIWithMisspelledWord(const WTF::String&);
+ virtual void showSpellingUI(bool show);
+ virtual bool spellingUIIsShowing();
+ virtual void getGuessesForWord(const WTF::String& word, const WTF::String& context, WTF::Vector<WTF::String>& guesses);
+ virtual void willSetInputMethodState();
+ virtual void setInputMethodState(bool enabled);
+ virtual void requestCheckingOfString(WebCore::SpellChecker*, int, const WTF::String&) {}
+
+ private:
+ WebKitWebView* m_webView;
+ bool m_preventNextCompositionCommit;
+ bool m_treatContextCommitAsKeyEvent;
+ GOwnPtr<gchar> m_pendingComposition;
+ Vector<const char*> m_pendingEditorCommands;
+ GRefPtr<GtkWidget> m_nativeWidget;
+ };
+}
+
+#endif
+
+// vim: ts=4 sw=4 et
diff --git a/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
new file mode 100644
index 0000000..8f1a819
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
@@ -0,0 +1,1363 @@
+/*
+ * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
+ * Copyright (C) 2008, 2009 Collabora Ltd. All rights reserved.
+ * Copyright (C) 2009, 2010 Gustavo Noronha Silva <gns@gnome.org>
+ * Copyright (C) Research In Motion Limited 2009. All rights reserved.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "FrameLoaderClientGtk.h"
+
+#include "ArchiveResource.h"
+#include "CachedFrame.h"
+#include "Color.h"
+#include "DOMObjectCache.h"
+#include "DocumentLoader.h"
+#include "DocumentLoaderGtk.h"
+#include "FormState.h"
+#include "FrameLoader.h"
+#include "FrameNetworkingContextGtk.h"
+#include "FrameTree.h"
+#include "FrameView.h"
+#include "GOwnPtr.h"
+#include "GRefPtr.h"
+#include "GtkPluginWidget.h"
+#include "HTMLAppletElement.h"
+#include "HTMLFormElement.h"
+#include "HTMLFrameElement.h"
+#include "HTMLFrameOwnerElement.h"
+#include "HTMLNames.h"
+#include "HTMLPlugInElement.h"
+#include "JSDOMBinding.h"
+#include "JSDOMWindow.h"
+#include "Language.h"
+#include "MIMETypeRegistry.h"
+#include "MouseEvent.h"
+#include "NotImplemented.h"
+#include "Page.h"
+#include "PluginDatabase.h"
+#include "ProgressTracker.h"
+#include "RenderPart.h"
+#include "ResourceHandle.h"
+#include "ResourceRequest.h"
+#include "ScriptController.h"
+#include "Settings.h"
+#include "webkiterror.h"
+#include "webkitglobals.h"
+#include "webkitglobalsprivate.h"
+#include "webkitnetworkrequest.h"
+#include "webkitnetworkrequestprivate.h"
+#include "webkitnetworkresponse.h"
+#include "webkitnetworkresponseprivate.h"
+#include "webkitviewportattributes.h"
+#include "webkitviewportattributesprivate.h"
+#include "webkitwebdatasourceprivate.h"
+#include "webkitwebframe.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebnavigationaction.h"
+#include "webkitwebnavigationactionprivate.h"
+#include "webkitwebpolicydecision.h"
+#include "webkitwebpolicydecisionprivate.h"
+#include "webkitwebresource.h"
+#include "webkitwebresourceprivate.h"
+#include "webkitwebsettingsprivate.h"
+#include "webkitwebview.h"
+#include "webkitwebviewprivate.h"
+#include <JavaScriptCore/APICast.h>
+#include <gio/gio.h>
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <stdio.h>
+#include <wtf/text/CString.h>
+#include <wtf/text/StringConcatenate.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+FrameLoaderClient::FrameLoaderClient(WebKitWebFrame* frame)
+ : m_frame(frame)
+ , m_policyDecision(0)
+ , m_loadingErrorPage(false)
+ , m_pluginView(0)
+ , m_hasSentResponseToPlugin(false)
+{
+ ASSERT(m_frame);
+}
+
+FrameLoaderClient::~FrameLoaderClient()
+{
+ if (m_policyDecision)
+ g_object_unref(m_policyDecision);
+}
+
+static void initializeDomainsList(HashSet<String>& googleDomains)
+{
+ // Google search domains.
+ googleDomains.add("biz");
+ googleDomains.add("com");
+ googleDomains.add("net");
+ googleDomains.add("org");
+ googleDomains.add("ae");
+ googleDomains.add("ag");
+ googleDomains.add("am");
+ googleDomains.add("at");
+ googleDomains.add("az");
+ googleDomains.add("be");
+ googleDomains.add("bi");
+ googleDomains.add("ca");
+ googleDomains.add("cc");
+ googleDomains.add("cd");
+ googleDomains.add("cg");
+ googleDomains.add("ch");
+ googleDomains.add("cl");
+ googleDomains.add("com.br");
+ googleDomains.add("co.uk");
+ googleDomains.add("co.kr");
+ googleDomains.add("co.jp");
+ googleDomains.add("de");
+ googleDomains.add("dj");
+ googleDomains.add("dk");
+ googleDomains.add("es");
+ googleDomains.add("fi");
+ googleDomains.add("fm");
+ googleDomains.add("fr");
+ googleDomains.add("gg");
+ googleDomains.add("gl");
+ googleDomains.add("gm");
+ googleDomains.add("gs");
+ googleDomains.add("hn");
+ googleDomains.add("hu");
+ googleDomains.add("ie");
+ googleDomains.add("it");
+ googleDomains.add("je");
+ googleDomains.add("kz");
+ googleDomains.add("li");
+ googleDomains.add("lt");
+ googleDomains.add("lu");
+ googleDomains.add("lv");
+ googleDomains.add("ma");
+ googleDomains.add("ms");
+ googleDomains.add("mu");
+ googleDomains.add("mw");
+ googleDomains.add("nl");
+ googleDomains.add("no");
+ googleDomains.add("nu");
+ googleDomains.add("pl");
+ googleDomains.add("pn");
+ googleDomains.add("pt");
+ googleDomains.add("ru");
+ googleDomains.add("rw");
+ googleDomains.add("sh");
+ googleDomains.add("sk");
+ googleDomains.add("sm");
+ googleDomains.add("st");
+ googleDomains.add("td");
+ googleDomains.add("tk");
+ googleDomains.add("tp");
+ googleDomains.add("tv");
+ googleDomains.add("us");
+ googleDomains.add("uz");
+ googleDomains.add("ws");
+}
+
+static bool isGoogleDomain(String host)
+{
+ DEFINE_STATIC_LOCAL(HashSet<String>, googleDomains, ());
+ DEFINE_STATIC_LOCAL(Vector<String>, otherGoogleDomains, ());
+
+ if (googleDomains.isEmpty()) {
+ otherGoogleDomains.append("gmail.com");
+ otherGoogleDomains.append("youtube.com");
+ otherGoogleDomains.append("gstatic.com");
+ otherGoogleDomains.append("ytimg.com");
+
+ initializeDomainsList(googleDomains);
+ }
+
+ // First check if this is one of the various google.com international domains.
+ int position = host.find(".google.");
+ if (position > 0 && googleDomains.contains(host.substring(position + sizeof(".google."))))
+ return true;
+
+ // Then we check the possibility of it being one of the other, .com-only google domains.
+ for (unsigned int i = 0; i < otherGoogleDomains.size(); i++) {
+ if (host.endsWith(otherGoogleDomains.at(i)))
+ return true;
+ }
+
+ return false;
+}
+
+String FrameLoaderClient::userAgent(const KURL& url)
+{
+ WebKitWebSettings* settings = webkit_web_view_get_settings(getViewFromFrame(m_frame));
+
+ gboolean useQuirks;
+ g_object_get(settings, "enable-site-specific-quirks", &useQuirks, NULL);
+
+ // For Google domains, drop the browser's custom User Agent string, and use the standard
+ // WebKit/Safari one, so they don't give us a broken experience.
+ if (useQuirks && isGoogleDomain(url.host()))
+ return webkitUserAgent();
+
+ return String::fromUTF8(webkit_web_settings_get_user_agent(settings));
+}
+
+static void notifyStatus(WebKitWebFrame* frame, WebKitLoadStatus loadStatus)
+{
+ frame->priv->loadStatus = loadStatus;
+ g_object_notify(G_OBJECT(frame), "load-status");
+
+ WebKitWebView* webView = getViewFromFrame(frame);
+ if (frame == webkit_web_view_get_main_frame(webView)) {
+ webView->priv->loadStatus = loadStatus;
+ g_object_notify(G_OBJECT(webView), "load-status");
+ }
+}
+
+static void loadDone(WebKitWebFrame* frame, bool didSucceed)
+{
+ // FIXME: load-done is deprecated. Please remove when signal's been removed.
+ g_signal_emit_by_name(frame, "load-done", didSucceed);
+ notifyStatus(frame, WEBKIT_LOAD_FINISHED);
+}
+
+WTF::PassRefPtr<WebCore::DocumentLoader> FrameLoaderClient::createDocumentLoader(const WebCore::ResourceRequest& request, const SubstituteData& substituteData)
+{
+ RefPtr<WebKit::DocumentLoader> loader = WebKit::DocumentLoader::create(request, substituteData);
+
+ GRefPtr<WebKitWebDataSource> webDataSource(adoptGRef(kitNew(loader.get())));
+ loader->setDataSource(webDataSource.get());
+
+ return loader.release();
+}
+
+void FrameLoaderClient::dispatchWillSubmitForm(FramePolicyFunction policyFunction, PassRefPtr<FormState>)
+{
+ // FIXME: This is surely too simple
+ ASSERT(policyFunction);
+ if (!policyFunction)
+ return;
+ (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyUse);
+}
+
+void FrameLoaderClient::committedLoad(WebCore::DocumentLoader* loader, const char* data, int length)
+{
+ if (!m_pluginView) {
+ ASSERT(loader->frame());
+ loader->commitData(data, length);
+
+ Frame* coreFrame = loader->frame();
+ if (coreFrame && coreFrame->document()->isMediaDocument())
+ loader->cancelMainResourceLoad(coreFrame->loader()->client()->pluginWillHandleLoadError(loader->response()));
+ }
+
+ if (m_pluginView) {
+ if (!m_hasSentResponseToPlugin) {
+ m_pluginView->didReceiveResponse(loader->response());
+ m_hasSentResponseToPlugin = true;
+ }
+
+ // FIXME: We may want to investigate refactoring our plugin loading
+ // code to be similar to mac's.
+ // Also, see http://trac.webkit.org/changeset/24118.
+ if (!m_pluginView)
+ return;
+
+ m_pluginView->didReceiveData(data, length);
+ }
+}
+
+bool
+FrameLoaderClient::shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier)
+{
+ notImplemented();
+ return false;
+}
+
+void FrameLoaderClient::dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const AuthenticationChallenge&)
+{
+ notImplemented();
+}
+
+// We convert this to string because it's easier to use strings as
+// keys in a GHashTable.
+static char* toString(unsigned long identifier)
+{
+ return g_strdup_printf("%ld", identifier);
+}
+
+void FrameLoaderClient::dispatchWillSendRequest(WebCore::DocumentLoader* loader, unsigned long identifier, ResourceRequest& request, const ResourceResponse& redirectResponse)
+{
+ GRefPtr<WebKitNetworkResponse> networkResponse(0);
+
+ // We are adding one more resource to the load, or maybe we are
+ // just redirecting a load.
+ if (redirectResponse.isNull())
+ static_cast<WebKit::DocumentLoader*>(loader)->increaseLoadCount(identifier);
+ else
+ networkResponse = adoptGRef(kitNew(redirectResponse));
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ GOwnPtr<gchar> identifierString(toString(identifier));
+ WebKitWebResource* webResource = webkit_web_view_get_resource(webView, identifierString.get());
+ GRefPtr<WebKitNetworkRequest> networkRequest(adoptGRef(kitNew(request)));
+
+ if (!redirectResponse.isNull()) {
+ // This is a redirect, so we need to update the WebResource's knowledge
+ // of the URI.
+ g_free(webResource->priv->uri);
+ webResource->priv->uri = g_strdup(request.url().string().utf8().data());
+ }
+
+ g_signal_emit_by_name(webView, "resource-request-starting", m_frame, webResource, networkRequest.get(), networkResponse.get());
+
+ // Feed any changes back into the ResourceRequest object.
+ SoupMessage* message = webkit_network_request_get_message(networkRequest.get());
+ if (!message) {
+ request.setURL(KURL(KURL(), String::fromUTF8(webkit_network_request_get_uri(networkRequest.get()))));
+ return;
+ }
+
+ request.updateFromSoupMessage(message);
+}
+
+void FrameLoaderClient::assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader* loader, const ResourceRequest& request)
+{
+ GOwnPtr<gchar> identifierString(toString(identifier));
+
+ WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(g_object_new(WEBKIT_TYPE_WEB_RESOURCE, "uri", request.url().string().utf8().data(), 0));
+
+ if (loader == loader->frameLoader()->provisionalDocumentLoader()
+ && loader->frameLoader()->isLoadingMainFrame()) {
+ webkit_web_view_add_main_resource(getViewFromFrame(m_frame), identifierString.get(), webResource);
+ return;
+ }
+
+ webkit_web_view_add_resource(getViewFromFrame(m_frame), identifierString.get(), webResource);
+}
+
+void FrameLoaderClient::postProgressStartedNotification()
+{
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ g_signal_emit_by_name(webView, "load-started", m_frame);
+
+ g_object_notify(G_OBJECT(webView), "progress");
+}
+
+void FrameLoaderClient::postProgressEstimateChangedNotification()
+{
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ Page* corePage = core(webView);
+
+ g_signal_emit_by_name(webView, "load-progress-changed", lround(corePage->progress()->estimatedProgress()*100));
+
+ g_object_notify(G_OBJECT(webView), "progress");
+}
+
+void FrameLoaderClient::postProgressFinishedNotification()
+{
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ WebKitWebViewPrivate* privateData = webView->priv;
+
+ // We can get a stopLoad() from dispose when the object is being
+ // destroyed, don't emit the signal in that case.
+ if (!privateData->disposing)
+ g_signal_emit_by_name(webView, "load-finished", m_frame);
+}
+
+void FrameLoaderClient::frameLoaderDestroyed()
+{
+ webkit_web_frame_core_frame_gone(m_frame);
+ g_object_unref(m_frame);
+ m_frame = 0;
+ delete this;
+}
+
+void FrameLoaderClient::dispatchDidReceiveResponse(WebCore::DocumentLoader* loader, unsigned long, const ResourceResponse& response)
+{
+ // Update our knowledge of request soup flags - some are only set
+ // after the request is done.
+ loader->request().setSoupMessageFlags(response.soupMessageFlags());
+
+ m_response = response;
+}
+
+void FrameLoaderClient::dispatchDecidePolicyForMIMEType(FramePolicyFunction policyFunction, const String& mimeType, const ResourceRequest& resourceRequest)
+{
+ ASSERT(policyFunction);
+ if (!policyFunction)
+ return;
+
+ if (resourceRequest.isNull()) {
+ (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore);
+ return;
+ }
+
+ WebKitWebView* page = getViewFromFrame(m_frame);
+ GRefPtr<WebKitNetworkRequest> request(adoptGRef(kitNew(resourceRequest)));
+
+ WebKitWebPolicyDecision* policyDecision = webkit_web_policy_decision_new(m_frame, policyFunction);
+ if (m_policyDecision)
+ g_object_unref(m_policyDecision);
+ m_policyDecision = policyDecision;
+
+ gboolean isHandled = false;
+ g_signal_emit_by_name(page, "mime-type-policy-decision-requested", m_frame, request.get(), mimeType.utf8().data(), policyDecision, &isHandled);
+
+ if (isHandled)
+ return;
+
+ GRefPtr<WebKitNetworkResponse> networkResponse(adoptGRef(webkit_web_frame_get_network_response(m_frame)));
+ if (networkResponse) {
+ ResourceResponse response = core(networkResponse.get());
+ if (response.isAttachment()) {
+ webkit_web_policy_decision_download(policyDecision);
+ return;
+ }
+ }
+
+ if (canShowMIMEType(mimeType))
+ webkit_web_policy_decision_use(policyDecision);
+ else
+ webkit_web_policy_decision_ignore(policyDecision);
+}
+
+static WebKitWebNavigationAction* getNavigationAction(const NavigationAction& action, const char* targetFrame)
+{
+ gint button = -1;
+
+ const Event* event = action.event();
+ if (event && event->isMouseEvent()) {
+ const MouseEvent* mouseEvent = static_cast<const MouseEvent*>(event);
+ // DOM button values are 0, 1 and 2 for left, middle and right buttons.
+ // GTK+ uses 1, 2 and 3, so let's add 1 to remain consistent.
+ button = mouseEvent->button() + 1;
+ }
+
+ gint modifierFlags = 0;
+ UIEventWithKeyState* keyStateEvent = findEventWithKeyState(const_cast<Event*>(event));
+ if (keyStateEvent) {
+ if (keyStateEvent->shiftKey())
+ modifierFlags |= GDK_SHIFT_MASK;
+ if (keyStateEvent->ctrlKey())
+ modifierFlags |= GDK_CONTROL_MASK;
+ if (keyStateEvent->altKey())
+ modifierFlags |= GDK_MOD1_MASK;
+ if (keyStateEvent->metaKey())
+ modifierFlags |= GDK_MOD2_MASK;
+ }
+
+ return WEBKIT_WEB_NAVIGATION_ACTION(g_object_new(WEBKIT_TYPE_WEB_NAVIGATION_ACTION,
+ "reason", kit(action.type()),
+ "original-uri", action.url().string().utf8().data(),
+ "button", button,
+ "modifier-state", modifierFlags,
+ "target-frame", targetFrame,
+ NULL));
+}
+
+void FrameLoaderClient::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction policyFunction, const NavigationAction& action, const ResourceRequest& resourceRequest, PassRefPtr<FormState>, const String& frameName)
+{
+ ASSERT(policyFunction);
+ if (!policyFunction)
+ return;
+
+ if (resourceRequest.isNull()) {
+ (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore);
+ return;
+ }
+
+ WebKitWebPolicyDecision* policyDecision = webkit_web_policy_decision_new(m_frame, policyFunction);
+
+ if (m_policyDecision)
+ g_object_unref(m_policyDecision);
+ m_policyDecision = policyDecision;
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ GRefPtr<WebKitNetworkRequest> request(adoptGRef(webkit_network_request_new(resourceRequest.url().string().utf8().data())));
+ GRefPtr<WebKitWebNavigationAction> navigationAction(adoptGRef(getNavigationAction(action, frameName.utf8().data())));
+ gboolean isHandled = false;
+
+ g_signal_emit_by_name(webView, "new-window-policy-decision-requested", m_frame, request.get(), navigationAction.get(), policyDecision, &isHandled);
+
+ // FIXME: I think Qt version marshals this to another thread so when we
+ // have multi-threaded download, we might need to do the same
+ if (!isHandled)
+ (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyUse);
+}
+
+void FrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFunction policyFunction, const NavigationAction& action, const ResourceRequest& resourceRequest, PassRefPtr<FormState>)
+{
+ ASSERT(policyFunction);
+ if (!policyFunction)
+ return;
+
+ if (resourceRequest.isNull()) {
+ (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore);
+ return;
+ }
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ GRefPtr<WebKitNetworkRequest> request(adoptGRef(kitNew(resourceRequest)));
+ WebKitNavigationResponse response;
+ /*
+ * We still support the deprecated navigation-requested signal, if the
+ * application doesn't ignore the navigation then the new signal is
+ * emitted.
+ * navigation-policy-decision-requested must be emitted after
+ * navigation-requested as the policy decision can be async.
+ */
+ g_signal_emit_by_name(webView, "navigation-requested", m_frame, request.get(), &response);
+
+ if (response == WEBKIT_NAVIGATION_RESPONSE_IGNORE) {
+ (core(m_frame)->loader()->policyChecker()->*policyFunction)(PolicyIgnore);
+ return;
+ }
+
+ WebKitWebPolicyDecision* policyDecision = webkit_web_policy_decision_new(m_frame, policyFunction);
+ if (m_policyDecision)
+ g_object_unref(m_policyDecision);
+ m_policyDecision = policyDecision;
+
+ GRefPtr<WebKitWebNavigationAction> navigationAction(adoptGRef(getNavigationAction(action, 0)));
+ gboolean isHandled = false;
+ g_signal_emit_by_name(webView, "navigation-policy-decision-requested", m_frame, request.get(), navigationAction.get(), policyDecision, &isHandled);
+
+ // FIXME Implement default behavior when we can query the backend what protocols it supports
+ if (!isHandled)
+ webkit_web_policy_decision_use(m_policyDecision);
+}
+
+PassRefPtr<Widget> FrameLoaderClient::createPlugin(const IntSize& pluginSize, HTMLPlugInElement* element, const KURL& url, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually)
+{
+ /* Check if we want to embed a GtkWidget, fallback to plugins later */
+ CString urlString = url.string().utf8();
+ CString mimeTypeString = mimeType.utf8();
+
+ ASSERT(paramNames.size() == paramValues.size());
+ GRefPtr<GHashTable> hash = adoptGRef(g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free));
+ for (unsigned i = 0; i < paramNames.size(); ++i) {
+ g_hash_table_insert(hash.get(),
+ g_strdup(paramNames[i].utf8().data()),
+ g_strdup(paramValues[i].utf8().data()));
+ }
+
+ GtkWidget* gtkWidget = 0;
+ g_signal_emit_by_name(getViewFromFrame(m_frame), "create-plugin-widget",
+ mimeTypeString.data(), urlString.data(), hash.get(), &gtkWidget);
+ if (gtkWidget)
+ return adoptRef(new GtkPluginWidget(gtkWidget));
+
+ RefPtr<PluginView> pluginView = PluginView::create(core(m_frame), pluginSize, element, url, paramNames, paramValues, mimeType, loadManually);
+
+ if (pluginView->status() == PluginStatusLoadedSuccessfully)
+ return pluginView;
+
+ return 0;
+}
+
+PassRefPtr<Frame> FrameLoaderClient::createFrame(const KURL& url, const String& name, HTMLFrameOwnerElement* ownerElement,
+ const String& referrer, bool allowsScrolling, int marginWidth, int marginHeight)
+{
+ ASSERT(m_frame);
+ Frame* parentFrame = core(m_frame);
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ WebCore::Page* page = core(webView);
+ ASSERT(page == parentFrame->page());
+
+ WebKitWebFrame* kitFrame = WEBKIT_WEB_FRAME(g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL));
+ WebKitWebFramePrivate* framePrivate = kitFrame->priv;
+ framePrivate->webView = webView;
+
+ RefPtr<Frame> childFrame = Frame::create(page, ownerElement, new FrameLoaderClient(kitFrame));
+ framePrivate->coreFrame = childFrame.get();
+
+ childFrame->tree()->setName(name);
+ parentFrame->tree()->appendChild(childFrame);
+ childFrame->init();
+
+ // The creation of the frame may have run arbitrary JavaScript that removed it from the page already.
+ if (!childFrame->page())
+ return 0;
+
+ g_signal_emit_by_name(webView, "frame-created", kitFrame);
+
+ childFrame->loader()->loadURLIntoChildFrame(url, referrer, childFrame.get());
+
+ // The frame's onload handler may have removed it from the document.
+ if (!childFrame->tree()->parent())
+ return 0;
+
+ return childFrame.release();
+}
+
+void FrameLoaderClient::didTransferChildFrameToNewDocument(WebCore::Page*)
+{
+ ASSERT(m_frame);
+
+ // Update the frame's webview to the new parent's webview.
+ Frame* coreFrame = core(m_frame);
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+
+ Frame* parentCoreFrame = coreFrame->tree()->parent();
+ WebKitWebFrame* parentKitFrame = kit(parentCoreFrame);
+ WebKitWebView* parentWebView = getViewFromFrame(parentKitFrame);
+ if (webView != parentWebView)
+ m_frame->priv->webView = parentWebView;
+
+ ASSERT(core(getViewFromFrame(m_frame)) == coreFrame->page());
+}
+
+void FrameLoaderClient::transferLoadingResourceFromPage(unsigned long identifier, WebCore::DocumentLoader* docLoader, const WebCore::ResourceRequest& request, WebCore::Page* oldPage)
+{
+ ASSERT(oldPage != core(m_frame)->page());
+
+ GOwnPtr<gchar> identifierString(toString(identifier));
+ ASSERT(!webkit_web_view_get_resource(getViewFromFrame(m_frame), identifierString.get()));
+
+ assignIdentifierToInitialRequest(identifier, docLoader, request);
+
+ webkit_web_view_remove_resource(kit(oldPage), identifierString.get());
+}
+
+void FrameLoaderClient::redirectDataToPlugin(Widget* pluginWidget)
+{
+ ASSERT(!m_pluginView);
+ m_pluginView = static_cast<PluginView*>(pluginWidget);
+ m_hasSentResponseToPlugin = false;
+}
+
+PassRefPtr<Widget> FrameLoaderClient::createJavaAppletWidget(const IntSize& pluginSize, HTMLAppletElement* element, const KURL& baseURL, const Vector<String>& paramNames, const Vector<String>& paramValues)
+{
+ return FrameLoaderClient::createPlugin(pluginSize, element, baseURL, paramNames, paramValues, "application/x-java-applet", false);
+}
+
+ObjectContentType FrameLoaderClient::objectContentType(const KURL& url, const String& mimeType)
+{
+ return FrameLoader::defaultObjectContentType(url, mimeType);
+}
+
+String FrameLoaderClient::overrideMediaType() const
+{
+ notImplemented();
+ return String();
+}
+
+void FrameLoaderClient::dispatchDidClearWindowObjectInWorld(DOMWrapperWorld* world)
+{
+ if (world != mainThreadNormalWorld())
+ return;
+
+ // Is this obsolete now?
+ g_signal_emit_by_name(m_frame, "cleared");
+
+ Frame* coreFrame = core(m_frame);
+ ASSERT(coreFrame);
+
+ Settings* settings = coreFrame->settings();
+ if (!settings || !settings->isJavaScriptEnabled())
+ return;
+
+ // TODO: Consider using g_signal_has_handler_pending() to avoid the overhead
+ // when there are no handlers.
+ JSGlobalContextRef context = toGlobalRef(coreFrame->script()->globalObject(mainThreadNormalWorld())->globalExec());
+ JSObjectRef windowObject = toRef(coreFrame->script()->globalObject(mainThreadNormalWorld()));
+ ASSERT(windowObject);
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ g_signal_emit_by_name(webView, "window-object-cleared", m_frame, context, windowObject);
+
+ // TODO: Re-attach debug clients if present.
+ // The Win port has an example of how we might do this.
+}
+
+void FrameLoaderClient::documentElementAvailable()
+{
+}
+
+void FrameLoaderClient::didPerformFirstNavigation() const
+{
+ WebKitCacheModel cacheModel = webkit_get_cache_model();
+ // If user agents do not determine the cache model, we use WEBKIT_CACHE_MODEL_WEB_BROWSER by default.
+ if (cacheModel == WEBKIT_CACHE_MODEL_DEFAULT)
+ webkit_set_cache_model(WEBKIT_CACHE_MODEL_WEB_BROWSER);
+}
+
+void FrameLoaderClient::registerForIconNotification(bool shouldRegister)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::setMainFrameDocumentReady(bool ready)
+{
+ if (!ready)
+ DOMObjectCache::clearByFrame(core(m_frame));
+}
+
+bool FrameLoaderClient::hasWebView() const
+{
+ return getViewFromFrame(m_frame);
+}
+
+void FrameLoaderClient::dispatchDidFinishLoad()
+{
+ if (m_loadingErrorPage) {
+ m_loadingErrorPage = false;
+ return;
+ }
+
+ loadDone(m_frame, true);
+}
+
+void FrameLoaderClient::frameLoadCompleted()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::saveViewStateToItem(HistoryItem*)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::restoreViewState()
+{
+ notImplemented();
+}
+
+bool FrameLoaderClient::shouldGoToHistoryItem(HistoryItem* item) const
+{
+ // FIXME: This is a very simple implementation. More sophisticated
+ // implementation would delegate the decision to a PolicyDelegate.
+ // See mac implementation for example.
+ return item != 0;
+}
+
+void FrameLoaderClient::dispatchDidAddBackForwardItem(HistoryItem*) const
+{
+}
+
+void FrameLoaderClient::dispatchDidRemoveBackForwardItem(HistoryItem*) const
+{
+}
+
+void FrameLoaderClient::dispatchDidChangeBackForwardIndex() const
+{
+}
+
+void FrameLoaderClient::didDisplayInsecureContent()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::didRunInsecureContent(SecurityOrigin*)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::makeRepresentation(WebCore::DocumentLoader*)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::forceLayout()
+{
+ FrameView* view = core(m_frame)->view();
+ if (view)
+ view->forceLayout(true);
+}
+
+void FrameLoaderClient::forceLayoutForNonHTML()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::setCopiesOnScroll()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::detachedFromParent2()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::detachedFromParent3()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidHandleOnloadEvents()
+{
+ g_signal_emit_by_name(getViewFromFrame(m_frame), "onload-event", m_frame);
+}
+
+void FrameLoaderClient::dispatchDidReceiveServerRedirectForProvisionalLoad()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidCancelClientRedirect()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchWillPerformClientRedirect(const KURL&, double, double)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidChangeLocationWithinPage()
+{
+ WebKitWebFramePrivate* priv = m_frame->priv;
+ g_free(priv->uri);
+ priv->uri = g_strdup(core(m_frame)->loader()->url().prettyURL().utf8().data());
+ g_object_notify(G_OBJECT(m_frame), "uri");
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ if (m_frame == webkit_web_view_get_main_frame(webView))
+ g_object_notify(G_OBJECT(webView), "uri");
+}
+
+void FrameLoaderClient::dispatchDidPushStateWithinPage()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidReplaceStateWithinPage()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidPopStateWithinPage()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchWillClose()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidReceiveIcon()
+{
+ if (m_loadingErrorPage)
+ return;
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+
+ // Avoid reporting favicons for non-main frames.
+ if (m_frame != webkit_web_view_get_main_frame(webView))
+ return;
+
+ g_object_notify(G_OBJECT(webView), "icon-uri");
+ g_signal_emit_by_name(webView, "icon-loaded", webkit_web_view_get_icon_uri(webView));
+}
+
+void FrameLoaderClient::dispatchDidStartProvisionalLoad()
+{
+ if (m_loadingErrorPage)
+ return;
+
+ notifyStatus(m_frame, WEBKIT_LOAD_PROVISIONAL);
+}
+
+void FrameLoaderClient::dispatchDidReceiveTitle(const String& title)
+{
+ if (m_loadingErrorPage)
+ return;
+
+ WebKitWebFramePrivate* priv = m_frame->priv;
+ g_free(priv->title);
+ priv->title = g_strdup(title.utf8().data());
+
+ g_signal_emit_by_name(m_frame, "title-changed", priv->title);
+ g_object_notify(G_OBJECT(m_frame), "title");
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ if (m_frame == webkit_web_view_get_main_frame(webView)) {
+ g_signal_emit_by_name(webView, "title-changed", m_frame, title.utf8().data());
+ g_object_notify(G_OBJECT(webView), "title");
+ }
+}
+
+void FrameLoaderClient::dispatchDidChangeIcons()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidCommitLoad()
+{
+ if (m_loadingErrorPage)
+ return;
+
+ /* Update the URI once first data has been received.
+ * This means the URI is valid and successfully identify the page that's going to be loaded.
+ */
+ g_object_freeze_notify(G_OBJECT(m_frame));
+
+ WebKitWebFramePrivate* priv = m_frame->priv;
+ g_free(priv->uri);
+ priv->uri = g_strdup(core(m_frame)->loader()->activeDocumentLoader()->url().prettyURL().utf8().data());
+ g_free(priv->title);
+ priv->title = NULL;
+ g_object_notify(G_OBJECT(m_frame), "uri");
+ g_object_notify(G_OBJECT(m_frame), "title");
+
+ g_signal_emit_by_name(m_frame, "load-committed");
+ notifyStatus(m_frame, WEBKIT_LOAD_COMMITTED);
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ if (m_frame == webkit_web_view_get_main_frame(webView)) {
+ g_object_freeze_notify(G_OBJECT(webView));
+ g_object_notify(G_OBJECT(webView), "uri");
+ g_object_notify(G_OBJECT(webView), "title");
+ g_object_thaw_notify(G_OBJECT(webView));
+ g_signal_emit_by_name(webView, "load-committed", m_frame);
+ }
+
+ g_object_thaw_notify(G_OBJECT(m_frame));
+}
+
+void FrameLoaderClient::dispatchDidFinishDocumentLoad()
+{
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ g_signal_emit_by_name(webView, "document-load-finished", m_frame);
+}
+
+void FrameLoaderClient::dispatchDidFirstLayout()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout()
+{
+ if (m_loadingErrorPage)
+ return;
+
+ notifyStatus(m_frame, WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT);
+}
+
+void FrameLoaderClient::dispatchShow()
+{
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ webkit_web_view_notify_ready(webView);
+}
+
+void FrameLoaderClient::cancelPolicyCheck()
+{
+ //FIXME Add support for more than one policy decision at once
+ if (m_policyDecision)
+ webkit_web_policy_decision_cancel(m_policyDecision);
+}
+
+void FrameLoaderClient::dispatchDidLoadMainResource(WebCore::DocumentLoader*)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::revertToProvisionalState(WebCore::DocumentLoader*)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::willChangeTitle(WebCore::DocumentLoader*)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::didChangeTitle(WebCore::DocumentLoader *l)
+{
+ setTitle(l->title(), l->url());
+}
+
+bool FrameLoaderClient::canHandleRequest(const ResourceRequest&) const
+{
+ notImplemented();
+ return true;
+}
+
+bool FrameLoaderClient::canShowMIMETypeAsHTML(const String& MIMEType) const
+{
+ notImplemented();
+ return false;
+}
+
+bool FrameLoaderClient::canShowMIMEType(const String& type) const
+{
+ return (MIMETypeRegistry::isSupportedImageMIMEType(type)
+ || MIMETypeRegistry::isSupportedNonImageMIMEType(type)
+ || MIMETypeRegistry::isSupportedMediaMIMEType(type)
+ || PluginDatabase::installedPlugins()->isMIMETypeRegistered(type));
+}
+
+bool FrameLoaderClient::representationExistsForURLScheme(const String&) const
+{
+ notImplemented();
+ return false;
+}
+
+String FrameLoaderClient::generatedMIMETypeForURLScheme(const String&) const
+{
+ notImplemented();
+ return String();
+}
+
+void FrameLoaderClient::finishedLoading(WebCore::DocumentLoader* documentLoader)
+{
+ if (!m_pluginView) {
+ FrameLoader* loader = documentLoader->frameLoader();
+ loader->writer()->setEncoding(m_response.textEncodingName(), false);
+ } else {
+ m_pluginView->didFinishLoading();
+ m_pluginView = 0;
+ m_hasSentResponseToPlugin = false;
+ }
+}
+
+
+void FrameLoaderClient::provisionalLoadStarted()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::didFinishLoad() {
+ notImplemented();
+}
+
+void FrameLoaderClient::prepareForDataSourceReplacement()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::setTitle(const String& title, const KURL& url)
+{
+ WebKitWebFramePrivate* frameData = m_frame->priv;
+ g_free(frameData->title);
+ frameData->title = g_strdup(title.utf8().data());
+}
+
+void FrameLoaderClient::dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidFinishLoading(WebCore::DocumentLoader* loader, unsigned long identifier)
+{
+ static_cast<WebKit::DocumentLoader*>(loader)->decreaseLoadCount(identifier);
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ GOwnPtr<gchar> identifierString(toString(identifier));
+ WebKitWebResource* webResource = webkit_web_view_get_resource(webView, identifierString.get());
+
+ // A NULL WebResource means the load has been interrupted, and
+ // replaced by another one while this resource was being loaded.
+ if (!webResource)
+ return;
+
+ const char* uri = webkit_web_resource_get_uri(webResource);
+ RefPtr<ArchiveResource> coreResource(loader->subresource(KURL(KURL(), uri)));
+
+ // If coreResource is NULL here, the resource failed to load,
+ // unless it's the main resource.
+ if (!coreResource && webResource != webkit_web_view_get_main_resource(webView))
+ return;
+
+ if (!coreResource)
+ coreResource = loader->mainResource();
+
+ webkit_web_resource_init_with_core_resource(webResource, coreResource.get());
+
+ // FIXME: This function should notify the application that the resource
+ // finished loading, maybe using a load-status property in the
+ // WebKitWebResource object, similar to what we do for WebKitWebFrame'
+ // signal.
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidFailLoading(WebCore::DocumentLoader* loader, unsigned long identifier, const ResourceError& error)
+{
+ static_cast<WebKit::DocumentLoader*>(loader)->decreaseLoadCount(identifier);
+
+ // FIXME: This function should notify the application that the resource failed
+ // loading, maybe a 'load-error' signal in the WebKitWebResource object.
+ notImplemented();
+}
+
+bool FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const ResourceRequest&, const ResourceResponse&, int length)
+{
+ notImplemented();
+ return false;
+}
+
+void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error)
+{
+ dispatchDidFailLoad(error);
+}
+
+void FrameLoaderClient::dispatchDidFailLoad(const ResourceError& error)
+{
+ if (m_loadingErrorPage)
+ return;
+
+ notifyStatus(m_frame, WEBKIT_LOAD_FAILED);
+
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ GError* webError = g_error_new_literal(g_quark_from_string(error.domain().utf8().data()),
+ error.errorCode(),
+ error.localizedDescription().utf8().data());
+ gboolean isHandled = false;
+ g_signal_emit_by_name(webView, "load-error", m_frame, error.failingURL().utf8().data(), webError, &isHandled);
+
+ if (isHandled) {
+ g_error_free(webError);
+ return;
+ }
+
+ if (!shouldFallBack(error)) {
+ g_error_free(webError);
+ return;
+ }
+
+ m_loadingErrorPage = true;
+
+ String content;
+ gchar* fileContent = 0;
+ gchar* errorURI = g_filename_to_uri(DATA_DIR"/webkit-1.0/resources/error.html", NULL, NULL);
+ GFile* errorFile = g_file_new_for_uri(errorURI);
+ g_free(errorURI);
+
+ if (!errorFile)
+ content = makeString("<html><body>", webError->message, "</body></html>");
+ else {
+ gboolean loaded = g_file_load_contents(errorFile, 0, &fileContent, 0, 0, 0);
+ if (!loaded)
+ content = makeString("<html><body>", webError->message, "</body></html>");
+ else
+ content = String::format(fileContent, error.failingURL().utf8().data(), webError->message);
+ }
+
+ webkit_web_frame_load_alternate_string(m_frame, content.utf8().data(), 0, error.failingURL().utf8().data());
+
+ g_free(fileContent);
+
+ if (errorFile)
+ g_object_unref(errorFile);
+
+ g_error_free(webError);
+}
+
+void FrameLoaderClient::download(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest&, const ResourceResponse& response)
+{
+ GRefPtr<WebKitNetworkRequest> networkRequest(adoptGRef(kitNew(request)));
+ WebKitWebView* view = getViewFromFrame(m_frame);
+
+ webkit_web_view_request_download(view, networkRequest.get(), response, handle);
+}
+
+ResourceError FrameLoaderClient::cancelledError(const ResourceRequest& request)
+{
+ return ResourceError(g_quark_to_string(WEBKIT_NETWORK_ERROR), WEBKIT_NETWORK_ERROR_CANCELLED,
+ request.url().string(), _("Load request cancelled"));
+}
+
+ResourceError FrameLoaderClient::blockedError(const ResourceRequest& request)
+{
+ return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_CANNOT_USE_RESTRICTED_PORT,
+ request.url().string(), _("Not allowed to use restricted network port"));
+}
+
+ResourceError FrameLoaderClient::cannotShowURLError(const ResourceRequest& request)
+{
+ return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_CANNOT_SHOW_URL,
+ request.url().string(), _("URL cannot be shown"));
+}
+
+ResourceError FrameLoaderClient::interruptForPolicyChangeError(const ResourceRequest& request)
+{
+ return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE,
+ request.url().string(), _("Frame load was interrupted"));
+}
+
+ResourceError FrameLoaderClient::cannotShowMIMETypeError(const ResourceResponse& response)
+{
+ return ResourceError(g_quark_to_string(WEBKIT_POLICY_ERROR), WEBKIT_POLICY_ERROR_CANNOT_SHOW_MIME_TYPE,
+ response.url().string(), _("Content with the specified MIME type cannot be shown"));
+}
+
+ResourceError FrameLoaderClient::fileDoesNotExistError(const ResourceResponse& response)
+{
+ return ResourceError(g_quark_to_string(WEBKIT_NETWORK_ERROR), WEBKIT_NETWORK_ERROR_FILE_DOES_NOT_EXIST,
+ response.url().string(), _("File does not exist"));
+}
+
+ResourceError FrameLoaderClient::pluginWillHandleLoadError(const ResourceResponse& response)
+{
+ return ResourceError(g_quark_to_string(WEBKIT_PLUGIN_ERROR), WEBKIT_PLUGIN_ERROR_WILL_HANDLE_LOAD,
+ response.url().string(), _("Plugin will handle load"));
+}
+
+bool FrameLoaderClient::shouldFallBack(const ResourceError& error)
+{
+ return !(error.isCancellation() || error.errorCode() == WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE || error.errorCode() == WEBKIT_PLUGIN_ERROR_WILL_HANDLE_LOAD);
+}
+
+bool FrameLoaderClient::canCachePage() const
+{
+ return true;
+}
+
+Frame* FrameLoaderClient::dispatchCreatePage(const NavigationAction&)
+{
+ WebKitWebView* webView = getViewFromFrame(m_frame);
+ WebKitWebView* newWebView = 0;
+
+ g_signal_emit_by_name(webView, "create-web-view", m_frame, &newWebView);
+
+ if (!newWebView)
+ return 0;
+
+ WebKitWebViewPrivate* privateData = newWebView->priv;
+ return core(privateData->mainFrame);
+}
+
+void FrameLoaderClient::dispatchUnableToImplementPolicy(const ResourceError&)
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::setMainDocumentError(WebCore::DocumentLoader*, const ResourceError& error)
+{
+ if (m_pluginView) {
+ m_pluginView->didFail(error);
+ m_pluginView = 0;
+ m_hasSentResponseToPlugin = false;
+ }
+}
+
+void FrameLoaderClient::startDownload(const ResourceRequest& request)
+{
+ GRefPtr<WebKitNetworkRequest> networkRequest(adoptGRef(kitNew(request)));
+ WebKitWebView* view = getViewFromFrame(m_frame);
+
+ webkit_web_view_request_download(view, networkRequest.get());
+}
+
+void FrameLoaderClient::updateGlobalHistory()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::updateGlobalHistoryRedirectLinks()
+{
+ notImplemented();
+}
+
+void FrameLoaderClient::savePlatformDataToCachedFrame(CachedFrame* cachedFrame)
+{
+ // We need to do this here in order to disconnect the scrollbars
+ // that are being used by the frame that is being cached from the
+ // adjustments, otherwise they will react to changes in the
+ // adjustments, and bad things will happen.
+ if (cachedFrame->view())
+ cachedFrame->view()->setGtkAdjustments(0, 0);
+}
+
+static void postCommitFrameViewSetup(WebKitWebFrame *frame, FrameView *view, bool resetValues)
+{
+ WebKitWebView* containingWindow = getViewFromFrame(frame);
+ webkit_web_view_clear_resources(containingWindow);
+
+ WebKitWebViewPrivate* priv = containingWindow->priv;
+ view->setGtkAdjustments(priv->horizontalAdjustment.get(), priv->verticalAdjustment.get(), resetValues);
+
+ // Invalidate the viewport attributes - they will only be valid
+ // again if the page we're beginning to load now has an
+ // appropriate viewport meta tag.
+ containingWindow->priv->viewportAttributes->priv->isValid = FALSE;
+ g_object_notify(G_OBJECT(containingWindow->priv->viewportAttributes.get()), "valid");
+
+ if (priv->currentMenu) {
+ gtk_widget_destroy(GTK_WIDGET(priv->currentMenu));
+ priv->currentMenu = 0;
+ }
+
+ // Do not allow click counting between main frame loads.
+ priv->previousClickTime = 0;
+}
+
+void FrameLoaderClient::transitionToCommittedFromCachedFrame(CachedFrame* cachedFrame)
+{
+ ASSERT(cachedFrame->view());
+
+ Frame* frame = core(m_frame);
+ if (frame != frame->page()->mainFrame())
+ return;
+
+ postCommitFrameViewSetup(m_frame, cachedFrame->view(), false);
+}
+
+void FrameLoaderClient::transitionToCommittedForNewPage()
+{
+ WebKitWebView* containingWindow = getViewFromFrame(m_frame);
+ GtkAllocation allocation;
+#if GTK_CHECK_VERSION(2, 18, 0)
+ gtk_widget_get_allocation(GTK_WIDGET(containingWindow), &allocation);
+#else
+ allocation = GTK_WIDGET(containingWindow)->allocation;
+#endif
+ IntSize size = IntSize(allocation.width, allocation.height);
+ bool transparent = webkit_web_view_get_transparent(containingWindow);
+ Color backgroundColor = transparent ? WebCore::Color::transparent : WebCore::Color::white;
+ Frame* frame = core(m_frame);
+ ASSERT(frame);
+
+ frame->createView(size, backgroundColor, transparent, IntSize(), false);
+
+ // We need to do further manipulation on the FrameView if it was the mainFrame
+ if (frame != frame->page()->mainFrame())
+ return;
+
+ postCommitFrameViewSetup(m_frame, frame->view(), true);
+}
+
+void FrameLoaderClient::didSaveToPageCache()
+{
+}
+
+void FrameLoaderClient::didRestoreFromPageCache()
+{
+}
+
+void FrameLoaderClient::dispatchDidBecomeFrameset(bool)
+{
+}
+
+PassRefPtr<FrameNetworkingContext> FrameLoaderClient::createNetworkingContext()
+{
+ return FrameNetworkingContextGtk::create(core(m_frame));
+}
+
+}
diff --git a/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
new file mode 100644
index 0000000..d8d3684
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2006 Zack Rusin <zack@kde.org>
+ * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2008 Collabora Ltd. All rights reserved.
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef FrameLoaderClientGtk_h
+#define FrameLoaderClientGtk_h
+
+#include "FrameLoaderClient.h"
+#include "ResourceResponse.h"
+#include "PluginView.h"
+#include "webkitwebpolicydecision.h"
+
+typedef struct _WebKitWebFrame WebKitWebFrame;
+
+namespace WebKit {
+
+ class FrameLoaderClient : public WebCore::FrameLoaderClient {
+ public:
+ FrameLoaderClient(WebKitWebFrame*);
+ virtual ~FrameLoaderClient();
+ virtual void frameLoaderDestroyed();
+
+ WebKitWebFrame* webFrame() const { return m_frame; }
+
+ virtual bool hasWebView() const;
+
+ virtual void makeRepresentation(WebCore::DocumentLoader*);
+ virtual void forceLayout();
+ virtual void forceLayoutForNonHTML();
+
+ virtual void setCopiesOnScroll();
+
+ virtual void detachedFromParent2();
+ virtual void detachedFromParent3();
+
+ virtual void assignIdentifierToInitialRequest(unsigned long identifier, WebCore::DocumentLoader*, const WebCore::ResourceRequest&);
+
+ virtual void dispatchWillSendRequest(WebCore::DocumentLoader*, unsigned long identifier, WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse);
+ virtual bool shouldUseCredentialStorage(WebCore::DocumentLoader*, unsigned long identifier);
+ virtual void dispatchDidReceiveAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
+ virtual void dispatchDidCancelAuthenticationChallenge(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::AuthenticationChallenge&);
+ virtual void dispatchDidReceiveResponse(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceResponse&);
+ virtual void dispatchDidReceiveContentLength(WebCore::DocumentLoader*, unsigned long identifier, int lengthReceived);
+ virtual void dispatchDidFinishLoading(WebCore::DocumentLoader*, unsigned long identifier);
+ virtual void dispatchDidFailLoading(WebCore::DocumentLoader*, unsigned long identifier, const WebCore::ResourceError&);
+ virtual bool dispatchDidLoadResourceFromMemoryCache(WebCore::DocumentLoader*, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&, int length);
+
+ virtual void dispatchDidHandleOnloadEvents();
+ virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
+ virtual void dispatchDidCancelClientRedirect();
+ virtual void dispatchWillPerformClientRedirect(const WebCore::KURL&, double, double);
+ virtual void dispatchDidChangeLocationWithinPage();
+ virtual void dispatchDidPushStateWithinPage();
+ virtual void dispatchDidReplaceStateWithinPage();
+ virtual void dispatchDidPopStateWithinPage();
+ virtual void dispatchWillClose();
+ virtual void dispatchDidReceiveIcon();
+ virtual void dispatchDidStartProvisionalLoad();
+ virtual void dispatchDidReceiveTitle(const WTF::String&);
+ virtual void dispatchDidChangeIcons();
+ virtual void dispatchDidCommitLoad();
+ virtual void dispatchDidFailProvisionalLoad(const WebCore::ResourceError&);
+ virtual void dispatchDidFailLoad(const WebCore::ResourceError&);
+ virtual void dispatchDidFinishDocumentLoad();
+ virtual void dispatchDidFinishLoad();
+ virtual void dispatchDidFirstLayout();
+ virtual void dispatchDidFirstVisuallyNonEmptyLayout();
+
+ virtual WebCore::Frame* dispatchCreatePage(const WebCore::NavigationAction&);
+ virtual void dispatchShow();
+
+ virtual void dispatchDecidePolicyForMIMEType(WebCore::FramePolicyFunction, const WTF::String& MIMEType, const WebCore::ResourceRequest&);
+ virtual void dispatchDecidePolicyForNewWindowAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>, const WTF::String& frameName);
+ virtual void dispatchDecidePolicyForNavigationAction(WebCore::FramePolicyFunction, const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WTF::PassRefPtr<WebCore::FormState>);
+ virtual void cancelPolicyCheck();
+
+ virtual void dispatchUnableToImplementPolicy(const WebCore::ResourceError&);
+
+ virtual void dispatchWillSendSubmitEvent(WebCore::HTMLFormElement*) { }
+ virtual void dispatchWillSubmitForm(WebCore::FramePolicyFunction, WTF::PassRefPtr<WebCore::FormState>);
+
+ virtual void dispatchDidLoadMainResource(WebCore::DocumentLoader*);
+ virtual void revertToProvisionalState(WebCore::DocumentLoader*);
+ virtual void setMainDocumentError(WebCore::DocumentLoader*, const WebCore::ResourceError&);
+
+ virtual void postProgressStartedNotification();
+ virtual void postProgressEstimateChangedNotification();
+ virtual void postProgressFinishedNotification();
+
+ virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WTF::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
+ const WTF::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
+ virtual void didTransferChildFrameToNewDocument(WebCore::Page*);
+ virtual void transferLoadingResourceFromPage(unsigned long, WebCore::DocumentLoader*, const WebCore::ResourceRequest&, WebCore::Page*);
+ virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WTF::String>&, const WTF::Vector<WTF::String>&, const WTF::String&, bool);
+ virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
+ virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WTF::String>& paramNames, const WTF::Vector<WTF::String>& paramValues);
+ virtual WTF::String overrideMediaType() const;
+ virtual void dispatchDidClearWindowObjectInWorld(WebCore::DOMWrapperWorld*);
+ virtual void documentElementAvailable();
+ virtual void didPerformFirstNavigation() const;
+
+ virtual void registerForIconNotification(bool);
+
+ virtual WebCore::ObjectContentType objectContentType(const WebCore::KURL& url, const WTF::String& mimeType);
+
+ virtual void setMainFrameDocumentReady(bool);
+
+ virtual void startDownload(const WebCore::ResourceRequest&);
+
+ virtual void willChangeTitle(WebCore::DocumentLoader*);
+ virtual void didChangeTitle(WebCore::DocumentLoader*);
+
+ virtual void committedLoad(WebCore::DocumentLoader*, const char*, int);
+ virtual void finishedLoading(WebCore::DocumentLoader*);
+
+ virtual void updateGlobalHistory();
+ virtual void updateGlobalHistoryRedirectLinks();
+ virtual bool shouldGoToHistoryItem(WebCore::HistoryItem*) const;
+ virtual void dispatchDidAddBackForwardItem(WebCore::HistoryItem*) const;
+ virtual void dispatchDidRemoveBackForwardItem(WebCore::HistoryItem*) const;
+ virtual void dispatchDidChangeBackForwardIndex() const;
+
+ virtual void didDisplayInsecureContent();
+ virtual void didRunInsecureContent(WebCore::SecurityOrigin*);
+
+ virtual WebCore::ResourceError cancelledError(const WebCore::ResourceRequest&);
+ virtual WebCore::ResourceError blockedError(const WebCore::ResourceRequest&);
+ virtual WebCore::ResourceError cannotShowURLError(const WebCore::ResourceRequest&);
+ virtual WebCore::ResourceError interruptForPolicyChangeError(const WebCore::ResourceRequest&);
+
+ virtual WebCore::ResourceError cannotShowMIMETypeError(const WebCore::ResourceResponse&);
+ virtual WebCore::ResourceError fileDoesNotExistError(const WebCore::ResourceResponse&);
+ virtual WebCore::ResourceError pluginWillHandleLoadError(const WebCore::ResourceResponse&);
+
+ virtual bool shouldFallBack(const WebCore::ResourceError&);
+
+ virtual bool canHandleRequest(const WebCore::ResourceRequest&) const;
+ virtual bool canShowMIMEType(const WTF::String&) const;
+ virtual bool canShowMIMETypeAsHTML(const String& MIMEType) const;
+ virtual bool representationExistsForURLScheme(const WTF::String&) const;
+ virtual WTF::String generatedMIMETypeForURLScheme(const WTF::String&) const;
+
+ virtual void frameLoadCompleted();
+ virtual void saveViewStateToItem(WebCore::HistoryItem*);
+ virtual void restoreViewState();
+ virtual void provisionalLoadStarted();
+ virtual void didFinishLoad();
+ virtual void prepareForDataSourceReplacement();
+
+ virtual WTF::PassRefPtr<WebCore::DocumentLoader> createDocumentLoader(const WebCore::ResourceRequest&, const WebCore::SubstituteData&);
+ virtual void setTitle(const WTF::String& title, const WebCore::KURL&);
+
+ virtual WTF::String userAgent(const WebCore::KURL&);
+
+ virtual void savePlatformDataToCachedFrame(WebCore::CachedFrame*);
+ virtual void transitionToCommittedFromCachedFrame(WebCore::CachedFrame*);
+ virtual void transitionToCommittedForNewPage();
+
+ virtual void didSaveToPageCache();
+ virtual void didRestoreFromPageCache();
+
+ virtual void dispatchDidBecomeFrameset(bool);
+
+ virtual bool canCachePage() const;
+ virtual void download(WebCore::ResourceHandle*, const WebCore::ResourceRequest&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
+
+ virtual PassRefPtr<WebCore::FrameNetworkingContext> createNetworkingContext();
+
+ private:
+ WebKitWebFrame* m_frame;
+ WebCore::ResourceResponse m_response;
+ WebKitWebPolicyDecision* m_policyDecision;
+
+ bool m_loadingErrorPage;
+
+ // Plugin view to redirect data to
+ WebCore::PluginView* m_pluginView;
+ bool m_hasSentResponseToPlugin;
+ };
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h b/Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h
new file mode 100644
index 0000000..8e4c214
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/FrameNetworkingContextGtk.h
@@ -0,0 +1,45 @@
+/*
+ Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public License
+ along with this library; see the file COPYING.LIB. If not, write to
+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ Boston, MA 02110-1301, USA.
+*/
+
+#ifndef FrameNetworkingContextGtk_h
+#define FrameNetworkingContextGtk_h
+
+#include "FrameNetworkingContext.h"
+
+namespace WebKit {
+
+class FrameNetworkingContextGtk : public WebCore::FrameNetworkingContext {
+public:
+ static PassRefPtr<FrameNetworkingContextGtk> create(WebCore::Frame* frame)
+ {
+ return adoptRef(new FrameNetworkingContextGtk(frame));
+ }
+
+ WebCore::Frame* coreFrame() const { return frame(); }
+
+private:
+ FrameNetworkingContextGtk(WebCore::Frame* frame)
+ : WebCore::FrameNetworkingContext(frame)
+ {
+ }
+};
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp
new file mode 100644
index 0000000..ea2caa8
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp
@@ -0,0 +1,578 @@
+/*
+ * Copyright (C) 2010 Igalia S.L
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#if ENABLE(VIDEO)
+
+#include "FullscreenVideoController.h"
+
+#include "GRefPtrGtk.h"
+#include "GtkVersioning.h"
+#include "MediaPlayer.h"
+
+#include <gdk/gdk.h>
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n-lib.h>
+#include <gst/gst.h>
+#include <gtk/gtk.h>
+
+using namespace std;
+using namespace WebCore;
+
+#define HUD_AUTO_HIDE_INTERVAL 3000 // 3 seconds
+#define PROGRESS_BAR_UPDATE_INTERVAL 150 // 150ms
+#define VOLUME_UP_OFFSET 0.05 // 5%
+#define VOLUME_DOWN_OFFSET 0.05 // 5%
+
+// Use symbolic icons only if we build with GTK+-3 support. They could
+// be enabled for the GTK+2 build but we'd need to bump the required
+// version to at least 2.22.
+#if GTK_MAJOR_VERSION < 3
+#define PLAY_ICON_NAME "media-playback-start"
+#define PAUSE_ICON_NAME "media-playback-pause"
+#define EXIT_FULLSCREEN_ICON_NAME "view-restore"
+#else
+#define PLAY_ICON_NAME "media-playback-start-symbolic"
+#define PAUSE_ICON_NAME "media-playback-pause-symbolic"
+#define EXIT_FULLSCREEN_ICON_NAME "view-restore-symbolic"
+#endif
+
+static gboolean hideHudCallback(FullscreenVideoController* controller)
+{
+ controller->hideHud();
+ return FALSE;
+}
+
+static gboolean onFullscreenGtkMotionNotifyEvent(GtkWidget* widget, GdkEventMotion* event, FullscreenVideoController* controller)
+{
+ controller->showHud(true);
+ return TRUE;
+}
+
+static void onFullscreenGtkActiveNotification(GtkWidget* widget, GParamSpec* property, FullscreenVideoController* controller)
+{
+ if (!gtk_window_is_active(GTK_WINDOW(widget)))
+ controller->hideHud();
+}
+
+static gboolean onFullscreenGtkConfigureEvent(GtkWidget* widget, GdkEventConfigure* event, FullscreenVideoController* controller)
+{
+ controller->gtkConfigure(event);
+ return TRUE;
+}
+
+static void onFullscreenGtkDestroy(GtkWidget* widget, FullscreenVideoController* controller)
+{
+ controller->exitFullscreen();
+}
+
+static void togglePlayPauseActivated(GtkAction* action, FullscreenVideoController* controller)
+{
+ controller->togglePlay();
+}
+
+static void exitFullscreenActivated(GtkAction* action, FullscreenVideoController* controller)
+{
+ controller->exitOnUserRequest();
+}
+
+static gboolean progressBarUpdateCallback(FullscreenVideoController* controller)
+{
+ return controller->updateHudProgressBar();
+}
+
+static gboolean timeScaleButtonPressed(GtkWidget* widget, GdkEventButton* event, FullscreenVideoController* controller)
+{
+ if (event->type != GDK_BUTTON_PRESS)
+ return FALSE;
+
+ controller->beginSeek();
+ return FALSE;
+}
+
+static gboolean timeScaleButtonReleased(GtkWidget* widget, GdkEventButton* event, FullscreenVideoController* controller)
+{
+ controller->endSeek();
+ return FALSE;
+}
+
+static void timeScaleValueChanged(GtkWidget* widget, FullscreenVideoController* controller)
+{
+ controller->doSeek();
+}
+
+static void volumeValueChanged(GtkScaleButton *button, gdouble value, FullscreenVideoController* controller)
+{
+ controller->setVolume(static_cast<float>(value));
+}
+
+void playerVolumeChangedCallback(GObject *element, GParamSpec *pspec, FullscreenVideoController* controller)
+{
+ controller->volumeChanged();
+}
+
+void playerMuteChangedCallback(GObject *element, GParamSpec *pspec, FullscreenVideoController* controller)
+{
+ controller->muteChanged();
+}
+
+FullscreenVideoController::FullscreenVideoController()
+ : m_hudTimeoutId(0)
+ , m_progressBarUpdateId(0)
+ , m_seekLock(false)
+ , m_window(0)
+ , m_hudWindow(0)
+{
+}
+
+FullscreenVideoController::~FullscreenVideoController()
+{
+ exitFullscreen();
+}
+
+void FullscreenVideoController::setMediaElement(HTMLMediaElement* mediaElement)
+{
+ if (mediaElement == m_mediaElement)
+ return;
+
+ m_mediaElement = mediaElement;
+ if (!m_mediaElement) {
+ // Can't do full-screen, just get out
+ exitFullscreen();
+ }
+}
+
+void FullscreenVideoController::gtkConfigure(GdkEventConfigure* event)
+{
+ updateHudPosition();
+}
+
+void FullscreenVideoController::showHud(bool autoHide)
+{
+ if (!m_hudWindow)
+ return;
+
+ if (m_hudTimeoutId) {
+ g_source_remove(m_hudTimeoutId);
+ m_hudTimeoutId = 0;
+ }
+
+ // Show the cursor.
+ GdkWindow* window = gtk_widget_get_window(m_window);
+ gdk_window_set_cursor(window, 0);
+
+ // Update the progress bar immediately before showing the window.
+ updateHudProgressBar();
+ gtk_widget_show_all(m_hudWindow);
+ updateHudPosition();
+
+ // Start periodic updates of the progress bar.
+ if (!m_progressBarUpdateId)
+ m_progressBarUpdateId = g_timeout_add(PROGRESS_BAR_UPDATE_INTERVAL, reinterpret_cast<GSourceFunc>(progressBarUpdateCallback), this);
+
+ // Hide the hud in few seconds, if requested.
+ if (autoHide)
+ m_hudTimeoutId = g_timeout_add(HUD_AUTO_HIDE_INTERVAL, reinterpret_cast<GSourceFunc>(hideHudCallback), this);
+}
+
+void FullscreenVideoController::hideHud()
+{
+ if (m_hudTimeoutId) {
+ g_source_remove(m_hudTimeoutId);
+ m_hudTimeoutId = 0;
+ }
+
+ if (!m_hudWindow)
+ return;
+
+ // Keep the hud visible if a seek is in progress or if the volume
+ // popup is visible.
+ GtkWidget* volumePopup = gtk_scale_button_get_popup(GTK_SCALE_BUTTON(m_volumeButton));
+ if (m_seekLock || gtk_widget_get_visible(volumePopup)) {
+ showHud(true);
+ return;
+ }
+
+ GdkWindow* window = gtk_widget_get_window(m_window);
+ GdkCursor* cursor = blankCursor();
+ gdk_window_set_cursor(window, cursor);
+
+ gtk_widget_hide(m_hudWindow);
+
+ if (m_progressBarUpdateId) {
+ g_source_remove(m_progressBarUpdateId);
+ m_progressBarUpdateId = 0;
+ }
+}
+
+static gboolean onFullscreenGtkKeyPressEvent(GtkWidget* widget, GdkEventKey* event, FullscreenVideoController* controller)
+{
+ switch (event->keyval) {
+ case GDK_Escape:
+ case 'f':
+ case 'F':
+ controller->exitOnUserRequest();
+ break;
+ case GDK_space:
+ case GDK_Return:
+ controller->togglePlay();
+ break;
+ case GDK_Up:
+ // volume up
+ controller->setVolume(controller->volume() + VOLUME_UP_OFFSET);
+ break;
+ case GDK_Down:
+ // volume down
+ controller->setVolume(controller->volume() - VOLUME_DOWN_OFFSET);
+ break;
+ default:
+ break;
+ }
+
+ return TRUE;
+}
+
+
+void FullscreenVideoController::enterFullscreen()
+{
+ if (!m_mediaElement)
+ return;
+
+ if (m_mediaElement->platformMedia().type != WebCore::PlatformMedia::GStreamerGWorldType)
+ return;
+
+ m_gstreamerGWorld = m_mediaElement->platformMedia().media.gstreamerGWorld;
+ if (!m_gstreamerGWorld->enterFullscreen())
+ return;
+
+ m_window = reinterpret_cast<GtkWidget*>(m_gstreamerGWorld->platformVideoWindow()->window());
+
+ GstElement* pipeline = m_gstreamerGWorld->pipeline();
+ g_signal_connect(pipeline, "notify::volume", G_CALLBACK(playerVolumeChangedCallback), this);
+ g_signal_connect(pipeline, "notify::mute", G_CALLBACK(playerMuteChangedCallback), this);
+
+ if (!m_hudWindow)
+ createHud();
+
+ // Ensure black background.
+#ifdef GTK_API_VERSION_2
+ GdkColor color = { 1, 0, 0, 0 };
+ gtk_widget_modify_bg(m_window, GTK_STATE_NORMAL, &color);
+#else
+ GdkRGBA color = { 0, 0, 0, 1};
+ gtk_widget_override_background_color(m_window, GTK_STATE_FLAG_NORMAL, &color);
+#endif
+ gtk_widget_set_double_buffered(m_window, FALSE);
+
+ g_signal_connect(m_window, "key-press-event", G_CALLBACK(onFullscreenGtkKeyPressEvent), this);
+ g_signal_connect(m_window, "destroy", G_CALLBACK(onFullscreenGtkDestroy), this);
+ g_signal_connect(m_window, "notify::is-active", G_CALLBACK(onFullscreenGtkActiveNotification), this);
+
+ gtk_widget_show_all(m_window);
+
+ GdkWindow* window = gtk_widget_get_window(m_window);
+ GRefPtr<GdkCursor> cursor(adoptGRef(blankCursor()));
+ gdk_window_set_cursor(window, cursor.get());
+
+ g_signal_connect(m_window, "motion-notify-event", G_CALLBACK(onFullscreenGtkMotionNotifyEvent), this);
+ g_signal_connect(m_window, "configure-event", G_CALLBACK(onFullscreenGtkConfigureEvent), this);
+
+ gtk_window_fullscreen(GTK_WINDOW(m_window));
+ showHud(true);
+}
+
+void FullscreenVideoController::updateHudPosition()
+{
+ if (!m_hudWindow)
+ return;
+
+ // Get the screen rectangle.
+ GdkScreen* screen = gtk_window_get_screen(GTK_WINDOW(m_window));
+ GdkWindow* window = gtk_widget_get_window(m_window);
+ GdkRectangle fullscreenRectangle;
+ gdk_screen_get_monitor_geometry(screen, gdk_screen_get_monitor_at_window(screen, window),
+ &fullscreenRectangle);
+
+ // Get the popup window size.
+ int hudWidth, hudHeight;
+ gtk_window_get_size(GTK_WINDOW(m_hudWindow), &hudWidth, &hudHeight);
+
+ // Resize the hud to the full width of the screen.
+ gtk_window_resize(GTK_WINDOW(m_hudWindow), fullscreenRectangle.width, hudHeight);
+
+ // Move the hud to the bottom of the screen.
+ gtk_window_move(GTK_WINDOW(m_hudWindow), fullscreenRectangle.x,
+ fullscreenRectangle.height + fullscreenRectangle.y - hudHeight);
+}
+
+void FullscreenVideoController::exitOnUserRequest()
+{
+ m_mediaElement->exitFullscreen();
+}
+
+void FullscreenVideoController::exitFullscreen()
+{
+ if (!m_hudWindow)
+ return;
+
+ g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkKeyPressEvent), this);
+ g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkDestroy), this);
+ g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkMotionNotifyEvent), this);
+ g_signal_handlers_disconnect_by_func(m_window, reinterpret_cast<void*>(onFullscreenGtkConfigureEvent), this);
+
+ GstElement* pipeline = m_mediaElement->platformMedia().media.gstreamerGWorld->pipeline();
+ g_signal_handlers_disconnect_by_func(pipeline, reinterpret_cast<void*>(playerVolumeChangedCallback), this);
+ g_signal_handlers_disconnect_by_func(pipeline, reinterpret_cast<void*>(playerMuteChangedCallback), this);
+
+ if (m_hudTimeoutId) {
+ g_source_remove(m_hudTimeoutId);
+ m_hudTimeoutId = 0;
+ }
+
+ if (m_progressBarUpdateId) {
+ g_source_remove(m_progressBarUpdateId);
+ m_progressBarUpdateId = 0;
+ }
+
+ if (m_mediaElement->platformMedia().type == WebCore::PlatformMedia::GStreamerGWorldType)
+ m_mediaElement->platformMedia().media.gstreamerGWorld->exitFullscreen();
+
+ gtk_widget_hide(m_window);
+
+ gtk_widget_destroy(m_hudWindow);
+ m_hudWindow = 0;
+}
+
+bool FullscreenVideoController::canPlay() const
+{
+ return m_mediaElement && m_mediaElement->canPlay();
+}
+
+void FullscreenVideoController::play()
+{
+ if (m_mediaElement)
+ m_mediaElement->play(m_mediaElement->processingUserGesture());
+
+ playStateChanged();
+ showHud(true);
+}
+
+void FullscreenVideoController::pause()
+{
+ if (m_mediaElement)
+ m_mediaElement->pause(m_mediaElement->processingUserGesture());
+
+ playStateChanged();
+ showHud(false);
+}
+
+void FullscreenVideoController::playStateChanged()
+{
+ if (canPlay())
+ g_object_set(m_playPauseAction, "tooltip", _("Play"), "icon-name", PLAY_ICON_NAME, NULL);
+ else
+ g_object_set(m_playPauseAction, "tooltip", _("Pause"), "icon-name", PAUSE_ICON_NAME, NULL);
+}
+
+void FullscreenVideoController::togglePlay()
+{
+ if (canPlay())
+ play();
+ else
+ pause();
+}
+
+float FullscreenVideoController::volume() const
+{
+ return m_mediaElement ? m_mediaElement->volume() : 0;
+}
+
+bool FullscreenVideoController::muted() const
+{
+ return m_mediaElement ? m_mediaElement->muted() : false;
+}
+
+void FullscreenVideoController::setVolume(float volume)
+{
+ if (volume < 0.0 || volume > 1.0)
+ return;
+
+ if (m_mediaElement) {
+ ExceptionCode ec;
+ m_mediaElement->setVolume(volume, ec);
+ }
+}
+
+void FullscreenVideoController::volumeChanged()
+{
+ g_signal_handler_block(m_volumeButton, m_volumeUpdateId);
+ gtk_scale_button_set_value(GTK_SCALE_BUTTON(m_volumeButton), volume());
+ g_signal_handler_unblock(m_volumeButton, m_volumeUpdateId);
+}
+
+void FullscreenVideoController::muteChanged()
+{
+ g_signal_handler_block(m_volumeButton, m_volumeUpdateId);
+ gtk_scale_button_set_value(GTK_SCALE_BUTTON(m_volumeButton), muted() ? 0 : volume());
+ g_signal_handler_unblock(m_volumeButton, m_volumeUpdateId);
+}
+
+float FullscreenVideoController::currentTime() const
+{
+ return m_mediaElement ? m_mediaElement->currentTime() : 0;
+}
+
+void FullscreenVideoController::setCurrentTime(float value)
+{
+ if (m_mediaElement) {
+ ExceptionCode ec;
+ m_mediaElement->setCurrentTime(value, ec);
+ }
+}
+
+float FullscreenVideoController::duration() const
+{
+ return m_mediaElement ? m_mediaElement->duration() : 0;
+}
+
+float FullscreenVideoController::percentLoaded() const
+{
+ return m_mediaElement ? m_mediaElement->percentLoaded() : 0;
+}
+
+void FullscreenVideoController::beginSeek()
+{
+ m_seekLock = true;
+
+ if (m_mediaElement)
+ m_mediaElement->beginScrubbing();
+}
+
+void FullscreenVideoController::doSeek()
+{
+ if (!m_seekLock)
+ return;
+
+ setCurrentTime(gtk_range_get_value(GTK_RANGE(m_timeHScale))*duration() / 100);
+}
+
+void FullscreenVideoController::endSeek()
+{
+ if (m_mediaElement)
+ m_mediaElement->endScrubbing();
+
+ m_seekLock = false;
+}
+
+static String timeToString(float time)
+{
+ if (!isfinite(time))
+ time = 0;
+ int seconds = fabsf(time);
+ int hours = seconds / (60 * 60);
+ int minutes = (seconds / 60) % 60;
+ seconds %= 60;
+
+ if (hours) {
+ if (hours > 9)
+ return String::format("%s%02d:%02d:%02d", (time < 0 ? "-" : ""), hours, minutes, seconds);
+ return String::format("%s%01d:%02d:%02d", (time < 0 ? "-" : ""), hours, minutes, seconds);
+ }
+
+ return String::format("%s%02d:%02d", (time < 0 ? "-" : ""), minutes, seconds);
+}
+
+gboolean FullscreenVideoController::updateHudProgressBar()
+{
+ float mediaDuration(duration());
+ float mediaPosition(currentTime());
+
+ if (!m_seekLock) {
+ gdouble value = 0.0;
+
+ if (mediaPosition && mediaDuration)
+ value = (mediaPosition * 100.0) / mediaDuration;
+
+ GtkAdjustment* adjustment = gtk_range_get_adjustment(GTK_RANGE(m_timeHScale));
+ gtk_adjustment_set_value(adjustment, value);
+ }
+
+ gtk_range_set_fill_level(GTK_RANGE(m_timeHScale), percentLoaded()* 100);
+
+ gchar* label = g_strdup_printf("%s / %s", timeToString(mediaPosition).utf8().data(),
+ timeToString(mediaDuration).utf8().data());
+ gtk_label_set_text(GTK_LABEL(m_timeLabel), label);
+ g_free(label);
+ return TRUE;
+}
+
+void FullscreenVideoController::createHud()
+{
+ m_hudWindow = gtk_window_new(GTK_WINDOW_POPUP);
+ gtk_window_set_gravity(GTK_WINDOW(m_hudWindow), GDK_GRAVITY_SOUTH_WEST);
+ gtk_window_set_type_hint(GTK_WINDOW(m_hudWindow), GDK_WINDOW_TYPE_HINT_NORMAL);
+
+ g_signal_connect(m_hudWindow, "motion-notify-event", G_CALLBACK(onFullscreenGtkMotionNotifyEvent), this);
+
+ GtkWidget* hbox = gtk_hbox_new(FALSE, 4);
+ gtk_container_add(GTK_CONTAINER(m_hudWindow), hbox);
+
+ m_playPauseAction = gtk_action_new("play", _("Play / Pause"), _("Play or pause the media"), PAUSE_ICON_NAME);
+ g_signal_connect(m_playPauseAction, "activate", G_CALLBACK(togglePlayPauseActivated), this);
+
+ playStateChanged();
+
+ GtkWidget* item = gtk_action_create_tool_item(m_playPauseAction);
+ gtk_box_pack_start(GTK_BOX(hbox), item, FALSE, TRUE, 0);
+
+ GtkWidget* label = gtk_label_new(_("Time:"));
+ gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, TRUE, 0);
+
+ GtkAdjustment* adjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 100.0, 0.1, 1.0, 1.0));
+ m_timeHScale = gtk_hscale_new(adjustment);
+ gtk_scale_set_draw_value(GTK_SCALE(m_timeHScale), FALSE);
+ gtk_range_set_show_fill_level(GTK_RANGE(m_timeHScale), TRUE);
+ g_signal_connect(m_timeHScale, "button-press-event", G_CALLBACK(timeScaleButtonPressed), this);
+ g_signal_connect(m_timeHScale, "button-release-event", G_CALLBACK(timeScaleButtonReleased), this);
+ m_hscaleUpdateId = g_signal_connect(m_timeHScale, "value-changed", G_CALLBACK(timeScaleValueChanged), this);
+
+ gtk_box_pack_start(GTK_BOX(hbox), m_timeHScale, TRUE, TRUE, 0);
+
+ m_timeLabel = gtk_label_new("");
+ gtk_box_pack_start(GTK_BOX(hbox), m_timeLabel, FALSE, TRUE, 0);
+
+ // Volume button.
+ m_volumeButton = gtk_volume_button_new();
+ gtk_box_pack_start(GTK_BOX(hbox), m_volumeButton, FALSE, TRUE, 0);
+ gtk_scale_button_set_value(GTK_SCALE_BUTTON(m_volumeButton), volume());
+ m_volumeUpdateId = g_signal_connect(m_volumeButton, "value-changed", G_CALLBACK(volumeValueChanged), this);
+
+
+ m_exitFullscreenAction = gtk_action_new("exit", _("Exit Fullscreen"), _("Exit from fullscreen mode"), EXIT_FULLSCREEN_ICON_NAME);
+ g_signal_connect(m_exitFullscreenAction, "activate", G_CALLBACK(exitFullscreenActivated), this);
+ g_object_set(m_exitFullscreenAction, "icon-name", EXIT_FULLSCREEN_ICON_NAME, NULL);
+ item = gtk_action_create_tool_item(m_exitFullscreenAction);
+ gtk_box_pack_start(GTK_BOX(hbox), item, FALSE, TRUE, 0);
+
+
+ m_progressBarUpdateId = g_timeout_add(PROGRESS_BAR_UPDATE_INTERVAL, reinterpret_cast<GSourceFunc>(progressBarUpdateCallback), this);
+}
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h
new file mode 100644
index 0000000..d4bbea2
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/FullscreenVideoController.h
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2010 Igalia S.L
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef FullscreenVideoController_h
+#define FullscreenVideoController_h
+
+#if ENABLE(VIDEO)
+
+#include "GRefPtr.h"
+#include "GStreamerGWorld.h"
+#include "HTMLMediaElement.h"
+#include <wtf/RefPtr.h>
+
+class FullscreenVideoController : public Noncopyable {
+public:
+ FullscreenVideoController();
+ virtual ~FullscreenVideoController();
+
+ void setMediaElement(WebCore::HTMLMediaElement*);
+ WebCore::HTMLMediaElement* mediaElement() const { return m_mediaElement.get(); }
+
+ void gtkConfigure(GdkEventConfigure* event);
+
+ void enterFullscreen();
+ void exitFullscreen();
+
+ void exitOnUserRequest();
+ void togglePlay();
+ void beginSeek();
+ void doSeek();
+ void endSeek();
+
+ void hideHud();
+ void showHud(bool);
+ gboolean updateHudProgressBar();
+
+ float volume() const;
+ void setVolume(float);
+ void volumeChanged();
+ void muteChanged();
+
+private:
+ bool canPlay() const;
+ void play();
+ void pause();
+ void playStateChanged();
+
+ bool muted() const;
+
+ float currentTime() const;
+ void setCurrentTime(float);
+
+ float duration() const;
+ float percentLoaded() const;
+
+ void createHud();
+ void updateHudPosition();
+
+ RefPtr<WebCore::HTMLMediaElement> m_mediaElement;
+ RefPtr<WebCore::GStreamerGWorld> m_gstreamerGWorld;
+
+ guint m_hudTimeoutId;
+ guint m_progressBarUpdateId;
+ guint m_progressBarFillUpdateId;
+ guint m_hscaleUpdateId;
+ guint m_volumeUpdateId;
+ bool m_seekLock;
+ GtkWidget* m_window;
+ GtkWidget* m_hudWindow;
+ GtkAction* m_playPauseAction;
+ GtkAction* m_exitFullscreenAction;
+ GtkWidget* m_timeHScale;
+ GtkWidget* m_timeLabel;
+ GtkWidget* m_volumeButton;
+};
+
+#endif
+
+#endif // FullscreenVideoController_h
diff --git a/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
new file mode 100644
index 0000000..31af243
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
@@ -0,0 +1,359 @@
+/*
+ * Copyright (C) 2008 Gustavo Noronha Silva
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "InspectorClientGtk.h"
+
+#include "Frame.h"
+#include "InspectorController.h"
+#include "NotImplemented.h"
+#include "PlatformString.h"
+#include "webkitversion.h"
+#include "webkitwebinspector.h"
+#include "webkitwebinspectorprivate.h"
+#include "webkitwebview.h"
+#include "webkitwebviewprivate.h"
+#include <wtf/text/CString.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+static void notifyWebViewDestroyed(WebKitWebView* webView, InspectorFrontendClient* inspectorFrontendClient)
+{
+ inspectorFrontendClient->destroyInspectorWindow(true);
+}
+
+InspectorClient::InspectorClient(WebKitWebView* webView)
+ : m_inspectedWebView(webView)
+ , m_frontendPage(0)
+ , m_frontendClient(0)
+{}
+
+InspectorClient::~InspectorClient()
+{
+ if (m_frontendClient) {
+ m_frontendClient->disconnectInspectorClient();
+ m_frontendClient = 0;
+ }
+}
+
+void InspectorClient::inspectorDestroyed()
+{
+ delete this;
+}
+
+void InspectorClient::openInspectorFrontend(InspectorController* controller)
+{
+ // This g_object_get will ref the inspector. We're not doing an
+ // unref if this method succeeds because the inspector object must
+ // be alive even after the inspected WebView is destroyed - the
+ // close-window and destroy signals still need to be
+ // emitted.
+ WebKitWebInspector* webInspector = 0;
+ g_object_get(m_inspectedWebView, "web-inspector", &webInspector, NULL);
+ ASSERT(webInspector);
+
+ WebKitWebView* inspectorWebView = 0;
+ g_signal_emit_by_name(webInspector, "inspect-web-view", m_inspectedWebView, &inspectorWebView);
+
+ if (!inspectorWebView) {
+ g_object_unref(webInspector);
+ return;
+ }
+
+ webkit_web_inspector_set_web_view(webInspector, inspectorWebView);
+
+ GOwnPtr<gchar> inspectorPath(g_build_filename(inspectorFilesPath(), "inspector.html", NULL));
+ GOwnPtr<gchar> inspectorURI(g_filename_to_uri(inspectorPath.get(), 0, 0));
+ webkit_web_view_load_uri(inspectorWebView, inspectorURI.get());
+
+ gtk_widget_show(GTK_WIDGET(inspectorWebView));
+
+ m_frontendPage = core(inspectorWebView);
+ m_frontendClient = new InspectorFrontendClient(m_inspectedWebView, inspectorWebView, webInspector, m_frontendPage, this);
+ m_frontendPage->inspectorController()->setInspectorFrontendClient(m_frontendClient);
+
+ // The inspector must be in it's own PageGroup to avoid deadlock while debugging.
+ m_frontendPage->setGroupName("");
+}
+
+void InspectorClient::releaseFrontendPage()
+{
+ m_frontendPage = 0;
+}
+
+void InspectorClient::highlight(Node*)
+{
+ hideHighlight();
+}
+
+void InspectorClient::hideHighlight()
+{
+ // FIXME: we should be able to only invalidate the actual rects of
+ // the new and old nodes. We need to track the nodes, and take the
+ // actual highlight size into account when calculating the damage
+ // rect.
+ gtk_widget_queue_draw(GTK_WIDGET(m_inspectedWebView));
+}
+
+#ifdef HAVE_GSETTINGS
+static String toGSettingName(String inspectorSettingName)
+{
+ if (inspectorSettingName == "resourceTrackingEnabled")
+ return String("resource-tracking-enabled");
+
+ if (inspectorSettingName == "xhrMonitor")
+ return String("xhr-monitor-enabled");
+
+ if (inspectorSettingName == "frontendSettings")
+ return String("frontend-settings");
+
+ if (inspectorSettingName == "debuggerEnabled")
+ return String("debugger-enabled");
+
+ if (inspectorSettingName == "profilerEnabled")
+ return String("profiler-enabled");
+
+ return inspectorSettingName;
+}
+
+static String truthStringFromVariant(GVariant* variant)
+{
+ if (g_variant_get_boolean(variant))
+ return String("true");
+
+ return String("false");
+}
+
+static GVariant* variantFromTruthString(const String& truth)
+{
+ if (truth == "true")
+ return g_variant_new_boolean(TRUE);
+
+ return g_variant_new_boolean(FALSE);
+}
+
+static bool shouldIgnoreSetting(const String& key)
+{
+ // Ignore this setting for now, it doesn't seem to be used for
+ // anything right now.
+ if (key == "lastActivePanel")
+ return true;
+
+ // GSettings considers trying to fetch or set a setting that is
+ // not backed by a schema as programmer error, and aborts the
+ // program's execution. We check here to avoid having an unhandled
+ // setting as a fatal error.
+ if (key == "resourceTrackingEnabled" || key == "xhrMonitor"
+ || key == "frontendSettings" || key == "debuggerEnabled"
+ || key == "profilerEnabled")
+ return false;
+
+ LOG_VERBOSE(NotYetImplemented, "Unknown key ignored: %s", key.ascii().data());
+ return true;
+}
+
+void InspectorClient::populateSetting(const String& key, String* value)
+{
+ if (shouldIgnoreSetting(key))
+ return;
+
+ GSettings* settings = inspectorGSettings();
+ if (!settings)
+ return;
+
+ GRefPtr<GVariant> variant = adoptGRef(g_settings_get_value(settings, toGSettingName(key).utf8().data()));
+
+ if (key == "resourceTrackingEnabled" || key == "xhrMonitor"
+ || key == "debuggerEnabled" || key == "profilerEnabled")
+ *value = truthStringFromVariant(variant.get());
+ else if (key == "frontendSettings")
+ *value = String(g_variant_get_string(variant.get(), 0));
+}
+
+void InspectorClient::storeSetting(const String& key, const String& value)
+{
+ if (shouldIgnoreSetting(key))
+ return;
+
+ GSettings* settings = inspectorGSettings();
+ if (!settings)
+ return;
+
+ GRefPtr<GVariant> variant(0);
+
+ // Set the key with the appropriate type, and also avoid setting
+ // unknown keys to avoid aborting the execution.
+ if (key == "resourceTrackingEnabled" || key == "xhrMonitor"
+ || key == "debuggerEnabled" || key == "profilerEnabled")
+ variant = adoptGRef(variantFromTruthString(value));
+ else if (key == "frontendSettings")
+ variant = adoptGRef(g_variant_new_string(value.utf8().data()));
+
+ if (!variant)
+ return;
+
+ g_settings_set_value(settings, toGSettingName(key).utf8().data(), variant.get());
+}
+#else
+void InspectorClient::populateSetting(const String&, String*)
+{
+ notImplemented();
+}
+
+void InspectorClient::storeSetting(const String&, const String&)
+{
+ notImplemented();
+}
+#endif // HAVE_GSETTINGS
+
+bool InspectorClient::sendMessageToFrontend(const String& message)
+{
+ return doDispatchMessageOnFrontendPage(m_frontendPage, message);
+}
+
+const char* InspectorClient::inspectorFilesPath()
+{
+ if (m_inspectorFilesPath)
+ m_inspectorFilesPath.get();
+
+ const char* environmentPath = getenv("WEBKIT_INSPECTOR_PATH");
+ if (environmentPath && g_file_test(environmentPath, G_FILE_TEST_IS_DIR))
+ m_inspectorFilesPath.set(g_strdup(environmentPath));
+ else
+ m_inspectorFilesPath.set(g_build_filename(DATA_DIR, "webkitgtk-"WEBKITGTK_API_VERSION_STRING, "webinspector", NULL));
+
+ return m_inspectorFilesPath.get();
+}
+
+InspectorFrontendClient::InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, Page* inspectorPage, InspectorClient* inspectorClient)
+ : InspectorFrontendClientLocal(core(inspectedWebView)->inspectorController(), inspectorPage)
+ , m_inspectorWebView(inspectorWebView)
+ , m_inspectedWebView(inspectedWebView)
+ , m_webInspector(webInspector)
+ , m_inspectorClient(inspectorClient)
+{
+ g_signal_connect(m_inspectorWebView, "destroy",
+ G_CALLBACK(notifyWebViewDestroyed), (gpointer)this);
+}
+
+InspectorFrontendClient::~InspectorFrontendClient()
+{
+ if (m_inspectorClient) {
+ m_inspectorClient->disconnectFrontendClient();
+ m_inspectorClient = 0;
+ }
+ ASSERT(!m_webInspector);
+}
+
+void InspectorFrontendClient::destroyInspectorWindow(bool notifyInspectorController)
+{
+ if (!m_webInspector)
+ return;
+ WebKitWebInspector* webInspector = m_webInspector;
+ m_webInspector = 0;
+
+ g_signal_handlers_disconnect_by_func(m_inspectorWebView, (gpointer)notifyWebViewDestroyed, (gpointer)this);
+ m_inspectorWebView = 0;
+
+ if (notifyInspectorController)
+ core(m_inspectedWebView)->inspectorController()->disconnectFrontend();
+
+ if (m_inspectorClient)
+ m_inspectorClient->releaseFrontendPage();
+
+ gboolean handled = FALSE;
+ g_signal_emit_by_name(webInspector, "close-window", &handled);
+ ASSERT(handled);
+
+ // Please do not use member variables here because InspectorFrontendClient object pointed by 'this'
+ // has been implicitly deleted by "close-window" function.
+
+ /* we should now dispose our own reference */
+ g_object_unref(webInspector);
+}
+
+String InspectorFrontendClient::localizedStringsURL()
+{
+ GOwnPtr<gchar> stringsPath(g_build_filename(m_inspectorClient->inspectorFilesPath(), "localizedStrings.js", NULL));
+ GOwnPtr<gchar> stringsURI(g_filename_to_uri(stringsPath.get(), 0, 0));
+
+ // FIXME: support l10n of localizedStrings.js
+ return String::fromUTF8(stringsURI.get());
+}
+
+String InspectorFrontendClient::hiddenPanels()
+{
+ notImplemented();
+ return String();
+}
+
+void InspectorFrontendClient::bringToFront()
+{
+ if (!m_inspectorWebView)
+ return;
+
+ gboolean handled = FALSE;
+ g_signal_emit_by_name(m_webInspector, "show-window", &handled);
+}
+
+void InspectorFrontendClient::closeWindow()
+{
+ destroyInspectorWindow(true);
+}
+
+void InspectorFrontendClient::disconnectFromBackend()
+{
+ destroyInspectorWindow(false);
+}
+
+void InspectorFrontendClient::attachWindow()
+{
+ if (!m_inspectorWebView)
+ return;
+
+ gboolean handled = FALSE;
+ g_signal_emit_by_name(m_webInspector, "attach-window", &handled);
+}
+
+void InspectorFrontendClient::detachWindow()
+{
+ if (!m_inspectorWebView)
+ return;
+
+ gboolean handled = FALSE;
+ g_signal_emit_by_name(m_webInspector, "detach-window", &handled);
+}
+
+void InspectorFrontendClient::setAttachedWindowHeight(unsigned height)
+{
+ notImplemented();
+}
+
+void InspectorFrontendClient::inspectedURLChanged(const String& newURL)
+{
+ if (!m_inspectorWebView)
+ return;
+
+ webkit_web_inspector_set_inspected_uri(m_webInspector, newURL.utf8().data());
+}
+
+}
+
diff --git a/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
new file mode 100644
index 0000000..08038f6
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
@@ -0,0 +1,110 @@
+/*
+ * Copyright (C) 2007 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of
+ * its contributors may be used to endorse or promote products derived
+ * from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef InspectorClientGtk_h
+#define InspectorClientGtk_h
+
+#include "GOwnPtr.h"
+#include "InspectorClient.h"
+#include "InspectorFrontendClientLocal.h"
+#include "webkitwebview.h"
+#include "webkitwebinspector.h"
+#include <wtf/Forward.h>
+
+namespace WebCore {
+ class Node;
+ class Page;
+}
+
+namespace WebKit {
+
+ class InspectorFrontendClient;
+
+ class InspectorClient : public WebCore::InspectorClient {
+ public:
+ InspectorClient(WebKitWebView* webView);
+ ~InspectorClient();
+
+ void disconnectFrontendClient() { m_frontendClient = 0; }
+
+ virtual void inspectorDestroyed();
+
+ virtual void openInspectorFrontend(WebCore::InspectorController*);
+
+ virtual void highlight(WebCore::Node*);
+ virtual void hideHighlight();
+
+ virtual void populateSetting(const WTF::String& key, WTF::String* value);
+ virtual void storeSetting(const WTF::String& key, const WTF::String& value);
+
+ virtual bool sendMessageToFrontend(const WTF::String&);
+
+ void releaseFrontendPage();
+ const char* inspectorFilesPath();
+
+ private:
+ WebKitWebView* m_inspectedWebView;
+ WebCore::Page* m_frontendPage;
+ InspectorFrontendClient* m_frontendClient;
+ GOwnPtr<gchar> m_inspectorFilesPath;
+ };
+
+ class InspectorFrontendClient : public WebCore::InspectorFrontendClientLocal {
+ public:
+ InspectorFrontendClient(WebKitWebView* inspectedWebView, WebKitWebView* inspectorWebView, WebKitWebInspector* webInspector, WebCore::Page* inspectorPage, InspectorClient* inspectorClient);
+
+ void disconnectInspectorClient() { m_inspectorClient = 0; }
+
+ void destroyInspectorWindow(bool notifyInspectorController);
+
+ virtual WTF::String localizedStringsURL();
+
+ virtual WTF::String hiddenPanels();
+
+ virtual void bringToFront();
+ virtual void closeWindow();
+ virtual void disconnectFromBackend();
+
+ virtual void attachWindow();
+ virtual void detachWindow();
+
+ virtual void setAttachedWindowHeight(unsigned height);
+
+ virtual void inspectedURLChanged(const WTF::String& newURL);
+
+ private:
+ virtual ~InspectorFrontendClient();
+
+ WebKitWebView* m_inspectorWebView;
+ WebKitWebView* m_inspectedWebView;
+ WebKitWebInspector* m_webInspector;
+ InspectorClient* m_inspectorClient;
+ };
+}
+
+#endif
diff --git a/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp
new file mode 100644
index 0000000..e99fc84
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2007 Luca Bruno <lethalman88@gmail.com>
+ * Copyright (C) 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2010 Martin Robinson <mrobinson@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "PasteboardHelperGtk.h"
+
+#include "DataObjectGtk.h"
+#include "FocusController.h"
+#include "Frame.h"
+#include "webkitwebframe.h"
+#include "webkitwebview.h"
+#include "webkitwebviewprivate.h"
+#include <gtk/gtk.h>
+
+using namespace WebCore;
+
+namespace WebKit {
+
+PasteboardHelperGtk::PasteboardHelperGtk()
+{
+ initializeTargetList();
+}
+
+PasteboardHelperGtk::~PasteboardHelperGtk()
+{
+}
+
+guint PasteboardHelperGtk::getIdForTargetType(PasteboardTargetType type)
+{
+ if (type == TargetTypeMarkup)
+ return WEBKIT_WEB_VIEW_TARGET_INFO_HTML;
+ if (type == TargetTypeImage)
+ return WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE;
+ if (type == TargetTypeURIList)
+ return WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST;
+ if (type == TargetTypeNetscapeURL)
+ return WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL;
+
+ return WEBKIT_WEB_VIEW_TARGET_INFO_TEXT;
+}
+
+bool PasteboardHelperGtk::usePrimarySelectionClipboard(GtkWidget* widget)
+{
+ return webkit_web_view_use_primary_for_paste(WEBKIT_WEB_VIEW((widget)));
+}
+
+}
diff --git a/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
new file mode 100644
index 0000000..d00333c
--- /dev/null
+++ b/Source/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2007 Luca Bruno <lethalman88@gmail.com>
+ * Copyright (C) 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2010 Martin Robinson <mrobinson@webkit.org>
+ * All rights reserved.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ *
+ */
+
+#ifndef PasteboardHelperGtk_h
+#define PasteboardHelperGtk_h
+
+/*
+ * FIXME: this is for WebCore support and must be removed once
+ * a better solution is found
+ */
+
+#include "Frame.h"
+#include "PasteboardHelper.h"
+
+using namespace WebCore;
+
+namespace WebKit {
+
+class PasteboardHelperGtk : public PasteboardHelper {
+public:
+ PasteboardHelperGtk();
+ ~PasteboardHelperGtk();
+ virtual guint getIdForTargetType(PasteboardTargetType);
+
+protected:
+ virtual bool usePrimarySelectionClipboard(GtkWidget*);
+};
+
+}
+
+#endif // PasteboardHelperGtk_h
diff --git a/Source/WebKit/gtk/docs/GNUmakefile.am b/Source/WebKit/gtk/docs/GNUmakefile.am
new file mode 100644
index 0000000..565f535
--- /dev/null
+++ b/Source/WebKit/gtk/docs/GNUmakefile.am
@@ -0,0 +1,107 @@
+## Process this file with automake to produce GNUmakefile.in
+
+# We require automake 1.6 at least.
+AUTOMAKE_OPTIONS = 1.6
+
+# This is a blank Makefile.am for using gtk-doc.
+# Copy this to your project's API docs directory and modify the variables to
+# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
+# of using the various options.
+
+# The name of the module, e.g. 'glib'.
+DOC_MODULE=webkitgtk
+
+# The top-level SGML file. You can change this if you want to.
+DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml
+
+# The directory containing the source code. Relative to $(srcdir).
+# gtk-doc will search all .c & .h files beneath here for inline comments
+# documenting the functions and macros.
+# e.g. DOC_SOURCE_DIR=../../../gtk
+DOC_SOURCE_DIR=../webkit
+
+# Extra options to pass to gtkdoc-scangobj. Not normally needed.
+SCANGOBJ_OPTIONS="--type-init-func=g_thread_init(NULL);g_type_init()"
+
+# Extra options to supply to gtkdoc-scan.
+# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
+SCAN_OPTIONS=--deprecated-guards="WEBKIT_DISABLE_DEPRECATED" --ignore-decorators="WEBKIT_API"
+
+# Extra options to supply to gtkdoc-mkdb.
+# e.g. MKDB_OPTIONS=--sgml-mode --output-format=xml
+MKDB_OPTIONS=--sgml-mode --output-format=xml --source-suffixes=h,c,cpp
+
+# Extra options to supply to gtkdoc-mktmpl
+# e.g. MKTMPL_OPTIONS=--only-section-tmpl
+MKTMPL_OPTIONS=
+
+# Extra options to supply to gtkdoc-fixref. Not normally needed.
+# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
+FIXXREF_OPTIONS=
+
+# Used for dependencies. The docs will be rebuilt if any of these change.
+# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
+# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
+HFILE_GLOB=$(top_srcdir)/WebKit/gtk/webkit/*.h
+CFILE_GLOB=$(top_srcdir)/WebKit/gtk/webkit/*.cpp
+
+# Header files to ignore when scanning.
+# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h
+IGNORE_HFILES=webkitprivate.h
+
+# Images to copy into HTML directory.
+# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
+HTML_IMAGES=
+
+# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
+# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
+content_files=webkitenvironment.xml
+
+# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
+# These files must be listed here *and* in content_files
+# e.g. expand_content_files=running.sgml
+expand_content_files=
+
+# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
+# Only needed if you are using gtkdoc-scangobj to dynamically query widget
+# signals and properties.
+# e.g. INCLUDES=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
+# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
+INCLUDES= \
+ -I$(top_srcdir)/WebKit/gtk \
+ -I$(top_builddir)/WebKit/gtk \
+ $(global_cppflags) \
+ $(global_cflags) \
+ -I$(top_srcdir) \
+ -I$(top_srcdir)/Source/JavaScriptCore \
+ -I$(top_srcdir)/Source/JavaScriptCore/ForwardingHeaders \
+ -I$(top_srcdir)/Source/JavaScriptCore/parser \
+ -I$(top_srcdir)/Source/JavaScriptCore/wtf \
+ -I$(top_builddir)/DerivedSources \
+ -I$(top_srcdir)/WebCore/platform/network/soup/cache \
+ $(GLOBALDEPS_CFLAGS) \
+ $(CAIRO_CFLAGS) \
+ $(GLIB_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(LIBSOUP_CFLAGS)
+GTKDOC_LIBS= \
+ $(top_builddir)/libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
+ $(GLIB_LIBS) \
+ $(GTK_LIBS) \
+ $(LIBSOUP_LIBS)
+
+# This includes the standard gtk-doc make rules, copied by gtkdocize.
+include $(top_srcdir)/gtk-doc.make
+
+# Other files to distribute
+# e.g. EXTRA_DIST += version.xml.in
+EXTRA_DIST +=
+
+# Files not to distribute
+# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
+# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
+#DISTCLEANFILES +=
+
+# Comment this out if you want your docs-status tested during 'make check'
+#TESTS = $(GTKDOC_CHECK)
+
diff --git a/Source/WebKit/gtk/docs/version.xml.in b/Source/WebKit/gtk/docs/version.xml.in
new file mode 100644
index 0000000..d78bda9
--- /dev/null
+++ b/Source/WebKit/gtk/docs/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/Source/WebKit/gtk/docs/webkitenvironment.xml b/Source/WebKit/gtk/docs/webkitenvironment.xml
new file mode 100644
index 0000000..03d64b7
--- /dev/null
+++ b/Source/WebKit/gtk/docs/webkitenvironment.xml
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
+<refentry id="webkit-environment">
+<refmeta>
+<refentrytitle>Environment</refentrytitle>
+<manvolnum>7</manvolnum>
+<refmiscinfo>WEBKITGTK Library</refmiscinfo>
+</refmeta>
+
+<refnamediv>
+<refname>Environment</refname>
+<refpurpose>How does the environment affect applications that use WebKitGTK+</refpurpose>
+</refnamediv>
+
+<refsect2>
+<title>Logging</title>
+
+<para>
+You can make WebKitGTK+ log some of what it is doing internally by
+using the <literal>WEBKIT_DEBUG</literal> environment variable. It
+takes a space-separated list of names, representing the various
+aspects of the work the library performs. Notice that most of the
+logging is only done in debug builds (that you get when you pass
+<literal>--enable-debug</literal> to the <literal>configure</literal>
+script).
+</para>
+
+<para>
+A list of possible values for the environment variable follows:
+</para>
+
+<variablelist>
+ <varlistentry>
+ <term>BackForward</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Editing</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Events</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Frames</term>
+ </varlistentry>
+ <varlistentry>
+ <term>FTP</term>
+ </varlistentry>
+ <varlistentry>
+ <term>History</term>
+ </varlistentry>
+ <varlistentry>
+ <term>IconDatabase</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Loading</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Media</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Network</term>
+ </varlistentry>
+ <varlistentry>
+ <term>NotYetImplemented</term>
+ </varlistentry>
+ <varlistentry>
+ <term>PageCache</term>
+ </varlistentry>
+ <varlistentry>
+ <term>PlatformLeaks</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Plugin</term>
+ </varlistentry>
+ <varlistentry>
+ <term>PopupBlocking</term>
+ </varlistentry>
+ <varlistentry>
+ <term>SpellingAndGrammar</term>
+ </varlistentry>
+ <varlistentry>
+ <term>SQLDatabase</term>
+ </varlistentry>
+ <varlistentry>
+ <term>StorageAPI</term>
+ </varlistentry>
+ <varlistentry>
+ <term>TextConversion</term>
+ </varlistentry>
+ <varlistentry>
+ <term>Threading</term>
+ </varlistentry>
+</variablelist>
+
+</refsect2>
+
+</refentry>
diff --git a/Source/WebKit/gtk/docs/webkitgtk-docs.sgml b/Source/WebKit/gtk/docs/webkitgtk-docs.sgml
new file mode 100644
index 0000000..9a833ea
--- /dev/null
+++ b/Source/WebKit/gtk/docs/webkitgtk-docs.sgml
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
+ "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
+<!ENTITY version SYSTEM "version.xml">
+]>
+<book id="index" xmlns:xi="http://www.w3.org/2003/XInclude">
+ <bookinfo>
+ <title>WebKitGTK+ Reference Manual</title>
+ <releaseinfo>for WebKitGTK+ &version;</releaseinfo>
+ </bookinfo>
+
+ <chapter>
+ <title>Global functions</title>
+ <xi:include href="xml/webkit.xml"/>
+ </chapter>
+
+ <chapter>
+ <title>Class Overview</title>
+ <xi:include href="xml/webkitwebview.xml"/>
+ <xi:include href="xml/webkitwebframe.xml"/>
+ <xi:include href="xml/webkitwebsettings.xml"/>
+ <xi:include href="xml/webkitwebbackforwardlist.xml"/>
+ <xi:include href="xml/webkitwebhistoryitem.xml"/>
+ <xi:include href="xml/webkitwebnavigationaction.xml"/>
+ <xi:include href="xml/webkitwebpolicydecision.xml"/>
+ <xi:include href="xml/webkitgeolocationpolicydecision.xml"/>
+ <xi:include href="xml/webkitnetworkrequest.xml"/>
+ <xi:include href="xml/webkitnetworkresponse.xml"/>
+ <xi:include href="xml/webkitwebinspector.xml"/>
+ <xi:include href="xml/webkitwebdatabase.xml"/>
+ <xi:include href="xml/webkitwebdatasource.xml"/>
+ <xi:include href="xml/webkitwebresource.xml"/>
+ <xi:include href="xml/webkitdownload.xml"/>
+ <xi:include href="xml/webkitviewportattributes.xml"/>
+ <xi:include href="xml/webkithittestresult.xml"/>
+ <xi:include href="xml/webkitwebplugin.xml"/>
+ <xi:include href="xml/webkitwebplugindatabase.xml"/>
+ <xi:include href="xml/webkitsoupauthdialog.xml"/>
+ <xi:include href="xml/webkitsecurityorigin.xml"/>
+ <xi:include href="xml/webkitwebwindowfeatures.xml"/>
+ </chapter>
+
+ <chapter>
+ <title>Running WebKitGTK+-based programs</title>
+ <xi:include href="webkitenvironment.xml"/>
+ </chapter>
+
+ <index id="index-all">
+ <title>Index</title>
+ </index>
+ <index id="index-deprecated" role="deprecated">
+ <title>Index of deprecated symbols</title>
+ </index>
+ <index id="index-1.0.1" role="1.0.1">
+ <title>Index of new symbols in 1.0.1</title>
+ </index>
+ <index id="index-1.0.2" role="1.0.2">
+ <title>Index of new symbols in 1.0.2</title>
+ </index>
+ <index id="index-1.0.3" role="1.0.3">
+ <title>Index of new symbols in 1.0.3</title>
+ </index>
+ <index id="index-1.1.1" role="1.1.1">
+ <title>Index of new symbols in 1.1.1</title>
+ </index>
+ <index id="index-1.1.2" role="1.1.2">
+ <title>Index of new symbols in 1.1.2</title>
+ </index>
+ <index id="index-1.1.3" role="1.1.3">
+ <title>Index of new symbols in 1.1.3</title>
+ </index>
+ <index id="index-1.1.4" role="1.1.4">
+ <title>Index of new symbols in 1.1.4</title>
+ </index>
+ <index id="index-1.1.5" role="1.1.5">
+ <title>Index of new symbols in 1.1.5</title>
+ </index>
+ <index id="index-1.1.6" role="1.1.6">
+ <title>Index of new symbols in 1.1.6</title>
+ </index>
+ <index id="index-1.1.7" role="1.1.7">
+ <title>Index of new symbols in 1.1.7</title>
+ </index>
+ <index id="index-1.1.8" role="1.1.8">
+ <title>Index of new symbols in 1.1.8</title>
+ </index>
+ <index id="index-1.1.10" role="1.1.10">
+ <title>Index of new symbols in 1.1.10</title>
+ </index>
+ <index id="index-1.1.11" role="1.1.11">
+ <title>Index of new symbols in 1.1.11</title>
+ </index>
+ <index id="index-1.1.13" role="1.1.13">
+ <title>Index of new symbols in 1.1.13</title>
+ </index>
+ <index id="index-1.1.14" role="1.1.14">
+ <title>Index of new symbols in 1.1.14</title>
+ </index>
+ <index id="index-1.1.15" role="1.1.15">
+ <title>Index of new symbols in 1.1.15</title>
+ </index>
+ <index id="index-1.1.16" role="1.1.16">
+ <title>Index of new symbols in 1.1.16</title>
+ </index>
+ <index id="index-1.1.17" role="1.1.17">
+ <title>Index of new symbols in 1.1.17</title>
+ </index>
+ <index id="index-1.1.18" role="1.1.18">
+ <title>Index of new symbols in 1.1.18</title>
+ </index>
+ <index id="index-1.1.20" role="1.1.20">
+ <title>Index of new symbols in 1.1.20</title>
+ </index>
+ <index id="index-1.1.23" role="1.1.23">
+ <title>Index of new symbols in 1.1.23</title>
+ </index>
+ <index id="index-1.3.1" role="1.3.1">
+ <title>Index of new symbols in 1.3.1</title>
+ </index>
+ <index id="index-1.3.2" role="1.3.2">
+ <title>Index of new symbols in 1.3.2</title>
+ </index>
+ <index id="index-1.3.3" role="1.3.3">
+ <title>Index of new symbols in 1.3.3</title>
+ </index>
+ <index id="index-1.3.4" role="1.3.4">
+ <title>Index of new symbols in 1.3.4</title>
+ </index>
+ <index id="index-1.3.8" role="1.3.8">
+ <title>Index of new symbols in 1.3.8</title>
+ </index>
+</book>
diff --git a/Source/WebKit/gtk/docs/webkitgtk-overrides.txt b/Source/WebKit/gtk/docs/webkitgtk-overrides.txt
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/Source/WebKit/gtk/docs/webkitgtk-overrides.txt
diff --git a/Source/WebKit/gtk/docs/webkitgtk-sections.txt b/Source/WebKit/gtk/docs/webkitgtk-sections.txt
new file mode 100644
index 0000000..2759e2b
--- /dev/null
+++ b/Source/WebKit/gtk/docs/webkitgtk-sections.txt
@@ -0,0 +1,705 @@
+<SECTION>
+<FILE>webkitwebsettings</FILE>
+<TITLE>WebKitWebSettings</TITLE>
+WebKitEditingBehavior
+WebKitWebSettings
+webkit_web_settings_copy
+webkit_web_settings_new
+webkit_web_settings_get_user_agent
+<SUBSECTION Standard>
+WEBKIT_WEB_SETTINGS
+WEBKIT_IS_WEB_SETTINGS
+WEBKIT_TYPE_WEB_SETTINGS
+WEBKIT_WEB_SETTINGS_CLASS
+WEBKIT_IS_WEB_SETTINGS_CLASS
+WEBKIT_WEB_SETTINGS_GET_CLASS
+<SUBSECTION Private>
+webkit_web_settings_get_type
+WebKitWebSettingsPrivate
+WebKitWebSettings
+WebKitWebSettingsClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebbackforwardlist</FILE>
+<TITLE>WebKitWebBackForwardList</TITLE>
+WebKitWebBackForwardList
+webkit_web_back_forward_list_add_item
+webkit_web_back_forward_list_clear
+webkit_web_back_forward_list_contains_item
+webkit_web_back_forward_list_get_back_item
+webkit_web_back_forward_list_get_back_length
+webkit_web_back_forward_list_get_back_list_with_limit
+webkit_web_back_forward_list_get_current_item
+webkit_web_back_forward_list_get_forward_item
+webkit_web_back_forward_list_get_forward_length
+webkit_web_back_forward_list_get_forward_list_with_limit
+webkit_web_back_forward_list_get_limit
+webkit_web_back_forward_list_get_nth_item
+webkit_web_back_forward_list_go_back
+webkit_web_back_forward_list_go_forward
+webkit_web_back_forward_list_go_to_item
+webkit_web_back_forward_list_new_with_web_view
+webkit_web_back_forward_list_set_limit
+<SUBSECTION Standard>
+WEBKIT_WEB_BACK_FORWARD_LIST
+WEBKIT_IS_WEB_BACK_FORWARD_LIST
+WEBKIT_TYPE_WEB_BACK_FORWARD_LIST
+WEBKIT_WEB_BACK_FORWARD_LIST_CLASS
+WEBKIT_IS_WEB_BACK_FORWARD_LIST_CLASS
+WEBKIT_WEB_BACK_FORWARD_LIST_GET_CLASS
+<SUBSECTION Private>
+WebKitWebBackForwardListPrivate
+webkit_web_back_forward_list_get_type
+WebKitWebBackForwardList
+WebKitWebBackForwardListClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebhistoryitem</FILE>
+<TITLE>WebKitWebHistoryItem</TITLE>
+WebKitWebHistoryItem
+webkit_web_history_item_copy
+webkit_web_history_item_get_alternate_title
+webkit_web_history_item_get_last_visited_time
+webkit_web_history_item_get_original_uri
+webkit_web_history_item_get_title
+webkit_web_history_item_get_uri
+webkit_web_history_item_new
+webkit_web_history_item_new_with_data
+webkit_web_history_item_set_alternate_title
+<SUBSECTION Standard>
+WEBKIT_WEB_HISTORY_ITEM
+WEBKIT_IS_WEB_HISTORY_ITEM
+WEBKIT_TYPE_WEB_HISTORY_ITEM
+WEBKIT_WEB_HISTORY_ITEM_CLASS
+WEBKIT_IS_WEB_HISTORY_ITEM_CLASS
+WEBKIT_WEB_HISTORY_ITEM_GET_CLASS
+<SUBSECTION Private>
+webkit_web_history_item_get_type
+WebKitWebHistoryItemPrivate
+WebKitWebHistoryItem
+WebKitWebHistoryItemClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebframe</FILE>
+<TITLE>WebKitWebFrame</TITLE>
+WebKitLoadStatus
+WebKitWebFrame
+webkit_web_frame_find_frame
+webkit_web_frame_get_data_source
+webkit_web_frame_get_global_context
+webkit_web_frame_get_horizontal_scrollbar_policy
+webkit_web_frame_get_load_status
+webkit_web_frame_get_name
+webkit_web_frame_get_network_response
+webkit_web_frame_get_parent
+webkit_web_frame_get_provisional_data_source
+webkit_web_frame_get_security_origin
+webkit_web_frame_get_title
+webkit_web_frame_get_uri
+webkit_web_frame_get_vertical_scrollbar_policy
+webkit_web_frame_get_web_view
+webkit_web_frame_load_alternate_string
+webkit_web_frame_load_request
+webkit_web_frame_load_string
+webkit_web_frame_load_uri
+webkit_web_frame_new
+webkit_web_frame_print
+webkit_web_frame_print_full
+webkit_web_frame_reload
+webkit_web_frame_stop_loading
+<SUBSECTION Standard>
+WEBKIT_WEB_FRAME
+WEBKIT_IS_WEB_FRAME
+WEBKIT_TYPE_WEB_FRAME
+WEBKIT_WEB_FRAME_CLASS
+WEBKIT_IS_WEB_FRAME_CLASS
+WEBKIT_WEB_FRAME_GET_CLASS
+<SUBSECTION Private>
+WEBKIT_WEB_FRAME_GET_PRIVATE
+WebKitWebFramePrivate
+webkit_web_frame_get_type
+WebKitWebFrame
+WebKitWebFrameClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitdownload</FILE>
+WebKitDownloadError
+WebKitDownloadStatus
+<TITLE>WebKitDownload</TITLE>
+WebKitDownload
+webkit_download_cancel
+webkit_download_error_get_type
+webkit_download_get_current_size
+webkit_download_get_destination_uri
+webkit_download_get_elapsed_time
+webkit_download_get_network_request
+webkit_download_get_network_response
+webkit_download_get_progress
+webkit_download_get_status
+webkit_download_get_suggested_filename
+webkit_download_get_total_size
+webkit_download_get_uri
+webkit_download_new
+webkit_download_set_destination_uri
+webkit_download_start
+webkit_download_status_get_type
+<SUBSECTION Standard>
+WEBKIT_DOWNLOAD
+WEBKIT_DOWNLOAD_CLASS
+WEBKIT_DOWNLOAD_GET_CLASS
+WEBKIT_IS_DOWNLOAD
+WEBKIT_IS_DOWNLOAD_CLASS
+WEBKIT_TYPE_DOWNLOAD
+WEBKIT_TYPE_DOWNLOAD_ERROR
+WEBKIT_TYPE_DOWNLOAD_STATUS
+<SUBSECTION Private>
+webkit_download_get_type
+WebKitDownload
+WebKitDownloadClass
+WebKitDownloadPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkitsecurityorigin</FILE>
+<TITLE>WebKitSecurityOrigin</TITLE>
+WebKitSecurityOrigin
+webkit_security_origin_get_all_web_databases
+webkit_security_origin_get_host
+webkit_security_origin_get_port
+webkit_security_origin_get_protocol
+webkit_security_origin_get_type
+webkit_security_origin_get_web_database_quota
+webkit_security_origin_get_web_database_usage
+webkit_security_origin_set_web_database_quota
+<SUBSECTION Standard>
+WEBKIT_SECURITY_ORIGIN
+WEBKIT_SECURITY_ORIGIN_CLASS
+WEBKIT_SECURITY_ORIGIN_GET_CLASS
+WEBKIT_IS_SECURITY_ORIGIN
+WEBKIT_IS_SECURITY_ORIGIN_CLASS
+WEBKIT_TYPE_SECURITY_ORIGIN
+<SUBSECTION Private>
+WebKitSecurityOrigin
+WebKitSecurityOriginClass
+WebKitSecurityOriginPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkithittestresult</FILE>
+<TITLE>WebKitHitTestResult</TITLE>
+WebKitHitTestResult
+WebKitHitTestResultContext
+<SUBSECTION Standard>
+WEBKIT_HIT_TEST_RESULT
+WEBKIT_HIT_TEST_RESULT_CLASS
+WEBKIT_HIT_TEST_RESULT_GET_CLASS
+WEBKIT_IS_HIT_TEST_RESULT
+WEBKIT_IS_HIT_TEST_RESULT_CLASS
+WEBKIT_TYPE_HIT_TEST_RESULT
+<SUBSECTION Private>
+WebKitHitTestResult
+WebKitHitTestResultClass
+WebKitHitTestResultContext
+WebKitHitTestResultPrivate
+webkit_hit_test_result_get_type
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebdatasource</FILE>
+<TITLE>WebKitWebDataSource</TITLE>
+WebKitWebDataSource
+webkit_web_data_source_get_data
+webkit_web_data_source_get_encoding
+webkit_web_data_source_get_initial_request
+webkit_web_data_source_get_main_resource
+webkit_web_data_source_get_request
+webkit_web_data_source_get_subresources
+webkit_web_data_source_get_unreachable_uri
+webkit_web_data_source_get_web_frame
+webkit_web_data_source_is_loading
+webkit_web_data_source_new
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_DATA_SOURCE
+WEBKIT_IS_WEB_DATA_SOURCE_CLASS
+WEBKIT_TYPE_WEB_DATA_SOURCE
+WEBKIT_WEB_DATA_SOURCE
+WEBKIT_WEB_DATA_SOURCE_CLASS
+WEBKIT_WEB_DATA_SOURCE_GET_CLASS
+<SUBSECTION Private>
+WebKitWebDataSource
+WebKitWebDataSourceClass
+WebKitWebDataSourcePrivate
+webkit_web_data_source_new_with_request
+webkit_web_data_source_get_type
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebdatabase</FILE>
+<TITLE>WebKitWebDatabase</TITLE>
+WebKitWebDatabase
+webkit_web_database_get_display_name
+webkit_web_database_get_expected_size
+webkit_web_database_get_filename
+webkit_web_database_get_name
+webkit_web_database_get_security_origin
+webkit_web_database_get_size
+webkit_web_database_remove
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_DATABASE
+WEBKIT_IS_WEB_DATABASE_CLASS
+WEBKIT_TYPE_WEB_DATABASE
+WEBKIT_WEB_DATABASE
+WEBKIT_WEB_DATABASE_CLASS
+WEBKIT_WEB_DATABASE_GET_CLASS
+<SUBSECTION Private>
+WebKitWebDatabase
+WebKitWebDatabaseClass
+WebKitWebDatabasePrivate
+webkit_web_database_get_type
+</SECTION>
+
+<SECTION>
+<FILE>webkitsoupauthdialog</FILE>
+<TITLE>WebKitSoupAuthDialog</TITLE>
+WebKitSoupAuthDialog
+<SUBSECTION Standard>
+WEBKIT_IS_SOUP_AUTH_DIALOG
+WEBKIT_IS_SOUP_AUTH_DIALOG_CLASS
+WEBKIT_SOUP_AUTH_DIALOG
+WEBKIT_SOUP_AUTH_DIALOG_CLASS
+WEBKIT_SOUP_AUTH_DIALOG_GET_CLASS
+WEBKIT_TYPE_SOUP_AUTH_DIALOG
+<SUBSECTION Private>
+webkit_soup_auth_dialog_get_type
+WebKitSoupAuthDialog
+WebKitSoupAuthDialogClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebinspector</FILE>
+<TITLE>WebKitWebInspector</TITLE>
+WebKitWebInspector
+webkit_web_inspector_get_inspected_uri
+webkit_web_inspector_get_web_view
+webkit_web_inspector_inspect_coordinates
+webkit_web_inspector_show
+webkit_web_inspector_close
+<SUBSECTION Standard>
+WEBKIT_WEB_INSPECTOR
+WEBKIT_IS_WEB_INSPECTOR
+WEBKIT_TYPE_WEB_INSPECTOR
+WEBKIT_WEB_INSPECTOR_CLASS
+WEBKIT_IS_WEB_INSPECTOR_CLASS
+WEBKIT_WEB_INSPECTOR_GET_CLASS
+<SUBSECTION Private>
+webkit_web_inspector_get_type
+WebKitWebInspectorPrivate
+WebKitWebInspector
+WebKitWebInspectorClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebnavigationaction</FILE>
+<TITLE>WebKitWebNavigationAction</TITLE>
+WebKitWebNavigationAction
+WebKitWebNavigationReason
+webkit_web_navigation_action_get_button
+webkit_web_navigation_action_get_modifier_state
+webkit_web_navigation_action_get_original_uri
+webkit_web_navigation_action_get_reason
+webkit_web_navigation_action_get_target_frame
+webkit_web_navigation_action_get_type
+webkit_web_navigation_action_set_original_uri
+webkit_web_navigation_action_set_reason
+webkit_web_navigation_reason_get_type
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_NAVIGATION_ACTION
+WEBKIT_IS_WEB_NAVIGATION_ACTION_CLASS
+WEBKIT_TYPE_WEB_NAVIGATION_ACTION
+WEBKIT_TYPE_WEB_NAVIGATION_REASON
+WEBKIT_WEB_NAVIGATION_ACTION
+WEBKIT_WEB_NAVIGATION_ACTION_CLASS
+WEBKIT_WEB_NAVIGATION_ACTION_GET_CLASS
+<SUBSECTION Private>
+WebKitWebNavigationAction
+WebKitWebNavigationActionClass
+WebKitWebNavigationActionPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebpolicydecision</FILE>
+<TITLE>WebKitWebPolicyDecision</TITLE>
+WebKitWebPolicyDecision
+webkit_web_policy_decision_download
+webkit_web_policy_decision_get_type
+webkit_web_policy_decision_ignore
+webkit_web_policy_decision_use
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_POLICY_DECISION
+WEBKIT_IS_WEB_POLICY_DECISION_CLASS
+WEBKIT_TYPE_WEB_POLICY_DECISION
+WEBKIT_WEB_POLICY_DECISION
+WEBKIT_WEB_POLICY_DECISION_CLASS
+WEBKIT_WEB_POLICY_DECISION_GET_CLASS
+<SUBSECTION Private>
+WebKitWebPolicyDecision
+WebKitWebPolicyDecisionClass
+WebKitWebPolicyDecisionPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkitgeolocationpolicydecision</FILE>
+<TITLE>WebKitGeolocationPolicyDecision</TITLE>
+WebKitGeolocationPolicyDecision
+webkit_geolocation_policy_allow
+webkit_geolocation_policy_deny
+webkit_geolocation_policy_decision_get_type
+<SUBSECTION Standard>
+WEBKIT_IS_GEOLOCATION_POLICY_DECISION
+WEBKIT_IS_GEOLOCATION_POLICY_DECISION_CLASS
+WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION
+WEBKIT_GEOLOCATION_POLICY_DECISION
+WEBKIT_GEOLOCATION_POLICY_DECISION_CLASS
+WEBKIT_GEOLOCATION_POLICY_DECISION_GET_CLASS
+<SUBSECTION Private>
+WebKitGeolocationPolicyDecision
+WebKitGeolocationPolicyDecisionClass
+WebKitGeolocationPolicyDecisionPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkitnetworkrequest</FILE>
+<TITLE>WebKitNetworkRequest</TITLE>
+WebKitNetworkRequest
+webkit_network_request_new
+webkit_network_request_get_uri
+webkit_network_request_get_message
+webkit_network_request_set_uri
+<SUBSECTION Standard>
+WEBKIT_NETWORK_REQUEST
+WEBKIT_IS_NETWORK_REQUEST
+WEBKIT_TYPE_NETWORK_REQUEST
+WEBKIT_NETWORK_REQUEST_CLASS
+WEBKIT_IS_NETWORK_REQUEST_CLASS
+WEBKIT_NETWORK_REQUEST_GET_CLASS
+<SUBSECTION Private>
+webkit_network_request_get_type
+WebKitNetworkRequestPrivate
+WebKitNetworkRequest
+WebKitNetworkRequestClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitnetworkresponse</FILE>
+<TITLE>WebKitNetworkResponse</TITLE>
+WebKitNetworkResponse
+webkit_network_response_get_uri
+webkit_network_response_get_message
+webkit_network_response_set_uri
+<SUBSECTION Standard>
+WEBKIT_NETWORK_RESPONSE
+WEBKIT_IS_NETWORK_RESPONSE
+WEBKIT_TYPE_NETWORK_RESPONSE
+WEBKIT_NETWORK_RESPONSE_CLASS
+WEBKIT_IS_NETWORK_RESPONSE_CLASS
+WEBKIT_NETWORK_RESPONSE_GET_CLASS
+<SUBSECTION Private>
+webkit_network_response_get_type
+webkit_network_response_new
+WebKitNetworkResponsePrivate
+WebKitNetworkResponse
+WebKitNetworkResponseClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebview</FILE>
+WebKitNavigationResponse
+WebKitWebViewTargetInfo
+WebKitWebViewViewMode
+<TITLE>WebKitWebView</TITLE>
+WebKitWebView
+webkit_web_view_can_copy_clipboard
+webkit_web_view_can_cut_clipboard
+webkit_web_view_can_go_back
+webkit_web_view_can_go_back_or_forward
+webkit_web_view_can_go_forward
+webkit_web_view_can_paste_clipboard
+webkit_web_view_can_redo
+webkit_web_view_can_show_mime_type
+webkit_web_view_can_undo
+webkit_web_view_copy_clipboard
+webkit_web_view_cut_clipboard
+webkit_web_view_delete_selection
+webkit_web_view_execute_script
+webkit_web_view_get_back_forward_list
+webkit_web_view_get_copy_target_list
+webkit_web_view_get_custom_encoding
+webkit_web_view_get_dom_document
+webkit_web_view_get_editable
+webkit_web_view_get_encoding
+webkit_web_view_get_focused_frame
+webkit_web_view_get_full_content_zoom
+webkit_web_view_get_hit_test_result
+webkit_web_view_get_icon_uri
+webkit_web_view_get_inspector
+webkit_web_view_get_load_status
+webkit_web_view_get_main_frame
+webkit_web_view_get_paste_target_list
+webkit_web_view_get_progress
+webkit_web_view_get_settings
+webkit_web_view_get_title
+webkit_web_view_get_transparent
+webkit_web_view_get_uri
+webkit_web_view_get_view_mode
+webkit_web_view_get_view_source_mode
+webkit_web_view_get_viewport_attributes
+webkit_web_view_get_zoom_level
+webkit_web_view_go_back
+webkit_web_view_go_back_or_forward
+webkit_web_view_go_forward
+webkit_web_view_go_to_back_forward_item
+webkit_web_view_has_selection
+webkit_web_view_load_html_string
+webkit_web_view_load_request
+webkit_web_view_load_string
+webkit_web_view_load_uri
+webkit_web_view_mark_text_matches
+webkit_web_view_move_cursor
+webkit_web_view_new
+webkit_web_view_open
+webkit_web_view_paste_clipboard
+webkit_web_view_redo
+webkit_web_view_reload
+webkit_web_view_reload_bypass_cache
+webkit_web_view_search_text
+webkit_web_view_select_all
+webkit_web_view_set_custom_encoding
+webkit_web_view_set_editable
+webkit_web_view_set_full_content_zoom
+webkit_web_view_set_highlight_text_matches
+webkit_web_view_set_maintains_back_forward_list
+webkit_web_view_set_settings
+webkit_web_view_set_transparent
+webkit_web_view_set_view_mode
+webkit_web_view_set_view_source_mode
+webkit_web_view_set_zoom_level
+webkit_web_view_stop_loading
+webkit_web_view_target_info_get_type
+webkit_web_view_undo
+webkit_web_view_unmark_text_matches
+webkit_web_view_zoom_in
+webkit_web_view_zoom_out
+webkit_web_view_get_window_features
+<SUBSECTION Standard>
+WEBKIT_WEB_VIEW
+WEBKIT_IS_WEB_VIEW
+WEBKIT_TYPE_WEB_VIEW
+WEBKIT_WEB_VIEW_CLASS
+WEBKIT_IS_WEB_VIEW_CLASS
+WEBKIT_WEB_VIEW_GET_CLASS
+<SUBSECTION Private>
+webkit_web_view_set_window_features
+webkit_web_view_get_type
+WebKitWebViewPrivate
+WebKitWebView
+WebKitWebViewClass
+WEBKIT_WEB_VIEW_GET_PRIVATE
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebwindowfeatures</FILE>
+<TITLE>WebKitWebWindowFeatures</TITLE>
+WebKitWebWindowFeatures
+webkit_web_window_features_equal
+webkit_web_window_features_new
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_WINDOW_FEATURES
+WEBKIT_IS_WEB_WINDOW_FEATURES_CLASS
+WEBKIT_TYPE_WEB_WINDOW_FEATURES
+WEBKIT_WEB_WINDOW_FEATURES
+WEBKIT_WEB_WINDOW_FEATURES_CLASS
+WEBKIT_WEB_WINDOW_FEATURES_GET_CLASS
+<SUBSECTION Private>
+webkit_web_window_features_get_type
+WebKitWebWindowFeatures
+WebKitWebWindowFeaturesClass
+WebKitWebWindowFeaturesPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkit</FILE>
+<TITLE>Global functions</TITLE>
+webkit_init
+webkit_get_default_session
+webkit_get_default_web_database_quota
+webkit_get_web_database_directory_path
+webkit_get_web_plugin_database
+webkit_remove_all_web_databases
+webkit_set_default_web_database_quota
+webkit_set_web_database_directory_path
+<SUBSECTION CacheModel>
+WebKitCacheModel
+webkit_get_cache_model
+webkit_set_cache_model
+</SUBSECTION>
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebresource</FILE>
+<TITLE>WebKitWebResource</TITLE>
+WebKitWebResource
+webkit_web_resource_get_data
+webkit_web_resource_get_encoding
+webkit_web_resource_get_frame_name
+webkit_web_resource_get_mime_type
+webkit_web_resource_get_type
+webkit_web_resource_get_uri
+webkit_web_resource_new
+<SUBSECTION Standard>
+WEBKIT_WEB_RESOURCE
+WEBKIT_IS_WEB_RESOURCE
+WEBKIT_TYPE_WEB_RESOURCE
+WEBKIT_WEB_RESOURCE_CLASS
+WEBKIT_IS_WEB_RESOURCE_CLASS
+WEBKIT_WEB_RESOURCE_GET_CLASS
+<SUBSECTION Private>
+webkit_web_resource_get_type
+webkit_web_resource_new
+WebKitWebResourcePrivate
+WebKitWebResource
+WebKitWebResourceClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitviewportattributes</FILE>
+<TITLE>WebKitViewportAttributes</TITLE>
+webkit_viewport_attributes_recompute
+<SUBSECTION Standard>
+WEBKIT_IS_VIEWPORT_ATTRIBUTES
+WEBKIT_IS_VIEWPORT_ATTRIBUTES_CLASS
+WEBKIT_TYPE_VIEWPORT_ATTRIBUTES
+WEBKIT_VIEWPORT_ATTRIBUTES
+WEBKIT_VIEWPORT_ATTRIBUTES_CLASS
+WEBKIT_VIEWPORT_ATTRIBUTES_GET_CLASS
+<SUBSECTION Private>
+webkit_viewport_attributes_get_type
+WebKitViewportAttributes
+WebKitViewportAttributesClass
+WebKitViewportAttributesPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebplugin</FILE>
+<TITLE>WebKitWebPlugin</TITLE>
+WebKitWebPluginMIMEType
+webkit_web_plugin_get_description
+webkit_web_plugin_get_enabled
+webkit_web_plugin_get_mimetypes
+webkit_web_plugin_get_name
+webkit_web_plugin_set_enabled
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_PLUGIN
+WEBKIT_IS_WEB_PLUGIN_CLASS
+WEBKIT_TYPE_WEB_PLUGIN
+WEBKIT_WEB_PLUGIN
+WEBKIT_WEB_PLUGIN_CLASS
+WEBKIT_WEB_PLUGIN_GET_CLASS
+<SUBSECTION Private>
+webkit_web_plugin_get_type
+WebKitWebPlugin
+WebKitWebPluginClass
+WebKitWebPluginPrivate
+</SECTION>
+
+<SECTION>
+<FILE>webkitwebplugindatabase</FILE>
+<TITLE>WebKitWebPluginDatabase</TITLE>
+webkit_web_plugin_database_get_plugin_for_mimetype
+webkit_web_plugin_database_get_plugins
+webkit_web_plugin_database_new
+webkit_web_plugin_database_plugins_list_free
+webkit_web_plugin_database_refresh
+<SUBSECTION Standard>
+WEBKIT_IS_WEB_PLUGIN_DATABASE
+WEBKIT_IS_WEB_PLUGIN_DATABASE_CLASS
+WEBKIT_TYPE_WEB_PLUGIN_DATABASE
+WEBKIT_WEB_PLUGIN_DATABASE
+WEBKIT_WEB_PLUGIN_DATABASE_CLASS
+WEBKIT_WEB_PLUGIN_DATABASE_GET_CLASS
+<SUBSECTION Private>
+WebKitWebPluginDatabase
+WebKitWebPluginDatabaseClass
+WebKitWebPluginDatabasePrivate
+webkit_web_plugin_database_get_type
+</SECTION>
+
+<SECTION>
+<FILE>soup-cache</FILE>
+<TITLE>WebKitSoupCache</TITLE>
+webkit_soup_cache_new
+webkit_soup_cache_flush
+webkit_soup_cache_clear
+webkit_soup_cache_dump
+webkit_soup_cache_load
+webkit_soup_cache_set_max_size
+webkit_soup_cache_get_max_size
+<SUBSECTION Standard>
+WEBKIT_IS_SOUP_CACHE
+WEBKIT_IS_SOUP_CACHE_CLASS
+WEBKIT_TYPE_SOUP_CACHE
+WEBKIT_SOUP_CACHE
+WEBKIT_SOUP_CACHE_CLASS
+WEBKIT_SOUP_CACHE_GET_CLASS
+<SUBSECTION Private>
+webkit_soup_cache_get_type
+WebKitSoupCachePrivate
+WebKitSoupCache
+WebKitSoupCacheClass
+</SECTION>
+
+<SECTION>
+<FILE>webkitprivate</FILE>
+getViewFromFrame
+kit
+WEBKIT_PARAM_READABLE
+WEBKIT_PARAM_READWRITE
+webkit_web_frame_init_with_web_view
+webkit_web_history_item_new_with_core_item
+webkit_web_inspector_set_inspector_client
+webkit_web_inspector_set_web_view
+webkit_web_inspector_set_inspected_uri
+</SECTION>
+
+<SECTION>
+<FILE>webkiterror</FILE>
+WEBKIT_NETWORK_ERROR
+WEBKIT_PLUGIN_ERROR
+WEBKIT_POLICY_ERROR
+WebKitNetworkError
+WebKitPluginError
+WebKitPolicyError
+webkit_network_error_quark
+webkit_plugin_error_quark
+webkit_policy_error_quark
+</SECTION>
+
+<SECTION>
+<FILE>webkitdefines</FILE>
+WEBKIT_API
+webkit_navigation_response_get_type
+WEBKIT_OBSOLETE_API
+WEBKIT_CHECK_VERSION
+WEBKIT_MAJOR_VERSION
+WEBKIT_MICRO_VERSION
+WEBKIT_MINOR_VERSION
+WEBKIT_TYPE_NAVIGATION_RESPONSE
+WEBKIT_TYPE_WEB_VIEW_TARGET_INFO
+webkit_check_version
+webkit_major_version
+webkit_micro_version
+webkit_minor_version
+</SECTION>
diff --git a/Source/WebKit/gtk/docs/webkitgtk.types b/Source/WebKit/gtk/docs/webkitgtk.types
new file mode 100644
index 0000000..23f3382
--- /dev/null
+++ b/Source/WebKit/gtk/docs/webkitgtk.types
@@ -0,0 +1,13 @@
+#include <webkit/webkit.h>
+
+webkit_download_get_type
+webkit_navigation_response_get_type
+webkit_network_request_get_type
+webkit_web_back_forward_list_get_type
+webkit_web_history_item_get_type
+webkit_web_inspector_get_type
+webkit_web_settings_get_type
+webkit_web_view_get_type
+webkit_web_view_target_info_get_type
+webkit_web_window_features_get_type
+
diff --git a/Source/WebKit/gtk/gdom/ConvertToGCharPrivate.h b/Source/WebKit/gtk/gdom/ConvertToGCharPrivate.h
new file mode 100644
index 0000000..afbed49
--- /dev/null
+++ b/Source/WebKit/gtk/gdom/ConvertToGCharPrivate.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2008, 2009 Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef ConvertToGCharPrivate_h
+#define ConvertToGCharPrivate_h
+
+#include "KURL.h"
+#include "PlatformString.h"
+#include <wtf/text/CString.h>
+#include <wtf/text/AtomicString.h>
+
+inline gchar* copyAsGchar(WTF::String const& s)
+{
+ return g_strdup(s.utf8().data());
+}
+
+inline gchar* copyAsGchar(WebCore::KURL const& s)
+{
+ return copyAsGchar(s.string());
+}
+
+inline gchar* copyAsGchar(const JSC::UString& s)
+{
+ return g_strdup(s.UTF8String().c_str());
+}
+
+inline gchar* copyAsGchar(WTF::AtomicString const& s)
+{
+ return g_strdup(s.string().utf8().data());
+}
+
+#endif /* ConvertToGCharPrivate_h*/
diff --git a/Source/WebKit/gtk/org.webkitgtk.gschema.xml.in b/Source/WebKit/gtk/org.webkitgtk.gschema.xml.in
new file mode 100644
index 0000000..17063f4
--- /dev/null
+++ b/Source/WebKit/gtk/org.webkitgtk.gschema.xml.in
@@ -0,0 +1,32 @@
+<schemalist>
+ <schema id="org.webkitgtk-@WEBKITGTK_API_VERSION@" path="/system/webkitgtk/">
+ <child schema="org.webkitgtk-@WEBKITGTK_API_VERSION@.inspector" name="inspector"/>
+ </schema>
+ <schema id="org.webkitgtk-@WEBKITGTK_API_VERSION@.inspector" path="/system/webkitgtk/inspector/">
+ <key name="resource-tracking-enabled" type="b">
+ <default>false</default>
+ <summary>Resource Tracking Enabled</summary>
+ <description>Whether the Resource Tracking panel is always enabled.</description>
+ </key>
+ <key name="xhr-monitor-enabled" type="b">
+ <default>false</default>
+ <summary>XHR Monitor Enabled</summary>
+ <description>Whether the XHR monitor is always enabled.</description>
+ </key>
+ <key name="debugger-enabled" type="b">
+ <default>false</default>
+ <summary>Debugger Enabled</summary>
+ <description>Whether the debugger is always enabled.</description>
+ </key>
+ <key name="profiler-enabled" type="b">
+ <default>false</default>
+ <summary>Profiler Enabled</summary>
+ <description>Whether the profiler is always enabled.</description>
+ </key>
+ <key name="frontend-settings" type="s">
+ <default>''</default>
+ <summary>Misc Inspector Frontend Settings</summary>
+ <description>Miscelaneous Settings managed by the Inspector Frontend</description>
+ </key>
+ </schema>
+</schemalist>
diff --git a/Source/WebKit/gtk/po/ChangeLog b/Source/WebKit/gtk/po/ChangeLog
new file mode 100644
index 0000000..d65468e
--- /dev/null
+++ b/Source/WebKit/gtk/po/ChangeLog
@@ -0,0 +1,494 @@
+2011-01-16 Adam Barth <abarth@webkit.org>
+
+ Rubber-stamped by Eric Seidel.
+
+ Move WebKit into Source
+ https://bugs.webkit.org/show_bug.cgi?id=52530
+
+ * GNUmakefile.am:
+
+2010-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Fix name of the Korean translation file.
+
+ * kr.po -> ko.po: renamed to correct name.
+
+2010-12-07 Chyangwoo Ryu <cwryu@debian.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Korean message translation
+ https://bugs.webkit.org/show_bug.cgi?id=42465
+
+ * kr.po: Added.
+
+2010-09-29 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Martin Robinson.
+
+ Avoid touching the po files automatically during the build
+ process. The maintainers still have the option of forcing an
+ update with make update-po.
+
+ * GNUmakefile.am:
+
+2010-09-29 Miloš Popović <gpopac@gmail.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ Serbian translations update.
+
+ * sr.po:
+ * sr@latin.po:
+
+2010-09-29 Reinout van Schouwen <reinouts@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Updated Dutch translation
+ https://bugs.webkit.org/show_bug.cgi?id=46050
+
+ * nl.po:
+
+2010-08-31 Sheriff Bot <webkit.review.bot@gmail.com>
+
+ Unreviewed, rolling out r66519.
+ http://trac.webkit.org/changeset/66519
+ https://bugs.webkit.org/show_bug.cgi?id=44973
+
+ Broke GTK+. (Requested by kov on #webkit).
+
+ * cs.po:
+ * de.po:
+ * en_GB.po:
+ * es.po:
+ * et.po:
+ * gl.po:
+ * gu.po:
+ * he.po:
+ * it.po:
+ * lt.po:
+ * lv.po:
+ * nb.po:
+ * nl.po:
+ * pa.po:
+ * pt.po:
+ * pt_BR.po:
+ * ru.po:
+ * sl.po:
+ * sr.po:
+ * sr@latin.po:
+ * sv.po:
+ * uk.po:
+ * vi.po:
+ * zh_CN.po:
+
+2010-08-31 Gustavo Noronha Silva <gns@gnome.org>
+
+ Refreshed all po files with the latest potfile.
+
+ * cs.po:
+ * de.po:
+ * en_GB.po:
+ * es.po:
+ * et.po:
+ * gl.po:
+ * gu.po:
+ * he.po:
+ * it.po:
+ * lt.po:
+ * lv.po:
+ * nb.po:
+ * nl.po:
+ * pa.po:
+ * pt.po:
+ * pt_BR.po:
+ * ru.po:
+ * sl.po:
+ * sr.po:
+ * sr@latin.po:
+ * sv.po:
+ * uk.po:
+ * vi.po:
+ * zh_CN.po:
+
+2010-08-31 Jorge González <aloriel@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ [GTK] Spanish translation for trunk
+ https://bugs.webkit.org/show_bug.cgi?id=44395
+
+ * es.po: Updated.
+
+2010-08-31 Kjartan Maraas <kmaraas@gnome.org>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ WebKitGTK+ translation needed
+ https://bugzilla.gnome.org/show_bug.cgi?id=610099
+
+ Initial Norwegian (bokmal) translation.
+
+ * nb.po: Added.
+
+2010-08-19 Philippe Normand <pnormand@igalia.com>
+
+ Reviewed by Gustavo Noronha Silva.
+
+ [GStreamer] GTK XOverlay support in GStreamerGWorld
+ https://bugs.webkit.org/show_bug.cgi?id=39474
+
+ * POTFILES: Added new file that contains strings to extract.
+
+2010-08-03 Jorge González <aloriel@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Spanish translation update.
+
+ * es.po: Updated.
+
+2010-07-13 Alejandro G. Castro <alex@igalia.com>
+
+ Reviewed by Gustavo Noronha.
+
+ This file is generated, we do not need to upload it to the
+ repository.
+
+ * webkit.pot: Removed.
+
+2010-06-25 Fran Diéguez <fran.dieguez@mabishu.com>
+
+ Reviewed by Darin Adler.
+
+ Add Galician translation to webkitgtk
+ https://bugs.webkit.org/show_bug.cgi?id=39547
+
+ * gl.po: Added.
+
+2010-04-05 Lucas Lommer <llommer@svn.gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Czech translation for WebKitGtk
+ https://bugs.webkit.org/show_bug.cgi?id=36879
+
+ * cs.po: Added.
+
+2010-04-05 Christian Kirbach <Christian.Kirbach@googlemail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Updated German translation
+ https://bugs.webkit.org/show_bug.cgi?id=36453
+
+ * de.po:
+
+2010-04-05 Luca Ferretti <elle.uca@libero.it>
+
+ Reviewed by Gustavo Noronha.
+
+ Italian translation for 1.1.90
+ https://bugs.webkit.org/show_bug.cgi?id=36323
+
+ * it.po:
+
+2010-03-25 Reinout van Schouwen <reinouts@gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Updated Dutch translation
+ https://bugs.webkit.org/show_bug.cgi?id=36432
+
+ * nl.po:
+
+2010-03-24 Yuri Chornoivan <yurchor@ukr.net>
+
+ Reviewed by Gustavo Noronha.
+
+ Ukrainian translation.
+
+ * uk.po: Added.
+
+2010-03-16 Matej Urbančič <mateju@svn.gnome.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Slovenian translation.
+
+ * sl.po: Added.
+
+2010-03-16 António Lima <amrlima@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Translation for pt (Portuguese)
+ https://bugs.webkit.org/show_bug.cgi?id=36148
+
+ * pt.po: Added.
+
+2010-03-10 Priit Laes <plaes@plaes.org>
+
+ Reviewed by Gustavo Noronha.
+
+ Estonian translation.
+
+ * et.po: Added.
+
+2010-03-09 Peteris Krisjanis <pecisk@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Latvian translation.
+
+ * lv.po: Added.
+
+2010-03-09 Duy Nguyen <pclouds@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Vietnamese translation update.
+
+ * vi.po:
+
+2010-03-09 Rimas Kudelis <rq@akl.lt>
+
+ Reviewed by Gustavo Noronha.
+
+ Lithuanian translation update.
+
+ * lt.po:
+
+2010-02-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Updated to accomodate the change done to the localized string.
+
+ * de.po:
+ * en_GB.po:
+ * es.po:
+ * gu.po:
+ * he.po:
+ * it.po:
+ * lt.po:
+ * nl.po:
+ * pa.po:
+ * pt_BR.po:
+ * ru.po:
+ * sr.po:
+ * sr@latin.po:
+ * sv.po:
+ * vi.po:
+ * webkit.pot:
+ * zh_CN.po:
+
+2010-02-23 Mario Blättermann <mariobl@freenet.de>
+
+ Reviewed by Gustavo Noronha.
+
+ German translation update.
+
+ * de.po:
+
+2010-02-23 Daniel Nylander <po@danielnylander.se>
+
+ Reviewed by Gustavo Noronha.
+
+ Swedish translation update.
+
+ * sv.po:
+
+2010-02-23 Ankit Patel <ankit@redhat.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Gujarati translation.
+
+ * gu.po: Added.
+
+2010-02-18 A S Alam <amanpreet.alam@gmail.com>
+
+ Punjabi translation.
+
+ * pa.po: Added.
+
+2010-02-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Refreshed all localization-related files, so that they are
+ up-to-date with the code.
+
+ * de.po: Updated.
+ * en_GB.po: Updated.
+ * es.po: Updated.
+ * it.po: Updated.
+ * lt.po: Updated.
+ * nl.po: Updated.
+ * pt_BR.po: Updated.
+ * ru.po: Updated.
+ * sr.po: Updated.
+ * sr@latin.po: Updated.
+ * sv.po: Updated.
+ * vi.po: Updated.
+ * webkit.pot: Updated.
+ * zh_CN.po: Updated.
+
+2010-02-16 Gil Osher <gilosher@gmail.com>
+
+ Reviewed by Gustavo Noronha.
+
+ Localization of WebKitGTK+ in Hebrew.
+
+ * he.po: Added.
+
+2009-10-19 Daniel Macks <dmacks@netspace.org>
+
+ Reviewed by Adam Barth.
+
+ Inconsistent handling of gettext domain can cause compile failure
+ https://bugs.webkit.org/show_bug.cgi?id=30292
+
+ * GNUmakefile.am: Use DOMAIN variable instead of hard-coded value
+
+2009-10-15 Jan Michael Alonzo <jmalonzo@webkit.org>
+
+ Reviewed by Xan Lopez.
+
+ [GTK] marshal stamp files are not cleaned after a distclean
+ https://bugs.webkit.org/show_bug.cgi?id=30156
+
+ Add stamp-po to CLEANFILES.
+
+ * GNUmakefile.am:
+
+2009-10-09 Rimas Kudelis <rq@akl.lt>
+
+ Rubber-stamped by Gustavo Noronha
+
+ https://bugs.webkit.org/show_bug.cgi?id=30054
+ Localization of WebKit GTK into Lithuanian
+
+ * lt.po: Added.
+
+2009-07-18 Jorge González <aloriel@gmail.com>
+
+ Rubber-stamped by Jan Alonzo.
+
+ es translation
+ https://bugs.webkit.org/show_bug.cgi?id=26319
+
+ * es.po: Added.
+
+2009-07-15 Aron Xu <aronmalache@163.com>
+
+ Rubber-stamped by Jan Alonzo.
+
+ Simplified Chinese translation
+ https://bugs.webkit.org/show_bug.cgi?id=27252
+
+ * zh_CN.po: Added.
+
+2009-07-15 Bruce Cowan <bugs@bcowan.fastmail.co.uk>
+
+ Rubber-stamped by Jan Alonzo.
+
+ [Gtk] en_GB translation
+ https://bugs.webkit.org/show_bug.cgi?id=27244
+
+ * en_GB.po: Added.
+
+2009-07-13 Reinout van Schouwen <reinouts@gnome.org>
+
+ <https://bugs.webkit.org/show_bug.cgi?id=26980> [Gtk] Updated Dutch translation
+
+ Rubber-stamped by Jan Alonzo.
+
+ * nl.po: Added.
+
+2009-06-28 Miloš Popović <gpopac@gmail.com>
+
+ Rubber-stamped by Jan Alonzo.
+
+ New Serbian translation.
+
+ * sr.po: Added.
+ * sr@latin.po: Added.
+
+2009-06-25 Duy Nguyen <pclouds@gmail.com>
+
+ Rubber-stamped by Jan Alonzo.
+
+ Gtk port Vietnamese translation
+ https://bugs.webkit.org/show_bug.cgi?id=26739
+
+ * vi.po: Added.
+
+2009-05-13 Luca Ferretti <elle.uca@libero.it>
+
+ Rubber-stamped by Xan Lopez.
+
+ New Italian translation.
+
+ * it.po: Added.
+
+2009-05-11 Anton Shestakov <engored@ya.ru>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ New Russian translation.
+
+ * ru.po: Added.
+
+2009-05-06 Daniel Nylander <po@danielnylander.se>
+
+ Rubber-stamped by Gustavo Noronha.
+
+ Swedish translation for WebKitGTK+.
+
+ * sv.po: Added.
+
+2009-04-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Xan Lopez.
+
+ * pt_BR.po: translation update.
+
+2009-04-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Unreviewed build fix to generate all .mo files at the correct
+ location.
+
+ * GNUmakefile.am:
+
+2009-04-10 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Reviewed by Holger Freyther.
+
+ https://bugs.webkit.org/show_bug.cgi?id=25124
+ [GTK] many strings still missing translation calls
+
+ Extracting translation for the files that got translation calls.
+
+ * POTFILES:
+ * de.po:
+ * pt_BR.po:
+ * webkit.pot:
+
+2009-04-06 Christian Dywan <christian@twotoasts.de>
+
+ Rubber-stamped by Oliver Hunt.
+
+ * de.po: Added German translation for WebKitGTK+.
+
+2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Sam Weinig.
+
+ * pt_BR.po: Added Brazilian Portuguese translation for WebKitGTK+.
+
+2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
+
+ Rubber-stamped by Sam Weinig.
+
+ * GNUmakefile.am, POTFILES, webkit.pot: Initial setup of the
+ localization infra-structure.
+
diff --git a/Source/WebKit/gtk/po/GNUmakefile.am b/Source/WebKit/gtk/po/GNUmakefile.am
new file mode 100644
index 0000000..91a10c4
--- /dev/null
+++ b/Source/WebKit/gtk/po/GNUmakefile.am
@@ -0,0 +1,213 @@
+# Gettext stuff; based on the contents of the Makefile.in.in file
+# distributed with GNU Gettext.
+#
+# The original copyright notice follows:
+#
+# Makefile for PO directory in any package using GNU gettext.
+# Copyright (C) 1995-1997, 2000-2007 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
+#
+# This file can be copied and used freely without restrictions. It can
+# be used in projects which are not available under the GNU General Public
+# License but which still want to provide support for the GNU gettext
+# functionality.
+# Please note that the actual code of GNU gettext is covered by the GNU
+# General Public License and is *not* in the public domain.
+#
+# Origin: gettext-0.17
+
+DOMAIN := $(GETTEXT_PACKAGE)
+
+MSGFMT := $(shell which msgfmt)
+
+XGETTEXT := $(shell which xgettext)
+
+MSGMERGE := $(shell which msgmerge)
+
+MSGMERGE_UPDATE := $(MSGMERGE) --update
+
+POFILES += $(shell ls $(srcdir)/Source/WebKit/gtk/po/*.po)
+
+MOFILES += $(shell echo $(POFILES) | tr ' ' '\n' | sed "s,^$(srcdir)/,,g" | sed 's/\.po/.mo/g')
+
+.po.mo:
+ test -d Source/WebKit/gtk/po/ || mkdir -p Source/WebKit/gtk/po/
+ @echo "$(MSGFMT) -c -o $@ $<"; \
+ $(MSGFMT) -c -o $@ $<
+
+# $(srcdir)/$(DOMAIN).pot is only created when needed. When xgettext finds no
+# internationalized messages, no $(srcdir)/$(DOMAIN).pot is created (because
+# we don't want to bother translators with empty POT files). We assume that
+# LINGUAS is empty in this case, i.e. $(POFILES) and $(MOFILES) are empty.
+# In this case, stamp-po is a nop (i.e. a phony target).
+
+# stamp-po is a timestamp denoting the last time at which the CATALOGS have
+# been loosely updated. Its purpose is that when a developer or translator
+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS,
+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent
+# invocations of "make" will do nothing. This timestamp would not be necessary
+# if updating the $(CATALOGS) would always touch them; however, the rule for
+# $(POFILES) has been designed to not touch files that don't need to be
+# changed.
+stamp-po: $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot $(MOFILES)
+ test ! -f $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot || \
+ test -z "$(MOFILES)" || $(MAKE) $(MOFILES)
+ @test ! -f $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot || { \
+ echo "touch stamp-po" && \
+ echo timestamp > stamp-poT && \
+ mv stamp-poT stamp-po; \
+ }
+
+# This target rebuilds $(DOMAIN).pot; it is an expensive operation.
+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed.
+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/Source/WebKit/gtk/po/POTFILES
+ package_gnu=''; \
+ if test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+ else \
+ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+ fi; \
+ case `$(XGETTEXT) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
+ '' | 0.[0-9] | 0.[0-9].* | 0.1[0-5] | 0.1[0-5].* | 0.16 | 0.16.[0-1]*) \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+ --files-from=$(srcdir)/Source/WebKit/gtk/po/POTFILES \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --msgid-bugs-address="$$msgid_bugs_address" \
+ --keyword=_ --keyword=N_ -o $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot \
+ ;; \
+ *) \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+ --files-from=$(srcdir)/Source/WebKit/gtk/po/POTFILES \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --package-name="$${package_gnu}@PACKAGE@" \
+ --package-version='@VERSION@' \
+ --msgid-bugs-address="$$msgid_bugs_address" \
+ --keyword=_ --keyword=N_ -o $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot \
+ ;; \
+ esac
+
+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at
+# every "make" invocation, only create it when it is missing.
+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update.
+$(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot:
+ $(MAKE) $(DOMAIN).pot-update
+
+# This target rebuilds a PO file if $(DOMAIN).pot has changed.
+# Note that a PO file is not touched if it doesn't need to be changed.
+update-po-files: $(srcdir)/Source/WebKit/gtk/po/$(DOMAIN).pot
+ @for pofile in $(POFILES); do \
+ lang=`echo $$pofile | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+ if test -f "$(srcdir)/Source/WebKit/gtk/po/$${lang}.po"; then \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir)/Source/WebKit/gtk/po && "; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+ pushd $(srcdir)/Source/WebKit/gtk/po && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+ popd; \
+ else \
+ $(MAKE) $${lang}.po-create; \
+ fi; \
+ done
+
+update-po: GNUmakefile
+ $(MAKE) $(DOMAIN).pot-update
+ $(MAKE) update-po-files
+ $(MAKE) $(MOFILES)
+
+.nop.po-create:
+ @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \
+ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \
+ exit 1
+
+# clean rules
+CLEANFILES += \
+ $(top_builddir)/stamp-po
+
+MAINTAINERCLEANFILES += \
+ $(MOFILES)
+
+DISTCLEANFILES += \
+ $(MOFILES)
+
+po-install-data-local: all
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @catalogs='$(MOFILES)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.mo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ if test -r Source/WebKit/gtk/po/$$cat; then realcat=Source/WebKit/gtk/po/$$cat; else realcat=$(srcdir)/$$cat; fi; \
+ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
+ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \
+ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \
+ fi; \
+ done; \
+ done
+
+po-installdirs-data-local:
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @catalogs='$(MOFILES)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
+ dir=$(localedir)/$$lang/LC_MESSAGES; \
+ $(mkdir_p) $(DESTDIR)$$dir; \
+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
+ if test -n "$$lc"; then \
+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \
+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \
+ for file in *; do \
+ if test -f $$file; then \
+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \
+ fi; \
+ done); \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \
+ else \
+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \
+ :; \
+ else \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \
+ fi; \
+ fi; \
+ fi; \
+ done; \
+ done
+
+po-uninstall-local:
+ catalogs='$(MOFILES)'; \
+ for cat in $$catalogs; do \
+ cat=`basename $$cat`; \
+ lang=`echo $$cat | sed -e 's/\.mo$$//'`; \
+ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \
+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \
+ done; \
+ done
diff --git a/Source/WebKit/gtk/po/POTFILES b/Source/WebKit/gtk/po/POTFILES
new file mode 100644
index 0000000..ffd0015
--- /dev/null
+++ b/Source/WebKit/gtk/po/POTFILES
@@ -0,0 +1,13 @@
+# List of source files which contain translatable strings.
+WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
+WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp
+WebKit/gtk/WebCoreSupport/FullscreenVideoController.cpp
+WebKit/gtk/webkit/webkitdownload.cpp
+WebKit/gtk/webkit/webkitsoupauthdialog.c
+WebKit/gtk/webkit/webkitwebframe.cpp
+WebKit/gtk/webkit/webkitwebhistoryitem.cpp
+WebKit/gtk/webkit/webkitwebinspector.cpp
+WebKit/gtk/webkit/webkitwebnavigationaction.cpp
+WebKit/gtk/webkit/webkitwebsettings.cpp
+WebKit/gtk/webkit/webkitwebview.cpp
+WebCore/platform/gtk/LocalizedStringsGtk.cpp
diff --git a/Source/WebKit/gtk/po/README b/Source/WebKit/gtk/po/README
new file mode 100644
index 0000000..22dbcc0
--- /dev/null
+++ b/Source/WebKit/gtk/po/README
@@ -0,0 +1,11 @@
+=======================
+WebKitGTK+ Localization
+=======================
+
+WebKitGTK+'s build system is very unorthodox. This means that you will
+not get to run the usual make commands in the po directory.
+
+To refresh the .pot file, go to the root of the build directory, and
+run `make webkit.pot-update'. To update the .po files using the new
+.pot file run `make update-po'. This will also build the .mo files.
+
diff --git a/Source/WebKit/gtk/po/cs.po b/Source/WebKit/gtk/po/cs.po
new file mode 100644
index 0000000..228ba22
--- /dev/null
+++ b/Source/WebKit/gtk/po/cs.po
@@ -0,0 +1,1089 @@
+# Czech translation for webkit.
+# Copyright (C) 2010 webkit's COPYRIGHT HOLDER
+# This file is distributed under the same license as the webkit package.
+# Lucas Lommer <llommer@svn.gnome.org>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit HEAD\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-03-31 13:07+0100\n"
+"Last-Translator: Lucas Lommer <llommer@svn.gnome.org>\n"
+"Language-Team: Czech <gnome-cs-list@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Nahrát soubor"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Vstupní _metody"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM - značka z_leva doprava"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM - značka zp_rava doleva"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE - _zapouzdření zleva doprava"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE - z_apouzdření zprava doleva"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO - _přepisování zleva doprava"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO - př_episování zprava doleva"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF - zrušení směrovaného _formátování"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS - mezera _nulové šířky"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ - _spojovač nulové šířky"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ - nespojovač n_ulové šířky"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "Vloži_t řídící znak Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Síťový požadavek"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Síťový požadavek na adresu URI, která má být stažena"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Síťová odpověď"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "Síťová odpověď na adresu URI, která má být stažena"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "Cílová adresa URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "Cílová adresa URI, kam soubor uložit"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Navrhovaný název souboru"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Výchozí název souboru při uložení"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Průběh"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Údaj o aktuálním průběhu stahování"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Stav"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Údaj o aktuálním stavu stahování"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Aktuální velikost"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Objem již stažených dat"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Celková velikost"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Celková velikost souboru"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Stahování zrušeno uživatelem"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Požadované uživatelské jméno a heslo, které je vyžadováno stránkou %s"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Zpráva serveru:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Uživatelské jméno:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Heslo:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "Za_pamatovat si heslo"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Název"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Název rámu"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Nadpis"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Nadpis dokumentu rámu"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "Adresa URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Aktuální adresa URI obsahu zobrazeného v rámci"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Strategie pro vodorovný posuvník"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Údaj o aktuální strategii horizontálního posuvníku rámce."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Strategie pro svislý posuvník"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Údaj o aktuální strategii vertikálního posuvníku rámce."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Nadpis položky historie"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Alternativní nadpis"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Alternativní nadpis položky historie"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "Adresa URI položky historie"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Původní adresa URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Původní adresa URI položky historie"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Čas poslední návštěvy"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Čas, kdy byla položka historie naposledy navštívena"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Zobrazení WWW"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Zobrazení WWW, které vykresluje samotné Zkoumání WWW"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Zkoumaná adresa URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "Adresa URI, která je právě zkoumána"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Povolit profilování jazyka JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Profilovat spuštěné skripty jazyka JavaScript."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Povolit profilování časové osy"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Důvod"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Důvod, proč se objevila tato navigace"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Adresa URI, která byla požadována jako cíl navigace"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Tlačítko"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Tlačítko používané ke klepnutí"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Stav modifikátoru"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Bitová maska reprezentující stav modifikátorových kláves"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Cílový rám"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Cílový rám navigace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Výchozí kódování"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Výchozí kódování textu použité k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Rodina písma kurzíva"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Výchozí písmo z rodiny kurzíva použité k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Výchozí rodina písma"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Výchozí rodina písma použitého k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Rodina písma Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Výchozí rodina písma Fantasy použitého k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Rodina písma s pevnou šířkou"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "Výchozí rodina písma použitého k zobrazení textu s pevnou šířkou."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Rodina písem Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "Výchozí písmo z rodiny Sans Serif použité k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Rodina písma Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Výchozí písmo z rodiny Serif použité k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Výchozí velikost písma"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Výchozí velikost písma použitá k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Výchozí velikost písma s pevnou šířkou"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "Výchozí velikost písma použitá k zobrazení textu s pevnou šířkou."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Minimální velikost písma"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Minimální velikost písma použitá k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Minimální logická velikost písma"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Minimální logická velikost písma použítá k zobrazení textu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Vynutit 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Vynutit rozlišení 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Obrázky automaticky"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Automatický načíst obrázky."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Zmenšovat obrázky"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr ""
+"Automaticky zmenšovat samostatně zobrazené obrázky tak, aby se vešly na "
+"obrazovku."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Tisknout pozadí"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Zda mají být tisknuty obrázky na pozadí."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Povolit skripty"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Povolit vložené skriptovací jazyky."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Povolit zásuvné moduly"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Povolit vložené objekty zásuvných modulů."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Měnitelná velikost textového pole"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Jestli je možno měnit velikost textového pole."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "Cesta k předpisu vzhledu uživatele"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+"Adresa URI, kde se nachází předpis vzhledu, který bude aplikován na každou "
+"stránku."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Hodnota kroků změn velikosti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Hodnota změn velikosti jednotlivých kroků při zmenšování a zvětšování."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Povolit rozšíření pro vývojáře"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Povolit zvláštní rozšíření pomáhající vývojářům"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Povolit soukromé prohlížení"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Povolit režim soukromého prohlížení stránek"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Povolit kontrolu pravopisu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Povolit kontrolu pravopisu při psaní"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Jazyk, který použít ke kontrole pravopisu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Seznam jazyků použitých ke kontrole pravopisu, oddělený čárkami"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Povolit prohlížení s kurzorem"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "Jestli povolit zpřístupnění pomocí navigace klávesnicí"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Povolit databázi HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Jeslti povolit podporu pro databázi HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Povolit místní úložiště HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Jestli má být povolena podpora místního úložiště HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Povolit revizi XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Jestli povolit revizi XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Identifikace prohlížeče"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "Řetězec identifikace prohlížeče (User agent), který WebKitGtk použije"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript smí automaticky otevírat okna"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Jestli smí JavaScript automaticky otevírat okna"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Povolit ukládání stránek do vyrovnávací paměti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Povolit ukládání stránek do vyrovnávací paměti k použití při odpojení"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Chování při úpravách"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "Režim chování v režimu úprav"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Povolit univerzální přístup ze souboru s URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Povolit univerzální přístup ze souboru s adresami URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Povolit vkládání DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Jestli povolit vkládání DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Tabulátor cyklicky prochází prvky"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Jestli klávesa tabulátoru prochází cyklicky prvky stránky."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Povolit výchozí kontextovou nabídku"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Poboluje správu tvorby výchozí kontextové nabídky při klepnutí pravým "
+"tlačítkem"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+#, fuzzy
+msgid "Enable Site Specific Quirks"
+msgstr "Povolit řešení kompatibility"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Povolit řešení komapatibility specifických stránek"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Povolit vyrovnávací paměť stránky"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Jestli použít vyrovnávací paměť pro stránky"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Automatická změna velikosti okna"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "Automaticky změnit velikost okna, pokud o to stránka požádá"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Povolit applet jazyka Java"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Jestli má být povolena podpora jazyka JavaScript skrze značku <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Vrací název dokumentu @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Vrací aktuální adresu URI obsahu zobrazeného pomocí @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Seznam cílů kopírování"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"Seznam cílů, které zobrazení stránky podporuje pro operace kopírování pomocí "
+"schránky"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Seznam cílů vkládání"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"Seznam cílů, které zobrazení stránky podporuje pro operace vkládání pomocí "
+"schránky"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Nastavení"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Asociovaná instance WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Zkoumání WWW"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Asociovaná instance WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Upravitelné"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Jestli uživatel může upravovat obsah"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Průhledné"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Jestli má obsah průhledné pozadí"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Úroveň zvětšení"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Úroveň zvětšení obsahu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Změna velikosti celého obsahu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Jestli má být prováděna změna velikosti celého obsahu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Kódování"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Výchozí kódování zobrazení WWW"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Vlastní kódování"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Vlastní kódování zobrazení WWW"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "Adresa URI ikony"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "Adresa URI ikony stránky pro #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Potvrdit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Reset"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Tento seznam lze prohledávat. Zadejte klíčová slova hledání:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Vybrat soubor"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Nic)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Otevřít odkaz v novém _okně"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Uložit odkazovaný soubor"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "_Kopírovat adresu odkazu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Otevřít o_brázek v novém okně"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "_Uložit obrázek jako"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Ko_pírovat obrázek"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Otevřít _rám v novém okně"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Obnovit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Nebyly nalezeny žádné návrhy"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignorovat kontrolu pravopisu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Učit se kontrolu pravopisu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Vyhledat na WWW"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "Vyh_ledat ve slovníku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Otevřít odkaz"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignorovat _gramatiku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Kontrola pravopisu a _gramatiky"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Zobrazit kontrolu pravopisu a gramatiky"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Skrýt kontrolu pravopisu a gramatiky"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Zkontrolovat dokument"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "_Kontrola pravopisu během psaní"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Kontrolovat _gramatiku pomocí pravopisu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Písmo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "K_ontury"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Zkoumat _prvek"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Žádná nedávná hledání"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Nedávná hledání"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Vymazat nedávná hledání"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "výraz"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definice"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "stisknutí"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "výběr"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "aktivovat"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "zrušení výběru"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "kontrola"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "přeskočit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " soubory"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Neznámé"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Načítá se…"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Živý přenos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "ovladač prvku zvuku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "ovladač prvku videa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "ztlumení"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "zrušit ztlumení"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "přehrát"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pozastavit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "čas videa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "zpět 30 sekund"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "vrátit se do reálného času"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "uplynulý čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "zbývající čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "stav"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "celá obrazovka"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "rychle vpřed"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "rychle zpět"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "zobrazení ovládacích prvků a stavu prvku zvuku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "zobrazení ovládacích prvků a stavu prvku videa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "ztlumit hudební stopy"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "zrušit ztlumení hudebních stop"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "začít přehrávání"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "pozastavit přehrávání"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "přeskočit ve videu 30 sekund zpět"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "vrátit se v promítání videa do reálného šasu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "čas aktuálního videa v sekundách"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "počet zbývajících vteřin videa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "aktuální stav videa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "rychlý přechod zpět"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "rychlý přechod vpřed"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Přehrát video na celou obrazovku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "Nejasný čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "chybějící hodnota"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "typ nesouhlasí"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "vzor nesouhlasí"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "příliš dlouhé"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "nedostatečně velký rozsah"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "příliš velký rozsah"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+#, fuzzy
+msgid "step mismatch"
+msgstr "krok nesouhlasí"
diff --git a/Source/WebKit/gtk/po/de.po b/Source/WebKit/gtk/po/de.po
new file mode 100644
index 0000000..b9fb99b
--- /dev/null
+++ b/Source/WebKit/gtk/po/de.po
@@ -0,0 +1,1099 @@
+# German translations for WebKit package.
+# This file is put in the public domain.
+# Copyright (C) 2009 Christian Dywan <christian@twotoasts.de>, 2009.
+# Mario Blättermann <mariobl@gnome.org>, 2010.
+# Christian Kirbach <Christian.Kirbach@googlemail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.21\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-03-21 21:14+0100\n"
+"Last-Translator: Christian Kirbach <Christian.Kirbach@googlemail.com>\n"
+"Language-Team: Deutsch <gnome-de@gnome.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+"X-Poedit-Language: German\n"
+"X-Poedit-Country: GERMANY\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Datei hochladen"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Eingabe_methoden"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM Von-_links-nach-rechts-Marke"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM Von-_rechts-nach-links-Marke"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Von-links-nach-rechts-_Einbettung"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Von-rechts-nach-Links-E_inbettung"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Von-links-nach-rechts-Ü_berschreiben"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Von-rechts-nach-links-Ü_berschreiben"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF Richtungsformatierungs-_Pop"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS-Leerraum mit Breite _null"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ-_Verbinder mit Breite null"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ-_Trenner mit Breite null"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Unicode-Steuerzeichen einfügen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Netzwerkanfrage"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Die Netzwerkanfrage der Adresse, welche heruntergeladen werden soll"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Netzwerkantwort"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "Die Netzwerkantwort der Adresse, welche heruntergeladen werden soll"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "Zieladresse"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "Die Zieladresse, an welcher die Datei gespeichert werden soll"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Vorgeschlagener Dateiname"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Der beim Speichern als Vorgabe vorgeschlagene Dateiname"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Fortschritt"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Bestimmt den aktuellen Fortschritt des Herunterladens"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Bestimmt den aktuellen Status des Herunterladens"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Aktuelle Größe"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Die Länge der bereits heruntergeladenen Daten"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Gesamtgröße"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Die Gesamtgröße der Datei"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Download wurde vom Benutzer abgebrochen"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Ein Benutzername und ein Passwort sind für die Seite %s erforderlich"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Server-Nachricht:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Benutzername:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Passwort:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "An Passwort _erinnern"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Name"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Der Name des Rahmens"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Titel"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Der Titel des Dokuments in dem Rahmen"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "Adresse"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Die aktuelle Adresse der im Rahmen dargestellten Inhalte"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Richtlinie für horizontal Rollbalken"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr ""
+"Bestimmt die aktuelle Richtlinie für den horizontalen Rollbalken des Rahmens."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Richtlinie für vertikale Rollbalken"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr ""
+"Bestimmt die aktuelle Richtlinie für den vertikalen Rollbalken des Rahmens."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Der Titel des Chronikeintrags"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Alternativer Titel"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Der alternative Titel des Chronikeintrags"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "Die Adresse des Chronikobjekts"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Originaladresse"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Die Originaladresse des Chronikeintrags"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Zeit des letzten Besuchs"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Der Zeitpunkt, an dem der Chronikeintrag zuletzt besucht wurde"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Webansicht"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Die Webansicht, die den Web-Inspektor selbst darstellt"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Untersuchte Adresse"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "Die Adresse, die derzeit untersucht wird"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "JavaScript-Profiling aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Das ausgeführte JavaScript profilieren."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Timeline-Profiling aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Die WebCore-Instrumentation profilieren."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Grund"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Der Grund, warum diese Navigation geschieht"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Die Adresse, die als Navigationsziel angefordert wurde"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Knopf"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Der angeklickte Knopf"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Modifikatorstatus"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Eine Bitmaske, die den Status der Zusatztasten darstellt."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Zielrahmen"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Der Zielrahmen der Navigation"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Voreingestellte Zeichenkodierung"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Die voreingestellte Zeichenkodierung zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Kursiv-Schriftfamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Die vorgegebene Kursiv-Schriftfamilie zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Voreingestellte Schriftfamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Die voreingestellte Schriftfamilie zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Fantasy-Schriftfamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Die voreingestellte Fantasy-Schriftfamilie zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Monospace-Schriftfamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr ""
+"Die voreingestellte Schriftfamilie zur Darstellung von dicktengleichem Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Sans-Serif-Schriftfamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+"Die voreingestellte Sans-Serif-Schriftfamilie zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Serif-Schriftfamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Die voreingestellte Serif-Schriftfamilie zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Voreingestellte Schriftgröße"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Die voreingestellte Schriftgröße zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Voreingestellte Monospace-Schriftgröße"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr ""
+"Die voreingestellte Schriftgröße zur Darstellung von dicktengleichem Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Mindestschriftgröße"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Die Mindestgröße der Schrift zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Kleinste logische Schriftgröße"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Die kleinste logische Schriftgröße zur Darstellung von Text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "96 dpi erzwingen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Eine Auflösung von 96 dpi erzwingen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Bilder automatisch laden"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Bilder automatisch laden."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Bilder automatisch verkleinern"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Größe alleinstehender Bilder automatisch anpassen."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Hintergründe drucken"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Gibt an, ob Hintergrundbilder gedruckt werden sollen."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Skripte aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Eingebettete Skriptsprachen aktivieren."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Plugins aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Eingebettete Plugin-Objekte aktivieren."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Größenänderung für Textfelder"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Gibt an, ob die Größe von Textfeldern geändert werden kann."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "Adresse der Benutzer-Stilvorlage"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+"Die Adresse einer benutzerdefinierten Stilvorlage, die auf alle Seiten "
+"angewendet werden soll."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Schrittweite für Größenänderungen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Der Wert für Größenänderungensstufen beim Vergrößern oder Verkleinern."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Erweiterungen für Entwickler aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Aktiviert spezielle Erweiterungen, die Entwickler unterstützen"
+
+# Steht so im KDE-Browser rekonq.
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Privaten Modus aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Aktiviert den privaten Modus für den Browser."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Rechtschreibprüfung aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Rechtschreibung beim Tippen überprüfen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Sprachen für die Rechtschreibprüfung"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Durch Kommata getrennte Liste von Sprachen für die Rechtschreibprüfung"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Caret-Modus aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+"Legt fest, ob die barrierefreie Tastaturnavigation aktiviert werden soll"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "HTML5-Datenbank aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Legt fest, ob HTML5-Datenbanken unterstützt werden"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Lokale Speicherung nach HTML5 aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Legt fest, ob lokale Speicherung nach HTML5 unterstützt wird"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "XSS-Auditor aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Legt fest, ob der XSS-Auditor aktiviert ist"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Benutzerprogramm"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "Von WebKitGtk verwendete Zeichenkette für das Benutzerprogramm"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript darf Fenster automatisch öffnen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Legt fest, ob JavaScript Fenster automatisch öffnen darf"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Offline-Webanwendungscache aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Legt fest, ob der Offline-Webanwendungscache aktiviert wird"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Bearbeitungsverhalten"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "Das Verhalten im Bearbeitungsmodus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Unbeschränkten Zugriff von Datei-Adressen aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Legt fest, ob unbeschränkter Zugriff von Datei-Adressen aktiviert wird"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Einfügen ins DOM aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Legt fest, ob Einfügen ins DOM aktiviert ist"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Tabulatortaste wechselt zwischen Elementen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+"Legt fest, ob die Tabulatortaste zwischen Elementen auf der Seite wechselt."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Voreingestelltes Kontext-Menü aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Drücken der rechten Maustaste blendet das voreingestellte Kontext-Menü ein"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "Seitenspezifische Fehlerumgehungen aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Seitenspezifische Kompatibilitätsprobleme umgehen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Seiten-Cache aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Legt fest, ob Seiten-Cache verwendet werden soll"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Fenstergröße automatisch anpassen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+"Die Größe des obersten Fensters auf Aufforderung einer Seite automatisch "
+"anpassen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Java-Applet aktivieren"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Legt fest, ob Java-Applets mittels <applet> unterstützt werden sollen"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Gibt den Dokumenttitel von @web_view zurück"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Gibt die aktuelle Adresse des von @web_view angezeigten Inhalts zurück"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Liste der Kopierziele"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"Die Liste der Ziele, die diese Webansicht für Kopieren in die Zwischenablage "
+"unterstützt"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Liste der Einfügeziele"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"Die Liste der Ziele, die diese Webansicht für Einfügen der Zwischenablage "
+"unterstützt"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Einstellungen"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Eine zugeordnete WebKitWebSettings-Instanz"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Web-Inspektor"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Die zugeordnete WebKitWebInspector-Instanz"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Bearbeitbar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Gibt an, ob der Inhalt vom Benutzer bearbeitet werden kann"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Transparent"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Gibt an, ob der Inhalt einen transparenten Hintergrund hat"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Vergrößerungsstufe"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Die Vergrößerungsstufe des Inhalts"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Vollständige Größenänderung"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Gibt an, ob Größenänderungen den gesamten Inhalt beeinflussen"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Zeichenkodierung"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Die vorgegebene Zeichenkodierung der Webansicht"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Benutzerdefinierte Zeichenkodierung"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Die benutzerdefinierte Zeichenkodierung der Webansicht"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "Symboladresse"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "Die Adresse des favicon-Symbols für #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Absenden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Dieser Index ist durchsuchbar. Geben Sie Suchbegriffe ein: "
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Datei wählen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Kein)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Verweis in neuem _Reiter öffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "Verweisziel herunter_laden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Verweisziel _kopieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "_Bild in neuem Fenster öffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Bil_d speichern unter"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Bild k_opieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "_Rahmen in neuem Fenster öffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Neu laden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Keine Vorschläge verfügbar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "Rechtschreibung _ignorieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "Rechtschreibung _hinzufügen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "Im Netz _suchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "In _Wörterbuch nachschlagen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "Verweis ö_ffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Grammatik _ignorieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Rechtschreibung und _Grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "Rechtschreibung und Grammatik _anzeigen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "Rechtschreibung und Grammatik _verbergen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "Dokument jetzt ü_berprüfen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Rechtschreibung beim _Eintippen überprüfen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Grammatik beim _Eintippen überprüfen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Schriftart"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Umrandung"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Element _untersuchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Keine vergangenen Suchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Letzte Suchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "Letzte Su_chen löschen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "Begriff"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "Festlegung"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "drücken"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "markieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "aktivieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "abwählen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "wählen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "überspringen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " Dateien"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Ladevorgang …"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Live-Ausstrahlung"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "Steuerung für Audio-Elemente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "Steuerung für Video-Elemente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "Stumm schalten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "Laut schalten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "Abspielen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "Pausieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "Filmdauer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "Rollbalken-Schieber der Zeitleiste"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "30 Sekunden zurück"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "Auf Echtzeit zurückstellen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "Vergangene Zeit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "Verbleibende Zeit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "Status"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "Vollbild"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "Vorspulen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "Zurückspulen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "geschlossene Beschriftung zeigen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "geschlossene Beschriftung verbergen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "Wiedergabesteuerung und Statusanzeige für Audio-Elemente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "Wiedergabesteuerung und Statusanzeige für Video-Elemente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "Tonspuren stumm schalten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "Tonspuren laut schalten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "Wiedergabe starten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "Wiedergabe pausieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "Zeitschieber für Filme"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "Zeitschiebergriff für Filme"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "Film 30 Sekunden zurückspulen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "Streaming-Video auf Echtzeit zurückstellen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "Aktuelle Filmwiedergabezeit in Sekunden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "Anzahl verbleibender Sekunden des Films"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "Status des aktuellen Films"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "Schnell zurückspulen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "Schnell vorspulen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Den momentanen Film im Vollbildmodus wiedergeben"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "beginnen, geschlossene Beschriftung zu zeigen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "beenden, geschlossene Beschriftung zu zeigen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "Unbegrenzte Zeit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "Wert fehlt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "Typ passt nicht"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "Muster passt nicht"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "Zu lang"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "Bereich unterschritten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "Bereich überschritten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "Schritt passt nicht"
+
+#~ msgid "_Searchable Index"
+#~ msgstr "Durchsuchbarer _Index"
diff --git a/Source/WebKit/gtk/po/en_GB.po b/Source/WebKit/gtk/po/en_GB.po
new file mode 100644
index 0000000..7174fc7
--- /dev/null
+++ b/Source/WebKit/gtk/po/en_GB.po
@@ -0,0 +1,1095 @@
+# British English translation of webkit.
+# Copyright (C) 2009 webkit's COPYRIGHT HOLDER
+# This file is distributed under the same licence as the webkit package.
+# Bruce Cowan <bcowan@fastmail.co.uk>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit HEAD\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2009-07-14 02:01+0100\n"
+"Last-Translator: Bruce Cowan <bcowan@fastmail.co.uk>\n"
+"Language-Team: British English <en@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Upload File"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Input _Methods"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM _Left-to-right mark"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM _Right-to-left mark"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Left-to-right _embedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Right-to-left e_mbedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Left-to-right _override"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Right-to-left o_verride"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Pop directional formatting"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS _Zero width space"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ Zero width _joiner"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ Zero width _non-joiner"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Insert Unicode Control Character"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Network Request"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "The network request for the URI that should be downloaded"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#, fuzzy
+msgid "Network Response"
+msgstr "Network Request"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#, fuzzy
+msgid "The network response for the URI that should be downloaded"
+msgstr "The network request for the URI that should be downloaded"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "Destination URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "The destination URI where to save the file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Suggested Filename"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "The filename suggested as default when saving"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Progress"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Determines the current progress of the download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Determines the current status of the download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Current Size"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "The length of the data already downloaded"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Total Size"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "The total size of the file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "User cancelled the download"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "A username and password are being requested by the site %s"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Username:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Password:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#, fuzzy
+msgid "_Remember password"
+msgstr "Remember password"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Name"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "The name of the frame"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Title"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "The document title of the frame"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "The current URI of the contents displayed by the frame"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#, fuzzy
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Determines the current progress of the download"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#, fuzzy
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Determines the current progress of the download"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "The title of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Alternate Title"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "The alternate title of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "The URI of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Original URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "The original URI of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Last visited Time"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "The time at which the history item was last visited"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Web View"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "The Web View that renders the Web Inspector itself"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Inspected URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "The URI that is currently being inspected"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Enable JavaScript profiling"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Profile the executed JavaScript."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "Enable JavaScript profiling"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Reason"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "The reason why this navigation is occurring"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "The URI that was requested as the target for the navigation"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Button"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "The button used to click"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Modifier state"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "A bitmask representing the state of the modifier keys"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#, fuzzy
+msgid "Target frame"
+msgstr "The name of the frame"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "The URI that was requested as the target for the navigation"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Default Encoding"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "The default encoding used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Cursive Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "The default Cursive font family used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Default Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "The default font family used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Fantasy Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "The default Fantasy font family used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Monospace Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "The default font family used to display monospace text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Sans Serif Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "The default Sans Serif font family used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Serif Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "The default Serif font family used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Default Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "The default font size used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Default Monospace Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "The default font size used to display monospace text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Minimum Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "The minimum font size used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Minimum Logical Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "The minimum logical font size used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Enforce 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Enforce a resolution of 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Auto Load Images"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Load images automatically."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Auto Shrink Images"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automatically shrink standalone images to fit."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Print Backgrounds"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Whether background images should be printed."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Enable Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Enable embedded scripting languages."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Enable Plugins"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Enable embedded plugin objects."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Resizable Text Areas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Whether text areas are resizable."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "User Stylesheet URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "The URI of a stylesheet that is applied to every page."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Zoom Stepping Value"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "The value by which the zoom level is changed when zooming in or out."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Enable Developer Extras"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Enables special extensions that help developers"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Enable Private Browsing"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Enables private browsing mode"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+#, fuzzy
+msgid "Enables spell checking while typing"
+msgstr "Check Spelling While _Typing"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#, fuzzy
+msgid "Enable Caret Browsing"
+msgstr "Enable Private Browsing"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#, fuzzy
+msgid "Enable XSS Auditor"
+msgstr "Enable Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#, fuzzy
+msgid "Enable DOM paste"
+msgstr "Enable Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#, fuzzy
+msgid "Whether the page cache should be used"
+msgstr "Whether background images should be printed."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "Enable JavaScript profiling"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Returns the @web_view's document title"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Returns the current URI of the contents displayed by the @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Copy target list"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "The list of targets this web view supports for clipboard copying"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Paste target list"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "The list of targets this web view supports for clipboard pasting"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Settings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "An associated WebKitWebSettings instance"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Web Inspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "The associated WebKitWebInspector instance"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Editable"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Whether content can be modified by the user"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Transparent"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Whether content has a transparent background"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Zoom level"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "The level of zoom of the content"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Full content zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Whether the full content is scaled when zooming"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Encoding"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "The default encoding of the web view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Custom Encoding"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "The custom encoding of the web view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Submit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Reset"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Choose File"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(None)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Open Link in New _Window"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Download Linked File"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Copy Link Loc_ation"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Open _Image in New Window"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Sa_ve Image As"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Cop_y Image"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Open _Frame in New Window"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Reload"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "No Guesses Found"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignore Spelling"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Learn Spelling"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Search the Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Look Up in Dictionary"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Open Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignore _Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Spelling and _Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Show Spelling and Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Hide Spelling and Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Check Document Now"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Check Spelling While _Typing"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Check _Grammar With Spelling"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Font"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Outline"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspect _Element"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "No recent searches"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Recent searches"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Clear recent searches"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "term"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definition"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "press"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "select"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "activate"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "untick"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "tick"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "jump"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " files"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Unknown"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#, fuzzy
+msgid "status"
+msgstr "Status"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+#, fuzzy
+msgid "indefinite time"
+msgstr "definition"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
+
+#~ msgid "_Searchable Index"
+#~ msgstr "_Searchable Index"
diff --git a/Source/WebKit/gtk/po/es.po b/Source/WebKit/gtk/po/es.po
new file mode 100644
index 0000000..83ad6bf
--- /dev/null
+++ b/Source/WebKit/gtk/po/es.po
@@ -0,0 +1,1101 @@
+# translation of webkit.po to Español
+# This file is put in the public domain.
+# Jorge González González <aloriel@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-08-22 12:03+0200\n"
+"Last-Translator: Jorge González González <aloriel@gmail.com>\n"
+"Language-Team: Spanish <es@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Subir archivo"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "_Métodos de entrada"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "Marca de _izquierda-a-derecha [LRM]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "Marca de _derecha-a-izquierda [RLM]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "In_crustamiento de izquierda-a-derecha [LRE]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "Inc_rustamiento de derecha-a-izquierda [RLE]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "_Prevalencia de izquierda-a-derecha [LRO]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "Pre_valencia de derecha-a-izquierda [RLO]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "Formateo d_ireccional emergente [PDF]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "Espacio de ancho _cero [ZWS]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "En_samblador de ancho cero [ZWJ]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "_No ensamblador de ancho cero [ZWNJ]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Insertar un carácter de control Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Solicitud de red"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "La solicitud de red para el URI que se debe descargar"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Respuesta de red"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "La respuesta de red para el URI que se debería descargar"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "URI de destino"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "El URI de destino donde guardar el archivo"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Nombre de archivo sugerido"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "El nombre de archivo sugerido como predeterminado al guardar"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Progreso"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Determina el progreso actual de la descarga"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Estado"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Determina el estado actual de la descarga"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Tamaño actual"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "El tamaño de los datos ya descargados"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Tamaño total"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "El tamaño total del archivo"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "El usuario canceló la descarga"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "El sitio %s está solicitando un usuario y una contraseña"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Mensaje del servidor:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Nombre de usuario:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "_Recordar contraseña"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Nombre"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "El nombre del marco"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Título"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "El nombre de documento del marco"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "El URI actual del contenido mostrado en el marco"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Directiva de la barra de desplazamiento horizontal"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr ""
+"Determina la política actual para la barra de desplazamiento horizontal del "
+"marco."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Directiva de la barra de desplazamiento vertical"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr ""
+"Determina la política actual para la barra de desplazamiento vertical del "
+"marco."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "El título del elemento del histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Título alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "El título alternativo del elemento del histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "El URI del elemento del histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "URI original"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "El URI original del elemento del histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Hora de la última visita"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "La hora en la que se vió el elemento del histórico por última vez"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Vista web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "La vista de web que renderiza el inspector web en sí"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "URI inspeccionada"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "El URI que actualmente está siendo inspeccionado"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Activar perfilado de JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Perfilar el JavaScript ejecutado."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Activar perfilado de tiempo"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Razón"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "La razón por la cuál está ocurriendo esta navegación"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "El URI solicitado como el objetivo para la navegación"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Botón"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "El botón usado para pulsar"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Estado del modificador"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+"Una máscara de bits que representa el estado de las teclas modificadoras"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Marco de destino"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "El marco de destino para la navegación"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Codificación predeterminada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "La codificación predeterminada usada para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Tipografía cursiva"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr ""
+"La familia tipográfica cursiva predeterminada usada para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Tipografía predeterminada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "La familia tipográfica predeterminada usada para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Familia de tipografía fantasía"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr ""
+"La familia tipográfica fantasía predeterminada usada para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Tipografía Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr ""
+"La familia tipográfica predeterminada usada para mostrar texto monoespaciado."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Tipografía Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+"La familia tipográfica Sans Serif predeterminada usada para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Tipografía Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "La familia tipográfica Serif predeterminada usada para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Tamaño de predeterminado de tipografía"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "El tamaño de tipografía predeterminado usado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Tipografía predeterminada Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr ""
+"El tamaño de tipografía predeterminado usado para mostrar texto "
+"monoespaciado."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Tamaño mínimo de tipografía"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "El mínimo tamaño de tipografía usado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Tamaño mínimo lógico de tipografía"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "El tamaño mínimo lógico de tipografía usado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Forzar 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Forzar una resolución de 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Cargar imágenes automáticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Cargar imágenes automáticamente."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Autoencoger imágenes"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Encoger imágenes independientes para ajustarlas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Imprimir fondos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Indica si se deben imprimir las imágenes de fondo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Activar scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Activar lenguajes de scrpting empotrados"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Activar complementos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Activar objetos de complemento empotrados."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Áreas de texto redimensionables"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Indica si las áreas de texto son redimensionables."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI de la hoja de estilo del usuario"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "El URI de una hoja de estilo que se aplica a cada página."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Valor del paso de la ampliación"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+"El valor por el cuál el nivel de ampliación se cambia al ampliar o reducir."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Activar extras para desarrolladores"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Activa extensiones especiales para ayudar a los desarrolladores"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Activar navegación privada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Activa el modo de navegación privado"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Activar revisión ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Activa la revisión ortográfica al escribir"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Idiomas que usar para la revisión ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+"Lista separada por comas de los idiomas que usar para la revisión ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Activar navegación por cursor"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+"Indica si activar la mejora de accesibilidad para navegación por teclado"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Activar la base de datos de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Indica si se debe activar el soporte para la base de datos de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Activar almacén local de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Indica si activar el soporte de almacén local de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Activar el auditor de XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Indica si se debe activar el auditor de XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript puede abrir ventanas automáticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Indica si JavaScript puede abrir ventanas automáticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Activar la caché de aplicación fuera de línea"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Indica si activar la caché de aplicación web fuera de línea"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Activar caché de páginas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Indica si se debería usar la caché de páginas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Autoredimensionar ventana"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+"Redimensionar automáticamente la ventana de nivel superior cuando una página "
+"lo solicita"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Activar la miniaplicación de Java"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+"Indica si se debería activar el soporte de miniaplicaciones Java a través de "
+"<applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Devuelve el título del documento de @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Devuelve el contenido actual del URI mostrado en @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Copiar la lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"La lista de objetivos que esta vista web soporta para copiar desde el "
+"portapapeles"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Pegar la lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"La lista de objetivos que esta vista web soporta para pegar desde el "
+"portapapeles"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Ajustes"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Una instancia asociada de WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Inspector web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "La instanacia aosiciada de WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Editable"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Indica si el usuario puede modificar el contenido"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Indica si el contenido tiene un fondo transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Nivel de ampliación"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "El nivel de ampliación del contenido"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Ampliación completa del contenido"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Indica si el contenido completo se escala al ampliar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Codificación"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "La codificación predeterminada de la vista web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Codificación personalizada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "La codificación de caracteres personalizada de la vista de la web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "Icono de URI"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "El URI para el icono favorito para #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Enviar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Restablecer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+"Es un índice en el que se puede buscar. Introduzca palabras clave de "
+"búsqueda:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Elegir archivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Ninguno)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Abrir enlace en una _ventana nueva"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Descargar el archivo enlazado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "_Copiar dirección del enlace"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Abrir _imagen en una ventana nueva"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "_Guardar imagen como"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Copia_r imagen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Abrir _marco en una ventana nueva"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "Re_cargar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "No se encontró ninguna sugerencia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignorar ortografía"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Aprender ortografía"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Buscar en la web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Buscar en diccionario"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Abrir enlace"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignorar gra_mática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Ortografía y gra_mática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Mostrar ortografía y gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Ocultar ortografía y grámatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Comprobar documento ahora"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Comprobar ortografía al _escribir"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Comprobar gra_mática y ortografía"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Tipografía"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "C_ontorno"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspeccionar _elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "No hay búsquedas recientes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Búsquedas recientes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Cancelar búsquedas recientes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "término"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definición"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "pulsar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "seleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "activar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "deseleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "seleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "saltar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr "archivos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Desconocido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Cargando…"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "En directo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "controlador de elemento de sonido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "controlador de elemento de vídeo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "silenciar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "dar voz"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "play"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pause"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "tiempo de la película"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "atrás 30 segundos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "volver a tiempo real"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "tiempo transcurrido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "tiempo restante"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "estado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "pantalla completa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "comenzar la reproducción"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "pausar la reproducción"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "número de segundos restantes de la película"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "estado actual de la película"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "tiempo indefinido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "demasiado largo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
diff --git a/Source/WebKit/gtk/po/et.po b/Source/WebKit/gtk/po/et.po
new file mode 100644
index 0000000..6bb9033
--- /dev/null
+++ b/Source/WebKit/gtk/po/et.po
@@ -0,0 +1,803 @@
+# Webkit'i tõlge eesti keelde.
+# Estonian translation for webkit.
+#
+# Copyright (C) 2010 The WebKitGTK+ Team
+# This file is distributed under the same license as the webkit package.
+#
+# Rene Pärts <rene87 hot ee>, 2010.
+# Priit Laes <plaes plaes org>, 2010
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.22\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-16 15:01-0200\n"
+"PO-Revision-Date: 2010-02-23 14:25+0300\n"
+"Last-Translator: Priit Laes <rene87@hot.ee>\n"
+"Language-Team: Estonian <gnome-et@linux.ee>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+msgid "Upload File"
+msgstr "Faili valimine"
+
+msgid "Input _Methods"
+msgstr "Sisestus_meetodid"
+
+msgid "LRM _Left-to-right mark"
+msgstr "LRM _Vasakult paremale märk"
+
+msgid "RLM _Right-to-left mark"
+msgstr "RLM _Paremalt vasakule märk"
+
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Va_sakult paremale põimimine"
+
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Pa_remalt vasakule põimimine"
+
+msgid "LRO Left-to-right _override"
+msgstr "LRO Vasakult paremale ü_lekirjutamine"
+
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Paremalt vasakule üle_kirjutamine"
+
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Suundvormindus"
+
+msgid "ZWS _Zero width space"
+msgstr "ZWS _Null-laiusega tühik"
+
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ Null-laiusega ü_hendaja"
+
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWJ Null-laiusega _mitteühendaja"
+
+msgid "_Insert Unicode Control Character"
+msgstr "L_isa Unicode'i juhtmärk"
+
+msgid "Network Request"
+msgstr "Võrgupäring"
+
+msgid "The network request for the URI that should be downloaded"
+msgstr "Võrgupäring allalaaditavale URI-le"
+
+msgid "Network Response"
+msgstr "Võrgu vastus"
+
+msgid "The network response for the URI that should be downloaded"
+msgstr "Võrgu vastus allalaaditavale URI-le"
+
+msgid "Destination URI"
+msgstr "Sihtkoha URI"
+
+msgid "The destination URI where to save the file"
+msgstr "Salvestatava faili sihtkoha URI"
+
+msgid "Suggested Filename"
+msgstr "Soovitatav failinimi"
+
+msgid "The filename suggested as default when saving"
+msgstr "Salvestamisel pakutav vaikimisi failinimi"
+
+msgid "Progress"
+msgstr "Edenemine"
+
+msgid "Determines the current progress of the download"
+msgstr "Tagastab allalaadimise edenemise"
+
+msgid "Status"
+msgstr "Olek"
+
+msgid "Determines the current status of the download"
+msgstr "Tagastab allalaadimise oleku"
+
+msgid "Current Size"
+msgstr "Hetkesuurus"
+
+msgid "The length of the data already downloaded"
+msgstr "Allalaetud andmete maht"
+
+msgid "Total Size"
+msgstr "Kogusuurus"
+
+msgid "The total size of the file"
+msgstr "Faili kogusuurus"
+
+msgid "User cancelled the download"
+msgstr "Allalaadimine katkestatud kasutaja poolt"
+
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Saidi %s poolt küsitakse kasutajanime ja parooli"
+
+msgid "Username:"
+msgstr "Kasutajanimi:"
+
+msgid "Password:"
+msgstr "Parool:"
+
+msgid "_Remember password"
+msgstr "_Parooli meeldejätmine"
+
+msgid "Name"
+msgstr "Nimi"
+
+msgid "The name of the frame"
+msgstr "Raami nimi"
+
+msgid "Title"
+msgstr "Pealkiri"
+
+msgid "The document title of the frame"
+msgstr "Raami dokumendi pealkiri"
+
+msgid "URI"
+msgstr "URI"
+
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Raami sisu aktiivne URI"
+
+msgid "Horizontal Scrollbar Policy"
+msgstr "Horisontaalse kerimisriba kasutusreegel"
+
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Määrab raami horisontaalse kerimisriba kasutusreeglid."
+
+msgid "Vertical Scrollbar Policy"
+msgstr "Vertikaalse kerimisriba reegel"
+
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Määrab raami vertikaalse kerimisriba kasutusreeglid."
+
+msgid "The title of the history item"
+msgstr "Ajalookirje pealkiri"
+
+msgid "Alternate Title"
+msgstr "Alternatiivne pealkiri"
+
+msgid "The alternate title of the history item"
+msgstr "Ajalookirje alternatiivne pealkiri"
+
+msgid "The URI of the history item"
+msgstr "Ajalookirje URI"
+
+msgid "Original URI"
+msgstr "Algne URI"
+
+msgid "The original URI of the history item"
+msgstr "Ajalookirje algne URI"
+
+msgid "Last visited Time"
+msgstr "Viimase külastuse aeg"
+
+msgid "The time at which the history item was last visited"
+msgstr "Ajalookirje viimase külastuse aeg"
+
+msgid "Web View"
+msgstr "Veebivaade"
+
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Veebiinspektorit esitav veebivaade"
+
+msgid "Inspected URI"
+msgstr "Inspekteeritav URI"
+
+msgid "The URI that is currently being inspected"
+msgstr "Hetkel inspekteeritav URI"
+
+msgid "Enable JavaScript profiling"
+msgstr "Luba JavaScript'i profileerimine"
+
+msgid "Profile the executed JavaScript."
+msgstr "Käivitatava JavaScript'i profileerimine."
+
+msgid "Enable Timeline profiling"
+msgstr "Luba ajatelje profileerimine"
+
+msgid "Profile the WebCore instrumentation."
+msgstr "WebCore'i jälgimisvihjete profileerimine"
+
+msgid "Reason"
+msgstr "Põhjus"
+
+msgid "The reason why this navigation is occurring"
+msgstr "Navigeerimistegevuse esilekutsumise põhjus"
+
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+
+msgid "Button"
+msgstr "Nupp"
+
+msgid "The button used to click"
+msgstr "Klõpsamiseks kasutatud nupp"
+
+msgid "Modifier state"
+msgstr "Muuteklahvi olek"
+
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Muuteklahvide olekut esindav bitimask"
+
+msgid "Target frame"
+msgstr "Sihtraam"
+
+msgid "The target frame for the navigation"
+msgstr "Navigeerimise sihtraam"
+
+msgid "Default Encoding"
+msgstr "Vaikimisi kodeering"
+
+msgid "The default encoding used to display text."
+msgstr "Vaikimisi kasutatav kodeering teksti kuvamiseks."
+
+msgid "Cursive Font Family"
+msgstr "Kursiivne kirjaperekond"
+
+msgid "The default Cursive font family used to display text."
+msgstr "Teksti kuvamiseks kasutatav vaikimisi kursiivne kirjaperekond."
+
+msgid "Default Font Family"
+msgstr "Vaikimisi kirjaperekond"
+
+msgid "The default font family used to display text."
+msgstr "Teksti kuvamiseks kasutatav vaikimisi kirjaperekond."
+
+msgid "Fantasy Font Family"
+msgstr "Erikujuline kirjaperekond"
+
+msgid "The default Fantasy font family used to display text."
+msgstr "Teksti kuvamiseks kasutatav vaikimisi erikujuline kirjaperekond."
+
+msgid "Monospace Font Family"
+msgstr "Püsisammuga kirjaperekond"
+
+msgid "The default font family used to display monospace text."
+msgstr "Teksti kuvamiseks kasutatav vaikimisi püsisammuga kirjaperekond."
+
+msgid "Sans Serif Font Family"
+msgstr "Seriifideta kirjaperekond"
+
+msgid "The default Sans Serif font family used to display text."
+msgstr "Teksti kuvamiseks kasutatav vaikimisi seriifideta kirjaperekond."
+
+msgid "Serif Font Family"
+msgstr "Seriifidega kirjaperekond"
+
+msgid "The default Serif font family used to display text."
+msgstr "Teksti kuvamiseks kasutatav vaikimisi seriifidega kirjaperekond."
+
+msgid "Default Font Size"
+msgstr "Vaikimisi kirjasuurus"
+
+msgid "The default font size used to display text."
+msgstr "Vaikimisi kirjasuurus teksti kuvamiseks."
+
+msgid "Default Monospace Font Size"
+msgstr "Vaikimisi püsisammuga kirja suurus"
+
+msgid "The default font size used to display monospace text."
+msgstr "Vaikimisi kirjasuurus püsisammuga teksti kuvamiseks."
+
+msgid "Minimum Font Size"
+msgstr "Väikseim kirjasuurus"
+
+msgid "The minimum font size used to display text."
+msgstr "Väikseim kirjasuurus teksti kuvamiseks."
+
+msgid "Minimum Logical Font Size"
+msgstr "Väikseim loogilise kirjatüübi kirjasuurus"
+
+msgid "The minimum logical font size used to display text."
+msgstr "Väikseim loogilise kirjatüübi kirjasuurus teksti kuvamiseks."
+
+msgid "Enforce 96 DPI"
+msgstr "Lahutusvõime jõuga 96 DPI"
+
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Pealesunnitud ekraanilahutus on 96 DPI"
+
+msgid "Auto Load Images"
+msgstr "Automaatne piltide laadimine"
+
+msgid "Load images automatically."
+msgstr "Pildid laaditakse automaatselt."
+
+msgid "Auto Shrink Images"
+msgstr "Piltide automaatne vähendamine"
+
+msgid "Automatically shrink standalone images to fit."
+msgstr "Pildid vähendatakse automaatselt sobivaks."
+
+msgid "Print Backgrounds"
+msgstr "Tausta printimine"
+
+msgid "Whether background images should be printed."
+msgstr "Kas printimisel kaasatakse taustapildid või mitte."
+
+msgid "Enable Scripts"
+msgstr "Skriptide lubamine"
+
+msgid "Enable embedded scripting languages."
+msgstr "Manus-skriptikeelte lubamine."
+
+msgid "Enable Plugins"
+msgstr "Pluginate lubamine"
+
+msgid "Enable embedded plugin objects."
+msgstr "Põimitud plugina objektide lubamine."
+
+msgid "Resizable Text Areas"
+msgstr "Muudetav tekstiväljade suurus"
+
+msgid "Whether text areas are resizable."
+msgstr "Kas teksiväljade suurus on muudetav."
+
+msgid "User Stylesheet URI"
+msgstr "Kasutaja laaditabeli URI"
+
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "Igale lehele rakendatava laaditabeli URI."
+
+msgid "Zoom Stepping Value"
+msgstr "Suurenduse samm"
+
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Suurenduse muutumise samm suurendamisel ja vähendamisel."
+
+msgid "Enable Developer Extras"
+msgstr "Arendaja lisade lubamine"
+
+msgid "Enables special extensions that help developers"
+msgstr "Arendajaile mõeldud erilaienduste lubamine"
+
+msgid "Enable Private Browsing"
+msgstr "Privaatns sirvimise lubamine"
+
+msgid "Enables private browsing mode"
+msgstr "Privaatse sirvimisrežiimi lubamine"
+
+msgid "Enable Spell Checking"
+msgstr "Õigekirjakontrolli lubamine"
+
+msgid "Enables spell checking while typing"
+msgstr "Lubab trükkimisel kontrollida õigekirja"
+
+msgid "Languages to use for spell checking"
+msgstr "Õigekirjakontrollis kasutatavad keeled"
+
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+"Komadega eraldatud loend õigekirja kontrollimisel kasutatavatest keeltest"
+
+msgid "Enable Caret Browsing"
+msgstr "Kursoriga sirvimine lubatud"
+
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "Kas lubada klaviatuurihõlbustused navigeerimiseks"
+
+msgid "Enable HTML5 Database"
+msgstr "HTML5 andmebaasitoe lubamine"
+
+msgid "Whether to enable HTML5 database support"
+msgstr "Kas lubada HTML5 andmebaasi tugi"
+
+msgid "Enable HTML5 Local Storage"
+msgstr "HTML5 kohaliku salvesti lubamine"
+
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Kas lubada HTML5 kohaliku salvesti tugi"
+
+msgid "Enable XSS Auditor"
+msgstr "XSS audiitori lubamine"
+
+msgid "Whether to enable teh XSS auditor"
+msgstr "Kas lubada XSS audiitor"
+
+msgid "User Agent"
+msgstr "Sirvija identiteet"
+
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "WebKitGtk poolt kasutatav identiteet"
+
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript tohib aknaid automaatselt avada"
+
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Kas JavaScript tohib aknaid automaatselt avada või mitte"
+
+msgid "Enable offline web application cache"
+msgstr "Ühenduseta veebirakenduste vahemälu lubamine"
+
+msgid "Whether to enable offline web application cache"
+msgstr "Kas lubada ühenduseta veebirakenduste vahemälu"
+
+msgid "Editing behavior"
+msgstr "Redigeerimisrežiimis käitumine"
+
+msgid "The behavior mode to use in editing mode"
+msgstr "Redigeerimisrežiimis kasutatava käitumisrežiim"
+
+msgid "Enable universal access from file URIs"
+msgstr "Faili URI-dele üleüldise ligipääsu lubamine"
+
+msgid "Whether to allow universal access from file URIs"
+msgstr "Kas lubada faili URI-dele üleüldine ligipääs"
+
+msgid "Enable DOM paste"
+msgstr "DOM-põhise asetamise lubamine"
+
+msgid "Whether to enable DOM paste"
+msgstr "Kas lubada DOM-põhine asetamine"
+
+msgid "Tab key cycles through elements"
+msgstr "Tabulaator liigub elementide vahel"
+
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Kas tabulaatoriga liigutakse lehe elementide vahel või mitte."
+
+msgid "Enable Default Context Menu"
+msgstr "Vaikimisi kontekstimenüü lubamine"
+
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr "Lubab parem-klõpsudel vaikimisi kontekstimenüüd luua"
+
+msgid "Enable Site Specific Quirks"
+msgstr "Lehepõhiste ümbernurgalahenduste lubamine"
+
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Lubab kasutada lehepõhiseid ümbernurgalahendusi"
+
+msgid "Enable page cache"
+msgstr "Lehtede vahemälu lubamine"
+
+msgid "Whether the page cache should be used"
+msgstr "Kas kasutada lehtede vahemälu"
+
+msgid "Auto Resize Window"
+msgstr "Akna suuruse automaatne muutmine"
+
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "Automaatne ülemtaseme akna suuruse muutmine lehepoolsel päringul"
+
+msgid "Returns the @web_view's document title"
+msgstr "Tagastab @web_view dokumendi pealkirja"
+
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Tagastab @web_view-s kuvatava sisu aktiivse URI"
+
+msgid "Copy target list"
+msgstr "Kopeerimisoperatsiooni sihtkohtade loend"
+
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+msgid "Paste target list"
+msgstr "Asetusoperatsiooni sihtkohtade loend"
+
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+msgid "Settings"
+msgstr "Seaded"
+
+msgid "An associated WebKitWebSettings instance"
+msgstr ""
+
+msgid "Web Inspector"
+msgstr "Veebiinspektor"
+
+msgid "The associated WebKitWebInspector instance"
+msgstr ""
+
+msgid "Editable"
+msgstr "Redigeeritav"
+
+msgid "Whether content can be modified by the user"
+msgstr "Kas sisu on kasutaja poolt muudetav või mitte"
+
+msgid "Transparent"
+msgstr "Läbipaistvus"
+
+msgid "Whether content has a transparent background"
+msgstr "Kas sisul on läbipaistev taust või mitte"
+
+msgid "Zoom level"
+msgstr "Suurendusaste"
+
+msgid "The level of zoom of the content"
+msgstr "Sisu suurendusaste"
+
+msgid "Full content zoom"
+msgstr ""
+
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+msgid "Encoding"
+msgstr "Kodeering"
+
+msgid "The default encoding of the web view"
+msgstr "Vaikimisi kodeering veebivaate jaoks"
+
+msgid "Custom Encoding"
+msgstr "Kohandatud kodeering"
+
+msgid "The custom encoding of the web view"
+msgstr "Kohandatud kodeering veebivaate jaoks"
+
+msgid "Icon URI"
+msgstr "Ikooni URI"
+
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "Veebilehe tunnusikooni URI #WebKitWebView jaoks."
+
+msgid "Submit"
+msgstr "Saada"
+
+msgid "Reset"
+msgstr "Taasta"
+
+msgid "_Searchable Index"
+msgstr "_Otsitav indeks"
+
+msgid "Choose File"
+msgstr "Vali fail"
+
+msgid "(None)"
+msgstr "(Puudub)"
+
+msgid "Open Link in New _Window"
+msgstr "Ava link _uues aknas"
+
+msgid "_Download Linked File"
+msgstr "Salvesta _link"
+
+msgid "Copy Link Loc_ation"
+msgstr "K_opeeri lingi asukoht"
+
+msgid "Open _Image in New Window"
+msgstr "Ava _pilt uues aknas"
+
+msgid "Sa_ve Image As"
+msgstr "_Salvesta pilt"
+
+msgid "Cop_y Image"
+msgstr "_Kopeeri pilt"
+
+msgid "Open _Frame in New Window"
+msgstr "Ava _raam uues aknas"
+
+msgid "_Reload"
+msgstr "_Laadi uuesti"
+
+msgid "No Guesses Found"
+msgstr "Vastavusi ei leitud"
+
+msgid "_Ignore Spelling"
+msgstr "_Eira õigekirja"
+
+msgid "_Learn Spelling"
+msgstr "Õ_pi õigekirja"
+
+msgid "_Search the Web"
+msgstr "_Otsi veebist"
+
+msgid "_Look Up in Dictionary"
+msgstr "_Otsi sõnaraamatust"
+
+msgid "_Open Link"
+msgstr "_Ava link"
+
+msgid "Ignore _Grammar"
+msgstr "Eira _grammatikat"
+
+msgid "Spelling and _Grammar"
+msgstr "Õigekiri ja _grammatika"
+
+msgid "_Show Spelling and Grammar"
+msgstr "_Näita õigakirja ja grammatikat"
+
+msgid "_Hide Spelling and Grammar"
+msgstr "_Peida õigakiri ja grammatika"
+
+msgid "_Check Document Now"
+msgstr "_Kontrolli dokumenti"
+
+msgid "Check Spelling While _Typing"
+msgstr "Õigekirjakontroll _sisestamise ajal"
+
+msgid "Check _Grammar With Spelling"
+msgstr "Õigekirja ja _grammatika kontrollimine"
+
+msgid "_Font"
+msgstr "_Kirjatüüp"
+
+msgid "_Outline"
+msgstr "_Kontuur"
+
+msgid "Inspect _Element"
+msgstr "Uuri _elementi"
+
+msgid "No recent searches"
+msgstr "Hiljutised otsingud puuduvad"
+
+msgid "Recent searches"
+msgstr "Hiljutised otsingud"
+
+msgid "_Clear recent searches"
+msgstr "_Kustuta hiljutised otsingud"
+
+msgid "term"
+msgstr "termin"
+
+msgid "definition"
+msgstr "definitsoon"
+
+msgid "press"
+msgstr "vajuta"
+
+msgid "select"
+msgstr "vali"
+
+msgid "activate"
+msgstr "aktiveeri"
+
+msgid "uncheck"
+msgstr ""
+
+msgid "check"
+msgstr "kontrolli"
+
+msgid "jump"
+msgstr "hüppa"
+
+msgid " files"
+msgstr " faili"
+
+msgid "Unknown"
+msgstr "Tundmatu"
+
+msgid "Loading..."
+msgstr "Laadimine..."
+
+msgid "Live Broadcast"
+msgstr "Otseülekanne"
+
+msgid "audio element controller"
+msgstr "helielemendi juhtija"
+
+msgid "video element controller"
+msgstr "videoelemendi juhtija"
+
+msgid "mute"
+msgstr "vaigista"
+
+msgid "unmute"
+msgstr "taasta heli"
+
+msgid "play"
+msgstr "esita"
+
+msgid "pause"
+msgstr "paus"
+
+msgid "movie time"
+msgstr "filmi aeg"
+
+msgid "timeline slider thumb"
+msgstr ""
+
+msgid "back 30 seconds"
+msgstr "30 sekundit tagasi"
+
+msgid "return to realtime"
+msgstr "tagasta reaalajas"
+
+msgid "elapsed time"
+msgstr "aega kulunud"
+
+msgid "remaining time"
+msgstr "aega jäänud"
+
+msgid "status"
+msgstr "olek"
+
+msgid "fullscreen"
+msgstr "täisekraan"
+
+msgid "fast forward"
+msgstr "edasikerimine"
+
+msgid "fast reverse"
+msgstr "tagasikerimine"
+
+msgid "show closed captions"
+msgstr ""
+
+msgid "hide closed captions"
+msgstr ""
+
+msgid "audio element playback controls and status display"
+msgstr ""
+
+msgid "video element playback controls and status display"
+msgstr ""
+
+msgid "mute audio tracks"
+msgstr "helide vaigistamine"
+
+msgid "unmute audio tracks"
+msgstr "helide taastamine"
+
+msgid "begin playback"
+msgstr "esitamise alustamine"
+
+msgid "pause playback"
+msgstr "esitamise paus"
+
+msgid "movie time scrubber"
+msgstr ""
+
+msgid "movie time scrubber thumb"
+msgstr ""
+
+msgid "seek movie back 30 seconds"
+msgstr "filmi kerimine 30 sekundit tagasi"
+
+msgid "return streaming movie to real time"
+msgstr "filmi voogedastamine reaalajas"
+
+msgid "current movie time in seconds"
+msgstr "filmi kestus sekundites"
+
+msgid "number of seconds of movie remaining"
+msgstr "filmi lõpuni jäänud sekundite arv"
+
+msgid "current movie status"
+msgstr "filmi olek"
+
+msgid "seek quickly back"
+msgstr "kiire tagasikerimine"
+
+msgid "seek quickly forward"
+msgstr "kiire edasikerimine"
+
+msgid "Play movie in fullscreen mode"
+msgstr "Filmi esitamine täisekraanvaates"
+
+msgid "start displaying closed captions"
+msgstr "alusta suletud alapealkirjade näitamist"
+
+msgid "stop displaying closed captions"
+msgstr "lõpeta suletud alapealkirjade näitamine"
+
+msgid "indefinite time"
+msgstr "umbmäärane aeg"
+
+msgid "value missing"
+msgstr "puuduv väärtus"
+
+msgid "type mismatch"
+msgstr "tüübi sobimatus"
+
+msgid "pattern mismatch"
+msgstr "mustri sobimatus"
+
+msgid "too long"
+msgstr "liiga pikk"
+
+msgid "range underflow"
+msgstr "vahemiku alatäitumus"
+
+msgid "range overflow"
+msgstr "vahemiku ületäitumus"
+
+msgid "step mismatch"
+msgstr "astme sobimatus"
diff --git a/Source/WebKit/gtk/po/gl.po b/Source/WebKit/gtk/po/gl.po
new file mode 100644
index 0000000..266f7f4
--- /dev/null
+++ b/Source/WebKit/gtk/po/gl.po
@@ -0,0 +1,1117 @@
+# Galician translation for webkit.
+# Copyright (C) 2009 webkit's COPYRIGHT HOLDER
+# This file is distributed under the same license as the webkit package.
+# Fran Diéguez <frandieguez@ubuntu.com>, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit HEAD\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-05-23 01:14+0200\n"
+"Last-Translator: Fran Diéguez <frandieguez@ubuntu.com>\n"
+"Language-Team: Galician <gnome@g11.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\\\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Subir ficheiro"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "_Métodos de entrada"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "Marca de _esquerda-a-derita [LRM]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "Marca de _dereita-a-esquerda [RLM]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "In_crustamento de esquerda-a-dereita [LRE]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "Inc_rustamento de dereita-a-esquerda [RLE]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "_Prevalencia de esquerda-a-dereita [LRO]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "Pre_valencia de dereita-a-esquerda [RLO]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "Formatadeo d_ireccional emerxente de PDF"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "Espazo de anchura _cero [ZWS]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "En_samblador de ancho cero [ZWJ]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "_Non ensamblador de anchura cero [ZWNJ]"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Insertar un carácter de control Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Solicitude de rede"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "A solicitude de rede para o URI que debe descargarse"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#| msgid "Network Request"
+msgid "Network Response"
+msgstr "Resposta de rede"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#| msgid "The network request for the URI that should be downloaded"
+msgid "The network response for the URI that should be downloaded"
+msgstr "A resposta de rede do URI que debería ser descargado"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "URI de destino"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "A URI de destino onde gardar o ficheiro"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Nome do ficheiro suxerido"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "O nome de ficheiro suxerido como predefinido ao gardar"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Progreso"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Determina o progreso actual da descarga"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Estado"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Determina o estado actual da descarga"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Tamaño actual"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "A lonxitude dos datos xa descargados"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Tamaño total"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "O tamaño total do ficheiro"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "O usuario cancelou a descarga"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "O sitio %s solicitou un nome de usuario e unha contrasinal"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Mensaxe do servidor:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Nome de usuario:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Contrasinal:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#| msgid "Remember password"
+msgid "_Remember password"
+msgstr "_Lembrar o contrasinal"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Nome"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "O nome do marco"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Título"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "O título do documento do marco"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "O URI actual dos contidos mostrados no marco"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Normativa da barra de desprazamento horizontal"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#| msgid "Determines the current progress of the download"
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr ""
+"Determina a normativa actual para a barra de desprazamento horizontal para o "
+"marco."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Normativa da barra de desprazamento vertical"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#| msgid "Determines the current progress of the download"
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr ""
+"Determina a normativa actual para a barra de desprazamento vertical para o "
+"marco."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "O título do elemento do historial"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Título alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "O título alternativo do elemento do historial"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "O URI do elemento do historial"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "URI orixinal"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "O URI orixinal do elemento do historial"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Tempo da última visita"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "O tempo no cal o elemento do historial foi visitado a última vez"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Visualización web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "A visualización web que renderiza o propio Inspector web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "URI inspeccionada"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "O URI que está sendo inspeccionada actualmente"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Activar o perfilado de JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Perfilar o JavaScript executado."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#| msgid "Enable JavaScript profiling"
+msgid "Enable Timeline profiling"
+msgstr "Activar o perfilado da Liña de tempo"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Perfilar a instrumentación de WebCore."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Razón"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "A razón pola que esta navegación está ocorrendo"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "O URI que foi solicitado como destino para a navegación"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Botón"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "O botón empregado para premer"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Estado dos modificadores"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "A máscara de bits representa o estado das teclas modificadoras"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#| msgid "The name of the frame"
+msgid "Target frame"
+msgstr "Marco de destino"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#| msgid "The URI that was requested as the target for the navigation"
+msgid "The target frame for the navigation"
+msgstr "O marco de destino para a navegación"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Codificación predefinida"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "A codificación predefinida empregada para mostrar o texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Familia de tipo de fonte cursiva"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "A familia de tipo de fonte cursiva empregado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Familia de tipo de fonte predefinida"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "A familia de fonte predefinida para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Familia de tipo de fonte Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "A familia de tipo de fonte Fantasy empregado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Familia de tipo de fonte Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "A familia de tipo de fonte predefinido empregado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Familia de tipo de fonte Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "A familia de tipo de fonte Sans Serif empregado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Familia de tipo de fonte Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "A familia de tipo de fonte Serif empregado para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Tamaño do tipo de fonte predefinido"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "O tamaño do tipo de fonte predefinido para mostrar o texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Tamaño predefinido do tipo de fonte monoespaciado"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr ""
+"O tamaño predefinido de tipo de fonte para mostrar o texto monoespaciado"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Tamaño mínimo para o tipo de fonte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Tamaño mínimo do tipo de fonte empregado para mostrar o texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "O tamaño lóxico de fonte mínimo"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "O tamaño lóxico de fonte mínimo a empregar para mostrar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Forzar 96 DPI."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Forzar unha resolución de 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Cargar imaxes automáticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Carga imaxes automaticamente."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Recortar imaxes automaticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Recorta de forma automática as imaxes para que se axusten."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Imprimir fondos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Indica se se deben imprimir as imaxes de fondo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Activar scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Activa as linguaxes de scripting incrustadas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Activar complementos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Activar os obxectos de complementos incrustados."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Áreas de texto retamañábeis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Indica se as áreas de texto son retamañábeis."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI da folla de estilos do usuario"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "O URI dunha folla de estilos que se aplica en cada páxina."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Valor de salto do zoom"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+"O valor polo cal o nivel de zoom se cambiará ao incrementar o zoom ou "
+"reducilo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Activar extras do desenvolvedor"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Activa as extensións especiais que axudan aos desenvolvedores"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Activar a navegación privada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Activa o modo privado de navegación"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Activar a corrección ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+#| msgid "Check Spelling While _Typing"
+msgid "Enables spell checking while typing"
+msgstr "Comprobar ortografía ao escribir"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Idiomas a usar na corrección ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+"Lista de separada por comas das linguaxes a usar na comprobación ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#| msgid "Enable Private Browsing"
+msgid "Enable Caret Browsing"
+msgstr "Activar a navegación cos cursores"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+"Indica se activar a navegación mellorada por teclado para a accesibilidade"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Activar a base de datos de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Indica se activar a compatibilidade de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Activar o almacenamento local de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Indica se activar a compatibilidade de almacenamento local de HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#| msgid "Enable Scripts"
+msgid "Enable XSS Auditor"
+msgstr "Activar o auditor de XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Indica se activar o auditor de XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Axente de usuario"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "A cadea User-Agent usada polo WebKitGtk"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript pode abrir xanelas automáticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Indica se JavaScript pode abrir xanelas automaticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Activar a caché de aplicativo web fóra de liña"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Indica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Comportamento de edición"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "O modo de comportamento no modo de edición"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Activar o acceso universal para os URIs de ficheiro"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Indica se permitir o acceso universal desde os URI de ficheiro"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#| msgid "Enable Scripts"
+msgid "Enable DOM paste"
+msgstr "Activar o pegado de DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Indica se activar o pegado de DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "A tecla de tabulación móvese ciclicamente a través dos elementos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+"Indica se a tecla de tabulación móvese ciclicamente a través dos elementos "
+"nunha da páxina."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Activar o menú contextual predefinido"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Activa a xestión dos clic dereitos para a creación do menú contextual "
+"predefinido"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "Activar as solucións específicas dun sitio"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Activa os arranxos de compatibilidade específicos dun sitio"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Activar a caché de páxina"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#| msgid "Whether background images should be printed."
+msgid "Whether the page cache should be used"
+msgstr "Indica se se debería usar a caché de páxina"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Autoredimentsionar a xanela"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+"Redimensionar automaticamente a xanela de nivel superior cando a páxina o "
+"solicite"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#| msgid "Enable JavaScript profiling"
+msgid "Enable Java Applet"
+msgstr "Activar os Applet de Java"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+"Indica se se debería activar a compatibilidade dos Applet de Java a través "
+"de <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Devolve o título do documento do @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Devolve o URI actual dos contidos mostrados polo @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Copiar lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"A lista de destinos para os cales esta visualización web ten compatibilidade "
+"para copiar no portarretallos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Pegar lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"A lista de destinos para os que esta visualización web ten compatibilidade "
+"para pegar no portarretallos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Configuracións"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Unha instancia de WebKitWebSettings asociada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Inspector web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "A instancia de WebKitWebInspector asociada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Editábel"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Indica se o contido pode ser modificado polo usuario"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Indica se o contido pode ter un fondo transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Nivel de zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "O nivel de zoom do contido"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Zoom de contido completo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Indica se o contido completo é escalado ao facer zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Codificación"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "A codificación predefinida para a visualización web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Codificación personalizada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "A codificación personalizada para a visualización web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "URI da icona"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "O URI do favicon para o #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Enviar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Restabelecer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Este é un índice buscábel. Insira as palabras chave de búsqueda:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Seleccionar ficheiro"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(ningún)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Abrir a ligazón nunha nova _xanela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Descargar o ficheiro ligado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Copiar a loc_alización da ligazón"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Abrir _imaxe nunha nova xanela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Gar_dar imaxe como"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Co_piar imaxe"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Abrir _marco nunha nova xanela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Recargar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignorar corrección ortográfica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "Apren_er corrección ortográfica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Buscar na web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Buscar no dicionario"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Abrir ligazón"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignorar _gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Corrección ortográfica e _gramatical"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Mostrar corrección ortográfica e gramatical"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Agochar corrección ortográfica e gramatical"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Comprobar o documento agora"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Comprobar ortografía ao _escribir"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Comprobar _gramática ao escribir"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Tipo de fonte"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Contorno"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspeccionar _elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Non hai buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Limpar as buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "termo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definición"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "premer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "seleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "activado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "desmarcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "marcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "saltar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " ficheiros"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Descoñecido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Cargando..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Retransmisión en vivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "controlador do elemento de son"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "controlador de elemento de vídeo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "enmudecer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "desenmudecer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "reproducir"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pausar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "tempo do filme"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "abrás 30 segundos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "voltar ao tempo real"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "tempo transcorrido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "tempo restante"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#| msgid "Status"
+msgid "status"
+msgstr "estado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "pantalla completa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "avance rápido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "retroceso rápido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "mostrar os subtítulos pechados"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "ocultar os subtítulos pechados"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "controis e xanela de estado de reprodución dos elementos de son"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "controis e xanela de estado de reprodución dos elementos de vídeo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "enmudecer as pistas de son"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "desenmudecer as pistas de son"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "comezar a reprodución"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "pausar a reprodución"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "buscar cara atrás no filme 30 segundos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "devolver a reprodución en vivo do filme ao tempo real"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "tempo actual do filme en segundos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "números de segundos que faltan do filme"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "estado do filme actual"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "buscar cara atrás rápidamente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "buscar cara adiante rápidamente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Reproducir o filme en pantalla completa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "comezar a mostrar os subtítulos pechados"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "parar de mostrar os subtítulos pechados"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+#| msgid "definition"
+msgid "indefinite time"
+msgstr "tempo non definido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "falta o valor"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "tipo non coincidente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "patron non coincidente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "demasiado longo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "paso non coincidente"
+
+#~ msgid "_Searchable Index"
+#~ msgstr "Índice bu_scábel"
diff --git a/Source/WebKit/gtk/po/gu.po b/Source/WebKit/gtk/po/gu.po
new file mode 100644
index 0000000..b0556e7
--- /dev/null
+++ b/Source/WebKit/gtk/po/gu.po
@@ -0,0 +1,1084 @@
+# translation of webkit.gu.po to Gujarati
+# Gujarati translations for PACKAGE package.
+# This file is put in the public domain.
+#
+# Ankitkumar Patel <ankit@redhat.com>, 2010.
+# Ankit Patel <ankit@redhat.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit.gu\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-02-23 13:54+0530\n"
+"Last-Translator: Ankit Patel <ankit@redhat.com>\n"
+"Language-Team: Gujarati <fedora-trans-gu@redhat.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "ફાઈલ અપલોડ કરો"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "ઈનપુટ પદ્ધતિઓ (_M)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM _Left-to-right mark"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM _Right-to-left mark"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Left-to-right _embedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Right-to-left e_mbedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Left-to-right _override"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Right-to-left o_verride"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Pop directional formatting"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS _Zero width space"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ Zero width _joiner"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ Zero width _non-joiner"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "યુનિકોડ નિયંત્રક અક્ષર દાખલ કરો (_I)"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "નેટવર્ક અરજી"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "જે URI ડાઉનલોડ થવી જોઈએ તે માટેની નેટવર્ક અરજી"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "નેટવર્ક પ્રત્યુત્તર"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "જે URI ડાઉનલોડ થવી જોઈએ તે માટેનો નેટવર્ક પ્રત્યુત્તર"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "અંતિમ મુકામ URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "અંતિમ મુકામ URI કે જ્યાં ફાઈલ સંગ્રહવી જોઈએ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "સૂચનીય ફાઈલનામ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "સંગ્રહતી વખતે મૂળભૂત રીતે સૂચવાયેલ ફાઈલનામ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "પ્રગતિ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "ડાઉનલોડની વર્તમાન પ્રગતિ નક્કી કરે છે"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "પરિસ્થિતિ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "ડાઉનલોડની વર્તમાન પરિસ્થિતિ નક્કી કરે છે"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "વર્તમાન માપ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "ડાઉનલોડ થયેલ માહિતીની લંબાઈ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "કુલ માપ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "ફાઈલનું કુલ માપ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "વપરાશકર્તાએ ડાઉનલોડ રદ કર્યું"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "સાઈટ %s દ્વારા વપરાશકર્તાનામ અને પાસવર્ડની અરજી કરવામાં આવી છે"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "વપરાશકર્તાનામ:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "પાસવર્ડ:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "પાસવર્ડ યાદ રાખો (_R)"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "નામ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "ચોકઠાંનું નામ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "શીર્ષક"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "ચોકઠાંનું દસ્તાવેજ શીર્ષક"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "ચોકઠાં દ્વારા દર્શાવવામાં આવેલ સમાવિષ્ટોની વર્તમાન URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "આડી સરકપટ્ટી પોલીસિ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "ચોકઠાંની આડી સરકપટ્ટી માટે વર્તમાન પોલીસિ નક્કી કરે છે."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "ઊભી સરકપટ્ટી પોલીસિ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "ચોકઠાંની ઊભી સરકપટ્ટી માટે વર્તમાન પોલીસિ નક્કી કરે છે."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "ઈતિહાસ વસ્તુનું શીર્ષક"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "વૈકલ્પિક શીર્ષક"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "ઈતિહાસ વસ્તુનું વૈકલ્પિક શીર્ષક"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "ઈતિહાસ વસ્તુની URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "મૂળ URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "ઈતિહાસ વસ્તુનું મૂળ URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "છેલ્લો મુલાકાત લેવાયેલ સમય"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "સમય કે જ્યારે ઈતિહાસ વસ્તુની છેલ્લે મુલાકાત લેવામાં આવી હતી"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "વેબ દેખાવ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "વેબ દેખાવ કે જે વેબ પરીક્ષકને પોતાને ઢાળ આપે છે"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "પરીક્ષિત URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "URI કે જેની વર્તમાનમાં પરીક્ષા કરવામાં આવી છે"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "JavaScript રૂપરેખાકરણ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "ચલાવવામાં આવેલ JavaScript ની રૂપરેખા કરો."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "સમયરેખા રૂપરેખા સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "વેબકોર ઈન્સ્ટ્રુમેન્ટેશનની રૂપરેખા કરો."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "કારણ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "કારણ કે આ શોધખોળ થઈ રહી છે"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "URI કે જેની શોધખોળના લક્ષ્ય તરીકે અરજી કરવામાં આવી હતી"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "બટન"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "ક્લિક કરવા માટેનું બટન"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "સુધારક સ્થિતિ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "સુધારક કીની સ્થિતિ રજૂ કરતું બીટમાસ્ક"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "લક્ષ્ય ચોકઠું"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "શોધખોળ માટે લક્ષ્ય ચોકઠું"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "મૂળભૂત એનકોડીંગ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "લખાણ દર્શાવવા માટેનું મૂળભૂત એનકોડીંગ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "કર્સીવ ફોન્ટ પરિવાર"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત કર્સીવ ફોન્ટ પરિવાર."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "મૂળભૂત ફોન્ટ પરિવાર"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત ફોન્ટ પરિવાર."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "ફેન્ટસી ફોન્ટ પરિવાર"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત ફોન્ટસી ફોન્ટ પરિવાર."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "મોનોસ્પેસ ફોન્ટ પરિવાર"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "મોનોસ્પેસ લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત ફોન્ટ પરિવાર."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "સાન્સ સેરીફ ફોન્ટ પરિવાર"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત સાન્સ સેરીફ ફોન્ટ પરિવાર."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "સેરીફ ફોન્ટ પરિવાર"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "લખાણ દર્શાવવા માટે વપરાતો મૂળભૂત સેરીફ ફોન્ટ પરિવાર."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "મૂળભૂત ફોન્ટ માપ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત માપ."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "મૂળભૂત મોનોસ્પેસ ફોન્ટ માપ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "મોનોસ્પેસ લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત ફોન્ટ માપ."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "ન્યૂનતમ ફોન્ટ માપ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "લખાણ દર્શાવવા માટે વપરાતું મૂળભૂત ફોન્ટ માપ."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "ન્યૂનતમ તાર્કિક ફોન્ટ માપ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "લખાણ દર્શાવવા માટેનું ન્યૂનતમ તાર્કીક ફોન્ટ માપ."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "96 DPI નું દબાણ કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "96 DPI ના રીઝોલ્યુશનનું દબાણ કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "ચિત્રો આપોઆપ લાવો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "ચિત્રો આપોઆપ લાવો."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "ચિત્રો આપોઆપ સંકોચો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "બંધબેસાડવા માટે ચિત્રો આપોઆપ સંકોચો."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "પાશ્વભાગો છાપો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "શું પાશ્વભાગ ચિત્રો છપાવા જોઈએ."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "સ્ક્રિપ્ટો સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "જડિત સ્ક્રિપ્ટીંગ ભાષાઓ સક્રિય કરો."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "પ્લગઈનો સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "જડિત પ્લગઈન ઓબ્જેક્ટો સક્રિય કરો."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "માપ બદલી શકાય તેવા લખાણ વિસ્તારો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "શું લખાણ વિસ્તારોનું માપ બદલાવી શકાય."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "વપરાશકર્તા સ્ટાઈલશીટ URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "સ્ટાઈલશીટની URI કે જે દરેક પાનાંને લાગુ પાડવામાં આવેલ છે."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "નાનામોટાપણાની પગલાંકીય કિંમત"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "જ્યારે નાનું કે મોટું કરી રહ્યા હોય ત્યારે કિંમત કે જેના પ્રમાણે નાનું કે મોટું થવું જોઈએ."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "વિકાસકર્તા ઉમેરાઓ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "વિશિષ્ટ વિસ્તરણો સક્રિય કરો કે જે વિકાસકર્તાઓને મદદરૂપ થાય"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "ખાનગી બ્રાઉઝીંગ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "ખાનગી બ્રાઉઝીંગ સ્થિતિ સક્રિય કરે છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "જોડણી ચકાસણી સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "લખતી વખતે જોડણી ચકાસણી સક્રિય કરે છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "જોડણી ચકાસણી માટે વાપરવાની ભાષાઓ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "જોડણી ચકાસણી માટે વાપરવાની ભાષાઓની અલ્પવિરામથી અલગ પડેલ યાદી"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "કેરેટ બ્રાઉઝીંગ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "શું સુલભતા ઉન્નત કીબોર્ડ શોધખોળ સક્રિય કરવી છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "HTML5 ડેટાબેઝ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "શું HTML5 ડેટાબેઝ આધાર સક્રિય કરવો છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "HTML5 સ્થાનિય સંગ્રહ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "શું HTML5 સ્થાનિય સંગ્રહ આધાર સક્રિય કરવો છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "XSS સંપાદક સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "શું XSS સંપાદક સક્રિય કરવું છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "વપરાશકર્તા એજન્ટ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "WebKitGtk દ્વારા વાપરવામાં આવતી વપરાશકર્તા-એજન્ટ શબ્દમાળા"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript વિન્ડો આપોઆપ ખોલી શકે છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "શું JavaScript વિન્ડો આપોઆપ ખોલી શકે છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "ઓફલાઈન વેબ કાર્યક્રમ કેશ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "શું ઓફલાઈન વેબ કાર્યક્રમ કેશ સક્રિય કરવી છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "સંપાદન વર્તણૂક"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "સંપાદન સ્થિતિમાં વાપરવાની વર્તણૂક સ્થિતિ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "ફાઈલ URIs માંથી સાર્વત્રિક વપરાશ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "શું ફાઈલ URIs માંથી સાર્વત્રિક વપરાશને પરવાનગી આપવી છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "DOM ચોંટાડવાનું સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "શું DOM ચોંટાડવાનું સક્રિય કરવું છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "ટેબ કી ઘટકોમાં ફરે છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "શું ટેબ કી પાનાં પરના ઘટકોમાં ફરે છે."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "મૂળભૂત સંદર્ભ મેનુ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr "મૂળભૂત સંદર્ભ મેનુની બનાવટ માટે જમણું-ક્લિકનું નિયંત્રણ સક્રિય કરે છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "સાઈટ લગતી તરકીબો સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "સાઈટ-લગતા સુગતમા ઉકેલો સક્રિય કરે છે"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "પાનાં કેશ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "શું પાનાં કેશ વપરાવું જોઈએ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "વિન્ડોનું માપ આપોઆપ બદલો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "જ્યારે પાનું તેની અરજી કરે ત્યારે ટોચસ્તરની વિન્ડોનું માપ આપોઆપ બદલો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "JavaScript રૂપરેખાકરણ સક્રિય કરો"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "@web_view's દસ્તાવેજ શીર્ષક આપે છે"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "@web_view પ્રમાણે દર્શાવવામાં આવેલ સમાવિષ્ટોની વર્તમાન URI આપે છે"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "લક્ષ્ય યાદીની નકલ કરો"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "ક્લિપબોર્ડ નકલ માટે આ વેબ દેખાવ જે લક્ષ્યોને આધાર આપે છે તેની યાદી"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "લક્ષ્ય યાદી ચોંટાડો"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "ક્લિપબોર્ડ ચોંટાડવા માટે વેબ દેખાવ આધારના લક્ષ્યની યાદી"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "સુયોજનો"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "સંકળાયેલ WebKitWebSettings વસ્તુ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "વેબ પરીક્ષક"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "સંકળાયેલ WebKitWebInspector વસ્તુ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "સંપાદકીય"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "શું વપરાશકર્તા દ્વારા સમાવિષ્ટો બદલી શકાશે"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "પારદર્શક"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "શું સમાવિષ્ટને પારદર્શક પાશ્વભાગ છે"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "નાનામોટાપણાનું સ્તર"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "સમાવિષ્ટનું નાનામોટાપણાનું સ્તર"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "સંપૂર્ણ સમાવિષ્ટ નાનામોટાપણું"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "શું નાનુંમોટું કરતી વખતે સંપૂર્ણ સમાવિષ્ટ ખેંચાય છે"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "સંગ્રહપદ્ધતિ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "વેબ દેખાવનું મૂળભૂત એનકોડીંગ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "વૈવિધ્યપૂર્ણ એનકોડીંગ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "વેબ દેખાવનું વૈવિધ્યપૂર્ણ એનકોડીંગ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "ચિહ્ન URI"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "#WebKitWebView માટે favicon માટે URI."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "જમા કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "પુનઃસુયોજીત કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "ફાઈલ પસંદ કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(કંઈ નહિં)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "નવી વિન્ડોમાં કડી ખોલો (_W)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "કડી થયેલ ફાઈલ ડાઉનલોડ કરો (_D)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "કડી સ્થાનની નકલ કરો (_a)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "નવી વિન્ડોમાં ચિત્ર ખોલો (_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "ચિત્ર આ પ્રમાણે સંગ્રહો (_v)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "ચિત્રની નકલ કરો (_y)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "ચોકઠાંને નવી વિન્ડોમાં ખોલો (_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "પુનઃલાવો (_R)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "કોઈ ધારણાઓ મળી નહિં"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "જોડણી અવગણો (_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "જોડણી શીખો (_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "વેબ શોધો (_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "શબ્દકોષમાં જુઓ (_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "કડી ખોલો (_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "વ્યાકરણ અવગણો (_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "જોડણી અને વ્યાકરણ (_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "જોડણી અને વ્યાકરણ બતાવો (_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "જોડણી અને વ્યાકરણ છુપાવો (_H)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "દસ્તાવેજ હમણાં ચકાસો (_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "લખતી વખતે જોડણી ચકાસો (_T)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "જોડણી સાથે વ્યાકરણ ચકાસો (_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "ફોન્ટ (_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "બાહ્ય રેખા (_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "ઘટકનું પરીક્ષણ કરો (_E)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "કોઈ છેલ્લી શોધો નથી"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "છેલ્લી શોધો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "છેલ્લી શોધો સાફ કરો (_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "પદ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "વ્યાખ્યા"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "દબાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "પસંદ કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "સક્રિયકૃત કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "ચકાસણી દૂર કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "ચકાસો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "કૂદો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " ફાઈલો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "અજ્ઞાત"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "લાવી રહ્યા છીએ..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "જીવંત પ્રસારણ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "અવાજ ઘટક નિયંત્રક"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "વીડિયો ઘટક નિયંત્રક"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "મૂંગુ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "મૂંગુ દૂર કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "વગાડો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "અટકાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "ચિત્રપટ સમય"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "સમયરેખા સરકપટ્ટી થમ્બ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "૩૦ સેકન્ડો પાછળ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "વાસ્તવિક સમયે જાવ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "પસાર થયેલ સમય"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "બાકી રહેલ સમય"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "પરિસ્થિતિ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "સંપૂર્ણ સ્ક્રીન"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "ઝડપી આગળ ધપાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "ઝડપી પાછા આવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "બંધ થયેલ કેપ્શનો બતાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "બંધ થયેલ કેપ્શનો છુપાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "અવાજ ઘટક વગાડવાના નિયંત્રણો અને પરિસ્થિતિ દર્શાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "વીડિયો ઘટક વગાડવાના નિયંત્રણો અને પરિસ્થિતિ દર્શાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "ઓડિયો ટ્રેક મૂંગા કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "ઓડિયો ટ્રેકનું મૂંગાપણું દૂર કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "વગાડવાનું શરૂ કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "વગાડવાનું અટકાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "ચિત્રપટ સમય સ્ક્રબર"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "ચિત્રપટ સમય સ્ક્રબર થમ્બ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "ચિત્રપટ સમય ૩૦ સેકન્ડો પાછળ લઈ જાવ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "સ્ટ્રીમીંગ ચિત્રપટને વાસ્તવિક સમયે લાવે"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "વર્તમાન ચિત્રપટ સમય સેકન્ડોમાં"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "બાકી રહેલ ચિત્રપટનો સમય સેકન્ડોમાં"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "વર્તમાન ચિત્રપટ પરિસ્થિતિ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "ઝડપથી પાછા પહોંચો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "ઝડપથી આગળ પહોંચો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "ચિત્રપટને સંપૂર્ણસ્ક્રીન પરિસ્થિતિમાં વગાડો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "બંધ કેપ્શનો દર્શાવવાનું શરૂ કરો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "બંધ કેપ્શનો દર્શાવવાનું અટકાવો"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "અવ્યાખ્યાયિત સમય"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "કિંમત ગુમ થયેલ છે"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "પ્રકાર બંધબેસતો નથી"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "ભાત બંધબેસતી નથી"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "ખૂબ લાંબુ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "range underflow"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "range overflow"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "પગલું બંધબેસતું નથી"
+
+#~ msgid "_Searchable Index"
+#~ msgstr "શોધી શકાય તેવો અનુક્રમ (_S)"
diff --git a/Source/WebKit/gtk/po/he.po b/Source/WebKit/gtk/po/he.po
new file mode 100644
index 0000000..5359feb
--- /dev/null
+++ b/Source/WebKit/gtk/po/he.po
@@ -0,0 +1,1096 @@
+# Hebrew translation for webkit.
+# Copyright (C) 2010 webkit's COPYRIGHT HOLDER
+# This file is distributed under the same license as the webkit package.
+# Gil Osher <gilosher@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit HEAD\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-02-16 18:03+0200\n"
+"Last-Translator: Gil Osher <gilosher@gmail.com>\n"
+"Language-Team: Hebrew <he@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "טען קובץ"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "שיטות _קלט"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "סימן LRM מ_שמאל לימין"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "סימן RLM מ_ימין לשמאל"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE _שיבוץ משמאל לימין"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE ש_יבוץ מימין לשמאל"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO _עקיפה משמאל לימין"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO ע_קיפה מימין לשמאל"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF ה_חזרת כיווניות"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS _רווח ברוחב אפס"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _מחבר ברוחב אפס"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ מ_בטל חיבור ברוחב אפס"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "ה_כנס תו בקרה של יוניקוד"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "בקשת רשת"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "בקשת הרשת עבור הכתובת שיש להוריד"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#, fuzzy
+msgid "Network Response"
+msgstr "בקשת רשת"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#, fuzzy
+msgid "The network response for the URI that should be downloaded"
+msgstr "בקשת הרשת עבור הכתובת שיש להוריד"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "כתובת יעד"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "כתובת היעד אליה שומרים את הקובץ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "שם קובץ מומלץ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "שם הקובץ המומלץ כברירת מחדל כאשר שומרים"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "התקדמות"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "מציין את ההתקדמות הנוכחית של ההורדה"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "מצב"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "מציין את המצב הנוכחי של ההורדה"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "גודל נוכחי"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "אורך המידע שכבר הורד"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "גודל כללי"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "הגודל הכללי של הקובץ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "משתמש ביטל את ההורדה"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "שם משתמש וסיסמה נדרשים על-ידי האתר %s"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "שם משתמש:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "סיסמה:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#, fuzzy
+msgid "_Remember password"
+msgstr "זכור את הסיסמה"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "שם"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "שם המסגרת"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "כותרת"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "כותרת המסמך של המסגרת"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "כתובת"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "הכתובת הנוכחית של התוכן המוצג במסגרת"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#, fuzzy
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "מציין את ההתקדמות הנוכחית של ההורדה"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#, fuzzy
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "מציין את ההתקדמות הנוכחית של ההורדה"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "כותרת פריט ההסטוריה"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "כותרת חלופית"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "כותרת חלופית לפריט ההסטוריה"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "כתובת פריט ההסטוריה"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "כתובת מקורית"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "הכתובת המקורית של פריט ההסטוריה"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "זמן ביקור אחרון"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "הזמן בו בוקר לאחרונה פריט ההסטוריה"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "תצוגת Web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "תצוגת ה Web שמחולל בוחן ה Web בעצמו"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "כתובת נבחנת"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "הכתובת שנבנחנת כרגע"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "אפשר אפיון JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "מאפיין את ה JavaScript המורץ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "אפשר אפיון JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "סיבה"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "הסיבה מדוע ניווט זה מתרחש"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "הכתובת שנדרשה כמטרת הניווט"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "כפתור"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "הכפתור ששימש ללחיצה"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "מצב מקשי הבקרה"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "מסכת סיביות המייצגת את המצב של מקשי הבקרה"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#, fuzzy
+msgid "Target frame"
+msgstr "שם המסגרת"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "הכתובת שנדרשה כמטרת הניווט"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "קידוד ברירת מחדל"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "קידוד ברירת המחדל להצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "משפחת הגופנים מסוג Cursive"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "משפחת הגופנים מסוג Cursive ברירת מחדל המשמשים להצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "משפחת גופנים ברירת מחדל"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "משפחת הגופנים לשימוש בהצגת טקסט כברירת מחדל."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "משפחת הגופנים מסוג Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "משפחת הגופנים מסוג Fantasy ברירת מחדל המשמשים להצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "משפחת הגופנים מסוג Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "משפחת הגופנים מסוג Monospace ברירת מחדל המשמשים להצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "משפחת הגופנים מסוג Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "משפחת הגופנים מסוג Sans Serif ברירת מחדל המשמשים להצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "משפחת הגופנים מסוג Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "משפחת הגופנים מסוג Serif ברירת מחדל המשמשים להצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "גודל גופן ברירת מחדל"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "גודל הגופן לשימוש בהצגת טקסט כברירת מחדל."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "גודל גופן Monospace ברירת מחדל"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "גודל גופן ברירת מחדל לשימוש בהצגת טקסט בגופן Monospace."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "גודל גופן מינימאלי"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "גודל הגופן המינימאלי לשימוש בהצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "גודל גופן לוגי מינימאלי"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "גודל הגופן הלוגי המינימאלי לשימוש בהצגת טקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "הכרח 96 נקודות לאינץ'"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "הכרח רזולוציה של 96 נקודות לאינץ'"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "טען תמונות אוטומטית"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "טוען תמונות אוטומטית."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "כווץ תמונות אוטומטית"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "אוטומטית מכווץ תמונות בודדות על-מנת שיתאימו."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "הדפס רקעים"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "האם תמונות הרקע צריכות להיות מודפסות."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "אפשר תסריטים"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "אפשר שפות תסריטים מוטבעות"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "אפשר תוספים"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "אפשר אובייקטי תוסף מוטבעים."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "אזורי טקסט שניתן לשנות את גודלם"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "האם לאפשר את שינוי הגודל של אזורי הטקסט."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "כתבות גיליון הסגנון של המשתמש"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "כתובת גיליון הסגנון שמוחל על כל עמוד."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "ערך צעדי הקירוב"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "הערך בו רמת הקירוב משתנה כאשר מתקרבים או מתרחקים."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "אפשר תוספות למפתחים"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "מאפשר תוספות מיוחדות שיעזרו למפתחים"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "אפשר גלישה פרטית"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "מאפשר את מצב הגלישה הפרטית"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+#, fuzzy
+msgid "Enables spell checking while typing"
+msgstr "בדוק איות בזמן ה_קלדב"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#, fuzzy
+msgid "Enable Caret Browsing"
+msgstr "אפשר גלישה פרטית"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#, fuzzy
+msgid "Enable XSS Auditor"
+msgstr "אפשר תסריטים"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#, fuzzy
+msgid "Enable DOM paste"
+msgstr "אפשר תסריטים"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#, fuzzy
+msgid "Whether the page cache should be used"
+msgstr "האם תמונות הרקע צריכות להיות מודפסות."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "אפשר אפיון JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "מחזיר את כותרת המסמך של @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "מחזיר את הכתובת הנוכחית של התוכן המוצג על-ידי @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "העתק רשימת יעדים"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "רשימת היעדים בהם תצוגת ה-Web תומכת להעתקה ללוח"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "הדבק רשימת יעדים"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "רשימת היעדים בהם תצוגת ה-Web תומכת להדבקה מהלוח"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "הגדרות"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "מופע WebKitWebSettings משויך"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "בוחן Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "מופע ה-WebKitWebInspector המשויך"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "ניתן לעריכה"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "האם התוכן יכול להשתנות על-ידי המשתמש"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "שקוף"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "האם לתוכן יש רקע שקוף"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "רמת קירוב"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "רמת הקירוב של התוכן"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "קירוב תוכן מלא"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "האם התוכן המלא מתרחב כאשר מתקרבים"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "קידוד"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "הקידוד ברירת המחדל של תצוגת ה-Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "קידוד מותאם אישית"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "הקידוד המותאם אישית של תצוגת ה-Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "שלח"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "נקה"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "בחר קובץ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(ללא)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "פתח קישור בח_לון חדש"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_הורד קובץ קשור"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "העתק את _מיקום הקישור"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "פתח _תמונה בחלון חדש"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "_שמור תמונה בשם"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "ה_עתק תמונה"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "פתח מ_סגרת בחלון חדש"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_טען מחדש"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "לא נמצאו ניחושים"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "ה_תעלם מאיות"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_למד איות"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_חפש ב-Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "חפ_ש במילון"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_פתח קישור"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "התעלם מ_דקדוק"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "איות ו_דקדוק"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "ה_צג איות ודקדוק"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "ה_סתר איות ודקדוק"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_בדוק מסמך כעת"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "בדוק איות בזמן ה_קלדב"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "בדוק _דקדוק בזמן הקלדה"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_גופן"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "ה_דגשה"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "בחן _אלמנט"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "אין חיפושים אחרונים"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "חיפושים אחרונים"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_נקה חיפושים אחרונים"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "מושג"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "הגדרה"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "לחץ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "בחר"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "הפעל"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "בטל סימון"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "סמן"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "קפוץ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " קבצים"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "לא ידוע"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#, fuzzy
+msgid "status"
+msgstr "מצב"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+#, fuzzy
+msgid "indefinite time"
+msgstr "הגדרה"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
+
+#~ msgid "_Searchable Index"
+#~ msgstr "אינקדס ניתן ל_חיפוש"
diff --git a/Source/WebKit/gtk/po/it.po b/Source/WebKit/gtk/po/it.po
new file mode 100644
index 0000000..6d6f0ac
--- /dev/null
+++ b/Source/WebKit/gtk/po/it.po
@@ -0,0 +1,1171 @@
+# This is the Italian locale translation for WebKitGtk
+# Copyright (C) 2009 Free Software Foundation, Inc.
+# Luca Ferretti <lferrett@gnome.org>, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: WebKitGtk\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-03-18 22:13+0100\n"
+"Last-Translator: Luca Ferretti <lferrett@gnome.org>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Carica file"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Met_odi di input"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM - Contrassegno _sinistra-destra"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM - Contrassegno _destra-sinistra"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE - _Inserimento sinistra-destra"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE - I_nserimento destra-sinistra"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO - _Forza sinistra-destra"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO - F_orza destra-sinistra"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF - Ca_ttura formattazione direzionale"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS - Spa_zio a larghezza nulla"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ - Spazio di _unione a larghezza nulla"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ - Spazio non di unione a _larghezza nulla"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "Inserisci carattere di controllo _Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Richiesta di rete"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "La richiesta di rete per l'URI che dovrebbe essere scaricato"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Risposta di rete"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "La risposta di rete per l'URI che dovrebbe essere scaricato"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "URI di destinazione"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "L'URI di destinazione in cui salvare il file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Nome file suggerito"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Il nome di file suggerito come predefinito quando si salva"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Avanzamento"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Determina l'avanzamento corrente dello scaricamento"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Stato"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Determina lo stato corrente dello scaricamento"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Dimensione corrente"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "La lunghezza dei dati già scaricati"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Dimensione totale"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "La dimensione totale del file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "L'utente ha annullato lo scaricamento"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Il sito %s richiede un nome utente e una password"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Messaggio del server:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Nome utente:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Password:"
+
+# checkbox
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "_Ricordare la password"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Nome"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Il nome della cornice"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Titolo"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Il titolo del documento nella cornice"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "L'URI corrente del contenuto mostrato dalla cornice"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Politica barra scorrimento orizzontale"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr ""
+"Determina la politica attuale per la barra di scorrimento orizzontale della "
+"cornice."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Politica barra scorrimento verticale"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr ""
+"Determina la politica attuale per la barra di scorrimento verticale del "
+"cornice."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Il titolo dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Titolo alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Il titolo alternativo dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "L'URI dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "URI originale"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "L'URI originale dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Data ultima visita"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr ""
+"La data in cui l'elemento di cronologia è stato visitato l'ultima volta"
+
+# lasciato non tradotto perchè termine interno di WebKitGtk
+# cfr http://webkitgtk.org/reference/webkitgtk-WebKitWebInspector.html#WebKitWebInspector--web-view
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Web View"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "La Web View che esegue il rendering dell'Ispettore web stesso"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "URI ispezionato"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "L'URI che attualmente è ispezionato"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Abilita profiling JavaScript"
+
+# FIXME
+# oppure Esegue il profiling?
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Traccia un profilo del codice JavaScript eseguito."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Abilita profiling Timeline"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Traccia un profilo della strumentazione WebCore."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Motivo"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Il motivo per cui questa navigazione si sta verificando"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "L'URI che è stata richiesta come destinazione della navigazione"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Pulsante"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Il pulsante usato per fare clic"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Stato modificatori"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Una maschera di bit che rappresenta lo stato dei tasti modificatori"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Cornice destinazione"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "La cornice di destinazione per la navigazione"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Codifica predefinita"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "La codifica predefinita usata per mostrare il testo."
+
+# NdT: in questa e nelle seguenti è usata le seguente convenzione
+# * nella "breve" si usa carattere, nella "lunga" tipo di carattere
+# * nella "breve" si lascia la forma inglese (es. sans serif) nella lunga
+# si mette la forma italiana (es. senza grazie)
+# Ciò per mantenere corte le "brevi" e per permettere che entrambe le diciture siano presenti
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Famiglia carattere corsivo"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr ""
+"La famiglia del tipo di carattere \"corsivo\" predefinito usata per mostrare "
+"il testo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Famiglia carattere predefinita"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr ""
+"La famiglia del tipo di carattere predefinito usata per mostrare il testo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Famiglia carattere fantasia"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr ""
+"La famiglia del tipo di carattere \"fantasia\" predefinito usata per "
+"mostrare il testo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Famiglia carattere monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr ""
+"La famiglia del tipo di carattere predefinito usata per mostrare il testo a "
+"spaziatura fissa."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Famiglia carattere sans serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+"La famiglia del tipo di carattere \"senza grazie\" predefinito usata per "
+"mostrare il testo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Famiglia carattere serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr ""
+"La famiglia del tipo di carattere \"con grazie\" predefinito usata per "
+"mostrare il testo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Dimensione predefinita carattere"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr ""
+"La dimensione predefinita per il tipo di carattere usato per mostrare il "
+"testo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Dimensione predefinita carattere monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr ""
+"La dimensione predefinita per il tipo di carattere usato per mostrare il "
+"testo a larghezza fissa."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Dimensione minima carattere"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr ""
+"La dimensione minima per il tipo di carattere usato per mostrare il testo."
+
+# Dalla documentazione apple per WebKit.framwork
+#
+# The font size for a web view is different than its logical font size. The minimum logical font
+# size, for example, is the absolute minimum size at which the font will display onscreen. This is
+# meant to be a functional boundary and not a style boundary. For example, the default value for a
+# web view’s minimum logical font size is 9 points, because typical web content looks good on
+# Mac OS X at font sizes of 9 point and above. The constraint assures that web content will always
+# look good in a web view. If you know that your content will look good only at 12 points or
+# above, you should change the minimum font size to 12 points and leave the minimum logical font
+# size alone. This will assure that your content will never display at sizes less than 12 points,
+# but the functional font size boundary of the web view will remain at 9 points to prevent any
+# chance of displaying unnecessarily small text.
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Dimensione minima naturale carattere"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr ""
+"La dimensione minima naturale per il tipo di carattere usato per mostrare il "
+"testo."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Forza 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Forza la risoluzione a 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Caricamento automatico immagini"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Carica le immagini in modo automatico."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Restringimento automatico immagini"
+
+# assolutamente libertario
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Restringe automaticamente le immagini singole alla dimensione adatta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Stampa sfondi"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Indica se le immagini di sfondo devono essere stampate."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Abilita script"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Abilita i linguaggi di scripting incorporati."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Abilita plugin"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Abilita gli oggetti plugin incorporati."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Aree testo ridimensionabili"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Indica se le aree di testo sono ridimensionabili."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI foglio stile utente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "L'URI di un foglio di stile che è applicato a ogni pagina."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Valore passo ingrandimento"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+"Il valore di variazione del livello di ingrandimento quando si aumenta o "
+"riduce l'ingrandimento."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Abilita extra per sviluppatori"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Abilita estensioni speciali che sono d'aiuto per gli sviluppatori"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Abilita navigazione privata"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Abilita la modalità di navigazione privata"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Abilita controllo ortografico"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Abilita il controllo ortografico durante la digitazione"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Lingue da usare per controllo ortografico"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+"Elenco separato da virgole delle lingue da usare per il controllo ortografico"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Abilita navigazione con cursore"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+"Indica se abilitare la navigazione da tastiera ottimizzata per "
+"l'accessibilità"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Abilita Database HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Indica se abilitare il supporto ai database di HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Abilita Local Storage HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Indica se abilitare il supporto a local storage di HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Abilita auditor XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Indica se abilitare l'auditor XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "User Agent"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "La stringa User-Agent usata da WebKitGtk"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript può aprire automatamente le fineste"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Indica se JavaScript può aprire automatamente le fineste"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Abilita cache per applicazioni web fuori rete"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Indica se abilitare la cache per le applicazioni web fuori rete"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Comportamento editing"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "La modalità di comportamento da usare in modalità editing"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Abilita accesso univesale dagli URI di file"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Indica se abilitare l'accesso univesale dagli URI di file"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Abilita DOM pasting"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Indica se abilitare il DOM pasting"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Tasto TAB per passare tra gli elementi"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+"Indica se il tasto TAB permette di passare ciclicamente tra gli elementi "
+"della pagina."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Abilita menù contestuale predefinito"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Abilita la gestione dei clic destri per la creazione del menù contestuale "
+"predefinito"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "Abilita scappatoie specifiche per siti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+"Abilita delle correzioni di compatibilità specifiche per determinati siti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Abilita la cache di pagina"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Indica se usare la cache delle pagine"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Ridimensionamento automatico finestra"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+"Ridimensiona automaticamente la finestra di livello principale quando "
+"richiesto da una pagina"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Abilita applet Java"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Indica se abilitare il supporto alle applet Java attraverso <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Restituisce il titolo del documento di @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Restituisce l'URI attuale del contenuto mostrato dalla @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Copia elenco destinazioni"
+
+# ma ha senso??
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"L'elenco di destinazioni che questa vista web supporta per copiare negli "
+"appunti"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Incolla elenco destinazioni"
+
+# ma ha senso??
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"L'elenco di destinazioni che questa vista web supporta per incollare dagli "
+"appunti"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Un'istanza WebKitWebSettings associata"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Ispettore web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "L'istanza WebKitWebInspector associata"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Modificabile"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Indica se il contenuto può essere modificato dall'utente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Trasparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Indica se il contenuto ha uno sfondo trasparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Livello ingrandimento"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Il livello di ingrandimento del contenuto"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Ingrandimento intero contenuto"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Indica se all'ingrandimento viene scalato l'intero contenuto"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Codifica"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "La codifica predefinita della vista web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Codifica personalizzata"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "La codifica personalizzata della vista web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "URI di icona"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "L'URI per la favicon della #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Invia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Azzera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+"Questo indice consente ricerche. Inserire la parole chiave da cercare: "
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Scelta file"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Nessuno)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Apri collegamento in nuova _finestra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Scarica file collegato"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Copia _posizione collegamento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Apri _immagine in nuova finestra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Sal_va immagine come"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Copia i_mmagine"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Apri c_ornice in nuova finestra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "A_ggiorna"
+
+# omesso Found
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Nessun suggerimento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignora ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "A_pprendi ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Cerca nel web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "Consu_lta dizionario"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Apri collegamento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignora _grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Ortografia e _grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Mostra ortografia e grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Nascondi ortografia e grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Controlla documento ora"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Controlla ortografia durante _digitazione"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Controlla _grammatica con ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Tipo di carattere"
+
+# È riferita alla funzione contextMenuItemTagOutline()
+# che appare assieme ad altre per bold, italic e underline.
+# Le traduzioni di questi ultimi tre effetti per i font è presa
+# dalle GTK_STOCK (_Grassetto, _Corsivo, _Sottolineato)
+# Usato Co_ntorno come in OpenOffice.org
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "Co_ntorno"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Ispeziona _elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Nessuna ricerca recente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Ricerche recenti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "Pu_lisci ricerche recenti"
+
+# String AXDefinitionListTermText()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "termine"
+
+# String AXDefinitionListDefinitionText()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definizione"
+
+# String AXButtonActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "premi"
+
+# String AXRadioButtonActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "seleziona"
+
+# String AXTextFieldActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "attiva"
+
+# String AXCheckedCheckBoxActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "togli spunta"
+
+# String AXUncheckedCheckBoxActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "metti spunta"
+
+# String AXLinkActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "salta"
+
+# String multipleFileUploadText(unsigned numberOfFiles)
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " file"
+
+# String unknownFileSizeText()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Sconosciuta"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Caricamento..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Diffusione live"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "controllore elemento audio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "controllore elemento video"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "escludi audio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "abilita audio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "riproduci"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pausa"
+
+# name == "Slider"
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "tempo filmato"
+
+# name == "SliderThumb"
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "cursore dello scorrevole per linea temporale"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "indietro 30 secondi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "ritorna a tempo effettivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "tempo trascorso"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "tempo rimanente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "stato"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "schermo intero"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "avanti veloce"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "indietro veloce"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "mostra sottotitoli"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "nascondi sottotitoli"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "controlli di riproduzione e visualizzazione stato di elementi audio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "controlli di riproduzione e visualizzazione stato di elementi video"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "escludi tracce audio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "abilita tracce audio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "inizia la riproduzione"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "mette in pausa la riproduzione"
+
+# non so se è corretto... per induzione dovrebbe
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "cambia con trascinamento il tempo del filmato"
+
+# non so se è corretto... per induzione dovrebbe
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "cursore per cambiare con trascinamento il tempo del filmato"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "posiziona il filmato indietro di 30 secondi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "riporta il filmato in streaming al tempo reale"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "tempo corrente del filmato in secondi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "numero di secondi rimanenti del filmato"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "stato attuale del filmato"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "posiziona indietro rapidamente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "posiziona avanti rapidamente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Riproduce il filmato in modalità schermo intero"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "avvia la visualizzazione dei sottotitoli"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "interrompe la visualizzazione dei sottotitoli"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "tempo indefinito"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "valore mancante"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "discrepanza di tipo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "discrepanza di modello"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "troppo lungo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "superamento limite inferiore dell'intervallo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "superamento limite superiore dell'intervallo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "discrepanza di passo"
diff --git a/Source/WebKit/gtk/po/ko.po b/Source/WebKit/gtk/po/ko.po
new file mode 100644
index 0000000..4d45f18
--- /dev/null
+++ b/Source/WebKit/gtk/po/ko.po
@@ -0,0 +1,1382 @@
+# Korean translation for webkit.
+# This file is distributed under the same license as the webkit package.
+#
+# Changwoo Ryu <cwryu@debian.org>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit HEAD\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org\n"
+"POT-Creation-Date: 2010-09-22 03:26+0000\n"
+"PO-Revision-Date: 2010-09-26 00:38+0900\n"
+"Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
+"Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
+"Language: Korean\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: ../WebCoreSupport/ChromeClientGtk.cpp:569
+msgid "Upload File"
+msgstr "파일 업로드"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "Input _Methods"
+msgstr "입력기(_M)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM 왼쪽에서-오른쪽으로 표시(_L)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM 오른쪽에서-왼쪽으로 표시(_R)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE 왼쪽에서-오른쪽으로 임베딩(_E)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE 오른쪽에서-왼쪽으로 임베딩(_M)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO 왼쪽에서-오른쪽으로 번복(_O)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO 오른쪽에서-왼쪽으로 번복(_V)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF 방향 형식 팝(pop)하기(_P)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS 너비 0 공백(_Z)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ 너비 0 결합(_J)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ 너비 0 결합 금지(_N)"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Insert Unicode Control Character"
+msgstr "유니코드 제어 문자 넣기(_I)"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1140
+msgid "Load request cancelled"
+msgstr "읽어들이기 요청 취소"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1146
+msgid "Not allowed to use restricted network port"
+msgstr "제한된 네트워크 포트 사용을 허용하지 않습니다"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1152
+msgid "URL cannot be shown"
+msgstr "URL를 표시할 수 없습니다"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1158
+msgid "Frame load was interrupted"
+msgstr "프레임 읽어들이기가 중지되었습니다"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1164
+msgid "Content with the specified MIME type cannot be shown"
+msgstr "지정한 MIME 형식의 컨텐트를 표시할 수 없습니다"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1170
+msgid "File does not exist"
+msgstr "파일이 없습니다"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1176
+msgid "Plugin will handle load"
+msgstr "플러그인이 읽어들이기를 처리합니다"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:386
+msgid "Play"
+msgstr "재생"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:388
+msgid "Pause"
+msgstr "일시 중지"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:534
+msgid "Play / Pause"
+msgstr "재생 / 일시 중지"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:534
+msgid "Play or pause the media"
+msgstr "미디어를 재생 또는 일시 중지합니다"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:542
+msgid "Time:"
+msgstr "시간:"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:566
+msgid "Exit Fullscreen"
+msgstr "전체 화면 끝내기"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:566
+msgid "Exit from fullscreen mode"
+msgstr "전체 화면 모드 끝내기"
+
+#: ../webkit/webkitdownload.cpp:272
+msgid "Network Request"
+msgstr "네트워크 요청"
+
+#: ../webkit/webkitdownload.cpp:273
+msgid "The network request for the URI that should be downloaded"
+msgstr "다운로드할 URI의 네트워크 요청"
+
+#: ../webkit/webkitdownload.cpp:287
+msgid "Network Response"
+msgstr "네트워크 응답"
+
+#: ../webkit/webkitdownload.cpp:288
+msgid "The network response for the URI that should be downloaded"
+msgstr "다운로드할 URI의 네트워크 응답"
+
+#: ../webkit/webkitdownload.cpp:302
+msgid "Destination URI"
+msgstr "저장 URI"
+
+#: ../webkit/webkitdownload.cpp:303
+msgid "The destination URI where to save the file"
+msgstr "파일을 저장할 위치의 URI"
+
+#: ../webkit/webkitdownload.cpp:317
+msgid "Suggested Filename"
+msgstr "파일 이름 제안"
+
+#: ../webkit/webkitdownload.cpp:318
+msgid "The filename suggested as default when saving"
+msgstr "저장할 때 기본으로 제안할 파일 이름"
+
+#: ../webkit/webkitdownload.cpp:335
+msgid "Progress"
+msgstr "진행률"
+
+#: ../webkit/webkitdownload.cpp:336
+msgid "Determines the current progress of the download"
+msgstr "다운로드의 현재 진행률"
+
+#: ../webkit/webkitdownload.cpp:349
+msgid "Status"
+msgstr "상태"
+
+#: ../webkit/webkitdownload.cpp:350
+msgid "Determines the current status of the download"
+msgstr "다운로드의 현재 상태"
+
+#: ../webkit/webkitdownload.cpp:365
+msgid "Current Size"
+msgstr "현재 크기"
+
+#: ../webkit/webkitdownload.cpp:366
+msgid "The length of the data already downloaded"
+msgstr "지금까지 다운로드한 데이터의 길이"
+
+#: ../webkit/webkitdownload.cpp:380
+msgid "Total Size"
+msgstr "전체 크기"
+
+#: ../webkit/webkitdownload.cpp:381
+msgid "The total size of the file"
+msgstr "파일의 전체 크기"
+
+#: ../webkit/webkitdownload.cpp:533
+msgid "User cancelled the download"
+msgstr "사용자가 다운로드를 취소했습니다"
+
+#: ../webkit/webkithittestresult.cpp:148
+msgid "Context"
+msgstr "컨텍스트"
+
+#: ../webkit/webkithittestresult.cpp:149
+msgid "Flags indicating the kind of target that received the event."
+msgstr "이벤트를 받는 대상의 종류를 나타내는 플래그."
+
+#: ../webkit/webkithittestresult.cpp:163
+msgid "Link URI"
+msgstr "링크 URI"
+
+#: ../webkit/webkithittestresult.cpp:164
+msgid "The URI to which the target that received the event points, if any."
+msgstr "이벤트 포인트를 받는 대상의 URI (있다면)."
+
+#: ../webkit/webkithittestresult.cpp:177
+msgid "Image URI"
+msgstr "그림 URI"
+
+#: ../webkit/webkithittestresult.cpp:178
+msgid ""
+"The URI of the image that is part of the target that received the event, if "
+"any."
+msgstr "이벤트를 받는 대상에 들어 있는 그림 URI (있다면)."
+
+#: ../webkit/webkithittestresult.cpp:191
+msgid "Media URI"
+msgstr "미디어 URI"
+
+#: ../webkit/webkithittestresult.cpp:192
+msgid ""
+"The URI of the media that is part of the target that received the event, if "
+"any."
+msgstr "이벤트를 받는 대상에 들어 있는 미디어 URI (있다면)."
+
+#: ../webkit/webkithittestresult.cpp:213
+msgid "Inner node"
+msgstr "내부 노드"
+
+#: ../webkit/webkithittestresult.cpp:214
+msgid "The inner DOM node associated with the hit test result."
+msgstr "히트 테스트 결과와 관련된 내부 DOM 노드."
+
+#: ../webkit/webkitnetworkrequest.cpp:136
+#: ../webkit/webkitnetworkresponse.cpp:134 ../webkit/webkitwebframe.cpp:315
+#: ../webkit/webkitwebhistoryitem.cpp:178 ../webkit/webkitwebresource.cpp:126
+#: ../webkit/webkitwebview.cpp:2603
+msgid "URI"
+msgstr "URI"
+
+#: ../webkit/webkitnetworkrequest.cpp:137
+msgid "The URI to which the request will be made."
+msgstr "요청을 할 URI."
+
+#: ../webkit/webkitnetworkrequest.cpp:150
+#: ../webkit/webkitnetworkresponse.cpp:148
+msgid "Message"
+msgstr "메시지"
+
+#: ../webkit/webkitnetworkrequest.cpp:151
+msgid "The SoupMessage that backs the request."
+msgstr "요청이 들어 있는 SoupMessage."
+
+#: ../webkit/webkitnetworkresponse.cpp:135
+msgid "The URI to which the response will be made."
+msgstr "응답을 할 URI."
+
+#: ../webkit/webkitnetworkresponse.cpp:149
+msgid "The SoupMessage that backs the response."
+msgstr "응답이 들어 있는 SoupMessage."
+
+#: ../webkit/webkitsecurityorigin.cpp:151
+msgid "Protocol"
+msgstr "프로토콜"
+
+#: ../webkit/webkitsecurityorigin.cpp:152
+msgid "The protocol of the security origin"
+msgstr "보안 원본의 프로토콜"
+
+#: ../webkit/webkitsecurityorigin.cpp:165
+msgid "Host"
+msgstr "호스트"
+
+#: ../webkit/webkitsecurityorigin.cpp:166
+msgid "The host of the security origin"
+msgstr "보안 원본의 호스트"
+
+#: ../webkit/webkitsecurityorigin.cpp:179
+msgid "Port"
+msgstr "포트"
+
+#: ../webkit/webkitsecurityorigin.cpp:180
+msgid "The port of the security origin"
+msgstr "보안 원본의 포트"
+
+#: ../webkit/webkitsecurityorigin.cpp:193
+msgid "Web Database Usage"
+msgstr "웹 데이터베이스 사용"
+
+#: ../webkit/webkitsecurityorigin.cpp:194
+msgid "The cumulative size of all web databases in the security origin"
+msgstr "보안 원본의 웹 데이터베이스 총 크기"
+
+#: ../webkit/webkitsecurityorigin.cpp:206
+msgid "Web Database Quota"
+msgstr "웹 데이터베이스 제한 용량"
+
+#: ../webkit/webkitsecurityorigin.cpp:207
+msgid "The web database quota of the security origin in bytes"
+msgstr "보안 원본의 웹 데이터베이스 제한 용량, 바이트 단위"
+
+#: ../webkit/webkitsoupauthdialog.c:251
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "사용자 이름과 암호를 %s 사이트에서 요청했습니다"
+
+#: ../webkit/webkitsoupauthdialog.c:281
+msgid "Server message:"
+msgstr "서버 메시지:"
+
+#: ../webkit/webkitsoupauthdialog.c:294
+msgid "Username:"
+msgstr "사용자 이름:"
+
+#: ../webkit/webkitsoupauthdialog.c:296
+msgid "Password:"
+msgstr "암호:"
+
+#: ../webkit/webkitsoupauthdialog.c:305
+msgid "_Remember password"
+msgstr "암호 저장(_R)"
+
+#: ../webkit/webkitwebdatabase.cpp:176
+msgid "Security Origin"
+msgstr "보안 원본"
+
+#: ../webkit/webkitwebdatabase.cpp:177
+msgid "The security origin of the database"
+msgstr "데이터베이스의 보안 원본"
+
+#: ../webkit/webkitwebdatabase.cpp:190 ../webkit/webkitwebframe.cpp:301
+msgid "Name"
+msgstr "이름"
+
+#: ../webkit/webkitwebdatabase.cpp:191
+msgid "The name of the Web Database database"
+msgstr "웹 데이터베이스의 이름"
+
+#: ../webkit/webkitwebdatabase.cpp:204
+msgid "Display Name"
+msgstr "표시할 이름"
+
+#: ../webkit/webkitwebdatabase.cpp:205
+msgid "The display name of the Web Storage database"
+msgstr "웹 저장 데이터베이스의 표시할 이름"
+
+#: ../webkit/webkitwebdatabase.cpp:218
+msgid "Expected Size"
+msgstr "예상 크기"
+
+#: ../webkit/webkitwebdatabase.cpp:219
+msgid "The expected size of the Web Database database"
+msgstr "웹 데이터베이스의 예상 크기"
+
+#: ../webkit/webkitwebdatabase.cpp:231
+msgid "Size"
+msgstr "크기"
+
+#: ../webkit/webkitwebdatabase.cpp:232
+msgid "The current size of the Web Database database"
+msgstr "웹 데이터베이스의 현재 크기"
+
+#: ../webkit/webkitwebdatabase.cpp:244
+msgid "Filename"
+msgstr "파일 이름"
+
+#: ../webkit/webkitwebdatabase.cpp:245
+msgid "The absolute filename of the Web Storage database"
+msgstr "웹 저장 데이터베이스의 절대 경로 파일 이름"
+
+#: ../webkit/webkitwebframe.cpp:302
+msgid "The name of the frame"
+msgstr "프레임의 이름"
+
+#: ../webkit/webkitwebframe.cpp:308 ../webkit/webkitwebhistoryitem.cpp:146
+#: ../webkit/webkitwebview.cpp:2589
+msgid "Title"
+msgstr "제목"
+
+#: ../webkit/webkitwebframe.cpp:309
+msgid "The document title of the frame"
+msgstr "프레임의 문서 제목"
+
+#: ../webkit/webkitwebframe.cpp:316
+msgid "The current URI of the contents displayed by the frame"
+msgstr "현재 프레임이 표시하는 내용의 URI"
+
+#: ../webkit/webkitwebframe.cpp:347
+msgid "Horizontal Scrollbar Policy"
+msgstr "가로 스크롤 막대 정책"
+
+#: ../webkit/webkitwebframe.cpp:348
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "프레임의 가로 스크롤 막대에 대한 현재 정책."
+
+#: ../webkit/webkitwebframe.cpp:365
+msgid "Vertical Scrollbar Policy"
+msgstr "세로 스크롤 막대 정책"
+
+#: ../webkit/webkitwebframe.cpp:366
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "프레임의 세로 스크롤 막대에 대한 현재 정책."
+
+#: ../webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "기록 항목의 제목"
+
+#: ../webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "다른 제목"
+
+#: ../webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "기록 항목의 다른 제목"
+
+#: ../webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "기록 항목의 URI"
+
+#: ../webkit/webkitwebhistoryitem.cpp:194
+#: ../webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "원래 URI"
+
+#: ../webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "기록 항목의 원래 URI"
+
+#: ../webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "최근 방문 시각"
+
+#: ../webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "기록 항목을 최근 방문한 시각"
+
+#: ../webkit/webkitwebinspector.cpp:269
+msgid "Web View"
+msgstr "웹 뷰"
+
+#: ../webkit/webkitwebinspector.cpp:270
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "웹 점검 자체를 렌더링할 웹 뷰"
+
+#: ../webkit/webkitwebinspector.cpp:283
+msgid "Inspected URI"
+msgstr "점검할 URI"
+
+#: ../webkit/webkitwebinspector.cpp:284
+msgid "The URI that is currently being inspected"
+msgstr "현재 점검하고 있는 URI"
+
+#: ../webkit/webkitwebinspector.cpp:300
+msgid "Enable JavaScript profiling"
+msgstr "자바스크립트 프로파일링 사용"
+
+#: ../webkit/webkitwebinspector.cpp:301
+msgid "Profile the executed JavaScript."
+msgstr "실행하는 자바스크립트를 프로파일링합니다."
+
+#: ../webkit/webkitwebinspector.cpp:316
+msgid "Enable Timeline profiling"
+msgstr "시간별 프로파일링 사용"
+
+#: ../webkit/webkitwebinspector.cpp:317
+msgid "Profile the WebCore instrumentation."
+msgstr "WebCore 기능을 프로파일링합니다."
+
+#: ../webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "이유"
+
+#: ../webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "이 네비게이션이 이루어지는 이유"
+
+#: ../webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "네비게이션의 대상으로 요청한 URI"
+
+#: ../webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "단추"
+
+#: ../webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "마우스로 누를 수 있는 단추"
+
+#: ../webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "조합키 상태"
+
+#: ../webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "조합키 상태를 나타내는 비트마스크"
+
+#: ../webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "대상 프레임"
+
+#: ../webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "네비게이션 대상 프레임"
+
+#: ../webkit/webkitwebresource.cpp:127
+msgid "The uri of the resource"
+msgstr "자원의 URI"
+
+#: ../webkit/webkitwebresource.cpp:141
+msgid "MIME Type"
+msgstr "MIME 형식"
+
+#: ../webkit/webkitwebresource.cpp:142
+msgid "The MIME type of the resource"
+msgstr "자원의 MIME 형식"
+
+#: ../webkit/webkitwebresource.cpp:156 ../webkit/webkitwebview.cpp:2724
+msgid "Encoding"
+msgstr "인코딩"
+
+#: ../webkit/webkitwebresource.cpp:157
+msgid "The text encoding name of the resource"
+msgstr "자원의 텍스트 인코딩 이름"
+
+#: ../webkit/webkitwebresource.cpp:172
+msgid "Frame Name"
+msgstr "프레임 이름"
+
+#: ../webkit/webkitwebresource.cpp:173
+msgid "The frame name of the resource"
+msgstr "자원의 프레임 이름"
+
+#: ../webkit/webkitwebsettings.cpp:247
+msgid "Default Encoding"
+msgstr "기본 인코딩"
+
+#: ../webkit/webkitwebsettings.cpp:248
+msgid "The default encoding used to display text."
+msgstr "글을 표시할 때 사용할 기본 인코딩."
+
+#: ../webkit/webkitwebsettings.cpp:256
+msgid "Cursive Font Family"
+msgstr "필기체 글꼴 계열"
+
+#: ../webkit/webkitwebsettings.cpp:257
+msgid "The default Cursive font family used to display text."
+msgstr "글을 표시할 때 사용할 기본 필기체 글꼴 계열."
+
+#: ../webkit/webkitwebsettings.cpp:265
+msgid "Default Font Family"
+msgstr "기본 글꼴 계열"
+
+#: ../webkit/webkitwebsettings.cpp:266
+msgid "The default font family used to display text."
+msgstr "글을 표시할 때 사용할 기본 글꼴 계열."
+
+#: ../webkit/webkitwebsettings.cpp:274
+msgid "Fantasy Font Family"
+msgstr "고어체 글꼴 계열"
+
+#: ../webkit/webkitwebsettings.cpp:275
+msgid "The default Fantasy font family used to display text."
+msgstr "글을 표시할 때 사용할 기본 고어체 글꼴 계열."
+
+#: ../webkit/webkitwebsettings.cpp:283
+msgid "Monospace Font Family"
+msgstr "고정폭 글꼴 계열"
+
+#: ../webkit/webkitwebsettings.cpp:284
+msgid "The default font family used to display monospace text."
+msgstr "글을 표시할 때 사용할 기본 고정폭 글꼴 계열."
+
+#: ../webkit/webkitwebsettings.cpp:292
+msgid "Sans Serif Font Family"
+msgstr "돋움체 글꼴 계열"
+
+#: ../webkit/webkitwebsettings.cpp:293
+msgid "The default Sans Serif font family used to display text."
+msgstr "글을 표시할 때 사용할 기본 돋움체 글꼴 계열."
+
+#: ../webkit/webkitwebsettings.cpp:301
+msgid "Serif Font Family"
+msgstr "바탕체 글꼴 계열"
+
+#: ../webkit/webkitwebsettings.cpp:302
+msgid "The default Serif font family used to display text."
+msgstr "글을 표시할 때 사용할 기본 바탕체 글꼴 계열."
+
+#: ../webkit/webkitwebsettings.cpp:310
+msgid "Default Font Size"
+msgstr "기본 글꼴 크기"
+
+#: ../webkit/webkitwebsettings.cpp:311
+msgid "The default font size used to display text."
+msgstr "글을 표시할 때 사용할 기본 글꼴 크기."
+
+#: ../webkit/webkitwebsettings.cpp:319
+msgid "Default Monospace Font Size"
+msgstr "기본 고정폭 글꼴 크기"
+
+#: ../webkit/webkitwebsettings.cpp:320
+msgid "The default font size used to display monospace text."
+msgstr "글을 표시할 때 사용할 기본 고정폭 글꼴 크기."
+
+#: ../webkit/webkitwebsettings.cpp:328
+msgid "Minimum Font Size"
+msgstr "최소 글꼴 크기"
+
+#: ../webkit/webkitwebsettings.cpp:329
+msgid "The minimum font size used to display text."
+msgstr "글을 표시할 때 사용할 최소 글꼴 크기."
+
+#: ../webkit/webkitwebsettings.cpp:337
+msgid "Minimum Logical Font Size"
+msgstr "최소 논리적 글꼴 크기"
+
+#: ../webkit/webkitwebsettings.cpp:338
+msgid "The minimum logical font size used to display text."
+msgstr "글을 표시할 때 사용할 최소 논리적 글꼴 크기."
+
+#: ../webkit/webkitwebsettings.cpp:357
+msgid "Enforce 96 DPI"
+msgstr "96 DPI 강제"
+
+#: ../webkit/webkitwebsettings.cpp:358
+msgid "Enforce a resolution of 96 DPI"
+msgstr "해상도를 96 DPI로 강제"
+
+#: ../webkit/webkitwebsettings.cpp:366
+msgid "Auto Load Images"
+msgstr "그림 읽어들이기 자동"
+
+#: ../webkit/webkitwebsettings.cpp:367
+msgid "Load images automatically."
+msgstr "자동으로 그림을 읽어들입니다."
+
+#: ../webkit/webkitwebsettings.cpp:375
+msgid "Auto Shrink Images"
+msgstr "그림 축소 자동"
+
+#: ../webkit/webkitwebsettings.cpp:376
+msgid "Automatically shrink standalone images to fit."
+msgstr "자동으로 그림을 축소해서 크기에 맞춥니다."
+
+#: ../webkit/webkitwebsettings.cpp:384
+msgid "Print Backgrounds"
+msgstr "배경 그림 인쇄"
+
+#: ../webkit/webkitwebsettings.cpp:385
+msgid "Whether background images should be printed."
+msgstr "배경 그림을 인쇄할지 여부."
+
+#: ../webkit/webkitwebsettings.cpp:393
+msgid "Enable Scripts"
+msgstr "스크립트 사용"
+
+#: ../webkit/webkitwebsettings.cpp:394
+msgid "Enable embedded scripting languages."
+msgstr "내장 스크립트 언어를 사용합니다."
+
+#: ../webkit/webkitwebsettings.cpp:402
+msgid "Enable Plugins"
+msgstr "플러그인 사용"
+
+#: ../webkit/webkitwebsettings.cpp:403
+msgid "Enable embedded plugin objects."
+msgstr "내장 플러그인 오브젝트를 사용합니다."
+
+#: ../webkit/webkitwebsettings.cpp:411
+msgid "Resizable Text Areas"
+msgstr "글 입력란 크기 조정 가능"
+
+#: ../webkit/webkitwebsettings.cpp:412
+msgid "Whether text areas are resizable."
+msgstr "글 입력란이 크기 조정 가능한지 여부."
+
+#: ../webkit/webkitwebsettings.cpp:419
+msgid "User Stylesheet URI"
+msgstr "사용자 설정 스타일시트 URI"
+
+#: ../webkit/webkitwebsettings.cpp:420
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "모든 페이지에 적용할 스타일시트의 URI."
+
+#: ../webkit/webkitwebsettings.cpp:435
+msgid "Zoom Stepping Value"
+msgstr "확대/축소 단계 값"
+
+#: ../webkit/webkitwebsettings.cpp:436
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "확대나 축소할 때마다 바꿀 단계 값."
+
+#: ../webkit/webkitwebsettings.cpp:454
+msgid "Enable Developer Extras"
+msgstr "개발자 추가 기능 사용"
+
+#: ../webkit/webkitwebsettings.cpp:455
+msgid "Enables special extensions that help developers"
+msgstr "개발자에게 도움이 되는 특수 추가 기능을 사용합니다"
+
+#: ../webkit/webkitwebsettings.cpp:475
+msgid "Enable Private Browsing"
+msgstr "사생활 보호 기능 사용"
+
+#: ../webkit/webkitwebsettings.cpp:476
+msgid "Enables private browsing mode"
+msgstr "사생활 보호 브라우저 모드를 사용합니다"
+
+#: ../webkit/webkitwebsettings.cpp:491
+msgid "Enable Spell Checking"
+msgstr "맞춤법 검사 사용"
+
+#: ../webkit/webkitwebsettings.cpp:492
+msgid "Enables spell checking while typing"
+msgstr "입력할 때 맞춤법 검사 기능을 사용합니다"
+
+#: ../webkit/webkitwebsettings.cpp:515
+msgid "Languages to use for spell checking"
+msgstr "맞춤법 검사에 사용할 언어"
+
+#: ../webkit/webkitwebsettings.cpp:516
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "맞춤법 검사에 사용할 언어의 목록, 쉼표로 구분"
+
+#: ../webkit/webkitwebsettings.cpp:530
+msgid "Enable Caret Browsing"
+msgstr "캐럿 모드 사용"
+
+#: ../webkit/webkitwebsettings.cpp:531
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "키보드 네비게이션 기능을 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:546
+msgid "Enable HTML5 Database"
+msgstr "HTML5 데이터베이스 사용"
+
+#: ../webkit/webkitwebsettings.cpp:547
+msgid "Whether to enable HTML5 database support"
+msgstr "HTML5 데이터베이스 기능을 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:562
+msgid "Enable HTML5 Local Storage"
+msgstr "HTML5 로컬 저장 공간 사용"
+
+#: ../webkit/webkitwebsettings.cpp:563
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "HTML5 로컬 저장 공간 기능을 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:577
+msgid "Enable XSS Auditor"
+msgstr "XSS 검사 기능 사용"
+
+#: ../webkit/webkitwebsettings.cpp:578
+msgid "Whether to enable the XSS auditor"
+msgstr "XSS 검사 기능을 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:596
+msgid "Enable Spatial Navigation"
+msgstr "스페이셜 네비게이션 사용"
+
+#: ../webkit/webkitwebsettings.cpp:597
+#, fuzzy
+msgid "Whether to enable Spatial Navigation"
+msgstr "스페이셜 네비게이션을 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:614
+msgid "User Agent"
+msgstr "User Agent"
+
+#: ../webkit/webkitwebsettings.cpp:615
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "WebKitGtk에서 사용할 User-Agent 문자열"
+
+#: ../webkit/webkitwebsettings.cpp:630
+msgid "JavaScript can open windows automatically"
+msgstr "자바스크립트에서 창을 열 수 있음"
+
+#: ../webkit/webkitwebsettings.cpp:631
+msgid "Whether JavaScript can open windows automatically"
+msgstr "자바스크립트에서 창을 열 수 있는지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:645
+msgid "JavaScript can access Clipboard"
+msgstr "자바스크립트에서 클립보드 접근 가능"
+
+#: ../webkit/webkitwebsettings.cpp:646
+msgid "Whether JavaScript can access Clipboard"
+msgstr "자바스크립트에서 클립보드를 열 수 있는지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:662
+msgid "Enable offline web application cache"
+msgstr "오프라인 웹 프로그램 캐시 사용"
+
+#: ../webkit/webkitwebsettings.cpp:663
+msgid "Whether to enable offline web application cache"
+msgstr "오프라인 웹 프로그램 캐시를 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:690
+msgid "Editing behavior"
+msgstr "편집 방식"
+
+#: ../webkit/webkitwebsettings.cpp:691
+msgid "The behavior mode to use in editing mode"
+msgstr "편집 모드에서 사용할 방식"
+
+#: ../webkit/webkitwebsettings.cpp:707
+msgid "Enable universal access from file URIs"
+msgstr "file URI에서 일반 접근 사용"
+
+#: ../webkit/webkitwebsettings.cpp:708
+msgid "Whether to allow universal access from file URIs"
+msgstr "file URI에서 일반 접근을 허용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:723
+msgid "Enable DOM paste"
+msgstr "DOM 붙여넣기 사용"
+
+#: ../webkit/webkitwebsettings.cpp:724
+msgid "Whether to enable DOM paste"
+msgstr "DOM 붙여넣기를 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:742
+msgid "Tab key cycles through elements"
+msgstr "Tab 키로 엘리먼트 돌아보기"
+
+#: ../webkit/webkitwebsettings.cpp:743
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Tab 키로 페이지의 엘리먼트 돌아보는지 여부."
+
+#: ../webkit/webkitwebsettings.cpp:763
+msgid "Enable Default Context Menu"
+msgstr "기본 팝업 메뉴 사용"
+
+#: ../webkit/webkitwebsettings.cpp:764
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr "오른쪽 마우스 단추를 누를 때 기본 팝업 메뉴를 사용합니다"
+
+#: ../webkit/webkitwebsettings.cpp:784
+msgid "Enable Site Specific Quirks"
+msgstr "사이트별 특수 처리 사용"
+
+#: ../webkit/webkitwebsettings.cpp:785
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "사이트별 호환성 회피 기능 사용"
+
+#: ../webkit/webkitwebsettings.cpp:807
+msgid "Enable page cache"
+msgstr "페이지 캐시 사용"
+
+#: ../webkit/webkitwebsettings.cpp:808
+msgid "Whether the page cache should be used"
+msgstr "페이지 캐시를 사용할지 여부"
+
+#: ../webkit/webkitwebsettings.cpp:828
+msgid "Auto Resize Window"
+msgstr "자동 창 크기 조절"
+
+#: ../webkit/webkitwebsettings.cpp:829
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "페이지가 요청하면 자동으로 최상위의 창 크기를 조정합니다."
+
+#: ../webkit/webkitwebsettings.cpp:861
+msgid "Enable Java Applet"
+msgstr "자바 애플릿 사용"
+
+#: ../webkit/webkitwebsettings.cpp:862
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "<applet>을 통한 자바 애플릿 기능을 사용할지 여부"
+
+#: ../webkit/webkitwebview.cpp:2590
+msgid "Returns the @web_view's document title"
+msgstr "@web_view의 문서 제목을 리턴합니다"
+
+#: ../webkit/webkitwebview.cpp:2604
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "web_view에서 표시하는 내용의 현재 URI를 리턴합니다"
+
+#: ../webkit/webkitwebview.cpp:2617
+msgid "Copy target list"
+msgstr "복사 대상 목록"
+
+#: ../webkit/webkitwebview.cpp:2618
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "이 웹 뷰가 클립보드 복사에 지원하는 대상 목록"
+
+#: ../webkit/webkitwebview.cpp:2631
+msgid "Paste target list"
+msgstr "붙여넣기 대상 목록"
+
+#: ../webkit/webkitwebview.cpp:2632
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "이 웹 뷰가 클립보드 붙여넣기에 지원하는 대상 목록"
+
+#: ../webkit/webkitwebview.cpp:2638
+msgid "Settings"
+msgstr "설정"
+
+#: ../webkit/webkitwebview.cpp:2639
+msgid "An associated WebKitWebSettings instance"
+msgstr "관련 WebKitWebSettings 인스턴스"
+
+#: ../webkit/webkitwebview.cpp:2652
+msgid "Web Inspector"
+msgstr "웹 점검"
+
+#: ../webkit/webkitwebview.cpp:2653
+msgid "The associated WebKitWebInspector instance"
+msgstr "관련 WebKitWebInspector 인스턴스"
+
+#: ../webkit/webkitwebview.cpp:2673
+msgid "Editable"
+msgstr "편집 가능"
+
+#: ../webkit/webkitwebview.cpp:2674
+msgid "Whether content can be modified by the user"
+msgstr "사용자가 페이지 내용을 바꿀 수 있는지 여부"
+
+#: ../webkit/webkitwebview.cpp:2680
+msgid "Transparent"
+msgstr "투명"
+
+#: ../webkit/webkitwebview.cpp:2681
+msgid "Whether content has a transparent background"
+msgstr "페이지 내용에 투명 배경이 있는지 여부"
+
+#: ../webkit/webkitwebview.cpp:2694
+msgid "Zoom level"
+msgstr "확대/축소 단계"
+
+#: ../webkit/webkitwebview.cpp:2695
+msgid "The level of zoom of the content"
+msgstr "페이지 내용의 확대/축소 단계"
+
+#: ../webkit/webkitwebview.cpp:2710
+msgid "Full content zoom"
+msgstr "전체 내용 확대/축소"
+
+#: ../webkit/webkitwebview.cpp:2711
+msgid "Whether the full content is scaled when zooming"
+msgstr "확대/축소할 때 전체 내용의 크기를 조절할지 여부"
+
+#: ../webkit/webkitwebview.cpp:2725
+msgid "The default encoding of the web view"
+msgstr "웹 뷰의 기본 인코딩"
+
+#: ../webkit/webkitwebview.cpp:2738
+msgid "Custom Encoding"
+msgstr "사용자 설정 인코딩"
+
+#: ../webkit/webkitwebview.cpp:2739
+msgid "The custom encoding of the web view"
+msgstr "웹 뷰의 사용자 설정 인코딩"
+
+#: ../webkit/webkitwebview.cpp:2791
+msgid "Icon URI"
+msgstr "아이콘 URI"
+
+#: ../webkit/webkitwebview.cpp:2792
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "#WebKitWebView 사용할 파비콘 URI."
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Submit"
+msgstr "제출"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "Reset"
+msgstr "초기화"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "검색이 가능한 인덱스입니다. 검색어를 입력하십시오: "
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "Choose File"
+msgstr "파일 선택"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "(None)"
+msgstr "(없음)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "Open Link in New _Window"
+msgstr "새 창에서 링크 열기(_W)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "_Download Linked File"
+msgstr "링크한 파일 다운로드(_D)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Copy Link Loc_ation"
+msgstr "링크 위치 복사(_A)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Open _Image in New Window"
+msgstr "새 창에서 그림 열기(_I)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Sa_ve Image As"
+msgstr "그림을 다른 이름으로 저장(_V)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Cop_y Image"
+msgstr "그림 복사(_Y)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:116
+msgid "Open _Video in New Window"
+msgstr "새 창에서 영상 열기(_V)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:121
+msgid "Open _Audio in New Window"
+msgstr "새 창에서 오디오 열기(_A)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:126
+msgid "Cop_y Video Link Location"
+msgstr "영상 링크 위치 복사(_Y)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:131
+msgid "Cop_y Audio Link Location"
+msgstr "오디오 링크 위치 복사(_Y)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:136
+msgid "_Toggle Media Controls"
+msgstr "미디어 조정판 토글(_T)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:141
+msgid "Toggle Media _Loop Playback"
+msgstr "미디어 반복 재생 토글(_L)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:146
+msgid "Switch Video to _Fullscreen"
+msgstr "영상을 전체 화면으로 전환(_F)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:151
+msgid "_Play"
+msgstr "재생(_P)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:156
+msgid "_Pause"
+msgstr "일시 중지(_P)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:161
+msgid "_Mute"
+msgstr "묵음(_M)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "Open _Frame in New Window"
+msgstr "프레임을 새 창에서 열기(_F)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:217
+msgid "_Reload"
+msgstr "다시 읽기(_R)"
+
+# 맞춤법
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "No Guesses Found"
+msgstr "예상 단어 없음"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Ignore Spelling"
+msgstr "맞춤법 무시(_I)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:244
+msgid "_Learn Spelling"
+msgstr "맞춤법 추가(_L)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:249
+msgid "_Search the Web"
+msgstr "웹 검색(_S)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:254
+msgid "_Look Up in Dictionary"
+msgstr "사전에서 찾아보기(_L)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:259
+msgid "_Open Link"
+msgstr "링크 열기(_O)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:264
+msgid "Ignore _Grammar"
+msgstr "문법 무시(_G)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:269
+msgid "Spelling and _Grammar"
+msgstr "맞춤법/문법(_G)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:274
+msgid "_Show Spelling and Grammar"
+msgstr "맞춤법/문법 보이기(_S)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:274
+msgid "_Hide Spelling and Grammar"
+msgstr "맞춤법/문법 숨기기(_H)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:279
+msgid "_Check Document Now"
+msgstr "지금 문서 검사(_C)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:284
+msgid "Check Spelling While _Typing"
+msgstr "입력할 때 맞춤법 검사(_T)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:289
+msgid "Check _Grammar With Spelling"
+msgstr "맞춤법과 같이 문법 검사(_G)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:294
+msgid "_Font"
+msgstr "글꼴(_F)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "_Outline"
+msgstr "외곽선(_O)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "Inspect _Element"
+msgstr "엘리먼트 검사(_E)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:327
+msgid "No recent searches"
+msgstr "최근 검색 없음"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:332
+msgid "Recent searches"
+msgstr "최근 검색"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:337
+msgid "_Clear recent searches"
+msgstr "최근 검색 지우기(_C)"
+
+# 사전
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid "term"
+msgstr "용어"
+
+# 사전
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "definition"
+msgstr "설명"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:352
+msgid "press"
+msgstr "누르기"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:357
+msgid "select"
+msgstr "선택"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:362
+msgid "activate"
+msgstr "활성화"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:367
+msgid "uncheck"
+msgstr "표시 해제"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:372
+msgid "check"
+msgstr "표시"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "jump"
+msgstr "이동"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:392
+msgid "Missing Plug-in"
+msgstr "플러그인 없음"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:398
+msgid "Plug-in Failure"
+msgstr "플러그인 실패"
+
+#. FIXME: If this file gets localized, this should really be localized as one string with a wildcard for the number.
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:404
+msgid " files"
+msgstr " 파일"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "Unknown"
+msgstr "알 수 없음"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:414
+#, c-format
+msgctxt "Title string for images"
+msgid "%s (%dx%d pixels)"
+msgstr "%s (%dx%d 픽셀)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "Loading..."
+msgstr "읽어들이는 중..."
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:431
+msgid "Live Broadcast"
+msgstr "생방송"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:437
+msgid "audio element controller"
+msgstr "오디오 엘리먼트 조정"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:439
+msgid "video element controller"
+msgstr "비디오 엘리먼트 조정"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:441
+msgid "mute"
+msgstr "묵음"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:443
+msgid "unmute"
+msgstr "묵음 해제"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:445
+msgid "play"
+msgstr "재생"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:447
+msgid "pause"
+msgstr "일시 중지"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:449
+msgid "movie time"
+msgstr "동영상 시간"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:451
+msgid "timeline slider thumb"
+msgstr "시간별 슬라이드 표시"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:453
+msgid "back 30 seconds"
+msgstr "뒤로 30초"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:455
+msgid "return to realtime"
+msgstr "실제 시간으로 돌아가기"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:457
+msgid "elapsed time"
+msgstr "지난 시간"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:459
+msgid "remaining time"
+msgstr "남은 시간"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "status"
+msgstr "상태"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:463
+msgid "fullscreen"
+msgstr "전체 화면"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:465
+msgid "fast forward"
+msgstr "빨리 앞으로"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:467
+msgid "fast reverse"
+msgstr "빨리 뒤로"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:469
+msgid "show closed captions"
+msgstr "자막 보이기"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:471
+msgid "hide closed captions"
+msgstr "자막 감추기"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:480
+msgid "audio element playback controls and status display"
+msgstr "오디오 엘리먼트 재생 조정 및 상태 표시"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:482
+msgid "video element playback controls and status display"
+msgstr "비디오 엘리먼트 재생 조정 및 상태 표시"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:484
+msgid "mute audio tracks"
+msgstr "오디오 트랙 묵음"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:486
+msgid "unmute audio tracks"
+msgstr "오디오 트랙 묵음 해제"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:488
+msgid "begin playback"
+msgstr "재생 시작"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:490
+msgid "pause playback"
+msgstr "재생 일시 중지"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:492
+msgid "movie time scrubber"
+msgstr "동영상 시간 표시"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:494
+msgid "movie time scrubber thumb"
+msgstr "동영상 시간 표시 자"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:496
+msgid "seek movie back 30 seconds"
+msgstr "동영상을 뒤로 30초 이동"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:498
+msgid "return streaming movie to real time"
+msgstr "스트리밍 동영상을 실제 시간으로 돌아가기"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:500
+msgid "current movie time in seconds"
+msgstr "현재 동영상 시간, 초 단위"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "number of seconds of movie remaining"
+msgstr "남은 동영상 시간, 초 단위"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:504
+msgid "current movie status"
+msgstr "현재 동영상 상태"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:506
+msgid "seek quickly back"
+msgstr "빠르게 뒤 위치로 이동"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:508
+msgid "seek quickly forward"
+msgstr "빠르게 앞 위치로 이동"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:510
+msgid "Play movie in fullscreen mode"
+msgstr "전체 화면 모드에서 동영상 재생"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "start displaying closed captions"
+msgstr "자막 표시 시작"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:514
+msgid "stop displaying closed captions"
+msgstr "자막 표시 중지"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:523
+msgid "indefinite time"
+msgstr "시간 미지정"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:553
+msgid "value missing"
+msgstr "값 없음"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:559
+msgid "type mismatch"
+msgstr "타입 불일치"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:564
+msgid "pattern mismatch"
+msgstr "패턴 불일치"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:569
+msgid "too long"
+msgstr "너무 깁니다"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:574
+msgid "range underflow"
+msgstr "범위 언더플로우"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:579
+msgid "range overflow"
+msgstr "범위 오버플로우"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:584
+msgid "step mismatch"
+msgstr "단계 불일치"
diff --git a/Source/WebKit/gtk/po/lt.po b/Source/WebKit/gtk/po/lt.po
new file mode 100644
index 0000000..fd449a2
--- /dev/null
+++ b/Source/WebKit/gtk/po/lt.po
@@ -0,0 +1,1082 @@
+# Lithuanian translation for WebKit GTK.
+# This file is put in the public domain.
+# Rimas Kudelis <rq@akl.lt>, 2009, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.4\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-16 15:01-0200\n"
+"PO-Revision-Date: 2010-02-26 20:07+0300\n"
+"Last-Translator: Rimas Kudelis <rq@akl.lt>\n"
+"Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n"
+"Language: lt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Virtaal 0.5.2\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Failo išsiuntimas"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Įvesties _metodai"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "Krypties iš _kairės į dešinę ženklas (LRM)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "Krypties iš _dešinės į kairę ženklas (RLM)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "Į_terpimo iš kairės į dešinę ženklas (LRE)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "Įt_erpimo iš dešinės į kairę ženklas (RLE)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "_Perdengiantis iš kairės į dešinę ženklas (LRO)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "Pe_rdengiantis iš dešinės į kairę ženklas (RLO)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "_Ankstesnio lygmens krypties ženklas (PDF)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "_Nulinio pločio tarpas (ZWS)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "Nulinio pločio _jungimo ženklas (ZWJ)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "Nulinio pločio _skėlimo ženklas (ZWNJ)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "Įterpti unikodo valdymo ženklą"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:262
+msgid "Network Request"
+msgstr "Tinklo užklausa"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:263
+msgid "The network request for the URI that should be downloaded"
+msgstr ""
+"Tinklo užklausa parsiųstino failo universaliajam ištekliaus identifikatoriui "
+"(URI)"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:277
+msgid "Network Response"
+msgstr "Tinklo atsakas"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:278
+msgid "The network response for the URI that should be downloaded"
+msgstr ""
+"Tinklo atsakas į užklausą parsiųstino failo universaliajam ištekliaus "
+"identifikatoriui (URI)"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:292
+msgid "Destination URI"
+msgstr "Paskirties URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:293
+msgid "The destination URI where to save the file"
+msgstr "Paskirties failo universalusis ištekliaus identifikatorius (URI)"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:307
+msgid "Suggested Filename"
+msgstr "Siūlomas failo vardas"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "The filename suggested as default when saving"
+msgstr "Numatytasis siūlomas įrašomo failo vardas"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "Progress"
+msgstr "Progresas"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:326
+msgid "Determines the current progress of the download"
+msgstr "Nurodo esamą atsiuntimo progresą"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Status"
+msgstr "Būsena"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "Determines the current status of the download"
+msgstr "Nurodo esamą atsiuntimo būseną"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:355
+msgid "Current Size"
+msgstr "Esamasis dydis"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:356
+msgid "The length of the data already downloaded"
+msgstr "Jau parsiųstų duomenų kiekis"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:370
+msgid "Total Size"
+msgstr "Visas dydis"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:371
+msgid "The total size of the file"
+msgstr "Visas failo dydis"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:522
+msgid "User cancelled the download"
+msgstr "Naudotojas atsisakė siuntimo"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Svetainei %s reikalingas naudotojo vardas ir slaptažodis"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr "Naudotojo vardas:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Slaptažodis:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:280
+msgid "_Remember password"
+msgstr "Įsi_minti slaptažodį"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Pavadinimas"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Kadro pavadinimas"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2315
+msgid "Title"
+msgstr "Antraštė"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Kadre atverto tinklalapio pavadinimas"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2329
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr ""
+"Kadre atverto tinklalapio universalusis ištekliaus identifikatorius (URI)"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Horizontalios slinkties juostos taisyklės"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Taisyklės, taikomos kadro horizontaliai slinkties juostai."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Vertikalios slinkties juostos taisyklės"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Taisyklės, taikomos kadro vertikaliai slinkties juostai."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Žurnalo įrašo pavadinimas"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Alternatyvus pavadinimas"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Alternatyvus žurnalo įrašo pavadinimas"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "Žurnalo įrašo universalusis ištekliaus identifikatorius (URI)"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Pirminis URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Pirminis žurnalo įrašo universalusis ištekliaus identifikatorius (URI)"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Paskutinis apsilankymas"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Paskutinio apsilankymo data ir laikas"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Žiniatinklio rodinys"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Žiniatinklio rodinys, rodantis žiniatinklio analizatorių"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Analizuojamas URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr ""
+"Šiuo metu analizuojamo failo universalusi ištekliaus identifikatorius (URI)"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Įjungti „JavaScript“ profiliavimą"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Profiliuoti vykdomą „JavaScript“ kodą."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Įjungti chronologinį profiliavimą"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Profiliuoti „WebCore“ instrumentuotę."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Priežastis"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Tinklalapio atvėrimo priežastis"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+"Mėginamo atverti tinklalapio universalusis ištekliaus identifikatorius (URI)"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Mygtukas"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Mygtukas, kurį galima paspausti"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Modifikatorių būsena"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Bitų kaukė, atspindinti modifikavimo klavišų būseną"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Paskirties kadras"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Kadras, kuriame tinklalapis turi būti atvertas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:233
+msgid "Default Encoding"
+msgstr "Numatytoji koduotė"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:234
+msgid "The default encoding used to display text."
+msgstr "Numatytoji teksto koduotė."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:242
+msgid "Cursive Font Family"
+msgstr "Rankraštinių šriftų šeima"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:243
+msgid "The default Cursive font family used to display text."
+msgstr "Numatytoji tekstui atvaizduoti naudojama rankraštinių šriftų šeima."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:251
+msgid "Default Font Family"
+msgstr "Numatytoji šriftų šeima"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:252
+msgid "The default font family used to display text."
+msgstr "Numatytoji tekstui atvaizduoti naudojama šriftų šeima."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:260
+msgid "Fantasy Font Family"
+msgstr "Dekoratyvių šriftų šeima"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:261
+msgid "The default Fantasy font family used to display text."
+msgstr "Numatytoji tekstui atvaizduoti naudojama dekoratyvių šriftų šeima."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:269
+msgid "Monospace Font Family"
+msgstr "Lygiapločių šriftų šeima"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:270
+msgid "The default font family used to display monospace text."
+msgstr "Numatytoji tekstui atvaizduoti naudojama lygiapločių šriftų šeima"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:278
+msgid "Sans Serif Font Family"
+msgstr "Šriftų be užraitų šeima"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:279
+msgid "The default Sans Serif font family used to display text."
+msgstr "Numatytoji tekstui atvaizduoti naudojama šriftų be užraitų šeima."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:287
+msgid "Serif Font Family"
+msgstr "Šriftų su užraitais šeima"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:288
+msgid "The default Serif font family used to display text."
+msgstr "Numatytoji tekstui atvaizduoti naudojama šriftų su užraitais šeima."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:296
+msgid "Default Font Size"
+msgstr "Numatytasis šrifto dydis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:297
+msgid "The default font size used to display text."
+msgstr "Numatytasis tekstui atvaizduoti naudojamo šrifto dydis."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:305
+msgid "Default Monospace Font Size"
+msgstr "Numatytasis lygiapločio šrifto dydis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:306
+msgid "The default font size used to display monospace text."
+msgstr "Numatytasis tekstui atvaizduoti naudojamo lygiapločio šrifto dydis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:314
+msgid "Minimum Font Size"
+msgstr "Minimalus šrifto dydis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:315
+msgid "The minimum font size used to display text."
+msgstr "Mažiausias leistinas tekstui atvaizduoti naudojamo šrifto dydis."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:323
+msgid "Minimum Logical Font Size"
+msgstr "Minimalus loginis šrifto dydis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:324
+msgid "The minimum logical font size used to display text."
+msgstr ""
+"Mažiausias leistinas tekstui atvaizduoti naudojamo šrifto loginis dydis."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:343
+msgid "Enforce 96 DPI"
+msgstr "Naudoti 96 tašk./colyje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:344
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Priverstinai naudoti 96 tašk./colyje skiriamąją gebą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:352
+msgid "Auto Load Images"
+msgstr "Įkelti paveikslus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:353
+msgid "Load images automatically."
+msgstr "Automatiškai įkelti paveikslus."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:361
+msgid "Auto Shrink Images"
+msgstr "Mažinti paveikslus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:362
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automatiškai mažinti pavienius paveikslus, kad sutilptų į langą."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:370
+msgid "Print Backgrounds"
+msgstr "Spausdinti foną"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:371
+msgid "Whether background images should be printed."
+msgstr "Ar spausdinti fono piešinius."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:379
+msgid "Enable Scripts"
+msgstr "Įjungti scenarijus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:380
+msgid "Enable embedded scripting languages."
+msgstr "Įjungti įtaisytuosius scenarijus."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:388
+msgid "Enable Plugins"
+msgstr "Įjungti papildinius"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:389
+msgid "Enable embedded plugin objects."
+msgstr "Įjungti įtaisytuosius papildinius."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:397
+msgid "Resizable Text Areas"
+msgstr "Keičiamo dydžio teksto laukai"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:398
+msgid "Whether text areas are resizable."
+msgstr "Ar leisti keisti teksto laukų dydį."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:405
+msgid "User Stylesheet URI"
+msgstr "Naudotojo stiliaus aprašo URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:406
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+"Visiems tinklalapiams taikytino naudotojo stiliaus aprašo failo "
+"universalusis ištekliaus identifikatorius (URI)."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:421
+msgid "Zoom Stepping Value"
+msgstr "Mastelio keitimo žingsnis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:422
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Žingsnis, kuriuo keičiamas mastelis, jį didinant ar mažinant."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:440
+msgid "Enable Developer Extras"
+msgstr "Įjungti programuotojų įrankius"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:441
+msgid "Enables special extensions that help developers"
+msgstr "Įjungti specialius tinklalapių programuotojams skirtus įrankius"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:461
+msgid "Enable Private Browsing"
+msgstr "Įjungti privatųjį naršymą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:462
+msgid "Enables private browsing mode"
+msgstr "Įjungti privačiojo naršymo veikseną"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:477
+msgid "Enable Spell Checking"
+msgstr "Tikrinti rašybą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:478
+msgid "Enables spell checking while typing"
+msgstr "Įjungti rašybos tikrinimą renkant tekstą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:501
+msgid "Languages to use for spell checking"
+msgstr "Rašybos tikrinimo kalbos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:502
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Kableliais atskirtas kalbų, kurių rašybą reikia tikrinti, sąrašas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:516
+msgid "Enable Caret Browsing"
+msgstr "Visuomet įjungti teksto žymeklį"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:517
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "Ar įjungti teksto fragmentų žymėjimą klaviatūra"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:532
+msgid "Enable HTML5 Database"
+msgstr "Įjungti HTML5 duomenų bazę"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:533
+msgid "Whether to enable HTML5 database support"
+msgstr "Ar įjungti HTML5 duomenų bazės palaikymą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:548
+msgid "Enable HTML5 Local Storage"
+msgstr "Įjungti HTML5 vietinę saugyklą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:549
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Ar įjungti HTML5 vietinės saugyklos palaikymą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:563
+msgid "Enable XSS Auditor"
+msgstr "Įjungti XSS auditavimą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:564
+msgid "Whether to enable teh XSS auditor"
+msgstr "Ar įjungti XSS auditavimą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:582
+msgid "User Agent"
+msgstr "Naudotojo agentas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:583
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "„User-Agent“ eilutė, kurią „WebKitGtk“ turėtų naudoti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:598
+msgid "JavaScript can open windows automatically"
+msgstr "Leisti „JavaScript“ atverti langus automatiškai"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:599
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Ar „JavaScript“ leidžiama atverti langus automatiškai"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:614
+msgid "Enable offline web application cache"
+msgstr "Įjungti žiniatinklio programų podėlį darbui neprisijungus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:615
+msgid "Whether to enable offline web application cache"
+msgstr "Ar įjungti žiniatinklio programų podėlį darbui neprisijungus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:642
+msgid "Editing behavior"
+msgstr "Redagavimo elgsena"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:643
+msgid "The behavior mode to use in editing mode"
+msgstr "Elgsena naudotina redagavimo veiksenoje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:659
+msgid "Enable universal access from file URIs"
+msgstr "Įjungti universalią prieigą iš „file“ URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:660
+msgid "Whether to allow universal access from file URIs"
+msgstr "Ar leisti universalią prieigą iš „file“ URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:675
+msgid "Enable DOM paste"
+msgstr "Įjungti DOM įdėjimą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:676
+msgid "Whether to enable DOM paste"
+msgstr "Ar įjungti DOM įdėjimą"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:694
+msgid "Tab key cycles through elements"
+msgstr "Tab klavišu šokti tarp elementų"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:695
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Ar Tab klavišu galima šokti iš vieno elemento tinklalapyje į kitą."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:715
+msgid "Enable Default Context Menu"
+msgstr "Įjungti numatytąjį kontekstinį meniu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:716
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Ar apdoroti dešiniojo pelės mygtuko spustelėjimus, suformuojant numatytąjį "
+"kontekstinį meniu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:736
+msgid "Enable Site Specific Quirks"
+msgstr "Įjungti specifines svetainių pataisas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:737
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Įjungti kai kuriose svetainėse reikalingas specifines pataisas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:759
+msgid "Enable page cache"
+msgstr "Įjungti tinklalapių podėlį"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:760
+msgid "Whether the page cache should be used"
+msgstr "Ar naudoti tinklalapių podėlį"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:780
+msgid "Auto Resize Window"
+msgstr "Automatiškai keisti lango dydį"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:781
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "Tinklalapiui pareikalavus, automatiškai keisti pagrindinio lango dydį"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2316
+msgid "Returns the @web_view's document title"
+msgstr "Grąžina @web_view objekte atverto tinklalapio pavadinimą"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2330
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr ""
+"Grąžina @web_view objekte atverto tinklalapio universalųjį ištekliaus "
+"identifikatorių (URI)"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2343
+msgid "Copy target list"
+msgstr "Kopijuotinų taikinių sąrašas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2344
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"Šio žiniatinklio rodinio palaikomų taikinių kopijavimui į iškarpinę sąrašas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2357
+msgid "Paste target list"
+msgstr "Įdėtinų taikinių sąrašas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2358
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"Šio žiniatinklio rodinio palaikomų taikinių įdėjimui iš iškarpinės sąrašas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2364
+msgid "Settings"
+msgstr "Nuostatos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2365
+msgid "An associated WebKitWebSettings instance"
+msgstr "Susietasis „WebKitWebSettings“ tipo objektas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2378
+msgid "Web Inspector"
+msgstr "Žiniatinklio analizatorius"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2379
+msgid "The associated WebKitWebInspector instance"
+msgstr "Susietasis „WebKitWebInspector“ tipo objektas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2399
+msgid "Editable"
+msgstr "Keičiamas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2400
+msgid "Whether content can be modified by the user"
+msgstr "Ar turinys gali būti keičiamas naudotojo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2406
+msgid "Transparent"
+msgstr "Permatomas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2407
+msgid "Whether content has a transparent background"
+msgstr "Ar turinio fonas permatomas"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2420
+msgid "Zoom level"
+msgstr "Mastelis"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2421
+msgid "The level of zoom of the content"
+msgstr "Turinio rodymo mastelio dydis"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2436
+msgid "Full content zoom"
+msgstr "Taikyti mastelį visam turiniui"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2437
+msgid "Whether the full content is scaled when zooming"
+msgstr "Ar mastelis keičiamas visam tinklalapio turiniui"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2450
+msgid "Encoding"
+msgstr "Koduotė"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2451
+msgid "The default encoding of the web view"
+msgstr "Numatytoji žiniatinklio rodinio koduotė"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2464
+msgid "Custom Encoding"
+msgstr "Pasirinktinė koduotė"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2465
+msgid "The custom encoding of the web view"
+msgstr "Pasirinktinė žiniatinklio rodinio koduotė"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2517
+msgid "Icon URI"
+msgstr "Piktogramos URI"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2518
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "#WebKitWebView naudotinos „favicon“ piktogramos URI"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Pateikti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Atkurti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "_Searchable Index"
+msgstr "_Rodyklė paieškai"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Parinkite failą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Joks)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Atverti saistomą objektą naujame _lange"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "At_siųsti saistomą objektą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Kopijuoti saito _adresą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Atverti _paveikslą naujame lange"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Į_rašyti paveikslą kaip"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "_Kopijuoti paveikslą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "_Atverti kadrą naujame lange"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "At_siųsti iš naujo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Pasiūlymų nėra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Nepaisyti rašybos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "Įsi_minti rašybą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Ieškoti žiniatinklyje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "Ieškoti _žodyne"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Atverti saistomą objektą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Nepaisyti _gramatikos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Rašyba ir _gramatika"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Rodyti rašybą ir gramatiką"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Nerodyti rašybos ir gramatikos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "Pa_tikrinti dokumentą dabar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Tikrinti _rašybą rašant tekstą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Tikrinti _gramatiką kartu su rašyba"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "Šri_ftas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Kontūras"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Analizuoti _elementą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Paskiausių paieškų nėra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Paskiausios paieškos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Valyti paskiausias paieškas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "terminas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "apibrėžtis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "spustelėti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "pasirinkti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "aktyvinti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "nuimti žymėjimą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "pažymėti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "šokti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " failai"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Nežinoma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Įkeliama…"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Tiesioginė transliacija"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "audio elemento skydelis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "video elemento skydelis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "išjungti garsą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "įjungti garsą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "groti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pristabdyti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "laiko juosta"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "laiko juostos slankiklis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "30 sek. atgal"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "grįžti į realų laiką"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "praėjęs laikas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "likęs laikas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "būsena"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "visame ekrane"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "prasukti pirmyn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "prasukti atgal"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "rodyti titrus"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "nerodyti titrų"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "audio elemento valdikliai ir būsenos indikatorius"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "video elemento valdikliai ir būsenos indikatorius"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "išjungti garso takelio garsą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "įjungti garso takelio garsą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "pradėti grojimą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "pristabdyti grojimą"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "įrašo laiko juosta"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "įrašo laiko juostos slankiklis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "uždelsti įrašo atkūrimą 30 sek."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "grąžinti įrašo atkūrimą į realų laiką"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "praėjęs atkuriamo įrašo laikas sekundėmis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "likęs atkuriamo įrašo laikas sekundėmis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "atkuriamo įrašo būsena"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "prasukti įrašą į priekį"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "prasukti įrašą atgal"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Rodyti įrašą visame ekrane"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "pradėti ekrane rodyti titrus"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "nutraukti titrų rodymą ekrane"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "laikas neapibrėžtas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "trūksta reikšmės"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "tipo nesutampimas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "šablono nesutampimas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "per ilgas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "reikšmė per maža"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "reikšmė per didelė"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "žingsnio nesutapimas"
diff --git a/Source/WebKit/gtk/po/lv.po b/Source/WebKit/gtk/po/lv.po
new file mode 100644
index 0000000..3181ed3
--- /dev/null
+++ b/Source/WebKit/gtk/po/lv.po
@@ -0,0 +1,704 @@
+# This file is put in the public domain.
+#
+# Peteris Krisjanis <pecisk@gmail.com>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.4\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2010-03-07 19:37+0200\n"
+"Last-Translator: Peteris Krisjanis <pecisk@gmail.com>\n"
+"Language-Team: Latviešu <lata-l10n@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:425
+msgid "Upload File"
+msgstr "Augšupielādēt failu"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+msgid "Input _Methods"
+msgstr "Ievades _metodes"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM _No kreisās uz labo atzīme"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM No _labās uz kreiso atzīme"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE No kreisās uz labo _iegultīšana"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE No labās uz kreiso ie_gultīšana"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO No kreisās uz labo _pārrakstīšana"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO No labās uz kreiso pār_rakstīšana"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _izlēcošā virziena formatēšana"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS _Nulle ar tukšumu"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ Nulle ar _savienojumu"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ Nulle ar _nesavienojumu"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Ievietot Unicode kontroles rakstzīmi"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Tīkla pieprasījums"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr "URI, kuru vajadzētu lejupielādēt, tīkla pieprasījums"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr "Mērķa URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "Mērķa URI, kur saglabāt failu"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Ieteiktais faila nosaukums"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "Noklusēti ieteiktais faila nosaukums saglabājot"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Progress"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "Nosaka lejupielādes pašreizējo progresu"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Statuss"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Nosaka lejupielādes pašreizējo statusu"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Pašreizējais izmērs"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "Jau lejupielādēto datu apjoms"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Galīgais izmērs"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "Galīgais faila izmērs"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "Lietotājs atcēla lejupielādi"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Lietotājvārds un parole, ko pieprasa vietne %s"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr "Lietotājvārds:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Parole:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Atcerēties paroli"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Nosaukums"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Rāmja nosaukums"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Virsraksts"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "Rāmja dokumenta virsraksts"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:225
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:186
+#: WebKit/gtk/webkit/webkitwebview.cpp:1729
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:226
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Pašreizējais rāmī attēlotā satura URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "Vēstures ieraksta virsraksts"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Alternatīvais virsraksts"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr "Vēstures ieraksta alternatīvais virsraksts"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "Vēstures ieraksta URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "Oriģinālais URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "Vēstures ieraksta oriģinālais URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Pēdējā apmeklējuma laiks"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr "Laiks, kad pēdējo reizi vēstures ieraksts tika apmeklēts"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr "Tīmekļa skats"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Tīmekļa skats, kas renderē pašu tīmekļa inspektoru"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+msgid "Inspected URI"
+msgstr "Inspektētais URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr "URI, kuru pašreiz inspektē"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "Ieslēgt JavaScript profilēšanu"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "Profilēt izpildīto JavaScript kodu."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Iemesls"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "Iemesls, kāpēc šī navigācija notiek"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr "URI, kas tika pieprasīta kā navigācijas mērķis"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "Poga"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "Poga, ko noklikšķināt"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Modifīcētāja stāvoklis"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+"Lubiņš stāsta, ka nodokļu slogs Latvijā ir pārāk liels, turklāt valsts no "
+"uzņēmuma prasa, lai tas būtu konkurētspējīgs. Viņš uzskata, ka, samazinot "
+"nodokļus, uzņēmēju aktivitāte palielinātos un augtu arī konkurētspēja."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Noklusētais kodējums"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "Noklusētais kodējums, ko izmanto teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "Cursive fontu ģimene"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr "Noklusētā Cursive fontu ģimene, ko izmanto teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr "Noklusētā fontu ģimene"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr "Noklusētā fontu ģimene, ko izmanto teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr "Fantasy fontu ģimene"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr "Noklusētā Fantasy fontu ģimene, ko izmanto teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr "Monospace fontu ģimene"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr "Noklusētā fontu ģimene, ko izmanto monospace teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr "Sans Serif fontu ģimene"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr "Noklusētā Sans Serif fontu ģimene, ko izmanto teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr "Serif fontu ģimene"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr "Noklusētā Serif fontu ģimene, ko izmanto teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr "Noklusētais fontu izmērs"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr "Noklusētais fontu izmērs, kuru izmantot teksta attēlošanā."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr "Noklusētais Monospace fontu izmērs"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+msgid "The default font size used to display monospace text."
+msgstr "Noklusētais fonta izmērs monospace teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:210
+msgid "Minimum Font Size"
+msgstr "Minimālais fontu izmērs"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr "Minimālais fonta izmērs teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr "Minimālais loģiskais fontu izmērs"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+msgid "The minimum logical font size used to display text."
+msgstr "Minimālais loģiskais fontu izmērs teksta attēlošanai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Enforce 96 DPI"
+msgstr "Forsēt 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Forsēt 96 DPI izšķirtspēju"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Automātiska attēlu ielāde"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Ielādēt attēlus automātiski."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Automātiski samazināt attēlus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr ""
+"Automātiski samazināt atsevišķi parādītus attēlus, lai tie ietilptu logā."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Drukāt fonus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Vai fona attēlus vajadzētu drukāt."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Aktivizēt skriptus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Aktivizēt iegultās skriptēšanas valodas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Aktivizēt spraudņus"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Aktivizēt iegultos spraudņu objektus."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Teksta lauki ar maināmu izmēru"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "Vai teksta lauki ir ar maināmu izmēru"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "Lietotāja stila lapas URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "Stila lapas URI, kuru pielietot katrai lapai."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr "Mērogošanas pakāpes vērtība"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+"Vērtība, par kuru mēroga līmenis tiek izmainīts palielinot vai samazinot "
+"to."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr "Aktivizēt izstrādātāja ekstras"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "Aktivizē speciālus paplašinājumus, kas palīdz izstrādātājiem"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Aktivizēt privāto pārlūkošanu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Aktivizē privātās pārlūkošanas režīmu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr "Atgriež @web_view dokumenta virsrakstu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Atgriež pašreizējo satura, kas attēlos @web_view, URI"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr "Kopēt mērķu sarakstu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"Mērķu saraksts, ko šis tīmekļa skats atbalsta starpliktuves kopēšanai"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr "Ielikt mērķu sarakstu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"Mērķu saraksts, ko šis tīmekļa skats atbalsta starpliktuves kopēšanai"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr "Iestatījumi"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "Saistītā WebKitWebSettings instance"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Tīmekļa inspektors"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "Saistītā WebKitInspector instance"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Rediģējams"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr "Vai lietotājs var mainīt saturu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Caurspīdīgs"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "Vai saturam ir caurspīdīgs fons"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Mērogojuma līmenis"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "Satura mērogojuma līmenis"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "Visa satura mērogojums"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr "Vai viss saturs tiek mērogots"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "Kodējums"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "Tīmekļa skata noklusētais kodējums"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Izvēlēts kodējums"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "Tīmekļa skata izvēlētais kodējums"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Pieteikt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Pārstatīt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "_Meklējumu indekss"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Izvēlieties failu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Nekas)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Atvērt saiti jau_nā logā"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Lejupielādēt saitēto failu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Kopēt saites lokā_ciju"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Atvērt _attēlu jaunā logā"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Sa_glabāt attēlu kā"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Kopē_t attēlu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "Atvērt _rāmi jaunā logā"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "_Pārlādēt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Nav neviena minējuma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Ignorēt pareizrakstību"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Iemācīties pareizrakstību"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Meklēt tīmeklī"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "_Uzmeklēt vārdnīcā"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Atvērt saiti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Ignorēt _gramatiku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Pareizrakstība un _gramatika"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Rādīt pareizrakstību un gramatiku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "_Slēpt pareizrakstību un gramatiku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "_Pārbaudīt dokumentu tagad"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Pārbaudīt pareizrakstību _rakstot"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "Pārbaudīt _gramatiku kopā ar pareizrakstību"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Fonts"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Kopskats"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "Inspektēt _elementu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Nav nesen veiktu meklēšanu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Nesen veiktās meklēšanas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Attīrīt nesen veiktās meklēšanas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "termins"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definīcija"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "spiest"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "izvēlēties"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "aktivizēt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "neatzīmēt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "atzīmēt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "lekt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " faili"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Nezināms"
+
+
diff --git a/Source/WebKit/gtk/po/nb.po b/Source/WebKit/gtk/po/nb.po
new file mode 100644
index 0000000..fdfa753
--- /dev/null
+++ b/Source/WebKit/gtk/po/nb.po
@@ -0,0 +1,1104 @@
+# Norwegian bokmål translation of Epiphany
+# Copyright (C) 2000-2003, 2005 Free Software Foundation, Inc.
+# Ola Sverre Bauge <osb@plover.net>, 2000.
+# Kjartan Maraas <kmaraas@gnome.org>, 2000-2010.
+# Roy-Magne Mo <rmo@sunnmore.net>, 2001.
+# Terance Edward Sola <terance@lyse.net>, 2005.
+# Øivind Hoel <ohoel@cvs.gnome.org>, 2006.
+msgid ""
+msgstr ""
+"Project-Id-Version: epiphany 2.29.x\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-04-05 14:36+0200\n"
+"Last-Translator: Kjartan Maraas <kmaraas@gnome.org>\n"
+"Language-Team: Norwegian Bokmal <i18n-nb@lister.ping.uio.no>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr ""
+
+# (ugh)
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Fremdrift"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Total størrelse"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Brukernavn:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Passord:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "Husk passo_rd"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Navn"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Tittel"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+#, fuzzy
+msgid "The title of the history item"
+msgstr "Sideinformasjon som vises i historikkvisning"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+#, fuzzy
+msgid "The alternate title of the history item"
+msgstr "Sideinformasjon som vises i historikkvisning"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+#, fuzzy
+msgid "The URI of the history item"
+msgstr "Åpne historikkvinduet"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+#, fuzzy
+msgid "The original URI of the history item"
+msgstr "Sideinformasjon som vises i historikkvisning"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+#, fuzzy
+msgid "Last visited Time"
+msgstr "Oftest besøkt"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+#, fuzzy
+msgid "Web View"
+msgstr "_Vis"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Aktiver profilering av JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "Aktiver myk rulling"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Årsak"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Knapp"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Forvalgt koding"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Forvalgt skriftfamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Forvalgt skriftstørrelse"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Minste skriftstørrelse"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+#, fuzzy
+msgid "Minimum Logical Font Size"
+msgstr "Minste skriftstørrelse"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Skriv ut bakgrunn"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+#, fuzzy
+msgid "Whether background images should be printed."
+msgstr "Om bakgrunnsbilder skal skrives ut"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Slå på JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Aktiver tillegg"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+#, fuzzy
+msgid "User Stylesheet URI"
+msgstr "Bruk egendefinert _stilark"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Slå på privat nettlesing"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#, fuzzy
+msgid "Enable Caret Browsing"
+msgstr "Aktiver myk rulling"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+#, fuzzy
+msgid "Whether to enable teh XSS auditor"
+msgstr "Om bakgrunnen skal skrives ut"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Brukeragent"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Slå på Java-applet"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+#, fuzzy
+msgid "Paste target list"
+msgstr "Lim inn utklippstavlen"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Innstillinger"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Inspeksjon av nettsider"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Redigerbar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+#, fuzzy
+msgid "Whether content can be modified by the user"
+msgstr "Bruk koding som spesifisert av dokumentet"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Gjennomsiktig"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+#, fuzzy
+msgid "Whether content has a transparent background"
+msgstr "Om bakgrunnen skal skrives ut"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Zoom-nivå"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Koding"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+#, fuzzy
+msgid "Custom Encoding"
+msgstr "Tekstkoding"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Send inn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Nullstill"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Velg fil"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Ingen)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Åpne lenke i nytt _vindu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+#, fuzzy
+msgid "_Download Linked File"
+msgstr "Last ne_d lenke"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Åpne b_ilde i nytt vindu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "La_gre bilde som"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Kop_ier bilde"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+#, fuzzy
+msgid "Open _Frame in New Window"
+msgstr "Åpne i nytt _vindu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Last om"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Søk på nettet"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Åpne lenke"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Sjekk dokumentet nå"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "Skri_ft"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspiser _element"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+#, fuzzy
+msgid "term"
+msgstr "Andre"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definisjon"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+#, fuzzy
+msgid "press"
+msgstr "Adresse"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "velg"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "slå på"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "sjekk"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "hopp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " filer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Ukjent"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Laster..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "demp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "spill av"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pause"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "tilbake 30 sekunder"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "gjenstående tid"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "status"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "fullskjerm"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+#, fuzzy
+msgid "fast forward"
+msgstr "_Fremover"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+#, fuzzy
+msgid "fast reverse"
+msgstr "Tidligere utviklere:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+#, fuzzy
+msgid "Play movie in fullscreen mode"
+msgstr "Lås i fullskjermmodus"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
+
diff --git a/Source/WebKit/gtk/po/nl.po b/Source/WebKit/gtk/po/nl.po
new file mode 100644
index 0000000..e33e284
--- /dev/null
+++ b/Source/WebKit/gtk/po/nl.po
@@ -0,0 +1,1355 @@
+# Dutch translation of webkit-gtk
+# Released under the same license as webkit-gtk
+# Reinout van Schouwen <reinouts@gnome.org>, 2009, 2010
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.10\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org\n"
+"POT-Creation-Date: 2010-09-08 03:26+0000\n"
+"PO-Revision-Date: 2010-09-19 17:01+0100\n"
+"Last-Translator: Reinout van Schouwen <reinouts@gnome.org>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: ../WebCoreSupport/ChromeClientGtk.cpp:569
+msgid "Upload File"
+msgstr "Bestand uploaden"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Invoer_methoden"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM _Links-naar-rechts markering"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM _Rechts-naar-links markering"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Links-naar-rechts _inbedding"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Rechts-naar-links i_nbedding"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Links-naar-rechts _tenietdoen"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Rechts-naar-links t_enietdoen"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Pop richtingsformattering"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS Spatie _zonder breedte"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _koppelaar zonder breedte"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ Niet-k_oppelaar zonder breedte"
+
+#: ../WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Unicode controleteken invoegen "
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1038
+msgid "Load request cancelled"
+msgstr "Laadaanvraag geannuleerd"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1044
+msgid "Not allowed to use restricted network port"
+msgstr "Gebruik van beperkte netwerkpoort niet toegestaan"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1050
+msgid "URL cannot be shown"
+msgstr "Kan URL niet tonen"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1056
+msgid "Frame load was interrupted"
+msgstr "Laden van het frame onderbroken"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1062
+msgid "Content with the specified MIME type cannot be shown"
+msgstr "Kan inhoud met het aangegeven MIME-type niet tonen"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1068
+msgid "File does not exist"
+msgstr "Bestand bestaat niet"
+
+#: ../WebCoreSupport/FrameLoaderClientGtk.cpp:1074
+msgid "Plugin will handle load"
+msgstr "Plug-in handelt het laden af"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:385
+#| msgid "play"
+msgid "Play"
+msgstr "Afspelen"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:387
+#| msgid "pause"
+msgid "Pause"
+msgstr "Pauzeren"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:533
+msgid "Play / Pause"
+msgstr "Afspelen / pauzeren"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:533
+msgid "Play or pause the media"
+msgstr "De media afspelen of pauzeren"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:541
+msgid "Time:"
+msgstr "Tijd:"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:565
+msgid "Exit Fullscreen"
+msgstr "Volledig scherm verlaten"
+
+#: ../WebCoreSupport/FullscreenVideoController.cpp:565
+msgid "Exit from fullscreen mode"
+msgstr "Volledig scherm verlaten"
+
+#: ../webkit/webkitdownload.cpp:272
+msgid "Network Request"
+msgstr "Netwerkaanvraag"
+
+#: ../webkit/webkitdownload.cpp:273
+msgid "The network request for the URI that should be downloaded"
+msgstr "De netwerkaanvraag voor de te downloaden URI"
+
+#: ../webkit/webkitdownload.cpp:287
+msgid "Network Response"
+msgstr "Netwerkantwoord"
+
+#: ../webkit/webkitdownload.cpp:288
+msgid "The network response for the URI that should be downloaded"
+msgstr "Het netwerkantwoord voor de te downloaden URI"
+
+#: ../webkit/webkitdownload.cpp:302
+msgid "Destination URI"
+msgstr "Bestemmings-URI"
+
+#: ../webkit/webkitdownload.cpp:303
+msgid "The destination URI where to save the file"
+msgstr "De bestemmings-URI waar dit bestand opgeslagen moet worden"
+
+#: ../webkit/webkitdownload.cpp:317
+msgid "Suggested Filename"
+msgstr "Gesuggereerde bestandsnaam"
+
+#: ../webkit/webkitdownload.cpp:318
+msgid "The filename suggested as default when saving"
+msgstr "De standaard gesuggereerde bestandsnaam bij het opslaan"
+
+#: ../webkit/webkitdownload.cpp:335
+msgid "Progress"
+msgstr "Voortgang"
+
+#: ../webkit/webkitdownload.cpp:336
+msgid "Determines the current progress of the download"
+msgstr "Bepaalt de huidige voortgang van de download"
+
+#: ../webkit/webkitdownload.cpp:349
+msgid "Status"
+msgstr "Status"
+
+#: ../webkit/webkitdownload.cpp:350
+msgid "Determines the current status of the download"
+msgstr "Bepaalt de huidige status van de download"
+
+#: ../webkit/webkitdownload.cpp:365
+msgid "Current Size"
+msgstr "Huidige grootte"
+
+#: ../webkit/webkitdownload.cpp:366
+msgid "The length of the data already downloaded"
+msgstr "De hoeveelheid reeds gedownloade data"
+
+#: ../webkit/webkitdownload.cpp:380
+msgid "Total Size"
+msgstr "Totale grootte"
+
+#: ../webkit/webkitdownload.cpp:381
+msgid "The total size of the file"
+msgstr "De totale grootte van het bestand"
+
+#: ../webkit/webkitdownload.cpp:532
+msgid "User cancelled the download"
+msgstr "Downloaden door gebruiker gestopt"
+
+#: ../webkit/webkithittestresult.cpp:148
+msgid "Context"
+msgstr "Context"
+
+#: ../webkit/webkithittestresult.cpp:149
+msgid "Flags indicating the kind of target that received the event."
+msgstr "Markeringen die het soort doel beschrijven voor ontvangst van de gebeurtenis."
+
+#: ../webkit/webkithittestresult.cpp:163
+msgid "Link URI"
+msgstr "Verwijzings-URI"
+
+#: ../webkit/webkithittestresult.cpp:164
+msgid "The URI to which the target that received the event points, if any."
+msgstr "De URI waarnaar het doel wijst dat de gebeurtenispunten ontvangen heeft, indien aanwezig."
+
+#: ../webkit/webkithittestresult.cpp:177
+msgid "Image URI"
+msgstr "Afbeeldings-URI"
+
+#: ../webkit/webkithittestresult.cpp:178
+msgid ""
+"The URI of the image that is part of the target that received the event, if "
+"any."
+msgstr ""
+"De URI van de afbeelding die onderdeel is van het doel voor gebeurtenisontvangst, indien aanwezig."
+
+#: ../webkit/webkithittestresult.cpp:191
+msgid "Media URI"
+msgstr "Media-URI"
+
+#: ../webkit/webkithittestresult.cpp:192
+msgid ""
+"The URI of the media that is part of the target that received the event, if "
+"any."
+msgstr ""
+"De URI van de media die onderdeel zijn van het doel voor gebeurtenisontvangst, indien aanwezig."
+
+#: ../webkit/webkithittestresult.cpp:213
+msgid "Inner node"
+msgstr "Ingesloten node"
+
+#: ../webkit/webkithittestresult.cpp:214
+msgid "The inner DOM node associated with the hit test result."
+msgstr "De ingesloten DOM-node die geassocieerd is met het hittestresultaat."
+
+#: ../webkit/webkitnetworkrequest.cpp:136
+#: ../webkit/webkitnetworkresponse.cpp:134 ../webkit/webkitwebframe.cpp:315
+#: ../webkit/webkitwebhistoryitem.cpp:178 ../webkit/webkitwebresource.cpp:126
+#: ../webkit/webkitwebview.cpp:2653
+msgid "URI"
+msgstr "URI"
+
+#: ../webkit/webkitnetworkrequest.cpp:137
+msgid "The URI to which the request will be made."
+msgstr "De URI waarnaar de aanvraag gestuurd wordt."
+
+#: ../webkit/webkitnetworkrequest.cpp:150
+#: ../webkit/webkitnetworkresponse.cpp:148
+msgid "Message"
+msgstr "Bericht"
+
+#: ../webkit/webkitnetworkrequest.cpp:151
+msgid "The SoupMessage that backs the request."
+msgstr "De SoupMessage die achter de aanvraag zit."
+
+#: ../webkit/webkitnetworkresponse.cpp:135
+msgid "The URI to which the response will be made."
+msgstr "De URI waarnaar het antwoord verstuurd wordt."
+
+#: ../webkit/webkitnetworkresponse.cpp:149
+msgid "The SoupMessage that backs the response."
+msgstr "De SoupMessage die achter het antwoord zit."
+
+#: ../webkit/webkitsecurityorigin.cpp:151
+msgid "Protocol"
+msgstr "Protocol"
+
+#: ../webkit/webkitsecurityorigin.cpp:152
+msgid "The protocol of the security origin"
+msgstr "Het protocol van de beveiligingsbron"
+
+#: ../webkit/webkitsecurityorigin.cpp:165
+msgid "Host"
+msgstr "Hostcomputer"
+
+#: ../webkit/webkitsecurityorigin.cpp:166
+msgid "The host of the security origin"
+msgstr "De hostcomputer van de beveiligingsbron"
+
+#: ../webkit/webkitsecurityorigin.cpp:179
+msgid "Port"
+msgstr "Poort"
+
+#: ../webkit/webkitsecurityorigin.cpp:180
+msgid "The port of the security origin"
+msgstr "De poort van de beveiligingsbron"
+
+#: ../webkit/webkitsecurityorigin.cpp:193
+msgid "Web Database Usage"
+msgstr "Web-databasegebruik"
+
+#: ../webkit/webkitsecurityorigin.cpp:194
+msgid "The cumulative size of all web databases in the security origin"
+msgstr "De opgetelde grootte van alle webdatabases in de beveiligingsbron"
+
+#: ../webkit/webkitsecurityorigin.cpp:206
+msgid "Web Database Quota"
+msgstr "Webdatabase-quota"
+
+#: ../webkit/webkitsecurityorigin.cpp:207
+msgid "The web database quota of the security origin in bytes"
+msgstr "De webdatabase-quota voor de beveiligingsbron in bytes"
+
+#: ../webkit/webkitsoupauthdialog.c:251
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "De site %s vraagt een gebruikersnaam en wachtwoord"
+
+#: ../webkit/webkitsoupauthdialog.c:281
+msgid "Server message:"
+msgstr "Serverbericht:"
+
+#: ../webkit/webkitsoupauthdialog.c:294
+msgid "Username:"
+msgstr "Gebruikersnaam:"
+
+#: ../webkit/webkitsoupauthdialog.c:296
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: ../webkit/webkitsoupauthdialog.c:305
+msgid "_Remember password"
+msgstr "_Wachtwoord onthouden"
+
+#: ../webkit/webkitwebdatabase.cpp:176
+msgid "Security Origin"
+msgstr "Beveiligingsbron"
+
+#: ../webkit/webkitwebdatabase.cpp:177
+msgid "The security origin of the database"
+msgstr "De beveiligingsbron van de database"
+
+#: ../webkit/webkitwebdatabase.cpp:190 ../webkit/webkitwebframe.cpp:301
+msgid "Name"
+msgstr "Naam"
+
+#: ../webkit/webkitwebdatabase.cpp:191
+msgid "The name of the Web Database database"
+msgstr "De naam van de Web Database-database"
+
+#: ../webkit/webkitwebdatabase.cpp:204
+msgid "Display Name"
+msgstr "Weergavenaam"
+
+#: ../webkit/webkitwebdatabase.cpp:205
+msgid "The display name of the Web Storage database"
+msgstr "De weergavenaam van de Web Storage-database"
+
+#: ../webkit/webkitwebdatabase.cpp:218
+msgid "Expected Size"
+msgstr "Verwachte grootte"
+
+#: ../webkit/webkitwebdatabase.cpp:219
+msgid "The expected size of the Web Database database"
+msgstr "De verwachte grootte van de Web Database-database"
+
+#: ../webkit/webkitwebdatabase.cpp:231
+msgid "Size"
+msgstr "Grootte"
+
+#: ../webkit/webkitwebdatabase.cpp:232
+msgid "The current size of the Web Database database"
+msgstr "De huidige grootte van de Web Database-database"
+
+#: ../webkit/webkitwebdatabase.cpp:244
+msgid "Filename"
+msgstr "Bestandsnaam"
+
+#: ../webkit/webkitwebdatabase.cpp:245
+msgid "The absolute filename of the Web Storage database"
+msgstr "De absolute bestandsnaam van de Web Storage-database"
+
+#: ../webkit/webkitwebframe.cpp:302
+msgid "The name of the frame"
+msgstr "Naam van het frame"
+
+#: ../webkit/webkitwebframe.cpp:308 ../webkit/webkitwebhistoryitem.cpp:146
+#: ../webkit/webkitwebview.cpp:2639
+msgid "Title"
+msgstr "Titel"
+
+#: ../webkit/webkitwebframe.cpp:309
+msgid "The document title of the frame"
+msgstr "De titel van het huidige frame"
+
+#: ../webkit/webkitwebframe.cpp:316
+msgid "The current URI of the contents displayed by the frame"
+msgstr "De huidige URI van de in het frame weergegeven inhoud"
+
+#: ../webkit/webkitwebframe.cpp:347
+msgid "Horizontal Scrollbar Policy"
+msgstr "Beleid voor horizontale schuifbalk"
+
+#: ../webkit/webkitwebframe.cpp:348
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Bepaalt het beleid voor de horizontale schuifbalk van het frame"
+
+#: ../webkit/webkitwebframe.cpp:365
+msgid "Vertical Scrollbar Policy"
+msgstr "Beleid voor verticale schuifbalk"
+
+#: ../webkit/webkitwebframe.cpp:366
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Bepaalt het huidige beleid voor de verticale schuifbalk van het frame."
+
+#: ../webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "De titel van het geschiedenis-item"
+
+#: ../webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Alternatieve titel"
+
+#: ../webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "De alternatieve titel van het geschiedenis-item"
+
+#: ../webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "De URI van het geschiedenis-item"
+
+#: ../webkit/webkitwebhistoryitem.cpp:194
+#: ../webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Originele URI"
+
+#: ../webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "De originele URI van het geschiedenis-item"
+
+#: ../webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Laatst bezocht op"
+
+#: ../webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "De tijd waarop het geschiedenis-item het laatst is bezocht"
+
+#: ../webkit/webkitwebinspector.cpp:269
+msgid "Web View"
+msgstr "Webweergave"
+
+#: ../webkit/webkitwebinspector.cpp:270
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "De webweergave die die Webinspector zelf weergeeft"
+
+#: ../webkit/webkitwebinspector.cpp:283
+msgid "Inspected URI"
+msgstr "Geïnspecteerde URI"
+
+#: ../webkit/webkitwebinspector.cpp:284
+msgid "The URI that is currently being inspected"
+msgstr "De URI die momenteel geïnspecteerd wordt"
+
+#: ../webkit/webkitwebinspector.cpp:300
+msgid "Enable JavaScript profiling"
+msgstr "JavaScript-profilering inschakelen"
+
+#: ../webkit/webkitwebinspector.cpp:301
+msgid "Profile the executed JavaScript."
+msgstr "De uitgevoerde JavaScript profileren."
+
+#: ../webkit/webkitwebinspector.cpp:316
+msgid "Enable Timeline profiling"
+msgstr "Tijdslijn-profilering inschakelen"
+
+#: ../webkit/webkitwebinspector.cpp:317
+msgid "Profile the WebCore instrumentation."
+msgstr "De instrumentering van WebCore profileren."
+
+#: ../webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Reden"
+
+#: ../webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "De reden waarom deze navigatie optreedt"
+
+#: ../webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "De URI die werd aangevraagd als bestemming voor de navigatie"
+
+#: ../webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Knop"
+
+#: ../webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "De knop voor het klikken"
+
+#: ../webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Staat van de optietoets"
+
+#: ../webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Een bitmask dat de staat van de optietoets representeert"
+
+#: ../webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Doelframe"
+
+#: ../webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Het doelframe voor de navigatie"
+
+#: ../webkit/webkitwebresource.cpp:127
+msgid "The uri of the resource"
+msgstr "De URI van de bron"
+
+#: ../webkit/webkitwebresource.cpp:141
+msgid "MIME Type"
+msgstr "MIME-type"
+
+#: ../webkit/webkitwebresource.cpp:142
+msgid "The MIME type of the resource"
+msgstr "De MIME-type van de bron"
+
+#: ../webkit/webkitwebresource.cpp:156 ../webkit/webkitwebview.cpp:2774
+msgid "Encoding"
+msgstr "Codering"
+
+#: ../webkit/webkitwebresource.cpp:157
+msgid "The text encoding name of the resource"
+msgstr "De tekstcoderingsnaam van de bron"
+
+#: ../webkit/webkitwebresource.cpp:172
+msgid "Frame Name"
+msgstr "Framenaam"
+
+#: ../webkit/webkitwebresource.cpp:173
+msgid "The frame name of the resource"
+msgstr "Naam van het frame van de bron"
+
+#: ../webkit/webkitwebsettings.cpp:241
+msgid "Default Encoding"
+msgstr "Standaardcodering"
+
+#: ../webkit/webkitwebsettings.cpp:242
+msgid "The default encoding used to display text."
+msgstr "De standaardcodering om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:250
+msgid "Cursive Font Family"
+msgstr "Cursive-lettertypefamilie"
+
+#: ../webkit/webkitwebsettings.cpp:251
+msgid "The default Cursive font family used to display text."
+msgstr "De standaard Cursive-lettertypefamilie om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:259
+msgid "Default Font Family"
+msgstr "Standaard lettertypefamilie"
+
+#: ../webkit/webkitwebsettings.cpp:260
+msgid "The default font family used to display text."
+msgstr "De standaard lettertypefamilie om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:268
+msgid "Fantasy Font Family"
+msgstr "Fantasy-lettertypefamilie"
+
+#: ../webkit/webkitwebsettings.cpp:269
+msgid "The default Fantasy font family used to display text."
+msgstr "De standaard Fantasy-lettertypefamilie om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:277
+msgid "Monospace Font Family"
+msgstr "Monospace-lettertypefamilie"
+
+#: ../webkit/webkitwebsettings.cpp:278
+msgid "The default font family used to display monospace text."
+msgstr "De standaard lettertypefamilie om vaste-breedte-tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:286
+msgid "Sans Serif Font Family"
+msgstr "Sans Serif-lettertypefamilie"
+
+#: ../webkit/webkitwebsettings.cpp:287
+msgid "The default Sans Serif font family used to display text."
+msgstr "De standaard Sans Serif-lettertypefamilie om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:295
+msgid "Serif Font Family"
+msgstr "Serif-lettertypefamilie"
+
+#: ../webkit/webkitwebsettings.cpp:296
+msgid "The default Serif font family used to display text."
+msgstr "De standaard Serif-lettertypefamilie om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:304
+msgid "Default Font Size"
+msgstr "Standaard korpsgrootte"
+
+#: ../webkit/webkitwebsettings.cpp:305
+msgid "The default font size used to display text."
+msgstr "De standaard korpsgrootte om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:313
+msgid "Default Monospace Font Size"
+msgstr "Standaard Monospace-lettergrootte"
+
+#: ../webkit/webkitwebsettings.cpp:314
+msgid "The default font size used to display monospace text."
+msgstr "De standaard lettergrootte om vaste-breedte-tekst weer te geven."
+
+# Korpsgrootte/lettergrootte?
+#: ../webkit/webkitwebsettings.cpp:322
+msgid "Minimum Font Size"
+msgstr "Minimum korpsgrootte"
+
+#: ../webkit/webkitwebsettings.cpp:323
+msgid "The minimum font size used to display text."
+msgstr "De minimum lettergrootte om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:331
+msgid "Minimum Logical Font Size"
+msgstr "Minimum logische korpsgrootte"
+
+#: ../webkit/webkitwebsettings.cpp:332
+msgid "The minimum logical font size used to display text."
+msgstr "De minimum logische korpsgrootte om tekst weer te geven."
+
+#: ../webkit/webkitwebsettings.cpp:351
+msgid "Enforce 96 DPI"
+msgstr "96 DPI afdwingen"
+
+#: ../webkit/webkitwebsettings.cpp:352
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Een resolutie van 96 DPI afdwingen"
+
+#: ../webkit/webkitwebsettings.cpp:360
+msgid "Auto Load Images"
+msgstr "Afbeeldingen automatisch laden"
+
+#: ../webkit/webkitwebsettings.cpp:361
+msgid "Load images automatically."
+msgstr "Automatisch afbeeldingen laden."
+
+#: ../webkit/webkitwebsettings.cpp:369
+msgid "Auto Shrink Images"
+msgstr "Afbeeldingen automatisch verkleinen"
+
+#: ../webkit/webkitwebsettings.cpp:370
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automatisch losstaande afbeeldingen passend maken."
+
+#: ../webkit/webkitwebsettings.cpp:378
+msgid "Print Backgrounds"
+msgstr "Achtergronden afdrukken"
+
+#: ../webkit/webkitwebsettings.cpp:379
+msgid "Whether background images should be printed."
+msgstr "Of achtergrondafbeeldingen afgedrukt moeten worden."
+
+#: ../webkit/webkitwebsettings.cpp:387
+msgid "Enable Scripts"
+msgstr "Scripts inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:388
+msgid "Enable embedded scripting languages."
+msgstr "Ingebedde scripttalen inschakelen."
+
+#: ../webkit/webkitwebsettings.cpp:396
+msgid "Enable Plugins"
+msgstr "Plugins inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:397
+msgid "Enable embedded plugin objects."
+msgstr "Ingebedde plugin-objecten inschakelen."
+
+#: ../webkit/webkitwebsettings.cpp:405
+msgid "Resizable Text Areas"
+msgstr "Tekstgebieden van grootte veranderbaar"
+
+#: ../webkit/webkitwebsettings.cpp:406
+msgid "Whether text areas are resizable."
+msgstr "Of de grootte van tekstgebieden gewijzigd kan worden."
+
+#: ../webkit/webkitwebsettings.cpp:413
+msgid "User Stylesheet URI"
+msgstr "URI van gebruikersstijlblad"
+
+#: ../webkit/webkitwebsettings.cpp:414
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "De URI van een stijlblad dat wordt toegepast op elke pagina."
+
+#: ../webkit/webkitwebsettings.cpp:429
+msgid "Zoom Stepping Value"
+msgstr "Stapgrootte voor in- en uitzoomen"
+
+#: ../webkit/webkitwebsettings.cpp:430
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+"De hoeveelheid waarmee het zoomniveau verandert bij het in- en uitzoomen."
+
+#: ../webkit/webkitwebsettings.cpp:448
+msgid "Enable Developer Extras"
+msgstr "Extraatjes voor ontwikkelaars"
+
+#: ../webkit/webkitwebsettings.cpp:449
+msgid "Enables special extensions that help developers"
+msgstr "Schakelt speciale uitbreidingen in die ontwikkelaars helpen"
+
+#: ../webkit/webkitwebsettings.cpp:469
+msgid "Enable Private Browsing"
+msgstr "Privé-browsen inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:470
+msgid "Enables private browsing mode"
+msgstr "Schakelt de stand voor privé-browsen in"
+
+#: ../webkit/webkitwebsettings.cpp:485
+msgid "Enable Spell Checking"
+msgstr "Spellingcontrole inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:486
+msgid "Enables spell checking while typing"
+msgstr "Schakelt spellingcontrole tijdens het typen in"
+
+#: ../webkit/webkitwebsettings.cpp:509
+msgid "Languages to use for spell checking"
+msgstr "Te gebruiken talen bij spellingcontrole"
+
+#: ../webkit/webkitwebsettings.cpp:510
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Kommagescheiden lijst van talen voor spellingcontrole"
+
+#: ../webkit/webkitwebsettings.cpp:524
+msgid "Enable Caret Browsing"
+msgstr "Cursor-browsen inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:525
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+"Of toegankelijkheidsgeoptimaliseerde toetsenbordnavigatie is ingeschakeld"
+
+#: ../webkit/webkitwebsettings.cpp:540
+msgid "Enable HTML5 Database"
+msgstr "HTML5-database inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:541
+msgid "Whether to enable HTML5 database support"
+msgstr "Of HTML5-databaseondersteuning is ingeschakeld"
+
+#: ../webkit/webkitwebsettings.cpp:556
+msgid "Enable HTML5 Local Storage"
+msgstr "HTML5-lokale opslag inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:557
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Of HTML5-lokale opslag ingeschakeld moet zijn"
+
+#: ../webkit/webkitwebsettings.cpp:571
+msgid "Enable XSS Auditor"
+msgstr "XSS-auditor inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:572
+msgid "Whether to enable the XSS auditor"
+msgstr "Of de XSS-auditor is ingeschakeld"
+
+#: ../webkit/webkitwebsettings.cpp:590
+msgid "Enable Spatial Navigation"
+msgstr "Ruimtelijke navigatie inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:591
+msgid "Whether to enable Spatial Navigation"
+msgstr "Of ruimtelijke navigatie is ingeschakeld"
+
+#: ../webkit/webkitwebsettings.cpp:608
+msgid "User Agent"
+msgstr "User-agent"
+
+#: ../webkit/webkitwebsettings.cpp:609
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "De User-Agent-tekenreeks die WebKitGtk gebruikt"
+
+#: ../webkit/webkitwebsettings.cpp:624
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript kan automatisch vensters openen"
+
+#: ../webkit/webkitwebsettings.cpp:625
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Of JavaScript automatisch vensters kan openen"
+
+#: ../webkit/webkitwebsettings.cpp:639
+msgid "JavaScript can access Clipboard"
+msgstr "JavaScript heeft toegang tot klembord"
+
+#: ../webkit/webkitwebsettings.cpp:640
+msgid "Whether JavaScript can access Clipboard"
+msgstr "Of JavaScript het klembord kan benaderen"
+
+#: ../webkit/webkitwebsettings.cpp:656
+msgid "Enable offline web application cache"
+msgstr "Offline webapplicatiebuffer inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:657
+msgid "Whether to enable offline web application cache"
+msgstr "Of de offline webapplicatiebuffer is ingeschakeld"
+
+#: ../webkit/webkitwebsettings.cpp:684
+msgid "Editing behavior"
+msgstr "Gedrag bij bewerken"
+
+#: ../webkit/webkitwebsettings.cpp:685
+msgid "The behavior mode to use in editing mode"
+msgstr "De gedragsmodus in de bewerkingsstand"
+
+#: ../webkit/webkitwebsettings.cpp:701
+msgid "Enable universal access from file URIs"
+msgstr "Universele toegang vanaf bestands-URI's inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:702
+msgid "Whether to allow universal access from file URIs"
+msgstr "Of universele toegang vanaf bestands-URI's is ingeschakeld"
+
+#: ../webkit/webkitwebsettings.cpp:717
+msgid "Enable DOM paste"
+msgstr "DOM-plakken inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:718
+msgid "Whether to enable DOM paste"
+msgstr "Of plakken vanuit het DOM is ingeschakeld"
+
+#: ../webkit/webkitwebsettings.cpp:736
+msgid "Tab key cycles through elements"
+msgstr "Tab-toets wandelt door elementen"
+
+#: ../webkit/webkitwebsettings.cpp:737
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Of de tab-toets door de elementen op de pagina wandelt."
+
+#: ../webkit/webkitwebsettings.cpp:757
+msgid "Enable Default Context Menu"
+msgstr "Standaard-contextmenu inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:758
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Schakelt het afhandelen van klikken met de tweede muisknop in voor het "
+"creëren van het standaard contextmenu"
+
+#: ../webkit/webkitwebsettings.cpp:778
+msgid "Enable Site Specific Quirks"
+msgstr "Site-specifieke eigenaardigheden inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:779
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Schakelt omzeilingen in voor compatibiliteit met specifieke websites"
+
+#: ../webkit/webkitwebsettings.cpp:801
+msgid "Enable page cache"
+msgstr "Paginabuffer inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:802
+msgid "Whether the page cache should be used"
+msgstr "Of de paginabuffer gebruikt moet worden"
+
+#: ../webkit/webkitwebsettings.cpp:822
+msgid "Auto Resize Window"
+msgstr "Venstergrootte automatisch aanpassen"
+
+#: ../webkit/webkitwebsettings.cpp:823
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+"Grootte van topniveauvenster automatisch aanpassen wanneer pagina hierom "
+"vraagt"
+
+#: ../webkit/webkitwebsettings.cpp:855
+msgid "Enable Java Applet"
+msgstr "Java-applet inschakelen"
+
+#: ../webkit/webkitwebsettings.cpp:856
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Of ondersteuning voor Java-applets via <applet> ingeschakeld is"
+
+#: ../webkit/webkitwebview.cpp:2640
+msgid "Returns the @web_view's document title"
+msgstr "Geeft de documenttitel van de @web_view terug"
+
+#: ../webkit/webkitwebview.cpp:2654
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Geeft de huidige URI terug van de inhoud die de @web_view weergeeft"
+
+#: ../webkit/webkitwebview.cpp:2667
+msgid "Copy target list"
+msgstr "Kopieerdoellijst"
+
+#: ../webkit/webkitwebview.cpp:2668
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"De lijst met targets die deze webweergave ondersteunt voor het kopiëren van "
+"het klembord"
+
+#: ../webkit/webkitwebview.cpp:2681
+msgid "Paste target list"
+msgstr "Plakdoellijst"
+
+#: ../webkit/webkitwebview.cpp:2682
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"De lijst met targets die deze webview ondersteunt voor het plakken van het "
+"klembord"
+
+#: ../webkit/webkitwebview.cpp:2688
+msgid "Settings"
+msgstr "Instellingen"
+
+#: ../webkit/webkitwebview.cpp:2689
+msgid "An associated WebKitWebSettings instance"
+msgstr "Een geassocieerde instantie van WebKitWebSettings"
+
+#: ../webkit/webkitwebview.cpp:2702
+msgid "Web Inspector"
+msgstr "Web-inspector"
+
+#: ../webkit/webkitwebview.cpp:2703
+msgid "The associated WebKitWebInspector instance"
+msgstr "De geassocieerde instantie van WebKitWebInspector"
+
+#: ../webkit/webkitwebview.cpp:2723
+msgid "Editable"
+msgstr "Bewerkbaar"
+
+#: ../webkit/webkitwebview.cpp:2724
+msgid "Whether content can be modified by the user"
+msgstr "Of de tekst gewijzigd kan worden door de gebruiker"
+
+#: ../webkit/webkitwebview.cpp:2730
+msgid "Transparent"
+msgstr "Transparant"
+
+#: ../webkit/webkitwebview.cpp:2731
+msgid "Whether content has a transparent background"
+msgstr "Of de inhoud een transparante achtergrond heeft"
+
+#: ../webkit/webkitwebview.cpp:2744
+msgid "Zoom level"
+msgstr "Zoomniveau"
+
+#: ../webkit/webkitwebview.cpp:2745
+msgid "The level of zoom of the content"
+msgstr "Zoomfactor van de inhoud"
+
+#: ../webkit/webkitwebview.cpp:2760
+msgid "Full content zoom"
+msgstr "Zoomen op volledige inhoud"
+
+#: ../webkit/webkitwebview.cpp:2761
+msgid "Whether the full content is scaled when zooming"
+msgstr "Of de volledige inhoud op schaal wordt gebracht bij het zoomen"
+
+#: ../webkit/webkitwebview.cpp:2775
+msgid "The default encoding of the web view"
+msgstr "Standaard codering van de webweergave"
+
+#: ../webkit/webkitwebview.cpp:2788
+msgid "Custom Encoding"
+msgstr "Aangepaste codering"
+
+#: ../webkit/webkitwebview.cpp:2789
+msgid "The custom encoding of the web view"
+msgstr "De aangepaste codering van de webweergave"
+
+#: ../webkit/webkitwebview.cpp:2841
+msgid "Icon URI"
+msgstr "Pictogram-URI"
+
+#: ../webkit/webkitwebview.cpp:2842
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "De URI voor het favicon van de #WebKitWebView."
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Indienen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Herinitialiseren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Dit is een doorzoekbare index. Voer zoekwoorden in: "
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Kies een bestand"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Geen)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Verwijzing openen in _nieuw venster"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "Bestand _downloaden"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Verwijzings_adres kopiëren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Af_beelding openen in nieuw venster"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Afbeelding opslaan _als…"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Afbeelding _kopiëren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "_Deelvenster openen in nieuw venster"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "Ve_rversen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Geen suggesties gevonden"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "Spelling _negeren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Spelling leren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "Het web door_zoeken"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "O_pzoeken in woordenboek"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "Koppeling _openen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "_Grammatica negeren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Spelling en _grammatica"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "Spelling en grammatica _tonen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "Spelling en grammatica ver_bergen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "Het document nu _controleren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "_Spelling controleren tijdens het typen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "_Grammatica controleren naast spelling"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Lettertype"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Omtrek"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "_Element inspecteren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Geen recente zoekopdrachten"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Recente zoekopdrachten"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "Recente zoekopdrachten _wissen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "term"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definitie"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "druk"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "selecteren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "activeren"
+
+# check / uncheck is aankruisen / deselecteren?
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "deselecteren"
+
+# check / uncheck is aankruisen / deselecteren?
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "aankruisen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "springen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:341
+msgid "Missing Plug-in"
+msgstr "Ontbrekende plug-in"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Plug-in Failure"
+msgstr "Fout in plug-in"
+
+#. FIXME: If this file gets localized, this should really be localized as one string with a wildcard for the number.
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:353
+msgid " files"
+msgstr " bestanden"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:358
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:363
+#, c-format
+msgctxt "Title string for images"
+msgid "%s (%dx%d pixels)"
+msgstr "%s (%d×%d pixels)"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "Loading..."
+msgstr "Laden…"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:380
+msgid "Live Broadcast"
+msgstr "Live-uitzending"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:386
+msgid "audio element controller"
+msgstr "besturing audio-element"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:388
+msgid "video element controller"
+msgstr "besturing video-element"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:390
+msgid "mute"
+msgstr "dempen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:392
+msgid "unmute"
+msgstr "geluid aan"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:394
+msgid "play"
+msgstr "afspelen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:396
+msgid "pause"
+msgstr "pauze"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:398
+msgid "movie time"
+msgstr "afspeelduur"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:400
+msgid "timeline slider thumb"
+msgstr "tijdschuifbalk-miniatuur"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:402
+msgid "back 30 seconds"
+msgstr "30 seconden terug"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:404
+msgid "return to realtime"
+msgstr "terug naar realtime"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:406
+msgid "elapsed time"
+msgstr "verstreken tijd"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:408
+msgid "remaining time"
+msgstr "tijd te gaan"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:410
+msgid "status"
+msgstr "status"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:412
+msgid "fullscreen"
+msgstr "volledig scherm"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:414
+msgid "fast forward"
+msgstr "snel vooruit"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:416
+msgid "fast reverse"
+msgstr "snel achteruit"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "show closed captions"
+msgstr "ondertiteling tonen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "hide closed captions"
+msgstr "ondertiteling verbergen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:429
+msgid "audio element playback controls and status display"
+msgstr "afspeelbesturing en statusweergave audio-element"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:431
+msgid "video element playback controls and status display"
+msgstr "afspeelbesturing en statusweergave video-element"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:433
+msgid "mute audio tracks"
+msgstr "audiosporen dempen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:435
+msgid "unmute audio tracks"
+msgstr "audiosporen laten horen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:437
+msgid "begin playback"
+msgstr "afspelen beginnen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:439
+msgid "pause playback"
+msgstr "afspelen pauzeren"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:441
+msgid "movie time scrubber"
+msgstr "filmtijdscrubber"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:443
+msgid "movie time scrubber thumb"
+msgstr "filmtijdscrubber-miniatuur"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:445
+msgid "seek movie back 30 seconds"
+msgstr "30 seconden terugzoeken in film"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:447
+msgid "return streaming movie to real time"
+msgstr "terugkeren naar realtime in streamende film"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:449
+msgid "current movie time in seconds"
+msgstr "huidige filmtijd in seconden"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:451
+msgid "number of seconds of movie remaining"
+msgstr "aantal seconden film te gaan"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:453
+msgid "current movie status"
+msgstr "huidige filmstatus"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:455
+msgid "seek quickly back"
+msgstr "snel achteruit zoeken"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:457
+msgid "seek quickly forward"
+msgstr "snel vooruit zoeken"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:459
+msgid "Play movie in fullscreen mode"
+msgstr "Film afspelen in volledig scherm"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "start displaying closed captions"
+msgstr "beginnen met tonen van ondertiteling"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:463
+msgid "stop displaying closed captions"
+msgstr "stoppen met tonen van ondertiteling"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:472
+msgid "indefinite time"
+msgstr "onbepaalde tijd"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "value missing"
+msgstr "waarde ontbreekt"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:508
+msgid "type mismatch"
+msgstr "type komt niet overeen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:513
+msgid "pattern mismatch"
+msgstr "patroon komt niet overeen"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:518
+msgid "too long"
+msgstr "te lang"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:523
+msgid "range underflow"
+msgstr "onder bereik"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:528
+msgid "range overflow"
+msgstr "over bereik"
+
+#: ../../../WebCore/platform/gtk/LocalizedStringsGtk.cpp:533
+msgid "step mismatch"
+msgstr "stap komt niet overeen"
+
+#~ msgid "_Searchable Index"
+#~ msgstr "Door_zoekbare index"
diff --git a/Source/WebKit/gtk/po/pa.po b/Source/WebKit/gtk/po/pa.po
new file mode 100644
index 0000000..418192e
--- /dev/null
+++ b/Source/WebKit/gtk/po/pa.po
@@ -0,0 +1,1095 @@
+# This file is put in the public domain.
+#
+# A S Alam <aalam@users.sf.net>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.4\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-02-18 18:25+0530\n"
+"Last-Translator: A S Alam <aalam@users.sf.net>\n"
+"Language-Team: Punjabi/Panjabi <kde-i18n-doc@kde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=2; plural=n != 1;\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "ਫਾਇਲ ਅੱਪਲੋਡ"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "ਇੰਪੁੱਟ ਢੰਗ(_M)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਨਿਸ਼ਾਨ(_L)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਨਿਸ਼ਾਨ(_R)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਇੰਬੈੱਡ(_e)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਇੰਬੈੱਡ(_m)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO ਖੱਬੇ ਤੋਂ ਸੱਜੇ ਉੱਤੇ ਲਿਖੋ(_o)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO ਸੱਜੇ ਤੋਂ ਖੱਬੇ ਉੱਤੇ ਲਿਖੋ(_v)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF ਪੋਪ ਦਿਸ਼ਾ ਫਾਰਮੈਟ(_P)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS ਸਿਫਰ ਚੌੜਾਈ ਥਾਂ(_Z)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ ਸਿਫ਼ਰ ਚੌੜਾਈ ਜੁਆਇੰਨਰ(_j)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ ਸਿਫ਼ਰ ਚੌੜਾਈ ਨਾ-ਜੁਆਇੰਨਰ(_n)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "ਯੂਨੀਕੋਡ ਕੰਟਰੋਲ ਕਰੈਕਟਰ ਪਾਉ(_I)"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "ਨੈੱਟਵਰਕ ਮੰਗ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "URL ਲਈ ਨੈੱਟਵਰਕ ਮੰਗ, ਜਿਸ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾਣਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#, fuzzy
+msgid "Network Response"
+msgstr "ਨੈੱਟਵਰਕ ਮੰਗ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#, fuzzy
+msgid "The network response for the URI that should be downloaded"
+msgstr "URL ਲਈ ਨੈੱਟਵਰਕ ਮੰਗ, ਜਿਸ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਜਾਣਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "ਟਿਕਾਣਾ URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "ਟਿਕਾਣਾ URI, ਜਿੱਥੇ ਫਾਇਲ ਸੰਭਾਲਣੀ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "ਸੁਝਾਇਆ ਫਾਇਲ-ਨਾਂ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "ਜਦੋਂ ਸੰਭਾਲਿਆ ਜਾਂਦਾ ਹੋਵੇ ਤਾਂ ਡਿਫਾਲਟ ਸੁਝਾਇਆ ਫਾਇਲ-ਨਾਂ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "ਤਰੱਕੀ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "ਡਾਊਨਲੋਡ ਦੀ ਮੌਜੂਦ ਤਰੱਕੀ ਜਾਣੋ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "ਹਾਲਤ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "ਮੌਜੂਦਾ ਡਾਊਨਲੋਡ ਦੀ ਹਾਲਤ ਜਾਣੋ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "ਮੌਜੂਦਾ ਸਾਈਜ਼"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "ਪਹਿਲਾਂ ਹੀ ਡਾਊਨਲੋਡ ਕੀਤੇ ਗਏ ਡਾਟੇ ਦੀ ਲੰਬਾਈ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "ਕੁੱਲ ਸਾਈਜ਼"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "ਫਾਇਲ ਦਾ ਕੁੱਲ ਸਾਈਜ਼"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "ਯੂਜ਼ਰ ਨੇ ਡਾਊਨਲੋਡ ਰੱਦ ਕੀਤਾ"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "ਸਾਈਟ %s ਨੇ ਯੂਜ਼ਰ ਨਾਂ ਅਤੇ ਪਾਸਵਰਡ ਦੀ ਮੰਗ ਕੀਤੀ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "ਯੂਜ਼ਰ ਨਾਂ:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "ਪਾਸਵਰਡ:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#, fuzzy
+msgid "_Remember password"
+msgstr "ਪਾਸਵਰਡ ਯਾਦ ਰੱਖੋ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "ਨਾਂ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "ਫਰੇਮ ਦਾ ਨਾਂ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "ਟਾਈਟਲ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "ਫਰੇਮ ਦਾ ਡੌਕੂਮੈਂਟ ਟਾਈਟਲ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "ਫਰੇਮ ਵਲੋਂ ਵੇਖਾਈ ਜਾ ਰਹੀ ਸਮੱਗਰੀ ਦਾ ਮੌਜੂਦਾ URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#, fuzzy
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "ਡਾਊਨਲੋਡ ਦੀ ਮੌਜੂਦ ਤਰੱਕੀ ਜਾਣੋ"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#, fuzzy
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "ਡਾਊਨਲੋਡ ਦੀ ਮੌਜੂਦ ਤਰੱਕੀ ਜਾਣੋ"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ ਟਾਈਟਲ"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "ਬਦਲਵਾਂ ਟਾਈਟਲ"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ ਬਦਲਵਾਂ ਟਾਈਟਲ"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "ਅਸਲ URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "ਅਤੀਤ ਆਈਟਮ ਦਾ ਅਸਲੀ URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "ਆਖਰੀ ਵਾਰ ਖੋਲ੍ਹਣ ਸਮਾਂ"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "ਸਮਾਂ, ਜਿਸ ਦੌਰਾਨ ਅਤੀਤ ਆਈਟਮ ਨੂੰ ਖੋਲ੍ਹਿਆ ਗਿਆ ਸੀ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "ਵੈੱਬ ਝਲਕ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "ਵੈੱਬ ਝਲਕ, ਜੋ ਕਿ ਵੈੱਬ ਇੰਸਪੈਕਟਰ ਖੁਦ ਰੈਂਡਰ ਕਰਦਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "ਜਾਂਚਿਆ URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "URI ਜੋ ਇਸ ਸਮੇਂ ਜਾਂਚਿਆ ਜਾ ਰਿਹਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਪਰੋਫਾਇਲਿੰਗ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਚਲਾਉਣ ਲਈ ਪਰੋਫਾਇਲ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਪਰੋਫਾਇਲਿੰਗ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "ਕਾਰਨ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "ਕਾਰਨ ਕਿ ਕਿਉਂ ਇਹ ਨੇਵੀਗੇਸ਼ਨ ਹੋਈ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "URI, ਜੋ ਕਿ ਨੇਵੀਗੇਸ਼ਨ ਲਈ ਟਾਰਗੇਟ ਵਜੋਂ ਚਾਹੀਦਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "ਬਟਨ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "ਕਲਿੱਕ ਕਰਨ ਵਰਤਣ ਵਾਸਤੇ ਬਟਨ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "ਮਾਡੀਫਾਇਰ ਹਾਲਤ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "ਬਿਟਮਾਸਕ ਮਾਡੀਫਾਈਰ ਸਵਿੱਚਾਂ ਦੀ ਹਾਲਤ ਵੇਖਾਉਦਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#, fuzzy
+msgid "Target frame"
+msgstr "ਫਰੇਮ ਦਾ ਨਾਂ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "URI, ਜੋ ਕਿ ਨੇਵੀਗੇਸ਼ਨ ਲਈ ਟਾਰਗੇਟ ਵਜੋਂ ਚਾਹੀਦਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "ਡਿਫਾਲਟ ਇੰਕੋਡਿੰਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "ਵੇਖਾਏ ਜਾ ਰਹੇ ਟੈਕਸਟ ਲਈ ਡਿਫਾਲਟ ਇੰਕੋਡਿੰਗ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "ਕਰਸਵ ਫੋਂਟ ਵਰਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਕਰਸਵ ਫੋਂਟ ਵਰਗ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਵਰਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਫੋਂਟ ਵਰਗ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "ਫੈਂਸੀ ਫੋਂਟ ਵਰਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਫੈਂਸੀ ਫੋਂਟ ਵਰਗ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "ਮੋਨੋਸਪੇਸ ਫੋਂਟ ਵਰਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਵਰਗ, ਜੋ ਮੋਨੋਸਪੇਸ ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣਾ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "ਸੈਨਜ਼ ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਸੈਨਜ਼ ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣ ਵਾਸਤੇ ਡਿਫਾਲਟ ਸੈਰੀਫ਼ ਫੋਂਟ ਵਰਗ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਸਾਈਜ਼"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਫੋਂਟ ਸਾਈਜ਼।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "ਡਿਫਾਲਟ ਮੋਨੋਸਮਪੇਸ ਫੋਂਟ ਸਾਈਜ਼"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "ਡਿਫਾਲਟ ਫੋਂਟ ਸਾਈਜ਼, ਜੋ ਮੋਨੋਸਪੇਸ ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤਣਾ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "ਘੱਟੋ-ਘੱਟ ਫੋਂਟ ਸਾਈਜ਼"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਵਰਤੇ ਜਾਣ ਵਾਸਤੇ ਘੱਟੋ-ਘੱਟ ਫੋਟ ਸਾਈਜ਼।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "ਘੱਟੋ-ਘੱਟ ਲਾਜ਼ੀਕਲ ਫੋਂਟ ਸਾਈਜ਼"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "ਡਿਸਪਲੇਅ ਟੈਕਸਟ ਵੇਖਾਉਣ ਲਈ ਘੱਟੋ-ਘੱਟ ਲਾਜ਼ੀਕਲ ਫੋਂਟ ਸਾਈਜ਼ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "96 DPI ਲਈ ਮਜ਼ਬੂਰ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "੯੬ DPI ਦੇ ਰੈਜ਼ੋਲੂਸ਼ਨ ਲਈ ਮਜ਼ਬੂਰ ਕਰੋ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "ਚਿੱਤਰ ਆਟੋ ਲੋਡ ਕਰੋ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "ਚਿੱਤਰ ਆਟੋਮੈਟਿਕ ਲੋਡ ਕਰੋ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "ਚਿੱਤਰ ਆਟੋ ਸੁੰਘੜੋ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "ਇੱਕਲੇ ਚਿੱਤਰਾਂ ਨੂੰ ਫਿੱਟ ਕਰਨ ਲਈ ਆਟੋਮੈਟਿਕ ਸੁੰਘੜੋ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "ਬੈਕਗਰਾਊਂਡ ਪਰਿੰਟ ਕਰੋ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "ਕੀ ਬੈਕਗਰਾਊਂਡ ਚਿੱਤਰਾਂ ਨੂੰ ਛਾਪਣਾ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "ਸਕ੍ਰਿਪਟਾਂ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "ਇੰਬੈੱਡ ਸਕ੍ਰਿਪਟ ਭਾਸ਼ਾਵਾਂ ਚਾਲੂ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "ਪਲੱਗਇਨ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "ਇੰਬੈੱਡ ਪਲੱਗਇਨ ਆਬਜੈਕਟ ਚਾਲੂ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "ਮੁੜ-ਆਕਾਰ ਯੋਗ ਟੈਕਸਟ ਖੇਤਰ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "ਕੀ ਟੈਕਸਟ ਖੇਤਰ ਮੁੜ-ਆਕਾਰ ਯੋਗ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "ਯੂਜ਼ਰ ਸਟਾਇਲਸ਼ੀਟ URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "ਸਟਾਈਲਸ਼ੀਟ ਦਾ URI, ਜੋ ਕਿ ਹਰੇਕ ਪੇਜ਼ ਉੱਤੇ ਲਾਗੂ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "ਜ਼ੂਮ ਸਟਿੱਪਿੰਗ ਮੁੱਲ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "ਜਦੋਂ ਜ਼ੂਮ ਇਨ ਜਾਂ ਆਉਟ ਕੀਤਾ ਜਾਵੇ ਤਾਂ ਜ਼ੂਮ ਲੈਵਲ ਬਦਲਣ ਦਾ ਮੁੱਲ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "ਡਿਵੈਲਪਰ ਐਕਸਟਰਾ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "ਖਾਸ ਇਕਸਟੈਨਸ਼ਨ ਚਾਲੂ ਕਰਦਾ ਹੈ, ਜੋ ਡਿਵੈਲਪਰਾਂ ਲਈ ਸਹਾਇਕ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਿੰਗ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਡ ਮੋਡ ਚਾਲੂ ਕਰੋ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+#, fuzzy
+msgid "Enables spell checking while typing"
+msgstr "ਲਿਖਣ ਦੇ ਦੌਰਾਨ ਹੀ ਸਪੈਲਿੰਗ ਚੈੱਕ ਕਰੋ(_T)"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#, fuzzy
+msgid "Enable Caret Browsing"
+msgstr "ਪ੍ਰਾਈਵੇਟ ਬਰਾਊਜ਼ਿੰਗ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#, fuzzy
+msgid "Enable XSS Auditor"
+msgstr "ਸਕ੍ਰਿਪਟਾਂ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#, fuzzy
+msgid "Enable DOM paste"
+msgstr "ਸਕ੍ਰਿਪਟਾਂ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#, fuzzy
+msgid "Whether the page cache should be used"
+msgstr "ਕੀ ਬੈਕਗਰਾਊਂਡ ਚਿੱਤਰਾਂ ਨੂੰ ਛਾਪਣਾ ਹੈ।"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "ਜਾਵਾਸਕ੍ਰਿਪਟ ਪਰੋਫਾਇਲਿੰਗ ਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "@web_view ਦਾ ਡੌਕੂਮੈਂਟ ਟਾਈਟਲ ਦਿੰਦਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "@web_view ਵਲੋਂ ਵੇਖਾਈ ਜਾ ਰਹੀ ਸਮੱਗਰੀ ਦਾ ਮੌਜੂਦਾ URI ਦਿੰਦਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "ਟਾਰਗੇਟ ਲਿਸਟ ਕਾਪੀ ਕਰੋ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "ਕਲਿੱਪਬੋਰਡ ਕਾਪੀ ਕਰਨ ਲਈ ਇਸ ਵੈੱਬ ਝਲਕ ਸਹਿਯੋਗ ਵਾਸਤੇ ਟਾਰਗੇਟ ਦੀ ਲਿਸਟ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "ਟਾਰਗੇਟ ਲਿਸਟ ਚੇਪੋ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "ਕਲਿੱਪਬੋਰਡ ਪੇਸਟਿੰਗ ਲਈ ਇਸ ਵੈੱਬ ਝਲਕ ਸਹਿਯੋਗ ਵਾਸਤੇ ਟਾਰਗੇਟ ਦੀ ਲਿਸਟ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "ਸੈਟਿੰਗ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "ਸਬੰਧਤ WebKitWebSettings ਮੌਕਾ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "ਵੈੱਬ ਇੰਸਪੈਕਟਰ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "ਸਬੰਧਤ WebKitWebInspector ਮੌਕਾ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "ਸੋਧਯੋਗ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "ਕੀ ਸਮੱਗਰੀ ਨੂੰ ਯੂਜ਼ਰ ਵਲੋਂ ਸੋਧਿਆ ਜਾ ਸਕਦਾ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "ਟਰਾਂਸਪਰੇਟ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "ਕੀ ਸਮੱਗਰੀ ਦੀ ਪਾਰਦਰਸ਼ੀ ਬੈਕਗਰਾਊਂਡ ਹੋਵੇ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "ਜ਼ੂਮ ਲੈਵਲ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "ਸਮੱਗਰੀ ਦਾ ਜ਼ੂਮ ਲੈਵਲ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "ਪੂਰੀ ਸਮੱਗਰੀ ਜ਼ੂਮ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "ਜਦੋਂ ਜ਼ੂਮ ਕਰਨਾ ਹੋਵੇ ਤਾਂ ਕੀ ਪੂਰੀ ਸਮਗੱਰੀ ਕਰਨੀ ਹੈ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "ਇੰਕੋਡਿੰਗ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "ਵੈਬ ਝਲਕ ਲਈ ਡਿਫਾਲਟ ਇੰਕੋਡਿੰਗ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "ਪਸੰਦੀਦਾ ਇੰਕੋਡਿੰਗ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "ਵੈੱਬ ਝਲਕ ਲਈ ਕਸਟਮ ਇੰਕੋਡਿੰਗ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "ਭੇਜੋ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "ਮੁੜ-ਸੈੱਟ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "ਫਾਇਲ ਚੁਣੋ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(ਕੋਈ ਨਹੀਂ)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "ਲਿੰਕ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ(_W)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "ਲਿੰਕ ਕੀਤੀ ਫਾਇਲ ਡਾਊਨਲੋਡ ਕਰੋ(_D)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "ਲਿੰਕ ਟਿਕਾਣਾ ਕਾਪੀ ਕਰੋ(_a)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "ਚਿੱਤਰ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ(_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "ਚਿੱਤਰ ਇੰਝ ਸੰਭਾਲੋ(_v)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "ਚਿੱਤਰ ਕਾਪੀ ਕਰੋ(_y)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "ਫਰੇਮ ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲ੍ਹੋ(_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "ਮੁੜ-ਲੋਡ ਕਰੋ(_R)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "ਕੋਈ ਸੁਝਾਅ ਨਹੀਂ ਲੱਭਿਆ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "ਸਪੈਲਿੰਗ ਅਣਡਿੱਠੇ(_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "ਸਪੈਲਿੰਗ ਸਿੱਖੋ(_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "ਵੈੱਬ ਉੱਤੇ ਖੋਜ(_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "ਡਿਕਸ਼ਨਰੀ ਵਿੱਚ ਖੋਜੋ(_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "ਲਿੰਕ ਖੋਲ੍ਹੋ(_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "ਗਰਾਮਰਡ ਅਣਡਿੱਠੀ(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "ਸਪੈਲਿੰਗ ਅਤੇ ਗਰਾਮਰ(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "ਸਪੈਲਿੰਗ ਅਤੇ ਗਰਾਮਰ ਵੇਖੋ(_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "ਸਪੈਲਿੰਗ ਅਤੇ ਗਰਾਮਰ ਓਹਲੇ(_H)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "ਡੌਕੂਮੈਂਟ ਹੁਣੇ ਚੈੱਕ ਕਰੋ(_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "ਲਿਖਣ ਦੇ ਦੌਰਾਨ ਹੀ ਸਪੈਲਿੰਗ ਚੈੱਕ ਕਰੋ(_T)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "ਗਰਾਮਰ ਨਾਲ ਸਪੈਲਿੰਗ ਚੈੱਕ ਕਰੋ(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "ਫੋਂਟ(_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "ਆਉਟਲਾਈਨ(_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "ਐਲੀਮੈਂਟ ਜਾਂਚੋ(_E)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "ਕੋਈ ਤਾਜ਼ਾ ਖੋਜ ਨਹੀਂ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "ਤਾਜ਼ਾ ਖੋਜ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "ਤਾਜ਼ਾ ਖੋਜਾਂ ਸਾਫ਼ ਕਰੋ(_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "ਸ਼ਬਦ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "ਪ੍ਰੀਭਾਸ਼ਾ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "ਦੱਬੋ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "ਚੁਣੋ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "ਐਕਟੀਵੇਟ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "ਅਣ-ਚੋਣ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "ਚੋਣ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "ਜੰਪ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " ਫਾਇਲਾਂ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "ਅਣਜਾਣ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#, fuzzy
+msgid "status"
+msgstr "ਹਾਲਤ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+#, fuzzy
+msgid "indefinite time"
+msgstr "ਪ੍ਰੀਭਾਸ਼ਾ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
+
+#~ msgid "_Searchable Index"
+#~ msgstr "ਖੋਜਯੋਗ ਇੰਡੈਕਸ(_S)"
diff --git a/Source/WebKit/gtk/po/pt.po b/Source/WebKit/gtk/po/pt.po
new file mode 100644
index 0000000..b99048d
--- /dev/null
+++ b/Source/WebKit/gtk/po/pt.po
@@ -0,0 +1,1096 @@
+# webkit's Portuguese translation.
+# This file is put in the public domain.
+# António Lima <amrlima@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.22\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-03-08 01:09+0000\n"
+"Last-Translator: António Lima <amrlima@gmail.com>\n"
+"Language-Team: gnome_pt@yahoogroups.com\n"
+"Language: pt\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"X-Generator: Virtaal 0.5.1\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Enviar Ficheiro"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "_Métodos de Introdução"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LMR marca e_squerda-para-direita"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM marca _direita-para-esquerda"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE _embutidura esquerda-para-direita"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE e_mbutidura direita-para-esquerda"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO s_obrepor esquerda-para-direita"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO so_brepor direita-para-esquerda"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF formatação direccional _Pop"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS espaço de largura _zero"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _união de largura zero"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ _não união de largura zero"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Inserir Carácter de Controlo Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Pedido de Rede"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "O pedido de rede para o URI que deve ser transferido"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Resposta de Rede"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "A resposta de rede para o URI que deve ser transferido"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "URI de Destino"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "O URI de destino onde gravar o ficheiro"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Nome de Ficheiro Sugerido"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "O nome de ficheiro sugerido por omissão ao gravar"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Progresso"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Determina o processo actual da transferência"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Estado"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Determina o estado actual da transferência"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Tamanho Actual"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "O tamanho dos dados já transferidos"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Tamanho Total"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "O tamanho total do ficheiro"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "O utilizador cancelou a transferência"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Um nome de utilizador e senha estão a ser pedidos pelo site %s"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Mensagem do servidor:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Nome de Utilizador:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Senha:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "_Recordar senha"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Nome"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "O nome da moldura"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Título"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "O título de documento da moldura"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "O URI actual dos conteúdos apresentados pela moldura"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Política da Barra de Deslocamento Horizontal"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr ""
+"Determina a política actual para a barra de deslocamento horizontal da "
+"moldura."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Política da Barra de Deslocamento Vertical"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr ""
+"Determina a política actual para a barra de deslocamento vertical da "
+"moldura."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "O titulo do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Título Alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "O titulo alternativo do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "O URI do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "URI Original"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "O URI original do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Hora da última visita"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "A hora à qual o item do histórico foi visitado pela última vez"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Vista Web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "A vista Web que renderiza o próprio Web Inspector"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "URI Inspeccionado"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "O URI que se encontra actualmente a ser inspeccionado"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Activar Perfilar JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Perfilar o JavaScript executado."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Activar perfilar linha temporal"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Perfilar a instrumentação WebCore."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Razão"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "A razão pela qual esta navegação está a ocorrer"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "O URI que foi pedido como alvo para a navegação"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Botão"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "O botão utilizado para clicar"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Estado do modificador"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Uma bitmask representando o estado das chaves do modificador"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Moldura alvo"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "A moldura alvo para a navegação"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Codificação Por Omissão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "A codificação por omissão utilizada para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Família de Fonte Cursive"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "A família de fonte Cursive utilizada por omissão para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Família de Fonte Por Omissão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "A família de fonte utilizada por omissão para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Família de Fonte Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "A família de fonte Fantasy utilizada por omissão para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Família de Fonte Mono-espaçada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr ""
+"A família de fonte mono-espaçada utilizada por omissão para apresentar "
+"texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Família de Fonte Sem Serifa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+"A família de fonte Sem Serifa utilizada por omissão para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Família de Fonte Serifa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "A família de fonte Serifa utilizada por omissão para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Tamanho de Fonte Por Omissão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "O tamanho de fonte utilizado por omissão para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Tamanho de Fonte Mono-espaçada Por Omissão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "O tamanho de fonte mono-espaçada utilizado para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Tamanho Mínimo de Fonte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "O tamanho mínimo de fonte utilizado para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Tamanho Mínimo de Fonte Lógica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "O tamanho mínimo de fonte lógica utilizado para apresentar texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Forçar 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Forçar uma resolução de 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Carregar Imagens Automaticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Carregar imagens automaticamente."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Diminuir Imagens Automaticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Diminuir automaticamente imagens individuais para caber."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Imprimir Fundos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Se as imagens de fundo devem ser impressas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Activar Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Activar linguagens procedimentais embutidas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Activar Plugins"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Activar objectos plugin embutidos."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Áreas de Texto Redimensionáveis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Se as áreas de texto são redimensionáveis."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI de Folha de Estilos do Utilizador"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "O URI de uma folha de estilos que é aplicada a todas as páginas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Valor de Alteração de Zoom"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+"O valor pelo qual o nível de zoom é alterado ao ser aumentado ou diminuído."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Activar Extras de Programador"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Activar extensões especiais que ajudam os programadores"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Activar Navegação Privada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Activa o modo de navegação privada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Activar Verificação Ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Activa a verificação ortográfica ao escrever"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Idiomas a utilizar para verificação ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+"Lista separada por vírgulas de idiomas a utilizar na verificação ortográfica"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Activar Navegação com Cursor"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+"Se deve ser activada a navegação com teclado melhorada para acessibilidade"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Activar Base de Dados HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Se deve ser activado o suporte a base de dados HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Activar Armazenamento Local HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Se deve ser activado o suporte a armazenamento local HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Activar Auditor XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Se deve ser activado o auditor XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Agente de Utilizador"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "A cadeia de caracteres de Agente de Utilizador utilizada pelo WebKitGtk"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript pode abrir janelas automaticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Se o JavaScript pode abrir janelas automaticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Activar cache de aplicações web em modo desligado"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Se deve ser activada a cache de aplicações web em modo desligado"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Comportamento de edição"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "O modo de comportamento utilizar no modo de edição"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Activar acesso universal a partir de URIs de ficheiro"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Se deve ser activado o acesso universal a partir de URIs de ficheiro"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Activar colar DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Se deve ser activado o colar DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Tecla Tab circula pelos elementos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Se a tecla tab circula pelos elementos da página."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Activar Menu de Contexto por Omissão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Activa a gestão de cliques com o botão direito para a criação do menu de "
+"contexto por omissão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "Activar Truques Específicos da Página"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Activar as formas de contornar problemas específicas da página"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Activar cache de página"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Se a cache da página deve ser utilizada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Redimensionar Janela Automaticamente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+"Redimensionar automaticamente janela do nível superior quando é pedido pela "
+"página"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Activar Applet Java"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Se o suporte a Java Applet por <applet> deve estar activo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Devolve o título de documento @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Devolve o URI actual dos conteúdos apresentados pelo @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Copiar lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"A lista de destinos que esta vista web suporta para cópia da área de "
+"transferência"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Colar lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"A lista de destinos que esta vista web suporta para colagem da área de "
+"transferência"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Definições"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Uma instância associada WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Inspector Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "A instância associada WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Possível Editar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Se o conteúdo pode ser modificado pelo utilizador"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Se o conteúdo possui um fundo transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Nível de zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "O nível de zoom do conteúdo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Zoom total de conteúdo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Se todo o conteúdo é escalado ao alterar o zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Codificação"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "A codificação por omissão da vista web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Codificação Personalizada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "A codificação personalizada da vista web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "URI do Ícone"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "O URI do favicon para a #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Submeter"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Reiniciar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Este é um índice que permite procura. Digite palavras de procura:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Escolher Ficheiro"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Nenhum)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Abrir Link numa Nova _Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Transferir Ficheiro Ligado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Copiar Loc_alização do Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Abrir _Imagem em Nova Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Gra_var Imagem Como"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Cop_iar Imagem"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Abrir _Moldura em Nova Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Reler"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Nenhum Palpite Encontrado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignorar Ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Aprender Ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Procurar na Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Verificar no Dicionário"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Abrir Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignorar _Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Ortografia e _Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Mostrar Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Ocultar Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Verificar Documento Agora"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Verificar Ortografia ao _Digitar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Verificar _Gramática com Ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Fonte"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "C_ontorno"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspeccionar _Elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Nenhuma pesquisa recente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Pesquisas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Limpar pesquisas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "termo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definição"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "pressionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "seleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "activar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "desmarcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "marcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "saltar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " ficheiros"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "A Carregar..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Transmissão ao Vivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "controlador de elemento de áudio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "controlador de elemento de vídeo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "silenciar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "ligar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "reproduzir"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pausa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "tempo de filme"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "deslocador de linha temporal thumb"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "para trás 30 segundos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "voltar ao tempo real"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "tempo decorrido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "tempo restante"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "estado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "ecrã completo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "avançar rápido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "retroceder rápido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "mostrar legendas fechadas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "ocultar legendas fechadas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "controlos de reprodução de elemento áudio e apresentação de estado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "controlos de reprodução de elemento vídeo e apresentação de estado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "silenciar faixas áudio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "ligar faixas áudio"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "iniciar reprodução"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "pausar reprodução"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "scrubber de tempo de filme "
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "scrubber thumb de tempo de filme "
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "retroceder filme 30 segundos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "colocar filme em fluxo para tempo real"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "tempo actual do filme em segundos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "número de segundos de filme remanescentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "estado actual do filme"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "retroceder rapidamente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "avançar rapidamente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Reproduzir filme em modo de ecrã completo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "começar a apresentar legendas fechadas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "parar de apresentar legendas fechadas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "tempo indefinido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "valor em falta"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "tipo não coincidente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "padrão não coincidente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "demasiado longo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "underflow de intervalo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "overflow de intervalo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "passo não coincidente"
diff --git a/Source/WebKit/gtk/po/pt_BR.po b/Source/WebKit/gtk/po/pt_BR.po
new file mode 100644
index 0000000..026bb2c
--- /dev/null
+++ b/Source/WebKit/gtk/po/pt_BR.po
@@ -0,0 +1,1101 @@
+# Brazilian Portuguese translations for WebKit package.
+# Copyright (C) 2009 Collabora Ltd.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.4\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2009-04-15 21:39-0300\n"
+"Last-Translator: Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>\n"
+"Language-Team: Brazilian Portuguese\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Enviar Arquivo"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "_Métodos de entrada"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM Marca da _esquerda para a direita"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM Marca da _direita para a esquerda"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE _Embutido da esquerda para a direita"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE E_mbutido da direita para a esquerda"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO _Sobrepor da esquerda para a direita"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO S_obrepor da direita para a esquerda"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "_PDF Mostrar formatação direcional"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "_ZWS Espaço de largura zero"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _União de largura zero"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ _Não-união de largura zero"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Inserir caractere de controle Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Requisição de Rede"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "A requisição de rede para a URI que deve ser baixada"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#, fuzzy
+msgid "Network Response"
+msgstr "Requisição de Rede"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#, fuzzy
+msgid "The network response for the URI that should be downloaded"
+msgstr "A requisição de rede para a URI que deve ser baixada"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "URI de Destino"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "A URI de destino, onde deve ser salvo o arquivo"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Nome de Arquivo Sugerido"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "O nome de arquivo que deve ser usado como padrão ao salvar"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Progresso"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Determina o progresso atual do download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Estado"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Determina o estado atual do download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Tamanho Atual"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "A quantidade de dados já baixados"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Tamanho total"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "O tamanho total do arquivo"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Usuário cancelou o download"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Usuário e senha estão sendo pedidos pelo sítio %s"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Usuário:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Senha:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#, fuzzy
+msgid "_Remember password"
+msgstr "Lembrar senha"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Nome"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "O nome do quadro"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Título"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "O título do documento do quadro"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "A URI atual do conteúdo que está sendo exibido pelo quadro"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#, fuzzy
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Determina o progresso atual do download"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#, fuzzy
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Determina o progresso atual do download"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "O título do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Título Alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "O título alternativo do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "A URI do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "URI Original"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "A URI original do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Hora da Última Visita"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Quando o item do histórico foi visitado pela última vez"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Visão Web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "A visão web que exibe o inspetor web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "URI Inspecionada"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "A URI que está sendo atualmente inspecionada"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Habilitar análise de desempenho de JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Analisar desempenho de JavaScript em execução."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "Habilitar análise de desempenho de JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Razão"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "A razão pela qual essa navegação ocorre"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "A URI que foi requisitada como alvo para a navegação"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Botão"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "O botão usado no clique"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Estado do modificador"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Uma máscara de bits representando o estado das teclas modificadoras"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#, fuzzy
+msgid "Target frame"
+msgstr "O nome do quadro"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "A URI que foi requisitada como alvo para a navegação"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Codificação Padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "A codificação padrão usada para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Família de Fontes Cursivas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "A família de fontes cursivas padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Família de Fontes Padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "A família de fontes padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Família de Fontes Fantasia"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "A família de fontes fantasia padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Família de Fontes Mono-espaçadas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "A família de fontes mono-espaçadas padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Família de Fontes Sem Serifa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "A família de fontes sem serifa padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Família de Fontes Com Serifa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "A família de fontes com serifa padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Tamanho de Fonte Padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "O tamanho de fonte padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Tamanho de fonte mono-espaçada padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "O tamanho de fonte padrão para exibir texto com fonte mono-espaçada."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Tamanho Mínimo de Fonte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "O tamanho mínimo de fontes usadas para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Tamanho de Fonte Mínimo Lógico"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "O tamanho lógico mínimo de fontes usadas para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Forçar 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Força uma resolução de 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Auto-carregamento de Imagens"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Carregar imagens automaticamente."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Auto-Diminuição de Imagens"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automaticamente diminuir imagens sozinhas para caber na tela."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Imprimir Fundos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Se as imagens de fundo devem ser impressas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Habilitar Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Habilitar linguagens de script embutidas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Habilitar Plugins"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Habilitar objetos de plugins embutidos."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Áreas de Texto Redimensionáveis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Se as áreas de texto devem ser redimensionáveis."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI da Folha de Estilo do Usuário"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "A URI de uma folha de estilo que é aplicada a todas as páginas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Valor de Passo do Zoom"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "O valor da variação do zoom ao aproximar ou distanciar."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Habilitar Extas de Desenvolvimento"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Habilita extensões especiais que auxiliam desenvolvedores"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Habilitar Navegação Privativa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Habilita o modo de navegação privativa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+#, fuzzy
+msgid "Enables spell checking while typing"
+msgstr "Verifiação _Ortográfica ao Digitar"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#, fuzzy
+msgid "Enable Caret Browsing"
+msgstr "Habilitar Navegação Privativa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#, fuzzy
+msgid "Enable XSS Auditor"
+msgstr "Habilitar Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#, fuzzy
+msgid "Enable DOM paste"
+msgstr "Habilitar Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#, fuzzy
+msgid "Whether the page cache should be used"
+msgstr "Se as imagens de fundo devem ser impressas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "Habilitar análise de desempenho de JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Retorna o título da visão web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Retorna a URI do conteúdo atualmente exibido pela visão web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Lista de alvos de cópia"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"A lista de alvos que essa visão web suporta para cópia para área de "
+"transferência"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Lista de alvos de cola"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"A lista de alvos que essa visão web suporta para cola da área de "
+"transferência"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Configurações"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Uma instância de WebKitWebSettings associada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Inspetor Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "A instância de WebKitWebInspector que está associada a essa visão"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Editável"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Se o conteúdo pode ser modificado pelo usuário"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Se o conteúdo tem um fundo transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Nível de Zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "O nível de zoom do conteúdo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Zoom Completo do Conteúdo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Se todo o conteúdo é redimensionado no zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Codificação"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "A codificação padrão da visão web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Codificação Customizada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "A codificação customizada da visão web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Enviar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Limpar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Escolher arquivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Nenhum)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Abrir Link em Nova _Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Baixar Arquivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Copiar _Endereço do Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Abrir _Imagem em Nova Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Sal_var Imagem Como"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Co_piar Imagem"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Abrir _Quadro em Nova Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Recarregar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Nenhuma Sugestão Encontrada"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignorar Palavra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Aprender Palavra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Procurar na Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "Procurar no _Dicionário"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Abrir Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignorar _Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "E_xibir Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "E_sconder Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Verificar Documento Agora"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Verifiação _Ortográfica ao Digitar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Verificação _Gramatical ao Digitar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Fonte"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Outline"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspecionar _Elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Não há buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Limpar buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "termo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definição"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "pressionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "selecionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "ativar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "desmarcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "marcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "pular"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr "arquivos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#, fuzzy
+msgid "status"
+msgstr "Estado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+#, fuzzy
+msgid "indefinite time"
+msgstr "definição"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
+
+#~ msgid "_Searchable Index"
+#~ msgstr "Índice de bu_sca"
+
+#~ msgid "Select _All"
+#~ msgstr "Selecionar _Tudo"
diff --git a/Source/WebKit/gtk/po/ru.po b/Source/WebKit/gtk/po/ru.po
new file mode 100644
index 0000000..248a921
--- /dev/null
+++ b/Source/WebKit/gtk/po/ru.po
@@ -0,0 +1,1092 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit git\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: \n"
+"Last-Translator: Anton Shestakov <engored@ya.ru>\n"
+"Language-Team: Russian\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Poedit-Language: Russian\n"
+"X-Poedit-Country: RUSSIAN FEDERATION\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Отправка файла"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "_Методы ввода"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM Метка с_лева направо"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM Метка с_права налево"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Вс_тавка слева направо"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Вст_авка справа налево"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO П_ерекрывание слева направо"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Пере_крывание справа налево"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Расположение по вертикали"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS _Нулевой пробел"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ Нулевой о_бъединитель"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ Нулевой ра_зъединитель"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "Вст_авить управляющий символ Юникод"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Сетевой запрос"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Сетевой запрос для заданного URI, который должен быть выполнен"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#, fuzzy
+msgid "Network Response"
+msgstr "Сетевой запрос"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#, fuzzy
+msgid "The network response for the URI that should be downloaded"
+msgstr "Сетевой запрос для заданного URI, который должен быть выполнен"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "URI назначения"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "Конечный URI для сохранения файла"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Предлагаемое имя файла"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Имя файла, которое предлагается при загрузке по умолчанию"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Прогресс"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Текущий прогресс загрузки"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Состояние"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Текущее состояния загрузки"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Текущий размер"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Объём уже загруженных данных"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Общий размер"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Общий размер файла"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Передача прервана пользователем"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Для сайта %s требуется ввод имени пользователя и пароля"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Имя пользователя:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Пароль:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#, fuzzy
+msgid "_Remember password"
+msgstr "Запомнить пароль"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Имя"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Имя фрейма"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Заголовок"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Заголовок документа фрейма"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Текущий URI содержимого фрейма"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#, fuzzy
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Текущий прогресс загрузки"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#, fuzzy
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Текущий прогресс загрузки"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Заголовок элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Альтернативный заголовок"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Альтернативный заголовок элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "URI элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Изначальный URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Изначальный URI элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Время последнего посещения"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Время последнего посещения элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Исследуемый URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "URI, который исследуется в данный момент"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Включить профилирование JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Профилировать выполняемый код JavaScript."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "Включить профилирование JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Причина"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Причина, по которой происходит данный переход"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "URI, который был указан в запросе на переход"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Кнопка"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Кнопка для нажатия"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Состояние модификаторов"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Битовая маска, представляющая состояния клавиш-модификаторов"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#, fuzzy
+msgid "Target frame"
+msgstr "Имя фрейма"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "URI, который был указан в запросе на переход"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Кодировка по умолчанию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Кодировка текста по умолчанию."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Семейство курсивного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Семейство курсивного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Семейство шрифта по умолчанию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Семейство шрифта по умолчанию для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Семейство декоративного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Семейство декоративного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Семейство моноширинного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "Семейство моноширинного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Семейство шрифта без засечек"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "Семейство шрифта без засечек для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Семейство шрифта с засечками"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Семейство шрифта с засечками для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Размер шрифта по умолчанию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Размер шрифта по умолчанию для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Размер моноширинного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "Размер моноширинного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Минимальный размер шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Минимальный размер шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Минимальный логический размер шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Минимальный логический размер шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Всегда использовать 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Принудительно использовать разрешение 96 точек на дюйм"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Загружать изображения автоматически"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Загружать изображения автоматически."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Масштабировать изображения автоматически"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Автоматически уменьшать отдельные изображения по размеру экрана."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Печатать фоновые изображения"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Должны ли быть выведены на печать фоновые изображения."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Выполнять сценарии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Выполнять встроенные сценарии на страницах."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Использовать модули"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Разрешить встроенные объекты модулей на страницах."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Изменяемый размер текстовых полей"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Текстовые поля могут изменять размер."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI пользовательской таблицы стилей"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "URI таблицы стилей, которая будет применена для всех страниц."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Приращение масштаба"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Значение, на которое будет изменяться значение масштаба."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Включить средства разработчика"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Включить особые расширения, которые могут быть полезны разработчикам"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Включить конфиденциальный режим"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Включает конфиденциальный режим просмотра"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Проверять орфографию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Выполнять проверку орфографии при вводе текста"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Языки для проверки орфографии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+"Список языков через запятую, которые будут использоваться для проверки "
+"орфографии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#, fuzzy
+msgid "Enable XSS Auditor"
+msgstr "Выполнять сценарии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#, fuzzy
+msgid "Enable DOM paste"
+msgstr "Выполнять сценарии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+#, fuzzy
+msgid "Enable page cache"
+msgstr "Проверять орфографию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#, fuzzy
+msgid "Whether the page cache should be used"
+msgstr "Должны ли быть выведены на печать фоновые изображения."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "Включить профилирование JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Настройки"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Связанный экземпляр WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Веб-инспектор"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Связанный экземпляр WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Изменяемое"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Может ли содержимое быть изменено пользователем"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Прозрачное"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Имеется ли у содержимого прозрачный фон"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Масштаб"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Масштаб содержимого страницы"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Кодировка"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Особая кодировка"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Отправить"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Сброс"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Выбрать файл"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Нет)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Открыть ссылку в новом _окне"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Загрузить связанный файл"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "_Копировать ссылку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Открыть _изображение в новом окне"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Со_хранить изображение как..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Коп_ировать изображение"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Открыть _фрейм в новом окне"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Обновить"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Нет вариантов"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Пропустить слово"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Добавить слово"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Найти в сети"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "Найти в _словаре"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "О_ткрыть ссылку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "_Игнорировать грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "_Орфография и грамматика"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Показать орфографию и грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Скрыть орфографию и грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "Проверить _документ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Проверять _орфографию в процессе ввода"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Проверять _также грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Шрифт"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Исследовать _элемент"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Нет недавних поисковых запросов"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Недавние поисковые запросы"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Удалить недавние поисковые запросы"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Неизвестно"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#, fuzzy
+msgid "status"
+msgstr "Состояние"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
diff --git a/Source/WebKit/gtk/po/sl.po b/Source/WebKit/gtk/po/sl.po
new file mode 100644
index 0000000..22dcd8f
--- /dev/null
+++ b/Source/WebKit/gtk/po/sl.po
@@ -0,0 +1,1093 @@
+# Slovenian translation of webkit.
+# Copyright (C) 2002-2007 Free Software Foundation, Inc.
+# This file is distributed under the same license as the webkit package.
+#
+# Matej Urbančič <mateju@svn.gnome.org>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit HEAD\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-03-14 21:30+0100\n"
+"Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
+"Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n%100==4 ? 3 : 0);\n"
+"X-Poedit-Country: SLOVENIA\n"
+"X-Poedit-Language: Slovenian\n"
+"X-Poedit-SourceCharset: utf-8\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Naloži datoteko"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "_Načini vnosa"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM oznaka _Leva-proti-desni"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM oznaka _Desna-proti-levi"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE _Leva-proti-desni _vgradnja"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Desna-proti-levi v_gradnja"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Leva-proti-desni _prepis"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Desna-proti-levi p_repis"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Odprto usmerjeno oblikovanje"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS Presledek _nične dolžine"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _združevalnik nične širine"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ _razdruževalnik nične širine"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Vstavi nadzorni znak Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Omrežna zahteva"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Zahteva omrežja za naslov URI, ki naj bo prejet"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Omrežni odziv"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "Odgovor omrežja za naslov URI, ki naj bo prejet"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "Ciljni URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "Ciljni naslov URI kamor bo shranjena datoteka"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Predlog imena datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Privzeto uporabljeno ime datoteke med shranjevanjem"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Napredek"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Zazna trenutni napredek prejemanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Stanje"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Zazna trenutno stanje prejemanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Trenutna velikost"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Količina že prejetih podatkov"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Skupna velikost"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Velikost datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Uporabnik je preklical prejemanje"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Za obisk strani %s sta zahtevana uporabniško ime in geslo."
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Sporočilo strežnika:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Uporabniško ime:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Geslo:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "Za_pomni si geslo"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Ime"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Ime okvirja"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Naslov"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Naslov dokumenta okvirja"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Obnašanje vodoravnega drsnika"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid "Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Določa trenutno obnašanje vodoravnega drsnika okvirja"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Obnašanje navpičnega drsnika"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Določa trenutno obnašanje navpičnega drsnika okvirja"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Naslov predmeta zgodovine"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Drugotni naslov"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Drugotni naslov predmeta zgodovine"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "Naslov URI predmeta zgodovine"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Osnovni URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Osnovni naslov URI predmeta zgodovine"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Čas zadnjega obiska"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Čas ob katerem je bil predmet zgodovine zadnjič obiskan"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Spletni pogled"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+#, fuzzy
+msgid "Inspected URI"
+msgstr "Osnovni URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Omogoči profiliranje JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Profiliraj izveden JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Omogoči profiliranje časovnice"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+#, fuzzy
+msgid "Profile the WebCore instrumentation."
+msgstr "Ime profila vstavkov"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Vzrok"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Vzrok, zakaj se krmarjenje pojavlja"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+#, fuzzy
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Naslov URI zahtevan za ciljno mesto"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Gumb"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Gumb uporabljen za klik"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Stanje spremenilnika"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Ciljni okvir"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "Osnovni URL ciljnega okvirja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Privzet nabor znakov"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Pisava nabor znakov za prikazovanje besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Družina pisave Cursive"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Privzeta družina pisave Cursive za prikaz besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Privzeta družina pisave"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Privzeta družina pisave za prikaz besedila"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Družina pisave Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Privzeta družina pisave Fantasy za prikaz besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Družina pisave Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "Privzeta družina pisave za prikaz monospace besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Družina pisave Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "Privzeta družina pisave San Serif za prikaz besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Družina pisave Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Privzeta družina pisave Serif za prikaz besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Privzeta velikost pisave"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Privzeta velikost pisave za prikaz besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Privzeta velikost pisave Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "Privzeta velikost pisave za prikaz monospace besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Najmanjša velikost pisave"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Najmanjša velikost pisave uporabljena za prikazovanje besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Najmanjša logična velikost pisave"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Najmanjša logična velikost pisave za prikazovanje besedila."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Vsili 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Vsili ločljivost 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Samodejno naloži slike"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Samodejno nalaganje slik."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Samodejno skrči velikost okna"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Samodejno skrči samostojne slike na širino okna."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Natisni _ozadja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Ali naj bo mogoče slike ozadja natisniti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Omogoči skripte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Omogoči izvajanje skript skriptnih jezikov"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Omogoči vstavke"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Omogoči predmete vstavkov"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Prilagodljiva besedilna območja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Ali je mogoče besedilna polja prilagajati po velikosti."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "Naslov URI uporabniške slogovne predloge"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Vrednost koraka približevanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Vrednost, ki določa raven približevanja med približevanjem ali oddaljevanjem slike."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Omogoči dodatna razvojna orodja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Omogoči zasebno brskanje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Omogoči način varnega zasebnega brskanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Omogoči črkovanje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Omogoči preverjanje črkovanja med tipkanjem"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Izbor jezika za preverjanje črkovanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Z vejico ločen seznam jezikov za črkovanje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Omogoči brskanje s kazalko"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Omogoči HTML5 podatkovno zbirko"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Ali naj se omogoči podpora HTML podatkovne zbirke"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Omogoči hTML5 krajevno shranjevanje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Ali naj se omogoči podpora HTML krajevnega shranjevanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Omogoči XSS Auditor"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Ali naj se omogoči XSS auditor"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Uporabniški agent"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "Niz uporabniškega agenta, ki ga uporablja WebKitGtk"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript program lahko samodejno odpre okno"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Ali je mogoče z JavaScript programom samodejno odpreti okno"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Omogoči predpomnilnik za brskanje vsebine brez povezave"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Ali naj bo omogočen predpomnilnik programa za brskanje brez povezave"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Obnašanje urejanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "Način obnašanja uporabljen v načinu urejanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Ali je dovoljen splošen dostop preko naslova URI datoteke"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Omogoči DOM prilepljenje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Ali naj bo omogočeno DOM prilepljenje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Tipka tab kroži med predmeti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Ali tipka tab kroži med predmeti na strani."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Omogoči privzeti vsebinski meni"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid "Enables the handling of right-clicks for the creation of the default context menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+#, fuzzy
+msgid "Enable Site Specific Quirks"
+msgstr "Poganjanje posebnega ukaza za spletišče"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Omogoči predpomnilnik strani"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Ali naj bo uporabljen predpomnilnik strani"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Samodejno prilagodi velikost okna"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "Samodejno prilagodi velikost vrhnjega okna, kadar to zahteva stran"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Omogoči Java aplet"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Ali je omogočena podpora za Java aplete preko oznake <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Vrne @web_pogled naslov dokumenta"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Vrne trenutni naslov URI vsebine prikazane preko @web_pogleda"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Kopiraj seznam ciljev"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+#, fuzzy
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "Seznam ciljev katerih medpomnilnik podpira možnost kopiraj v odložišče in DND vire."
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Prilepi seznam ciljev"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+#, fuzzy
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "Seznam ciljev katerih medpomnilnik podpira možnost prilepi v odložišče in DND cilje."
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Nastavitve"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Povezan primerek WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Spletni nadzornik"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Povezan primerek WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Uredljivo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Ali lahko uporabnik spremeni vsebino"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Prozorno"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Ali ima vsebina prozorno ozadje"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Raven približanja"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Raven približanja vsebine"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Polno približanje vsebine"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Ali naj bo celotna vsebina prilagojena velikosti ob približevanju"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Nabor znakov"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Privzeti nabor znakov spletnega pogleda"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Nabor znakov po meri"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Nabor znakov spletnega pogleda po meri"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "Ikona URI"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+#, fuzzy
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "Zaznamek za URI '%s' že obstaja"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Pošlji"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Ponovno nastavi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Po kazalu je mogoče iskati. Vnesite ključne besede:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Izbor datoteke"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Brez)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Odpri povezavo v _novem oknu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Prejmi povezano datoteko"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Kopiraj mesto _povezave"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Odpri _sliko v novem oknu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "S_hrani sliko kot"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "_Kopiraj sliko"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Odpri okvir v _novem oknu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Ponovno naloži"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+#, fuzzy
+msgid "No Guesses Found"
+msgstr "Ni najdenih predmetov"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Prezri črkovanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Zapomni si črkovanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Preišči splet"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Poišči besede v slovarju"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Odpri povezavo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Prezri _slovnico"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Črkovanje in _slovnica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Pokaži črkovanje in slovnico"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Skrij črkovanje in slovnico"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Takoj preveri dokument"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Preveri _črkovanja med tipkanjem"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Preveri _slovnico med tipkanjem"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Pisava"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Oris"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+#, fuzzy
+msgid "Inspect _Element"
+msgstr "Preuči _predmet"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Ni nedavnih nizov iskanja"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "_Nedavno iskanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Počisti nedavno iskanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "pojem"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "določilo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "pritisni"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "izberi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "omogoči"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "odstrani izbor"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "preveri"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "skoči"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr "datoteke"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Neznano"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Nalaganje ..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Oddajanje v živo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "nadzornik zvočnega predmeta"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "nadzornik slikovnega predmeta"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "nemo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "povrni glasnost"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "predvajaj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "premor"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "čas filma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "sličica časovnega drsnika"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "nazaj 30 sekund"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "vrni se na pravi čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "pretečeni čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "preostali čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "stanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "celozaslonski način"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "hitro naprej"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "hitro nazaj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "pokaži zaprte naslove"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "skrij zaprte naslove"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "prikaz stanja in nadzora predvajanja zvočnih predmetov"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "prikaz stanja in nadzora predvajanja slikovnih predmetov"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "neme zvočne sledi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "povrnjena glasnost zvočnih sledi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "začetek predvajanja"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "premor predvajanja"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "časovni drsnik posnetka"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "sličica časovnega drsnika posnetka"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "preskoči posnetek 30 sekund nazaj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "vrni pretok predvajanja na pravi čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "trenuten čas predvajanja v sekundah"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "preostali čas filmaštevilo sekund preden se časomer ustavi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "trenutno stanje filma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "hitro išči nazaj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "hitro išči naprej"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Predvajanje filma v celozaslonskem načinu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "začni prikazovanje zaprtih naslovov"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "zaustavi prikazovanje zaprtih naslovov"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "nedoločen čas"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "manjka vrednost"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "vrsta ne ustreza"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "vzorec ne ustreza"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "predolgo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "pod območjem omejitve"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "prekoračitev območja"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "korak ne ustreza"
+
+#, fuzzy
+#~ msgid "_Searchable Index"
+#~ msgstr "Povrni določila"
+
diff --git a/Source/WebKit/gtk/po/sr.po b/Source/WebKit/gtk/po/sr.po
new file mode 100644
index 0000000..b132c8d
--- /dev/null
+++ b/Source/WebKit/gtk/po/sr.po
@@ -0,0 +1,1086 @@
+# Serbian translation of webkit
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2009.
+#
+# This file is distributed under the same license as the webkit package.
+#
+# Review by Бранко Кокановић <branko.kokanovic@gmail.com> (27.6.2009.)
+# Милош Поповић <gpopac@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.10\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-08-31 04:14+0200\n"
+"Last-Translator: Милош Поповић <gpopac@gmail.com>\n"
+"Language-Team: Serbian <gnom@prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Пошаљи датотеку"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Начин _уноса"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "Ознака с _лева на десно"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "Ознака с _десна на лево"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "_Уметање с лева на десно"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "У_метање с десна на лево"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "_Препис с лева на десно"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "П_репис с десна на лево"
+
+# Ух, ух, ух... ~Милош :(
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "Искачуће ПДФ _дирекционо форматирање"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "_Нула са тачком"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "П_рецртана нула"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "Н_епрецртана нула"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Уметни уникод контролни знак"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Захтев на мрежи"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Захтевана адресе датотеке коју желите да преузмете"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Мрежни одговор"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "Одговор на захтевану адресу датотеке коју желите да преузмете"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "Циљна адреса"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "Циљна адреса где желите да сачувате датотеку"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Предложено име датотеке"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Подразумевано име датотеке приликом чувања"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Преузето"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Показује тренутни напредак преузимања"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Стање"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Показује тренутно стање преузимања"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Величина"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Приказује величину преузете датотеке"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Укупна величина"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Приказује укупну величину преузете датотеке"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Прекинута преузимања"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Страница %s захтева корисничко име и лозинку"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Порука са сервера:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Корисничко име:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Лозинка:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "_Упамти лозинку"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Име"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Име оквира"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Наслов"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Наслов документа унутар оквира"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "Адреса"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Адреса садржаја који је приказан унутар оквира"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Хоризонтални клизач"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Одређује смер хоризонталног клизача унутар оквира."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Вертикални клизач"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Одређује смер вертикалног клизача унутар оквира."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Наслов за ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Променљив наслов"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Променљив наслов ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "Адреса ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Оригинална адреса"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Оригинална адреса ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Последња посета"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Време када је ставка из историјата последњи пут посећена"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Веб приказ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Веб приказ кога исцртава „Веб инспектор“"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Инспекција адресе"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "Адреса коју тренутно обрађује инспектор"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Омогући учење Јава скрипте"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Прави профил покренуте Јава скрипте."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Омогући временски профил"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Прави профил WebCore алаки."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Разлог"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Разлог због кога је приказана навигација"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Циљна адреса коју захтева навигација"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Дугме"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Дугме које се притиска"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Стање измењивача"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Ознака која одређује да ли је укључен тастер за измену функције"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Циљни оквир"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Циљни оквир за навигацију"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Подразумевано кодирање"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Подразумевано кодирање за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Скуп искошених фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Подразумевани скуп искошених фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Подразумевани скуп фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Подразумевани скуп фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Скуп фантази фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Подразумевани скуп фантази фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Скуп равномерних фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "Подразумевани скуп равномерно широких фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Скуп безсерифних фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "Подразумевани скуп безсерифних фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Скуп серифних фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Подразумевани скуп серифних фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Подразумевана величина фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Подразумевана величина фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Подразумевана величина разномерног фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "Подразумевана величина равномерно широких фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Најмања величина фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Најмања величина фонта за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Најмања логичка величина фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Најмања логичка величина фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Приморај 96 ТПИ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Приморава резолуцију од 96 ТПИ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Сам учитај слике"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Аутоматски учитава слике."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Сам смањи слике"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Аутоматску умањује слике тако да се уклопиле у страну."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Исцртај позадину"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Одређује да ли да се приказују позадинске слике."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Омогући скрипте"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Укључује језике за скрипте уметнуте унутар страница."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Омогући додатке"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Укључује објекте уметнуте унутар страница."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Текст променљиве величине"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Одређује да ли да област са текстом буде променљиве величине."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "Адреса датотеке са стилом"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+"Путања до датотеке са сопственим стилом који се примењује на сваку страницу."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Корак увећања"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Вредност за коју се мења приказ приликом повећања или смањења."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Укључи додатке за развој"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Укључује додатке који помажу приликом развоја овог програма"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Приватни режим"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Укључује режим разгледања уз чување ваше приватности"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Омогући проверу писања"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Укључује проверу писања док куцате"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Језик за проверу писања"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Списак језика раздвојених тачком који се користе за проверу писања"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Преглед са показивачем"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "Одређује да ли да се користи приступачнија тастатура за навигацију"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Укључи ХТМЛ5 базу података"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Одређује да ли је подржана ХТМЛ5 база података"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Укључи ХТМЛ5 складиште"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Одређује да ли је подржано локално ХТМЛ5 складиште"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Омогући ИксСС ревизију"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Одређује да ли је укључена ИксСС ревизија"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Представљање прегледника"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "Ниска за представљање WebKitGtk прегледника (кориснички агент)"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "Дозволи Јава скриптама да отворе прозор"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Одређује да ли Јава скрипте могу да отворе нове прозоре"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Омогући оставу за рад ван мређе"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Одређује да ли се користи остава за рад програма ван мреже"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Понашање уређивача"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "Понашање када се користи режим за уређивање"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Универзални приступ из адреса датотеке"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Одређује да ли је укључен универзални приступ из адреса датотеке"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Укључи ДОМ убацивање"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Одређује да ли је омогућено ДОМ убацивање"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Tab тастер листа делове странице"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Одређује да ли да Tab тастер листа елементе странице."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Подразумевани приручни мени"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr "Приказује подразумевани приручни мени при клику десног тастера миша"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "Прихвати распоред са странице"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Омогућава разне досетке сајтова за приказ странице"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Укључи оставу за странице"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Одређује да ли да се чувају странице у оставу"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Сам промени величину прозора"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "Сам повећава величину основног прозора када странице то захтевају"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Омогући Јава програмчиће"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Да ли да укључим подршку за Јава програмчиће кроз <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Исписује наслов документа из @веб_прегледа"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Исписује тренутну адресу садржаја приказаног у @веб_прегледу"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Умножи списак циљева"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "Циљева за копирање међу списак исечака које подржава веб преглед"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Убаци списак циљева"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "Списак циљева за убацивање из оставе које подржава веб преглед"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Подешавања"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Повезано са WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Веб инспектор"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Повезано са WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Измењиво"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Омогућава кориснику да уређује приказани садржај"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Провидност"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Омогућава провидну позадину за садржај"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Увећање"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Ниво увећања приказаног садржаја"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Увећавај све"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Одређује да ли да се увећава целокупан садржај"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Кодирање"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Подразумевано кодирање веб странице"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Произвољно кодирање"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Произвољно кодирање веб странице"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "Адреса иконице"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "Адреса иконице за #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Пошаљи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Поништи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Можете претражити индекс. Унесите речи за претрагу:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Изаберите датотеку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(ништа)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Отвори везу у _новом прозору"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Преузми циљну датотеку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Умножи _адресу везе"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "_Отвори слику у новом прозору"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "_Сачувај слику као"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "_Умножи слику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "О_твори оквир у новом прозору"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Освежи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Нема поклапања"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Занемари ову реч"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Упамти ову реч"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Потражи на мрежи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Потражи у директоријуму"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Отвори везу"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Занемари _правопис"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Провера пи_сања и правописа"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Прикажи проверу писања и правописа"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "С_акриј проверу писања и правописа"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "Про_вери документ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Провери писање _док куцам"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "П_ровери правопис и писање"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Фонт"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Оквир"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Инспекција _елемента"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Нема скорашњих претрага"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Скорашње претраге"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Очисти скорашње претраге"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "термин"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "дефиниција"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "притисни"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "изабери"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "покрени"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "искључи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "укључи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "иди"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " датотеке"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Непознато"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Учитавам..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Пренос уживо"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "контрола звучног елемента"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "контрола видео елемента"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "утишај"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "појачај"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "пусти"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "паузирај"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "трајање филма"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "линија са временом"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "назад за 30 s"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "врати у реално време"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "прегледано"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "преостало"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "стање"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "цео екран"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "премотај унапред"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "премотај уназад"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "прикажи затворене наslove"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "сакриј затворене наslove"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "стање и контрола пуштања звучних елемената"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "стање и контрола пуштања видео елемената"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "утишај звук"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "појачај звук"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "пусти"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "паузирај"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "исписано време филма"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "клик за исписано време филма"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "премотај филм уназад за 30 s"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "настави приказ филма у реалном времену"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "протекло трајање филма у секундама"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "преостало трајање филма у секундама"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "стање филма"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "брзо премотај уназад"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "брзо премотај унапред"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Пушта филм преко целог екрана"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "приказуј затворене опције"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "не приказуј затворене опције"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "бесконачно трајање"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "недостаје вредност"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "не поклапа се врста"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "не поклапа се шаблон"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "предугачко"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "опсег подкорачен"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "опсег прекорачен"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "не поклапа се корак"
+
+#~ msgid "_Searchable Index"
+#~ msgstr "_Претражив индекс"
diff --git a/Source/WebKit/gtk/po/sr@latin.po b/Source/WebKit/gtk/po/sr@latin.po
new file mode 100644
index 0000000..7fb251d
--- /dev/null
+++ b/Source/WebKit/gtk/po/sr@latin.po
@@ -0,0 +1,1086 @@
+# Serbian translation of webkit
+# Courtesy of Prevod.org team (http://prevod.org/) -- 2009.
+#
+# This file is distributed under the same license as the webkit package.
+#
+# Review by Branko Kokanović <branko.kokanovic@gmail.com> (27.6.2009.)
+# Miloš Popović <gpopac@gmail.com>, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.10\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-08-31 04:14+0200\n"
+"Last-Translator: Miloš Popović <gpopac@gmail.com>\n"
+"Language-Team: Serbian <gnom@prevod.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=4; plural=n==1? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Pošalji datoteku"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Način _unosa"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "Oznaka s _leva na desno"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "Oznaka s _desna na levo"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "_Umetanje s leva na desno"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "U_metanje s desna na levo"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "_Prepis s leva na desno"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "P_repis s desna na levo"
+
+# Uh, uh, uh... ~Miloš :(
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "Iskačuće PDF _direkciono formatiranje"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "_Nula sa tačkom"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "P_recrtana nula"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "N_eprecrtana nula"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Umetni unikod kontrolni znak"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Zahtev na mreži"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Zahtevana adrese datoteke koju želite da preuzmete"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Mrežni odgovor"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "Odgovor na zahtevanu adresu datoteke koju želite da preuzmete"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "Ciljna adresa"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "Ciljna adresa gde želite da sačuvate datoteku"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Predloženo ime datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Podrazumevano ime datoteke prilikom čuvanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Preuzeto"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Pokazuje trenutni napredak preuzimanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Stanje"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Pokazuje trenutno stanje preuzimanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Veličina"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Prikazuje veličinu preuzete datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Ukupna veličina"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Prikazuje ukupnu veličinu preuzete datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Prekinuta preuzimanja"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Stranica %s zahteva korisničko ime i lozinku"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Poruka sa servera:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Korisničko ime:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Lozinka:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "_Upamti lozinku"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Ime"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Ime okvira"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Naslov"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Naslov dokumenta unutar okvira"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "Adresa"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Adresa sadržaja koji je prikazan unutar okvira"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Horizontalni klizač"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Određuje smer horizontalnog klizača unutar okvira."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Vertikalni klizač"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Određuje smer vertikalnog klizača unutar okvira."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Naslov za stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Promenljiv naslov"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Promenljiv naslov stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "Adresa stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Originalna adresa"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Originalna adresa stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Poslednja poseta"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Vreme kada je stavka iz istorijata poslednji put posećena"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Veb prikaz"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Veb prikaz koga iscrtava „Veb inspektor“"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Inspekcija adrese"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "Adresa koju trenutno obrađuje inspektor"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Omogući učenje Java skripte"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Pravi profil pokrenute Java skripte."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Omogući vremenski profil"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Pravi profil WebCore alaki."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Razlog"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Razlog zbog koga je prikazana navigacija"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Ciljna adresa koju zahteva navigacija"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Dugme"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Dugme koje se pritiska"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Stanje izmenjivača"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Oznaka koja određuje da li je uključen taster za izmenu funkcije"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Ciljni okvir"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Ciljni okvir za navigaciju"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Podrazumevano kodiranje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Podrazumevano kodiranje za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Skup iskošenih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Podrazumevani skup iskošenih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Podrazumevani skup fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Podrazumevani skup fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Skup fantazi fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Podrazumevani skup fantazi fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Skup ravnomernih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "Podrazumevani skup ravnomerno širokih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Skup bezserifnih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "Podrazumevani skup bezserifnih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Skup serifnih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Podrazumevani skup serifnih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Podrazumevana veličina fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Podrazumevana veličina fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Podrazumevana veličina raznomernog fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "Podrazumevana veličina ravnomerno širokih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Najmanja veličina fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Najmanja veličina fonta za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Najmanja logička veličina fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Najmanja logička veličina fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Primoraj 96 TPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Primorava rezoluciju od 96 TPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Sam učitaj slike"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Automatski učitava slike."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Sam smanji slike"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automatsku umanjuje slike tako da se uklopile u stranu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Iscrtaj pozadinu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Određuje da li da se prikazuju pozadinske slike."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Omogući skripte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Uključuje jezike za skripte umetnute unutar stranica."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Omogući dodatke"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Uključuje objekte umetnute unutar stranica."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Tekst promenljive veličine"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Određuje da li da oblast sa tekstom bude promenljive veličine."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "Adresa datoteke sa stilom"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+"Putanja do datoteke sa sopstvenim stilom koji se primenjuje na svaku stranicu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Korak uvećanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Vrednost za koju se menja prikaz prilikom povećanja ili smanjenja."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Uključi dodatke za razvoj"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Uključuje dodatke koji pomažu prilikom razvoja ovog programa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Privatni režim"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Uključuje režim razgledanja uz čuvanje vaše privatnosti"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Omogući proveru pisanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Uključuje proveru pisanja dok kucate"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Jezik za proveru pisanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Spisak jezika razdvojenih tačkom koji se koriste za proveru pisanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Pregled sa pokazivačem"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "Određuje da li da se koristi pristupačnija tastatura za navigaciju"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Uključi HTML5 bazu podataka"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Određuje da li je podržana HTML5 baza podataka"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Uključi HTML5 skladište"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Određuje da li je podržano lokalno HTML5 skladište"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Omogući IksSS reviziju"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Određuje da li je uključena IksSS revizija"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Predstavljanje preglednika"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "Niska za predstavljanje WebKitGtk preglednika (korisnički agent)"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "Dozvoli Java skriptama da otvore prozor"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Određuje da li Java skripte mogu da otvore nove prozore"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Omogući ostavu za rad van mređe"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Određuje da li se koristi ostava za rad programa van mreže"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Ponašanje uređivača"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "Ponašanje kada se koristi režim za uređivanje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Univerzalni pristup iz adresa datoteke"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Određuje da li je uključen univerzalni pristup iz adresa datoteke"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Uključi DOM ubacivanje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Određuje da li je omogućeno DOM ubacivanje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Tab taster lista delove stranice"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Određuje da li da Tab taster lista elemente stranice."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Podrazumevani priručni meni"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr "Prikazuje podrazumevani priručni meni pri kliku desnog tastera miša"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "Prihvati raspored sa stranice"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Omogućava razne dosetke sajtova za prikaz stranice"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Uključi ostavu za stranice"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Određuje da li da se čuvaju stranice u ostavu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Sam promeni veličinu prozora"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "Sam povećava veličinu osnovnog prozora kada stranice to zahtevaju"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Omogući Java programčiće"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Da li da uključim podršku za Java programčiće kroz <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Ispisuje naslov dokumenta iz @veb_pregleda"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Ispisuje trenutnu adresu sadržaja prikazanog u @veb_pregledu"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Umnoži spisak ciljeva"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "Ciljeva za kopiranje među spisak isečaka koje podržava veb pregled"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Ubaci spisak ciljeva"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "Spisak ciljeva za ubacivanje iz ostave koje podržava veb pregled"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Podešavanja"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Povezano sa WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Veb inspektor"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Povezano sa WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Izmenjivo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Omogućava korisniku da uređuje prikazani sadržaj"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Providnost"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Omogućava providnu pozadinu za sadržaj"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Uvećanje"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Nivo uvećanja prikazanog sadržaja"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Uvećavaj sve"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Određuje da li da se uvećava celokupan sadržaj"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Kodiranje"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Podrazumevano kodiranje veb stranice"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Proizvoljno kodiranje"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Proizvoljno kodiranje veb stranice"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "Adresa ikonice"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "Adresa ikonice za #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Pošalji"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Poništi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Možete pretražiti indeks. Unesite reči za pretragu:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Izaberite datoteku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(ništa)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Otvori vezu u _novom prozoru"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Preuzmi ciljnu datoteku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Umnoži _adresu veze"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "_Otvori sliku u novom prozoru"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "_Sačuvaj sliku kao"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "_Umnoži sliku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "O_tvori okvir u novom prozoru"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Osveži"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Nema poklapanja"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Zanemari ovu reč"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Upamti ovu reč"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Potraži na mreži"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Potraži u direktorijumu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Otvori vezu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Zanemari _pravopis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Provera pi_sanja i pravopisa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Prikaži proveru pisanja i pravopisa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "S_akrij proveru pisanja i pravopisa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "Pro_veri dokument"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Proveri pisanje _dok kucam"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "P_roveri pravopis i pisanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Font"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Okvir"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspekcija _elementa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Nema skorašnjih pretraga"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Skorašnje pretrage"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Očisti skorašnje pretrage"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "termin"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definicija"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "pritisni"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "izaberi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "pokreni"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "isključi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "uključi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "idi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " datoteke"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Nepoznato"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Učitavam..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Prenos uživo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "kontrola zvučnog elementa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "kontrola video elementa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "utišaj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "pojačaj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "pusti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "pauziraj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "trajanje filma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "linija sa vremenom"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "nazad za 30 s"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "vrati u realno vreme"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "pregledano"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "preostalo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "stanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "ceo ekran"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "premotaj unapred"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "premotaj unazad"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "prikaži zatvorene naslove"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "sakrij zatvorene naslove"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "stanje i kontrola puštanja zvučnih elemenata"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "stanje i kontrola puštanja video elemenata"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "utišaj zvuk"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "pojačaj zvuk"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "pusti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "pauziraj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr "ispisano vreme filma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr "klik za ispisano vreme filma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "premotaj film unazad za 30 s"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "nastavi prikaz filma u realnom vremenu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "proteklo trajanje filma u sekundama"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "preostalo trajanje filma u sekundama"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "stanje filma"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "brzo premotaj unazad"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "brzo premotaj unapred"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Pušta film preko celog ekrana"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "prikazuj zatvorene opcije"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "ne prikazuj zatvorene opcije"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "beskonačno trajanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "nedostaje vrednost"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "ne poklapa se vrsta"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "ne poklapa se šablon"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "predugačko"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "opseg podkoračen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "opseg prekoračen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "ne poklapa se korak"
+
+#~ msgid "_Searchable Index"
+#~ msgstr "_Pretraživ indeks"
diff --git a/Source/WebKit/gtk/po/sv.po b/Source/WebKit/gtk/po/sv.po
new file mode 100644
index 0000000..d8f7e34
--- /dev/null
+++ b/Source/WebKit/gtk/po/sv.po
@@ -0,0 +1,1101 @@
+# Swedish translation for webkitgtk+.
+# This file is put in the public domain.
+# Daniel Nylander <po@danielnylander.se>, 2009, 2010.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkitgtk+\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-02-21 10:35+0100\n"
+"Last-Translator: Daniel Nylander <po@danielnylander.se>\n"
+"Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Skicka upp fil"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Inmatnings_metoder"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM _Left-to-right mark"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM _Right-to-left mark"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Left-to-right _embedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Right-to-left e_mbedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Left-to-right _override"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Right-to-left o_verride"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Pop directional formatting"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS _Zero width space"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ Zero width _joiner"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ Zero width _non-joiner"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Infoga Unicode-styrtecken"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Nätverksbegäran"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Nätverksbegäran för URI:n som ska hämtas"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#, fuzzy
+msgid "Network Response"
+msgstr "Nätverksbegäran"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#, fuzzy
+msgid "The network response for the URI that should be downloaded"
+msgstr "Nätverksbegäran för URI:n som ska hämtas"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "Destinations-URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "Destinations-URI där sparning ska ske av filen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Föreslaget filnamn"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Föreslaget filnamn som standard vid sparning"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Förlopp"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Fastställer aktuellt förlopp för hämtningen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Fastställer aktuell status för hämtningen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Aktuell storlek"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Längden för det data som redan hämtats"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Total storlek"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Totala storleken för filen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Användaren avbröt hämtningen"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Ett användarnamn och lösenord begärs av platsen %s"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Användarnamn:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#, fuzzy
+msgid "_Remember password"
+msgstr "Kom ihåg lösenordet"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Namn"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Namnet på ramen"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Titel"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Dokumenttiteln för ramen"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Aktuella URI:n för innehållet som visas av ramen"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#, fuzzy
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Fastställer aktuellt förlopp för hämtningen"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#, fuzzy
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Fastställer aktuellt förlopp för hämtningen"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Titeln för historikobjektet"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Alternativ titel"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Alternativ titel för historikobjektet"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "URI:n för historikobjektet"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Ursprunglig URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Ursprungliga URI:n för historikobjektet"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Senast besökt"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Tiden för vilket historikobjektet senast besöktes"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Webbvy"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Webbvyn som renderar själva Webbinspektören"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Inspekterad URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "URI:n som för närvarande inspekteras"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Aktivera JavaScript-profilering"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Profilera det körda JavaScript."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "Aktivera JavaScript-profilering"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Anledning"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Anledningen varför denna navigering sker"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "URI:n som begärdes som mål för navigeringen"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Knapp"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Knappen som användes för att klicka"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Modifierartillstånd"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "En bitmask som representerar tillståndet för modifierartangenterna"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#, fuzzy
+msgid "Target frame"
+msgstr "Namnet på ramen"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "URI:n som begärdes som mål för navigeringen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Standardteckenkodning"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Standardkodningen som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Typsnittsfamiljen Cursive"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Standardfamiljen för Cursive-typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Standardfamilj för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Standardfamiljen för typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Typsnittsfamiljen Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Standardfamiljen för Fantasy-typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Typsnittsfamiljen Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr ""
+"Standardfamiljen för typsnitt som används för att visa text med fast "
+"breddsteg."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Typsnittsfamiljen Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+"Standardfamiljen för Sans Serif-typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Typsnittsfamiljen Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Standardfamiljen för Serif-typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Standardstorlek för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Standardstorleken för typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Standardstorlek för Monospace-typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr ""
+"Standardstorleken för typsnitt som används för att visa text med fast "
+"breddsteg."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Minimumstorlek för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Minimumstorlek för typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Logisk minimumstorlek för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Logisk minimumstorlek för typsnitt som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Tvinga 96 punkter/tum"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Tvinga en upplösning på 96 punkter/tum"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Läs automatiskt in bilder"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Läs in bilder automatiskt."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Minska bilder automatiskt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Minska automatiskt fristående bilder till att passa."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "Skriv ut bakgrunder"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Huruvida bakgrundsbilder ska skrivas ut."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Aktivera skript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Aktivera inbäddade skriptspråk."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Aktivera insticksmoduler"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Aktivera inbäddade insticksobjekt."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Storleksändringsbara textområden "
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Huruvida textområden kan storleksändras."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI för användarstilmall"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "URI:n för en stilmall som tillämpas på varje sida."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Stegvärde för zoom"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Värdet med vilket zoomnivå ändras vid in- eller utzoomning."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Aktivera extrafunktioner för utvecklare"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Aktiverar speciella tillägg som hjälper utvecklarna"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Aktivera privat surfning"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Aktiverar läget för privat surfning"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+#, fuzzy
+msgid "Enables spell checking while typing"
+msgstr "Kontrollera stavning vid _inmatning"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#, fuzzy
+msgid "Enable Caret Browsing"
+msgstr "Aktivera privat surfning"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#, fuzzy
+msgid "Enable XSS Auditor"
+msgstr "Aktivera skript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#, fuzzy
+msgid "Enable DOM paste"
+msgstr "Aktivera skript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#, fuzzy
+msgid "Whether the page cache should be used"
+msgstr "Huruvida bakgrundsbilder ska skrivas ut."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "Aktivera JavaScript-profilering"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Returnerar dokumenttiteln för @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Returnerar den aktuella URI:a för innehållet som visas av @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Kopiera mållista"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"Listan över mål som denna webbvy har stöd för vid kopiering till urklipp"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Klistra in mållista"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"Listan över mål som denna webbvy har stöd för vid inklistring från urklipp"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Inställningar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "En associerad WebKitWebSettings-instans"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Webbinspektör"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Den associerade WebKitWebInspector-instansen"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Redigeringsbar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Huruvida innehållet kan ändras av användaren"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Genomskinlig"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Huruvida innehållet har en genomskinlig bakgrund"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Zoomnivå"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Zoomnivån för innehållet"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Fullständig innehållszoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Huruvida hela innehållet skalas vid zoomning"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Teckenkodning"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Standardkodning för webbvyn"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Anpassad teckenkodning"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Anpassad kodning för webbvyn"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Skicka"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Återställ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Välj fil"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Ingen)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Öppna länk i nytt _fönster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Hämta länkad fil"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Kopiera länkens ad_ress"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Öppna _bild i nytt fönster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Spa_ra bild som"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Kop_iera bild"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Öppna _ram i nytt fönster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "_Uppdatera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Inga gissningar hittades"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Ignorera stavfel"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Lär stavning"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Sök på webben"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "Sl_å upp i ordbok"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Öppna länk"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Ignorera _grammatikfel"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Stavning och _grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Visa stavning och grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "_Dölj stavning och grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Kontrollera dokumentet nu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Kontrollera stavning vid _inmatning"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Kontrollera _grammatik med stavning"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Typsnitt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Kontur"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Inspektera _element"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Inga tidigare sökningar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Tidigare sökningar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Töm tidigare sökningar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "term"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "definition"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "tryck"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "välj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "aktivera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "avmarkera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "markera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "hoppa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " filer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Okänt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#, fuzzy
+msgid "status"
+msgstr "Status"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+#, fuzzy
+msgid "indefinite time"
+msgstr "definition"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
+
+#~ msgid "_Searchable Index"
+#~ msgstr "_Sökbart index"
diff --git a/Source/WebKit/gtk/po/uk.po b/Source/WebKit/gtk/po/uk.po
new file mode 100644
index 0000000..46f12be
--- /dev/null
+++ b/Source/WebKit/gtk/po/uk.po
@@ -0,0 +1,1108 @@
+# This file is put in the public domain.
+#
+# Yuri Chornoivan <yurchor@ukr.net>, 2010.
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.22\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-03-24 20:05-0300\n"
+"PO-Revision-Date: 2010-03-19 19:27+0200\n"
+"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
+"Language-Team: Ukrainian <translation@linux.org.ua>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: Lokalize 1.0\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:531
+msgid "Upload File"
+msgstr "Вивантажити файл"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "_Способи введення"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM позначка з_ліва направо"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM позначка с_права наліво"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE вс_тавка зліва направо"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE вст_авка справа ліворуч"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO п_ерезапис зліва праворуч"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO пе_резапис справа ліворуч"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Вертикальне розташування"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS Про_біл нульової ширини"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _Об’єднувач нульової ширини"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ _Роз’єднувач нульової ширини"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "В_ставити керівний символ Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:270
+msgid "Network Request"
+msgstr "Запит до мережі"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:271
+msgid "The network request for the URI that should be downloaded"
+msgstr "Запит до мережі щодо адреси URI, вміст за якою слід звантажити"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:285
+msgid "Network Response"
+msgstr "Відповідь мережі"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:286
+msgid "The network response for the URI that should be downloaded"
+msgstr "Відповідь мережі щодо адреси URI, вміст за якою слід звантажити"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:300
+msgid "Destination URI"
+msgstr "Адреса URI призначення"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:301
+msgid "The destination URI where to save the file"
+msgstr "Адреса URI призначення, за якою слід зберегти файл"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:315
+msgid "Suggested Filename"
+msgstr "Пропозиція щодо назви"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:316
+msgid "The filename suggested as default when saving"
+msgstr "Типова назва, яку програма пропонуватиме під час збереження"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:333
+msgid "Progress"
+msgstr "Поступ"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:334
+msgid "Determines the current progress of the download"
+msgstr "Визначає поточний поступ звантаження"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:347
+msgid "Status"
+msgstr "Стан"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:348
+msgid "Determines the current status of the download"
+msgstr "Визначає поточний стан звантаження"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:363
+msgid "Current Size"
+msgstr "Поточний розмір"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:364
+msgid "The length of the data already downloaded"
+msgstr "Об’єм вже звантажених даних"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:378
+msgid "Total Size"
+msgstr "Загальний розмір"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:379
+msgid "The total size of the file"
+msgstr "Загальний об’єм даних файла"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:530
+msgid "User cancelled the download"
+msgstr "Звантаження скасовано користувачем"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Надійшов запит від сайта %s щодо імені користувача і пароля"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Повідомлення сервера:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Користувач:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Пароль:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "_Запам’ятати пароль"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "Name"
+msgstr "Назва"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:300
+msgid "The name of the frame"
+msgstr "Назва фрейма"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2443
+msgid "Title"
+msgstr "Заголовок"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:307
+msgid "The document title of the frame"
+msgstr "Заголовок документа фрейма"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2457
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:314
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Поточна адреса URI даних, показаних у фреймі"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid "Horizontal Scrollbar Policy"
+msgstr "Правила горизонтальної смужки гортання"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:346
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr ""
+"Визначає поточні правила створення горизонтальної смужки гортання у фреймі."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Vertical Scrollbar Policy"
+msgstr "Правила вертикальної смужки гортання"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:364
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr ""
+"Визначає поточні правила створення вертикальної смужки гортання у фреймі."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Заголовок запису журналу"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Альтернативний заголовок"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Альтернативний заголовок запису журналу"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "Адреса URI запису журналу"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "Початкова адреса URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "Початкова адреса URI запису журналу"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Час останнього відвідування"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Час, коли ви востаннє відвідували запис журналу"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Веб-панель"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Веб-панель, на якій показано дані веб-інспектора"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "Адреса URI, що перевіряється"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "Адреса URI, яку перевіряють"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Увімкнути профілювання JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Створити профіль виконаного JavaScript."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Увімкнути профілювання Timeline"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr "Профілювати інструментарій WebCore."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Підстава"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Підстава цього переходу"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Адреса URI, на яку надійшов запит, як на адресу переходу"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Кнопка"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Кнопка для натискання"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Стан модифікаторів"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Бітова маска, що відповідає стану натискання клавіш-модифікаторів"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Фрейм призначення"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Фрейм призначення під час переходу"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Default Encoding"
+msgstr "Типове кодування"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "The default encoding used to display text."
+msgstr "Типове кодування для показу тексту."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Cursive Font Family"
+msgstr "Гарнітура курсивного шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "The default Cursive font family used to display text."
+msgstr "Типова гарнітура курсивного шрифту для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Default Font Family"
+msgstr "Типова гарнітура шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "The default font family used to display text."
+msgstr "Типова гарнітура шрифту для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Fantasy Font Family"
+msgstr "Гарнітура декоративного шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "The default Fantasy font family used to display text."
+msgstr "Типова гарнітура декоративного шрифту для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Monospace Font Family"
+msgstr "Гарнітура моноширинного шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "The default font family used to display monospace text."
+msgstr "Типова гарнітура шрифту для показу моноширинних текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Sans Serif Font Family"
+msgstr "Гарнітура шрифту без засічок"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "The default Sans Serif font family used to display text."
+msgstr "Типова гарнітура без засічок шрифту для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Serif Font Family"
+msgstr "Гарнітура шрифту з засічками"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "The default Serif font family used to display text."
+msgstr "Типова гарнітура шрифту з засічками для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "Default Font Size"
+msgstr "Типовий розмір шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:303
+msgid "The default font size used to display text."
+msgstr "Типовий розмір символів шрифту для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:311
+msgid "Default Monospace Font Size"
+msgstr "Типовий розмір моноширинного шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:312
+msgid "The default font size used to display monospace text."
+msgstr ""
+"Типовий розмір символів шрифту для показу моноширинних текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:320
+msgid "Minimum Font Size"
+msgstr "Мінімальний розмір шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:321
+msgid "The minimum font size used to display text."
+msgstr "Мінімальний розмір символів шрифту для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:329
+msgid "Minimum Logical Font Size"
+msgstr "Мінімальний розмір логічного шрифту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:330
+msgid "The minimum logical font size used to display text."
+msgstr ""
+"Мінімальний розмір символів логічного шрифту для показу текстових даних."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:349
+msgid "Enforce 96 DPI"
+msgstr "Використовувати 96 т/д"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:350
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Використовувати роздільну здатність 96 т/д"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Auto Load Images"
+msgstr "Автоматично завантажувати зображення"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:359
+msgid "Load images automatically."
+msgstr "Завантажувати зображення у автоматичному режимі"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:367
+msgid "Auto Shrink Images"
+msgstr "Автоматично стискати зображення"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:368
+msgid "Automatically shrink standalone images to fit."
+msgstr "Автоматично стискати окремі зображення відповідно до розмірів вікна."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:376
+msgid "Print Backgrounds"
+msgstr "Друкувати тло"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:377
+msgid "Whether background images should be printed."
+msgstr "Чи слід друкувати зображення тла сторінки."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:385
+msgid "Enable Scripts"
+msgstr "Увімкнути скрипти"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:386
+msgid "Enable embedded scripting languages."
+msgstr "Увімкнути вбудовані до сторінок скрипти."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:394
+msgid "Enable Plugins"
+msgstr "Увімкнути додатки"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:395
+msgid "Enable embedded plugin objects."
+msgstr "Увімкнути вбудовані об’єкти додатків."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:403
+msgid "Resizable Text Areas"
+msgstr "Змінний розмір текстових полів"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:404
+msgid "Whether text areas are resizable."
+msgstr "Чи можлива зміна розмірів текстових полів."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:411
+msgid "User Stylesheet URI"
+msgstr "Адреса URI таблиці стилів користувача"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:412
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "Адреса URI таблиці стилів, яку буде застосовано до всіх сторінок."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:427
+msgid "Zoom Stepping Value"
+msgstr "Приріст масштабу"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:428
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+"Значення приросту, на який змінюватиметься масштаб під час збільшення або "
+"зменшення."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:446
+msgid "Enable Developer Extras"
+msgstr "Увімкнути засоби розробки"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:447
+msgid "Enables special extensions that help developers"
+msgstr "Увімкнути особливі додатки, які допоможуть у розробці"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:467
+msgid "Enable Private Browsing"
+msgstr "Увімкнути конфіденційний перегляд"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:468
+msgid "Enables private browsing mode"
+msgstr "Увімкнути режим конфіденційного перегляду"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:483
+msgid "Enable Spell Checking"
+msgstr "Увімкнути перевірку орфографії"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:484
+msgid "Enables spell checking while typing"
+msgstr "Увімкнути перевірку правопису під час введення тексту"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:507
+msgid "Languages to use for spell checking"
+msgstr "Мови для перевірки правопису"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:508
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Список записів мов для перевірки правопису, відокремлених комами"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:522
+msgid "Enable Caret Browsing"
+msgstr "Увімкнути режим активного вказівника"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:523
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+"Вмикає або вимикає додаткові можливості керування вказівником за допомогою "
+"клавіатури"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:538
+msgid "Enable HTML5 Database"
+msgstr "Увімкнути базу даних HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:539
+msgid "Whether to enable HTML5 database support"
+msgstr "Чи слід вмикати підтримку бази даних HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:554
+msgid "Enable HTML5 Local Storage"
+msgstr "Увімкнути локальне сховище HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:555
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Чи слід вмикати підтримку локального сховища HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:569
+msgid "Enable XSS Auditor"
+msgstr "Увімкнути інструмент перевірки XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:570
+msgid "Whether to enable teh XSS auditor"
+msgstr "Чи слід вмикати інструмент перевірки XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:588
+msgid "Enable Spatial Navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:589
+#, fuzzy
+msgid "Whether to enable Spatial Navigation"
+msgstr "Чи слід вмикати інструмент перевірки XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:606
+msgid "User Agent"
+msgstr "Агент користувача"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:607
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "Рядок User-Agent, який буде використано WebKitGtk"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:622
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript може відкривати вікна у автоматичному режимі"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:623
+msgid "Whether JavaScript can open windows automatically"
+msgstr "Чи можуть скрипти JavaScript відкривати вікна у автоматичному режимі"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:638
+msgid "Enable offline web application cache"
+msgstr "Увімкнути автономний кеш веб-програм"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:639
+msgid "Whether to enable offline web application cache"
+msgstr ""
+"Чи слід вмикати кеш веб-програм, призначений для автономної роботи без мережі"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:666
+msgid "Editing behavior"
+msgstr "Поведінка під час редагування"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:667
+msgid "The behavior mode to use in editing mode"
+msgstr "Режим поведінки під час редагування"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:683
+msgid "Enable universal access from file URIs"
+msgstr "Увімкнути універсальний доступ з файлових адрес URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:684
+msgid "Whether to allow universal access from file URIs"
+msgstr "Чи слід дозволяти універсальний доступ з файлових адрес URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Enable DOM paste"
+msgstr "Увімкнути вставку DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:700
+msgid "Whether to enable DOM paste"
+msgstr "Чи слід вмикати вставку DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:718
+msgid "Tab key cycles through elements"
+msgstr "Циклічний перехід елементами за клавішею Tab"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+"Чи виконуватиметься циклічний перехід елементами сторінки у відповідь на "
+"натискання клавіші Tab."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:739
+msgid "Enable Default Context Menu"
+msgstr "Увімкнути типове контекстне меню"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+"Вмикає обробку клацання правою кнопкою миші для створення типового "
+"контекстного меню"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:760
+msgid "Enable Site Specific Quirks"
+msgstr "Увімкнути підтримку особливостей сайта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:761
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Увімкнути специфічну для сайта зміну параметрів перегляду"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:783
+msgid "Enable page cache"
+msgstr "Увімкнути кеш сторінок"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Whether the page cache should be used"
+msgstr "Чи слід використовувати кешування сторінок"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:804
+msgid "Auto Resize Window"
+msgstr "Автоматична зміна розмірів вікна"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:805
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+"Автоматично змінювати розміри вікна верхнього рівня у відповідь на запит з "
+"боку сторінки"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:837
+msgid "Enable Java Applet"
+msgstr "Увімкнути аплет Java"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:838
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Чи слід вмикати підтримку аплетів Java за допомогою теґу <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2444
+msgid "Returns the @web_view's document title"
+msgstr "Повертає заголовок документа @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2458
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Повертає поточну адресу URI даних, показаних у @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2471
+msgid "Copy target list"
+msgstr "Список цілей копіювання"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2472
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+"Список адрес-цілей, які можна скопіювати з цієї веб-панелі до буфера обміну "
+"даними"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2485
+msgid "Paste target list"
+msgstr "Список вставки цілей"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2486
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+"Список цілей, які можна вставити до цієї веб-панелі з буфера обміну даними"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2492
+msgid "Settings"
+msgstr "Параметри"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2493
+msgid "An associated WebKitWebSettings instance"
+msgstr "Пов’язаний екземпляр WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2506
+msgid "Web Inspector"
+msgstr "Веб-ревізор"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2507
+msgid "The associated WebKitWebInspector instance"
+msgstr "Пов’язаний екземпляр WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2527
+msgid "Editable"
+msgstr "Можна редагувати"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2528
+msgid "Whether content can be modified by the user"
+msgstr "Чи може користувач змінювати вміст"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2534
+msgid "Transparent"
+msgstr "Прозорий"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2535
+msgid "Whether content has a transparent background"
+msgstr "Чи має вміст прозоре тло"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2548
+msgid "Zoom level"
+msgstr "Масштабування"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2549
+msgid "The level of zoom of the content"
+msgstr "Масштабування вмісту"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2564
+msgid "Full content zoom"
+msgstr "Масштабування всього вмісту"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2565
+msgid "Whether the full content is scaled when zooming"
+msgstr "Чи слід вмикати масштабування всього вмісту"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2578
+msgid "Encoding"
+msgstr "Кодування"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2579
+msgid "The default encoding of the web view"
+msgstr "Типове кодування веб-панелі"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2592
+msgid "Custom Encoding"
+msgstr "Нетипове кодування"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2593
+msgid "The custom encoding of the web view"
+msgstr "Нетипове кодування веб-панелі"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2645
+msgid "Icon URI"
+msgstr "URI піктограми"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2646
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "URI піктограми для #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Надіслати"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Скинути"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Це покажчик з можливістю пошуку. Введіть ключові слова для пошуку: "
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Виберіть файл"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Немає)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "Відкрити посилання у новому _вікні"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Звантажити пов’язаний файл"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "К_опіювати адресу посилання"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Відкрити зо_браження у новому вікні"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "З_берегти зображення як"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Коп_іювати зображення"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Відкрити _фрейм у новому вікні"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "П_ерезавантажити"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Не знайдено відповідників"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "П_ропустити слово"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Додати слово"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Шукати у інтернеті"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "Ш_укати у словнику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Відкрити посилання"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "І_гнорувати граматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "_Правопис і граматика"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "По_казати перевірку правопису і граматики"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "С_ховати перевірку правопису і граматики"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "Пе_ревірити документ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Перевір_яти правопис під час введення"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Перевірити _граматику з правописом"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Шрифт"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Обрис"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Перевірити е_лемент"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Немає нещодавніх пошуків"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Нещодавні пошуки"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "Сп_орожнити список пошуків"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "термін"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "визначення"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "натиснути"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "вибрати"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "задіяти"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "зняти позначку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "позначити"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "перейти"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:341
+msgid "Missing Plug-in"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid " files"
+msgstr " файлів"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:352
+msgid "Unknown"
+msgstr "Невідомо"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Loading..."
+msgstr "Завантаження..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:374
+msgid "Live Broadcast"
+msgstr "Трансляція"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:380
+msgid "audio element controller"
+msgstr "керування звуковим елементом"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:382
+msgid "video element controller"
+msgstr "керування відеоелементом"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:384
+msgid "mute"
+msgstr "вимкнути звук"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:386
+msgid "unmute"
+msgstr "увімкнути звук"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:388
+msgid "play"
+msgstr "відтворити"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:390
+msgid "pause"
+msgstr "призупинити"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:392
+msgid "movie time"
+msgstr "час відтворення відео"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:394
+msgid "timeline slider thumb"
+msgstr "повзунок лінійки запису"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:396
+msgid "back 30 seconds"
+msgstr "назад на 30 секунд"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:398
+msgid "return to realtime"
+msgstr "повернутися до режиму реального часу"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:400
+msgid "elapsed time"
+msgstr "час, що минув"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:402
+msgid "remaining time"
+msgstr "час, що залишився:"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:404
+msgid "status"
+msgstr "стан"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:406
+msgid "fullscreen"
+msgstr "повноекранний режим"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:408
+msgid "fast forward"
+msgstr "повний вперед"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:410
+msgid "fast reverse"
+msgstr "повний назад"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:412
+msgid "show closed captions"
+msgstr "показати вбудовані субтитри"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:414
+msgid "hide closed captions"
+msgstr "приховати вбудовані субтитри"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:423
+msgid "audio element playback controls and status display"
+msgstr "елементи керування відтворенням та показом стану аудіо"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:425
+msgid "video element playback controls and status display"
+msgstr "елементи керування відтворенням та показом стану відео"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:427
+msgid "mute audio tracks"
+msgstr "вимкнути звукові доріжки"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:429
+msgid "unmute audio tracks"
+msgstr "увімкнути звукові доріжки"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:431
+msgid "begin playback"
+msgstr "почати відтворення"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:433
+msgid "pause playback"
+msgstr "призупинити відтворення"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:435
+msgid "movie time scrubber"
+msgstr "зміна часу відтворення відео"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:437
+msgid "movie time scrubber thumb"
+msgstr "позначка пересування часом відтворення відео"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:439
+msgid "seek movie back 30 seconds"
+msgstr "перехід на 30 секунд назад"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:441
+msgid "return streaming movie to real time"
+msgstr "повернути відтворення потокового відео у режим реального часу"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:443
+msgid "current movie time in seconds"
+msgstr "поточний час відтворення відео у секундах"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:445
+msgid "number of seconds of movie remaining"
+msgstr "кількість секунд до завершення відтворення відео"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:447
+msgid "current movie status"
+msgstr "поточний стан відео"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:449
+msgid "seek quickly back"
+msgstr "швидке перемотування назад"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:451
+msgid "seek quickly forward"
+msgstr "швидке перемотування вперед"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:453
+msgid "Play movie in fullscreen mode"
+msgstr "Відтворити відео у повноекранному режимі"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:455
+msgid "start displaying closed captions"
+msgstr "почати показ вбудованих субтитрів"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:457
+msgid "stop displaying closed captions"
+msgstr "припинити показ вбудованих субтитрів"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:466
+msgid "indefinite time"
+msgstr "невизначений час"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:496
+msgid "value missing"
+msgstr "не вистачає значення"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "type mismatch"
+msgstr "невідповідність типів"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "pattern mismatch"
+msgstr "невідповідність шаблонів"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "too long"
+msgstr "занадто довгий"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range underflow"
+msgstr "від’ємне переповнення діапазону"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "range overflow"
+msgstr "переповнення діапазону"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:527
+msgid "step mismatch"
+msgstr "невідповідність кроків"
diff --git a/Source/WebKit/gtk/po/vi.po b/Source/WebKit/gtk/po/vi.po
new file mode 100644
index 0000000..838860c
--- /dev/null
+++ b/Source/WebKit/gtk/po/vi.po
@@ -0,0 +1,1078 @@
+# Vietnamese translation for WebKit.
+# This file is put in the public domain.
+# Nguyễn Thái Ngọc Duy <pclouds@gmail.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.4\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2010-03-01 20:49+0700\n"
+"Last-Translator: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>\n"
+"Language-Team: Vietnamese <vi-VN@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "Tải tập tin lên"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "Kiểu _nhập"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM Đánh dấu _Trái-sang-phải"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM Đánh dấu _Phải-sang-trái"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE _Nhúng Trái-sang-phải"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE N_húng Phải-sang-trái"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Đè T_rái-sang-phải"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Đè P_hải-sang-trái"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF Định dạng hướng _Pop"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS khoảng trống không kích thước"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _Kết nối không kích thước"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ _Phi kết nối không kích thước"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "_Chèn kí tự Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "Yêu cầu mạng"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "Yêu cầu mạng cho URI cần tải về"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "Network Response"
+msgstr "Hồi đáp mạng"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+msgid "The network response for the URI that should be downloaded"
+msgstr "Hồi đáp mạng cho URI cần tải về"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "URI đích"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "URI đích nơi lưu tập tin"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "Tên tập tin đề nghị"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "Tên tập tin đề nghị mặc định khi lưu"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "Tiến trình"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "Xác định tiến độ tải về hiện thời"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "Tình trạng"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "Xác định tình trạng tải về hiện thời"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "Kích thước hiện thời"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "Lượng dữ liệu đã tải về"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "Kích thước tổng cộng"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "Kích thước của toàn bộ tập tin"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "Người dùng đã huỷ tải về"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Trang %s đang yêu cầu tên người dùng và mật khẩu"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr "Thông điệp máy chủ:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "Tên người dùng:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "Mật khẩu:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+msgid "_Remember password"
+msgstr "_Nhớ mật khẩu"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "Tên"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "Tên khung"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "Tựa đề"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "Tựa đề tài liệu của khung"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "URI hiện thời của nội dung khung đang hiển thị"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr "Quy tắc thanh cuộn ngang"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "Xác định quy tắc hiện thời cho thanh cuộn ngang của khung."
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr "Quy tắc thanh cuộn dọc"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "Xác định quy tắc hiện thời cho thanh cuộn dọc của khung."
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "Tựa đề mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "Tựa đề thay thế"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "Tựa đề thay thế cho mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "URI cho mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "URI gốc"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "URI gốc của mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "Lần xem cuối"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "Thời điểm xem mục lược sử lần cuối"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Khung xem Web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Khung xem Web dùng để hiển thị bản thân Thanh tra Web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "URI được điều tra"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "URI đang được điều tra"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "Bật kiểm định JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "Kiểm định JavaScript được thực thi."
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+msgid "Enable Timeline profiling"
+msgstr "Bật kiểm định trục thời gian"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "Nguyên nhân"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "Lý do duyệt gặp lỗi"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "URI được yêu cầu làm đích duyệt"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "Nút"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "Nút được dùng để nhấn"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "Trạng thái phím bổ trợ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Bitmask đại diện trạng thái phím bổ trợ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+msgid "Target frame"
+msgstr "Khung đích"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+msgid "The target frame for the navigation"
+msgstr "Khung đích để xem"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "Bảng mã mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "Bảng mã mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "Họ phông Cursive"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "Họ phông Cursive mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "Họ phông mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "Họ phông mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "Họ phông Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "Họ phông Fantasy mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "Họ phông Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "Họ phông Monospace mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Họ phông Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "Họ phông Sans Serif mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Họ phông Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "Họ phông Serif mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "Cỡ phông mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "Cỡ phông mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "Cỡ phông Monospace mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "Cỡ phông Monospace mặc định để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "Cỡ phông tối thiểu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "Cỡ phông tối thiểu để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "Cỡ phông logic tối thiểu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "Cỡ phông logic tối thiểu dùng để hiển thị văn bản."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "Ép 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Ép độ phân giảii 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "Tự động nạp ảnh"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "Nạp ảnh tự động."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "Tự động co ảnh."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "Tự động co ảnh độc lập cho khít."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "In ảnh nền"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "Có in ảnh nền hay không."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "Bật script"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "Bật ngôn ngữ nhúng dạng script."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "Bật phần mở rộng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "Bật phần mở rộng,"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "Ô văn bản có thể thay đổi kích thước."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "Ô văn bản có thể thay đổi kích thước hay không."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "URI stylesheet người dùng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "URI của stylesheet áp dụng cho mọi trang."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "Giá trị bước thu/phóng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Giá trị thay đổi mức thu phóng mỗi lần."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "Bật Developer Extras"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "Bật các phần mở rộng đặc biệt, hữu dụng cho người phát triển"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "Bật duyệt riêng tư"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "Bật chế độ duyệt riêng tư"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr "Bật kiểm lỗi chính tả"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+msgid "Enables spell checking while typing"
+msgstr "Kiểm lỗi chính tả khi đang gõ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr "Ngôn ngữ kiểm lỗi chính tả"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Danh sách ngôn ngữ kiểm lỗi chính tả, cách nhau bằng dấu phẩy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+msgid "Enable Caret Browsing"
+msgstr "Bật con nháy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr "Có bật khả năng duyệt tăng cường bằng bàn phím không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr "Bật Cơ sở dữ liệu HTML5"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr "Có bật hỗ trợ Cơ sở dữ liệu HTML5 không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr "Bật Kho chứa HTML5 cục bộ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr "Có bật hỗ trợ Kho chứa HTML5 cục bộ không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+msgid "Enable XSS Auditor"
+msgstr "Bật kiểm tra XSS"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr "Có bật kiểm tra XSS không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr "Đại diện người dùng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr "Chuỗi User-Agent WebKitGtk sẽ dùng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr "JavaScript được phép mở cửa sổ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr "JavaScript có được phép tự động mở cửa sổ không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr "Bật lưu tạm ứng dụng web ngoại tuyến"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr "Có bật lưu tạm ứng dụng web ngoại tuyến không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr "Cách sửa đổi"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr "Cách sửa đổi được sử dụng trong chế độ sửa đổi"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr "Bật truy cập thống nhất từ URI của tập tin"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr "Có cho phép truy cập thống nhất từ URI của tập tin không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+msgid "Enable DOM paste"
+msgstr "Cho dán DOM"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr "Có cho dán DOM không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr "Xoay vòng phím Tab qua các thành phần"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr "Có xoay vòng phím Tab trên các thành phần của trang không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr "Bật menu ngữ cảnh mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr "Cho phép phím chuột phải tạo menu ngữ cảnh mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr "Bật khắc phục đặc thù cho các trang"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr "Khắc phục những nhược điểm đặc thù của một số trang web"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr "Bật page cache"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+msgid "Whether the page cache should be used"
+msgstr "Có bật tính năng page cache không"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr "Tự động đổi kích thước cửa sổ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr "Tự động thay đổi kích thước cửa sổ trên cùng khi trang yêu cầu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+msgid "Enable Java Applet"
+msgstr "Bật tiểu dụng Java"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr "Cho phép hỗ trợ tiểu dụng Java bằng <applet>"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "Trả về tiêu đề tài liệu của @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Trả về URI hiện thời của tài liệu được @web_view hiển thị"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "Danh sách đích chép"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "Danh sách đích mà khung xem web này hỗ trợ khi chép vào clipboard."
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "Danh sách đích dán"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "Danh sách đích mà khung xem web này hỗ trợ khi dán clipboard."
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "Thiết lập"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "Một thể hiện WebKitWebSettings liên kết"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Thanh tra Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "Một thể hiện WebKitWebInspector liên kết"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "Có thể thay đổi"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "Nội dung có thể bị người dùng thay đổi hay không"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "Trong suốt"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "Nội dung có ảnh nền trong suốt không."
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "Mức phóng"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "Mức phóng to/thu nhỏ nội dung"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "Phóng nội dung đầy đủ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "Toàn bộ nội dung có bị co lại không."
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "Bảng mã"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Bảng mã mặc định cho khung xem Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "Bảng mã tự chọn"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Bảng mã tự chọn cho khung xem Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr "URI biểu tượng"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr "URI của biểu tượng trang (favicon) cho #WebKitWebView."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "Gửi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "Phục hồi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr "Đây là chỉ mục tìm kiếm được. Hãy nhập từ khoá cần tìm: "
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "Chọn tập tin"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(Không)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "_Mở liên kết trong cửa sổ mới"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "_Tải tập tin được liên kết"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "Chép vị trí _liên kết"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "Mở ả_nh trong cửa sổ mới"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "Lưu ảnh _là"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "Chép ả_nh"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "Mở _khung trong cửa sổ mới"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "Nạp _lại"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "Không đoán ra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "_Bỏ qua lỗi chính tả"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "_Học lỗi chính tả"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "_Tìm trên Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "_Tra từ điển"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "_Mở liên kết"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "Bỏ qua _ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "Chính tả và _Ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "_Hiện lỗi chính tả và ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "Ẩ_n Chính tả và Ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "_Kiểm tra tài liệu ngay"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "Kiểm tra khi đang _gõ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "Kiểm tra lỗi _ngữ pháp kèm chính tả"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "_Phông"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "_Nét ngoài"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "Thanh tra _yếu tố"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "Không có tìm kiếm gần đây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "Tìm kiếm gần đây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "_Xoá tìm kiếm gần đây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "thuật ngữ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "định nghĩa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "nhấn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "chọn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "kích hoạt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "bỏ chọn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "chọn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "nhảy"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr " tập tin"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "Không biết"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr "Đang nạp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr "Phát trực tiếp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr "bộ điều khiển phần tử âm thanh"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr "bộ điều khiển phần tử hình ảnh"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr "tắt tiếng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr "không tắt tiếng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr "phát"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr "tạm dừng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr "thời lượng phim"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr "con chạy thời gian"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr "lùi 30 giây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr "trở về thời gian thực"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr "thời gian đã qua"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr "thời gian còn lại"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+msgid "status"
+msgstr "tình trạng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr "toàn màn hình"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr "tới nhanh"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr "lùi lại"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr "xay đầu đề"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr "ẩn đầu đề"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr "bộ điều khiển phần tử phát tiếng và hiển thị tình trạng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr "bộ điều khiển phần tử phát hình và hiển thị tình trạng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr "tắt tiếng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr "không tắt tiếng"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr "bắt đầu phát"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr "tạm dừng phát"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr "quay lùi phim 30 giây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr "trở về luồng thời gian thực"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr "thời gian của phim theo giây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr "số giây còn lại"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr "tình trạng phim hiện thời"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr "lùi ngược nhanh"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr "chạy tới nhanh"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr "Xem phim toàn màn hình"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr "bắt đầu hiển thị đầu đề"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr "ngưng hiển thị đầu đề"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+msgid "indefinite time"
+msgstr "vô hạn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr "thiếu giá trị"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr "kiểu không khớp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr "mẫu không khớp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr "quá dài"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr "phạm vi quá ngắn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr "phạm vi quá dài"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr "nhảy bước không khớp"
+
+#~ msgid "_Searchable Index"
+#~ msgstr "Chỉ mục _tìm được"
diff --git a/Source/WebKit/gtk/po/zh_CN.po b/Source/WebKit/gtk/po/zh_CN.po
new file mode 100644
index 0000000..8561fd8
--- /dev/null
+++ b/Source/WebKit/gtk/po/zh_CN.po
@@ -0,0 +1,1096 @@
+# Chinese translations for WebKit package
+# WebKit 软件包的简体中文翻译.
+# This file is put in public domain.
+#
+# Aron Xu <aronmalache@163.com>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.4\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2010-02-25 15:53-0300\n"
+"PO-Revision-Date: 2009-07-14 18:11+0800\n"
+"Last-Translator: Aron Xu <aronmalache@163.com>\n"
+"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:535
+msgid "Upload File"
+msgstr "上传文件"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:143
+msgid "Input _Methods"
+msgstr "输入方式(_M)"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:138
+msgid "_Insert Unicode Control Character"
+msgstr "插入 Unicode 控制字符(_I)"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "Network Request"
+msgstr "网络请求"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:267
+msgid "The network request for the URI that should be downloaded"
+msgstr "网络请求该 URI 应当被下载"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+#, fuzzy
+msgid "Network Response"
+msgstr "网络请求"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:282
+#, fuzzy
+msgid "The network response for the URI that should be downloaded"
+msgstr "网络请求该 URI 应当被下载"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:296
+msgid "Destination URI"
+msgstr "目的 URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:297
+msgid "The destination URI where to save the file"
+msgstr "保存文件的目的 URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:311
+msgid "Suggested Filename"
+msgstr "建议文件名"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "The filename suggested as default when saving"
+msgstr "保存时默认建议使用的文件名"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "Progress"
+msgstr "进度"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:330
+msgid "Determines the current progress of the download"
+msgstr "显示当前下载进度"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Status"
+msgstr "状态"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "Determines the current status of the download"
+msgstr "显示当前下载状态"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:359
+msgid "Current Size"
+msgstr "当前尺寸"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:360
+msgid "The length of the data already downloaded"
+msgstr "当前已下载的数据大小"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:374
+msgid "Total Size"
+msgstr "总尺寸"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:375
+msgid "The total size of the file"
+msgstr "文件总尺寸"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:526
+msgid "User cancelled the download"
+msgstr "用户取消了下载"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:248
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "站点 %s 请求用户名和密码"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:278
+msgid "Server message:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:291
+msgid "Username:"
+msgstr "用户名:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:293
+msgid "Password:"
+msgstr "密码:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:302
+#, fuzzy
+msgid "_Remember password"
+msgstr "记住密码"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:298
+msgid "Name"
+msgstr "名称"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:299
+msgid "The name of the frame"
+msgstr "框架名称"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:305
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:146
+#: WebKit/gtk/webkit/webkitwebview.cpp:2318
+msgid "Title"
+msgstr "标题"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:306
+msgid "The document title of the frame"
+msgstr "标题名称"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:312
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:178
+#: WebKit/gtk/webkit/webkitwebview.cpp:2332
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:313
+msgid "The current URI of the contents displayed by the frame"
+msgstr "框架中当前显示内容的 URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:344
+msgid "Horizontal Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:345
+#, fuzzy
+msgid ""
+"Determines the current policy for the horizontal scrollbar of the frame."
+msgstr "显示当前下载进度"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:362
+msgid "Vertical Scrollbar Policy"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:363
+#, fuzzy
+msgid "Determines the current policy for the vertical scrollbar of the frame."
+msgstr "显示当前下载进度"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:147
+msgid "The title of the history item"
+msgstr "历史条目的标题"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:162
+msgid "Alternate Title"
+msgstr "可选标题"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:163
+msgid "The alternate title of the history item"
+msgstr "历史条目的可选标题"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:179
+msgid "The URI of the history item"
+msgstr "历史条目的 URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:194
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:173
+msgid "Original URI"
+msgstr "原始 URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:195
+msgid "The original URI of the history item"
+msgstr "历史条目的原始 URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:210
+msgid "Last visited Time"
+msgstr "最近访问时间"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:211
+msgid "The time at which the history item was last visited"
+msgstr "最近访问历史条目的时间"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:268
+msgid "Web View"
+msgstr "Web View"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:269
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Web View 渲染 Web Inspector 本身"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:282
+msgid "Inspected URI"
+msgstr "已检查的 URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:283
+msgid "The URI that is currently being inspected"
+msgstr "当前已经被检查的 URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:299
+msgid "Enable JavaScript profiling"
+msgstr "启用 JavaScript 摘要"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:300
+msgid "Profile the executed JavaScript."
+msgstr "记录已执行的 JavaScript 的摘要信息。"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:315
+#, fuzzy
+msgid "Enable Timeline profiling"
+msgstr "启用 JavaScript 摘要"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:316
+msgid "Profile the WebCore instrumentation."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:158
+msgid "Reason"
+msgstr "原因"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:159
+msgid "The reason why this navigation is occurring"
+msgstr "导航产生的原因"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:174
+msgid "The URI that was requested as the target for the navigation"
+msgstr "此 URI 是被作为导航目标而请求的"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:188
+msgid "Button"
+msgstr "按钮"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:189
+msgid "The button used to click"
+msgstr "用以点击的按钮"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:204
+msgid "Modifier state"
+msgstr "修饰键信息"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:205
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "一个代表当前修饰键状态的位掩码"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:220
+#, fuzzy
+msgid "Target frame"
+msgstr "框架名称"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:221
+#, fuzzy
+msgid "The target frame for the navigation"
+msgstr "此 URI 是被作为导航目标而请求的"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:237
+msgid "Default Encoding"
+msgstr "默认编码"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:238
+msgid "The default encoding used to display text."
+msgstr "用以显示文本的默认编码。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:246
+msgid "Cursive Font Family"
+msgstr "草书字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:247
+msgid "The default Cursive font family used to display text."
+msgstr "用以显示文本的默认草书字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:255
+msgid "Default Font Family"
+msgstr "默认字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:256
+msgid "The default font family used to display text."
+msgstr "用以显示文本的默认字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:264
+msgid "Fantasy Font Family"
+msgstr "幻想字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:265
+msgid "The default Fantasy font family used to display text."
+msgstr "用以显示文本的默认幻想字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:273
+msgid "Monospace Font Family"
+msgstr "等宽字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:274
+msgid "The default font family used to display monospace text."
+msgstr "用以显示文本的默认等宽字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:282
+msgid "Sans Serif Font Family"
+msgstr "Sans Serif 字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:283
+msgid "The default Sans Serif font family used to display text."
+msgstr "用以显示文本的默认 Sans Serif 字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:291
+msgid "Serif Font Family"
+msgstr "Serif 字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:292
+msgid "The default Serif font family used to display text."
+msgstr "用以显示文本的默认 Serif 字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:300
+msgid "Default Font Size"
+msgstr "默认字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "The default font size used to display text."
+msgstr "用以显示文本的默认字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:309
+msgid "Default Monospace Font Size"
+msgstr "默认等宽字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:310
+msgid "The default font size used to display monospace text."
+msgstr "用以显示等宽文本的默认字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "Minimum Font Size"
+msgstr "最小字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:319
+msgid "The minimum font size used to display text."
+msgstr "用以显示文本的最小字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:327
+msgid "Minimum Logical Font Size"
+msgstr "最小逻辑字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:328
+msgid "The minimum logical font size used to display text."
+msgstr "用以显示文本的最小逻辑字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:347
+msgid "Enforce 96 DPI"
+msgstr "强制为 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:348
+msgid "Enforce a resolution of 96 DPI"
+msgstr "强制 96 DPI 分辨率"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:356
+msgid "Auto Load Images"
+msgstr "自动载入图像"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Load images automatically."
+msgstr "自动载入图像。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:365
+msgid "Auto Shrink Images"
+msgstr "自动缩小图像"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:366
+msgid "Automatically shrink standalone images to fit."
+msgstr "自动缩小单个图像以适应需求。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:374
+msgid "Print Backgrounds"
+msgstr "打印背景"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:375
+msgid "Whether background images should be printed."
+msgstr "是否打印背景。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:383
+msgid "Enable Scripts"
+msgstr "启用脚本"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:384
+msgid "Enable embedded scripting languages."
+msgstr "启用嵌入式脚步语言"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:392
+msgid "Enable Plugins"
+msgstr "启用插件"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:393
+msgid "Enable embedded plugin objects."
+msgstr "启用嵌入式插件对象。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:401
+msgid "Resizable Text Areas"
+msgstr "大小可变文本域"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Whether text areas are resizable."
+msgstr "文本域大小是否是否可变。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:409
+msgid "User Stylesheet URI"
+msgstr "用户样式表 URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:410
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "应用于每个页面的样式表的 URI。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:425
+msgid "Zoom Stepping Value"
+msgstr "缩放步值"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:426
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "在放大或缩小中每次缩放的步值。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:444
+msgid "Enable Developer Extras"
+msgstr "启用开发者附加"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:445
+msgid "Enables special extensions that help developers"
+msgstr "启用帮助开发者的特殊扩展"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:465
+msgid "Enable Private Browsing"
+msgstr "启用隐私浏览"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:466
+msgid "Enables private browsing mode"
+msgstr "启用隐私浏览模式"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:481
+msgid "Enable Spell Checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:482
+#, fuzzy
+msgid "Enables spell checking while typing"
+msgstr "输入时检查拼写(_T)"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:505
+msgid "Languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:506
+msgid "Comma separated list of languages to use for spell checking"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:520
+#, fuzzy
+msgid "Enable Caret Browsing"
+msgstr "启用隐私浏览"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:521
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:536
+msgid "Enable HTML5 Database"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:537
+msgid "Whether to enable HTML5 database support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:552
+msgid "Enable HTML5 Local Storage"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:553
+msgid "Whether to enable HTML5 Local Storage support"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:567
+#, fuzzy
+msgid "Enable XSS Auditor"
+msgstr "启用脚本"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:568
+msgid "Whether to enable teh XSS auditor"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:586
+msgid "User Agent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:587
+msgid "The User-Agent string used by WebKitGtk"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:602
+msgid "JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:603
+msgid "Whether JavaScript can open windows automatically"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:618
+msgid "Enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:619
+msgid "Whether to enable offline web application cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:646
+msgid "Editing behavior"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:647
+msgid "The behavior mode to use in editing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:663
+msgid "Enable universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:664
+msgid "Whether to allow universal access from file URIs"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:679
+#, fuzzy
+msgid "Enable DOM paste"
+msgstr "启用脚本"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:680
+msgid "Whether to enable DOM paste"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:698
+msgid "Tab key cycles through elements"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:699
+msgid "Whether the tab key cycles through elements on the page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:719
+msgid "Enable Default Context Menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:720
+msgid ""
+"Enables the handling of right-clicks for the creation of the default context "
+"menu"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:740
+msgid "Enable Site Specific Quirks"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:741
+msgid "Enables the site-specific compatibility workarounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:763
+msgid "Enable page cache"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:764
+#, fuzzy
+msgid "Whether the page cache should be used"
+msgstr "是否打印背景。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:784
+msgid "Auto Resize Window"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:785
+msgid "Automatically resize the toplevel window when a page requests it"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:817
+#, fuzzy
+msgid "Enable Java Applet"
+msgstr "启用 JavaScript 摘要"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:818
+msgid "Whether Java Applet support through <applet> should be enabled"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2319
+msgid "Returns the @web_view's document title"
+msgstr "返回 @web_view 的文档标题"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2333
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "返回当前由 @web_view 显示的内容的 URI"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2346
+msgid "Copy target list"
+msgstr "复制目标列表"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2347
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "目标 Web View 列表支持剪贴簿复制"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2360
+msgid "Paste target list"
+msgstr "粘贴目标列表"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2361
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "目标 Web View 列表支持剪贴簿粘贴"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2367
+msgid "Settings"
+msgstr "设置"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2368
+msgid "An associated WebKitWebSettings instance"
+msgstr "一个关联的 WebKitWebSettings 样例"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2381
+msgid "Web Inspector"
+msgstr "Web Inspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2382
+msgid "The associated WebKitWebInspector instance"
+msgstr "一个关联的 WebKitWebInspector 样例"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2402
+msgid "Editable"
+msgstr "可编辑"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2403
+msgid "Whether content can be modified by the user"
+msgstr "用户是否可编辑内容"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2409
+msgid "Transparent"
+msgstr "透明"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2410
+msgid "Whether content has a transparent background"
+msgstr "内容是否包含透明背景"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2423
+msgid "Zoom level"
+msgstr "缩放级别"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2424
+msgid "The level of zoom of the content"
+msgstr "内容缩放级别"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2439
+msgid "Full content zoom"
+msgstr "完整内容缩放"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2440
+msgid "Whether the full content is scaled when zooming"
+msgstr "是否将所有内容完整缩放"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2453
+msgid "Encoding"
+msgstr "编码"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2454
+msgid "The default encoding of the web view"
+msgstr "Web View 的默认编码"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2467
+msgid "Custom Encoding"
+msgstr "自定义编码"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2468
+msgid "The custom encoding of the web view"
+msgstr "Web View的自定义编码"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2520
+msgid "Icon URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:2521
+msgid "The URI for the favicon for the #WebKitWebView."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:55
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:60
+msgid "Submit"
+msgstr "提交"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:65
+msgid "Reset"
+msgstr "重置"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:70
+msgid "This is a searchable index. Enter search keywords: "
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:75
+msgid "Choose File"
+msgstr "选择文件"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:80
+msgid "(None)"
+msgstr "(无)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:85
+msgid "Open Link in New _Window"
+msgstr "在新窗口打开链接(_W)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:90
+msgid "_Download Linked File"
+msgstr "下载目标文件(_D)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:95
+msgid "Copy Link Loc_ation"
+msgstr "复制链接地址(_A)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:100
+msgid "Open _Image in New Window"
+msgstr "在新窗口打开图像(_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:105
+msgid "Sa_ve Image As"
+msgstr "保存图像(_V)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:110
+msgid "Cop_y Image"
+msgstr "复制图像(_Y)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:115
+msgid "Open _Frame in New Window"
+msgstr "在新窗口打开框架(_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:166
+msgid "_Reload"
+msgstr "重载(_R)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:183
+msgid "No Guesses Found"
+msgstr "没有找到拼写建议"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:188
+msgid "_Ignore Spelling"
+msgstr "忽略拼写(_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:193
+msgid "_Learn Spelling"
+msgstr "记录特例(_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:198
+msgid "_Search the Web"
+msgstr "搜索互联网(_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:203
+msgid "_Look Up in Dictionary"
+msgstr "查询词典(_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:208
+msgid "_Open Link"
+msgstr "打开链接(_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:213
+msgid "Ignore _Grammar"
+msgstr "忽略语法(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:218
+msgid "Spelling and _Grammar"
+msgstr "拼写和语法(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Show Spelling and Grammar"
+msgstr "显示拼写和语法(_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:223
+msgid "_Hide Spelling and Grammar"
+msgstr "隐藏拼写和语法(_H)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:228
+msgid "_Check Document Now"
+msgstr "立即检查文档(_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:233
+msgid "Check Spelling While _Typing"
+msgstr "输入时检查拼写(_T)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:238
+msgid "Check _Grammar With Spelling"
+msgstr "检查拼写时检查语法(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:243
+msgid "_Font"
+msgstr "字体(_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:266
+msgid "_Outline"
+msgstr "概要(_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:271
+msgid "Inspect _Element"
+msgstr "检查元素(_E)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:276
+msgid "No recent searches"
+msgstr "无最近搜索"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:281
+msgid "Recent searches"
+msgstr "最近搜索"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:286
+msgid "_Clear recent searches"
+msgstr "清除最近搜索记录(_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:291
+msgid "term"
+msgstr "术语"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:296
+msgid "definition"
+msgstr "定义"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:301
+msgid "press"
+msgstr "按"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:306
+msgid "select"
+msgstr "选择"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:311
+msgid "activate"
+msgstr "激活"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:316
+msgid "uncheck"
+msgstr "反选"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:321
+msgid "check"
+msgstr "勾选"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:326
+msgid "jump"
+msgstr "跳转"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:342
+msgid " files"
+msgstr "文件"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:347
+msgid "Unknown"
+msgstr "未知"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:364
+msgid "Loading..."
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:369
+msgid "Live Broadcast"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:375
+msgid "audio element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:377
+msgid "video element controller"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:379
+msgid "mute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:381
+msgid "unmute"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:383
+msgid "play"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:385
+msgid "pause"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:387
+msgid "movie time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:389
+msgid "timeline slider thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:391
+msgid "back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:393
+msgid "return to realtime"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:395
+msgid "elapsed time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:397
+msgid "remaining time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:399
+#, fuzzy
+msgid "status"
+msgstr "状态"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:401
+msgid "fullscreen"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:403
+msgid "fast forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:405
+msgid "fast reverse"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:407
+msgid "show closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:409
+msgid "hide closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:418
+msgid "audio element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:420
+msgid "video element playback controls and status display"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:422
+msgid "mute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:424
+msgid "unmute audio tracks"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:426
+msgid "begin playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:428
+msgid "pause playback"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:430
+msgid "movie time scrubber"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:432
+msgid "movie time scrubber thumb"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:434
+msgid "seek movie back 30 seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:436
+msgid "return streaming movie to real time"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:438
+msgid "current movie time in seconds"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:440
+msgid "number of seconds of movie remaining"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:442
+msgid "current movie status"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:444
+msgid "seek quickly back"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:446
+msgid "seek quickly forward"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:448
+msgid "Play movie in fullscreen mode"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:450
+msgid "start displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:452
+msgid "stop displaying closed captions"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:461
+#, fuzzy
+msgid "indefinite time"
+msgstr "定义"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:491
+msgid "value missing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:497
+msgid "type mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:502
+msgid "pattern mismatch"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:507
+msgid "too long"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:512
+msgid "range underflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:517
+msgid "range overflow"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:522
+msgid "step mismatch"
+msgstr ""
+
+#~ msgid "_Searchable Index"
+#~ msgstr "可搜索索引(_S)"
diff --git a/Source/WebKit/gtk/resources/error.html b/Source/WebKit/gtk/resources/error.html
new file mode 100644
index 0000000..27d4a57
--- /dev/null
+++ b/Source/WebKit/gtk/resources/error.html
@@ -0,0 +1,60 @@
+<html>
+<head>
+<title>Error</title>
+<style type="text/css">
+body {
+ background-color: #fff;
+ margin: 0;
+ padding: 0;
+}
+
+#errorContainer {
+ background: #fff;
+ min-width: 35em;
+ max-width: 35em;
+ position: absolute;
+ top: 2em;
+ left: 1em;
+ padding: 10px;
+ border: 2px solid #eee;
+ -webkit-border-radius: 5px;
+}
+
+#errorTitleText {
+ font-size: 120%;
+ font-weight: bold;
+}
+
+#errorMessageText {
+ font-size: 80%;
+}
+
+</style>
+<script type="text/javascript">
+
+function tryagain()
+{
+ location.reload();
+}
+</script>
+</head>
+<body>
+<div id="errorContainer">
+
+<div id="errorTitle">
+ <p id="errorTitleText">Unable to load page</p>
+</div>
+<div id="errorMessage">
+ <p>Problem occurred while loading the URL %s</p>
+ <p id="errorMessageText">%s</a>
+</p>
+</div>
+
+<form name="bl">
+<input type="button" value="Try again" onclick="javascript:tryagain()" />
+</form>
+
+</div>
+
+</body>
+</html>
diff --git a/Source/WebKit/gtk/tests/resources/blank.ico b/Source/WebKit/gtk/tests/resources/blank.ico
new file mode 100644
index 0000000..ea848b9
--- /dev/null
+++ b/Source/WebKit/gtk/tests/resources/blank.ico
Binary files differ
diff --git a/Source/WebKit/gtk/tests/resources/test.html b/Source/WebKit/gtk/tests/resources/test.html
new file mode 100644
index 0000000..98f7d4f
--- /dev/null
+++ b/Source/WebKit/gtk/tests/resources/test.html
@@ -0,0 +1,6 @@
+<html>
+<head><title>test</title></head>
+<body>test</body>
+</html>></head>
+<body>test</body>
+</html>
diff --git a/Source/WebKit/gtk/tests/resources/test.ogg b/Source/WebKit/gtk/tests/resources/test.ogg
new file mode 100644
index 0000000..7f3a3b9
--- /dev/null
+++ b/Source/WebKit/gtk/tests/resources/test.ogg
Binary files differ
diff --git a/Source/WebKit/gtk/tests/resources/test.pdf b/Source/WebKit/gtk/tests/resources/test.pdf
new file mode 100644
index 0000000..2424c19
--- /dev/null
+++ b/Source/WebKit/gtk/tests/resources/test.pdf
Binary files differ
diff --git a/Source/WebKit/gtk/tests/resources/test.txt b/Source/WebKit/gtk/tests/resources/test.txt
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/Source/WebKit/gtk/tests/resources/test.txt
@@ -0,0 +1 @@
+test
diff --git a/Source/WebKit/gtk/tests/test_utils.c b/Source/WebKit/gtk/tests/test_utils.c
new file mode 100644
index 0000000..646fd25
--- /dev/null
+++ b/Source/WebKit/gtk/tests/test_utils.c
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2010 Arno Renevier
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "test_utils.h"
+
+#include <glib.h>
+#include <glib/gstdio.h>
+
+int testutils_relative_chdir(const gchar* target_filename, const gchar* executable_path)
+{
+ if (g_path_is_absolute(executable_path)) {
+ if (g_chdir(g_path_get_dirname(executable_path))) {
+ return -1;
+ }
+ }
+
+ while (!g_file_test(target_filename, G_FILE_TEST_EXISTS)) {
+ gchar *path_name;
+ if (g_chdir("..")) {
+ return -1;
+ }
+ g_assert(!g_str_equal((path_name = g_get_current_dir()), "/"));
+ g_free(path_name);
+ }
+
+ gchar* dirname = g_path_get_dirname(target_filename);
+ if (g_chdir(dirname)) {
+ g_free(dirname);
+ return -1;
+ }
+
+ g_free(dirname);
+ return 0;
+}
diff --git a/Source/WebKit/gtk/tests/test_utils.h b/Source/WebKit/gtk/tests/test_utils.h
new file mode 100644
index 0000000..e761f74
--- /dev/null
+++ b/Source/WebKit/gtk/tests/test_utils.h
@@ -0,0 +1,3 @@
+#include <glib.h>
+
+int testutils_relative_chdir(const gchar*, const gchar*);
diff --git a/Source/WebKit/gtk/tests/testatk.c b/Source/WebKit/gtk/tests/testatk.c
new file mode 100644
index 0000000..1ee6c55
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testatk.c
@@ -0,0 +1,1345 @@
+/*
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <unistd.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static const char* centeredContents = "<html><body><p style='text-align: center;'>Short line</p><p style='text-align: center;'>Long-size line with some foo bar baz content</p><p style='text-align: center;'>Short line</p><p style='text-align: center;'>This is a multi-line paragraph<br />where the first line<br />is the biggest one</p></body></html>";
+
+static const char* contents = "<html><body><p>This is a test. This is the second sentence. And this the third.</p></body></html>";
+
+static const char* contentsWithNewlines = "<html><body><p>This is a test. \n\nThis\n is the second sentence. And this the third.</p></body></html>";
+
+static const char* contentsInTextarea = "<html><body><textarea cols='80'>This is a test. This is the second sentence. And this the third.</textarea></body></html>";
+
+static const char* contentsInTextInput = "<html><body><input type='text' size='80' value='This is a test. This is the second sentence. And this the third.'/></body></html>";
+
+static const char* contentsInParagraphAndBodySimple = "<html><body><p>This is a test.</p>Hello world.</body></html>";
+
+static const char* contentsInParagraphAndBodyModerate = "<html><body><p>This is a test.</p>Hello world.<br /><font color='#00cc00'>This sentence is green.</font><br />This one is not.</body></html>";
+
+static const char* contentsInTable = "<html><body><table><tr><td>foo</td><td>bar</td></tr></table></body></html>";
+
+static const char* contentsInTableWithHeaders = "<html><body><table><tr><th>foo</th><th>bar</th><th colspan='2'>baz</th></tr><tr><th>qux</th><td>1</td><td>2</td><td>3</td></tr><tr><th rowspan='2'>quux</th><td>4</td><td>5</td><td>6</td></tr><tr><td>6</td><td>7</td><td>8</td></tr><tr><th>corge</th><td>9</td><td>10</td><td>11</td></tr></table><table><tr><td>1</td><td>2</td></tr><tr><td>3</td><td>4</td></tr></table></body></html>";
+
+static const char* comboBoxSelector = "<html><body><select><option selected value='foo'>foo</option><option value='bar'>bar</option></select></body></html>";
+
+static const char* formWithTextInputs = "<html><body><form><input type='text' name='entry' /></form></body></html>";
+
+static const char* hypertextAndHyperlinks = "<html><body><p>A paragraph with no links at all</p><p><a href='http://foo.bar.baz/'>A line</a> with <a href='http://bar.baz.foo/'>a link in the middle</a> as well as at the beginning and <a href='http://baz.foo.bar/'>at the end</a></p></body></html>";
+
+static const char* layoutAndDataTables = "<html><body><table><tr><th>Odd</th><th>Even</th></tr><tr><td>1</td><td>2</td></tr></table><table><tr><td>foo</td><td>bar</td></tr></table></body></html>";
+
+static const char* linksWithInlineImages = "<html><head><style>a.http:before {content: url(no-image.png);}</style><body><p><a class='http' href='foo'>foo</a> bar baz</p><p>foo <a class='http' href='bar'>bar</a> baz</p><p>foo bar <a class='http' href='baz'>baz</a></p></body></html>";
+
+static const char* listsOfItems = "<html><body><ul><li>text only</li><li><a href='foo'>link only</a></li><li>text and a <a href='bar'>link</a></li></ul><ol><li>text only</li><li><a href='foo'>link only</a></li><li>text and a <a href='bar'>link</a></li></ol></body></html>";
+
+static const char* textForSelections = "<html><body><p>A paragraph with plain text</p><p>A paragraph with <a href='http://webkit.org'>a link</a> in the middle</p></body></html>";
+
+static const char* textWithAttributes = "<html><head><style>.st1 {font-family: monospace; color:rgb(120,121,122);} .st2 {text-decoration:underline; background-color:rgb(80,81,82);}</style></head><body><p style=\"font-size:14; text-align:right;\">This is the <i>first</i><b> sentence of this text.</b></p><p class=\"st1\">This sentence should have an style applied <span class=\"st2\">and this part should have another one</span>.</p><p>x<sub>1</sub><sup>2</sup>=x<sub>2</sub><sup>3</sup></p><p style=\"text-align:center;\">This sentence is the <strike>last</strike> one.</p></body></html>";
+
+static void waitForAccessibleObjects()
+{
+ /* Manually spin the main context to make sure the accessible
+ objects are properly created before continuing. */
+ while (g_main_context_pending(0))
+ g_main_context_iteration(0, TRUE);
+}
+
+typedef gchar* (*AtkGetTextFunction) (AtkText*, gint, AtkTextBoundary, gint*, gint*);
+
+static void testGetTextFunction(AtkText* textObject, AtkGetTextFunction fn, AtkTextBoundary boundary, gint offset, const char* textResult, gint startOffsetResult, gint endOffsetResult)
+{
+ gint startOffset;
+ gint endOffset;
+ char* text = fn(textObject, offset, boundary, &startOffset, &endOffset);
+ g_assert_cmpstr(text, ==, textResult);
+ g_assert_cmpint(startOffset, ==, startOffsetResult);
+ g_assert_cmpint(endOffset, ==, endOffsetResult);
+ g_free(text);
+}
+
+static void runGetTextTests(AtkText* textObject)
+{
+ char* text = atk_text_get_text(textObject, 0, -1);
+ g_assert_cmpstr(text, ==, "This is a test. This is the second sentence. And this the third.");
+ g_free(text);
+
+ /* ATK_TEXT_BOUNDARY_CHAR */
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 0, "T", 0, 1);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 0, "h", 1, 2);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 0, "", 0, 0);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 1, "T", 0, 1);
+
+ /* ATK_TEXT_BOUNDARY_WORD_START */
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 0, "This ", 0, 5);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 4, "This ", 0, 5);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 10, "test. ", 10, 16);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 58, "third.", 58, 64);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 5, "This ", 0, 5);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 7, "This ", 0, 5);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 0, "is ", 5, 8);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 4, "is ", 5, 8);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 3, "is ", 5, 8);
+
+ /* ATK_TEXT_BOUNDARY_WORD_END */
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 0, "This", 0, 4);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 4, " is", 4, 7);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 5, " is", 4, 7);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 9, " test", 9, 14);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 5, "This", 0, 4);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 4, "This", 0, 4);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 7, " is", 4, 7);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 5, " a", 7, 9);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 4, " a", 7, 9);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 58, " third", 57, 63);
+
+ /* ATK_TEXT_BOUNDARY_SENTENCE_START */
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 0, "This is a test. ", 0, 16);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 15, "This is a test. ", 0, 16);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 0, "This is the second sentence. ", 16, 45);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 15, "This is the second sentence. ", 16, 45);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 16, "This is a test. ", 0, 16);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 44, "This is a test. ", 0, 16);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 15, "", 0, 0);
+
+ /* ATK_TEXT_BOUNDARY_SENTENCE_END */
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 0, "This is a test.", 0, 15);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 15, " This is the second sentence.", 15, 44);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 16, " This is the second sentence.", 15, 44);
+
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 17, " This is the second sentence.", 15, 44);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 0, " This is the second sentence.", 15, 44);
+
+ testGetTextFunction(textObject, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 15, " And this the third.", 44, 64);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 16, "This is a test.", 0, 15);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 15, "This is a test.", 0, 15);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 14, "", 0, 0);
+
+ testGetTextFunction(textObject, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 44, " This is the second sentence.", 15, 44);
+
+ /* It's trick to test these properly right now, since our a11y
+ implementation splits different lines in different a11y items. */
+ /* ATK_TEXT_BOUNDARY_LINE_START */
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_START,
+ 0, "This is a test. This is the second sentence. And this the third.", 0, 64);
+
+ /* ATK_TEXT_BOUNDARY_LINE_END */
+ testGetTextFunction(textObject, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_LINE_END,
+ 0, "This is a test. This is the second sentence. And this the third.", 0, 64);
+}
+
+static void testWebkitAtkComboBox()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, comboBoxSelector, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ AtkObject* formObject = atk_object_ref_accessible_child(object, 0);
+ g_assert(formObject);
+
+ AtkObject* comboBox = atk_object_ref_accessible_child(formObject, 0);
+ g_assert(ATK_IS_OBJECT(comboBox));
+
+ AtkObject* menuPopup = atk_object_ref_accessible_child(comboBox, 0);
+ g_assert(ATK_IS_OBJECT(menuPopup));
+
+ AtkObject* item1 = atk_object_ref_accessible_child(menuPopup, 0);
+ g_assert(ATK_IS_OBJECT(item1));
+
+ AtkObject* item2 = atk_object_ref_accessible_child(menuPopup, 1);
+ g_assert(ATK_IS_OBJECT(item2));
+
+ /* Check roles. */
+ g_assert(atk_object_get_role(comboBox) == ATK_ROLE_COMBO_BOX);
+ g_assert(atk_object_get_role(menuPopup) == ATK_ROLE_MENU);
+ g_assert(atk_object_get_role(item1) == ATK_ROLE_MENU_ITEM);
+ g_assert(atk_object_get_role(item2) == ATK_ROLE_MENU_ITEM);
+
+ /* Check the implementation of the AtkSelection interface. */
+ g_assert(ATK_IS_SELECTION(comboBox));
+ AtkSelection* atkSelection = ATK_SELECTION(comboBox);
+ g_assert_cmpint(atk_selection_get_selection_count(atkSelection), ==, 1);
+ g_assert(atk_selection_is_child_selected(atkSelection, 0));
+ g_assert(!atk_selection_is_child_selected(atkSelection, 1));
+ AtkObject* selectedItem = atk_selection_ref_selection(atkSelection, 0);
+ g_assert(selectedItem == item1);
+ g_object_unref(selectedItem);
+
+ /* Check the implementations of the AtkAction interface. */
+ g_assert(ATK_IS_ACTION(comboBox));
+ AtkAction* atkAction = ATK_ACTION(comboBox);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ g_assert(ATK_IS_ACTION(menuPopup));
+ atkAction = ATK_ACTION(menuPopup);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ g_assert(ATK_IS_ACTION(item1));
+ atkAction = ATK_ACTION(item1);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ g_assert(ATK_IS_ACTION(item2));
+ atkAction = ATK_ACTION(item2);
+ g_assert_cmpint(atk_action_get_n_actions(atkAction), ==, 1);
+ g_assert(atk_action_do_action(atkAction, 0));
+
+ /* After selecting the second item, selection should have changed. */
+ g_assert_cmpint(atk_selection_get_selection_count(atkSelection), ==, 1);
+ g_assert(!atk_selection_is_child_selected(atkSelection, 0));
+ g_assert(atk_selection_is_child_selected(atkSelection, 1));
+ selectedItem = atk_selection_ref_selection(atkSelection, 0);
+ g_assert(selectedItem == item2);
+ g_object_unref(selectedItem);
+
+ /* Check the implementation of the AtkText interface. */
+ g_assert(ATK_IS_TEXT(item1));
+ AtkText* atkText = ATK_TEXT(item1);
+ char *text = atk_text_get_text(atkText, 0, -1);
+ g_assert_cmpstr(text, ==, "foo");
+ g_free(text);
+ text = atk_text_get_text(atkText, 0, 2);
+ g_assert_cmpstr(text, ==, "fo");
+ g_free(text);
+
+ g_assert(ATK_IS_TEXT(item2));
+ atkText = ATK_TEXT(item2);
+ text = atk_text_get_text(atkText, 0, -1);
+ g_assert_cmpstr(text, ==, "bar");
+ g_free(text);
+ text = atk_text_get_text(atkText, 1, 3);
+ g_assert_cmpstr(text, ==, "ar");
+ g_free(text);
+
+ g_object_unref(formObject);
+ g_object_unref(comboBox);
+ g_object_unref(menuPopup);
+ g_object_unref(item1);
+ g_object_unref(item2);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextAtOffsetForms()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contents, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ /* Get to the inner AtkText object. */
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+
+ AtkText* textObject = ATK_TEXT(object);
+ g_assert(ATK_IS_TEXT(textObject));
+
+ runGetTextTests(textObject);
+
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextAtOffset()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contents, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ /* Get to the inner AtkText object. */
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+
+ AtkText* textObject = ATK_TEXT(object);
+ g_assert(ATK_IS_TEXT(textObject));
+
+ runGetTextTests(textObject);
+
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextAtOffsetNewlines()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contentsWithNewlines, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ /* Get to the inner AtkText object. */
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+
+ AtkText* textObject = ATK_TEXT(object);
+ g_assert(ATK_IS_TEXT(textObject));
+
+ runGetTextTests(textObject);
+
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextAtOffsetTextarea()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contentsInTextarea, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ /* Get to the inner AtkText object. */
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+
+ AtkText* textObject = ATK_TEXT(object);
+ g_assert(ATK_IS_TEXT(textObject));
+
+ runGetTextTests(textObject);
+
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextAtOffsetTextInput()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contentsInTextInput, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ /* Get to the inner AtkText object. */
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+
+ AtkText* textObject = ATK_TEXT(object);
+ g_assert(ATK_IS_TEXT(textObject));
+
+ runGetTextTests(textObject);
+
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextInParagraphAndBodySimple()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contentsInParagraphAndBodySimple, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ /* Get to the inner AtkText object. */
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ AtkObject* object1 = atk_object_ref_accessible_child(object, 0);
+ g_assert(object1);
+ AtkObject* object2 = atk_object_ref_accessible_child(object, 1);
+ g_assert(object2);
+
+ AtkText* textObject1 = ATK_TEXT(object1);
+ g_assert(ATK_IS_TEXT(textObject1));
+ AtkText* textObject2 = ATK_TEXT(object2);
+ g_assert(ATK_IS_TEXT(textObject2));
+
+ char *text = atk_text_get_text(textObject1, 0, -1);
+ g_assert_cmpstr(text, ==, "This is a test.");
+
+ text = atk_text_get_text(textObject2, 0, 12);
+ g_assert_cmpstr(text, ==, "Hello world.");
+
+ g_object_unref(object1);
+ g_object_unref(object2);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextInParagraphAndBodyModerate()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contentsInParagraphAndBodyModerate, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ /* Get to the inner AtkText object. */
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ AtkObject* object1 = atk_object_ref_accessible_child(object, 0);
+ g_assert(object1);
+ AtkObject* object2 = atk_object_ref_accessible_child(object, 1);
+ g_assert(object2);
+
+ AtkText* textObject1 = ATK_TEXT(object1);
+ g_assert(ATK_IS_TEXT(textObject1));
+ AtkText* textObject2 = ATK_TEXT(object2);
+ g_assert(ATK_IS_TEXT(textObject2));
+
+ char *text = atk_text_get_text(textObject1, 0, -1);
+ g_assert_cmpstr(text, ==, "This is a test.");
+
+ text = atk_text_get_text(textObject2, 0, 53);
+ g_assert_cmpstr(text, ==, "Hello world.\nThis sentence is green.\nThis one is not.");
+
+ g_object_unref(object1);
+ g_object_unref(object2);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetTextInTable()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contentsInTable, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+ object = atk_object_ref_accessible_child(object, 0);
+ g_assert(object);
+
+ /* Tables should not implement AtkText. */
+ g_assert(!G_TYPE_INSTANCE_GET_INTERFACE(object, ATK_TYPE_TEXT, AtkTextIface));
+
+ g_object_unref(object);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetHeadersInTable()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, contentsInTableWithHeaders, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* axWebView = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(axWebView);
+
+ /* Check table with both column and row headers. */
+ AtkObject* table = atk_object_ref_accessible_child(axWebView, 0);
+ g_assert(table);
+ g_assert(atk_object_get_role(table) == ATK_ROLE_TABLE);
+
+ AtkObject* colHeader = atk_table_get_column_header(ATK_TABLE(table), 0);
+ g_assert(colHeader);
+ g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(colHeader) == 0);
+
+ colHeader = atk_table_get_column_header(ATK_TABLE(table), 1);
+ g_assert(colHeader);
+ g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(colHeader) == 1);
+
+ colHeader = atk_table_get_column_header(ATK_TABLE(table), 2);
+ g_assert(colHeader);
+ g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(colHeader) == 2);
+
+ colHeader = atk_table_get_column_header(ATK_TABLE(table), 3);
+ g_assert(colHeader);
+ g_assert(atk_object_get_role(colHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(colHeader) == 2);
+
+ AtkObject* rowHeader = atk_table_get_row_header(ATK_TABLE(table), 0);
+ g_assert(rowHeader);
+ g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(rowHeader) == 0);
+
+ rowHeader = atk_table_get_row_header(ATK_TABLE(table), 1);
+ g_assert(rowHeader);
+ g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(rowHeader) == 3);
+
+ rowHeader = atk_table_get_row_header(ATK_TABLE(table), 2);
+ g_assert(rowHeader);
+ g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(rowHeader) == 7);
+
+ rowHeader = atk_table_get_row_header(ATK_TABLE(table), 3);
+ g_assert(rowHeader);
+ g_assert(atk_object_get_role(rowHeader) == ATK_ROLE_TABLE_CELL);
+ g_assert(atk_object_get_index_in_parent(rowHeader) == 7);
+
+ g_object_unref(table);
+
+ /* Check table with no headers at all. */
+ table = atk_object_ref_accessible_child(axWebView, 1);
+ g_assert(table);
+ g_assert(atk_object_get_role(table) == ATK_ROLE_TABLE);
+
+ colHeader = atk_table_get_column_header(ATK_TABLE(table), 0);
+ g_assert(colHeader == 0);
+
+ colHeader = atk_table_get_column_header(ATK_TABLE(table), 1);
+ g_assert(colHeader == 0);
+
+ rowHeader = atk_table_get_row_header(ATK_TABLE(table), 0);
+ g_assert(rowHeader == 0);
+
+ rowHeader = atk_table_get_row_header(ATK_TABLE(table), 1);
+ g_assert(rowHeader == 0);
+
+ g_object_unref(table);
+ g_object_unref(webView);
+}
+
+static gint compAtkAttribute(AtkAttribute* a1, AtkAttribute* a2)
+{
+ gint strcmpVal = g_strcmp0(a1->name, a2->name);
+ if (strcmpVal)
+ return strcmpVal;
+ return g_strcmp0(a1->value, a2->value);
+}
+
+static gint compAtkAttributeName(AtkAttribute* a1, AtkAttribute* a2)
+{
+ return g_strcmp0(a1->name, a2->name);
+}
+
+static gboolean atkAttributeSetAttributeNameHasValue(AtkAttributeSet* set, const gchar* attributeName, const gchar* value)
+{
+ AtkAttribute at;
+ at.name = (gchar*)attributeName;
+ GSList* element = g_slist_find_custom(set, &at, (GCompareFunc)compAtkAttributeName);
+ return element && !g_strcmp0(((AtkAttribute*)(element->data))->value, value);
+}
+
+static gboolean atkAttributeSetContainsAttributeName(AtkAttributeSet* set, const gchar* attributeName)
+{
+ AtkAttribute at;
+ at.name = (gchar*)attributeName;
+ return g_slist_find_custom(set, &at, (GCompareFunc)compAtkAttributeName) ? true : false;
+}
+
+static gboolean atkAttributeSetAttributeHasValue(AtkAttributeSet* set, AtkTextAttribute attribute, const gchar* value)
+{
+ return atkAttributeSetAttributeNameHasValue(set, atk_text_attribute_get_name(attribute), value);
+}
+
+static gboolean atkAttributeSetAreEqual(AtkAttributeSet* set1, AtkAttributeSet* set2)
+{
+ if (!set1)
+ return !set2;
+
+ set1 = g_slist_sort(set1, (GCompareFunc)compAtkAttribute);
+ set2 = g_slist_sort(set2, (GCompareFunc)compAtkAttribute);
+
+ while (set1) {
+ if (!set2 || compAtkAttribute(set1->data, set2->data))
+ return FALSE;
+
+ set1 = set1->next;
+ set2 = set2->next;
+ }
+
+ return (!set2);
+}
+
+static void testWebkitAtkTextAttributes()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, textWithAttributes, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ AtkObject* child = atk_object_ref_accessible_child(object, 0);
+ g_assert(child && ATK_IS_TEXT(child));
+ AtkText* childText = ATK_TEXT(child);
+
+ gint startOffset;
+ gint endOffset;
+ AtkAttributeSet* set1 = atk_text_get_run_attributes(childText, 0, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 0);
+ g_assert_cmpint(endOffset, ==, 12);
+ g_assert(atkAttributeSetAreEqual(set1, 0));
+
+ AtkAttributeSet* set2 = atk_text_get_run_attributes(childText, 15, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 12);
+ g_assert_cmpint(endOffset, ==, 17);
+ g_assert(atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_STYLE, "italic"));
+
+ AtkAttributeSet* set3 = atk_text_get_run_attributes(childText, 17, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 17);
+ g_assert_cmpint(endOffset, ==, 40);
+ g_assert(atkAttributeSetAttributeHasValue(set3, ATK_TEXT_ATTR_WEIGHT, "700"));
+
+ AtkAttributeSet* set4 = atk_text_get_default_attributes(childText);
+ g_assert(atkAttributeSetAttributeHasValue(set4, ATK_TEXT_ATTR_STYLE, "normal"));
+ g_assert(atkAttributeSetAttributeHasValue(set4, ATK_TEXT_ATTR_JUSTIFICATION, "right"));
+ g_assert(atkAttributeSetAttributeHasValue(set4, ATK_TEXT_ATTR_SIZE, "14"));
+ atk_attribute_set_free(set1);
+ atk_attribute_set_free(set2);
+ atk_attribute_set_free(set3);
+ atk_attribute_set_free(set4);
+
+ child = atk_object_ref_accessible_child(object, 1);
+ g_assert(child && ATK_IS_TEXT(child));
+ childText = ATK_TEXT(child);
+
+ set1 = atk_text_get_default_attributes(childText);
+ g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_FAMILY_NAME, "monospace"));
+ g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_STYLE, "normal"));
+ g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_STRIKETHROUGH, "false"));
+ g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_WEIGHT, "400"));
+ g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_FG_COLOR, "120,121,122"));
+
+ set2 = atk_text_get_run_attributes(childText, 43, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 43);
+ g_assert_cmpint(endOffset, ==, 80);
+ /* Checks that default attributes of text are not returned when called to atk_text_get_run_attributes. */
+ g_assert(!atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_FG_COLOR, "120,121,122"));
+ g_assert(atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_UNDERLINE, "single"));
+ g_assert(atkAttributeSetAttributeHasValue(set2, ATK_TEXT_ATTR_BG_COLOR, "80,81,82"));
+ atk_attribute_set_free(set1);
+ atk_attribute_set_free(set2);
+
+ child = atk_object_ref_accessible_child(object, 2);
+ g_assert(child && ATK_IS_TEXT(child));
+ childText = ATK_TEXT(child);
+
+ set1 = atk_text_get_run_attributes(childText, 0, &startOffset, &endOffset);
+ set2 = atk_text_get_run_attributes(childText, 3, &startOffset, &endOffset);
+ g_assert(atkAttributeSetAreEqual(set1, set2));
+ atk_attribute_set_free(set2);
+
+ set2 = atk_text_get_run_attributes(childText, 1, &startOffset, &endOffset);
+ set3 = atk_text_get_run_attributes(childText, 5, &startOffset, &endOffset);
+ g_assert(atkAttributeSetAreEqual(set2, set3));
+ g_assert(!atkAttributeSetAreEqual(set1, set2));
+ atk_attribute_set_free(set3);
+
+ set3 = atk_text_get_run_attributes(childText, 2, &startOffset, &endOffset);
+ set4 = atk_text_get_run_attributes(childText, 6, &startOffset, &endOffset);
+ g_assert(atkAttributeSetAreEqual(set3, set4));
+ g_assert(!atkAttributeSetAreEqual(set1, set3));
+ g_assert(!atkAttributeSetAreEqual(set2, set3));
+ atk_attribute_set_free(set1);
+ atk_attribute_set_free(set2);
+ atk_attribute_set_free(set3);
+ atk_attribute_set_free(set4);
+
+ child = atk_object_ref_accessible_child(object, 3);
+ g_assert(child && ATK_IS_TEXT(child));
+ childText = ATK_TEXT(child);
+ set1 = atk_text_get_run_attributes(childText, 24, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 21);
+ g_assert_cmpint(endOffset, ==, 25);
+ g_assert(atkAttributeSetAttributeHasValue(set1, ATK_TEXT_ATTR_STRIKETHROUGH, "true"));
+
+ set2 = atk_text_get_run_attributes(childText, 25, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 25);
+ g_assert_cmpint(endOffset, ==, 30);
+ g_assert(atkAttributeSetAreEqual(set2, 0));
+
+ set3 = atk_text_get_default_attributes(childText);
+ g_assert(atkAttributeSetAttributeHasValue(set3, ATK_TEXT_ATTR_JUSTIFICATION, "center"));
+ atk_attribute_set_free(set1);
+ atk_attribute_set_free(set2);
+ atk_attribute_set_free(set3);
+}
+
+static void testWebkitAtkTextSelections()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, textForSelections, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ AtkText* paragraph1 = ATK_TEXT(atk_object_ref_accessible_child(object, 0));
+ g_assert(ATK_IS_TEXT(paragraph1));
+ AtkText* paragraph2 = ATK_TEXT(atk_object_ref_accessible_child(object, 1));
+ g_assert(ATK_IS_TEXT(paragraph2));
+ AtkText* link = ATK_TEXT(atk_object_ref_accessible_child(ATK_OBJECT(paragraph2), 0));
+ g_assert(ATK_IS_TEXT(link));
+
+ /* First paragraph (simple text). */
+
+ /* Basic initial checks. */
+ g_assert_cmpint(atk_text_get_n_selections(paragraph1), ==, 0);
+
+ gint startOffset;
+ gint endOffset;
+ gchar* selectedText = atk_text_get_selection(paragraph1, 0, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 0);
+ g_assert_cmpint(endOffset, ==, 0);
+ g_assert_cmpstr(selectedText, ==, 0);
+ g_free (selectedText);
+
+ /* Try removing a non existing (yet) selection. */
+ gboolean result = atk_text_remove_selection(paragraph1, 0);
+ g_assert(!result);
+
+ /* Try setting a 0-char selection. */
+ result = atk_text_set_selection(paragraph1, 0, 5, 5);
+ g_assert(result);
+
+ /* Make a selection and test it. */
+ result = atk_text_set_selection(paragraph1, 0, 5, 25);
+ g_assert(result);
+ g_assert_cmpint(atk_text_get_n_selections(paragraph1), ==, 1);
+ selectedText = atk_text_get_selection(paragraph1, 0, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 5);
+ g_assert_cmpint(endOffset, ==, 25);
+ g_assert_cmpstr(selectedText, ==, "agraph with plain te");
+ g_free (selectedText);
+ /* Try removing the selection from other AtkText object (should fail). */
+ result = atk_text_remove_selection(paragraph2, 0);
+ g_assert(!result);
+
+ /* Remove the selection and test everything again. */
+ result = atk_text_remove_selection(paragraph1, 0);
+ g_assert(result);
+ g_assert_cmpint(atk_text_get_n_selections(paragraph1), ==, 0);
+ selectedText = atk_text_get_selection(paragraph1, 0, &startOffset, &endOffset);
+ /* Now offsets should be the same, set to the last position of the caret. */
+ g_assert_cmpint(startOffset, ==, endOffset);
+ g_assert_cmpint(startOffset, ==, 25);
+ g_assert_cmpint(endOffset, ==, 25);
+ g_assert_cmpstr(selectedText, ==, 0);
+ g_free (selectedText);
+
+ /* Second paragraph (text + link + text). */
+
+ /* Set a selection partially covering the link and test it. */
+ result = atk_text_set_selection(paragraph2, 0, 7, 21);
+ g_assert(result);
+
+ /* Test the paragraph first. */
+ g_assert_cmpint(atk_text_get_n_selections(paragraph2), ==, 1);
+ selectedText = atk_text_get_selection(paragraph2, 0, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 7);
+ g_assert_cmpint(endOffset, ==, 21);
+ g_assert_cmpstr(selectedText, ==, "raph with a li");
+ g_free (selectedText);
+
+ /* Now test just the link. */
+ g_assert_cmpint(atk_text_get_n_selections(link), ==, 1);
+ selectedText = atk_text_get_selection(link, 0, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 0);
+ g_assert_cmpint(endOffset, ==, 4);
+ g_assert_cmpstr(selectedText, ==, "a li");
+ g_free (selectedText);
+
+ /* Make a selection after the link and check selection for the whole paragraph. */
+ result = atk_text_set_selection(paragraph2, 0, 27, 37);
+ g_assert(result);
+ g_assert_cmpint(atk_text_get_n_selections(paragraph2), ==, 1);
+ selectedText = atk_text_get_selection(paragraph2, 0, &startOffset, &endOffset);
+ g_assert_cmpint(startOffset, ==, 27);
+ g_assert_cmpint(endOffset, ==, 37);
+ g_assert_cmpstr(selectedText, ==, "the middle");
+ g_free (selectedText);
+
+ /* Remove selections and text everything again. */
+ result = atk_text_remove_selection(paragraph2, 0);
+ g_assert(result);
+ g_assert_cmpint(atk_text_get_n_selections(paragraph2), ==, 0);
+ selectedText = atk_text_get_selection(paragraph2, 0, &startOffset, &endOffset);
+ /* Now offsets should be the same (no selection). */
+ g_assert_cmpint(startOffset, ==, endOffset);
+ g_assert_cmpstr(selectedText, ==, 0);
+ g_free (selectedText);
+
+ g_assert_cmpint(atk_text_get_n_selections(link), ==, 0);
+ selectedText = atk_text_get_selection(link, 0, &startOffset, &endOffset);
+ /* Now offsets should be the same (no selection). */
+ g_assert_cmpint(startOffset, ==, endOffset);
+ g_assert_cmpstr(selectedText, ==, 0);
+ g_free (selectedText);
+
+ g_object_unref(paragraph1);
+ g_object_unref(paragraph2);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkGetExtents()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, centeredContents, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ AtkText* shortText1 = ATK_TEXT(atk_object_ref_accessible_child(object, 0));
+ g_assert(ATK_IS_TEXT(shortText1));
+ AtkText* longText = ATK_TEXT(atk_object_ref_accessible_child(object, 1));
+ g_assert(ATK_IS_TEXT(longText));
+ AtkText* shortText2 = ATK_TEXT(atk_object_ref_accessible_child(object, 2));
+ g_assert(ATK_IS_TEXT(shortText2));
+ AtkText* multilineText = ATK_TEXT(atk_object_ref_accessible_child(object, 3));
+ g_assert(ATK_IS_TEXT(multilineText));
+
+ /* Start with window extents. */
+ AtkTextRectangle sline_window1, sline_window2, lline_window, mline_window;
+ atk_text_get_range_extents(shortText1, 0, 10, ATK_XY_WINDOW, &sline_window1);
+ atk_text_get_range_extents(longText, 0, 44, ATK_XY_WINDOW, &lline_window);
+ atk_text_get_range_extents(shortText2, 0, 10, ATK_XY_WINDOW, &sline_window2);
+ atk_text_get_range_extents(multilineText, 0, 60, ATK_XY_WINDOW, &mline_window);
+
+ /* Check vertical line position. */
+ g_assert_cmpint(sline_window1.y + sline_window1.height, <=, lline_window.y);
+ g_assert_cmpint(lline_window.y + lline_window.height + sline_window2.height, <=, mline_window.y);
+
+ /* Paragraphs 1 and 3 have identical text and alignment. */
+ g_assert_cmpint(sline_window1.x, ==, sline_window2.x);
+ g_assert_cmpint(sline_window1.width, ==, sline_window2.width);
+ g_assert_cmpint(sline_window1.height, ==, sline_window2.height);
+
+ /* All lines should be the same height; line 2 is the widest line. */
+ g_assert_cmpint(sline_window1.height, ==, lline_window.height);
+ g_assert_cmpint(sline_window1.width, <, lline_window.width);
+
+ /* Make sure the character extents jive with the range extents. */
+ gint x;
+ gint y;
+ gint width;
+ gint height;
+
+ /* First paragraph (short text). */
+ atk_text_get_character_extents(shortText1, 0, &x, &y, &width, &height, ATK_XY_WINDOW);
+ g_assert_cmpint(x, ==, sline_window1.x);
+ g_assert_cmpint(y, ==, sline_window1.y);
+ g_assert_cmpint(height, ==, sline_window1.height);
+
+ atk_text_get_character_extents(shortText1, 9, &x, &y, &width, &height, ATK_XY_WINDOW);
+ g_assert_cmpint(x, ==, sline_window1.x + sline_window1.width - width);
+ g_assert_cmpint(y, ==, sline_window1.y);
+ g_assert_cmpint(height, ==, sline_window1.height);
+
+ /* Second paragraph (long text). */
+ atk_text_get_character_extents(longText, 0, &x, &y, &width, &height, ATK_XY_WINDOW);
+ g_assert_cmpint(x, ==, lline_window.x);
+ g_assert_cmpint(y, ==, lline_window.y);
+ g_assert_cmpint(height, ==, lline_window.height);
+
+ atk_text_get_character_extents(longText, 43, &x, &y, &width, &height, ATK_XY_WINDOW);
+ g_assert_cmpint(x, ==, lline_window.x + lline_window.width - width);
+ g_assert_cmpint(y, ==, lline_window.y);
+ g_assert_cmpint(height, ==, lline_window.height);
+
+ /* Third paragraph (short text). */
+ atk_text_get_character_extents(shortText2, 0, &x, &y, &width, &height, ATK_XY_WINDOW);
+ g_assert_cmpint(x, ==, sline_window2.x);
+ g_assert_cmpint(y, ==, sline_window2.y);
+ g_assert_cmpint(height, ==, sline_window2.height);
+
+ atk_text_get_character_extents(shortText2, 9, &x, &y, &width, &height, ATK_XY_WINDOW);
+ g_assert_cmpint(x, ==, sline_window2.x + sline_window2.width - width);
+ g_assert_cmpint(y, ==, sline_window2.y);
+ g_assert_cmpint(height, ==, sline_window2.height);
+
+ /* Four paragraph (3 lines multi-line text). */
+ atk_text_get_character_extents(multilineText, 0, &x, &y, &width, &height, ATK_XY_WINDOW);
+ g_assert_cmpint(x, ==, mline_window.x);
+ g_assert_cmpint(y, ==, mline_window.y);
+ g_assert_cmpint(3 * height, ==, mline_window.height);
+
+ atk_text_get_character_extents(multilineText, 59, &x, &y, &width, &height, ATK_XY_WINDOW);
+ /* Last line won't fill the whole width of the rectangle. */
+ g_assert_cmpint(x, <=, mline_window.x + mline_window.width - width);
+ g_assert_cmpint(y, ==, mline_window.y + mline_window.height - height);
+ g_assert_cmpint(height, <=, mline_window.height);
+
+ g_object_unref(shortText1);
+ g_object_unref(shortText2);
+ g_object_unref(longText);
+ g_object_unref(multilineText);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkLayoutAndDataTables()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, layoutAndDataTables, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ /* Check the non-layout table (data table). */
+
+ AtkObject* table1 = atk_object_ref_accessible_child(object, 0);
+ g_assert(ATK_IS_TABLE(table1));
+ AtkAttributeSet* set1 = atk_object_get_attributes(table1);
+ g_assert(set1);
+ g_assert(!atkAttributeSetContainsAttributeName(set1, "layout-guess"));
+ atk_attribute_set_free(set1);
+
+ /* Check the layout table. */
+
+ AtkObject* table2 = atk_object_ref_accessible_child(object, 1);
+ g_assert(ATK_IS_TABLE(table2));
+ AtkAttributeSet* set2 = atk_object_get_attributes(table2);
+ g_assert(set2);
+ g_assert(atkAttributeSetContainsAttributeName(set2, "layout-guess"));
+ g_assert(atkAttributeSetAttributeNameHasValue(set2, "layout-guess", "true"));
+ atk_attribute_set_free(set2);
+
+ g_object_unref(table1);
+ g_object_unref(table2);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkLinksWithInlineImages()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, linksWithInlineImages, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ /* First paragraph (link at the beginning). */
+ AtkObject* paragraph = atk_object_ref_accessible_child(object, 0);
+ g_assert(ATK_IS_TEXT(paragraph));
+ gint startOffset;
+ gint endOffset;
+ gchar* text = atk_text_get_text_at_offset(ATK_TEXT(paragraph), 0, ATK_TEXT_BOUNDARY_LINE_START, &startOffset, &endOffset);
+ g_assert(text);
+ g_assert_cmpstr(text, ==, "foo bar baz");
+ g_assert_cmpint(startOffset, ==, 0);
+ g_assert_cmpint(endOffset, ==, 11);
+ g_free(text);
+ g_object_unref(paragraph);
+
+ /* Second paragraph (link in the middle). */
+ paragraph = atk_object_ref_accessible_child(object, 1);
+ g_assert(ATK_IS_TEXT(paragraph));
+ text = atk_text_get_text_at_offset(ATK_TEXT(paragraph), 0, ATK_TEXT_BOUNDARY_LINE_START, &startOffset, &endOffset);
+ g_assert(text);
+ g_assert_cmpstr(text, ==, "foo bar baz");
+ g_assert_cmpint(startOffset, ==, 0);
+ g_assert_cmpint(endOffset, ==, 11);
+ g_free(text);
+ g_object_unref(paragraph);
+
+ /* Third paragraph (link at the end). */
+ paragraph = atk_object_ref_accessible_child(object, 2);
+ g_assert(ATK_IS_TEXT(paragraph));
+ text = atk_text_get_text_at_offset(ATK_TEXT(paragraph), 0, ATK_TEXT_BOUNDARY_LINE_START, &startOffset, &endOffset);
+ g_assert(text);
+ g_assert_cmpstr(text, ==, "foo bar baz");
+ g_assert_cmpint(startOffset, ==, 0);
+ g_assert_cmpint(endOffset, ==, 11);
+ g_free(text);
+ g_object_unref(paragraph);
+
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkHypertextAndHyperlinks()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, hypertextAndHyperlinks, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ AtkObject* paragraph1 = atk_object_ref_accessible_child(object, 0);
+ g_assert(ATK_OBJECT(paragraph1));
+ g_assert(atk_object_get_role(paragraph1) == ATK_ROLE_PARAGRAPH);
+ g_assert(ATK_IS_HYPERTEXT(paragraph1));
+
+ /* No links in the first paragraph. */
+ gint nLinks = atk_hypertext_get_n_links(ATK_HYPERTEXT(paragraph1));
+ g_assert_cmpint(nLinks, ==, 0);
+
+ AtkObject* paragraph2 = atk_object_ref_accessible_child(object, 1);
+ g_assert(ATK_OBJECT(paragraph2));
+ g_assert(atk_object_get_role(paragraph2) == ATK_ROLE_PARAGRAPH);
+ g_assert(ATK_IS_HYPERTEXT(paragraph2));
+
+ /* Check links in the second paragraph.
+ nLinks = atk_hypertext_get_n_links(ATK_HYPERTEXT(paragraph2));
+ g_assert_cmpint(nLinks, ==, 3); */
+
+ AtkHyperlink* hLink1 = atk_hypertext_get_link(ATK_HYPERTEXT(paragraph2), 0);
+ g_assert(ATK_HYPERLINK(hLink1));
+ AtkObject* hLinkObject1 = atk_hyperlink_get_object(hLink1, 0);
+ g_assert(ATK_OBJECT(hLinkObject1));
+ g_assert(atk_object_get_role(hLinkObject1) == ATK_ROLE_LINK);
+ g_assert_cmpint(atk_hyperlink_get_start_index(hLink1), ==, 0);
+ g_assert_cmpint(atk_hyperlink_get_end_index(hLink1), ==, 6);
+ g_assert_cmpint(atk_hyperlink_get_n_anchors(hLink1), ==, 1);
+ g_assert_cmpstr(atk_hyperlink_get_uri(hLink1, 0), ==, "http://foo.bar.baz/");
+
+ AtkHyperlink* hLink2 = atk_hypertext_get_link(ATK_HYPERTEXT(paragraph2), 1);
+ g_assert(ATK_HYPERLINK(hLink2));
+ AtkObject* hLinkObject2 = atk_hyperlink_get_object(hLink2, 0);
+ g_assert(ATK_OBJECT(hLinkObject2));
+ g_assert(atk_object_get_role(hLinkObject2) == ATK_ROLE_LINK);
+ g_assert_cmpint(atk_hyperlink_get_start_index(hLink2), ==, 12);
+ g_assert_cmpint(atk_hyperlink_get_end_index(hLink2), ==, 32);
+ g_assert_cmpint(atk_hyperlink_get_n_anchors(hLink2), ==, 1);
+ g_assert_cmpstr(atk_hyperlink_get_uri(hLink2, 0), ==, "http://bar.baz.foo/");
+
+ AtkHyperlink* hLink3 = atk_hypertext_get_link(ATK_HYPERTEXT(paragraph2), 2);
+ g_assert(ATK_HYPERLINK(hLink3));
+ AtkObject* hLinkObject3 = atk_hyperlink_get_object(hLink3, 0);
+ g_assert(ATK_OBJECT(hLinkObject3));
+ g_assert(atk_object_get_role(hLinkObject3) == ATK_ROLE_LINK);
+ g_assert_cmpint(atk_hyperlink_get_start_index(hLink3), ==, 65);
+ g_assert_cmpint(atk_hyperlink_get_end_index(hLink3), ==, 75);
+ g_assert_cmpint(atk_hyperlink_get_n_anchors(hLink3), ==, 1);
+ g_assert_cmpstr(atk_hyperlink_get_uri(hLink3, 0), ==, "http://baz.foo.bar/");
+
+ /* Finally check the AtkAction interface for a given AtkHyperlink. */
+ g_assert(ATK_IS_ACTION(hLink1));
+ g_assert_cmpint(atk_action_get_n_actions(ATK_ACTION(hLink1)), ==, 1);
+ g_assert_cmpstr(atk_action_get_keybinding(ATK_ACTION(hLink1), 0), ==, "");
+ g_assert_cmpstr(atk_action_get_name(ATK_ACTION(hLink1), 0), ==, "jump");
+ g_assert(atk_action_do_action(ATK_ACTION(hLink1), 0));
+
+ g_object_unref(paragraph1);
+ g_object_unref(paragraph2);
+ g_object_unref(webView);
+}
+
+static void testWebkitAtkListsOfItems()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, listsOfItems, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ /* Unordered list. */
+
+ AtkObject* uList = atk_object_ref_accessible_child(object, 0);
+ g_assert(ATK_OBJECT(uList));
+ g_assert(atk_object_get_role(uList) == ATK_ROLE_LIST);
+ g_assert_cmpint(atk_object_get_n_accessible_children(uList), ==, 3);
+
+ AtkObject* item1 = atk_object_ref_accessible_child(uList, 0);
+ g_assert(ATK_IS_TEXT(item1));
+ AtkObject* item2 = atk_object_ref_accessible_child(uList, 1);
+ g_assert(ATK_IS_TEXT(item2));
+ AtkObject* item3 = atk_object_ref_accessible_child(uList, 2);
+ g_assert(ATK_IS_TEXT(item3));
+
+ g_assert_cmpint(atk_object_get_n_accessible_children(item1), ==, 0);
+ g_assert_cmpint(atk_object_get_n_accessible_children(item2), ==, 1);
+ g_assert_cmpint(atk_object_get_n_accessible_children(item3), ==, 1);
+
+ g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item1), 0, -1), ==, "\342\200\242 text only");
+ g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item2), 0, -1), ==, "\342\200\242 link only");
+ g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item3), 0, -1), ==, "\342\200\242 text and a link");
+
+ g_object_unref(item1);
+ g_object_unref(item2);
+ g_object_unref(item3);
+
+ /* Ordered list. */
+
+ AtkObject* oList = atk_object_ref_accessible_child(object, 1);
+ g_assert(ATK_OBJECT(oList));
+ g_assert(atk_object_get_role(oList) == ATK_ROLE_LIST);
+ g_assert_cmpint(atk_object_get_n_accessible_children(oList), ==, 3);
+
+ item1 = atk_object_ref_accessible_child(oList, 0);
+ g_assert(ATK_IS_TEXT(item1));
+ item2 = atk_object_ref_accessible_child(oList, 1);
+ g_assert(ATK_IS_TEXT(item2));
+ item3 = atk_object_ref_accessible_child(oList, 2);
+ g_assert(ATK_IS_TEXT(item3));
+
+ g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item1), 0, -1), ==, "1. text only");
+ g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item2), 0, -1), ==, "2. link only");
+ g_assert_cmpstr(atk_text_get_text(ATK_TEXT(item3), 0, -1), ==, "3. text and a link");
+
+ g_assert_cmpint(atk_object_get_n_accessible_children(item1), ==, 0);
+ g_assert_cmpint(atk_object_get_n_accessible_children(item2), ==, 1);
+ g_assert_cmpint(atk_object_get_n_accessible_children(item3), ==, 1);
+
+ g_object_unref(item1);
+ g_object_unref(item2);
+ g_object_unref(item3);
+
+ g_object_unref(uList);
+ g_object_unref(oList);
+ g_object_unref(webView);
+}
+
+static gboolean textInserted = FALSE;
+static gboolean textDeleted = FALSE;
+
+static void textChangedCb(AtkText* text, gint pos, gint len, const gchar* detail)
+{
+ g_assert(text && ATK_IS_OBJECT(text));
+
+ if (!g_strcmp0(detail, "insert"))
+ textInserted = TRUE;
+ else if (!g_strcmp0(detail, "delete"))
+ textDeleted = TRUE;
+}
+
+static gboolean checkTextChanges(gpointer unused)
+{
+ g_assert_cmpint(textInserted, ==, TRUE);
+ g_assert_cmpint(textDeleted, ==, TRUE);
+ return FALSE;
+}
+
+static void testWebkitAtkTextChangedNotifications()
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ GtkAllocation allocation = { 0, 0, 800, 600 };
+ gtk_widget_size_allocate(GTK_WIDGET(webView), &allocation);
+ webkit_web_view_load_string(webView, formWithTextInputs, 0, 0, 0);
+
+ /* Wait for the accessible objects to be created. */
+ waitForAccessibleObjects();
+
+ AtkObject* object = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(object);
+
+ AtkObject* form = atk_object_ref_accessible_child(object, 0);
+ g_assert(ATK_IS_OBJECT(form));
+
+ AtkObject* textEntry = atk_object_ref_accessible_child(form, 0);
+ g_assert(ATK_IS_EDITABLE_TEXT(textEntry));
+ g_assert(atk_object_get_role(ATK_OBJECT(textEntry)) == ATK_ROLE_ENTRY);
+
+ g_signal_connect(textEntry, "text-changed::insert",
+ G_CALLBACK(textChangedCb),
+ (gpointer)"insert");
+ g_signal_connect(textEntry, "text-changed::delete",
+ G_CALLBACK(textChangedCb),
+ (gpointer)"delete");
+
+ gint pos = 0;
+ atk_editable_text_insert_text(ATK_EDITABLE_TEXT(textEntry), "foo bar baz", 11, &pos);
+ atk_editable_text_delete_text(ATK_EDITABLE_TEXT(textEntry), 4, 7);
+ textInserted = FALSE;
+ textDeleted = FALSE;
+
+ g_idle_add((GSourceFunc)checkTextChanges, 0);
+
+ g_object_unref(form);
+ g_object_unref(textEntry);
+ g_object_unref(webView);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(0);
+ gtk_test_init(&argc, &argv, 0);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/atk/comboBox", testWebkitAtkComboBox);
+ g_test_add_func("/webkit/atk/getTextAtOffset", testWebkitAtkGetTextAtOffset);
+ g_test_add_func("/webkit/atk/getTextAtOffsetForms", testWebkitAtkGetTextAtOffsetForms);
+ g_test_add_func("/webkit/atk/getTextAtOffsetNewlines", testWebkitAtkGetTextAtOffsetNewlines);
+ g_test_add_func("/webkit/atk/getTextAtOffsetTextarea", testWebkitAtkGetTextAtOffsetTextarea);
+ g_test_add_func("/webkit/atk/getTextAtOffsetTextInput", testWebkitAtkGetTextAtOffsetTextInput);
+ g_test_add_func("/webkit/atk/getTextInParagraphAndBodySimple", testWebkitAtkGetTextInParagraphAndBodySimple);
+ g_test_add_func("/webkit/atk/getTextInParagraphAndBodyModerate", testWebkitAtkGetTextInParagraphAndBodyModerate);
+ g_test_add_func("/webkit/atk/getTextInTable", testWebkitAtkGetTextInTable);
+ g_test_add_func("/webkit/atk/getHeadersInTable", testWebkitAtkGetHeadersInTable);
+ g_test_add_func("/webkit/atk/textAttributes", testWebkitAtkTextAttributes);
+ g_test_add_func("/webkit/atk/textSelections", testWebkitAtkTextSelections);
+ g_test_add_func("/webkit/atk/getExtents", testWebkitAtkGetExtents);
+ g_test_add_func("/webkit/atk/hypertextAndHyperlinks", testWebkitAtkHypertextAndHyperlinks);
+ g_test_add_func("/webkit/atk/layoutAndDataTables", testWebkitAtkLayoutAndDataTables);
+ g_test_add_func("/webkit/atk/linksWithInlineImages", testWebkitAtkLinksWithInlineImages);
+ g_test_add_func("/webkit/atk/listsOfItems", testWebkitAtkListsOfItems);
+ g_test_add_func("/webkit/atk/textChangedNotifications", testWebkitAtkTextChangedNotifications);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testatkroles.c b/Source/WebKit/gtk/tests/testatkroles.c
new file mode 100644
index 0000000..5ad6b5f
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testatkroles.c
@@ -0,0 +1,428 @@
+/*
+ * Copyright © 2010 Joanmarie Diggs
+ * Copyright © 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+/* Non form roles */
+#define HTML_DOCUMENT_FRAME "<html><body>This is a test.</body></html>"
+#define HTML_HEADING "<html><body><h1>1</h1><h2>2</h2><h3>3</h3><h4>4</h4><h5>5</h5><h6>6</h6></body></html>"
+#define HTML_IMAGE "<html><body><img src='foobar.png' alt='This is a test.'/></body></html>"
+#define HTML_LINK_TEXT "<html><body><a href='foobar.html'>This is a test.</a></body></html>"
+#define HTML_LIST "<html><body><ul><li>1</li><li>2</li></ul><ol><li>1</li><li>2</li></ol></body></html>"
+#define HTML_PARAGRAPH "<html><body><p>This is a test.</p></body></html>"
+#define HTML_SECTION "<html><body><div>This is a test.</div></body></html>"
+#define HTML_TABLE "<html><body><table border='1'><tr><td>This is</td><td>a test.</td></tr></table></body></html>"
+#define HTML_SEPARATOR "<html><body><hr/></body></html>"
+#define HTML_COMBOBOX "<html><body><select size='1'><option>one</option><option>two</option><option>three</option></select></body></html>"
+/* Form roles */
+#define HTML_FORM "<html><body><form>This is a test.</form></body></html>"
+#define HTML_CHECK_BOX "<html><body><input type='checkbox' />This is a test.</body></html>"
+#define HTML_LABELED_ENTRY "<html><body><label for='foo'>Name:</label><input type='text' id='foo' /></body></html>"
+#define HTML_LISTBOX "<html><body><select size='3'><option>one</option><option>two</option><option>three</option></select></body></html>"
+#define HTML_PASSWORD_TEXT "<html><body><input type='password' /></body></html>"
+#define HTML_PUSH_BUTTON "<html><body><input type='submit' value='ok' />This is a test.</body></html>"
+#define HTML_RADIO_BUTTON "<html><body><input type='radio' />This is a test.</body></html>"
+
+typedef struct {
+ AtkObject* documentFrame;
+ AtkObject* obj;
+ AtkRole role;
+ GtkWidget* webView;
+ GtkAllocation alloc;
+ GMainLoop* loop;
+} AtkRolesFixture;
+
+static gboolean finish_loading(AtkRolesFixture* fixture)
+{
+ if (g_main_loop_is_running(fixture->loop))
+ g_main_loop_quit(fixture->loop);
+
+ fixture->documentFrame = gtk_widget_get_accessible(fixture->webView);
+ g_assert(fixture->documentFrame);
+
+ return FALSE;
+}
+
+static void atk_roles_fixture_setup(AtkRolesFixture* fixture, gconstpointer data)
+{
+ fixture->loop = g_main_loop_new(NULL, TRUE);
+ fixture->alloc = (GtkAllocation) { 0, 0, 800, 600 };
+ fixture->webView = webkit_web_view_new();
+ g_object_ref_sink(fixture->webView);
+
+ gtk_widget_size_allocate(fixture->webView, &fixture->alloc);
+
+ if (data != NULL)
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW (fixture->webView), (const char*) data, NULL, NULL, NULL);
+
+ g_idle_add((GSourceFunc) finish_loading, fixture);
+ g_main_loop_run(fixture->loop);
+}
+
+static void atk_roles_fixture_teardown(AtkRolesFixture* fixture, gconstpointer data)
+{
+ g_object_unref(fixture->webView);
+ g_main_loop_unref(fixture->loop);
+}
+
+static void get_child_and_test_role(AtkObject* obj, gint pos, AtkRole role)
+{
+ AtkObject* child;
+ AtkRole child_role;
+
+ child = atk_object_ref_accessible_child(obj, pos);
+ g_assert(child);
+ child_role = atk_object_get_role(child);
+ g_assert(child_role == role);
+
+ g_object_unref(child);
+}
+
+static void test_webkit_atk_get_role_document_frame(AtkRolesFixture* fixture, gconstpointer data)
+{
+ fixture->role = atk_object_get_role(fixture->documentFrame);
+ g_assert(fixture->role == ATK_ROLE_DOCUMENT_FRAME);
+}
+
+static void test_webkit_atk_get_role_heading(AtkRolesFixture* fixture, gconstpointer data)
+{
+ get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_HEADING);
+ get_child_and_test_role(fixture->documentFrame, 1, ATK_ROLE_HEADING);
+ get_child_and_test_role(fixture->documentFrame, 2, ATK_ROLE_HEADING);
+ get_child_and_test_role(fixture->documentFrame, 3, ATK_ROLE_HEADING);
+ get_child_and_test_role(fixture->documentFrame, 4, ATK_ROLE_HEADING);
+ get_child_and_test_role(fixture->documentFrame, 5, ATK_ROLE_HEADING);
+}
+
+static void test_webkit_atk_get_role_image(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 0, ATK_ROLE_IMAGE);
+
+ g_object_unref(fixture->obj);
+}
+
+static void test_webkit_atk_get_role_link(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 0, ATK_ROLE_LINK);
+
+ g_object_unref(fixture->obj);
+}
+
+static void test_webkit_atk_get_role_list_and_item(AtkRolesFixture* fixture, gconstpointer data)
+{
+ AtkObject* listObj;
+
+ listObj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(listObj);
+ fixture->role = atk_object_get_role(listObj);
+ g_assert(fixture->role == ATK_ROLE_LIST);
+
+ get_child_and_test_role(listObj, 0, ATK_ROLE_LIST_ITEM);
+ get_child_and_test_role(listObj, 1, ATK_ROLE_LIST_ITEM);
+ g_object_unref(listObj);
+
+ listObj = atk_object_ref_accessible_child(fixture->documentFrame, 1);
+ g_assert(listObj);
+ fixture->role = atk_object_get_role(listObj);
+ g_assert(fixture->role == ATK_ROLE_LIST);
+
+ get_child_and_test_role(listObj, 0, ATK_ROLE_LIST_ITEM);
+ get_child_and_test_role(listObj, 1, ATK_ROLE_LIST_ITEM);
+ g_object_unref(listObj);
+}
+
+static void test_webkit_atk_get_role_paragraph(AtkRolesFixture* fixture, gconstpointer data)
+{
+ get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_PARAGRAPH);
+}
+
+static void test_webkit_atk_get_role_section(AtkRolesFixture* fixture, gconstpointer data)
+{
+ get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_SECTION);
+}
+
+// Does not yet test table cells because of bug 30895.
+static void test_webkit_atk_get_role_table(AtkRolesFixture* fixture, gconstpointer data)
+{
+ get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_TABLE);
+}
+
+static void test_webkit_atk_get_role_separator(AtkRolesFixture *fixture, gconstpointer data)
+{
+ get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_SEPARATOR);
+}
+
+static void test_webkit_atk_get_role_combobox(AtkRolesFixture *fixture, gconstpointer data)
+{
+ AtkObject* comboboxMenu;
+
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ fixture->obj = atk_object_ref_accessible_child(fixture->obj, 0);
+ g_assert(fixture->obj);
+ fixture->role = atk_object_get_role(fixture->obj);
+ g_assert(fixture->role == ATK_ROLE_COMBO_BOX);
+
+ comboboxMenu = atk_object_ref_accessible_child(fixture->obj, 0);
+ g_assert(comboboxMenu);
+ fixture->role = atk_object_get_role(comboboxMenu);
+ g_assert(fixture->role == ATK_ROLE_MENU);
+
+ get_child_and_test_role(comboboxMenu, 0, ATK_ROLE_MENU_ITEM);
+ get_child_and_test_role(comboboxMenu, 1, ATK_ROLE_MENU_ITEM);
+ get_child_and_test_role(comboboxMenu, 2, ATK_ROLE_MENU_ITEM);
+
+ g_object_unref(fixture->obj);
+ g_object_unref(comboboxMenu);
+}
+
+/* Form roles */
+static void test_webkit_atk_get_role_form(AtkRolesFixture *fixture, gconstpointer data)
+{
+ get_child_and_test_role(fixture->documentFrame, 0, ATK_ROLE_FORM);
+}
+
+static void test_webkit_atk_get_role_check_box(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 0, ATK_ROLE_CHECK_BOX);
+
+ g_object_unref(fixture->obj);
+}
+
+static void test_webkit_atk_get_role_entry(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 1, ATK_ROLE_ENTRY);
+
+ g_object_unref(fixture->obj);
+}
+
+static void test_webkit_atk_get_role_label(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 0, ATK_ROLE_LABEL);
+
+ g_object_unref(fixture->obj);
+}
+
+static void test_webkit_atk_get_role_listbox(AtkRolesFixture* fixture, gconstpointer data)
+{
+ AtkObject* listboxObj;
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ listboxObj = atk_object_ref_accessible_child(fixture->obj, 0);
+ g_assert(listboxObj);
+ fixture->role = atk_object_get_role(listboxObj);
+ g_assert(fixture->role == ATK_ROLE_LIST);
+
+ get_child_and_test_role(listboxObj, 0, ATK_ROLE_LIST_ITEM);
+ get_child_and_test_role(listboxObj, 1, ATK_ROLE_LIST_ITEM);
+ get_child_and_test_role(listboxObj, 2, ATK_ROLE_LIST_ITEM);
+
+ g_object_unref(fixture->obj);
+ g_object_unref(listboxObj);
+}
+
+static void test_webkit_atk_get_role_password_text(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 0, ATK_ROLE_PASSWORD_TEXT);
+
+ g_object_unref(fixture->obj);
+}
+
+static void test_webkit_atk_get_role_push_button(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 0, ATK_ROLE_PUSH_BUTTON);
+
+ g_object_unref(fixture->obj);
+}
+
+static void test_webkit_atk_get_role_radio_button(AtkRolesFixture* fixture, gconstpointer data)
+{
+ // This is an extraneous object of ATK_ROLE_PANEL which we should get rid of.
+ fixture->obj = atk_object_ref_accessible_child(fixture->documentFrame, 0);
+ g_assert(fixture->obj);
+
+ get_child_and_test_role(fixture->obj, 0, ATK_ROLE_RADIO_BUTTON);
+
+ g_object_unref(fixture->obj);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_document_frame",
+ AtkRolesFixture, HTML_DOCUMENT_FRAME,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_document_frame,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_heading",
+ AtkRolesFixture, HTML_HEADING,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_heading,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_image",
+ AtkRolesFixture, HTML_IMAGE,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_image,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_link",
+ AtkRolesFixture, HTML_LINK_TEXT,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_link,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_list_and_item",
+ AtkRolesFixture, HTML_LIST,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_list_and_item,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_paragraph",
+ AtkRolesFixture, HTML_PARAGRAPH,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_paragraph,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_section",
+ AtkRolesFixture, HTML_SECTION,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_section,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_table",
+ AtkRolesFixture, HTML_TABLE,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_table,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_separator",
+ AtkRolesFixture, HTML_SEPARATOR,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_separator,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_combobox",
+ AtkRolesFixture, HTML_COMBOBOX,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_combobox,
+ atk_roles_fixture_teardown);
+
+ /* Form roles */
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_form",
+ AtkRolesFixture, HTML_FORM,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_form,
+ atk_roles_fixture_teardown);
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_check_box",
+ AtkRolesFixture, HTML_CHECK_BOX,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_check_box,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_entry",
+ AtkRolesFixture, HTML_LABELED_ENTRY,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_entry,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_label",
+ AtkRolesFixture, HTML_LABELED_ENTRY,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_label,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_listbox",
+ AtkRolesFixture, HTML_LISTBOX,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_listbox,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_password_text",
+ AtkRolesFixture, HTML_PASSWORD_TEXT,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_password_text,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_push_button",
+ AtkRolesFixture, HTML_PUSH_BUTTON,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_push_button,
+ atk_roles_fixture_teardown);
+
+ g_test_add("/webkit/atk/test_webkit_atk_get_role_radio_button",
+ AtkRolesFixture, HTML_RADIO_BUTTON,
+ atk_roles_fixture_setup,
+ test_webkit_atk_get_role_radio_button,
+ atk_roles_fixture_teardown);
+
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testcopyandpaste.c b/Source/WebKit/gtk/tests/testcopyandpaste.c
new file mode 100644
index 0000000..1b5fb7b
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testcopyandpaste.c
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2,1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <glib/gstdio.h>
+#include <webkit/webkit.h>
+#include <JavaScriptCore/JSStringRef.h>
+#include <JavaScriptCore/JSContextRef.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+typedef struct {
+ char* page;
+ char* expectedContent;
+} TestInfo;
+
+typedef struct {
+ GtkWidget* window;
+ WebKitWebView* webView;
+ GMainLoop* loop;
+ TestInfo* info;
+} CopyAndPasteFixture;
+
+TestInfo*
+test_info_new(const char* page, const char* expectedContent)
+{
+ TestInfo* info;
+ info = g_slice_new0(TestInfo);
+ info->page = g_strdup(page);
+ if (expectedContent)
+ info->expectedContent = g_strdup(expectedContent);
+ return info;
+}
+
+void
+test_info_destroy(TestInfo* info)
+{
+ g_free(info->page);
+ g_free(info->expectedContent);
+ g_slice_free(TestInfo, info);
+}
+
+static void copy_and_paste_fixture_setup(CopyAndPasteFixture* fixture, gconstpointer data)
+{
+ fixture->loop = g_main_loop_new(NULL, TRUE);
+
+ fixture->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+
+ gtk_container_add(GTK_CONTAINER(fixture->window), GTK_WIDGET(fixture->webView));
+}
+
+static void copy_and_paste_fixture_teardown(CopyAndPasteFixture* fixture, gconstpointer data)
+{
+ gtk_widget_destroy(fixture->window);
+ g_main_loop_unref(fixture->loop);
+ test_info_destroy(fixture->info);
+}
+
+static void load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data)
+{
+ CopyAndPasteFixture* fixture = (CopyAndPasteFixture*)data;
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ GtkClipboard* clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD);
+ gtk_clipboard_clear(clipboard);
+
+ webkit_web_view_copy_clipboard(webView);
+
+ gchar* text = gtk_clipboard_wait_for_text(clipboard);
+ g_assert(text || !fixture->info->expectedContent);
+ g_assert(!text || !strcmp(text, fixture->info->expectedContent));
+ g_free(text);
+
+ // Verify that the markup starts with the proper content-type meta tag prefix.
+ GtkSelectionData* selectionData = gtk_clipboard_wait_for_contents(clipboard, gdk_atom_intern("text/html", FALSE));
+ if (selectionData) {
+ static const char* markupPrefix = "<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">";
+ char* markup = g_strndup((const char*) gtk_selection_data_get_data(selectionData),
+ gtk_selection_data_get_length(selectionData));
+ g_assert(strlen(markupPrefix) <= strlen(markup));
+ g_assert(!strncmp(markupPrefix, markup, strlen(markupPrefix)));
+ g_free(markup);
+ }
+
+ g_assert(!gtk_clipboard_wait_is_uris_available(clipboard));
+ g_assert(!gtk_clipboard_wait_is_image_available(clipboard));
+
+ g_main_loop_quit(fixture->loop);
+}
+
+gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, gpointer data)
+{
+ gtk_widget_grab_focus(widget);
+ CopyAndPasteFixture* fixture = (CopyAndPasteFixture*)data;
+ webkit_web_view_load_string(fixture->webView, fixture->info->page,
+ "text/html", "utf-8", "file://");
+ return FALSE;
+}
+
+static void test_copy_and_paste(CopyAndPasteFixture* fixture, gconstpointer data)
+{
+ fixture->info = (TestInfo*)data;
+ g_signal_connect(fixture->window, "map-event",
+ G_CALLBACK(map_event_cb), fixture);
+
+ gtk_widget_show(fixture->window);
+ gtk_widget_show(GTK_WIDGET(fixture->webView));
+ gtk_window_present(GTK_WINDOW(fixture->window));
+
+ g_signal_connect(fixture->webView, "notify::load-status",
+ G_CALLBACK(load_status_cb), fixture);
+
+ g_main_loop_run(fixture->loop);
+}
+
+static CopyAndPasteFixture* currentFixture;
+static JSValueRef runPasteTestCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ // Simulate a paste keyboard sequence.
+ GdkEvent* event = gdk_event_new(GDK_KEY_PRESS);
+ event->key.keyval = gdk_unicode_to_keyval('v');
+ event->key.state = GDK_CONTROL_MASK;
+ event->key.window = gtk_widget_get_window(GTK_WIDGET(currentFixture->webView));
+ g_object_ref(event->key.window);
+#ifndef GTK_API_VERSION_2
+ GdkDeviceManager* manager = gdk_display_get_device_manager(gdk_window_get_display(event->key.window));
+ gdk_event_set_device(event, gdk_device_manager_get_client_pointer(manager));
+#endif
+
+ GdkKeymapKey* keys;
+ gint n_keys;
+ if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), event->key.keyval, &keys, &n_keys)) {
+ event->key.hardware_keycode = keys[0].keycode;
+ g_free(keys);
+ }
+
+ gtk_main_do_event(event);
+ event->key.type = GDK_KEY_RELEASE;
+ gtk_main_do_event(event);
+ gdk_event_free(event);
+
+ JSStringRef scriptString = JSStringCreateWithUTF8CString("document.body.innerHTML;");
+ JSValueRef value = JSEvaluateScript(context, scriptString, 0, 0, 0, 0);
+ JSStringRelease(scriptString);
+
+ g_assert(JSValueIsString(context, value));
+ JSStringRef actual = JSValueToStringCopy(context, value, exception);
+ g_assert(!exception || !*exception);
+ g_assert(currentFixture->info->expectedContent);
+ JSStringRef expected = JSStringCreateWithUTF8CString(currentFixture->info->expectedContent);
+ g_assert(JSStringIsEqual(expected, actual));
+
+ JSStringRelease(expected);
+ JSStringRelease(actual);
+ g_main_loop_quit(currentFixture->loop);
+ return JSValueMakeUndefined(context);
+}
+
+static void window_object_cleared_callback(WebKitWebView* web_view, WebKitWebFrame* web_frame, JSGlobalContextRef context, JSObjectRef window_object, gpointer data)
+{
+ JSStringRef name = JSStringCreateWithUTF8CString("runTest");
+ JSObjectRef testComplete = JSObjectMakeFunctionWithCallback(context, name, runPasteTestCallback);
+ JSObjectSetProperty(context, window_object, name, testComplete, kJSPropertyAttributeNone, 0);
+ JSStringRelease(name);
+}
+
+static void pasting_test_get_data_callback(GtkClipboard* clipboard, GtkSelectionData* selection_data, guint info, gpointer data)
+{
+ gtk_selection_data_set(selection_data, gdk_atom_intern("text/html", FALSE), 8, (const guchar*) data, strlen((char*)data) + 1);
+}
+
+static void pasting_test_clear_data_callback(GtkClipboard* clipboard, gpointer data)
+{
+ g_free(data);
+}
+
+static void test_pasting_markup(CopyAndPasteFixture* fixture, gconstpointer data)
+{
+ fixture->info = (TestInfo*)data;
+ currentFixture = fixture;
+
+ GtkTargetList* targetList = gtk_target_list_new(0, 0);
+ gtk_target_list_add(targetList, gdk_atom_intern("text/html", FALSE), 0, 0);
+
+ int numberOfTargets = 1;
+ GtkTargetEntry* targetTable = gtk_target_table_new_from_list(targetList, &numberOfTargets);
+ gtk_clipboard_set_with_data(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD),
+ targetTable, numberOfTargets,
+ pasting_test_get_data_callback,
+ pasting_test_clear_data_callback,
+ g_strdup(fixture->info->expectedContent));
+ gtk_target_list_unref(targetList);
+ gtk_target_table_free(targetTable, numberOfTargets);
+
+ g_signal_connect(fixture->window, "map-event",
+ G_CALLBACK(map_event_cb), fixture);
+ g_signal_connect(fixture->webView, "window-object-cleared",
+ G_CALLBACK(window_object_cleared_callback), fixture);
+
+ gtk_widget_show(fixture->window);
+ gtk_widget_show(GTK_WIDGET(fixture->webView));
+ gtk_window_present(GTK_WINDOW(fixture->window));
+
+ g_main_loop_run(fixture->loop);
+}
+
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ const char* selected_span_html = "<html><body>"
+ "<span id=\"mainspan\">All work and no play <span>make Jack a dull</span> boy.</span>"
+ "<script>document.getSelection().collapse();\n"
+ "document.getSelection().selectAllChildren(document.getElementById('mainspan'));\n"
+ "</script></body></html>";
+ const char* no_selection_html = "<html><body>"
+ "<span id=\"mainspan\">All work and no play <span>make Jack a dull</span> boy</span>"
+ "<script>document.getSelection().collapse();\n"
+ "</script></body></html>";
+
+ g_test_add("/webkit/copyandpaste/selection", CopyAndPasteFixture,
+ test_info_new(selected_span_html, "All work and no play make Jack a dull boy."),
+ copy_and_paste_fixture_setup,
+ test_copy_and_paste,
+ copy_and_paste_fixture_teardown);
+ g_test_add("/webkit/copyandpaste/no-selection", CopyAndPasteFixture,
+ test_info_new(no_selection_html, 0),
+ copy_and_paste_fixture_setup,
+ test_copy_and_paste,
+ copy_and_paste_fixture_teardown);
+
+ const char* paste_test_html = "<html>"
+ "<body onLoad=\"document.body.focus(); runTest();\" contentEditable=\"true\">"
+ "</body></html>";
+ g_test_add("/webkit/copyandpaste/paste-markup", CopyAndPasteFixture,
+ test_info_new(paste_test_html, "bobby"),
+ copy_and_paste_fixture_setup,
+ test_pasting_markup,
+ copy_and_paste_fixture_teardown);
+
+ return g_test_run();
+}
+
+#else
+
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least GTK+ 2.14.0 to run the unit tests.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testdomdocument.c b/Source/WebKit/gtk/tests/testdomdocument.c
new file mode 100644
index 0000000..aa6cbb3
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testdomdocument.c
@@ -0,0 +1,375 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "test_utils.h"
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+#define HTML_DOCUMENT_TITLE "<html><head><title>This is the title</title></head><body></body></html>"
+#define HTML_DOCUMENT_ELEMENTS "<html><body><ul><li>1</li><li>2</li><li>3</li></ul></body></html>"
+#define HTML_DOCUMENT_ELEMENTS_CLASS "<html><body><div class=\"test\"></div><div class=\"strange\"></div><div class=\"test\"></div></body></html>"
+#define HTML_DOCUMENT_ELEMENTS_ID "<html><body><div id=\"testok\"></div><div id=\"testbad\">first</div><div id=\"testbad\">second</div></body></html>"
+#define HTML_DOCUMENT_LINKS "<html><head><title>Title</title></head><body><a href=\"about:blank\">blank</a><a href=\"http://www.google.com\">google</a><a href=\"http://www.webkit.org\">webkit</a></body></html>"
+#define HTML_DOCUMENT_IFRAME "<html><head><title>IFrame</title></head><body><iframe id='iframe'></iframe><div id='test'></div></body></html>"
+
+typedef struct {
+ GtkWidget* webView;
+ GMainLoop* loop;
+} DomDocumentFixture;
+
+static gboolean finish_loading(DomDocumentFixture* fixture)
+{
+ if (g_main_loop_is_running(fixture->loop))
+ g_main_loop_quit(fixture->loop);
+
+ return FALSE;
+}
+
+static void dom_document_fixture_setup(DomDocumentFixture* fixture, gconstpointer data)
+{
+ fixture->loop = g_main_loop_new(NULL, TRUE);
+ fixture->webView = webkit_web_view_new();
+ g_object_ref_sink(fixture->webView);
+
+ if (data != NULL)
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW (fixture->webView), (const char*) data, NULL, NULL, NULL);
+
+ g_idle_add((GSourceFunc)finish_loading, fixture);
+ g_main_loop_run(fixture->loop);
+}
+
+static void dom_document_fixture_teardown(DomDocumentFixture* fixture, gconstpointer data)
+{
+ if (fixture->webView)
+ g_object_unref(fixture->webView);
+ g_main_loop_unref(fixture->loop);
+}
+
+static void test_dom_document_title(DomDocumentFixture* fixture, gconstpointer data)
+{
+ g_assert(fixture);
+ WebKitWebView* view = (WebKitWebView*)fixture->webView;
+ g_assert(view);
+ WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ gchar* title = webkit_dom_document_get_title(document);
+ g_assert(title);
+ g_assert_cmpstr(title, ==, "This is the title");
+ g_free(title);
+ webkit_dom_document_set_title(document, "This is the second title");
+ title = webkit_dom_document_get_title(document);
+ g_assert(title);
+ g_assert_cmpstr(title, ==, "This is the second title");
+ g_free(title);
+}
+
+static void test_dom_document_get_elements_by_tag_name(DomDocumentFixture* fixture, gconstpointer data)
+{
+ g_assert(fixture);
+ WebKitWebView* view = (WebKitWebView*)fixture->webView;
+ g_assert(view);
+ WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ WebKitDOMNodeList* list = webkit_dom_document_get_elements_by_tag_name(document, "li");
+ g_assert(list);
+ gulong length = webkit_dom_node_list_get_length(list);
+ g_assert_cmpint(length, ==, 3);
+
+ guint i;
+
+ for (i = 0; i < length; i++) {
+ WebKitDOMNode* item = webkit_dom_node_list_item(list, i);
+ g_assert(item);
+ WebKitDOMElement* element = (WebKitDOMElement*)item;
+ g_assert(element);
+ g_assert_cmpstr(webkit_dom_element_get_tag_name(element), ==, "LI");
+ WebKitDOMHTMLElement* htmlElement = (WebKitDOMHTMLElement*)element;
+ char* n = g_strdup_printf("%d", i+1);
+ g_assert_cmpstr(webkit_dom_html_element_get_inner_text(htmlElement), ==, n);
+ g_free(n);
+ }
+
+ g_object_unref(list);
+}
+
+static void test_dom_document_get_elements_by_class_name(DomDocumentFixture* fixture, gconstpointer data)
+{
+ g_assert(fixture);
+ WebKitWebView* view = (WebKitWebView*)fixture->webView;
+ g_assert(view);
+ WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ WebKitDOMNodeList* list = webkit_dom_document_get_elements_by_class_name(document, "test");
+ g_assert(list);
+ gulong length = webkit_dom_node_list_get_length(list);
+ g_assert_cmpint(length, ==, 2);
+
+ guint i;
+
+ for (i = 0; i < length; i++) {
+ WebKitDOMNode* item = webkit_dom_node_list_item(list, i);
+ g_assert(item);
+ WebKitDOMElement* element = (WebKitDOMElement*)item;
+ g_assert(element);
+ g_assert_cmpstr(webkit_dom_element_get_tag_name(element), ==, "DIV");
+ }
+
+ g_object_unref(list);
+}
+
+static void test_dom_document_get_element_by_id(DomDocumentFixture* fixture, gconstpointer data)
+{
+ g_assert(fixture);
+ WebKitWebView* view = (WebKitWebView*)fixture->webView;
+ g_assert(view);
+ WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ WebKitDOMElement* element = webkit_dom_document_get_element_by_id(document, "testok");
+ g_assert(element);
+ element = webkit_dom_document_get_element_by_id(document, "this-id-does-not-exist");
+ g_assert(element == 0);
+ /* The DOM spec says the return value is undefined when there's
+ * more than one element with the same id; in our case the first
+ * one will be returned */
+ element = webkit_dom_document_get_element_by_id(document, "testbad");
+ g_assert(element);
+ WebKitDOMHTMLElement* htmlElement = (WebKitDOMHTMLElement*)element;
+ g_assert_cmpstr(webkit_dom_html_element_get_inner_text(htmlElement), ==, "first");
+}
+
+static void test_dom_document_get_links(DomDocumentFixture* fixture, gconstpointer data)
+{
+ g_assert(fixture);
+ WebKitWebView* view = (WebKitWebView*)fixture->webView;
+ g_assert(view);
+ WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ WebKitDOMHTMLCollection *collection = webkit_dom_document_get_links(document);
+ g_assert(collection);
+ gulong length = webkit_dom_html_collection_get_length(collection);
+ g_assert_cmpint(length, ==, 3);
+
+ guint i;
+
+ for (i = 0; i < length; i++) {
+ static const char* names[] = { "blank", "google", "webkit" };
+ static const char* uris[] = { "about:blank", "http://www.google.com/", "http://www.webkit.org/" };
+ WebKitDOMNode *node = webkit_dom_html_collection_item(collection, i);
+ g_assert(node);
+ WebKitDOMElement* element = (WebKitDOMElement*)node;
+ g_assert_cmpstr(webkit_dom_element_get_tag_name(element), ==, "A");
+ WebKitDOMHTMLElement *htmlElement = (WebKitDOMHTMLElement*)element;
+ g_assert_cmpstr(webkit_dom_html_element_get_inner_text(htmlElement), ==, names[i]);
+ WebKitDOMHTMLAnchorElement *anchor = (WebKitDOMHTMLAnchorElement*)element;
+ g_assert_cmpstr(webkit_dom_html_anchor_element_get_href(anchor), ==, uris[i]);
+ }
+ g_object_unref(collection);
+}
+
+static void weak_notify(gpointer data, GObject* zombie)
+{
+ guint* count = (guint*)data;
+ (*count)++;
+}
+
+static void test_dom_document_garbage_collection(DomDocumentFixture* fixture, gconstpointer data)
+{
+ guint count = 0;
+ g_assert(fixture);
+ WebKitWebView* view = (WebKitWebView*)fixture->webView;
+ g_assert(view);
+ WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ g_object_weak_ref(G_OBJECT(document), (GWeakNotify)weak_notify, &count);
+ WebKitDOMHTMLHeadElement* head = webkit_dom_document_get_head(document);
+ g_assert(head);
+ g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count);
+ WebKitDOMHTMLElement* body = webkit_dom_document_get_body(document);
+ g_assert(body);
+ g_object_weak_ref(G_OBJECT(body), (GWeakNotify)weak_notify, &count);
+ WebKitDOMHTMLCollection *collection = webkit_dom_document_get_links(document);
+ g_assert(collection);
+ g_object_weak_ref(G_OBJECT(collection), (GWeakNotify)weak_notify, &count);
+
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW(view), HTML_DOCUMENT_LINKS, NULL, NULL, NULL);
+
+ while (g_main_context_pending(NULL))
+ g_main_context_iteration(NULL, FALSE);
+
+ g_assert_cmpuint(count, ==, 3);
+
+ g_object_unref(collection);
+ g_assert_cmpuint(count, ==, 4);
+
+ count = 0;
+
+ document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ g_object_weak_ref(G_OBJECT(document), (GWeakNotify)weak_notify, &count);
+ head = webkit_dom_document_get_head(document);
+ g_assert(head);
+ g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count);
+ body = webkit_dom_document_get_body(document);
+ g_assert(body);
+ g_object_weak_ref(G_OBJECT(body), (GWeakNotify)weak_notify, &count);
+ collection = webkit_dom_document_get_links(document);
+ g_assert(collection);
+ g_object_weak_ref(G_OBJECT(collection), (GWeakNotify)weak_notify, &count);
+ /* Ask twice for the same object */
+ WebKitDOMHTMLCollection* collection2 = webkit_dom_document_get_links(document);
+ g_assert(collection2);
+ g_object_weak_ref(G_OBJECT(collection2), (GWeakNotify)weak_notify, &count);
+
+ g_object_unref(document);
+ g_object_unref(head);
+ g_object_unref(body);
+ g_object_unref(collection);
+ g_object_unref(collection2);
+
+ g_assert_cmpuint(count, ==, 5);
+
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW(view), HTML_DOCUMENT_IFRAME, NULL, NULL, NULL);
+
+ while (g_main_context_pending(NULL))
+ g_main_context_iteration(NULL, FALSE);
+
+ count = 0;
+
+ document = webkit_web_view_get_dom_document(view);
+ WebKitDOMElement* div = webkit_dom_document_get_element_by_id(document, "test");
+ g_assert(div);
+ g_object_weak_ref(G_OBJECT(div), (GWeakNotify)weak_notify, &count);
+ WebKitDOMElement* iframe = webkit_dom_document_get_element_by_id(document, "iframe");
+ g_assert(iframe);
+
+ webkit_dom_element_set_attribute(iframe, "src", "data:<html><head></head></html>", NULL);
+
+ while (g_main_context_pending(NULL))
+ g_main_context_iteration(NULL, FALSE);
+
+ WebKitDOMDocument* iframeDocument = webkit_dom_html_iframe_element_get_content_document(WEBKIT_DOM_HTML_IFRAME_ELEMENT(iframe));
+ g_assert(iframeDocument);
+ head = webkit_dom_document_get_head(iframeDocument);
+ g_assert(head);
+ g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count);
+
+ webkit_dom_element_set_attribute(iframe, "src", "about:blank", NULL);
+
+ while (g_main_context_pending(NULL))
+ g_main_context_iteration(NULL, FALSE);
+
+ g_assert_cmpuint(count, ==, 1);
+
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW(view), HTML_DOCUMENT_LINKS, NULL, NULL, NULL);
+
+ while (g_main_context_pending(NULL))
+ g_main_context_iteration(NULL, FALSE);
+
+ g_assert_cmpuint(count, ==, 2);
+
+ count = 0;
+
+ document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ g_object_weak_ref(G_OBJECT(document), (GWeakNotify)weak_notify, &count);
+ /* Ask twice for the Document */
+ WebKitDOMDocument* document2 = webkit_web_view_get_dom_document(view);
+ g_assert(document2);
+ g_object_weak_ref(G_OBJECT(document2), (GWeakNotify)weak_notify, &count);
+ head = webkit_dom_document_get_head(document);
+ g_assert(head);
+ g_object_weak_ref(G_OBJECT(head), (GWeakNotify)weak_notify, &count);
+ body = webkit_dom_document_get_body(document);
+ g_assert(body);
+ g_object_weak_ref(G_OBJECT(body), (GWeakNotify)weak_notify, &count);
+ collection = webkit_dom_document_get_links(document);
+ g_assert(collection);
+ g_object_weak_ref(G_OBJECT(collection), (GWeakNotify)weak_notify, &count);
+
+ gtk_widget_destroy(fixture->webView);
+ fixture->webView = NULL;
+
+ g_assert_cmpuint(count, ==, 4);
+
+ g_object_unref(collection);
+
+ g_assert_cmpuint(count, ==, 5);
+}
+
+int main(int argc, char** argv)
+{
+ if (!g_thread_supported())
+ g_thread_init(NULL);
+
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+
+ g_test_add("/webkit/domdocument/test_title",
+ DomDocumentFixture, HTML_DOCUMENT_TITLE,
+ dom_document_fixture_setup,
+ test_dom_document_title,
+ dom_document_fixture_teardown);
+
+ g_test_add("/webkit/domdocument/test_get_elements_by_tag_name",
+ DomDocumentFixture, HTML_DOCUMENT_ELEMENTS,
+ dom_document_fixture_setup,
+ test_dom_document_get_elements_by_tag_name,
+ dom_document_fixture_teardown);
+
+ g_test_add("/webkit/domdocument/test_get_elements_by_class_name",
+ DomDocumentFixture, HTML_DOCUMENT_ELEMENTS_CLASS,
+ dom_document_fixture_setup,
+ test_dom_document_get_elements_by_class_name,
+ dom_document_fixture_teardown);
+
+ g_test_add("/webkit/domdocument/test_get_element_by_id",
+ DomDocumentFixture, HTML_DOCUMENT_ELEMENTS_ID,
+ dom_document_fixture_setup,
+ test_dom_document_get_element_by_id,
+ dom_document_fixture_teardown);
+
+ g_test_add("/webkit/domdocument/test_get_links",
+ DomDocumentFixture, HTML_DOCUMENT_LINKS,
+ dom_document_fixture_setup,
+ test_dom_document_get_links,
+ dom_document_fixture_teardown);
+
+ g_test_add("/webkit/domdocument/test_garbage_collection",
+ DomDocumentFixture, HTML_DOCUMENT_LINKS,
+ dom_document_fixture_setup,
+ test_dom_document_garbage_collection,
+ dom_document_fixture_teardown);
+
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testdomdomwindow.c b/Source/WebKit/gtk/tests/testdomdomwindow.c
new file mode 100644
index 0000000..b15558e
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testdomdomwindow.c
@@ -0,0 +1,229 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "test_utils.h"
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+#define HTML_DOCUMENT "<html><head><title>This is the title</title></head><body><p id='test'>test</p></body></html>"
+
+typedef struct {
+ GtkWidget* webView;
+ GtkWidget* window;
+ WebKitDOMDOMWindow* domWindow;
+ GMainLoop* loop;
+
+ gboolean loaded;
+ gboolean clicked;
+ gconstpointer data;
+} DomDomviewFixture;
+
+static gboolean finish_loading(DomDomviewFixture* fixture)
+{
+ if (g_main_loop_is_running(fixture->loop))
+ g_main_loop_quit(fixture->loop);
+
+ return FALSE;
+}
+
+static void dom_domview_fixture_setup(DomDomviewFixture* fixture, gconstpointer data)
+{
+ fixture->loop = g_main_loop_new(NULL, TRUE);
+ fixture->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ fixture->webView = webkit_web_view_new();
+ fixture->data = data;
+
+ gtk_container_add(GTK_CONTAINER(fixture->window), GTK_WIDGET(fixture->webView));
+}
+
+static void dom_domview_fixture_teardown(DomDomviewFixture* fixture, gconstpointer data)
+{
+ gtk_widget_destroy(fixture->window);
+ g_main_loop_unref(fixture->loop);
+}
+
+static gboolean loadedCallback(WebKitDOMDOMWindow* view, WebKitDOMEvent* event, DomDomviewFixture* fixture)
+{
+ g_assert(fixture->loaded == FALSE);
+ fixture->loaded = TRUE;
+
+ return FALSE;
+}
+
+static gboolean clickedCallback(WebKitDOMDOMWindow* view, WebKitDOMEvent* event, DomDomviewFixture* fixture)
+{
+ WebKitDOMEventTarget* target;
+ gushort phase;
+
+ g_assert(event);
+ g_assert(WEBKIT_DOM_IS_EVENT(event));
+
+ // We should catch this in the bubbling up phase, since we are connecting to the toplevel object
+ phase = webkit_dom_event_get_event_phase(event);
+ g_assert_cmpint(phase, ==, 3);
+
+ target = webkit_dom_event_get_current_target(event);
+ g_assert(target == WEBKIT_DOM_EVENT_TARGET(view));
+
+ g_assert(fixture->clicked == FALSE);
+ fixture->clicked = TRUE;
+
+ finish_loading(fixture);
+
+ return FALSE;
+}
+
+gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, DomDomviewFixture* fixture)
+{
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW (fixture->webView), (const char*)fixture->data, NULL, NULL, NULL);
+
+ return FALSE;
+}
+
+static void load_event_callback(WebKitWebView* webView, GParamSpec* spec, DomDomviewFixture* fixture)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ if (status == WEBKIT_LOAD_FINISHED) {
+ g_signal_connect(fixture->domWindow, "click-event", G_CALLBACK(clickedCallback), fixture);
+
+ g_assert(fixture->clicked == FALSE);
+ gtk_test_widget_click(GTK_WIDGET(fixture->webView), 1, 0);
+ }
+
+}
+
+static void test_dom_domview_signals(DomDomviewFixture* fixture, gconstpointer data)
+{
+ g_assert(fixture);
+ WebKitWebView* view = (WebKitWebView*)fixture->webView;
+ g_assert(view);
+ WebKitDOMDocument* document = webkit_web_view_get_dom_document(view);
+ g_assert(document);
+ WebKitDOMDOMWindow* domWindow = webkit_dom_document_get_default_view(document);
+ g_assert(domWindow);
+
+ fixture->domWindow = domWindow;
+
+ g_signal_connect(fixture->domWindow, "load-event", G_CALLBACK(loadedCallback), fixture);
+ g_signal_connect(fixture->window, "map-event", G_CALLBACK(map_event_cb), fixture);
+ g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_event_callback), fixture);
+
+ gtk_widget_show_all(fixture->window);
+ gtk_window_present(GTK_WINDOW(fixture->window));
+
+ g_main_loop_run(fixture->loop);
+
+ g_assert(fixture->loaded);
+ g_assert(fixture->clicked);
+}
+
+static gboolean
+clicked_cb(WebKitDOMEventTarget* target, WebKitDOMEvent* event, DomDomviewFixture* fixture)
+{
+ g_assert(fixture->clicked == FALSE);
+ fixture->clicked = TRUE;
+ finish_loading(fixture);
+ return FALSE;
+}
+
+static void load_status_callback(WebKitWebView* webView, GParamSpec* spec, DomDomviewFixture* fixture)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ if (status == WEBKIT_LOAD_FINISHED) {
+ WebKitDOMDocument* document;
+ WebKitDOMDOMWindow* domWindow;
+ WebKitDOMElement* element;
+ WebKitDOMEvent* event;
+ glong clientX, clientY;
+
+ document = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(fixture->webView));
+ g_assert(document);
+ domWindow = webkit_dom_document_get_default_view(document);
+ g_assert(domWindow);
+ fixture->domWindow = domWindow;
+
+ element = webkit_dom_document_get_element_by_id(document, "test");
+ g_assert(element);
+ event = webkit_dom_document_create_event(document, "MouseEvent", NULL);
+ g_assert(event);
+ g_assert(WEBKIT_DOM_IS_EVENT(event));
+ g_assert(WEBKIT_DOM_IS_MOUSE_EVENT(event));
+ clientX = webkit_dom_element_get_client_left(element);
+ clientY = webkit_dom_element_get_client_top(element);
+ webkit_dom_mouse_event_init_mouse_event(WEBKIT_DOM_MOUSE_EVENT(event),
+ "click", TRUE, TRUE,
+ fixture->domWindow, 0, 0, 0, clientX, clientY,
+ FALSE, FALSE, FALSE, FALSE,
+ 1, WEBKIT_DOM_EVENT_TARGET(element));
+ g_signal_connect(element, "click-event", G_CALLBACK(clicked_cb), fixture);
+ g_assert(fixture->clicked == FALSE);
+ webkit_dom_event_target_dispatch_event(WEBKIT_DOM_EVENT_TARGET(element), event, NULL);
+ }
+
+}
+
+static void test_dom_domview_dispatch_event(DomDomviewFixture* fixture, gconstpointer data)
+{
+ g_signal_connect(fixture->window, "map-event", G_CALLBACK(map_event_cb), fixture);
+ g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_status_callback), fixture);
+
+ gtk_widget_show_all(fixture->window);
+ gtk_window_present(GTK_WINDOW(fixture->window));
+
+ g_main_loop_run (fixture->loop);
+ g_assert(fixture->clicked);
+}
+
+int main(int argc, char** argv)
+{
+ if (!g_thread_supported())
+ g_thread_init(NULL);
+
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+
+ g_test_add("/webkit/domdomview/signals",
+ DomDomviewFixture, HTML_DOCUMENT,
+ dom_domview_fixture_setup,
+ test_dom_domview_signals,
+ dom_domview_fixture_teardown);
+
+ g_test_add("/webkit/domdomview/dispatch_event",
+ DomDomviewFixture, HTML_DOCUMENT,
+ dom_domview_fixture_setup,
+ test_dom_domview_dispatch_event,
+ dom_domview_fixture_teardown);
+
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testdomnode.c b/Source/WebKit/gtk/tests/testdomnode.c
new file mode 100644
index 0000000..893b7cc
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testdomnode.c
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "test_utils.h"
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+#define HTML_DOCUMENT_HIERARCHY_NAVIGATION "<html><head><title>This is the title</title></head><body><p>1</p><p>2</p><p>3</p></body></html>"
+#define HTML_DOCUMENT_NODE_INSERTION "<html><body></body></html>"
+
+typedef struct {
+ GtkWidget* webView;
+ GMainLoop* loop;
+} DomNodeFixture;
+
+static gboolean finish_loading(DomNodeFixture* fixture)
+{
+ if (g_main_loop_is_running(fixture->loop))
+ g_main_loop_quit(fixture->loop);
+
+ return FALSE;
+}
+
+static void dom_node_fixture_setup(DomNodeFixture* fixture, gconstpointer data)
+{
+ fixture->loop = g_main_loop_new(NULL, TRUE);
+ fixture->webView = webkit_web_view_new();
+ g_object_ref_sink(fixture->webView);
+
+ if (data != NULL)
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW(fixture->webView), (const char*)data, NULL, NULL, NULL);
+
+ g_idle_add((GSourceFunc)finish_loading, fixture);
+ g_main_loop_run(fixture->loop);
+}
+
+static void dom_node_fixture_teardown(DomNodeFixture* fixture, gconstpointer data)
+{
+ g_object_unref(fixture->webView);
+ g_main_loop_unref(fixture->loop);
+}
+
+static void test_dom_node_hierarchy_navigation(DomNodeFixture* fixture, gconstpointer data)
+{
+ WebKitDOMDocument* document;
+ WebKitDOMHTMLHeadElement* head;
+ WebKitDOMHTMLBodyElement* body;
+ WebKitDOMNodeList* list;
+ WebKitDOMNode* ptr;
+ gulong i, length;
+
+ document = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(fixture->webView));
+ g_assert(document);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ head = webkit_dom_document_get_head(document);
+ g_assert(head);
+ g_assert(WEBKIT_DOM_IS_HTML_HEAD_ELEMENT(head));
+
+ /* Title, head's child */
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(head)));
+ list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(head));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 1);
+ ptr = webkit_dom_node_list_item(list, 0);
+ g_assert(ptr);
+ g_assert(WEBKIT_DOM_IS_HTML_TITLE_ELEMENT(ptr));
+ g_object_unref(list);
+
+ /* Body, Head sibling */
+ ptr = webkit_dom_node_get_next_sibling(WEBKIT_DOM_NODE(head));
+ g_assert(ptr);
+ body = WEBKIT_DOM_HTML_BODY_ELEMENT(ptr);
+ g_assert(WEBKIT_DOM_IS_HTML_BODY_ELEMENT(body));
+
+ /* There is no third sibling */
+ ptr = webkit_dom_node_get_next_sibling(ptr);
+ g_assert(ptr == NULL);
+
+ /* Body's previous sibling is Head */
+ ptr = webkit_dom_node_get_previous_sibling(WEBKIT_DOM_NODE(body));
+ g_assert(ptr);
+ g_assert(WEBKIT_DOM_IS_HTML_HEAD_ELEMENT(ptr));
+
+ /* Body has 3 children */
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body));
+ length = webkit_dom_node_list_get_length(list);
+ g_assert_cmpint(length, ==, 3);
+
+ /* The three of them are P tags */
+ for (i = 0; i < length; i++) {
+ ptr = webkit_dom_node_list_item(list, i);
+ g_assert(ptr);
+ g_assert(WEBKIT_DOM_IS_HTML_PARAGRAPH_ELEMENT(ptr));
+ }
+
+ /* Go backwards */
+ for (i = 0; ptr; ptr = webkit_dom_node_get_previous_sibling(ptr), i++)
+ /* Nothing */;
+
+ g_assert_cmpint(i, ==, 3);
+ g_object_unref(list);
+}
+
+static void test_dom_node_insertion(DomNodeFixture* fixture, gconstpointer data)
+{
+ WebKitDOMDocument* document;
+ WebKitDOMHTMLElement* body;
+ WebKitDOMElement* p, *div;
+ WebKitDOMNodeList* list;
+ WebKitDOMNode* node;
+
+ document = webkit_web_view_get_dom_document(WEBKIT_WEB_VIEW(fixture->webView));
+ g_assert(document);
+ body = webkit_dom_document_get_body(document);
+ g_assert(body);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(body));
+
+ /* Body shouldn't have any children at this point */
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)) == FALSE);
+
+ /* Insert one P element */
+ p = webkit_dom_document_create_element(document, "P", NULL);
+ webkit_dom_node_append_child(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(p), NULL);
+
+ /* Now it should have one, the same that we inserted */
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 1);
+ node = webkit_dom_node_list_item(list, 0);
+ g_assert(node);
+ g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(p), node));
+ g_object_unref(list);
+
+ /* Replace the P tag with a DIV tag */
+ div = webkit_dom_document_create_element(document, "DIV", NULL);
+ webkit_dom_node_replace_child(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(div), WEBKIT_DOM_NODE(p), NULL);
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 1);
+ node = webkit_dom_node_list_item(list, 0);
+ g_assert(node);
+ g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(div), node));
+ g_object_unref(list);
+
+ /* Now remove the tag */
+ webkit_dom_node_remove_child(WEBKIT_DOM_NODE(body), node, NULL);
+ list = webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list), ==, 0);
+ g_object_unref(list);
+
+ /* TODO: insert_before, which does not seem to be working correctly */
+}
+
+int main(int argc, char** argv)
+{
+ if (!g_thread_supported())
+ g_thread_init(NULL);
+
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+
+ g_test_add("/webkit/domnode/test_hierarchy_navigation",
+ DomNodeFixture, HTML_DOCUMENT_HIERARCHY_NAVIGATION,
+ dom_node_fixture_setup,
+ test_dom_node_hierarchy_navigation,
+ dom_node_fixture_teardown);
+
+ g_test_add("/webkit/domnode/test_insertion",
+ DomNodeFixture, HTML_DOCUMENT_NODE_INSERTION,
+ dom_node_fixture_setup,
+ test_dom_node_insertion,
+ dom_node_fixture_teardown);
+
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testdownload.c b/Source/WebKit/gtk/tests/testdownload.c
new file mode 100644
index 0000000..f6ae865
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testdownload.c
@@ -0,0 +1,272 @@
+/*
+ * Copyright (C) 2009 Christian Dywan <christian@twotoasts.de>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2,1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <glib/gstdio.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+GMainLoop* loop;
+char* temporaryFilename = NULL;
+WebKitDownload* theDownload = NULL;
+
+static void
+test_webkit_download_create(void)
+{
+ WebKitNetworkRequest* request;
+ WebKitDownload* download;
+ const gchar* uri = "http://example.com";
+ gchar* tmpDir;
+
+ request = webkit_network_request_new(uri);
+ download = webkit_download_new(request);
+ g_object_unref(request);
+ g_assert_cmpstr(webkit_download_get_uri(download), ==, uri);
+ g_assert(webkit_download_get_network_request(download) == request);
+ g_assert(g_strrstr(uri, webkit_download_get_suggested_filename(download)));
+ g_assert(webkit_download_get_status(download) == WEBKIT_DOWNLOAD_STATUS_CREATED);
+ g_assert(!webkit_download_get_total_size(download));
+ g_assert(!webkit_download_get_current_size(download));
+ g_assert(!webkit_download_get_progress(download));
+ g_assert(!webkit_download_get_elapsed_time(download));
+ tmpDir = g_filename_to_uri(g_get_tmp_dir(), NULL, NULL);
+ webkit_download_set_destination_uri(download, tmpDir);
+ g_assert_cmpstr(tmpDir, ==, webkit_download_get_destination_uri(download));;
+ g_free(tmpDir);
+ g_object_unref(download);
+}
+
+static gboolean
+navigation_policy_decision_requested_cb(WebKitWebView* web_view,
+ WebKitWebFrame* web_frame,
+ WebKitNetworkRequest* request,
+ WebKitWebNavigationAction* action,
+ WebKitWebPolicyDecision* decision,
+ gpointer data)
+{
+ webkit_web_policy_decision_download(decision);
+ return TRUE;
+}
+
+static void
+notify_status_cb(GObject* object, GParamSpec* pspec, gpointer data)
+{
+ WebKitDownload* download = WEBKIT_DOWNLOAD(object);
+ switch (webkit_download_get_status(download)) {
+ case WEBKIT_DOWNLOAD_STATUS_FINISHED:
+ case WEBKIT_DOWNLOAD_STATUS_ERROR:
+ g_main_loop_quit(loop);
+ break;
+ case WEBKIT_DOWNLOAD_STATUS_CANCELLED:
+ g_assert_not_reached();
+ break;
+ default:
+ break;
+ }
+}
+
+static gboolean
+set_filename(gchar* filename)
+{
+ gchar *uri = g_filename_to_uri(filename, NULL, NULL);
+
+ webkit_download_set_destination_uri(theDownload, uri);
+ g_free(uri);
+
+ webkit_download_start(theDownload);
+ return FALSE;
+}
+
+static void
+handle_download_requested_cb(WebKitDownload* download,
+ gboolean* beenThere,
+ gboolean asynch)
+{
+ theDownload = download;
+ *beenThere = TRUE;
+
+ if (temporaryFilename) {
+ if (asynch) {
+ g_idle_add((GSourceFunc)set_filename, temporaryFilename);
+ } else {
+ gchar *uri = g_filename_to_uri(temporaryFilename, NULL, NULL);
+ if (uri)
+ webkit_download_set_destination_uri(download, uri);
+ g_free(uri);
+ }
+ }
+
+ g_signal_connect(download, "notify::status",
+ G_CALLBACK(notify_status_cb), NULL);
+}
+
+static gboolean
+download_requested_cb(WebKitWebView* web_view,
+ WebKitDownload* download,
+ gboolean* beenThere)
+{
+ handle_download_requested_cb(download, beenThere, FALSE);
+ return TRUE;
+}
+
+static gboolean
+download_requested_asynch_cb(WebKitWebView* web_view,
+ WebKitDownload* download,
+ gboolean* beenThere)
+{
+ handle_download_requested_cb(download, beenThere, TRUE);
+ return TRUE;
+}
+
+static void
+test_webkit_download_perform(gboolean asynch)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ GCallback downloadRequestCallback = NULL;
+
+ g_object_ref_sink(G_OBJECT(webView));
+
+ g_signal_connect(webView, "navigation-policy-decision-requested",
+ G_CALLBACK(navigation_policy_decision_requested_cb),
+ NULL);
+
+ if (asynch)
+ downloadRequestCallback = G_CALLBACK(download_requested_asynch_cb);
+ else
+ downloadRequestCallback = G_CALLBACK(download_requested_cb);
+
+ gboolean beenThere = FALSE;
+ g_signal_connect(webView, "download-requested",
+ downloadRequestCallback, &beenThere);
+
+ /* Preparation; FIXME: we should move this code to a test
+ * utilities file, because we have a very similar one in
+ * testwebframe.c */
+ GError *error = NULL;
+ gchar* filename;
+ int fd = g_file_open_tmp("webkit-testwebdownload-XXXXXX", &filename, &error);
+ close(fd);
+
+ if (error)
+ g_critical("Failed to open a temporary file for writing: %s.", error->message);
+
+ if (g_unlink(filename) == -1)
+ g_critical("Failed to delete the temporary file: %s.", g_strerror(errno));
+
+ theDownload = NULL;
+ temporaryFilename = filename;
+
+ loop = g_main_loop_new(NULL, TRUE);
+ webkit_web_view_load_uri(webView, "http://gnome.org/");
+ g_main_loop_run(loop);
+
+ g_assert_cmpint(beenThere, ==, TRUE);
+
+ g_assert_cmpint(g_file_test(temporaryFilename, G_FILE_TEST_IS_REGULAR), ==, TRUE);
+
+ g_unlink(temporaryFilename);
+ g_free(temporaryFilename);
+ temporaryFilename = NULL;
+
+ g_main_loop_unref(loop);
+ g_object_unref(webView);
+}
+
+static void
+test_webkit_download_synch(void)
+{
+ test_webkit_download_perform(FALSE);
+}
+
+static void
+test_webkit_download_asynch(void)
+{
+ test_webkit_download_perform(TRUE);
+}
+
+static gboolean mime_type_policy_decision_requested_cb(WebKitWebView* view, WebKitWebFrame* frame,
+ WebKitNetworkRequest* request, const char* mime_type,
+ WebKitWebPolicyDecision* decision, gpointer data)
+{
+ webkit_web_policy_decision_download(decision);
+ return TRUE;
+}
+
+static void idle_quit_loop_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+ if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED ||
+ webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FAILED)
+ g_main_loop_quit(loop);
+}
+
+static void
+test_webkit_download_data(void)
+{
+ gboolean beenThere = FALSE;
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+
+ g_signal_connect(webView, "download-requested",
+ G_CALLBACK(download_requested_cb),
+ &beenThere);
+
+ g_signal_connect(webView, "notify::load-status",
+ G_CALLBACK(idle_quit_loop_cb),
+ NULL);
+
+ g_signal_connect(webView, "mime-type-policy-decision-requested",
+ G_CALLBACK(mime_type_policy_decision_requested_cb),
+ NULL);
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ /* We're testing for a crash, so just not crashing is a pass */
+ webkit_web_view_load_uri(webView, "data:application/octect-stream,");
+ g_main_loop_run(loop);
+
+ g_assert_cmpint(beenThere, ==, TRUE);
+
+ g_main_loop_unref(loop);
+ g_object_unref(webView);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/download/create", test_webkit_download_create);
+ g_test_add_func("/webkit/download/synch", test_webkit_download_synch);
+ g_test_add_func("/webkit/download/asynch", test_webkit_download_asynch);
+ g_test_add_func("/webkit/download/data", test_webkit_download_data);
+ return g_test_run ();
+}
+
+#else
+
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least GTK+ 2.14.0 to run the unit tests.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testglobals.c b/Source/WebKit/gtk/tests/testglobals.c
new file mode 100644
index 0000000..da0ffa3
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testglobals.c
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+// Make sure the session is initialized properly when webkit_get_default_session() is called.
+static void test_globals_default_session()
+{
+ g_test_bug("36754");
+
+ SoupSession* session = webkit_get_default_session();
+ soup_session_remove_feature_by_type(session, WEBKIT_TYPE_SOUP_AUTH_DIALOG);
+
+ // This makes sure our initialization ran.
+ g_assert(soup_session_get_feature(session, SOUP_TYPE_CONTENT_DECODER) != NULL);
+
+ // Creating a WebView should make sure the session is
+ // initialized, and not mess with our changes.
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(web_view);
+ g_object_unref(web_view);
+
+ // These makes sure our modification was kept.
+ g_assert(soup_session_get_feature(session, SOUP_TYPE_CONTENT_DECODER) != NULL);
+ g_assert(soup_session_get_feature(session, WEBKIT_TYPE_SOUP_AUTH_DIALOG) == NULL);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/globals/default_session",
+ test_globals_default_session);
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testhittestresult.c b/Source/WebKit/gtk/tests/testhittestresult.c
new file mode 100644
index 0000000..0d7fb05
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testhittestresult.c
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2,1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <glib/gstdio.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+typedef struct {
+ char* data;
+ guint flag;
+} TestInfo;
+
+static GMainLoop* loop;
+
+typedef struct {
+ WebKitWebView* webView;
+ TestInfo* info;
+} HitTestResultFixture;
+
+TestInfo*
+test_info_new(const char* data, guint flag)
+{
+ TestInfo* info;
+
+ info = g_slice_new(TestInfo);
+ info->data = g_strdup(data);
+ info->flag = flag;
+
+ return info;
+}
+
+void
+test_info_destroy(TestInfo* info)
+{
+ g_free(info->data);
+ g_slice_free(TestInfo, info);
+}
+
+static void hit_test_result_fixture_setup(HitTestResultFixture* fixture, gconstpointer data)
+{
+ fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(fixture->webView);
+ loop = g_main_loop_new(NULL, TRUE);
+ fixture->info = (TestInfo*)data;
+}
+
+static void hit_test_result_fixture_teardown(HitTestResultFixture* fixture, gconstpointer data)
+{
+ g_object_unref(fixture->webView);
+ g_main_loop_unref(loop);
+ test_info_destroy(fixture->info);
+}
+
+static void
+load_status_cb(WebKitWebView* webView,
+ GParamSpec* spec,
+ gpointer data)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ TestInfo* info = (TestInfo*)data;
+
+ if (status == WEBKIT_LOAD_FINISHED) {
+ WebKitHitTestResult* result;
+ guint context;
+ GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
+ WebKitDOMNode* node;
+
+ /* Close enough to 0,0 */
+ event->button.x = 5;
+ event->button.y = 5;
+
+ result = webkit_web_view_get_hit_test_result(webView, (GdkEventButton*) event);
+ gdk_event_free(event);
+ g_assert(result);
+
+ g_object_get(result, "context", &context, NULL);
+ g_assert(context & info->flag);
+
+ g_object_get(result, "inner-node", &node, NULL);
+ g_assert(node);
+ g_assert(WEBKIT_DOM_IS_NODE(node));
+ /* We can only test these node types at the moment. In the
+ * input case there seems to be an extra layer with a DIV on
+ * top of the input, which gets assigned to the inner-node.
+ * tag */
+ if (info->flag == WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT)
+ g_assert(WEBKIT_DOM_IS_HTML_HTML_ELEMENT(node));
+ else if (info->flag == WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE)
+ g_assert(WEBKIT_DOM_IS_HTML_IMAGE_ELEMENT(node));
+ else if (info->flag == WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK) {
+ /* The hit test will give us the inner text node, we want
+ * the A tag */
+ WebKitDOMNode* parent = webkit_dom_node_get_parent_node(node);
+ g_assert(WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT(parent));
+ }
+
+ g_object_unref(result);
+ g_main_loop_quit(loop);
+ }
+}
+
+static void
+test_webkit_hit_test_result(HitTestResultFixture* fixture, gconstpointer data)
+{
+ TestInfo* info = (TestInfo*)data;
+ GtkAllocation allocation = { 0, 0, 50, 50 };
+
+ webkit_web_view_load_string(fixture->webView,
+ info->data,
+ "text/html",
+ "utf-8",
+ "file://");
+ gtk_widget_size_allocate(GTK_WIDGET(fixture->webView), &allocation);
+ g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_status_cb), info);
+ g_main_loop_run(loop);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+
+ g_test_add("/webkit/hittestresult/document", HitTestResultFixture,
+ test_info_new("<html><body><h1>WebKitGTK+!</h1></body></html>",
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT),
+ hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown);
+ /* We hardcode all elements to be at 0,0 so that we know where to
+ * generate the button events */
+ g_test_add("/webkit/hittestresult/image", HitTestResultFixture,
+ test_info_new("<html><body><img style='position:absolute; left:0; top:0'src='0xdeadbeef' width=50 height=50></img></body></html>",
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE),
+ hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown);
+ g_test_add("/webkit/hittestresult/editable", HitTestResultFixture,
+ test_info_new("<html><body><input style='position:absolute; left:0; top:0' size='35'></input>></body></html>",
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE),
+ hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown);
+ g_test_add("/webkit/hittestresult/link", HitTestResultFixture,
+ test_info_new("<html><body><a style='position:absolute; left:0; top:0' href='http://www.example.com'>HELLO WORLD</a></body></html>",
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK),
+ hit_test_result_fixture_setup, test_webkit_hit_test_result, hit_test_result_fixture_teardown);
+
+ return g_test_run ();
+}
+
+#else
+
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least GTK+ 2.14.0 to run the unit tests.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testhttpbackend.c b/Source/WebKit/gtk/tests/testhttpbackend.c
new file mode 100644
index 0000000..f0fac16
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testhttpbackend.c
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2009 Gustavo Noronha Silva
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+// Not yet public API
+SoupMessage* webkit_network_request_get_message(WebKitNetworkRequest* request);
+
+static gboolean navigation_policy_decision_requested_cb(WebKitWebView* web_view,
+ WebKitWebFrame* web_frame,
+ WebKitNetworkRequest* request,
+ WebKitWebNavigationAction* action,
+ WebKitWebPolicyDecision* decision,
+ gpointer data)
+{
+ SoupMessage* message = webkit_network_request_get_message(request);
+
+ /* 1 -> webkit_network_request_with_core_request
+ *
+ * The SoupMessage is created exclusively for the emission of this
+ * signal.
+ */
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1);
+
+ return FALSE;
+}
+
+static void test_soup_message_lifetime()
+{
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+
+ g_object_ref_sink(web_view);
+
+ g_signal_connect(web_view, "navigation-policy-decision-requested",
+ G_CALLBACK(navigation_policy_decision_requested_cb),
+ NULL);
+
+ /* load_uri will trigger the navigation-policy-decision-requested
+ * signal emission;
+ */
+ webkit_web_view_load_uri(web_view, "http://127.0.0.1/");
+
+ g_object_unref(web_view);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/soupmessage/lifetime", test_soup_message_lifetime);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testkeyevents.c b/Source/WebKit/gtk/tests/testkeyevents.c
new file mode 100644
index 0000000..b41a032
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testkeyevents.c
@@ -0,0 +1,402 @@
+/*
+ * Copyright (C) 2009, 2010 Martin Robinson <mrobinson@webkit.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2,1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+#include <glib/gstdio.h>
+#include <webkit/webkit.h>
+#include <JavaScriptCore/JSStringRef.h>
+#include <JavaScriptCore/JSContextRef.h>
+
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+typedef struct {
+ char* page;
+ char* text;
+ gboolean shouldBeHandled;
+} TestInfo;
+
+typedef struct {
+ GtkWidget* window;
+ WebKitWebView* webView;
+ GMainLoop* loop;
+ TestInfo* info;
+} KeyEventFixture;
+
+TestInfo*
+test_info_new(const char* page, gboolean shouldBeHandled)
+{
+ TestInfo* info;
+
+ info = g_slice_new(TestInfo);
+ info->page = g_strdup(page);
+ info->shouldBeHandled = shouldBeHandled;
+ info->text = 0;
+
+ return info;
+}
+
+void
+test_info_destroy(TestInfo* info)
+{
+ g_free(info->page);
+ g_free(info->text);
+ g_slice_free(TestInfo, info);
+}
+
+static void key_event_fixture_setup(KeyEventFixture* fixture, gconstpointer data)
+{
+ fixture->loop = g_main_loop_new(NULL, TRUE);
+
+ fixture->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+
+ gtk_container_add(GTK_CONTAINER(fixture->window), GTK_WIDGET(fixture->webView));
+}
+
+static void key_event_fixture_teardown(KeyEventFixture* fixture, gconstpointer data)
+{
+ gtk_widget_destroy(fixture->window);
+ g_main_loop_unref(fixture->loop);
+ test_info_destroy(fixture->info);
+}
+
+static gboolean key_press_event_cb(WebKitWebView* webView, GdkEvent* event, gpointer data)
+{
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
+ g_assert_cmpint(handled, ==, fixture->info->shouldBeHandled);
+
+ return FALSE;
+}
+
+static gboolean key_release_event_cb(WebKitWebView* webView, GdkEvent* event, gpointer data)
+{
+ // WebCore never seems to mark keyup events as handled.
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ gboolean handled = GTK_WIDGET_GET_CLASS(fixture->webView)->key_press_event(GTK_WIDGET(fixture->webView), &event->key);
+ g_assert(!handled);
+
+ g_main_loop_quit(fixture->loop);
+
+ return FALSE;
+}
+
+static void test_keypress_events_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data)
+{
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ if (status == WEBKIT_LOAD_FINISHED) {
+ g_signal_connect(fixture->webView, "key-press-event",
+ G_CALLBACK(key_press_event_cb), fixture);
+ g_signal_connect(fixture->webView, "key-release-event",
+ G_CALLBACK(key_release_event_cb), fixture);
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('a'), 0))
+ g_assert_not_reached();
+ }
+
+}
+
+gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, gpointer data)
+{
+ gtk_widget_grab_focus(widget);
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ webkit_web_view_load_string(fixture->webView, fixture->info->page,
+ "text/html", "utf-8", "file://");
+ return FALSE;
+}
+
+static void setup_keyevent_test(KeyEventFixture* fixture, gconstpointer data, GCallback load_event_callback)
+{
+ fixture->info = (TestInfo*)data;
+ g_signal_connect(fixture->window, "map-event",
+ G_CALLBACK(map_event_cb), fixture);
+
+ gtk_widget_show(fixture->window);
+ gtk_widget_show(GTK_WIDGET(fixture->webView));
+ gtk_window_present(GTK_WINDOW(fixture->window));
+
+ g_signal_connect(fixture->webView, "notify::load-status",
+ load_event_callback, fixture);
+
+ g_main_loop_run(fixture->loop);
+}
+
+static void test_keypress_events(KeyEventFixture* fixture, gconstpointer data)
+{
+ setup_keyevent_test(fixture, data, G_CALLBACK(test_keypress_events_load_status_cb));
+}
+
+static gboolean element_text_equal_to(JSContextRef context, const gchar* text)
+{
+ JSStringRef scriptString = JSStringCreateWithUTF8CString(
+ "window.document.getElementById(\"in\").value;");
+ JSValueRef value = JSEvaluateScript(context, scriptString, 0, 0, 0, 0);
+ JSStringRelease(scriptString);
+
+ // If the value isn't a string, the element is probably a div
+ // so grab the innerText instead.
+ if (!JSValueIsString(context, value)) {
+ JSStringRef scriptString = JSStringCreateWithUTF8CString(
+ "window.document.getElementById(\"in\").innerText;");
+ value = JSEvaluateScript(context, scriptString, 0, 0, 0, 0);
+ JSStringRelease(scriptString);
+ }
+
+ g_assert(JSValueIsString(context, value));
+ JSStringRef inputString = JSValueToStringCopy(context, value, 0);
+ g_assert(inputString);
+
+ gint size = JSStringGetMaximumUTF8CStringSize(inputString);
+ gchar* cString = g_malloc(size);
+ JSStringGetUTF8CString(inputString, cString, size);
+ JSStringRelease(inputString);
+
+ gboolean result = g_utf8_collate(cString, text) == 0;
+ g_free(cString);
+ return result;
+}
+
+static void test_ime_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data)
+{
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ JSGlobalContextRef context = webkit_web_frame_get_global_context(
+ webkit_web_view_get_main_frame(webView));
+ g_assert(context);
+
+ GtkIMContext* imContext = 0;
+ g_object_get(webView, "im-context", &imContext, NULL);
+ g_assert(imContext);
+
+ // Test that commits that happen outside of key events
+ // change the text field immediately. This closely replicates
+ // the behavior of SCIM.
+ g_assert(element_text_equal_to(context, ""));
+ g_signal_emit_by_name(imContext, "commit", "a");
+ g_assert(element_text_equal_to(context, "a"));
+ g_signal_emit_by_name(imContext, "commit", "b");
+ g_assert(element_text_equal_to(context, "ab"));
+ g_signal_emit_by_name(imContext, "commit", "c");
+ g_assert(element_text_equal_to(context, "abc"));
+
+ g_object_unref(imContext);
+ g_main_loop_quit(fixture->loop);
+}
+
+static void test_ime(KeyEventFixture* fixture, gconstpointer data)
+{
+ setup_keyevent_test(fixture, data, G_CALLBACK(test_ime_load_status_cb));
+}
+
+static gboolean verify_contents(gpointer data)
+{
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ JSGlobalContextRef context = webkit_web_frame_get_global_context(
+ webkit_web_view_get_main_frame(fixture->webView));
+ g_assert(context);
+
+ g_assert(element_text_equal_to(context, fixture->info->text));
+ g_main_loop_quit(fixture->loop);
+ return FALSE;
+}
+
+static void test_blocking_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data)
+{
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ // The first keypress event should not modify the field.
+ fixture->info->text = g_strdup("bc");
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('a'), 0))
+ g_assert_not_reached();
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('b'), 0))
+ g_assert_not_reached();
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('c'), 0))
+ g_assert_not_reached();
+
+ g_idle_add(verify_contents, fixture);
+}
+
+static void test_blocking(KeyEventFixture* fixture, gconstpointer data)
+{
+ setup_keyevent_test(fixture, data, G_CALLBACK(test_blocking_load_status_cb));
+}
+
+#if defined(GDK_WINDOWING_X11) && GTK_CHECK_VERSION(2, 16, 0)
+static void test_xim_load_status_cb(WebKitWebView* webView, GParamSpec* spec, gpointer data)
+{
+ KeyEventFixture* fixture = (KeyEventFixture*)data;
+ WebKitLoadStatus status = webkit_web_view_get_load_status(webView);
+ if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ GtkIMContext* imContext = 0;
+ g_object_get(webView, "im-context", &imContext, NULL);
+ g_assert(imContext);
+
+ gchar* originalId = g_strdup(gtk_im_multicontext_get_context_id(GTK_IM_MULTICONTEXT(imContext)));
+ gtk_im_multicontext_set_context_id(GTK_IM_MULTICONTEXT(imContext), "xim");
+
+ // Test that commits that happen outside of key events
+ // change the text field immediately. This closely replicates
+ // the behavior of SCIM.
+ fixture->info->text = g_strdup("debian");
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('d'), 0))
+ g_assert_not_reached();
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('e'), 0))
+ g_assert_not_reached();
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('b'), 0))
+ g_assert_not_reached();
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('i'), 0))
+ g_assert_not_reached();
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('a'), 0))
+ g_assert_not_reached();
+ if (!gtk_test_widget_send_key(GTK_WIDGET(fixture->webView),
+ gdk_unicode_to_keyval('n'), 0))
+ g_assert_not_reached();
+
+ gtk_im_multicontext_set_context_id(GTK_IM_MULTICONTEXT(imContext), originalId);
+ g_free(originalId);
+ g_object_unref(imContext);
+
+ g_idle_add(verify_contents, fixture);
+}
+
+static void test_xim(KeyEventFixture* fixture, gconstpointer data)
+{
+ setup_keyevent_test(fixture, data, G_CALLBACK(test_xim_load_status_cb));
+}
+#endif
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+
+
+ // We'll test input on a slew of different node types. Key events to
+ // text inputs and editable divs should be marked as handled. Key events
+ // to buttons and links should not.
+ const char* textinput_html = "<html><body><input id=\"in\" type=\"text\">"
+ "<script>document.getElementById('in').focus();</script></body></html>";
+ const char* button_html = "<html><body><input id=\"in\" type=\"button\">"
+ "<script>document.getElementById('in').focus();</script></body></html>";
+ const char* link_html = "<html><body><a href=\"http://www.gnome.org\" id=\"in\">"
+ "LINKY MCLINKERSON</a><script>document.getElementById('in').focus();</script>"
+ "</body></html>";
+ const char* div_html = "<html><body><div id=\"in\" contenteditable=\"true\">"
+ "<script>document.getElementById('in').focus();</script></body></html>";
+
+ // These are similar to the blocks above, but they should block the first
+ // keypress modifying the editable node.
+ const char* textinput_html_blocking = "<html><body>"
+ "<input id=\"in\" type=\"text\" "
+ "onkeypress=\"if (first) {event.preventDefault();first=false;}\">"
+ "<script>first = true;\ndocument.getElementById('in').focus();</script>\n"
+ "</script></body></html>";
+ const char* div_html_blocking = "<html><body>"
+ "<div id=\"in\" contenteditable=\"true\" "
+ "onkeypress=\"if (first) {event.preventDefault();first=false;}\">"
+ "<script>first = true; document.getElementById('in').focus();</script>\n"
+ "</script></body></html>";
+
+ g_test_add("/webkit/keyevents/event-textinput", KeyEventFixture,
+ test_info_new(textinput_html, TRUE),
+ key_event_fixture_setup,
+ test_keypress_events,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevents/event-buttons", KeyEventFixture,
+ test_info_new(button_html, FALSE),
+ key_event_fixture_setup,
+ test_keypress_events,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevents/event-link", KeyEventFixture,
+ test_info_new(link_html, FALSE),
+ key_event_fixture_setup,
+ test_keypress_events,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevent/event-div", KeyEventFixture,
+ test_info_new(div_html, TRUE),
+ key_event_fixture_setup,
+ test_keypress_events,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevent/ime-textinput", KeyEventFixture,
+ test_info_new(textinput_html, TRUE),
+ key_event_fixture_setup,
+ test_ime,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevent/ime-div", KeyEventFixture,
+ test_info_new(div_html, TRUE),
+ key_event_fixture_setup,
+ test_ime,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevent/block-textinput", KeyEventFixture,
+ test_info_new(textinput_html_blocking, TRUE),
+ key_event_fixture_setup,
+ test_blocking,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevent/block-div", KeyEventFixture,
+ test_info_new(div_html_blocking, TRUE),
+ key_event_fixture_setup,
+ test_blocking,
+ key_event_fixture_teardown);
+#if defined(GDK_WINDOWING_X11) && GTK_CHECK_VERSION(2, 16, 0)
+ g_test_add("/webkit/keyevent/xim-textinput", KeyEventFixture,
+ test_info_new(textinput_html, TRUE),
+ key_event_fixture_setup,
+ test_xim,
+ key_event_fixture_teardown);
+ g_test_add("/webkit/keyevent/xim-div", KeyEventFixture,
+ test_info_new(div_html, TRUE),
+ key_event_fixture_setup,
+ test_xim,
+ key_event_fixture_teardown);
+#endif
+
+ return g_test_run();
+}
+
+#else
+
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least GTK+ 2.14.0 to run the unit tests.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testloading.c b/Source/WebKit/gtk/tests/testloading.c
new file mode 100644
index 0000000..a0ec8c9
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testloading.c
@@ -0,0 +1,445 @@
+/*
+ * Copyright (C) 2009, 2010 Gustavo Noronha Silva
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+#include <string.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+/* This string has to be rather big because of the cancelled test - it
+ * looks like soup refuses to send or receive a too small chunk */
+#define HTML_STRING "<html><body>Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!</body></html>"
+
+SoupURI* base_uri;
+
+/* For real request testing */
+static void
+server_callback(SoupServer* server, SoupMessage* msg,
+ const char* path, GHashTable* query,
+ SoupClientContext* context, gpointer data)
+{
+ if (msg->method != SOUP_METHOD_GET) {
+ soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status(msg, SOUP_STATUS_OK);
+
+ if (g_str_equal(path, "/test_loading_status") || g_str_equal(path, "/test_loading_status2"))
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING));
+ else if (g_str_equal(path, "/test_load_error")) {
+ soup_message_set_status(msg, SOUP_STATUS_CANT_CONNECT);
+ } else if (g_str_equal(path, "/test_loading_cancelled")) {
+ soup_message_headers_set_encoding(msg->response_headers, SOUP_ENCODING_CHUNKED);
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_STATIC, HTML_STRING, strlen(HTML_STRING));
+ soup_server_unpause_message(server, msg);
+ return;
+ }
+
+ soup_message_body_complete(msg->response_body);
+}
+
+typedef struct {
+ WebKitWebView* webView;
+ GMainLoop *loop;
+ gboolean has_been_provisional;
+ gboolean has_been_committed;
+ gboolean has_been_first_visually_non_empty_layout;
+ gboolean has_been_finished;
+ gboolean has_been_failed;
+ gboolean has_been_load_error;
+} WebLoadingFixture;
+
+static void web_loading_fixture_setup(WebLoadingFixture* fixture, gconstpointer data)
+{
+ fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ fixture->loop = g_main_loop_new(NULL, TRUE);
+ g_object_ref_sink(fixture->webView);
+ fixture->has_been_provisional = FALSE;
+ fixture->has_been_committed = FALSE;
+ fixture->has_been_first_visually_non_empty_layout = FALSE;
+ fixture->has_been_finished = FALSE;
+ fixture->has_been_failed = FALSE;
+ fixture->has_been_load_error = FALSE;
+}
+
+static void web_loading_fixture_teardown(WebLoadingFixture* fixture, gconstpointer data)
+{
+ g_object_unref(fixture->webView);
+ g_main_loop_unref(fixture->loop);
+}
+
+static char* get_uri_for_path(const char* path)
+{
+ SoupURI* uri;
+ char* uri_string;
+
+ uri = soup_uri_new_with_base(base_uri, path);
+ uri_string = soup_uri_to_string(uri, FALSE);
+ soup_uri_free (uri);
+
+ return uri_string;
+}
+
+static void load_finished_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, WebLoadingFixture* fixture)
+{
+ g_assert(fixture->has_been_provisional);
+ g_assert(fixture->has_been_committed);
+ g_assert(fixture->has_been_first_visually_non_empty_layout);
+
+ g_main_loop_quit(fixture->loop);
+}
+
+
+static void status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object));
+
+ switch (status) {
+ case WEBKIT_LOAD_PROVISIONAL:
+ g_assert(!fixture->has_been_provisional);
+ g_assert(!fixture->has_been_committed);
+ g_assert(!fixture->has_been_first_visually_non_empty_layout);
+ fixture->has_been_provisional = TRUE;
+ break;
+ case WEBKIT_LOAD_COMMITTED:
+ g_assert(fixture->has_been_provisional);
+ g_assert(!fixture->has_been_committed);
+ g_assert(!fixture->has_been_first_visually_non_empty_layout);
+ fixture->has_been_committed = TRUE;
+ break;
+ case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT:
+ g_assert(fixture->has_been_provisional);
+ g_assert(fixture->has_been_committed);
+ g_assert(!fixture->has_been_first_visually_non_empty_layout);
+ fixture->has_been_first_visually_non_empty_layout = TRUE;
+ break;
+ case WEBKIT_LOAD_FINISHED:
+ g_assert(fixture->has_been_provisional);
+ g_assert(fixture->has_been_committed);
+ g_assert(fixture->has_been_first_visually_non_empty_layout);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+}
+
+static void test_loading_status(WebLoadingFixture* fixture, gconstpointer data)
+{
+ char* uri_string;
+
+ g_assert_cmpint(webkit_web_view_get_load_status(fixture->webView), ==, WEBKIT_LOAD_PROVISIONAL);
+
+ g_object_connect(G_OBJECT(fixture->webView),
+ "signal::notify::load-status", G_CALLBACK(status_changed_cb), fixture,
+ "signal::load-finished", G_CALLBACK(load_finished_cb), fixture,
+ NULL);
+
+ uri_string = get_uri_for_path("/test_loading_status");
+
+ /* load_uri will trigger the navigation-policy-decision-requested
+ * signal emission;
+ */
+ webkit_web_view_load_uri(fixture->webView, uri_string);
+ g_free(uri_string);
+
+ g_main_loop_run(fixture->loop);
+}
+
+static void load_error_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object));
+
+ switch(status) {
+ case WEBKIT_LOAD_PROVISIONAL:
+ g_assert(!fixture->has_been_provisional);
+ fixture->has_been_provisional = TRUE;
+ break;
+ case WEBKIT_LOAD_COMMITTED:
+ g_assert(!fixture->has_been_committed);
+ fixture->has_been_committed = TRUE;
+ break;
+ case WEBKIT_LOAD_FINISHED:
+ g_assert(fixture->has_been_provisional);
+ g_assert(fixture->has_been_load_error);
+ g_assert(fixture->has_been_failed);
+ g_assert(!fixture->has_been_finished);
+ fixture->has_been_finished = TRUE;
+ break;
+ case WEBKIT_LOAD_FAILED:
+ g_assert(!fixture->has_been_failed);
+ fixture->has_been_failed = TRUE;
+ g_main_loop_quit(fixture->loop);
+ break;
+ default:
+ break;
+ }
+}
+
+static gboolean load_error_cb(WebKitWebView* webView, WebKitWebFrame* frame, const char* uri, GError *error, WebLoadingFixture* fixture)
+{
+ g_assert(fixture->has_been_provisional);
+ g_assert(!fixture->has_been_load_error);
+ fixture->has_been_load_error = TRUE;
+
+ return FALSE;
+}
+
+static void test_loading_error(WebLoadingFixture* fixture, gconstpointer data)
+{
+ char* uri_string;
+
+ g_test_bug("28842");
+
+ g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_error_cb), fixture);
+ g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_error_status_changed_cb), fixture);
+
+ uri_string = get_uri_for_path("/test_load_error");
+ webkit_web_view_load_uri(fixture->webView, uri_string);
+ g_free(uri_string);
+
+ g_main_loop_run(fixture->loop);
+
+ g_assert(fixture->has_been_provisional);
+ g_assert(!fixture->has_been_committed);
+ g_assert(fixture->has_been_load_error);
+ g_assert(fixture->has_been_failed);
+ g_assert(!fixture->has_been_finished);
+}
+
+/* Cancelled load */
+
+static gboolean load_cancelled_cb(WebKitWebView* webView, WebKitWebFrame* frame, const char* uri, GError *error, WebLoadingFixture* fixture)
+{
+ g_assert(fixture->has_been_provisional);
+ g_assert(fixture->has_been_failed);
+ g_assert(!fixture->has_been_load_error);
+ g_assert(error->code == WEBKIT_NETWORK_ERROR_CANCELLED);
+ fixture->has_been_load_error = TRUE;
+
+ return TRUE;
+}
+
+static gboolean stop_load (gpointer data)
+{
+ webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(data));
+ return FALSE;
+}
+
+static void load_cancelled_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object));
+
+ switch(status) {
+ case WEBKIT_LOAD_PROVISIONAL:
+ g_assert(!fixture->has_been_provisional);
+ g_assert(!fixture->has_been_failed);
+ fixture->has_been_provisional = TRUE;
+ break;
+ case WEBKIT_LOAD_COMMITTED:
+ g_idle_add (stop_load, object);
+ break;
+ case WEBKIT_LOAD_FAILED:
+ g_assert(fixture->has_been_provisional);
+ g_assert(!fixture->has_been_failed);
+ g_assert(!fixture->has_been_load_error);
+ fixture->has_been_failed = TRUE;
+ g_main_loop_quit(fixture->loop);
+ break;
+ case WEBKIT_LOAD_FINISHED:
+ g_assert_not_reached();
+ break;
+ default:
+ break;
+ }
+}
+
+static void test_loading_cancelled(WebLoadingFixture* fixture, gconstpointer data)
+{
+ char* uri_string;
+
+ g_test_bug("29644");
+
+ g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_cancelled_cb), fixture);
+ g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_cancelled_status_changed_cb), fixture);
+
+ uri_string = get_uri_for_path("/test_loading_cancelled");
+ webkit_web_view_load_uri(fixture->webView, uri_string);
+ g_free(uri_string);
+
+ g_main_loop_run(fixture->loop);
+}
+
+static void load_goback_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object));
+
+ switch(status) {
+ case WEBKIT_LOAD_PROVISIONAL:
+ g_assert(!fixture->has_been_provisional);
+ fixture->has_been_provisional = TRUE;
+ break;
+ case WEBKIT_LOAD_COMMITTED:
+ g_assert(fixture->has_been_provisional);
+ fixture->has_been_committed = TRUE;
+ break;
+ case WEBKIT_LOAD_FAILED:
+ g_assert_not_reached();
+ break;
+ case WEBKIT_LOAD_FINISHED:
+ g_assert(fixture->has_been_provisional);
+ g_assert(fixture->has_been_committed);
+ fixture->has_been_finished = TRUE;
+ g_main_loop_quit(fixture->loop);
+ break;
+ default:
+ break;
+ }
+}
+
+static void load_wentback_status_changed_cb(GObject* object, GParamSpec* pspec, WebLoadingFixture* fixture)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object));
+ char* uri_string;
+ char* uri_string2;
+
+ uri_string = get_uri_for_path("/test_loading_status");
+ uri_string2 = get_uri_for_path("/test_loading_status2");
+
+ switch(status) {
+ case WEBKIT_LOAD_PROVISIONAL:
+ g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string2);
+ break;
+ case WEBKIT_LOAD_COMMITTED:
+ g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string);
+ break;
+ case WEBKIT_LOAD_FAILED:
+ g_assert_not_reached();
+ break;
+ case WEBKIT_LOAD_FINISHED:
+ g_assert_cmpstr(webkit_web_view_get_uri(fixture->webView), ==, uri_string);
+ g_main_loop_quit(fixture->loop);
+ break;
+ default:
+ break;
+ }
+
+ g_free(uri_string);
+ g_free(uri_string2);
+}
+
+static void load_error_test(WebKitWebView* webview, WebKitWebFrame* frame, const char* uri, GError* error)
+{
+ g_debug("Error: %s", error->message);
+}
+
+static void test_loading_goback(WebLoadingFixture* fixture, gconstpointer data)
+{
+ char* uri_string;
+
+ g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_goback_status_changed_cb), fixture);
+
+ g_signal_connect(fixture->webView, "load-error", G_CALLBACK(load_error_test), fixture);
+
+ uri_string = get_uri_for_path("/test_loading_status");
+ webkit_web_view_load_uri(fixture->webView, uri_string);
+ g_free(uri_string);
+
+ g_main_loop_run(fixture->loop);
+
+ fixture->has_been_provisional = FALSE;
+ fixture->has_been_committed = FALSE;
+ fixture->has_been_first_visually_non_empty_layout = FALSE;
+ fixture->has_been_finished = FALSE;
+ fixture->has_been_failed = FALSE;
+ fixture->has_been_load_error = FALSE;
+
+ uri_string = get_uri_for_path("/test_loading_status2");
+ webkit_web_view_load_uri(fixture->webView, uri_string);
+ g_free(uri_string);
+
+ g_main_loop_run(fixture->loop);
+
+ g_signal_handlers_disconnect_by_func(fixture->webView, load_goback_status_changed_cb, fixture);
+
+ fixture->has_been_provisional = FALSE;
+ fixture->has_been_committed = FALSE;
+ fixture->has_been_first_visually_non_empty_layout = FALSE;
+ fixture->has_been_finished = FALSE;
+ fixture->has_been_failed = FALSE;
+ fixture->has_been_load_error = FALSE;
+
+ g_signal_connect(fixture->webView, "notify::load-status", G_CALLBACK(load_wentback_status_changed_cb), fixture);
+ webkit_web_view_go_back(fixture->webView);
+
+ g_main_loop_run(fixture->loop);
+
+ g_signal_handlers_disconnect_by_func(fixture->webView, load_wentback_status_changed_cb, fixture);
+}
+
+int main(int argc, char** argv)
+{
+ SoupServer* server;
+
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
+ soup_server_run_async(server);
+
+ soup_server_add_handler(server, NULL, server_callback, NULL, NULL);
+
+ base_uri = soup_uri_new("http://127.0.0.1/");
+ soup_uri_set_port(base_uri, soup_server_get_port(server));
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add("/webkit/loading/status",
+ WebLoadingFixture, NULL,
+ web_loading_fixture_setup,
+ test_loading_status,
+ web_loading_fixture_teardown);
+ g_test_add("/webkit/loading/error",
+ WebLoadingFixture, NULL,
+ web_loading_fixture_setup,
+ test_loading_error,
+ web_loading_fixture_teardown);
+ g_test_add("/webkit/loading/cancelled",
+ WebLoadingFixture, NULL,
+ web_loading_fixture_setup,
+ test_loading_cancelled,
+ web_loading_fixture_teardown);
+ g_test_add("/webkit/loading/goback",
+ WebLoadingFixture, NULL,
+ web_loading_fixture_setup,
+ test_loading_goback,
+ web_loading_fixture_teardown);
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testmimehandling.c b/Source/WebKit/gtk/tests/testmimehandling.c
new file mode 100644
index 0000000..41e170a
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testmimehandling.c
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2009 Jan Michael Alonzo
+ * Copyright (C) 2009 Gustavo Noronha Silva
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "test_utils.h"
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <libsoup/soup.h>
+#include <string.h>
+#include <webkit/webkit.h>
+#include <unistd.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+GMainLoop* loop;
+SoupSession *session;
+char* base_uri;
+
+/* For real request testing */
+static void
+server_callback(SoupServer *server, SoupMessage *msg,
+ const char *path, GHashTable *query,
+ SoupClientContext *context, gpointer data)
+{
+ if (msg->method != SOUP_METHOD_GET) {
+ soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status(msg, SOUP_STATUS_OK);
+
+ /* PDF */
+ if (g_str_equal(path, "/pdf")) {
+ char* contents;
+ gsize length;
+ GError* error = NULL;
+
+ g_file_get_contents("test.pdf", &contents, &length, &error);
+ g_assert(!error);
+
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
+ } else if (g_str_equal(path, "/html")) {
+ char* contents;
+ gsize length;
+ GError* error = NULL;
+
+ g_file_get_contents("test.html", &contents, &length, &error);
+ g_assert(!error);
+
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
+ } else if (g_str_equal(path, "/text")) {
+ char* contents;
+ gsize length;
+ GError* error = NULL;
+
+ soup_message_headers_append(msg->response_headers, "Content-Disposition", "attachment; filename=test.txt");
+
+ g_file_get_contents("test.txt", &contents, &length, &error);
+ g_assert(!error);
+
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
+ } else if (g_str_equal(path, "/ogg")) {
+ char* contents;
+ gsize length;
+ GError* error = NULL;
+
+ g_file_get_contents("test.ogg", &contents, &length, &error);
+ g_assert(!error);
+
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
+ }
+
+ soup_message_body_complete(msg->response_body);
+}
+
+static void idle_quit_loop_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+ if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED ||
+ webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FAILED)
+ g_main_loop_quit(loop);
+}
+
+static gboolean mime_type_policy_decision_requested_cb(WebKitWebView* view, WebKitWebFrame* frame,
+ WebKitNetworkRequest* request, const char* mime_type,
+ WebKitWebPolicyDecision* decision, gpointer data)
+{
+ char* type = (char*)data;
+
+ if (g_str_equal(type, "pdf")) {
+ g_assert_cmpstr(mime_type, ==, "application/pdf");
+ g_assert(!webkit_web_view_can_show_mime_type(view, mime_type));
+ } else if (g_str_equal(type, "html")) {
+ g_assert_cmpstr(mime_type, ==, "text/html");
+ g_assert(webkit_web_view_can_show_mime_type(view, mime_type));
+ } else if (g_str_equal(type, "text")) {
+ WebKitNetworkResponse* response = webkit_web_frame_get_network_response(frame);
+ SoupMessage* message = webkit_network_response_get_message(response);
+ char* disposition;
+
+ g_assert(message);
+ soup_message_headers_get_content_disposition(message->response_headers,
+ &disposition, NULL);
+ g_object_unref(response);
+
+ g_assert_cmpstr(disposition, ==, "attachment");
+ g_free(disposition);
+
+ g_assert_cmpstr(mime_type, ==, "text/plain");
+ g_assert(webkit_web_view_can_show_mime_type(view, mime_type));
+ } else if (g_str_equal(type, "ogg")) {
+ g_assert_cmpstr(mime_type, ==, "audio/x-vorbis+ogg");
+ g_assert(webkit_web_view_can_show_mime_type(view, mime_type));
+ }
+
+ g_free(type);
+
+ return FALSE;
+}
+
+static void testRemoteMimeType(const void* data)
+{
+ const char* name = (const char*) data;
+ WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(G_OBJECT(view));
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_object_connect(G_OBJECT(view),
+ "signal::notify::load-status", idle_quit_loop_cb, NULL,
+ "signal::mime-type-policy-decision-requested", mime_type_policy_decision_requested_cb, g_strdup(name),
+ NULL);
+
+ char* effective_uri = g_strdup_printf("%s%s", base_uri, name);
+ webkit_web_view_load_uri(view, effective_uri);
+ g_free(effective_uri);
+
+ g_main_loop_run(loop);
+
+ g_object_unref(view);
+}
+
+static void testLocalMimeType(const void* data)
+{
+ const char* typeName = (const char*) data;
+ WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(G_OBJECT(view));
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_object_connect(G_OBJECT(view),
+ "signal::notify::load-status", idle_quit_loop_cb, NULL,
+ "signal::mime-type-policy-decision-requested", mime_type_policy_decision_requested_cb, g_strdup(typeName),
+ NULL);
+
+ gchar* filename = g_strdup_printf("test.%s", typeName);
+ GFile* file = g_file_new_for_path(filename);
+ g_free(filename);
+
+ gchar* fileURI = g_file_get_uri(file);
+ g_object_unref(file);
+
+ webkit_web_view_load_uri(view, fileURI);
+ g_free(fileURI);
+
+ g_main_loop_run(loop);
+ g_object_unref(view);
+}
+
+int main(int argc, char** argv)
+{
+ SoupServer* server;
+ SoupURI* soup_uri;
+
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ /* Hopefully make test independent of the path it's called from. */
+ testutils_relative_chdir("Source/WebKit/gtk/tests/resources/test.html", argv[0]);
+
+ server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
+ soup_server_run_async(server);
+
+ soup_server_add_handler(server, NULL, server_callback, NULL, NULL);
+
+ soup_uri = soup_uri_new("http://127.0.0.1/");
+ soup_uri_set_port(soup_uri, soup_server_get_port(server));
+
+ base_uri = soup_uri_to_string(soup_uri, FALSE);
+ soup_uri_free(soup_uri);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_data_func("/webkit/mime/remote-PDF", "pdf", testRemoteMimeType);
+ g_test_add_data_func("/webkit/mime/remote-HTML", "html", testRemoteMimeType);
+ g_test_add_data_func("/webkit/mime/remote-TEXT", "text", testRemoteMimeType);
+ g_test_add_data_func("/webkit/mime/remote-OGG", "ogg", testRemoteMimeType);
+ g_test_add_data_func("/webkit/mime/local-PDF", "pdf", testLocalMimeType);
+ g_test_add_data_func("/webkit/mime/local-HTML", "html", testLocalMimeType);
+ g_test_add_data_func("/webkit/mime/local-TEXT", "text", testLocalMimeType);
+ g_test_add_data_func("/webkit/mime/local-OGG", "ogg", testLocalMimeType);
+
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testnetworkrequest.c b/Source/WebKit/gtk/tests/testnetworkrequest.c
new file mode 100644
index 0000000..fb6ec41
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testnetworkrequest.c
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2009 Gustavo Noronha Silva
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static void test_network_request_create_destroy()
+{
+ WebKitNetworkRequest* request;
+ SoupMessage* message;
+
+ /* Test creation with URI */
+ request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", "http://debian.org/", NULL));
+ g_assert(WEBKIT_IS_NETWORK_REQUEST(request));
+ message = webkit_network_request_get_message(request);
+ g_assert(!message);
+ g_object_unref(request);
+
+ /* Test creation with SoupMessage */
+ message = soup_message_new("GET", "http://debian.org/");
+ request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, NULL));
+ g_assert(WEBKIT_IS_NETWORK_REQUEST(request));
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2);
+ g_object_unref(request);
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1);
+ g_object_unref(message);
+
+ /* Test creation with both SoupMessage and URI */
+ message = soup_message_new("GET", "http://debian.org/");
+ request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, "uri", "http://gnome.org/", NULL));
+ g_assert(WEBKIT_IS_NETWORK_REQUEST(request));
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2);
+ g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://gnome.org/");
+ g_object_unref(request);
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1);
+ g_object_unref(message);
+}
+
+static void test_network_request_properties()
+{
+ WebKitNetworkRequest* request;
+ SoupMessage* message;
+ gchar* soupURI;
+
+ /* Test URI is set correctly when creating with URI */
+ request = webkit_network_request_new("http://debian.org/");
+ g_assert(WEBKIT_IS_NETWORK_REQUEST(request));
+ g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://debian.org/");
+ g_object_unref(request);
+
+ /* Test URI is set correctly when creating with Message */
+ message = soup_message_new("GET", "http://debian.org/");
+ request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", message, NULL));
+ g_assert(WEBKIT_IS_NETWORK_REQUEST(request));
+ g_object_unref(message);
+
+ message = webkit_network_request_get_message(request);
+ soupURI = soup_uri_to_string(soup_message_get_uri(message), FALSE);
+ g_assert_cmpstr(soupURI, ==, "http://debian.org/");
+ g_free(soupURI);
+
+ g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://debian.org/");
+ g_object_unref(request);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/networkrequest/createdestroy", test_network_request_create_destroy);
+ g_test_add_func("/webkit/networkrequest/properties", test_network_request_properties);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testnetworkresponse.c b/Source/WebKit/gtk/tests/testnetworkresponse.c
new file mode 100644
index 0000000..90062c6
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testnetworkresponse.c
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 2009 Gustavo Noronha Silva
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <stdlib.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static void test_network_response_create_destroy()
+{
+ WebKitNetworkResponse* response;
+ SoupMessage* message;
+
+ /* Test creation with URI */
+ response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "uri", "http://debian.org/", NULL));
+ g_assert(WEBKIT_IS_NETWORK_RESPONSE(response));
+ message = webkit_network_response_get_message(response);
+ g_assert(!message);
+ g_object_unref(response);
+
+ /* Test creation with SoupMessage */
+ message = soup_message_new("GET", "http://debian.org/");
+ response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", message, NULL));
+ g_assert(WEBKIT_IS_NETWORK_RESPONSE(response));
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2);
+ g_object_unref(response);
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1);
+ g_object_unref(message);
+
+ /* Test creation with both SoupMessage and URI */
+ message = soup_message_new("GET", "http://debian.org/");
+ response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", message, "uri", "http://gnome.org/", NULL));
+ g_assert(WEBKIT_IS_NETWORK_RESPONSE(response));
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 2);
+ g_assert_cmpstr(webkit_network_response_get_uri(response), ==, "http://gnome.org/");
+ g_object_unref(response);
+ g_assert_cmpint(G_OBJECT(message)->ref_count, ==, 1);
+ g_object_unref(message);
+}
+
+static void test_network_response_properties()
+{
+ WebKitNetworkResponse* response;
+ SoupMessage* message;
+ gchar* soupURI;
+
+ /* Test URI is set correctly when creating with URI */
+ response = webkit_network_response_new("http://debian.org/");
+ g_assert(WEBKIT_IS_NETWORK_RESPONSE(response));
+ g_assert_cmpstr(webkit_network_response_get_uri(response), ==, "http://debian.org/");
+ g_object_unref(response);
+
+ /* Test URI is set correctly when creating with Message */
+ message = soup_message_new("GET", "http://debian.org/");
+ response = WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", message, NULL));
+ g_assert(WEBKIT_IS_NETWORK_RESPONSE(response));
+ g_object_unref(message);
+
+ message = webkit_network_response_get_message(response);
+ soupURI = soup_uri_to_string(soup_message_get_uri(message), FALSE);
+ g_assert_cmpstr(soupURI, ==, "http://debian.org/");
+ g_free(soupURI);
+
+ g_assert_cmpstr(webkit_network_response_get_uri(response), ==, "http://debian.org/");
+ g_object_unref(response);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/networkresponse/createdestroy", test_network_response_create_destroy);
+ g_test_add_func("/webkit/networkresponse/properties", test_network_response_properties);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebbackforwardlist.c b/Source/WebKit/gtk/tests/testwebbackforwardlist.c
new file mode 100644
index 0000000..b9e395e
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebbackforwardlist.c
@@ -0,0 +1,337 @@
+/*
+ * Copyright (C) 2008 Holger Hans Peter Freyther
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static void test_webkit_web_history_item_lifetime(void)
+{
+ WebKitWebView* webView;
+ WebKitWebBackForwardList* backForwardList;
+ WebKitWebHistoryItem* currentItem;
+ WebKitWebHistoryItem* forwardItem;
+ WebKitWebHistoryItem* backItem;
+ WebKitWebHistoryItem* nthItem;
+ WebKitWebHistoryItem* item1;
+ WebKitWebHistoryItem* item2;
+ WebKitWebHistoryItem* item3;
+ WebKitWebHistoryItem* item4;
+ GList* backList = NULL;
+ GList* forwardList = NULL;
+ g_test_bug("19898");
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ backForwardList = webkit_web_view_get_back_forward_list(webView);
+ g_assert_cmpint(G_OBJECT(backForwardList)->ref_count, ==, 1);
+
+ /* add test items */
+ item1 = webkit_web_history_item_new_with_data("http://example.com/1/", "Site 1");
+ webkit_web_back_forward_list_add_item(backForwardList, item1);
+ g_object_unref(item1);
+
+ item2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Site 2");
+ webkit_web_back_forward_list_add_item(backForwardList, item2);
+ g_object_unref(item2);
+
+ item3 = webkit_web_history_item_new_with_data("http://example.com/3/", "Site 3");
+ webkit_web_back_forward_list_add_item(backForwardList, item3);
+ g_object_unref(item3);
+
+ item4 = webkit_web_history_item_new_with_data("http://example.com/4/", "Site 4");
+ webkit_web_back_forward_list_add_item(backForwardList, item4);
+ g_object_unref(item4);
+
+ /* make sure these functions don't add unnecessary ref to the history item */
+ backItem = webkit_web_back_forward_list_get_back_item(backForwardList);
+ g_object_ref(backItem);
+ g_assert_cmpint(G_OBJECT(backItem)->ref_count, ==, 2);
+ g_object_unref(backItem);
+ g_assert_cmpint(G_OBJECT(backItem)->ref_count, ==, 1);
+
+ currentItem = webkit_web_back_forward_list_get_current_item(backForwardList);
+ g_object_ref(currentItem);
+ g_assert_cmpint(G_OBJECT(currentItem)->ref_count, ==, 2);
+ g_object_unref(currentItem);
+ g_assert_cmpint(G_OBJECT(currentItem)->ref_count, ==, 1);
+
+ webkit_web_back_forward_list_go_to_item(backForwardList, item2);
+ forwardItem = webkit_web_back_forward_list_get_forward_item(backForwardList);
+ g_object_ref(forwardItem);
+ g_assert_cmpint(G_OBJECT(forwardItem)->ref_count, ==, 2);
+ g_object_unref(forwardItem);
+ g_assert_cmpint(G_OBJECT(forwardItem)->ref_count, ==, 1);
+
+ nthItem = webkit_web_back_forward_list_get_nth_item(backForwardList, 1);
+ g_object_ref(nthItem);
+ g_assert_cmpint(G_OBJECT(nthItem)->ref_count, ==, 2);
+ g_object_unref(nthItem);
+ g_assert_cmpint(G_OBJECT(nthItem)->ref_count, ==, 1);
+
+ backList = webkit_web_back_forward_list_get_back_list_with_limit(backForwardList, 5);
+ for (; backList; backList = backList->next)
+ g_assert_cmpint(G_OBJECT(backList->data)->ref_count, ==, 1);
+
+ forwardList = webkit_web_back_forward_list_get_forward_list_with_limit(backForwardList, 5);
+ for (; forwardList; forwardList = forwardList->next)
+ g_assert_cmpint(G_OBJECT(forwardList->data)->ref_count, ==, 1);
+
+ g_list_free(forwardList);
+ g_list_free(backList);
+ g_assert_cmpint(G_OBJECT(item1)->ref_count, ==, 1);
+ g_assert_cmpint(G_OBJECT(item2)->ref_count, ==, 1);
+ g_assert_cmpint(G_OBJECT(item3)->ref_count, ==, 1);
+ g_assert_cmpint(G_OBJECT(item4)->ref_count, ==, 1);
+ g_assert_cmpint(G_OBJECT(backForwardList)->ref_count, ==, 1);
+ g_object_unref(webView);
+}
+
+static void test_webkit_web_back_forward_list_order(void)
+{
+ WebKitWebView* webView;
+ WebKitWebBackForwardList* webBackForwardList;
+ WebKitWebHistoryItem* item1;
+ WebKitWebHistoryItem* item2;
+ WebKitWebHistoryItem* item3;
+ WebKitWebHistoryItem* item4;
+ WebKitWebHistoryItem* currentItem;
+ GList* backList = NULL;
+ GList* forwardList = NULL;
+ g_test_bug("22694");
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+
+ webkit_web_view_set_maintains_back_forward_list(webView, TRUE);
+ webBackForwardList = webkit_web_view_get_back_forward_list(webView);
+ g_assert(webBackForwardList);
+
+ // Check that there is no item.
+ g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList));
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0);
+ g_assert(!webkit_web_view_can_go_forward(webView));
+ g_assert(!webkit_web_view_can_go_back(webView));
+
+ // Add a new items
+ item1 = webkit_web_history_item_new_with_data("http://example.com/1/", "Site 1");
+ webkit_web_back_forward_list_add_item(webBackForwardList, item1);
+ g_object_unref(item1);
+ g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item1));
+
+ item2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Site 2");
+ webkit_web_back_forward_list_add_item(webBackForwardList, item2);
+ g_object_unref(item2);
+ g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item2));
+
+ item3 = webkit_web_history_item_new_with_data("http://example.com/3/", "Site 3");
+ webkit_web_back_forward_list_add_item(webBackForwardList, item3);
+ g_object_unref(item3);
+ g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item3));
+
+ item4 = webkit_web_history_item_new_with_data("http://example.com/4/", "Site 4");
+ webkit_web_back_forward_list_add_item(webBackForwardList, item4);
+ g_object_unref(item4);
+ g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, item4));
+
+ // check the back list order
+ backList = webkit_web_back_forward_list_get_back_list_with_limit(webBackForwardList, 5);
+ g_assert(backList);
+
+ currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data);
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/3/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 3");
+ backList = backList->next;
+
+ currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data);
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 2");
+ backList = backList->next;
+
+ currentItem = WEBKIT_WEB_HISTORY_ITEM(backList->data);
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/1/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 1");
+ g_list_free(backList);
+
+ // check the forward list order
+ g_assert(webkit_web_view_go_to_back_forward_item(webView, item1));
+ forwardList = webkit_web_back_forward_list_get_forward_list_with_limit(webBackForwardList,5);
+ g_assert(forwardList);
+
+ currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data);
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/4/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 4");
+ forwardList = forwardList->next;
+
+ currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data);
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/3/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 3");
+ forwardList = forwardList->next;
+
+ currentItem = WEBKIT_WEB_HISTORY_ITEM(forwardList->data);
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Site 2");
+
+ g_list_free(forwardList);
+ g_object_unref(webView);
+}
+
+static void test_webkit_web_back_forward_list_add_item(void)
+{
+ WebKitWebView* webView;
+ WebKitWebBackForwardList* webBackForwardList;
+ WebKitWebHistoryItem* addItem1;
+ WebKitWebHistoryItem* addItem2;
+ WebKitWebHistoryItem* backItem;
+ WebKitWebHistoryItem* currentItem;
+ g_test_bug("22988");
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+
+ webkit_web_view_set_maintains_back_forward_list(webView, TRUE);
+ webBackForwardList = webkit_web_view_get_back_forward_list(webView);
+ g_assert(webBackForwardList);
+
+ // Check that there is no item.
+ g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList));
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0);
+ g_assert(!webkit_web_view_can_go_forward(webView));
+ g_assert(!webkit_web_view_can_go_back(webView));
+
+ // Add a new item
+ addItem1 = webkit_web_history_item_new_with_data("http://example.com/", "Added site");
+ webkit_web_back_forward_list_add_item(webBackForwardList, addItem1);
+ g_object_unref(addItem1);
+ g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem1));
+
+ // Check that the added item is the current item.
+ currentItem = webkit_web_back_forward_list_get_current_item(webBackForwardList);
+ g_assert(currentItem);
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0);
+ g_assert(!webkit_web_view_can_go_forward(webView));
+ g_assert(!webkit_web_view_can_go_back(webView));
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Added site");
+
+ // Add another item.
+ addItem2 = webkit_web_history_item_new_with_data("http://example.com/2/", "Added site 2");
+ webkit_web_back_forward_list_add_item(webBackForwardList, addItem2);
+ g_object_unref(addItem2);
+ g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem2));
+
+ // Check that the added item is new current item.
+ currentItem = webkit_web_back_forward_list_get_current_item(webBackForwardList);
+ g_assert(currentItem);
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 1);
+ g_assert(!webkit_web_view_can_go_forward(webView));
+ g_assert(webkit_web_view_can_go_back(webView));
+ g_assert_cmpstr(webkit_web_history_item_get_uri(currentItem), ==, "http://example.com/2/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(currentItem), ==, "Added site 2");
+
+ backItem = webkit_web_back_forward_list_get_back_item(webBackForwardList);
+ g_assert(backItem);
+ g_assert_cmpstr(webkit_web_history_item_get_uri(backItem), ==, "http://example.com/");
+ g_assert_cmpstr(webkit_web_history_item_get_title(backItem), ==, "Added site");
+
+ // Go to the first added item.
+ g_assert(webkit_web_view_go_to_back_forward_item(webView, addItem1));
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 1);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0);
+ g_assert(webkit_web_view_can_go_forward(webView));
+ g_assert(!webkit_web_view_can_go_back(webView));
+
+ g_object_unref(webView);
+}
+
+static void test_webkit_web_back_forward_list_clear(void)
+{
+ WebKitWebView* webView;
+ WebKitWebBackForwardList* webBackForwardList;
+ WebKitWebHistoryItem* addItem;
+ g_test_bug("36173");
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+
+ webBackForwardList = webkit_web_view_get_back_forward_list(webView);
+ g_assert(webBackForwardList);
+
+ // Check that there is no item.
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0);
+ g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList));
+ g_assert(!webkit_web_view_can_go_forward(webView));
+ g_assert(!webkit_web_view_can_go_back(webView));
+
+ // Check that clearing the empty list does not modify counters
+ webkit_web_back_forward_list_clear(webBackForwardList);
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0);
+ g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList));
+ g_assert(!webkit_web_view_can_go_forward(webView));
+ g_assert(!webkit_web_view_can_go_back(webView));
+
+ // Add a new item
+ addItem = webkit_web_history_item_new_with_data("http://example.com/", "Added site");
+ webkit_web_back_forward_list_add_item(webBackForwardList, addItem);
+ g_object_unref(addItem);
+ g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem));
+
+ // Check that after clearing the list the added item is no longer in the list
+ webkit_web_back_forward_list_clear(webBackForwardList);
+ g_assert(!webkit_web_back_forward_list_contains_item(webBackForwardList, addItem));
+
+ // Check that after clearing it, the list is empty
+ g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0);
+ g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0);
+ g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList));
+ g_assert(!webkit_web_view_can_go_forward(webView));
+ g_assert(!webkit_web_view_can_go_back(webView));
+
+ g_object_unref(webView);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/webbackforwardlist/add_item", test_webkit_web_back_forward_list_add_item);
+ g_test_add_func("/webkit/webbackforwardlist/list_order", test_webkit_web_back_forward_list_order);
+ g_test_add_func("/webkit/webhistoryitem/lifetime", test_webkit_web_history_item_lifetime);
+ g_test_add_func("/webkit/webbackforwardlist/clear", test_webkit_web_back_forward_list_clear);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebdatasource.c b/Source/WebKit/gtk/tests/testwebdatasource.c
new file mode 100644
index 0000000..96d95e4
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebdatasource.c
@@ -0,0 +1,253 @@
+/*
+ * Copyright (C) 2009 Jan Michael Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static const gshort defaultTimeout = 10;
+guint waitTimer;
+gboolean shouldWait;
+
+typedef struct {
+ WebKitWebView* webView;
+ WebKitWebFrame* mainFrame;
+} WebDataSourceFixture;
+
+static void test_webkit_web_data_source_get_initial_request()
+{
+ WebKitWebView* view;
+ WebKitWebFrame* frame;
+ WebKitWebDataSource* dataSource;
+ WebKitNetworkRequest* initialRequest;
+
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(view);
+ frame = webkit_web_view_get_main_frame(view);
+
+ WebKitNetworkRequest* request = webkit_network_request_new("http://www.google.com");
+ webkit_web_frame_load_request(frame, request);
+ g_object_unref(request);
+
+ dataSource = webkit_web_frame_get_provisional_data_source(frame);
+ g_assert(dataSource);
+ initialRequest = webkit_web_data_source_get_initial_request(dataSource);
+ g_assert_cmpstr(webkit_network_request_get_uri(initialRequest), ==, "http://www.google.com/");
+
+ g_object_unref(view);
+}
+
+static void notify_load_status_unreachable_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status (view);
+ WebKitWebFrame* frame = webkit_web_view_get_main_frame(view);
+
+ g_assert(status != WEBKIT_LOAD_FINISHED);
+
+ if (status != WEBKIT_LOAD_FAILED)
+ return;
+
+ WebKitWebDataSource* datasource = webkit_web_frame_get_data_source(frame);
+
+ g_assert_cmpstr("http://this.host.does.not.exist/doireallyexist.html", ==,
+ webkit_web_data_source_get_unreachable_uri(datasource));
+
+ g_main_loop_quit(loop);
+}
+
+static void notify_load_status_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status (view);
+ WebKitWebFrame* frame = webkit_web_view_get_main_frame(view);
+ WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(frame);
+
+ if (status == WEBKIT_LOAD_COMMITTED) {
+ g_assert(webkit_web_data_source_is_loading(dataSource));
+ return;
+ }
+ else if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ /* Test get_request */
+ g_test_message("Testing webkit_web_data_source_get_request");
+ WebKitNetworkRequest* request = webkit_web_data_source_get_request(dataSource);
+ g_assert_cmpstr(webkit_network_request_get_uri(request), ==, "http://webkit.org/");
+
+ /* Test get_main_resource */
+ g_test_message("Testing webkit_web_data_source_get_main_resource");
+ WebKitWebResource* resource = webkit_web_data_source_get_main_resource(dataSource);
+ g_assert_cmpstr("text/html", ==, webkit_web_resource_get_mime_type(resource));
+ g_assert_cmpstr("http://webkit.org/", ==, webkit_web_resource_get_uri(resource));
+
+ /* Test get_data. We just test if data has certain size for the mean time */
+ g_test_message("Testing webkit_web_data_source_get_data has certain size");
+ GString* data = webkit_web_data_source_get_data(dataSource);
+ g_assert(data->len > 100);
+
+ /* FIXME: Add test for get_encoding */
+
+ g_main_loop_quit(loop);
+}
+
+static gboolean wait_timer_fired(GMainLoop* loop)
+{
+ waitTimer = 0;
+ g_main_loop_quit(loop);
+
+ return FALSE;
+}
+
+static void test_webkit_web_data_source()
+{
+ WebKitWebView* view;
+ GMainLoop* loop;
+
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(view);
+ loop = g_main_loop_new(NULL, TRUE);
+ g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_cb), loop);
+ webkit_web_view_load_uri(view, "http://webkit.org");
+
+ waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
+
+ g_main_loop_run(loop);
+
+ if (waitTimer)
+ g_source_remove(waitTimer);
+
+ waitTimer = 0;
+
+ g_main_loop_unref(loop);
+ g_object_unref(view);
+}
+
+static void notify_load_status_lifetime_cb(WebKitWebView* view, GParamSpec* pspec, GMainLoop* loop)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status (view);
+ WebKitWebFrame* frame = webkit_web_view_get_main_frame(view);
+ WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(frame);
+
+ if (status == WEBKIT_LOAD_COMMITTED) {
+ g_assert(webkit_web_data_source_is_loading(dataSource));
+ return;
+ } else if (status != WEBKIT_LOAD_FINISHED)
+ return;
+
+ g_main_loop_quit(loop);
+}
+
+static void test_webkit_web_data_source_lifetime()
+{
+ WebKitWebView* view;
+ GMainLoop* loop;
+
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(view);
+ loop = g_main_loop_new(NULL, TRUE);
+ g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_lifetime_cb), loop);
+ webkit_web_view_load_uri(view, "http://webkit.org");
+
+ waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
+
+ g_main_loop_run(loop);
+
+ WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(webkit_web_view_get_main_frame(view));
+ GList* subResources = webkit_web_data_source_get_subresources(dataSource);
+ gint numberOfResources = g_list_length(subResources);
+ g_list_free(subResources);
+
+ g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FINISHED);
+
+ webkit_web_view_load_uri(view, "http://gnome.org");
+
+ g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_PROVISIONAL);
+
+ webkit_web_view_stop_loading(view);
+
+ g_assert_cmpint(webkit_web_view_get_load_status(view), ==, WEBKIT_LOAD_FAILED);
+
+ subResources = webkit_web_data_source_get_subresources(dataSource);
+ g_assert_cmpint(numberOfResources, ==, g_list_length(subResources));
+ g_list_free(subResources);
+
+ if (waitTimer)
+ g_source_remove(waitTimer);
+
+ waitTimer = 0;
+
+ g_main_loop_unref(loop);
+ g_object_unref(view);
+}
+
+static void test_webkit_web_data_source_unreachable_uri()
+{
+ /* FIXME: this test fails currently. */
+ return;
+
+ WebKitWebView* view;
+ GMainLoop* loop;
+
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(view);
+ loop = g_main_loop_new(NULL, TRUE);
+ g_signal_connect(view, "notify::load-status", G_CALLBACK(notify_load_status_unreachable_cb), loop);
+ webkit_web_view_load_uri(view, "http://this.host.does.not.exist/doireallyexist.html");
+
+ waitTimer = g_timeout_add_seconds(defaultTimeout, (GSourceFunc)wait_timer_fired, loop);
+
+ g_main_loop_run(loop);
+
+ if (waitTimer)
+ g_source_remove(waitTimer);
+
+ waitTimer = 0;
+
+ g_main_loop_unref(loop);
+ g_object_unref(view);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_bug("24758");
+ g_test_add_func("/webkit/webdatasource/get_initial_request",
+ test_webkit_web_data_source_get_initial_request);
+ g_test_add_func("/webkit/webdatasource/api",
+ test_webkit_web_data_source);
+ g_test_add_func("/webkit/webdatasource/unreachable_uri",
+ test_webkit_web_data_source_unreachable_uri);
+ g_test_add_func("/webkit/webdatasource/lifetime",
+ test_webkit_web_data_source_lifetime);
+
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebframe.c b/Source/WebKit/gtk/tests/testwebframe.c
new file mode 100644
index 0000000..d1ff7ea
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebframe.c
@@ -0,0 +1,231 @@
+/*
+ * Copyright (C) 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <unistd.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static int numberOfFramesCreated = 0;
+
+static void createFrameSignalTestFrameCreatedCallback(WebKitWebView* webView, WebKitWebFrame* frame, gpointer data)
+{
+ numberOfFramesCreated++;
+}
+
+static gboolean createFrameSignalTestTimeout(gpointer data)
+{
+ g_assert_cmpint(numberOfFramesCreated, ==, 2);
+ g_main_loop_quit((GMainLoop*) data);
+ return FALSE;
+}
+
+static void test_webkit_web_frame_created_signal(void)
+{
+ GtkWidget* webView;
+ GtkWidget* window;
+ GMainLoop* loop = g_main_loop_new(NULL, TRUE);
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+
+ webView = webkit_web_view_new();
+ g_signal_connect(webView, "frame-created", G_CALLBACK(createFrameSignalTestFrameCreatedCallback), loop);
+
+ // We want to ensure that exactly two create-frame signals are
+ // fired and no more, so we set a timeout here. There does not appear
+ // to be a simple way via the API to figure out when all frames have
+ // loaded.
+ g_timeout_add(500, createFrameSignalTestTimeout, loop);
+
+ gtk_container_add(GTK_CONTAINER(window), webView);
+ gtk_widget_show(window);
+ gtk_widget_show(webView);
+
+ webkit_web_view_load_string(WEBKIT_WEB_VIEW(webView),
+ "<html><body>Frames!"
+ "<iframe></iframe>"
+ "<iframe></iframe>"
+ "</body></html>",
+ "text/html", "utf-8", "file://");
+ g_main_loop_run(loop);
+}
+
+static void test_webkit_web_frame_create_destroy(void)
+{
+ GtkWidget *webView;
+ GtkWidget *window;
+
+ g_test_bug("21837");
+ webView = webkit_web_view_new();
+ g_object_ref_sink(webView);
+ g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1);
+ // This crashed with the original version
+ g_object_unref(webView);
+
+ g_test_bug("25042");
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ webView = webkit_web_view_new();
+ gtk_container_add(GTK_CONTAINER(window), webView);
+ gtk_widget_show(window);
+ gtk_widget_show(webView);
+ gtk_widget_destroy(webView);
+}
+
+static void test_webkit_web_frame_lifetime(void)
+{
+ WebKitWebView* webView;
+ WebKitWebFrame* webFrame;
+ g_test_bug("21837");
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1);
+ webFrame = webkit_web_view_get_main_frame(webView);
+ g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1);
+
+ // Add dummy reference on the WebKitWebFrame to keep it alive
+ g_object_ref(webFrame);
+ g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 2);
+
+ // This crashed with the original version
+ g_object_unref(webView);
+
+ // Make sure that the frame got deleted as well. We did this
+ // by adding an extra ref on the WebKitWebFrame and we should
+ // be the one holding the last reference.
+ g_assert_cmpint(G_OBJECT(webFrame)->ref_count, ==, 1);
+ g_object_unref(webFrame);
+}
+
+static gboolean print_requested_cb(WebKitWebView* webView, WebKitWebFrame* webFrame, GMainLoop* loop)
+{
+ g_object_set_data(G_OBJECT(webView), "signal-handled", GINT_TO_POINTER(TRUE));
+ g_main_loop_quit(loop);
+ return TRUE;
+}
+
+static void print_timeout(GMainLoop* loop)
+{
+ if (g_main_loop_is_running(loop))
+ g_main_loop_quit(loop);
+}
+
+static void test_webkit_web_frame_printing(void)
+{
+ WebKitWebView* webView;
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ g_assert_cmpint(G_OBJECT(webView)->ref_count, ==, 1);
+
+ webkit_web_view_load_string(webView,
+ "<html><body><h1>WebKitGTK+!</h1></body></html>",
+ "text/html",
+ "utf-8",
+ "file://");
+
+ GMainLoop* loop = g_main_loop_new(NULL, TRUE);
+
+ // Does javascript print() work correctly?
+ g_signal_connect(webView, "print-requested",
+ G_CALLBACK(print_requested_cb),
+ loop);
+
+ g_object_set_data(G_OBJECT(webView), "signal-handled", GINT_TO_POINTER(FALSE));
+ webkit_web_view_execute_script (webView, "print();");
+
+ // Give javascriptcore some time to process the print request, but
+ // prepare a timeout to avoid it running forever in case the signal is
+ // never emitted.
+ g_timeout_add(1000, (GSourceFunc)print_timeout, loop);
+ g_main_loop_run(loop);
+
+ g_assert_cmpint(GPOINTER_TO_INT(g_object_get_data(G_OBJECT(webView), "signal-handled")), ==, TRUE);
+
+ // Does printing directly to a file?
+ GError *error = NULL;
+ gchar* temporaryFilename = NULL;
+ gint fd = g_file_open_tmp ("webkit-testwebframe-XXXXXX", &temporaryFilename, &error);
+ close(fd);
+
+ if (error) {
+ g_critical("Failed to open a temporary file for writing: %s.", error->message);
+ g_error_free(error);
+ goto cleanup;
+ }
+
+ // We delete the file, so that we can easily figure out that the
+ // file got printed;
+ if (g_unlink(temporaryFilename) == -1) {
+ g_warning("Failed to delete the temporary file: %s.\nThis may cause the test to be bogus.", g_strerror(errno));
+ }
+
+ WebKitWebFrame* webFrame = webkit_web_view_get_main_frame(webView);
+ GtkPrintOperation* operation = gtk_print_operation_new();
+ GtkPrintOperationAction action = GTK_PRINT_OPERATION_ACTION_EXPORT;
+ GtkPrintOperationResult result;
+
+ gtk_print_operation_set_export_filename(operation, temporaryFilename);
+ result = webkit_web_frame_print_full (webFrame, operation, action, NULL);
+
+ g_assert_cmpint(result, ==, GTK_PRINT_OPERATION_RESULT_APPLY);
+ g_assert_cmpint(g_file_test(temporaryFilename, G_FILE_TEST_IS_REGULAR), ==, TRUE);
+
+ g_unlink(temporaryFilename);
+ g_object_unref(operation);
+cleanup:
+ g_object_unref(webView);
+ g_free(temporaryFilename);
+}
+
+static void test_webkit_web_frame_response()
+{
+ WebKitWebFrame* frame = g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL);
+ WebKitNetworkResponse* response = webkit_web_frame_get_network_response(frame);
+ g_assert(!response);
+ g_object_unref(frame);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/webview/create_destroy", test_webkit_web_frame_create_destroy);
+ g_test_add_func("/webkit/webview/frame-created_signal", test_webkit_web_frame_created_signal);
+ g_test_add_func("/webkit/webframe/lifetime", test_webkit_web_frame_lifetime);
+ g_test_add_func("/webkit/webview/printing", test_webkit_web_frame_printing);
+ g_test_add_func("/webkit/webview/response", test_webkit_web_frame_response);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebhistoryitem.c b/Source/WebKit/gtk/tests/testwebhistoryitem.c
new file mode 100644
index 0000000..362dc98
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebhistoryitem.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2009 Jan Michael Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+typedef struct {
+ WebKitWebHistoryItem* item;
+} WebHistoryItemFixture;
+
+static void web_history_item_fixture_setup(WebHistoryItemFixture* fixture,
+ gconstpointer data)
+{
+ fixture->item = webkit_web_history_item_new_with_data("http://example.com/", "Example1");
+ g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, == , 1);
+ g_assert(fixture->item != NULL);
+}
+
+static void web_history_item_fixture_teardown(WebHistoryItemFixture* fixture,
+ gconstpointer data)
+{
+ g_assert(fixture->item != NULL);
+ g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, ==, 1);
+}
+
+static void test_webkit_web_history_item_get_data(WebHistoryItemFixture* fixture,
+ gconstpointer data)
+{
+ g_assert_cmpstr(webkit_web_history_item_get_title(fixture->item), ==, "Example1");
+ g_assert_cmpstr(webkit_web_history_item_get_uri(fixture->item), ==, "http://example.com/");
+}
+
+static void test_webkit_web_history_item_alternate_title(WebHistoryItemFixture* fixture,
+ gconstpointer data)
+{
+ webkit_web_history_item_set_alternate_title(fixture->item, "Alternate title");
+ g_assert_cmpstr(webkit_web_history_item_get_alternate_title(fixture->item), ==, "Alternate title");
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add("/webkit/webhistoryitem/get_data",
+ WebHistoryItemFixture, 0, web_history_item_fixture_setup,
+ test_webkit_web_history_item_get_data, web_history_item_fixture_teardown);
+ g_test_add("/webkit/webhistoryitem/alternate_title",
+ WebHistoryItemFixture, 0, web_history_item_fixture_setup,
+ test_webkit_web_history_item_alternate_title, web_history_item_fixture_teardown);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebplugindatabase.c b/Source/WebKit/gtk/tests/testwebplugindatabase.c
new file mode 100644
index 0000000..1366f84
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebplugindatabase.c
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <errno.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+/* This function is not public, so we need an extern declaration */
+extern void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* view, const gchar* directory);
+
+static void test_webkit_web_plugin_database_get_plugins()
+{
+ WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ WebKitWebPluginDatabase* database;
+ GSList* pluginList, *p;
+ gboolean found = FALSE;
+ gboolean enabled = FALSE;
+
+ webkit_web_settings_add_extra_plugin_directory(view, TEST_PLUGIN_DIR);
+ g_object_ref_sink(G_OBJECT(view));
+
+ database = webkit_get_web_plugin_database();
+ pluginList = webkit_web_plugin_database_get_plugins(database);
+ for (p = pluginList; p; p = p->next) {
+ WebKitWebPlugin* plugin = (WebKitWebPlugin*)p->data;
+ if (!g_strcmp0(webkit_web_plugin_get_name(plugin), "WebKit Test PlugIn") &&
+ !g_strcmp0(webkit_web_plugin_get_description(plugin), "Simple Netscape plug-in that handles test content for WebKit")) {
+ found = TRUE;
+ enabled = webkit_web_plugin_get_enabled(plugin);
+ webkit_web_plugin_set_enabled(plugin, FALSE);
+ }
+ }
+ webkit_web_plugin_database_plugins_list_free(pluginList);
+ g_assert(found);
+ g_assert(enabled);
+
+ webkit_web_plugin_database_refresh(database);
+ pluginList = webkit_web_plugin_database_get_plugins(database);
+
+ for (p = pluginList; p; p = p->next) {
+ WebKitWebPlugin* plugin = (WebKitWebPlugin*)p->data;
+ if (!g_strcmp0(webkit_web_plugin_get_name(plugin), "WebKit Test PlugIn") &&
+ !g_strcmp0(webkit_web_plugin_get_description(plugin), "Simple Netscape plug-in that handles test content for WebKit"))
+ enabled = webkit_web_plugin_get_enabled(plugin);
+ }
+ webkit_web_plugin_database_plugins_list_free(pluginList);
+ g_assert(!enabled);
+
+ g_object_unref(view);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/webplugindatabase/getplugins", test_webkit_web_plugin_database_get_plugins);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebresource.c b/Source/WebKit/gtk/tests/testwebresource.c
new file mode 100644
index 0000000..1b893a9
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebresource.c
@@ -0,0 +1,342 @@
+/*
+ * Copyright (C) 2009 Jan Michael Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+#include <string.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+#define INDEX_HTML "<html></html>"
+#define MAIN_HTML "<html><head><script language=\"javascript\" src=\"/javascript.js\"></script></head><body><h1>hah</h1></html>"
+#define JAVASCRIPT "function blah () { var a = 1; }"
+
+GMainLoop* loop;
+SoupSession *session;
+char *base_uri;
+WebKitWebResource* main_resource;
+WebKitWebResource* sub_resource;
+
+typedef struct {
+ WebKitWebResource* webResource;
+ WebKitWebView* webView;
+} WebResourceFixture;
+
+/* For real request testing */
+static void
+server_callback (SoupServer *server, SoupMessage *msg,
+ const char *path, GHashTable *query,
+ SoupClientContext *context, gpointer data)
+{
+ if (msg->method != SOUP_METHOD_GET) {
+ soup_message_set_status (msg, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status (msg, SOUP_STATUS_OK);
+
+ /* Redirect */
+ if (g_str_equal (path, "/")) {
+ soup_message_set_status (msg, SOUP_STATUS_MOVED_PERMANENTLY);
+
+ soup_message_headers_append (msg->response_headers,
+ "Location", "/index.html");
+ } else if (g_str_equal (path, "/index.html")) {
+ soup_message_body_append (msg->response_body,
+ SOUP_MEMORY_COPY,
+ INDEX_HTML,
+ strlen (INDEX_HTML));
+ } else if (g_str_equal (path, "/main.html")) {
+ soup_message_body_append (msg->response_body,
+ SOUP_MEMORY_COPY,
+ MAIN_HTML,
+ strlen (MAIN_HTML));
+ } else if (g_str_equal (path, "/javascript.js")) {
+ soup_message_body_append (msg->response_body,
+ SOUP_MEMORY_COPY,
+ JAVASCRIPT,
+ strlen (JAVASCRIPT));
+ }
+
+
+ soup_message_body_complete (msg->response_body);
+}
+
+static void web_resource_fixture_setup(WebResourceFixture* fixture, gconstpointer data)
+{
+ fixture->webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(fixture->webView);
+ const gchar* webData = "<html></html>";
+ fixture->webResource = webkit_web_resource_new(webData, strlen(webData), "http://example.com/", "text/html", "utf8", "Example.com");
+ g_assert(fixture->webResource);
+}
+
+static void web_resource_fixture_teardown(WebResourceFixture* fixture, gconstpointer data)
+{
+ g_assert(fixture->webResource);
+ g_object_unref(fixture->webResource);
+ g_object_unref(fixture->webView);
+}
+
+static void test_webkit_web_resource_get_url(WebResourceFixture* fixture, gconstpointer data)
+{
+ gchar* url;
+ g_object_get(G_OBJECT(fixture->webResource), "uri", &url, NULL);
+ g_assert_cmpstr(url, ==, "http://example.com/");
+ g_assert_cmpstr(webkit_web_resource_get_uri(fixture->webResource) ,==,"http://example.com/");
+ g_free(url);
+}
+
+static void test_webkit_web_resource_get_data(WebResourceFixture* fixture, gconstpointer data)
+{
+ GString* charData = webkit_web_resource_get_data(fixture->webResource);
+ g_assert_cmpstr(charData->str, ==, "<html></html>");
+}
+
+static void test_webkit_web_resource_get_mime_type(WebResourceFixture* fixture, gconstpointer data)
+{
+ gchar* mime_type;
+ g_object_get(G_OBJECT(fixture->webResource), "mime-type", &mime_type, NULL);
+ g_assert_cmpstr(mime_type, ==, "text/html");
+ g_assert_cmpstr(webkit_web_resource_get_mime_type(fixture->webResource),==,"text/html");
+ g_free(mime_type);
+}
+
+static void test_webkit_web_resource_get_encoding(WebResourceFixture* fixture, gconstpointer data)
+{
+ gchar* text_encoding;
+ g_object_get(G_OBJECT(fixture->webResource), "encoding", &text_encoding, NULL);
+ g_assert_cmpstr(text_encoding, ==, "utf8");
+ g_assert_cmpstr(webkit_web_resource_get_encoding(fixture->webResource),==,"utf8");
+ g_free(text_encoding);
+}
+
+static void test_webkit_web_resource_get_frame_name(WebResourceFixture* fixture, gconstpointer data)
+{
+ gchar* frame_name;
+ g_object_get(G_OBJECT(fixture->webResource), "frame-name", &frame_name, NULL);
+ g_assert_cmpstr(frame_name, ==, "Example.com");
+ g_assert_cmpstr(webkit_web_resource_get_frame_name(fixture->webResource),==,"Example.com");
+ g_free(frame_name);
+}
+
+static void resource_request_starting_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, WebKitWebResource* web_resource, WebKitNetworkRequest* request, WebKitNetworkResponse* response, gpointer data)
+{
+ gint* been_there = data;
+ *been_there = *been_there + 1;
+
+ if (*been_there == 1) {
+ g_assert(!main_resource);
+ main_resource = g_object_ref(web_resource);
+
+ g_assert_cmpstr(webkit_web_resource_get_uri(web_resource), ==, base_uri);
+
+ /* This should be a redirect, so the response must be NULL */
+ g_assert(!response);
+ } else if (*been_there == 2) {
+ char* uri = g_strdup_printf("%sindex.html", base_uri);
+
+ g_assert_cmpstr(webkit_web_resource_get_uri(web_resource), ==, uri);
+
+ /* Cancel the request. */
+ webkit_network_request_set_uri(request, "about:blank");
+
+ g_free(uri);
+ }
+}
+
+static void notify_load_status_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+ if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED) {
+ gboolean* been_there = data;
+ *been_there = TRUE;
+
+ g_assert_cmpstr(webkit_web_view_get_uri(web_view), ==, "about:blank");
+
+ g_main_loop_quit(loop);
+ }
+}
+
+static void test_web_resource_loading()
+{
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ gint been_to_resource_request_starting = 0;
+ gboolean been_to_load_finished = FALSE;
+ WebKitWebFrame* web_frame;
+ WebKitWebDataSource* data_source;
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_object_ref_sink(web_view);
+
+ g_signal_connect(web_view, "resource-request-starting",
+ G_CALLBACK(resource_request_starting_cb),
+ &been_to_resource_request_starting);
+
+ g_signal_connect(web_view, "notify::load-status",
+ G_CALLBACK(notify_load_status_cb),
+ &been_to_load_finished);
+
+ webkit_web_view_load_uri(web_view, base_uri);
+
+ /* We won't get finished immediately, because of the redirect */
+ g_main_loop_run(loop);
+
+ web_frame = webkit_web_view_get_main_frame(web_view);
+ data_source = webkit_web_frame_get_data_source(web_frame);
+
+ g_assert(main_resource);
+ g_assert(webkit_web_data_source_get_main_resource(data_source) == main_resource);
+ g_object_unref(main_resource);
+
+ g_assert_cmpint(been_to_resource_request_starting, ==, 2);
+ g_assert_cmpint(been_to_load_finished, ==, TRUE);
+
+ g_object_unref(web_view);
+ g_main_loop_unref(loop);
+}
+
+static void resource_request_starting_sub_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, WebKitWebResource* web_resource, WebKitNetworkRequest* request, WebKitNetworkResponse* response, gpointer data)
+{
+ if (!main_resource)
+ main_resource = g_object_ref(web_resource);
+ else if (!sub_resource)
+ sub_resource = g_object_ref(web_resource);
+}
+
+static void notify_load_status_sub_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+ if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED)
+ g_main_loop_quit(loop);
+}
+
+static gboolean idle_quit_loop_cb(gpointer data)
+{
+ g_main_loop_quit(loop);
+ return FALSE;
+}
+
+static void test_web_resource_sub_resource_loading()
+{
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ WebKitWebFrame* web_frame;
+ WebKitWebDataSource* data_source;
+ GList* sub_resources;
+ char* uri = g_strdup_printf("%smain.html", base_uri);
+
+ main_resource = NULL;
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_object_ref_sink(web_view);
+
+ g_signal_connect(web_view, "resource-request-starting",
+ G_CALLBACK(resource_request_starting_sub_cb),
+ NULL);
+
+ g_signal_connect(web_view, "notify::load-status",
+ G_CALLBACK(notify_load_status_sub_cb),
+ NULL);
+
+ webkit_web_view_load_uri(web_view, uri);
+
+ g_main_loop_run(loop);
+
+ /* The main resource should be loaded; now let's wait for the sub-resource to load */
+ g_idle_add(idle_quit_loop_cb, NULL);
+ g_main_loop_run(loop);
+
+ g_assert(main_resource && sub_resource);
+ g_assert(main_resource != sub_resource);
+
+ web_frame = webkit_web_view_get_main_frame(web_view);
+ data_source = webkit_web_frame_get_data_source(web_frame);
+
+ g_assert(webkit_web_data_source_get_main_resource(data_source) == main_resource);
+ g_object_unref(main_resource);
+
+ sub_resources = webkit_web_data_source_get_subresources(data_source);
+ // Expected resources: javascripts.js, favicon.ico
+ g_assert(sub_resources);
+ g_assert(sub_resources->next);
+ g_assert(!sub_resources->next->next);
+
+ // Test that the object we got from the data source is the same
+ // that went through resource-request-starting. Note that the order is
+ // not important (and not guaranteed since the resources are stored in a
+ // hashtable).
+ g_assert(WEBKIT_WEB_RESOURCE(sub_resources->data) == sub_resource
+ || WEBKIT_WEB_RESOURCE(sub_resources->next->data) == sub_resource);
+
+ g_object_unref(web_view);
+ g_main_loop_unref(loop);
+}
+
+int main(int argc, char** argv)
+{
+ SoupServer* server;
+ SoupURI* soup_uri;
+
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
+ soup_server_run_async(server);
+
+ soup_server_add_handler(server, NULL, server_callback, NULL, NULL);
+
+ soup_uri = soup_uri_new("http://127.0.0.1/");
+ soup_uri_set_port(soup_uri, soup_server_get_port(server));
+
+ base_uri = soup_uri_to_string(soup_uri, FALSE);
+ soup_uri_free(soup_uri);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add("/webkit/webresource/get_url",
+ WebResourceFixture, 0, web_resource_fixture_setup,
+ test_webkit_web_resource_get_url, web_resource_fixture_teardown);
+ g_test_add("/webkit/webresource/get_mime_type",
+ WebResourceFixture, 0, web_resource_fixture_setup,
+ test_webkit_web_resource_get_mime_type, web_resource_fixture_teardown);
+ g_test_add("/webkit/webresource/get_text_encoding_name",
+ WebResourceFixture, 0, web_resource_fixture_setup,
+ test_webkit_web_resource_get_encoding, web_resource_fixture_teardown);
+ g_test_add("/webkit/webresource/get_frame_name",
+ WebResourceFixture, 0, web_resource_fixture_setup,
+ test_webkit_web_resource_get_frame_name, web_resource_fixture_teardown);
+ g_test_add("/webkit/webresource/get_data",
+ WebResourceFixture, 0, web_resource_fixture_setup,
+ test_webkit_web_resource_get_data, web_resource_fixture_teardown);
+
+ g_test_add_func("/webkit/webresource/loading", test_web_resource_loading);
+ g_test_add_func("/webkit/webresource/sub_resource_loading", test_web_resource_sub_resource_loading);
+
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebsettings.c b/Source/WebKit/gtk/tests/testwebsettings.c
new file mode 100644
index 0000000..4db929a
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebsettings.c
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2009 Jan Michael Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <glib.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static void test_webkit_web_settings_user_agent(void)
+{
+ WebKitWebSettings* settings;
+ GtkWidget* webView;
+ gchar* defaultUserAgent;
+ gchar* userAgent;
+ g_test_bug("17375");
+
+ webView = webkit_web_view_new();
+ g_object_ref_sink(webView);
+
+ settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView));
+ defaultUserAgent = g_strdup(webkit_web_settings_get_user_agent(settings));
+
+ // test a custom UA string
+ userAgent = NULL;
+ g_object_set(G_OBJECT(settings), "user-agent", "testwebsettings/0.1", NULL);
+ g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL);
+ g_assert_cmpstr(userAgent, ==, "testwebsettings/0.1");
+ g_free(userAgent);
+
+ // setting it to NULL or an empty value should give us the default UA string
+ userAgent = NULL;
+ g_object_set(G_OBJECT(settings), "user-agent", NULL, NULL);
+ g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL);
+ g_assert_cmpstr(userAgent, ==, defaultUserAgent);
+ g_free(userAgent);
+
+ userAgent = NULL;
+ g_object_set(G_OBJECT(settings), "user-agent", "", NULL);
+ g_object_get(G_OBJECT(settings),"user-agent", &userAgent, NULL);
+ g_assert_cmpstr(userAgent, ==, defaultUserAgent);
+ g_free(userAgent);
+
+ g_free(defaultUserAgent);
+ g_object_unref(webView);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/websettings/user_agent", test_webkit_web_settings_user_agent);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwebview.c b/Source/WebKit/gtk/tests/testwebview.c
new file mode 100644
index 0000000..778235d
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwebview.c
@@ -0,0 +1,378 @@
+/*
+ * Copyright (C) 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2009, 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "test_utils.h"
+
+#include <errno.h>
+#include <unistd.h>
+#include <string.h>
+
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+GMainLoop* loop;
+SoupSession *session;
+char* base_uri;
+
+/* For real request testing */
+static void
+server_callback(SoupServer* server, SoupMessage* msg,
+ const char* path, GHashTable* query,
+ SoupClientContext* context, gpointer data)
+{
+ if (msg->method != SOUP_METHOD_GET) {
+ soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status(msg, SOUP_STATUS_OK);
+
+ if (g_str_equal(path, "/favicon.ico")) {
+ char* contents;
+ gsize length;
+ GError* error = NULL;
+
+ g_file_get_contents("blank.ico", &contents, &length, &error);
+ g_assert(!error);
+
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, length);
+ } else if (g_str_equal(path, "/bigdiv.html")) {
+ char* contents = g_strdup("<html><body><a id=\"link\" href=\"http://abc.def\">test</a><div style=\"background-color: green; height: 1200px;\"></div></body></html>");
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents));
+ } else if (g_str_equal(path, "/iframe.html")) {
+ char* contents = g_strdup("<html><body id=\"some-content\"><div style=\"background-color: green; height: 50px;\"></div><iframe src=\"bigdiv.html\"></iframe></body></html>");
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents));
+ } else {
+ char* contents = g_strdup("<html><body>test</body></html>");
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, contents, strlen(contents));
+ }
+
+ soup_message_body_complete(msg->response_body);
+}
+
+static void idle_quit_loop_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+ if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED ||
+ webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FAILED)
+ g_main_loop_quit(loop);
+}
+
+static void icon_uri_changed_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+ gboolean* been_here = (gboolean*)data;
+ char* expected_uri;
+
+ g_assert_cmpstr(g_param_spec_get_name(pspec), ==, "icon-uri");
+
+ expected_uri = g_strdup_printf("%sfavicon.ico", base_uri);
+ g_assert_cmpstr(webkit_web_view_get_icon_uri(web_view), ==, expected_uri);
+ g_free(expected_uri);
+
+ *been_here = TRUE;
+}
+
+static void icon_loaded_cb(WebKitWebView* web_view, char* icon_uri, gpointer data)
+{
+ gboolean* been_here = (gboolean*)data;
+ char* expected_uri = g_strdup_printf("%sfavicon.ico", base_uri);
+ g_assert_cmpstr(icon_uri, ==, expected_uri);
+ g_free(expected_uri);
+
+ g_assert_cmpstr(icon_uri, ==, webkit_web_view_get_icon_uri(web_view));
+
+ *been_here = TRUE;
+}
+
+static void test_webkit_web_view_icon_uri()
+{
+ gboolean been_to_uri_changed = FALSE;
+ gboolean been_to_icon_loaded = FALSE;
+ WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(G_OBJECT(view));
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_object_connect(G_OBJECT(view),
+ "signal::notify::progress", idle_quit_loop_cb, NULL,
+ "signal::notify::icon-uri", icon_uri_changed_cb, &been_to_uri_changed,
+ "signal::icon-loaded", icon_loaded_cb, &been_to_icon_loaded,
+ NULL);
+
+ webkit_web_view_load_uri(view, base_uri);
+
+ g_main_loop_run(loop);
+
+ g_assert(been_to_uri_changed);
+ g_assert(been_to_icon_loaded);
+
+ g_object_unref(view);
+}
+
+static gboolean map_event_cb(GtkWidget *widget, GdkEvent* event, gpointer data)
+{
+ GMainLoop* loop = (GMainLoop*)data;
+ g_main_loop_quit(loop);
+
+ return FALSE;
+}
+
+static void test_webkit_web_view_grab_focus()
+{
+ char* uri = g_strconcat(base_uri, "iframe.html", NULL);
+ GtkWidget* window = gtk_window_new(GTK_WINDOW_POPUP);
+ GtkWidget* scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+ WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ GtkAdjustment* adjustment;
+
+ gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);
+
+ gtk_container_add(GTK_CONTAINER(window), scrolled_window);
+ gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(view));
+
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_signal_connect(view, "notify::progress", G_CALLBACK (idle_quit_loop_cb), NULL);
+
+ /* Wait for window to show up */
+ gtk_widget_show_all(window);
+ g_signal_connect(window, "map-event",
+ G_CALLBACK(map_event_cb), loop);
+ g_main_loop_run(loop);
+
+ /* Load a page with a big div that will cause scrollbars to appear */
+ webkit_web_view_load_uri(view, uri);
+ g_main_loop_run(loop);
+
+ adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolled_window));
+ g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 0.0);
+
+ /* Since webkit_web_view_execute_script does not return a value,
+ it is impossible to know if an inner document has focus after
+ a node of it was focused via .focus() method.
+ The code below is an workaround: if the node has focus, a scroll
+ action is performed and afterward it is checked if the adjustment
+ has to be different from 0.
+ */
+ char script[] = "var innerDoc = document.defaultView.frames[0].document; \
+ innerDoc.getElementById(\"link\").focus(); \
+ if (innerDoc.hasFocus()) \
+ window.scrollBy(0, 100);";
+
+ /* Focus an element using JavaScript */
+ webkit_web_view_execute_script(view, script);
+
+ /* Make sure the ScrolledWindow noticed the scroll */
+ g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), !=, 0.0);
+
+ g_free(uri);
+ gtk_widget_destroy(window);
+}
+
+static void do_test_webkit_web_view_adjustments(gboolean with_page_cache)
+{
+ char* effective_uri = g_strconcat(base_uri, "bigdiv.html", NULL);
+ char* second_uri = g_strconcat(base_uri, "iframe.html", NULL);
+ GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ GtkWidget* scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+ WebKitWebView* view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ GtkAdjustment* adjustment;
+ double lower;
+ double upper;
+
+ if (with_page_cache) {
+ WebKitWebSettings* settings = webkit_web_view_get_settings(view);
+ g_object_set(settings, "enable-page-cache", TRUE, NULL);
+ }
+
+ gtk_window_set_default_size(GTK_WINDOW(window), 400, 200);
+
+ gtk_container_add(GTK_CONTAINER(window), scrolled_window);
+ gtk_container_add(GTK_CONTAINER(scrolled_window), GTK_WIDGET(view));
+
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_object_connect(G_OBJECT(view),
+ "signal::notify::progress", idle_quit_loop_cb, NULL,
+ NULL);
+
+ /* Wait for window to show up */
+ gtk_widget_show_all(window);
+ g_signal_connect(window, "map-event",
+ G_CALLBACK(map_event_cb), loop);
+ g_main_loop_run(loop);
+
+ /* Load a page with a big div that will cause scrollbars to appear */
+ webkit_web_view_load_uri(view, effective_uri);
+ g_main_loop_run(loop);
+
+ adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(scrolled_window));
+ g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 0.0);
+
+ lower = gtk_adjustment_get_lower(adjustment);
+ upper = gtk_adjustment_get_upper(adjustment);
+
+ /* Scroll the view using JavaScript */
+ webkit_web_view_execute_script(view, "window.scrollBy(0, 100)");
+
+ /* Make sure the ScrolledWindow noticed the scroll */
+ g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 100.0);
+
+ /* Load a second URI */
+ webkit_web_view_load_uri(view, second_uri);
+ g_main_loop_run(loop);
+
+ /* Make sure the scrollbar has been reset */
+ g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 0.0);
+
+ /* Go back */
+ webkit_web_view_go_back(view);
+
+ /* When using page cache, go_back will return syncronously */
+ if (!with_page_cache)
+ g_main_loop_run(loop);
+
+ /* Make sure GTK+ has time to process the changes in size, for the adjusments */
+ while (gtk_events_pending())
+ gtk_main_iteration();
+
+ /* Make sure upper and lower bounds have been restored correctly */
+ g_assert_cmpfloat(lower, ==, gtk_adjustment_get_lower(adjustment));
+ g_assert_cmpfloat(upper, ==, gtk_adjustment_get_upper(adjustment));
+
+ g_assert_cmpfloat(gtk_adjustment_get_value(adjustment), ==, 100.0);
+
+ g_free(effective_uri);
+ g_free(second_uri);
+
+ gtk_widget_destroy(window);
+}
+
+static void test_webkit_web_view_adjustments()
+{
+ /* Test this with page cache disabled, and enabled. */
+ do_test_webkit_web_view_adjustments(FALSE);
+ do_test_webkit_web_view_adjustments(TRUE);
+}
+
+gboolean delayed_destroy(gpointer data)
+{
+ gtk_widget_destroy(GTK_WIDGET(data));
+ g_main_loop_quit(loop);
+ return FALSE;
+}
+
+static void test_webkit_web_view_destroy()
+{
+ GtkWidget* window;
+ GtkWidget* web_view;
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ web_view = webkit_web_view_new();
+
+ gtk_container_add(GTK_CONTAINER(window), web_view);
+
+ gtk_widget_show_all(window);
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_signal_connect(window, "map-event",
+ G_CALLBACK(map_event_cb), loop);
+ g_main_loop_run(loop);
+
+ g_idle_add(delayed_destroy, web_view);
+ g_main_loop_run(loop);
+
+ gtk_widget_destroy(window);
+}
+
+static void test_webkit_web_view_window_features()
+{
+ GtkWidget* window;
+ GtkWidget* web_view;
+
+ window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ web_view = webkit_web_view_new();
+
+ gtk_container_add(GTK_CONTAINER(window), web_view);
+
+ gtk_widget_show_all(window);
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_signal_connect(window, "map-event",
+ G_CALLBACK(map_event_cb), loop);
+ g_main_loop_run(loop);
+
+ /* Bug #36144 */
+ g_object_set(G_OBJECT(web_view), "window-features", NULL, NULL);
+
+ gtk_widget_destroy(window);
+}
+
+int main(int argc, char** argv)
+{
+ SoupServer* server;
+ SoupURI* soup_uri;
+
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ /* Hopefully make test independent of the path it's called from. */
+ testutils_relative_chdir("Source/WebKit/gtk/tests/resources/test.html", argv[0]);
+
+ server = soup_server_new(SOUP_SERVER_PORT, 0, NULL);
+ soup_server_run_async(server);
+
+ soup_server_add_handler(server, NULL, server_callback, NULL, NULL);
+
+ soup_uri = soup_uri_new("http://127.0.0.1/");
+ soup_uri_set_port(soup_uri, soup_server_get_port(server));
+
+ base_uri = soup_uri_to_string(soup_uri, FALSE);
+ soup_uri_free(soup_uri);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/webview/icon-uri", test_webkit_web_view_icon_uri);
+ g_test_add_func("/webkit/webview/adjustments", test_webkit_web_view_adjustments);
+ g_test_add_func("/webkit/webview/destroy", test_webkit_web_view_destroy);
+ g_test_add_func("/webkit/webview/grab_focus", test_webkit_web_view_grab_focus);
+ g_test_add_func("/webkit/webview/window-features", test_webkit_web_view_window_features);
+
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/tests/testwindow.c b/Source/WebKit/gtk/tests/testwindow.c
new file mode 100644
index 0000000..ecd6609
--- /dev/null
+++ b/Source/WebKit/gtk/tests/testwindow.c
@@ -0,0 +1,130 @@
+/*
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GTK_CHECK_VERSION(2, 14, 0)
+
+static void notify_load_status_cb(WebKitWebView* web_view, GParamSpec* pspec, gpointer data)
+{
+ if (webkit_web_view_get_load_status(web_view) == WEBKIT_LOAD_FINISHED) {
+ GMainLoop* loop = (GMainLoop*)data;
+
+ g_main_loop_quit(loop);
+ }
+}
+
+static void test_webkit_window_scrollbar_policy(void)
+{
+ GMainLoop* loop;
+ GtkWidget* scrolledWindow;
+ GtkWidget* webView;
+ WebKitWebFrame* mainFrame;
+ GtkPolicyType horizontalPolicy;
+ GtkPolicyType verticalPolicy;
+
+ loop = g_main_loop_new(NULL, TRUE);
+
+ scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
+ gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow),
+ GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
+
+ webView = webkit_web_view_new();
+ g_object_ref_sink(webView);
+
+ g_signal_connect(webView, "notify::load-status",
+ G_CALLBACK(notify_load_status_cb), loop);
+
+ gtk_container_add(GTK_CONTAINER(scrolledWindow), webView);
+
+ mainFrame = webkit_web_view_get_main_frame(WEBKIT_WEB_VIEW(webView));
+
+ /* Test we correctly apply policy for not having scrollbars; This
+ * case is special, because we turn the policy from NEVER to
+ * AUTOMATIC, since we cannot easily represent the same thing
+ * using GtkScrolledWindow */
+ webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(webView),
+ "<html><body>WebKit!</body><script>document.getElementsByTagName('body')[0].style.overflow = 'hidden';</script></html>",
+ "file://");
+
+ g_main_loop_run(loop);
+
+ gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(scrolledWindow),
+ &horizontalPolicy, &verticalPolicy);
+
+ g_assert(horizontalPolicy == GTK_POLICY_AUTOMATIC);
+ g_assert(verticalPolicy == GTK_POLICY_AUTOMATIC);
+
+ g_assert(GTK_POLICY_NEVER == webkit_web_frame_get_horizontal_scrollbar_policy(mainFrame));
+ g_assert(GTK_POLICY_NEVER == webkit_web_frame_get_vertical_scrollbar_policy(mainFrame));
+
+ /* Test we correctly apply policy for always having scrollbars */
+ webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(webView),
+ "<html><body>WebKit!</body><script>document.getElementsByTagName('body')[0].style.overflow = 'scroll';</script></html>",
+ "file://");
+
+ g_main_loop_run(loop);
+
+ gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(scrolledWindow),
+ &horizontalPolicy, &verticalPolicy);
+
+ g_assert(horizontalPolicy == GTK_POLICY_ALWAYS);
+ g_assert(verticalPolicy == GTK_POLICY_ALWAYS);
+
+ g_assert(horizontalPolicy == webkit_web_frame_get_horizontal_scrollbar_policy(mainFrame));
+ g_assert(verticalPolicy == webkit_web_frame_get_vertical_scrollbar_policy(mainFrame));
+
+ /* Test we correctly apply policy for having scrollbars when needed */
+ webkit_web_view_load_html_string(WEBKIT_WEB_VIEW(webView),
+ "<html><body>WebKit!</body><script>document.getElementsByTagName('body')[0].style.overflow = 'auto';</script></html>",
+ "file://");
+
+ g_main_loop_run(loop);
+
+ gtk_scrolled_window_get_policy(GTK_SCROLLED_WINDOW(scrolledWindow),
+ &horizontalPolicy, &verticalPolicy);
+
+ g_assert(horizontalPolicy == GTK_POLICY_AUTOMATIC);
+ g_assert(verticalPolicy == GTK_POLICY_AUTOMATIC);
+
+ g_assert(horizontalPolicy == webkit_web_frame_get_horizontal_scrollbar_policy(mainFrame));
+ g_assert(verticalPolicy == webkit_web_frame_get_vertical_scrollbar_policy(mainFrame));
+
+ g_object_unref(webView);
+}
+
+int main(int argc, char** argv)
+{
+ g_thread_init(NULL);
+ gtk_test_init(&argc, &argv, NULL);
+
+ g_test_bug_base("https://bugs.webkit.org/");
+ g_test_add_func("/webkit/window/scrollbar_policy", test_webkit_window_scrollbar_policy);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit.pc.in b/Source/WebKit/gtk/webkit.pc.in
new file mode 100644
index 0000000..9bed0f3
--- /dev/null
+++ b/Source/WebKit/gtk/webkit.pc.in
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: WebKit
+Description: Web content engine for GTK+
+Version: @VERSION@
+Requires: glib-2.0 gtk+-@GTK_API_VERSION@ libsoup-2.4
+Libs: -L${libdir} -lwebkitgtk-@WEBKITGTK_API_VERSION@
+Cflags: -I${includedir}/webkit-@WEBKITGTK_API_VERSION@
diff --git a/Source/WebKit/gtk/webkit/webkit.h b/Source/WebKit/gtk/webkit/webkit.h
new file mode 100644
index 0000000..d93fae1
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkit.h
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2007 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef __WEBKIT_H__
+#define __WEBKIT_H__
+
+#include <webkit/webkitversion.h>
+#include <webkit/webkitdefines.h>
+#include <webkit/webkitdom.h>
+#include <webkit/webkitdownload.h>
+#include <webkit/webkitgeolocationpolicydecision.h>
+#include <webkit/webkitglobals.h>
+#include <webkit/webkithittestresult.h>
+#include <webkit/webkitnetworkrequest.h>
+#include <webkit/webkitnetworkresponse.h>
+#include <webkit/webkitsoupauthdialog.h>
+#include <webkit/webkitviewportattributes.h>
+#include <webkit/webkitwebdatasource.h>
+#include <webkit/webkitwebframe.h>
+#include <webkit/webkitwebsettings.h>
+#include <webkit/webkitwebinspector.h>
+#include <webkit/webkitwebwindowfeatures.h>
+#include <webkit/webkitwebview.h>
+#include <webkit/webkitwebbackforwardlist.h>
+#include <webkit/webkitwebhistoryitem.h>
+#include <webkit/webkitwebplugin.h>
+#include <webkit/webkitwebplugindatabase.h>
+#include <webkit/webkitwebpolicydecision.h>
+#include <webkit/webkitwebnavigationaction.h>
+#include <webkit/webkitwebresource.h>
+#include <webkit/webkitwebdatabase.h>
+#include <webkit/webkitsecurityorigin.h>
+#include <webkit/webkitenumtypes.h>
+
+#endif /* __WEBKIT_H__ */
diff --git a/Source/WebKit/gtk/webkit/webkitapplicationcache.cpp b/Source/WebKit/gtk/webkit/webkitapplicationcache.cpp
new file mode 100644
index 0000000..87f3ab5
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitapplicationcache.cpp
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2009 Jan Michael Alonzo <jmalonzo@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#include "ApplicationCacheStorage.h"
+#include "webkitapplicationcacheprivate.h"
+#include <wtf/UnusedParam.h>
+
+void webkit_application_cache_set_maximum_size(unsigned long long size)
+{
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ WebCore::cacheStorage().empty();
+ WebCore::cacheStorage().vacuumDatabaseFile();
+ WebCore::cacheStorage().setMaximumSize(size);
+#else
+ UNUSED_PARAM(size);
+#endif
+}
diff --git a/Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h b/Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h
new file mode 100644
index 0000000..cbf3759
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitapplicationcacheprivate.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitapplicationcacheprivate_h
+#define webkitapplicationcacheprivate_h
+
+#include "webkitdefines.h"
+#include <glib.h>
+
+extern "C" {
+
+WEBKIT_API void webkit_application_cache_set_maximum_size(unsigned long long size);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitdefines.h b/Source/WebKit/gtk/webkit/webkitdefines.h
new file mode 100644
index 0000000..b0b607b
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitdefines.h
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitdefines_h
+#define webkitdefines_h
+
+#include <glib.h>
+
+#ifdef G_OS_WIN32
+ #ifdef BUILDING_WEBKIT
+ #define WEBKIT_API __declspec(dllexport)
+ #else
+ #define WEBKIT_API __declspec(dllimport)
+ #endif
+ #define WEBKIT_OBSOLETE_API WEBKIT_API
+#else
+ #define WEBKIT_API __attribute__((visibility("default")))
+ #define WEBKIT_OBSOLETE_API WEBKIT_API __attribute__((deprecated))
+#endif
+
+#ifndef WEBKIT_API
+ #define WEBKIT_API
+#endif
+
+G_BEGIN_DECLS
+
+typedef struct _WebKitNetworkRequest WebKitNetworkRequest;
+typedef struct _WebKitNetworkRequestClass WebKitNetworkRequestClass;
+
+typedef struct _WebKitNetworkResponse WebKitNetworkResponse;
+typedef struct _WebKitNetworkResponseClass WebKitNetworkResponseClass;
+
+typedef struct _WebKitWebBackForwardList WebKitWebBackForwardList;
+typedef struct _WebKitWebBackForwardListClass WebKitWebBackForwardListClass;
+
+typedef struct _WebKitWebHistoryItem WebKitWebHistoryItem;
+typedef struct _WebKitWebHistoryItemClass WebKitWebHistoryItemClass;
+
+typedef struct _WebKitWebFrame WebKitWebFrame;
+typedef struct _WebKitWebFrameClass WebKitWebFrameClass;
+
+typedef struct _WebKitWebPolicyDecision WebKitWebPolicyDecision;
+typedef struct _WebKitWebPolicyDecisionClass WebKitWebPolicyDecisionClass;
+
+typedef struct _WebKitWebSettings WebKitWebSettings;
+typedef struct _WebKitWebSettingsClass WebKitWebSettingsClass;
+
+typedef struct _WebKitWebInspector WebKitWebInspector;
+typedef struct _WebKitWebInspectorClass WebKitWebInspectorClass;
+
+typedef struct _WebKitWebWindowFeatures WebKitWebWindowFeatures;
+typedef struct _WebKitWebWindowFeaturesClass WebKitWebWindowFeaturesClass;
+
+typedef struct _WebKitWebView WebKitWebView;
+typedef struct _WebKitWebViewClass WebKitWebViewClass;
+
+typedef struct _WebKitDownload WebKitDownload;
+typedef struct _WebKitDownloadClass WebKitDownloadClass;
+
+typedef struct _WebKitWebResource WebKitWebResource;
+typedef struct _WebKitWebResourceClass WebKitWebResourceClass;
+
+typedef struct _WebKitWebDataSource WebKitWebDataSource;
+typedef struct _WebKitWebDataSourceClass WebKitWebDataSourceClass;
+
+typedef struct _WebKitWebDatabase WebKitWebDatabase;
+typedef struct _WebKitWebDatabaseClass WebKitWebDatabaseClass;
+
+typedef struct _WebKitSecurityOrigin WebKitSecurityOrigin;
+typedef struct _WebKitSecurityOriginClass WebKitSecurityOriginClass;
+
+typedef struct _WebKitHitTestResult WebKitHitTestResult;
+typedef struct _WebKitHitTestResultClass WebKitHitTestResultClass;
+
+typedef struct _WebKitGeolocationPolicyDecision WebKitGeolocationPolicyDecision;
+typedef struct _WebKitGeolocationPolicyDecisionClass WebKitGeolocationPolicyDecisionClass;
+
+typedef struct _WebKitViewportAttributes WebKitViewportAttributes;
+typedef struct _WebKitViewportAttributesClass WebKitViewportAttributesClass;
+
+typedef struct _WebKitWebPluginDatabase WebKitWebPluginDatabase;
+typedef struct _WebKitWebPluginDatabaseClass WebKitWebPluginDatabaseClass;
+
+typedef struct _WebKitWebPlugin WebKitWebPlugin;
+typedef struct _WebKitWebPluginClass WebKitWebPluginClass;
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitdownload.cpp b/Source/WebKit/gtk/webkit/webkitdownload.cpp
new file mode 100644
index 0000000..60b8e6d
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitdownload.cpp
@@ -0,0 +1,956 @@
+/*
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitdownload.h"
+
+#include "GRefPtr.h"
+#include "Noncopyable.h"
+#include "NotImplemented.h"
+#include "ResourceHandleClient.h"
+#include "ResourceHandleInternal.h"
+#include "ResourceRequest.h"
+#include "ResourceResponse.h"
+#include "webkitdownloadprivate.h"
+#include "webkitenumtypes.h"
+#include "webkitglobals.h"
+#include "webkitglobalsprivate.h"
+#include "webkitmarshal.h"
+#include "webkitnetworkrequestprivate.h"
+#include "webkitnetworkresponse.h"
+#include "webkitnetworkresponseprivate.h"
+#include <glib/gi18n-lib.h>
+#include <glib/gstdio.h>
+#include <wtf/text/CString.h>
+
+#ifdef ERROR
+#undef ERROR
+#endif
+
+using namespace WebKit;
+using namespace WebCore;
+
+/**
+ * SECTION:webkitdownload
+ * @short_description: Object used to communicate with the application when downloading.
+ *
+ * #WebKitDownload carries information about a download request,
+ * including a #WebKitNetworkRequest object. The application may use
+ * this object to control the download process, or to simply figure
+ * out what is to be downloaded, and do it itself.
+ */
+
+class DownloadClient : public Noncopyable, public ResourceHandleClient {
+ public:
+ DownloadClient(WebKitDownload*);
+
+ virtual void didReceiveResponse(ResourceHandle*, const ResourceResponse&);
+ virtual void didReceiveData(ResourceHandle*, const char*, int, int);
+ virtual void didFinishLoading(ResourceHandle*, double);
+ virtual void didFail(ResourceHandle*, const ResourceError&);
+ virtual void wasBlocked(ResourceHandle*);
+ virtual void cannotShowURL(ResourceHandle*);
+
+ private:
+ WebKitDownload* m_download;
+};
+
+struct _WebKitDownloadPrivate {
+ gchar* destinationURI;
+ gchar* suggestedFilename;
+ guint64 currentSize;
+ GTimer* timer;
+ WebKitDownloadStatus status;
+ GFileOutputStream* outputStream;
+ DownloadClient* downloadClient;
+ WebKitNetworkRequest* networkRequest;
+ WebKitNetworkResponse* networkResponse;
+ RefPtr<ResourceHandle> resourceHandle;
+};
+
+enum {
+ // Normal signals.
+ ERROR,
+ LAST_SIGNAL
+};
+
+static guint webkit_download_signals[LAST_SIGNAL] = { 0 };
+
+enum {
+ PROP_0,
+
+ PROP_NETWORK_REQUEST,
+ PROP_DESTINATION_URI,
+ PROP_SUGGESTED_FILENAME,
+ PROP_PROGRESS,
+ PROP_STATUS,
+ PROP_CURRENT_SIZE,
+ PROP_TOTAL_SIZE,
+ PROP_NETWORK_RESPONSE
+};
+
+G_DEFINE_TYPE(WebKitDownload, webkit_download, G_TYPE_OBJECT);
+
+
+static void webkit_download_set_response(WebKitDownload* download, const ResourceResponse& response);
+static void webkit_download_set_status(WebKitDownload* download, WebKitDownloadStatus status);
+
+static void webkit_download_dispose(GObject* object)
+{
+ WebKitDownload* download = WEBKIT_DOWNLOAD(object);
+ WebKitDownloadPrivate* priv = download->priv;
+
+ if (priv->outputStream) {
+ g_object_unref(priv->outputStream);
+ priv->outputStream = NULL;
+ }
+
+ if (priv->networkRequest) {
+ g_object_unref(priv->networkRequest);
+ priv->networkRequest = NULL;
+ }
+
+ if (priv->networkResponse) {
+ g_object_unref(priv->networkResponse);
+ priv->networkResponse = NULL;
+ }
+
+ G_OBJECT_CLASS(webkit_download_parent_class)->dispose(object);
+}
+
+static void webkit_download_finalize(GObject* object)
+{
+ WebKitDownload* download = WEBKIT_DOWNLOAD(object);
+ WebKitDownloadPrivate* priv = download->priv;
+
+ // We don't call webkit_download_cancel() because we don't want to emit
+ // signals when finalizing an object.
+ if (priv->resourceHandle) {
+ if (priv->status == WEBKIT_DOWNLOAD_STATUS_STARTED) {
+ priv->resourceHandle->setClient(0);
+ priv->resourceHandle->cancel();
+ }
+ priv->resourceHandle.release();
+ }
+
+ delete priv->downloadClient;
+
+ // The download object may never have _start called on it, so we
+ // need to make sure timer is non-NULL.
+ if (priv->timer) {
+ g_timer_destroy(priv->timer);
+ priv->timer = NULL;
+ }
+
+ g_free(priv->destinationURI);
+ g_free(priv->suggestedFilename);
+
+ G_OBJECT_CLASS(webkit_download_parent_class)->finalize(object);
+}
+
+static void webkit_download_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
+{
+ WebKitDownload* download = WEBKIT_DOWNLOAD(object);
+
+ switch(prop_id) {
+ case PROP_NETWORK_REQUEST:
+ g_value_set_object(value, webkit_download_get_network_request(download));
+ break;
+ case PROP_NETWORK_RESPONSE:
+ g_value_set_object(value, webkit_download_get_network_response(download));
+ break;
+ case PROP_DESTINATION_URI:
+ g_value_set_string(value, webkit_download_get_destination_uri(download));
+ break;
+ case PROP_SUGGESTED_FILENAME:
+ g_value_set_string(value, webkit_download_get_suggested_filename(download));
+ break;
+ case PROP_PROGRESS:
+ g_value_set_double(value, webkit_download_get_progress(download));
+ break;
+ case PROP_STATUS:
+ g_value_set_enum(value, webkit_download_get_status(download));
+ break;
+ case PROP_CURRENT_SIZE:
+ g_value_set_uint64(value, webkit_download_get_current_size(download));
+ break;
+ case PROP_TOTAL_SIZE:
+ g_value_set_uint64(value, webkit_download_get_total_size(download));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ }
+}
+
+static void webkit_download_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec *pspec)
+{
+ WebKitDownload* download = WEBKIT_DOWNLOAD(object);
+ WebKitDownloadPrivate* priv = download->priv;
+
+ switch(prop_id) {
+ case PROP_NETWORK_REQUEST:
+ priv->networkRequest = WEBKIT_NETWORK_REQUEST(g_value_dup_object(value));
+ break;
+ case PROP_NETWORK_RESPONSE:
+ priv->networkResponse = WEBKIT_NETWORK_RESPONSE(g_value_dup_object(value));
+ break;
+ case PROP_DESTINATION_URI:
+ webkit_download_set_destination_uri(download, g_value_get_string(value));
+ break;
+ case PROP_STATUS:
+ webkit_download_set_status(download, static_cast<WebKitDownloadStatus>(g_value_get_enum(value)));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ }
+}
+
+static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
+{
+ GObjectClass* objectClass = G_OBJECT_CLASS(downloadClass);
+ objectClass->dispose = webkit_download_dispose;
+ objectClass->finalize = webkit_download_finalize;
+ objectClass->get_property = webkit_download_get_property;
+ objectClass->set_property = webkit_download_set_property;
+
+ webkitInit();
+
+ /**
+ * WebKitDownload::error:
+ * @download: the object on which the signal is emitted
+ * @error_code: the corresponding error code
+ * @error_detail: detailed error code for the error, see
+ * #WebKitDownloadError
+ * @reason: a string describing the error
+ *
+ * Emitted when @download is interrupted either by user action or by
+ * network errors, @error_detail will take any value of
+ * #WebKitDownloadError.
+ *
+ * Since: 1.1.2
+ */
+ webkit_download_signals[ERROR] = g_signal_new("error",
+ G_TYPE_FROM_CLASS(downloadClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__INT_INT_STRING,
+ G_TYPE_BOOLEAN, 3,
+ G_TYPE_INT,
+ G_TYPE_INT,
+ G_TYPE_STRING);
+
+ // Properties.
+
+ /**
+ * WebKitDownload:network-request
+ *
+ * The #WebKitNetworkRequest instance associated with the download.
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass,
+ PROP_NETWORK_REQUEST,
+ g_param_spec_object("network-request",
+ _("Network Request"),
+ _("The network request for the URI that should be downloaded"),
+ WEBKIT_TYPE_NETWORK_REQUEST,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitDownload:network-response
+ *
+ * The #WebKitNetworkResponse instance associated with the download.
+ *
+ * Since: 1.1.16
+ */
+ g_object_class_install_property(objectClass,
+ PROP_NETWORK_RESPONSE,
+ g_param_spec_object("network-response",
+ _("Network Response"),
+ _("The network response for the URI that should be downloaded"),
+ WEBKIT_TYPE_NETWORK_RESPONSE,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitDownload:destination-uri
+ *
+ * The URI of the save location for this download.
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass,
+ PROP_DESTINATION_URI,
+ g_param_spec_string("destination-uri",
+ _("Destination URI"),
+ _("The destination URI where to save the file"),
+ "",
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitDownload:suggested-filename
+ *
+ * The file name suggested as default when saving
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass,
+ PROP_SUGGESTED_FILENAME,
+ g_param_spec_string("suggested-filename",
+ _("Suggested Filename"),
+ _("The filename suggested as default when saving"),
+ "",
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitDownload:progress:
+ *
+ * Determines the current progress of the download. Notice that,
+ * although the progress changes are reported as soon as possible,
+ * the emission of the notify signal for this property is
+ * throttled, for the benefit of download managers. If you care
+ * about every update, use WebKitDownload:current-size.
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass, PROP_PROGRESS,
+ g_param_spec_double("progress",
+ _("Progress"),
+ _("Determines the current progress of the download"),
+ 0.0, 1.0, 1.0,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitDownload:status:
+ *
+ * Determines the current status of the download.
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass, PROP_STATUS,
+ g_param_spec_enum("status",
+ _("Status"),
+ _("Determines the current status of the download"),
+ WEBKIT_TYPE_DOWNLOAD_STATUS,
+ WEBKIT_DOWNLOAD_STATUS_CREATED,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitDownload:current-size
+ *
+ * The length of the data already downloaded
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass,
+ PROP_CURRENT_SIZE,
+ g_param_spec_uint64("current-size",
+ _("Current Size"),
+ _("The length of the data already downloaded"),
+ 0, G_MAXUINT64, 0,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitDownload:total-size
+ *
+ * The total size of the file
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass,
+ PROP_CURRENT_SIZE,
+ g_param_spec_uint64("total-size",
+ _("Total Size"),
+ _("The total size of the file"),
+ 0, G_MAXUINT64, 0,
+ WEBKIT_PARAM_READABLE));
+
+ g_type_class_add_private(downloadClass, sizeof(WebKitDownloadPrivate));
+}
+
+static void webkit_download_init(WebKitDownload* download)
+{
+ WebKitDownloadPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(download, WEBKIT_TYPE_DOWNLOAD, WebKitDownloadPrivate);
+ download->priv = priv;
+
+ priv->downloadClient = new DownloadClient(download);
+ priv->currentSize = 0;
+ priv->status = WEBKIT_DOWNLOAD_STATUS_CREATED;
+}
+
+/**
+ * webkit_download_new:
+ * @request: a #WebKitNetworkRequest
+ *
+ * Creates a new #WebKitDownload object for the given
+ * #WebKitNetworkRequest object.
+ *
+ * Returns: the new #WebKitDownload
+ *
+ * Since: 1.1.2
+ */
+WebKitDownload* webkit_download_new(WebKitNetworkRequest* request)
+{
+ g_return_val_if_fail(request, NULL);
+
+ return WEBKIT_DOWNLOAD(g_object_new(WEBKIT_TYPE_DOWNLOAD, "network-request", request, NULL));
+}
+
+// Internal usage only
+WebKitDownload* webkit_download_new_with_handle(WebKitNetworkRequest* request, WebCore::ResourceHandle* handle, const WebCore::ResourceResponse& response)
+{
+ g_return_val_if_fail(request, NULL);
+
+ ResourceHandleInternal* d = handle->getInternal();
+ if (d->m_soupMessage)
+ soup_session_pause_message(webkit_get_default_session(), d->m_soupMessage.get());
+
+ WebKitDownload* download = WEBKIT_DOWNLOAD(g_object_new(WEBKIT_TYPE_DOWNLOAD, "network-request", request, NULL));
+ WebKitDownloadPrivate* priv = download->priv;
+
+ handle->ref();
+ priv->resourceHandle = handle;
+
+ webkit_download_set_response(download, response);
+
+ return download;
+}
+
+static gboolean webkit_download_open_stream_for_uri(WebKitDownload* download, const gchar* uri, gboolean append=FALSE)
+{
+ g_return_val_if_fail(uri, FALSE);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ GFile* file = g_file_new_for_uri(uri);
+ GError* error = NULL;
+
+ if (append)
+ priv->outputStream = g_file_append_to(file, G_FILE_CREATE_NONE, NULL, &error);
+ else
+ priv->outputStream = g_file_replace(file, NULL, TRUE, G_FILE_CREATE_NONE, NULL, &error);
+
+ g_object_unref(file);
+
+ if (error) {
+ gboolean handled;
+ g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_DESTINATION, error->message, &handled);
+ g_error_free(error);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void webkit_download_close_stream(WebKitDownload* download)
+{
+ WebKitDownloadPrivate* priv = download->priv;
+ if (priv->outputStream) {
+ g_object_unref(priv->outputStream);
+ priv->outputStream = NULL;
+ }
+}
+
+/**
+ * webkit_download_start:
+ * @download: the #WebKitDownload
+ *
+ * Initiates the download. Notice that you must have set the
+ * destination-uri property before calling this method.
+ *
+ * Since: 1.1.2
+ */
+void webkit_download_start(WebKitDownload* download)
+{
+ g_return_if_fail(WEBKIT_IS_DOWNLOAD(download));
+
+ WebKitDownloadPrivate* priv = download->priv;
+ g_return_if_fail(priv->destinationURI);
+ g_return_if_fail(priv->status == WEBKIT_DOWNLOAD_STATUS_CREATED);
+ g_return_if_fail(priv->timer == NULL);
+
+ // For GTK, when downloading a file NetworkingContext is null
+ if (!priv->resourceHandle)
+ priv->resourceHandle = ResourceHandle::create(/* Null NetworkingContext */ NULL, core(priv->networkRequest), priv->downloadClient, false, false);
+ else {
+ priv->resourceHandle->setClient(priv->downloadClient);
+
+ ResourceHandleInternal* d = priv->resourceHandle->getInternal();
+ if (d->m_soupMessage)
+ soup_session_unpause_message(webkit_get_default_session(), d->m_soupMessage.get());
+ }
+
+ priv->timer = g_timer_new();
+ webkit_download_open_stream_for_uri(download, priv->destinationURI);
+}
+
+/**
+ * webkit_download_cancel:
+ * @download: the #WebKitDownload
+ *
+ * Cancels the download. Calling this will not free the
+ * #WebKitDownload object, so you still need to call
+ * g_object_unref() on it, if you are the owner of a reference. Notice
+ * that cancelling the download provokes the emission of the
+ * WebKitDownload::error signal, reporting that the download was
+ * cancelled.
+ *
+ * Since: 1.1.2
+ */
+void webkit_download_cancel(WebKitDownload* download)
+{
+ g_return_if_fail(WEBKIT_IS_DOWNLOAD(download));
+
+ WebKitDownloadPrivate* priv = download->priv;
+
+ // Cancel may be called even if start was not called, so we need
+ // to make sure timer is non-NULL.
+ if (priv->timer)
+ g_timer_stop(priv->timer);
+
+ if (priv->resourceHandle)
+ priv->resourceHandle->cancel();
+
+ webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_CANCELLED);
+
+ gboolean handled;
+ g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER, _("User cancelled the download"), &handled);
+}
+
+/**
+ * webkit_download_get_uri:
+ * @download: the #WebKitDownload
+ *
+ * Convenience method to retrieve the URI from the
+ * #WebKitNetworkRequest which is being downloaded.
+ *
+ * Returns: the uri
+ *
+ * Since: 1.1.2
+ */
+const gchar* webkit_download_get_uri(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ return webkit_network_request_get_uri(priv->networkRequest);
+}
+
+/**
+ * webkit_download_get_network_request:
+ * @download: the #WebKitDownload
+ *
+ * Retrieves the #WebKitNetworkRequest object that backs the download
+ * process.
+ *
+ * Returns: (transfer none): the #WebKitNetworkRequest instance
+ *
+ * Since: 1.1.2
+ */
+WebKitNetworkRequest* webkit_download_get_network_request(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ return priv->networkRequest;
+}
+
+/**
+ * webkit_download_get_network_response:
+ * @download: the #WebKitDownload
+ *
+ * Retrieves the #WebKitNetworkResponse object that backs the download
+ * process.
+ *
+ * Returns: (transfer none): the #WebKitNetworkResponse instance
+ *
+ * Since: 1.1.16
+ */
+WebKitNetworkResponse* webkit_download_get_network_response(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ return priv->networkResponse;
+}
+
+static void webkit_download_set_response(WebKitDownload* download, const ResourceResponse& response)
+{
+ WebKitDownloadPrivate* priv = download->priv;
+ priv->networkResponse = kitNew(response);
+
+ if (!response.isNull() && !response.suggestedFilename().isEmpty())
+ webkit_download_set_suggested_filename(download, response.suggestedFilename().utf8().data());
+}
+
+/**
+ * webkit_download_get_suggested_filename:
+ * @download: the #WebKitDownload
+ *
+ * Retrieves the filename that was suggested by the server, or the one
+ * derived by WebKit from the URI.
+ *
+ * Returns: the suggested filename
+ *
+ * Since: 1.1.2
+ */
+const gchar* webkit_download_get_suggested_filename(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ if (priv->suggestedFilename)
+ return priv->suggestedFilename;
+
+ KURL url = KURL(KURL(), webkit_network_request_get_uri(priv->networkRequest));
+ url.setQuery(String());
+ url.removeFragmentIdentifier();
+ priv->suggestedFilename = g_strdup(decodeURLEscapeSequences(url.lastPathComponent()).utf8().data());
+ return priv->suggestedFilename;
+}
+
+// for internal use only
+void webkit_download_set_suggested_filename(WebKitDownload* download, const gchar* suggestedFilename)
+{
+ WebKitDownloadPrivate* priv = download->priv;
+ g_free(priv->suggestedFilename);
+ priv->suggestedFilename = g_strdup(suggestedFilename);
+
+ g_object_notify(G_OBJECT(download), "suggested-filename");
+}
+
+
+/**
+ * webkit_download_get_destination_uri:
+ * @download: the #WebKitDownload
+ *
+ * Obtains the URI to which the downloaded file will be written. This
+ * must have been set by the application before calling
+ * webkit_download_start(), and may be %NULL.
+ *
+ * Returns: the destination URI or %NULL
+ *
+ * Since: 1.1.2
+ */
+const gchar* webkit_download_get_destination_uri(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), NULL);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ return priv->destinationURI;
+}
+
+/**
+ * webkit_download_set_destination_uri:
+ * @download: the #WebKitDownload
+ * @destination_uri: the destination URI
+ *
+ * Defines the URI that should be used to save the downloaded file to.
+ *
+ * Since: 1.1.2
+ */
+void webkit_download_set_destination_uri(WebKitDownload* download, const gchar* destination_uri)
+{
+ g_return_if_fail(WEBKIT_IS_DOWNLOAD(download));
+ g_return_if_fail(destination_uri);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ if (priv->destinationURI && !strcmp(priv->destinationURI, destination_uri))
+ return;
+
+ if (priv->status != WEBKIT_DOWNLOAD_STATUS_CREATED && priv->status != WEBKIT_DOWNLOAD_STATUS_CANCELLED) {
+ ASSERT(priv->destinationURI);
+
+ gboolean downloading = priv->outputStream != NULL;
+ if (downloading)
+ webkit_download_close_stream(download);
+
+ GFile* src = g_file_new_for_uri(priv->destinationURI);
+ GFile* dest = g_file_new_for_uri(destination_uri);
+ GError* error = NULL;
+
+ g_file_move(src, dest, G_FILE_COPY_BACKUP, NULL, NULL, NULL, &error);
+
+ g_object_unref(src);
+ g_object_unref(dest);
+
+ g_free(priv->destinationURI);
+ priv->destinationURI = g_strdup(destination_uri);
+
+ if (error) {
+ gboolean handled;
+ g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_DESTINATION, error->message, &handled);
+ g_error_free(error);
+ return;
+ }
+
+ if (downloading) {
+ if (!webkit_download_open_stream_for_uri(download, destination_uri, TRUE)) {
+ webkit_download_cancel(download);
+ return;
+ }
+ }
+ } else {
+ g_free(priv->destinationURI);
+ priv->destinationURI = g_strdup(destination_uri);
+ }
+
+ // Only notify change if everything went fine.
+ g_object_notify(G_OBJECT(download), "destination-uri");
+}
+
+/**
+ * webkit_download_get_status:
+ * @download: the #WebKitDownload
+ *
+ * Obtains the current status of the download, as a
+ * #WebKitDownloadStatus.
+ *
+ * Returns: the current #WebKitDownloadStatus
+ *
+ * Since: 1.1.2
+ */
+WebKitDownloadStatus webkit_download_get_status(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), WEBKIT_DOWNLOAD_STATUS_ERROR);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ return priv->status;
+}
+
+static void webkit_download_set_status(WebKitDownload* download, WebKitDownloadStatus status)
+{
+ g_return_if_fail(WEBKIT_IS_DOWNLOAD(download));
+
+ WebKitDownloadPrivate* priv = download->priv;
+ priv->status = status;
+
+ g_object_notify(G_OBJECT(download), "status");
+}
+
+/**
+ * webkit_download_get_total_size:
+ * @download: the #WebKitDownload
+ *
+ * Returns the expected total size of the download. This is expected
+ * because the server may provide incorrect or missing
+ * Content-Length. Notice that this may grow over time, as it will be
+ * always the same as current_size in the cases where current size
+ * surpasses it.
+ *
+ * Returns: the expected total size of the downloaded file
+ *
+ * Since: 1.1.2
+ */
+guint64 webkit_download_get_total_size(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 0);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ SoupMessage* message = priv->networkResponse ? webkit_network_response_get_message(priv->networkResponse) : NULL;
+
+ if (!message)
+ return 0;
+
+ return MAX(priv->currentSize, static_cast<guint64>(soup_message_headers_get_content_length(message->response_headers)));
+}
+
+/**
+ * webkit_download_get_current_size:
+ * @download: the #WebKitDownload
+ *
+ * Current already downloaded size.
+ *
+ * Returns: the already downloaded size
+ *
+ * Since: 1.1.2
+ */
+guint64 webkit_download_get_current_size(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 0);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ return priv->currentSize;
+}
+
+/**
+ * webkit_download_get_progress:
+ * @download: a #WebKitDownload
+ *
+ * Determines the current progress of the download.
+ *
+ * Returns: a #gdouble ranging from 0.0 to 1.0.
+ *
+ * Since: 1.1.2
+ */
+gdouble webkit_download_get_progress(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 1.0);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ if (!priv->networkResponse)
+ return 0.0;
+
+ gdouble total_size = static_cast<gdouble>(webkit_download_get_total_size(download));
+
+ if (total_size == 0)
+ return 1.0;
+
+ return ((gdouble)priv->currentSize) / total_size;
+}
+
+/**
+ * webkit_download_get_elapsed_time:
+ * @download: a #WebKitDownload
+ *
+ * Elapsed time for the download in seconds, including any fractional
+ * part. If the download is finished, had an error or was cancelled
+ * this is the time between its start and the event.
+ *
+ * Returns: seconds since the download was started, as a #gdouble
+ *
+ * Since: 1.1.2
+ */
+gdouble webkit_download_get_elapsed_time(WebKitDownload* download)
+{
+ g_return_val_if_fail(WEBKIT_IS_DOWNLOAD(download), 0.0);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ if (!priv->timer)
+ return 0;
+
+ return g_timer_elapsed(priv->timer, NULL);
+}
+
+static void webkit_download_received_data(WebKitDownload* download, const gchar* data, int length)
+{
+ WebKitDownloadPrivate* priv = download->priv;
+
+ if (priv->currentSize == 0)
+ webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_STARTED);
+
+ ASSERT(priv->outputStream);
+
+ gsize bytes_written;
+ GError* error = NULL;
+
+ g_output_stream_write_all(G_OUTPUT_STREAM(priv->outputStream),
+ data, length, &bytes_written, NULL, &error);
+
+ if (error) {
+ gboolean handled;
+ g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_DESTINATION, error->message, &handled);
+ g_error_free(error);
+ return;
+ }
+
+ priv->currentSize += length;
+ g_object_notify(G_OBJECT(download), "current-size");
+
+ ASSERT(priv->networkResponse);
+ if (priv->currentSize > webkit_download_get_total_size(download))
+ g_object_notify(G_OBJECT(download), "total-size");
+
+ // Throttle progress notification to not consume high amounts of
+ // CPU on fast links, except when the last notification occured
+ // in more then 0.7 secs from now, or the last notified progress
+ // is passed in 1% or we reached the end.
+ static gdouble lastProgress = 0;
+ static gdouble lastElapsed = 0;
+ gdouble currentElapsed = g_timer_elapsed(priv->timer, NULL);
+ gdouble currentProgress = webkit_download_get_progress(download);
+
+ if (lastElapsed
+ && lastProgress
+ && (currentElapsed - lastElapsed) < 0.7
+ && (currentProgress - lastProgress) < 0.01
+ && currentProgress < 1.0) {
+ return;
+ }
+ lastElapsed = currentElapsed;
+ lastProgress = currentProgress;
+
+ g_object_notify(G_OBJECT(download), "progress");
+}
+
+static void webkit_download_finished_loading(WebKitDownload* download)
+{
+ webkit_download_close_stream(download);
+
+ WebKitDownloadPrivate* priv = download->priv;
+
+ g_timer_stop(priv->timer);
+
+ g_object_notify(G_OBJECT(download), "progress");
+ webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_FINISHED);
+}
+
+static void webkit_download_error(WebKitDownload* download, const ResourceError& error)
+{
+ webkit_download_close_stream(download);
+
+ WebKitDownloadPrivate* priv = download->priv;
+ GRefPtr<WebKitDownload> protect(download);
+
+ g_timer_stop(priv->timer);
+ webkit_download_set_status(download, WEBKIT_DOWNLOAD_STATUS_ERROR);
+
+ gboolean handled;
+ g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_NETWORK, error.localizedDescription().utf8().data(), &handled);
+}
+
+DownloadClient::DownloadClient(WebKitDownload* download)
+ : m_download(download)
+{
+}
+
+void DownloadClient::didReceiveResponse(ResourceHandle*, const ResourceResponse& response)
+{
+ webkit_download_set_response(m_download, response);
+}
+
+void DownloadClient::didReceiveData(ResourceHandle*, const char* data, int length, int lengthReceived)
+{
+ webkit_download_received_data(m_download, data, length);
+}
+
+void DownloadClient::didFinishLoading(ResourceHandle*, double)
+{
+ webkit_download_finished_loading(m_download);
+}
+
+void DownloadClient::didFail(ResourceHandle*, const ResourceError& error)
+{
+ webkit_download_error(m_download, error);
+}
+
+void DownloadClient::wasBlocked(ResourceHandle*)
+{
+ // FIXME: Implement this when we have the new frame loader signals
+ // and error handling.
+ notImplemented();
+}
+
+void DownloadClient::cannotShowURL(ResourceHandle*)
+{
+ // FIXME: Implement this when we have the new frame loader signals
+ // and error handling.
+ notImplemented();
+}
diff --git a/Source/WebKit/gtk/webkit/webkitdownload.h b/Source/WebKit/gtk/webkit/webkitdownload.h
new file mode 100644
index 0000000..a732a57
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitdownload.h
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitdownload_h
+#define webkitdownload_h
+
+#include <webkit/webkitdefines.h>
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_DOWNLOAD (webkit_download_get_type())
+#define WEBKIT_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_DOWNLOAD, WebKitDownload))
+#define WEBKIT_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_DOWNLOAD, WebKitDownloadClass))
+#define WEBKIT_IS_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_DOWNLOAD))
+#define WEBKIT_IS_DOWNLOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_DOWNLOAD))
+#define WEBKIT_DOWNLOAD_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_DOWNLOAD, WebKitDownloadClass))
+
+typedef enum {
+ WEBKIT_DOWNLOAD_STATUS_ERROR = -1,
+ WEBKIT_DOWNLOAD_STATUS_CREATED = 0,
+ WEBKIT_DOWNLOAD_STATUS_STARTED,
+ WEBKIT_DOWNLOAD_STATUS_CANCELLED,
+ WEBKIT_DOWNLOAD_STATUS_FINISHED
+} WebKitDownloadStatus;
+
+typedef enum {
+ WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER,
+ WEBKIT_DOWNLOAD_ERROR_DESTINATION,
+ WEBKIT_DOWNLOAD_ERROR_NETWORK
+} WebKitDownloadError;
+
+typedef struct _WebKitDownloadPrivate WebKitDownloadPrivate;
+
+struct _WebKitDownload {
+ GObject parent_instance;
+
+ WebKitDownloadPrivate *priv;
+};
+
+struct _WebKitDownloadClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_download_get_type (void);
+
+WEBKIT_API WebKitDownload*
+webkit_download_new (WebKitNetworkRequest *request);
+
+WEBKIT_API void
+webkit_download_start (WebKitDownload *download);
+
+WEBKIT_API void
+webkit_download_cancel (WebKitDownload *download);
+
+WEBKIT_API const gchar*
+webkit_download_get_uri (WebKitDownload *download);
+
+WEBKIT_API WebKitNetworkRequest*
+webkit_download_get_network_request (WebKitDownload *download);
+
+WEBKIT_API WebKitNetworkResponse*
+webkit_download_get_network_response (WebKitDownload *download);
+
+WEBKIT_API const gchar*
+webkit_download_get_suggested_filename (WebKitDownload *download);
+
+WEBKIT_API const gchar*
+webkit_download_get_destination_uri (WebKitDownload *download);
+
+WEBKIT_API void
+webkit_download_set_destination_uri (WebKitDownload *download,
+ const gchar *destination_uri);
+
+WEBKIT_API gdouble
+webkit_download_get_progress (WebKitDownload *download);
+
+WEBKIT_API gdouble
+webkit_download_get_elapsed_time (WebKitDownload *download);
+
+WEBKIT_API guint64
+webkit_download_get_total_size (WebKitDownload *download);
+
+WEBKIT_API guint64
+webkit_download_get_current_size (WebKitDownload *download);
+
+WEBKIT_API WebKitDownloadStatus
+webkit_download_get_status (WebKitDownload *download);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitdownloadprivate.h b/Source/WebKit/gtk/webkit/webkitdownloadprivate.h
new file mode 100644
index 0000000..13cc2a4
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitdownloadprivate.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitdownloadprivate_h
+#define webkitdownloadprivate_h
+
+#include "webkitdownload.h"
+
+extern "C" {
+
+WebKitDownload* webkit_download_new_with_handle(WebKitNetworkRequest*, WebCore::ResourceHandle*, const WebCore::ResourceResponse&);
+
+void webkit_download_set_suggested_filename(WebKitDownload*, const gchar* suggestedFilename);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkiterror.cpp b/Source/WebKit/gtk/webkit/webkiterror.cpp
new file mode 100644
index 0000000..e93a5d5
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkiterror.cpp
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 Luca Bruno <lethalman88@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#include "webkiterror.h"
+
+GQuark webkit_network_error_quark(void)
+{
+ return g_quark_from_static_string("webkit-network-error-quark");
+}
+
+GQuark webkit_policy_error_quark(void)
+{
+ return g_quark_from_static_string("webkit-policy-error-quark");
+}
+
+GQuark webkit_plugin_error_quark(void)
+{
+ return g_quark_from_static_string("webkit-plugin-error-quark");
+}
diff --git a/Source/WebKit/gtk/webkit/webkiterror.h b/Source/WebKit/gtk/webkit/webkiterror.h
new file mode 100644
index 0000000..8fec949
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkiterror.h
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2008 Luca Bruno <lethalman88@gmail.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkiterror_h
+#define webkiterror_h
+
+#include <glib.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_NETWORK_ERROR webkit_network_error_quark ()
+#define WEBKIT_POLICY_ERROR webkit_policy_error_quark ()
+#define WEBKIT_PLUGIN_ERROR webkit_plugin_error_quark ()
+
+typedef enum {
+ WEBKIT_NETWORK_ERROR_FAILED = 399,
+ WEBKIT_NETWORK_ERROR_TRANSPORT = 300,
+ WEBKIT_NETWORK_ERROR_UNKNOWN_PROTOCOL = 301,
+ WEBKIT_NETWORK_ERROR_CANCELLED = 302,
+ WEBKIT_NETWORK_ERROR_FILE_DOES_NOT_EXIST = 303,
+} WebKitNetworkError;
+
+/* Sync'd with Mac's WebKit Errors */
+typedef enum {
+ WEBKIT_POLICY_ERROR_FAILED = 199,
+ WEBKIT_POLICY_ERROR_CANNOT_SHOW_MIME_TYPE = 100,
+ WEBKIT_POLICY_ERROR_CANNOT_SHOW_URL = 101,
+ WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE = 102,
+ WEBKIT_POLICY_ERROR_CANNOT_USE_RESTRICTED_PORT = 103,
+} WebKitPolicyError;
+
+typedef enum {
+ WEBKIT_PLUGIN_ERROR_FAILED = 299,
+ WEBKIT_PLUGIN_ERROR_CANNOT_FIND_PLUGIN = 200,
+ WEBKIT_PLUGIN_ERROR_CANNOT_LOAD_PLUGIN = 201,
+ WEBKIT_PLUGIN_ERROR_JAVA_UNAVAILABLE = 202,
+ WEBKIT_PLUGIN_ERROR_CONNECTION_CANCELLED = 203,
+ WEBKIT_PLUGIN_ERROR_WILL_HANDLE_LOAD = 204,
+} WebKitPluginError;
+
+
+WEBKIT_API GQuark
+webkit_network_error_quark (void);
+
+WEBKIT_API GQuark
+webkit_policy_error_quark (void);
+
+WEBKIT_API GQuark
+webkit_plugin_error_quark (void);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp
new file mode 100644
index 0000000..2523c9b
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.cpp
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2010 Arno Renevier
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitgeolocationpolicydecision.h"
+
+#include "Geolocation.h"
+#include "webkitgeolocationpolicydecisionprivate.h"
+
+using namespace WebCore;
+
+/**
+ * SECTION:webkitgeolocationpolicydecision
+ * @short_description: Liaison between WebKit and the application regarding asynchronous geolocation policy decisions
+ *
+ * #WebKitGeolocationPolicyDecision objects are given to the application when
+ * geolocation-policy-decision-requested signal is emitted. The application
+ * uses it to tell the engine whether it wants to allow or deny geolocation for
+ * a given frame.
+ */
+
+G_DEFINE_TYPE(WebKitGeolocationPolicyDecision, webkit_geolocation_policy_decision, G_TYPE_OBJECT);
+
+struct _WebKitGeolocationPolicyDecisionPrivate {
+ WebKitWebFrame* frame;
+ Geolocation* geolocation;
+};
+
+static void webkit_geolocation_policy_decision_class_init(WebKitGeolocationPolicyDecisionClass* decisionClass)
+{
+ g_type_class_add_private(decisionClass, sizeof(WebKitGeolocationPolicyDecisionPrivate));
+}
+
+static void webkit_geolocation_policy_decision_init(WebKitGeolocationPolicyDecision* decision)
+{
+ decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecisionPrivate);
+}
+
+WebKitGeolocationPolicyDecision* webkit_geolocation_policy_decision_new(WebKitWebFrame* frame, Geolocation* geolocation)
+{
+ g_return_val_if_fail(frame, NULL);
+ WebKitGeolocationPolicyDecision* decision = WEBKIT_GEOLOCATION_POLICY_DECISION(g_object_new(WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, NULL));
+ WebKitGeolocationPolicyDecisionPrivate* priv = decision->priv;
+
+ priv->frame = frame;
+ priv->geolocation = geolocation;
+ return decision;
+}
+
+/**
+ * webkit_geolocation_policy_allow
+ * @decision: a #WebKitGeolocationPolicyDecision
+ *
+ * Will send the allow decision to the policy implementer.
+ *
+ * Since: 1.1.23
+ */
+void webkit_geolocation_policy_allow(WebKitGeolocationPolicyDecision* decision)
+{
+ g_return_if_fail(WEBKIT_IS_GEOLOCATION_POLICY_DECISION(decision));
+
+ WebKitGeolocationPolicyDecisionPrivate* priv = decision->priv;
+ priv->geolocation->setIsAllowed(TRUE);
+}
+
+/**
+ * webkit_geolocation_policy_deny
+ * @decision: a #WebKitGeolocationPolicyDecision
+ *
+ * Will send the deny decision to the policy implementer.
+ *
+ * Since: 1.1.23
+ */
+void webkit_geolocation_policy_deny(WebKitGeolocationPolicyDecision* decision)
+{
+ g_return_if_fail(WEBKIT_IS_GEOLOCATION_POLICY_DECISION(decision));
+
+ WebKitGeolocationPolicyDecisionPrivate* priv = decision->priv;
+ priv->geolocation->setIsAllowed(FALSE);
+}
+
diff --git a/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h
new file mode 100644
index 0000000..27e0ef2
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecision.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2010 Arno Renevier
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitgeolocationpolicydecision_h
+#define webkitgeolocationpolicydecision_h
+
+#include <glib-object.h>
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION (webkit_geolocation_policy_decision_get_type())
+#define WEBKIT_GEOLOCATION_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecision))
+#define WEBKIT_GEOLOCATION_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecisionClass))
+#define WEBKIT_IS_GEOLOCATION_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION))
+#define WEBKIT_IS_GEOLOCATION_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION))
+#define WEBKIT_GEOLOCATION_POLICY_DECISION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION, WebKitGeolocationPolicyDecisionClass))
+
+typedef struct _WebKitGeolocationPolicyDecisionPrivate WebKitGeolocationPolicyDecisionPrivate;
+struct _WebKitGeolocationPolicyDecision {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitGeolocationPolicyDecisionPrivate* priv;
+};
+
+struct _WebKitGeolocationPolicyDecisionClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_geolocation_policy_decision_get_type (void);
+
+WEBKIT_API void
+webkit_geolocation_policy_allow (WebKitGeolocationPolicyDecision* decision);
+
+WEBKIT_API void
+webkit_geolocation_policy_deny (WebKitGeolocationPolicyDecision* decision);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h
new file mode 100644
index 0000000..d250044
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitgeolocationpolicydecisionprivate.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitgeolocationpolicydecisionprivate_h
+#define webkitgeolocationpolicydecisionprivate_h
+
+#include "webkitgeolocationpolicydecision.h"
+
+extern "C" {
+
+WebKitGeolocationPolicyDecision* webkit_geolocation_policy_decision_new(WebKitWebFrame*, WebCore::Geolocation*);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitglobals.cpp b/Source/WebKit/gtk/webkit/webkitglobals.cpp
new file mode 100644
index 0000000..a97d53f
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitglobals.cpp
@@ -0,0 +1,282 @@
+/*
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ * Copyright (C) 2008, 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitglobals.h"
+
+#include "ApplicationCacheStorage.h"
+#include "Chrome.h"
+#include "FrameNetworkingContextGtk.h"
+#include "GOwnPtr.h"
+#include "IconDatabase.h"
+#include "Logging.h"
+#include "MemoryCache.h"
+#include "Page.h"
+#include "PageCache.h"
+#include "PageGroup.h"
+#include "TextEncodingRegistry.h"
+#include "Pasteboard.h"
+#include "PasteboardHelperGtk.h"
+#include "ResourceHandle.h"
+#include "ResourceHandleClient.h"
+#include "ResourceHandleInternal.h"
+#include "ResourceResponse.h"
+#include "webkitglobalsprivate.h"
+#include "webkitsoupauthdialog.h"
+#include "webkitwebdatabase.h"
+#include "webkitwebplugindatabaseprivate.h"
+#include <libintl.h>
+#include <runtime/InitializeThreading.h>
+#include <stdlib.h>
+#include <wtf/Threading.h>
+
+static WebKitCacheModel cacheModel = WEBKIT_CACHE_MODEL_DEFAULT;
+
+using namespace WebCore;
+
+/**
+ * SECTION:webkit
+ * @short_description: Global functions controlling WebKit
+ *
+ * WebKit manages many resources which are not related to specific
+ * views. These functions relate to cross-view limits, such as cache
+ * sizes, database quotas, and the HTTP session management.
+ */
+
+/**
+ * webkit_get_default_session:
+ *
+ * Retrieves the default #SoupSession used by all web views.
+ * Note that the session features are added by WebKit on demand,
+ * so if you insert your own #SoupCookieJar before any network
+ * traffic occurs, WebKit will use it instead of the default.
+ *
+ * Return value: (transfer none): the default #SoupSession
+ *
+ * Since: 1.1.1
+ */
+SoupSession* webkit_get_default_session ()
+{
+ webkitInit();
+ return ResourceHandle::defaultSession();
+}
+
+/**
+ * webkit_set_cache_model:
+ * @cache_model: a #WebKitCacheModel
+ *
+ * Specifies a usage model for WebViews, which WebKit will use to
+ * determine its caching behavior. All web views follow the cache
+ * model. This cache model determines the RAM and disk space to use
+ * for caching previously viewed content .
+ *
+ * Research indicates that users tend to browse within clusters of
+ * documents that hold resources in common, and to revisit previously
+ * visited documents. WebKit and the frameworks below it include
+ * built-in caches that take advantage of these patterns,
+ * substantially improving document load speed in browsing
+ * situations. The WebKit cache model controls the behaviors of all of
+ * these caches, including various WebCore caches.
+ *
+ * Browsers can improve document load speed substantially by
+ * specifying WEBKIT_CACHE_MODEL_WEB_BROWSER. Applications without a
+ * browsing interface can reduce memory usage substantially by
+ * specifying WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER. Default value is
+ * WEBKIT_CACHE_MODEL_WEB_BROWSER.
+ *
+ * Since: 1.1.18
+ */
+void webkit_set_cache_model(WebKitCacheModel model)
+{
+ webkitInit();
+
+ if (cacheModel == model)
+ return;
+
+ // FIXME: Add disk cache handling when soup has the API
+ guint cacheTotalCapacity;
+ guint cacheMinDeadCapacity;
+ guint cacheMaxDeadCapacity;
+ gdouble deadDecodedDataDeletionInterval;
+ guint pageCacheCapacity;
+
+ switch (model) {
+ case WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER:
+ pageCacheCapacity = 0;
+ cacheTotalCapacity = 0;
+ cacheMinDeadCapacity = 0;
+ cacheMaxDeadCapacity = 0;
+ deadDecodedDataDeletionInterval = 0;
+ break;
+ case WEBKIT_CACHE_MODEL_WEB_BROWSER:
+ // Page cache capacity (in pages). Comment from Mac port:
+ // (Research indicates that value / page drops substantially after 3 pages.)
+ pageCacheCapacity = 3;
+ cacheTotalCapacity = 32 * 1024 * 1024;
+ cacheMinDeadCapacity = cacheTotalCapacity / 4;
+ cacheMaxDeadCapacity = cacheTotalCapacity / 2;
+ deadDecodedDataDeletionInterval = 60;
+ break;
+ default:
+ g_return_if_reached();
+ }
+
+ memoryCache()->setCapacities(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity);
+ memoryCache()->setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
+ pageCache()->setCapacity(pageCacheCapacity);
+ cacheModel = model;
+}
+
+/**
+ * webkit_get_cache_model:
+ *
+ * Returns the current cache model. For more information about this
+ * value check the documentation of the function
+ * webkit_set_cache_model().
+ *
+ * Return value: the current #WebKitCacheModel
+ *
+ * Since: 1.1.18
+ */
+WebKitCacheModel webkit_get_cache_model()
+{
+ webkitInit();
+ return cacheModel;
+}
+
+/**
+ * webkit_get_web_plugin_database:
+ *
+ * Returns the current #WebKitWebPluginDatabase with information about
+ * all the plugins WebKit knows about in this instance.
+ *
+ * Return value: (transfer none): the current #WebKitWebPluginDatabase
+ *
+ * Since: 1.3.8
+ */
+WebKitWebPluginDatabase* webkit_get_web_plugin_database()
+{
+ static WebKitWebPluginDatabase* database = 0;
+
+ webkitInit();
+
+ if (!database)
+ database = webkit_web_plugin_database_new();
+
+ return database;
+}
+
+
+static GtkWidget* currentToplevelCallback(WebKitSoupAuthDialog* feature, SoupMessage* message, gpointer userData)
+{
+ gpointer messageData = g_object_get_data(G_OBJECT(message), "resourceHandle");
+ if (!messageData)
+ return NULL;
+
+ ResourceHandle* handle = static_cast<ResourceHandle*>(messageData);
+ if (!handle)
+ return NULL;
+
+ ResourceHandleInternal* d = handle->getInternal();
+ if (!d)
+ return NULL;
+
+ WebKit::FrameNetworkingContextGtk* context = static_cast<WebKit::FrameNetworkingContextGtk*>(d->m_context.get());
+ if (!context)
+ return NULL;
+
+ if (!context->coreFrame())
+ return NULL;
+
+ GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(context->coreFrame()->page()->chrome()->platformPageClient()));
+ if (gtk_widget_is_toplevel(toplevel))
+ return toplevel;
+ else
+ return NULL;
+}
+
+static void closeIconDatabaseOnExit()
+{
+ iconDatabase()->close();
+}
+
+void webkitInit()
+{
+ static bool isInitialized = false;
+ if (isInitialized)
+ return;
+ isInitialized = true;
+
+ bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+
+ JSC::initializeThreading();
+ WTF::initializeMainThread();
+
+ WebCore::InitializeLoggingChannelsIfNecessary();
+
+ // We make sure the text codecs have been initialized, because
+ // that may only be done by the main thread.
+ atomicCanonicalTextEncodingName("UTF-8");
+
+ gchar* databaseDirectory = g_build_filename(g_get_user_data_dir(), "webkit", "databases", NULL);
+ webkit_set_web_database_directory_path(databaseDirectory);
+
+#if ENABLE(OFFLINE_WEB_APPLICATIONS)
+ // FIXME: It should be possible for client applications to override the default appcache location
+ WebCore::cacheStorage().setCacheDirectory(databaseDirectory);
+#endif
+ g_free(databaseDirectory);
+
+ PageGroup::setShouldTrackVisitedLinks(true);
+
+ Pasteboard::generalPasteboard()->setHelper(WebKit::pasteboardHelperInstance());
+
+ iconDatabase()->setEnabled(true);
+
+ GOwnPtr<gchar> iconDatabasePath(g_build_filename(g_get_user_data_dir(), "webkit", "icondatabase", NULL));
+ iconDatabase()->open(iconDatabasePath.get());
+
+ atexit(closeIconDatabaseOnExit);
+
+ SoupSession* session = webkit_get_default_session();
+
+ SoupSessionFeature* authDialog = static_cast<SoupSessionFeature*>(g_object_new(WEBKIT_TYPE_SOUP_AUTH_DIALOG, NULL));
+ g_signal_connect(authDialog, "current-toplevel", G_CALLBACK(currentToplevelCallback), NULL);
+ soup_session_add_feature(session, authDialog);
+ g_object_unref(authDialog);
+
+ SoupSessionFeature* sniffer = static_cast<SoupSessionFeature*>(g_object_new(SOUP_TYPE_CONTENT_SNIFFER, NULL));
+ soup_session_add_feature(session, sniffer);
+ g_object_unref(sniffer);
+
+ soup_session_add_feature_by_type(session, SOUP_TYPE_CONTENT_DECODER);
+}
+
+namespace WebKit {
+
+PasteboardHelperGtk* pasteboardHelperInstance()
+{
+ static PasteboardHelperGtk* helper = new PasteboardHelperGtk();
+ return helper;
+}
+
+} /** end namespace WebKit */
+
diff --git a/Source/WebKit/gtk/webkit/webkitglobals.h b/Source/WebKit/gtk/webkit/webkitglobals.h
new file mode 100644
index 0000000..6d144fc
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitglobals.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitglobals_h
+#define webkitglobals_h
+
+#include "webkitdefines.h"
+#include <glib.h>
+#include <libsoup/soup.h>
+
+G_BEGIN_DECLS
+
+/*
+ * WebKitCacheModel:
+ * @WEBKIT_CACHE_MODEL_DEFAULT: The default cache model. This is
+ * WEBKIT_CACHE_MODEL_WEB_BROWSER.
+ * @WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER: Disable the cache completely, which
+ * substantially reduces memory usage. Useful for applications that only
+ * access local files.
+ * @WEBKIT_CACHE_MODEL_WEB_BROWSER: Improve document load speed substantially
+ * by caching previously viewed content.
+ *
+ * Enum values used for determining the webview cache model.
+ */
+typedef enum {
+ WEBKIT_CACHE_MODEL_DEFAULT,
+ WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER,
+ WEBKIT_CACHE_MODEL_WEB_BROWSER
+} WebKitCacheModel;
+
+WEBKIT_API SoupSession*
+webkit_get_default_session (void);
+
+WEBKIT_API WebKitWebPluginDatabase *
+webkit_get_web_plugin_database (void);
+
+WEBKIT_API void
+webkit_set_cache_model (WebKitCacheModel cache_model);
+
+WEBKIT_API WebKitCacheModel
+webkit_get_cache_model (void);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitglobalsprivate.h b/Source/WebKit/gtk/webkit/webkitglobalsprivate.h
new file mode 100644
index 0000000..5923f2e
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitglobalsprivate.h
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitglobalsprivate_h
+#define webkitglobalsprivate_h
+
+#include <glib.h>
+
+#define WEBKIT_PARAM_READABLE ((GParamFlags)(G_PARAM_READABLE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB))
+#define WEBKIT_PARAM_READWRITE ((GParamFlags)(G_PARAM_READWRITE|G_PARAM_STATIC_NAME|G_PARAM_STATIC_NICK|G_PARAM_STATIC_BLURB))
+
+namespace WebKit {
+
+class PasteboardHelperGtk;
+PasteboardHelperGtk* pasteboardHelperInstance();
+
+}
+
+extern "C" {
+
+void webkitInit();
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkithittestresult.cpp b/Source/WebKit/gtk/webkit/webkithittestresult.cpp
new file mode 100644
index 0000000..9632493
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkithittestresult.cpp
@@ -0,0 +1,278 @@
+/*
+ * Copyright (C) 2009 Collabora Ltd.
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkithittestresult.h"
+
+#include "GOwnPtr.h"
+#include "HitTestResult.h"
+#include "KURL.h"
+#include "WebKitDOMBinding.h"
+#include "WebKitDOMNode.h"
+#include "webkitenumtypes.h"
+#include "webkitglobals.h"
+#include "webkitglobalsprivate.h"
+#include <glib/gi18n-lib.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkithittestresult
+ * @short_description: The target of a mouse event
+ *
+ * This class holds context information about the coordinates
+ * specified by a GDK event.
+ */
+
+G_DEFINE_TYPE(WebKitHitTestResult, webkit_hit_test_result, G_TYPE_OBJECT)
+
+struct _WebKitHitTestResultPrivate {
+ guint context;
+ char* linkURI;
+ char* imageURI;
+ char* mediaURI;
+ WebKitDOMNode* innerNode;
+};
+
+enum {
+ PROP_0,
+
+ PROP_CONTEXT,
+ PROP_LINK_URI,
+ PROP_IMAGE_URI,
+ PROP_MEDIA_URI,
+ PROP_INNER_NODE
+};
+
+static void webkit_hit_test_result_finalize(GObject* object)
+{
+ WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object);
+ WebKitHitTestResultPrivate* priv = web_hit_test_result->priv;
+
+ g_free(priv->linkURI);
+ g_free(priv->imageURI);
+ g_free(priv->mediaURI);
+
+ G_OBJECT_CLASS(webkit_hit_test_result_parent_class)->finalize(object);
+}
+
+static void webkit_hit_test_result_dispose(GObject* object)
+{
+ g_object_unref(WEBKIT_HIT_TEST_RESULT(object)->priv->innerNode);
+
+ G_OBJECT_CLASS(webkit_hit_test_result_parent_class)->dispose(object);
+}
+
+static void webkit_hit_test_result_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec)
+{
+ WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object);
+ WebKitHitTestResultPrivate* priv = web_hit_test_result->priv;
+
+ switch(propertyID) {
+ case PROP_CONTEXT:
+ g_value_set_flags(value, priv->context);
+ break;
+ case PROP_LINK_URI:
+ g_value_set_string(value, priv->linkURI);
+ break;
+ case PROP_IMAGE_URI:
+ g_value_set_string(value, priv->imageURI);
+ break;
+ case PROP_MEDIA_URI:
+ g_value_set_string(value, priv->mediaURI);
+ break;
+ case PROP_INNER_NODE:
+ g_value_set_object(value, priv->innerNode);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec);
+ }
+}
+
+static void webkit_hit_test_result_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec)
+{
+ WebKitHitTestResult* web_hit_test_result = WEBKIT_HIT_TEST_RESULT(object);
+ WebKitHitTestResultPrivate* priv = web_hit_test_result->priv;
+
+ switch(propertyID) {
+ case PROP_CONTEXT:
+ priv->context = g_value_get_flags(value);
+ break;
+ case PROP_LINK_URI:
+ g_free (priv->linkURI);
+ priv->linkURI = g_value_dup_string(value);
+ break;
+ case PROP_IMAGE_URI:
+ g_free (priv->imageURI);
+ priv->imageURI = g_value_dup_string(value);
+ break;
+ case PROP_MEDIA_URI:
+ g_free (priv->mediaURI);
+ priv->mediaURI = g_value_dup_string(value);
+ break;
+ case PROP_INNER_NODE:
+ priv->innerNode = static_cast<WebKitDOMNode*>(g_value_get_object(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec);
+ }
+}
+
+static void webkit_hit_test_result_class_init(WebKitHitTestResultClass* webHitTestResultClass)
+{
+ GObjectClass* objectClass = G_OBJECT_CLASS(webHitTestResultClass);
+
+ objectClass->finalize = webkit_hit_test_result_finalize;
+ objectClass->dispose = webkit_hit_test_result_dispose;
+ objectClass->get_property = webkit_hit_test_result_get_property;
+ objectClass->set_property = webkit_hit_test_result_set_property;
+
+ webkitInit();
+
+ /**
+ * WebKitHitTestResult:context:
+ *
+ * Flags indicating the kind of target that received the event.
+ *
+ * Since: 1.1.15
+ */
+ g_object_class_install_property(objectClass, PROP_CONTEXT,
+ g_param_spec_flags("context",
+ _("Context"),
+ _("Flags indicating the kind of target that received the event."),
+ WEBKIT_TYPE_HIT_TEST_RESULT_CONTEXT,
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT,
+ static_cast<GParamFlags>((WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY))));
+
+ /**
+ * WebKitHitTestResult:link-uri:
+ *
+ * The URI to which the target that received the event points, if any.
+ *
+ * Since: 1.1.15
+ */
+ g_object_class_install_property(objectClass, PROP_LINK_URI,
+ g_param_spec_string("link-uri",
+ _("Link URI"),
+ _("The URI to which the target that received the event points, if any."),
+ NULL,
+ static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitHitTestResult:image-uri:
+ *
+ * The URI of the image that is part of the target that received the event, if any.
+ *
+ * Since: 1.1.15
+ */
+ g_object_class_install_property(objectClass, PROP_IMAGE_URI,
+ g_param_spec_string("image-uri",
+ _("Image URI"),
+ _("The URI of the image that is part of the target that received the event, if any."),
+ NULL,
+ static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitHitTestResult:media-uri:
+ *
+ * The URI of the media that is part of the target that received the event, if any.
+ *
+ * Since: 1.1.15
+ */
+ g_object_class_install_property(objectClass, PROP_MEDIA_URI,
+ g_param_spec_string("media-uri",
+ _("Media URI"),
+ _("The URI of the media that is part of the target that received the event, if any."),
+ NULL,
+ static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitHitTestResult:inner-node:
+ *
+ * The DOM node at the coordinates where the hit test
+ * happened. Keep in mind that the node might not be
+ * representative of the information given in the context
+ * property, since WebKit uses a series of heuristics to figure
+ * out that information. One common example is inner-node having
+ * the text node inside the anchor (<a>) tag; WebKit knows the
+ * whole context and will put WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK
+ * in the 'context' property, but the user might be confused by
+ * the lack of any link tag in 'inner-node'.
+ *
+ * Since: 1.3.2
+ */
+ g_object_class_install_property(objectClass, PROP_INNER_NODE,
+ g_param_spec_object("inner-node",
+ _("Inner node"),
+ _("The inner DOM node associated with the hit test result."),
+ WEBKIT_TYPE_DOM_NODE,
+ static_cast<GParamFlags>(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+ g_type_class_add_private(webHitTestResultClass, sizeof(WebKitHitTestResultPrivate));
+}
+
+static void webkit_hit_test_result_init(WebKitHitTestResult* web_hit_test_result)
+{
+ web_hit_test_result->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_hit_test_result, WEBKIT_TYPE_HIT_TEST_RESULT, WebKitHitTestResultPrivate);
+}
+
+namespace WebKit {
+
+WebKitHitTestResult* kit(const WebCore::HitTestResult& result)
+{
+ guint context = WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT;
+ GOwnPtr<char> linkURI(0);
+ GOwnPtr<char> imageURI(0);
+ GOwnPtr<char> mediaURI(0);
+ WebKitDOMNode* node = 0;
+
+ if (!result.absoluteLinkURL().isEmpty()) {
+ context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK;
+ linkURI.set(g_strdup(result.absoluteLinkURL().string().utf8().data()));
+ }
+
+ if (!result.absoluteImageURL().isEmpty()) {
+ context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE;
+ imageURI.set(g_strdup(result.absoluteImageURL().string().utf8().data()));
+ }
+
+ if (!result.absoluteMediaURL().isEmpty()) {
+ context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA;
+ mediaURI.set(g_strdup(result.absoluteMediaURL().string().utf8().data()));
+ }
+
+ if (result.isSelected())
+ context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION;
+
+ if (result.isContentEditable())
+ context |= WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE;
+
+ if (result.innerNonSharedNode())
+ node = kit(result.innerNonSharedNode());
+
+ return WEBKIT_HIT_TEST_RESULT(g_object_new(WEBKIT_TYPE_HIT_TEST_RESULT,
+ "link-uri", linkURI.get(),
+ "image-uri", imageURI.get(),
+ "media-uri", mediaURI.get(),
+ "context", context,
+ "inner-node", node,
+ NULL));
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkithittestresult.h b/Source/WebKit/gtk/webkit/webkithittestresult.h
new file mode 100644
index 0000000..6caa84e
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkithittestresult.h
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2009 Collabora Ltd.
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkithittestresult_h
+#define webkithittestresult_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_HIT_TEST_RESULT (webkit_hit_test_result_get_type())
+#define WEBKIT_HIT_TEST_RESULT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_HIT_TEST_RESULT, WebKitHitTestResult))
+#define WEBKIT_HIT_TEST_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_HIT_TEST_RESULT, WebKitHitTestResultClass))
+#define WEBKIT_IS_HIT_TEST_RESULT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_HIT_TEST_RESULT))
+#define WEBKIT_IS_HIT_TEST_RESULT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_HIT_TEST_RESULT))
+#define WEBKIT_HIT_TEST_RESULT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_HIT_TEST_RESULT, WebKitHitTestResultClass))
+
+typedef struct _WebKitHitTestResultPrivate WebKitHitTestResultPrivate;
+
+struct _WebKitHitTestResult {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitHitTestResultPrivate *priv;
+};
+
+struct _WebKitHitTestResultClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+/**
+ * WebKitHitTestResultContext
+ * @WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT: anywhere in the document.
+ * @WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK: a hyperlink element.
+ * @WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE: an image element.
+ * @WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA: a video or audio element.
+ * @WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION: the area is selected by
+ * the user.
+ * @WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE: the area is
+ * editable by the user.
+ */
+typedef enum
+{
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_DOCUMENT = 1 << 1,
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK = 1 << 2,
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE = 1 << 3,
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_MEDIA = 1 << 4,
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_SELECTION = 1 << 5,
+ WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE = 1 << 6,
+} WebKitHitTestResultContext;
+
+WEBKIT_API GType
+webkit_hit_test_result_get_type (void);
+
+G_END_DECLS
+
+#endif
+
diff --git a/Source/WebKit/gtk/webkit/webkithittestresultprivate.h b/Source/WebKit/gtk/webkit/webkithittestresultprivate.h
new file mode 100644
index 0000000..237ac27
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkithittestresultprivate.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkithittestresultprivate_h
+#define webkithittestresultprivate_h
+
+#include "HitTestResult.h"
+#include "webkithittestresult.h"
+
+namespace WebKit {
+
+WebKitHitTestResult* kit(const WebCore::HitTestResult&);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp b/Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp
new file mode 100644
index 0000000..7005637
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitnetworkrequest.cpp
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2007, 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2009 Gustavo Noronha Silva
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitnetworkrequest.h"
+
+#include "GRefPtr.h"
+#include "ResourceRequest.h"
+#include "webkitglobalsprivate.h"
+#include <glib/gi18n-lib.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkitnetworkrequest
+ * @short_description: The target of a navigation request
+ * @see_also: #WebKitWebView::navigation-policy-decision-requested
+ *
+ * This class represents the network related aspects of a navigation
+ * request. It is used whenever WebKit wants to provide information
+ * about a request that will be sent, or has been sent. Inside it you
+ * can find the URI of the request, and, for valid URIs, a
+ * #SoupMessage object, which provides access to further information
+ * such as headers.
+ *
+ */
+
+G_DEFINE_TYPE(WebKitNetworkRequest, webkit_network_request, G_TYPE_OBJECT);
+
+struct _WebKitNetworkRequestPrivate {
+ gchar* uri;
+ SoupMessage* message;
+};
+
+enum {
+ PROP_0,
+
+ PROP_URI,
+ PROP_MESSAGE,
+};
+
+static void webkit_network_request_dispose(GObject* object)
+{
+ WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object);
+ WebKitNetworkRequestPrivate* priv = request->priv;
+
+ if (priv->message) {
+ g_object_unref(priv->message);
+ priv->message = NULL;
+ }
+
+ G_OBJECT_CLASS(webkit_network_request_parent_class)->dispose(object);
+}
+
+static void webkit_network_request_finalize(GObject* object)
+{
+ WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object);
+ WebKitNetworkRequestPrivate* priv = request->priv;
+
+ g_free(priv->uri);
+
+ G_OBJECT_CLASS(webkit_network_request_parent_class)->finalize(object);
+}
+
+static void webkit_network_request_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec)
+{
+ WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object);
+
+ switch(propertyID) {
+ case PROP_URI:
+ g_value_set_string(value, webkit_network_request_get_uri(request));
+ break;
+ case PROP_MESSAGE:
+ g_value_set_object(value, webkit_network_request_get_message(request));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec);
+ }
+}
+
+static void webkit_network_request_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec)
+{
+ WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object);
+ WebKitNetworkRequestPrivate* priv = request->priv;
+
+ switch(propertyID) {
+ case PROP_URI:
+ webkit_network_request_set_uri(request, g_value_get_string(value));
+ break;
+ case PROP_MESSAGE:
+ priv->message = SOUP_MESSAGE(g_value_dup_object(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec);
+ }
+}
+
+static void webkit_network_request_class_init(WebKitNetworkRequestClass* requestClass)
+{
+ GObjectClass* objectClass = G_OBJECT_CLASS(requestClass);
+
+ objectClass->dispose = webkit_network_request_dispose;
+ objectClass->finalize = webkit_network_request_finalize;
+ objectClass->get_property = webkit_network_request_get_property;
+ objectClass->set_property = webkit_network_request_set_property;
+
+ webkitInit();
+
+ /**
+ * WebKitNetworkRequest:uri:
+ *
+ * The URI to which the request will be made.
+ *
+ * Since: 1.1.10
+ */
+ g_object_class_install_property(objectClass, PROP_URI,
+ g_param_spec_string("uri",
+ _("URI"),
+ _("The URI to which the request will be made."),
+ NULL,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE)));
+
+ /**
+ * WebKitNetworkRequest:message:
+ *
+ * The #SoupMessage that backs the request.
+ *
+ * Since: 1.1.10
+ */
+ g_object_class_install_property(objectClass, PROP_MESSAGE,
+ g_param_spec_object("message",
+ _("Message"),
+ _("The SoupMessage that backs the request."),
+ SOUP_TYPE_MESSAGE,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)));
+
+ g_type_class_add_private(requestClass, sizeof(WebKitNetworkRequestPrivate));
+}
+
+static void webkit_network_request_init(WebKitNetworkRequest* request)
+{
+ WebKitNetworkRequestPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(request, WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestPrivate);
+ request->priv = priv;
+}
+
+/**
+ * webkit_network_request_new:
+ * @uri: an URI
+ *
+ * Creates a new #WebKitNetworkRequest initialized with an URI.
+ *
+ * Returns: a new #WebKitNetworkRequest, or %NULL if the URI is
+ * invalid.
+ */
+WebKitNetworkRequest* webkit_network_request_new(const gchar* uri)
+{
+ g_return_val_if_fail(uri, NULL);
+
+ return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", uri, NULL));
+}
+
+/**
+ * webkit_network_request_set_uri:
+ * @request: a #WebKitNetworkRequest
+ * @uri: an URI
+ *
+ * Sets the URI held and used by the given request. When the request
+ * has an associated #SoupMessage, its URI will also be set by this
+ * call.
+ *
+ */
+void webkit_network_request_set_uri(WebKitNetworkRequest* request, const gchar* uri)
+{
+ g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request));
+ g_return_if_fail(uri);
+
+ WebKitNetworkRequestPrivate* priv = request->priv;
+
+ if (priv->uri)
+ g_free(priv->uri);
+ priv->uri = g_strdup(uri);
+
+ if (!priv->message)
+ return;
+
+ SoupURI* soupURI = soup_uri_new(uri);
+ g_return_if_fail(soupURI);
+
+ soup_message_set_uri(priv->message, soupURI);
+ soup_uri_free(soupURI);
+}
+
+/**
+ * webkit_network_request_get_uri:
+ * @request: a #WebKitNetworkRequest
+ *
+ * Returns: the uri of the #WebKitNetworkRequest
+ *
+ * Since: 1.0.0
+ */
+G_CONST_RETURN gchar* webkit_network_request_get_uri(WebKitNetworkRequest* request)
+{
+ g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL);
+
+ WebKitNetworkRequestPrivate* priv = request->priv;
+
+ if (priv->uri)
+ return priv->uri;
+
+ SoupURI* soupURI = soup_message_get_uri(priv->message);
+ priv->uri = soup_uri_to_string(soupURI, FALSE);
+ return priv->uri;
+}
+
+/**
+ * webkit_network_request_get_message:
+ * @request: a #WebKitNetworkRequest
+ *
+ * Obtains the #SoupMessage held and used by the given request. Notice
+ * that modification of the SoupMessage of a request by signal
+ * handlers is only supported (as in, will only affect what is
+ * actually sent to the server) where explicitly documented.
+ *
+ * Returns: (transfer none): the #SoupMessage
+ * Since: 1.1.9
+ */
+SoupMessage* webkit_network_request_get_message(WebKitNetworkRequest* request)
+{
+ g_return_val_if_fail(WEBKIT_IS_NETWORK_REQUEST(request), NULL);
+
+ WebKitNetworkRequestPrivate* priv = request->priv;
+
+ return priv->message;
+}
+
+namespace WebKit {
+
+WebKitNetworkRequest* kitNew(const WebCore::ResourceRequest& resourceRequest)
+{
+ GRefPtr<SoupMessage> soupMessage(adoptGRef(resourceRequest.toSoupMessage()));
+ if (soupMessage)
+ return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", soupMessage.get(), NULL));
+
+ return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", resourceRequest.url().string().utf8().data(), NULL));
+}
+
+WebCore::ResourceRequest core(WebKitNetworkRequest* request)
+{
+ SoupMessage* soupMessage = webkit_network_request_get_message(request);
+ if (soupMessage)
+ return WebCore::ResourceRequest(soupMessage);
+
+ WebCore::KURL url = WebCore::KURL(WebCore::KURL(), String::fromUTF8(webkit_network_request_get_uri(request)));
+ return WebCore::ResourceRequest(url);
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitnetworkrequest.h b/Source/WebKit/gtk/webkit/webkitnetworkrequest.h
new file mode 100644
index 0000000..825ca9e
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitnetworkrequest.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitnetworkrequest_h
+#define webkitnetworkrequest_h
+
+#include <glib-object.h>
+#include <libsoup/soup.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_NETWORK_REQUEST (webkit_network_request_get_type())
+#define WEBKIT_NETWORK_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequest))
+#define WEBKIT_NETWORK_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestClass))
+#define WEBKIT_IS_NETWORK_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_NETWORK_REQUEST))
+#define WEBKIT_IS_NETWORK_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_NETWORK_REQUEST))
+#define WEBKIT_NETWORK_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestClass))
+
+typedef struct _WebKitNetworkRequestPrivate WebKitNetworkRequestPrivate;
+
+struct _WebKitNetworkRequest {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitNetworkRequestPrivate *priv;
+};
+
+struct _WebKitNetworkRequestClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_network_request_get_type (void);
+
+WEBKIT_API WebKitNetworkRequest *
+webkit_network_request_new (const gchar *uri);
+
+WEBKIT_API void
+webkit_network_request_set_uri (WebKitNetworkRequest *request,
+ const gchar* uri);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_network_request_get_uri (WebKitNetworkRequest *request);
+
+WEBKIT_API SoupMessage *
+webkit_network_request_get_message(WebKitNetworkRequest* request);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h b/Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h
new file mode 100644
index 0000000..84b4593
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitnetworkrequestprivate.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitnetworkrequestprivate_h
+#define webkitnetworkrequestprivate_h
+
+namespace WebKit {
+
+WebCore::ResourceRequest core(WebKitNetworkRequest*);
+WebKitNetworkRequest* kitNew(const WebCore::ResourceRequest&);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp b/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp
new file mode 100644
index 0000000..4b8661b
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitnetworkresponse.cpp
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2007, 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2009 Gustavo Noronha Silva
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitnetworkresponse.h"
+
+#include "GRefPtr.h"
+#include "ResourceResponse.h"
+#include "webkitglobalsprivate.h"
+#include <glib/gi18n-lib.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkitnetworkresponse
+ * @short_description: the response given to a network request
+ * @see_also: #WebKitNetworkRequest
+ *
+ * This class represents the network related aspects of a navigation
+ * response.
+ *
+ * Since: 1.1.14
+ */
+
+G_DEFINE_TYPE(WebKitNetworkResponse, webkit_network_response, G_TYPE_OBJECT);
+
+struct _WebKitNetworkResponsePrivate {
+ gchar* uri;
+ SoupMessage* message;
+};
+
+#define WEBKIT_NETWORK_RESPONSE_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponsePrivate))
+
+enum {
+ PROP_0,
+
+ PROP_URI,
+ PROP_MESSAGE,
+};
+
+static void webkit_network_response_dispose(GObject* object)
+{
+ WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object);
+ WebKitNetworkResponsePrivate* priv = response->priv;
+
+ if (priv->message) {
+ g_object_unref(priv->message);
+ priv->message = NULL;
+ }
+
+ G_OBJECT_CLASS(webkit_network_response_parent_class)->dispose(object);
+}
+
+static void webkit_network_response_finalize(GObject* object)
+{
+ WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object);
+ WebKitNetworkResponsePrivate* priv = response->priv;
+
+ g_free(priv->uri);
+
+ G_OBJECT_CLASS(webkit_network_response_parent_class)->finalize(object);
+}
+
+static void webkit_network_response_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* pspec)
+{
+ WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object);
+
+ switch(propertyID) {
+ case PROP_URI:
+ g_value_set_string(value, webkit_network_response_get_uri(response));
+ break;
+ case PROP_MESSAGE:
+ g_value_set_object(value, webkit_network_response_get_message(response));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec);
+ }
+}
+
+static void webkit_network_response_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* pspec)
+{
+ WebKitNetworkResponse* response = WEBKIT_NETWORK_RESPONSE(object);
+ WebKitNetworkResponsePrivate* priv = response->priv;
+
+ switch(propertyID) {
+ case PROP_URI:
+ webkit_network_response_set_uri(response, g_value_get_string(value));
+ break;
+ case PROP_MESSAGE:
+ priv->message = SOUP_MESSAGE(g_value_dup_object(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, pspec);
+ }
+}
+
+static void webkit_network_response_class_init(WebKitNetworkResponseClass* responseClass)
+{
+ GObjectClass* objectClass = G_OBJECT_CLASS(responseClass);
+
+ objectClass->dispose = webkit_network_response_dispose;
+ objectClass->finalize = webkit_network_response_finalize;
+ objectClass->get_property = webkit_network_response_get_property;
+ objectClass->set_property = webkit_network_response_set_property;
+
+ webkitInit();
+
+ /**
+ * WebKitNetworkResponse:uri:
+ *
+ * The URI to which the response will be made.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(objectClass, PROP_URI,
+ g_param_spec_string("uri",
+ _("URI"),
+ _("The URI to which the response will be made."),
+ NULL,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE)));
+
+ /**
+ * WebKitNetworkResponse:message:
+ *
+ * The #SoupMessage that backs the response.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(objectClass, PROP_MESSAGE,
+ g_param_spec_object("message",
+ _("Message"),
+ _("The SoupMessage that backs the response."),
+ SOUP_TYPE_MESSAGE,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)));
+
+ g_type_class_add_private(responseClass, sizeof(WebKitNetworkResponsePrivate));
+}
+
+static void webkit_network_response_init(WebKitNetworkResponse* response)
+{
+ response->priv = WEBKIT_NETWORK_RESPONSE_GET_PRIVATE(response);
+}
+
+/**
+ * webkit_network_response_new:
+ * @uri: an URI
+ *
+ * Creates a new #WebKitNetworkResponse initialized with an URI.
+ *
+ * Returns: a new #WebKitNetworkResponse, or %NULL if the URI is
+ * invalid.
+ *
+ * Since: 1.1.14
+ */
+WebKitNetworkResponse* webkit_network_response_new(const gchar* uri)
+{
+ g_return_val_if_fail(uri, NULL);
+
+ return WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "uri", uri, NULL));
+}
+
+/**
+ * webkit_network_response_set_uri:
+ * @response: a #WebKitNetworkResponse
+ * @uri: an URI
+ *
+ * Sets the URI held and used by the given response. When the response
+ * has an associated #SoupMessage, its URI will also be set by this
+ * call.
+ *
+ * Since: 1.1.14
+ */
+void webkit_network_response_set_uri(WebKitNetworkResponse* response, const gchar* uri)
+{
+ g_return_if_fail(WEBKIT_IS_NETWORK_RESPONSE(response));
+ g_return_if_fail(uri);
+
+ WebKitNetworkResponsePrivate* priv = response->priv;
+
+ if (priv->uri)
+ g_free(priv->uri);
+ priv->uri = g_strdup(uri);
+
+ if (!priv->message)
+ return;
+
+ SoupURI* soupURI = soup_uri_new(uri);
+ g_return_if_fail(soupURI);
+
+ soup_message_set_uri(priv->message, soupURI);
+ soup_uri_free(soupURI);
+}
+
+/**
+ * webkit_network_response_get_uri:
+ * @response: a #WebKitNetworkResponse
+ *
+ * Returns: the uri of the #WebKitNetworkResponse
+ *
+ * Since: 1.1.14
+ */
+G_CONST_RETURN gchar* webkit_network_response_get_uri(WebKitNetworkResponse* response)
+{
+ g_return_val_if_fail(WEBKIT_IS_NETWORK_RESPONSE(response), NULL);
+
+ WebKitNetworkResponsePrivate* priv = response->priv;
+
+ if (priv->uri)
+ return priv->uri;
+
+ SoupURI* soupURI = soup_message_get_uri(priv->message);
+ priv->uri = soup_uri_to_string(soupURI, FALSE);
+ return priv->uri;
+}
+
+/**
+ * webkit_network_response_get_message:
+ * @response: a #WebKitNetworkResponse
+ *
+ * Obtains the #SoupMessage that represents the given response. Notice
+ * that only the response side of the HTTP conversation is
+ * represented.
+ *
+ * Returns: (transfer none): the #SoupMessage
+ * Since: 1.1.14
+ */
+SoupMessage* webkit_network_response_get_message(WebKitNetworkResponse* response)
+{
+ g_return_val_if_fail(WEBKIT_IS_NETWORK_RESPONSE(response), NULL);
+
+ WebKitNetworkResponsePrivate* priv = response->priv;
+
+ return priv->message;
+}
+
+namespace WebKit {
+
+WebCore::ResourceResponse core(WebKitNetworkResponse* response)
+{
+ SoupMessage* soupMessage = webkit_network_response_get_message(response);
+ if (soupMessage)
+ return WebCore::ResourceResponse(soupMessage);
+
+ return WebCore::ResourceResponse();
+}
+
+WebKitNetworkResponse* kitNew(const WebCore::ResourceResponse& resourceResponse)
+{
+ GRefPtr<SoupMessage> soupMessage(adoptGRef(resourceResponse.toSoupMessage()));
+ if (soupMessage)
+ return WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "message", soupMessage.get(), NULL));
+
+ return WEBKIT_NETWORK_RESPONSE(g_object_new(WEBKIT_TYPE_NETWORK_RESPONSE, "uri", resourceResponse.url().string().utf8().data(), NULL));
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitnetworkresponse.h b/Source/WebKit/gtk/webkit/webkitnetworkresponse.h
new file mode 100644
index 0000000..a00308d
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitnetworkresponse.h
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitnewtorkresponse_h
+#define webkitnewtorkresponse_h
+
+#include <glib-object.h>
+#include <libsoup/soup.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_NETWORK_RESPONSE (webkit_network_response_get_type())
+#define WEBKIT_NETWORK_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponse))
+#define WEBKIT_NETWORK_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponseClass))
+#define WEBKIT_IS_NETWORK_RESPONSE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_NETWORK_RESPONSE))
+#define WEBKIT_IS_NETWORK_RESPONSE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_NETWORK_RESPONSE))
+#define WEBKIT_NETWORK_RESPONSE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_NETWORK_RESPONSE, WebKitNetworkResponseClass))
+
+typedef struct _WebKitNetworkResponsePrivate WebKitNetworkResponsePrivate;
+
+struct _WebKitNetworkResponse {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitNetworkResponsePrivate *priv;
+};
+
+struct _WebKitNetworkResponseClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_network_response_get_type (void);
+
+WEBKIT_API WebKitNetworkResponse *
+webkit_network_response_new (const gchar *uri);
+
+WEBKIT_API void
+webkit_network_response_set_uri (WebKitNetworkResponse *response,
+ const gchar* uri);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_network_response_get_uri (WebKitNetworkResponse *response);
+
+WEBKIT_API SoupMessage *
+webkit_network_response_get_message(WebKitNetworkResponse* response);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h b/Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h
new file mode 100644
index 0000000..ab38a50
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitnetworkresponseprivate.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitnetworkresponseprivate_h
+#define webkitnetworkresponseprivate_h
+
+#include "ResourceResponse.h"
+
+namespace WebKit {
+
+WebCore::ResourceResponse core(WebKitNetworkResponse*);
+WebKitNetworkResponse* kitNew(const WebCore::ResourceResponse&);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp b/Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp
new file mode 100644
index 0000000..5f9afae
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitsecurityorigin.cpp
@@ -0,0 +1,425 @@
+/*
+ * Copyright (C) 2009 Martin Robinson, Jan Michael C. Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitsecurityorigin.h"
+
+#include "DatabaseTracker.h"
+#include "PlatformString.h"
+#include "webkitglobalsprivate.h"
+#include "webkitsecurityoriginprivate.h"
+#include <glib/gi18n-lib.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkitsecurityorigin
+ * @short_description: A security boundary for web sites
+ *
+ * #WebKitSecurityOrigin is a representation of a security domain defined
+ * by web sites. An origin consists of a host name, a protocol, and a port
+ * number. Web sites with the same security origin can access each other's
+ * resources for client-side scripting or database access.
+ *
+ * Use #webkit_web_frame_get_security_origin to get the security origin of a
+ * #WebKitWebFrame.
+ *
+ * Database quotas and usages are also defined per security origin. The
+ * cumulative disk usage of an origin's databases may be retrieved with
+ * #webkit_security_origin_get_web_database_usage. An origin's quota can be
+ * adjusted with #webkit_security_origin_set_web_database_quota.
+ */
+
+using namespace WebKit;
+
+enum {
+ PROP_0,
+
+ PROP_PROTOCOL,
+ PROP_HOST,
+ PROP_PORT,
+ PROP_DATABASE_USAGE,
+ PROP_DATABASE_QUOTA
+};
+
+G_DEFINE_TYPE(WebKitSecurityOrigin, webkit_security_origin, G_TYPE_OBJECT)
+
+static void webkit_security_origin_finalize(GObject* object)
+{
+ WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object);
+ WebKitSecurityOriginPrivate* priv = securityOrigin->priv;
+
+ g_free(priv->protocol);
+ g_free(priv->host);
+
+ G_OBJECT_CLASS(webkit_security_origin_parent_class)->finalize(object);
+}
+
+static void webkit_security_origin_dispose(GObject* object)
+{
+ WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object);
+ WebKitSecurityOriginPrivate* priv = securityOrigin->priv;
+
+ if (!priv->disposed) {
+ priv->coreOrigin->deref();
+ g_hash_table_destroy(priv->webDatabases);
+ priv->disposed = true;
+ }
+
+ G_OBJECT_CLASS(webkit_security_origin_parent_class)->dispose(object);
+}
+
+static void webkit_security_origin_set_property(GObject* object, guint propId, const GValue* value, GParamSpec* pspec)
+{
+ WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object);
+
+ switch (propId) {
+ case PROP_DATABASE_QUOTA:
+ webkit_security_origin_set_web_database_quota(securityOrigin, g_value_get_uint64(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
+ break;
+ }
+}
+
+static void webkit_security_origin_get_property(GObject* object, guint propId, GValue* value, GParamSpec* pspec)
+{
+ WebKitSecurityOrigin* securityOrigin = WEBKIT_SECURITY_ORIGIN(object);
+
+ switch (propId) {
+ case PROP_PROTOCOL:
+ g_value_set_string(value, webkit_security_origin_get_protocol(securityOrigin));
+ break;
+ case PROP_HOST:
+ g_value_set_string(value, webkit_security_origin_get_host(securityOrigin));
+ break;
+ case PROP_PORT:
+ g_value_set_uint(value, webkit_security_origin_get_port(securityOrigin));
+ break;
+ case PROP_DATABASE_USAGE:
+ g_value_set_uint64(value, webkit_security_origin_get_web_database_usage(securityOrigin));
+ break;
+ case PROP_DATABASE_QUOTA:
+ g_value_set_uint64(value, webkit_security_origin_get_web_database_quota(securityOrigin));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
+ break;
+ }
+}
+
+static GHashTable* webkit_security_origins()
+{
+ static GHashTable* securityOrigins = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, g_object_unref);
+ return securityOrigins;
+}
+
+static void webkit_security_origin_class_init(WebKitSecurityOriginClass* klass)
+{
+ GObjectClass* gobjectClass = G_OBJECT_CLASS(klass);
+ gobjectClass->dispose = webkit_security_origin_dispose;
+ gobjectClass->finalize = webkit_security_origin_finalize;
+ gobjectClass->set_property = webkit_security_origin_set_property;
+ gobjectClass->get_property = webkit_security_origin_get_property;
+
+ /**
+ * WebKitSecurityOrigin:protocol:
+ *
+ * The protocol of the security origin.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_PROTOCOL,
+ g_param_spec_string("protocol",
+ _("Protocol"),
+ _("The protocol of the security origin"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitSecurityOrigin:host:
+ *
+ * The host of the security origin.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_HOST,
+ g_param_spec_string("host",
+ _("Host"),
+ _("The host of the security origin"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitSecurityOrigin:port:
+ *
+ * The port of the security origin.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_PORT,
+ g_param_spec_uint("port",
+ _("Port"),
+ _("The port of the security origin"),
+ 0, G_MAXUSHORT, 0,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitSecurityOrigin:web-database-usage:
+ *
+ * The cumulative size of all web databases in the security origin in bytes.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_DATABASE_USAGE,
+ g_param_spec_uint64("web-database-usage",
+ _("Web Database Usage"),
+ _("The cumulative size of all web databases in the security origin"),
+ 0, G_MAXUINT64, 0,
+ WEBKIT_PARAM_READABLE));
+ /**
+ * WebKitSecurityOrigin:web-database-quota:
+ *
+ * The web database qouta of the security origin in bytes.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_DATABASE_QUOTA,
+ g_param_spec_uint64("web-database-quota",
+ _("Web Database Quota"),
+ _("The web database quota of the security origin in bytes"),
+ 0, G_MAXUINT64, 0,
+ WEBKIT_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(WebKitSecurityOriginPrivate));
+}
+
+static void webkit_security_origin_init(WebKitSecurityOrigin* securityOrigin)
+{
+ WebKitSecurityOriginPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(securityOrigin, WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginPrivate);
+ priv->webDatabases = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref);
+ securityOrigin->priv = priv;
+}
+
+/**
+ * webkit_security_origin_get_protocol:
+ * @securityOrigin: a #WebKitSecurityOrigin
+ *
+ * Returns the protocol for the security origin.
+ *
+ * Returns: the protocol for the security origin
+ *
+ * Since: 1.1.14
+ **/
+G_CONST_RETURN gchar* webkit_security_origin_get_protocol(WebKitSecurityOrigin* securityOrigin)
+{
+ g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL);
+
+ WebKitSecurityOriginPrivate* priv = securityOrigin->priv;
+ WTF::String protocol = priv->coreOrigin->protocol();
+
+ if (!priv->protocol)
+ priv->protocol = g_strdup(protocol.utf8().data());
+
+ return priv->protocol;
+}
+
+/**
+ * webkit_security_origin_get_host:
+ * @securityOrigin: a #WebKitSecurityOrigin
+ *
+ * Returns the hostname for the security origin.
+ *
+ * Returns: the hostname for the security origin
+ *
+ * Since: 1.1.14
+ **/
+G_CONST_RETURN gchar* webkit_security_origin_get_host(WebKitSecurityOrigin* securityOrigin)
+{
+ g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL);
+
+ WebKitSecurityOriginPrivate* priv = securityOrigin->priv;
+ WTF::String host = priv->coreOrigin->host();
+
+ if (!priv->host)
+ priv->host = g_strdup(host.utf8().data());
+
+ return priv->host;
+}
+
+/**
+ * webkit_security_origin_get_port:
+ * @securityOrigin: a #WebKitSecurityOrigin
+ *
+ * Returns the port for the security origin.
+ *
+ * Returns: the port for the security origin
+ *
+ * Since: 1.1.14
+ **/
+guint webkit_security_origin_get_port(WebKitSecurityOrigin* securityOrigin)
+{
+ g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), 0);
+
+ WebCore::SecurityOrigin* coreOrigin = core(securityOrigin);
+ return coreOrigin->port();
+}
+
+/**
+ * webkit_security_origin_get_web_database_usage:
+ * @securityOrigin: a #WebKitSecurityOrigin
+ *
+ * Returns the cumulative size of all Web Database database's in the origin
+ * in bytes.
+ *
+ * Returns: the cumulative size of all databases
+ *
+ * Since: 1.1.14
+ **/
+guint64 webkit_security_origin_get_web_database_usage(WebKitSecurityOrigin* securityOrigin)
+{
+ g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), 0);
+
+#if ENABLE(DATABASE)
+ WebCore::SecurityOrigin* coreOrigin = core(securityOrigin);
+ return WebCore::DatabaseTracker::tracker().usageForOrigin(coreOrigin);
+#else
+ return 0;
+#endif
+}
+
+/**
+ * webkit_security_origin_get_web_database_quota:
+ * @securityOrigin: a #WebKitSecurityOrigin
+ *
+ * Returns the quota for Web Database storage of the security origin
+ * in bytes.
+ *
+ * Returns: the Web Database quota
+ *
+ * Since: 1.1.14
+ **/
+guint64 webkit_security_origin_get_web_database_quota(WebKitSecurityOrigin* securityOrigin)
+{
+ g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), 0);
+
+#if ENABLE(DATABASE)
+ WebCore::SecurityOrigin* coreOrigin = core(securityOrigin);
+ return WebCore::DatabaseTracker::tracker().quotaForOrigin(coreOrigin);
+#else
+ return 0;
+#endif
+}
+
+/**
+ * webkit_security_origin_set_web_database_quota:
+ * @securityOrigin: a #WebKitSecurityOrigin
+ * @quota: a new Web Database quota in bytes
+ *
+ * Adjust the quota for Web Database storage of the security origin
+ *
+ * Since: 1.1.14
+ **/
+void webkit_security_origin_set_web_database_quota(WebKitSecurityOrigin* securityOrigin, guint64 quota)
+{
+ g_return_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin));
+
+#if ENABLE(DATABASE)
+ WebCore::SecurityOrigin* coreOrigin = core(securityOrigin);
+ WebCore::DatabaseTracker::tracker().setQuota(coreOrigin, quota);
+#endif
+}
+
+/**
+ * webkit_security_origin_get_all_web_databases:
+ * @securityOrigin: a #WebKitSecurityOrigin
+ *
+ * Returns a list of all Web Databases in the security origin.
+ *
+ * Returns: (transfer container) (element-type WebKitWebDatabase): a
+ * #GList of databases in the security origin.
+ *
+ * Since: 1.1.14
+ **/
+GList* webkit_security_origin_get_all_web_databases(WebKitSecurityOrigin* securityOrigin)
+{
+ g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL);
+ GList* databases = NULL;
+
+#if ENABLE(DATABASE)
+ WebCore::SecurityOrigin* coreOrigin = core(securityOrigin);
+ Vector<WTF::String> databaseNames;
+
+ if (!WebCore::DatabaseTracker::tracker().databaseNamesForOrigin(coreOrigin, databaseNames))
+ return NULL;
+
+ for (unsigned i = 0; i < databaseNames.size(); ++i) {
+ WebKitWebDatabase* database = webkit_security_origin_get_web_database(securityOrigin, databaseNames[i].utf8().data());
+ databases = g_list_append(databases, database);
+ }
+#endif
+
+ return databases;
+}
+
+WebKitWebDatabase* webkit_security_origin_get_web_database(WebKitSecurityOrigin* securityOrigin, const gchar* databaseName)
+{
+ g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL);
+
+ WebKitSecurityOriginPrivate* priv = securityOrigin->priv;
+ GHashTable* databaseHash = priv->webDatabases;
+ WebKitWebDatabase* database = (WebKitWebDatabase*) g_hash_table_lookup(databaseHash, databaseName);
+
+ if (!database) {
+ database = WEBKIT_WEB_DATABASE(g_object_new(WEBKIT_TYPE_WEB_DATABASE,
+ "security-origin", securityOrigin,
+ "name", databaseName,
+ NULL));
+ g_hash_table_insert(databaseHash, g_strdup(databaseName), database);
+ }
+
+ return database;
+}
+
+namespace WebKit {
+
+WebCore::SecurityOrigin* core(WebKitSecurityOrigin* securityOrigin)
+{
+ ASSERT(securityOrigin);
+
+ return securityOrigin->priv->coreOrigin.get();
+}
+
+WebKitSecurityOrigin* kit(WebCore::SecurityOrigin* coreOrigin)
+{
+ ASSERT(coreOrigin);
+
+ GHashTable* table = webkit_security_origins();
+ WebKitSecurityOrigin* origin = (WebKitSecurityOrigin*) g_hash_table_lookup(table, coreOrigin);
+
+ if (!origin) {
+ origin = WEBKIT_SECURITY_ORIGIN(g_object_new(WEBKIT_TYPE_SECURITY_ORIGIN, NULL));
+ origin->priv->coreOrigin = coreOrigin;
+ g_hash_table_insert(table, coreOrigin, origin);
+ }
+
+ return origin;
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitsecurityorigin.h b/Source/WebKit/gtk/webkit/webkitsecurityorigin.h
new file mode 100644
index 0000000..24ebe06
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitsecurityorigin.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2009 Martin Robinson, Jan Michael C. Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitsecurityorigin_h
+#define webkitsecurityorigin_h
+
+#include "webkitwebdatabase.h"
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_SECURITY_ORIGIN (webkit_security_origin_get_type())
+#define WEBKIT_SECURITY_ORIGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOrigin))
+#define WEBKIT_SECURITY_ORIGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginClass))
+#define WEBKIT_IS_SECURITY_ORIGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_SECURITY_ORIGIN))
+#define WEBKIT_IS_SECURITY_ORIGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_SECURITY_ORIGIN))
+#define WEBKIT_SECURITY_ORIGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_SECURITY_ORIGIN, WebKitSecurityOriginClass))
+
+typedef struct _WebKitSecurityOriginPrivate WebKitSecurityOriginPrivate;
+
+struct _WebKitSecurityOrigin {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitSecurityOriginPrivate* priv;
+};
+
+struct _WebKitSecurityOriginClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+ void (*_webkit_reserved4) (void);
+};
+
+WEBKIT_API GType
+webkit_security_origin_get_type (void);
+
+WEBKIT_API G_CONST_RETURN gchar*
+webkit_security_origin_get_protocol (WebKitSecurityOrigin* securityOrigin);
+
+WEBKIT_API G_CONST_RETURN gchar*
+webkit_security_origin_get_host (WebKitSecurityOrigin* securityOrigin);
+
+WEBKIT_API guint
+webkit_security_origin_get_port (WebKitSecurityOrigin* securityOrigin);
+
+WEBKIT_API guint64
+webkit_security_origin_get_web_database_usage (WebKitSecurityOrigin* securityOrigin);
+
+WEBKIT_API guint64
+webkit_security_origin_get_web_database_quota (WebKitSecurityOrigin* securityOrigin);
+
+WEBKIT_API void
+webkit_security_origin_set_web_database_quota (WebKitSecurityOrigin* securityOrigin, guint64 quota);
+
+WEBKIT_API GList *
+webkit_security_origin_get_all_web_databases (WebKitSecurityOrigin* securityOrigin);
+
+G_END_DECLS
+
+#endif /* __WEBKIT_SECURITY_ORIGIN_H__ */
diff --git a/Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h b/Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h
new file mode 100644
index 0000000..5a4a87b
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitsecurityoriginprivate.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitsecurityoriginprivate_h
+#define webkitnavigationactionprivate_h
+
+#include "SecurityOrigin.h"
+#include "webkitsecurityorigin.h"
+
+namespace WebKit {
+
+WebKitSecurityOrigin* kit(WebCore::SecurityOrigin*);
+WebCore::SecurityOrigin* core(WebKitSecurityOrigin*);
+
+}
+
+extern "C" {
+
+struct _WebKitSecurityOriginPrivate {
+ RefPtr<WebCore::SecurityOrigin> coreOrigin;
+ gchar* protocol;
+ gchar* host;
+ GHashTable* webDatabases;
+
+ gboolean disposed;
+};
+
+WEBKIT_API WebKitWebDatabase* webkit_security_origin_get_web_database(WebKitSecurityOrigin*, const char*);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitsoupauthdialog.c b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.c
new file mode 100644
index 0000000..c407e6a
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.c
@@ -0,0 +1,372 @@
+/*
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+
+#define LIBSOUP_I_HAVE_READ_BUG_594377_AND_KNOW_SOUP_PASSWORD_MANAGER_MIGHT_GO_AWAY
+
+#include <glib/gi18n-lib.h>
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+
+#include "GtkVersioning.h"
+#include "webkitmarshal.h"
+#include "webkitsoupauthdialog.h"
+
+/**
+ * SECTION:webkitsoupauthdialog
+ * @short_description: A #SoupSessionFeature to provide a simple
+ * authentication dialog for HTTP basic auth support.
+ *
+ * #WebKitSoupAuthDialog is a #SoupSessionFeature that you can attach to your
+ * #SoupSession to provide a simple authentication dialog while
+ * handling HTTP basic auth. It is built as a simple C-only module
+ * to ease reuse.
+ */
+
+static void webkit_soup_auth_dialog_session_feature_init(SoupSessionFeatureInterface* feature_interface, gpointer interface_data);
+static void attach(SoupSessionFeature* manager, SoupSession* session);
+static void detach(SoupSessionFeature* manager, SoupSession* session);
+
+enum {
+ CURRENT_TOPLEVEL,
+ LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL] = { 0 };
+
+G_DEFINE_TYPE_WITH_CODE(WebKitSoupAuthDialog, webkit_soup_auth_dialog, G_TYPE_OBJECT,
+ G_IMPLEMENT_INTERFACE(SOUP_TYPE_SESSION_FEATURE,
+ webkit_soup_auth_dialog_session_feature_init))
+
+static void webkit_soup_auth_dialog_class_init(WebKitSoupAuthDialogClass* klass)
+{
+ GObjectClass* object_class = G_OBJECT_CLASS(klass);
+
+ /**
+ * WebKitSoupAuthDialog::current-toplevel:
+ * @authDialog: the object on which the signal is emitted
+ * @message: the #SoupMessage being used in the authentication process
+ *
+ * This signal is emitted by the @authDialog when it needs to know
+ * the current toplevel widget in order to correctly set the
+ * transiency for the authentication dialog.
+ *
+ * Return value: (transfer none): the current toplevel #GtkWidget or %NULL if there's none
+ *
+ * Since: 1.1.1
+ */
+ signals[CURRENT_TOPLEVEL] =
+ g_signal_new("current-toplevel",
+ G_OBJECT_CLASS_TYPE(object_class),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(WebKitSoupAuthDialogClass, current_toplevel),
+ NULL, NULL,
+ webkit_marshal_OBJECT__OBJECT,
+ GTK_TYPE_WIDGET, 1,
+ SOUP_TYPE_MESSAGE);
+}
+
+static void webkit_soup_auth_dialog_init(WebKitSoupAuthDialog* instance)
+{
+}
+
+static void webkit_soup_auth_dialog_session_feature_init(SoupSessionFeatureInterface *feature_interface,
+ gpointer interface_data)
+{
+ feature_interface->attach = attach;
+ feature_interface->detach = detach;
+}
+
+typedef struct _WebKitAuthData {
+ SoupMessage* msg;
+ SoupAuth* auth;
+ SoupSession* session;
+ SoupSessionFeature* manager;
+ GtkWidget* loginEntry;
+ GtkWidget* passwordEntry;
+ GtkWidget* checkButton;
+ char *username;
+ char *password;
+} WebKitAuthData;
+
+static void free_authData(WebKitAuthData* authData)
+{
+ g_object_unref(authData->msg);
+ g_free(authData->username);
+ g_free(authData->password);
+ g_slice_free(WebKitAuthData, authData);
+}
+
+#ifdef SOUP_TYPE_PASSWORD_MANAGER
+static void save_password_callback(SoupMessage* msg, WebKitAuthData* authData)
+{
+ /* Anything but 401 and 5xx means the password was accepted */
+ if (msg->status_code != 401 && msg->status_code < 500)
+ soup_auth_save_password(authData->auth, authData->username, authData->password);
+
+ /* Disconnect the callback. If the authentication succeeded we are
+ * done, and if it failed we'll create a new authData and we'll
+ * connect to 'got-headers' again in response_callback */
+ g_signal_handlers_disconnect_by_func(msg, save_password_callback, authData);
+
+ free_authData(authData);
+}
+#endif
+
+static void response_callback(GtkDialog* dialog, gint response_id, WebKitAuthData* authData)
+{
+ gboolean freeAuthData = TRUE;
+
+ if (response_id == GTK_RESPONSE_OK) {
+ authData->username = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData->loginEntry)));
+ authData->password = g_strdup(gtk_entry_get_text(GTK_ENTRY(authData->passwordEntry)));
+
+ soup_auth_authenticate(authData->auth, authData->username, authData->password);
+
+#ifdef SOUP_TYPE_PASSWORD_MANAGER
+ if (authData->checkButton &&
+ gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData->checkButton))) {
+ g_signal_connect(authData->msg, "got-headers", G_CALLBACK(save_password_callback), authData);
+ freeAuthData = FALSE;
+ }
+#endif
+ }
+
+ soup_session_unpause_message(authData->session, authData->msg);
+ if (freeAuthData)
+ free_authData(authData);
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+}
+
+static GtkWidget *
+table_add_entry(GtkWidget* table,
+ int row,
+ const char* label_text,
+ const char* value,
+ gpointer user_data)
+{
+ GtkWidget* entry;
+ GtkWidget* label;
+
+ label = gtk_label_new(label_text);
+ gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
+
+ entry = gtk_entry_new();
+ gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+
+ if (value)
+ gtk_entry_set_text(GTK_ENTRY(entry), value);
+
+ gtk_table_attach(GTK_TABLE(table), label,
+ 0, 1, row, row + 1,
+ GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0);
+ gtk_table_attach_defaults(GTK_TABLE(table), entry,
+ 1, 2, row, row + 1);
+
+ return entry;
+}
+
+static gboolean session_can_save_passwords(SoupSession* session)
+{
+#ifdef SOUP_TYPE_PASSWORD_MANAGER
+ return soup_session_get_feature(session, SOUP_TYPE_PASSWORD_MANAGER) != NULL;
+#else
+ return FALSE;
+#endif
+}
+
+static void show_auth_dialog(WebKitAuthData* authData, const char* login, const char* password)
+{
+ GtkWidget* toplevel;
+ GtkWidget* widget;
+ GtkDialog* dialog;
+ GtkWindow* window;
+ GtkWidget* entryContainer;
+ GtkWidget* hbox;
+ GtkWidget* mainVBox;
+ GtkWidget* vbox;
+ GtkWidget* icon;
+ GtkWidget* table;
+ GtkWidget* serverMessageDescriptionLabel;
+ GtkWidget* serverMessageLabel;
+ GtkWidget* descriptionLabel;
+ char* description;
+ const char* realm;
+ gboolean hasRealm;
+ SoupURI* uri;
+ GtkWidget* rememberBox;
+ GtkWidget* checkButton;
+
+ /* From GTK+ gtkmountoperation.c, modified and simplified. LGPL 2 license */
+
+ widget = gtk_dialog_new();
+ window = GTK_WINDOW(widget);
+ dialog = GTK_DIALOG(widget);
+
+ gtk_dialog_add_buttons(dialog,
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OK, GTK_RESPONSE_OK,
+ NULL);
+
+ /* Set the dialog up with HIG properties */
+ gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
+ gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_content_area(dialog)), 2); /* 2 * 5 + 2 = 12 */
+ gtk_container_set_border_width(GTK_CONTAINER(gtk_dialog_get_action_area(dialog)), 5);
+ gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_action_area(dialog)), 6);
+
+ gtk_window_set_resizable(window, FALSE);
+ gtk_window_set_title(window, "");
+ gtk_window_set_icon_name(window, GTK_STOCK_DIALOG_AUTHENTICATION);
+
+ gtk_dialog_set_default_response(dialog, GTK_RESPONSE_OK);
+
+ /* Get the current toplevel */
+ g_signal_emit(authData->manager, signals[CURRENT_TOPLEVEL], 0, authData->msg, &toplevel);
+
+ if (toplevel)
+ gtk_window_set_transient_for(window, GTK_WINDOW(toplevel));
+
+ /* Build contents */
+ hbox = gtk_hbox_new(FALSE, 12);
+ gtk_container_set_border_width(GTK_CONTAINER(hbox), 5);
+ gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(dialog)), hbox, TRUE, TRUE, 0);
+
+ icon = gtk_image_new_from_stock(GTK_STOCK_DIALOG_AUTHENTICATION,
+ GTK_ICON_SIZE_DIALOG);
+
+ gtk_misc_set_alignment(GTK_MISC(icon), 0.5, 0.0);
+ gtk_box_pack_start(GTK_BOX(hbox), icon, FALSE, FALSE, 0);
+
+ mainVBox = gtk_vbox_new(FALSE, 18);
+ gtk_box_pack_start(GTK_BOX(hbox), mainVBox, TRUE, TRUE, 0);
+
+ uri = soup_message_get_uri(authData->msg);
+ description = g_strdup_printf(_("A username and password are being requested by the site %s"), uri->host);
+ descriptionLabel = gtk_label_new(description);
+ g_free(description);
+ gtk_misc_set_alignment(GTK_MISC(descriptionLabel), 0.0, 0.5);
+ gtk_label_set_line_wrap(GTK_LABEL(descriptionLabel), TRUE);
+ gtk_box_pack_start(GTK_BOX(mainVBox), GTK_WIDGET(descriptionLabel),
+ FALSE, FALSE, 0);
+
+ vbox = gtk_vbox_new(FALSE, 6);
+ gtk_box_pack_start(GTK_BOX(mainVBox), vbox, FALSE, FALSE, 0);
+
+ /* The table that holds the entries */
+ entryContainer = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
+
+ gtk_alignment_set_padding(GTK_ALIGNMENT(entryContainer),
+ 0, 0, 0, 0);
+
+ gtk_box_pack_start(GTK_BOX(vbox), entryContainer,
+ FALSE, FALSE, 0);
+
+ realm = soup_auth_get_realm(authData->auth);
+ // Checking that realm is not an empty string
+ hasRealm = (realm && (strlen(realm) > 0));
+
+ table = gtk_table_new(hasRealm ? 3 : 2, 2, FALSE);
+ gtk_table_set_col_spacings(GTK_TABLE(table), 12);
+ gtk_table_set_row_spacings(GTK_TABLE(table), 6);
+ gtk_container_add(GTK_CONTAINER(entryContainer), table);
+
+ if (hasRealm) {
+ serverMessageDescriptionLabel = gtk_label_new(_("Server message:"));
+ serverMessageLabel = gtk_label_new(realm);
+ gtk_misc_set_alignment(GTK_MISC(serverMessageDescriptionLabel), 0.0, 0.5);
+ gtk_label_set_line_wrap(GTK_LABEL(serverMessageDescriptionLabel), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(serverMessageLabel), 0.0, 0.5);
+ gtk_label_set_line_wrap(GTK_LABEL(serverMessageLabel), TRUE);
+
+ gtk_table_attach_defaults(GTK_TABLE(table), serverMessageDescriptionLabel,
+ 0, 1, 0, 1);
+ gtk_table_attach_defaults(GTK_TABLE(table), serverMessageLabel,
+ 1, 2, 0, 1);
+ }
+
+ authData->loginEntry = table_add_entry(table, hasRealm ? 1 : 0, _("Username:"),
+ login, NULL);
+ authData->passwordEntry = table_add_entry(table, hasRealm ? 2 : 1, _("Password:"),
+ password, NULL);
+
+ gtk_entry_set_visibility(GTK_ENTRY(authData->passwordEntry), FALSE);
+
+ if (session_can_save_passwords(authData->session)) {
+ rememberBox = gtk_vbox_new(FALSE, 6);
+ gtk_box_pack_start(GTK_BOX(vbox), rememberBox,
+ FALSE, FALSE, 0);
+ checkButton = gtk_check_button_new_with_mnemonic(_("_Remember password"));
+ if (login && password)
+ gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(checkButton), TRUE);
+ gtk_label_set_line_wrap(GTK_LABEL(gtk_bin_get_child(GTK_BIN(checkButton))), TRUE);
+ gtk_box_pack_start(GTK_BOX(rememberBox), checkButton, FALSE, FALSE, 0);
+ authData->checkButton = checkButton;
+ }
+
+ g_signal_connect(dialog, "response", G_CALLBACK(response_callback), authData);
+ gtk_widget_show_all(widget);
+}
+
+static void session_authenticate(SoupSession* session, SoupMessage* msg, SoupAuth* auth, gboolean retrying, gpointer user_data)
+{
+ SoupURI* uri;
+ WebKitAuthData* authData;
+ SoupSessionFeature* manager = (SoupSessionFeature*)user_data;
+#ifdef SOUP_TYPE_PASSWORD_MANAGER
+ GSList* users;
+#endif
+ const char *login, *password;
+
+ soup_session_pause_message(session, msg);
+ /* We need to make sure the message sticks around when pausing it */
+ g_object_ref(msg);
+
+ uri = soup_message_get_uri(msg);
+ authData = g_slice_new0(WebKitAuthData);
+ authData->msg = msg;
+ authData->auth = auth;
+ authData->session = session;
+ authData->manager = manager;
+
+ login = password = NULL;
+
+#ifdef SOUP_TYPE_PASSWORD_MANAGER
+ users = soup_auth_get_saved_users(auth);
+ if (users) {
+ login = users->data;
+ password = soup_auth_get_saved_password(auth, login);
+ g_slist_free(users);
+ }
+#endif
+
+ show_auth_dialog(authData, login, password);
+}
+
+static void attach(SoupSessionFeature* manager, SoupSession* session)
+{
+ g_signal_connect(session, "authenticate", G_CALLBACK(session_authenticate), manager);
+}
+
+static void detach(SoupSessionFeature* manager, SoupSession* session)
+{
+ g_signal_handlers_disconnect_by_func(session, session_authenticate, manager);
+}
+
+
diff --git a/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h
new file mode 100644
index 0000000..08b7c9f
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitsoupauthdialog.h
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitsoupauthdialog_h
+#define webkitsoupauthdialog_h
+
+#include <gtk/gtk.h>
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_SOUP_AUTH_DIALOG (webkit_soup_auth_dialog_get_type ())
+#define WEBKIT_SOUP_AUTH_DIALOG(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), WEBKIT_TYPE_SOUP_AUTH_DIALOG, WebKitSoupAuthDialog))
+#define WEBKIT_SOUP_AUTH_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), WEBKIT_TYPE_SOUP_AUTH_DIALOG, WebKitSoupAuthDialog))
+#define WEBKIT_IS_SOUP_AUTH_DIALOG(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), WEBKIT_TYPE_SOUP_AUTH_DIALOG))
+#define WEBKIT_IS_SOUP_AUTH_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), WEBKIT_TYPE_SOUP_AUTH_DIALOG))
+#define WEBKIT_SOUP_AUTH_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), WEBKIT_TYPE_SOUP_AUTH_DIALOG, WebKitSoupAuthDialog))
+
+typedef struct {
+ GObject parent_instance;
+} WebKitSoupAuthDialog;
+
+typedef struct {
+ GObjectClass parent_class;
+
+ GtkWidget* (*current_toplevel) (WebKitSoupAuthDialog* authDialog, SoupMessage* message);
+} WebKitSoupAuthDialogClass;
+
+WEBKIT_API GType
+webkit_soup_auth_dialog_get_type (void);
+
+G_END_DECLS
+
+#endif /* webkitsoupauthdialog_h */
diff --git a/Source/WebKit/gtk/webkit/webkitversion.cpp b/Source/WebKit/gtk/webkit/webkitversion.cpp
new file mode 100644
index 0000000..62750f5
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitversion.cpp
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 Christian Dywan <christian@imendio.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitversion.h"
+
+/**
+ * webkit_major_version:
+ *
+ * The major version number of the WebKit that is linked against.
+ *
+ * Return value: The major version
+ *
+ * Since: 1.0.1
+ */
+guint webkit_major_version()
+{
+ return WEBKIT_MAJOR_VERSION;
+}
+
+/**
+ * webkit_minor_version:
+ *
+ * The minor version number of the WebKit that is linked against.
+ *
+ * Return value: The minor version
+ *
+ * Since: 1.0.1
+ */
+guint webkit_minor_version()
+{
+ return WEBKIT_MINOR_VERSION;
+}
+
+/**
+ * webkit_micro_version:
+ *
+ * The micro version number of the WebKit that is linked against.
+ *
+ * Return value: The micro version
+ *
+ * Since: 1.0.1
+ */
+guint webkit_micro_version()
+{
+ return WEBKIT_MICRO_VERSION;
+}
diff --git a/Source/WebKit/gtk/webkit/webkitversion.h.in b/Source/WebKit/gtk/webkit/webkitversion.h.in
new file mode 100644
index 0000000..ce6b569
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitversion.h.in
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2008 Christian Dywan <christian@imendio.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitversion_h
+#define webkitversion_h
+
+#include <glib.h>
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_MAJOR_VERSION (@WEBKIT_MAJOR_VERSION@)
+#define WEBKIT_MINOR_VERSION (@WEBKIT_MINOR_VERSION@)
+#define WEBKIT_MICRO_VERSION (@WEBKIT_MICRO_VERSION@)
+#define WEBKIT_USER_AGENT_MAJOR_VERSION (@WEBKIT_USER_AGENT_MAJOR_VERSION@)
+#define WEBKIT_USER_AGENT_MINOR_VERSION (@WEBKIT_USER_AGENT_MINOR_VERSION@)
+#define WEBKITGTK_API_VERSION (@WEBKITGTK_API_VERSION@)
+
+#define WEBKIT_CHECK_VERSION(major, minor, micro) \
+ (WEBKIT_MAJOR_VERSION > (major) || \
+ (WEBKIT_MAJOR_VERSION == (major) && WEBKIT_MINOR_VERSION > (minor)) || \
+ (WEBKIT_MAJOR_VERSION == (major) && WEBKIT_MINOR_VERSION == (minor) && \
+ WEBKIT_MICRO_VERSION >= (micro)))
+
+WEBKIT_API guint
+webkit_major_version (void);
+
+WEBKIT_API guint
+webkit_minor_version (void);
+
+WEBKIT_API guint
+webkit_micro_version (void);
+
+WEBKIT_API gboolean
+webkit_check_version (guint major, guint minor, guint micro);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitviewportattributes.cpp b/Source/WebKit/gtk/webkit/webkitviewportattributes.cpp
new file mode 100644
index 0000000..9a98e44
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitviewportattributes.cpp
@@ -0,0 +1,571 @@
+/*
+ * Copyright (C) 2010 Joone Hur <joone@kldp.org>
+ * Copyright (C) 2010 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitviewportattributes.h"
+
+#include "Chrome.h"
+#include "Frame.h"
+#include "Page.h"
+#include "webkitglobalsprivate.h"
+#include "webkitviewportattributesprivate.h"
+#include "webkitwebviewprivate.h"
+#include <glib/gi18n-lib.h>
+
+/**
+ * SECTION:webkitviewportattributes
+ * @short_description: Represents the viewport properties of a web page
+ * @see_also: #WebKitWebView::viewport-attributes-recompute-requested
+ * @see_also: #WebKitWebView::viewport-attributes-changed
+ *
+ * #WebKitViewportAttributes offers the viewport properties to user agents to
+ * control the viewport layout. It contains the viewport size, initial scale with limits,
+ * and information about whether a user is able to scale the contents in the viewport.
+ * This makes a web page fit the device screen.
+ *
+ * The #WebKitWebView::viewport-attributes-changed signal will be emitted with #WebKitViewportAttributes
+ * when the viewport attributes are updated in the case of loading web pages contain
+ * the viewport properties and calling webkit_viewport_attributes_recompute.
+ *
+ * If the device size, available size, desktop width, or device DPI needs to be changed due to
+ * a consequence of an explicit browser request (caused by screen rotation, resizing, or similar reasons),
+ * You should call #webkit_viewport_attributes_recompute to recompute the viewport properties and
+ * override those values in the handler of #WebKitWebView::viewport-attributes-recompute-requested signal.
+ *
+ * For more information on the viewport properties, refer to the Safari reference library at
+ * http://developer.apple.com/safari/library/documentation/appleapplications/reference/safarihtmlref/articles/metatags.html
+ *
+ * <informalexample><programlisting>
+ * /<!-- -->* Connect to the viewport-attributes-changes signal *<!-- -->/
+ * WebKitViewportAttributes* attributes = webkit_web_view_get_viewport_attributes (web_view);
+ * g_signal_connect (web_view, "viewport-attributes-recompute-requested", G_CALLBACK (viewport_recompute_cb), window);
+ * g_signal_connect (web_view, "viewport-attributes-changed", G_CALLBACK (viewport_changed_cb), window);
+ * g_signal_connect (attributes, "notify::valid", G_CALLBACK (viewport_valid_changed_cb), web_view);
+ *
+ * /<!-- -->* Handle the viewport-attributes-recompute-requested signal to override the device width *<!-- -->/
+ * static void
+ * viewport_recompute_cb (WebKitWebView* web_view, WebKitViewportAttributes* attributes, GtkWidget* window)
+ * {
+ * int override_available_width = 480;
+ * g_object_set (G_OBJECT(attributes), "available-width", override_available_width, NULL);
+ * }
+ *
+ * /<!-- -->* Handle the viewport-attributes-changed signal to recompute the initial scale factor *<!-- -->/
+ * static void
+ * viewport_changed_cb (WebKitWebView* web_view, WebKitViewportAttributes* attributes, gpointer data)
+ * {
+ * gfloat initialScale;
+ * g_object_get (G_OBJECT (atributes), "initial-scale-factor", &initialScale, NULL);
+ * webkit_web_view_set_zoom_level (web_view, initialScale);
+ * }
+ *
+ * /<!-- -->* Handle the notify::valid signal to initialize the zoom level *<!-- -->/
+ * static void
+ * viewport_valid_changed_cb (WebKitViewportAttributes* attributes, GParamSpec* pspec, WebKitWebView* web_view)
+ * {
+ * gboolean is_valid;
+ * g_object_get (attributes, "valid", &is_valid, NULL);
+ * if (!is_valid)
+ * webkit_web_view_set_zoom_level (web_view, 1.0);
+ * }
+ * </programlisting></informalexample>
+ */
+
+using namespace WebKit;
+using namespace WebCore;
+
+enum {
+ PROP_0,
+
+ PROP_DEVICE_WIDTH,
+ PROP_DEVICE_HEIGHT,
+ PROP_AVAILABLE_WIDTH,
+ PROP_AVAILABLE_HEIGHT,
+ PROP_DESKTOP_WIDTH,
+ PROP_DEVICE_DPI,
+ PROP_WIDTH,
+ PROP_HEIGHT,
+ PROP_INITIAL_SCALE_FACTOR,
+ PROP_MINIMUM_SCALE_FACTOR,
+ PROP_MAXIMUM_SCALE_FACTOR,
+ PROP_DEVICE_PIXEL_RATIO,
+ PROP_USER_SCALABLE,
+ PROP_VALID
+};
+
+G_DEFINE_TYPE(WebKitViewportAttributes, webkit_viewport_attributes, G_TYPE_OBJECT);
+
+static void webkit_viewport_attributes_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* paramSpec);
+static void webkit_viewport_attributes_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* paramSpec);
+
+static void webkit_viewport_attributes_class_init(WebKitViewportAttributesClass* kclass)
+{
+ GObjectClass* gobjectClass = G_OBJECT_CLASS(kclass);
+ gobjectClass->get_property = webkit_viewport_attributes_get_property;
+ gobjectClass->set_property = webkit_viewport_attributes_set_property;
+
+ /**
+ * WebKitViewportAttributs:device-width:
+ *
+ * The width of the screen. This value is always automatically
+ * pre-computed during a viewport attributes recomputation, and
+ * can be overridden by the handler of
+ * WebKitWebView::viewport-attributes-recompute-requested. You
+ * should not do that unless you have a very good reason.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_DEVICE_WIDTH,
+ g_param_spec_int(
+ "device-width",
+ _("Device Width"),
+ _("The width of the screen."),
+ 0,
+ G_MAXINT,
+ 0,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitViewportAttributs:device-height:
+ *
+ * The height of the screen. This value is always automatically
+ * pre-computed during a viewport attributes recomputation, and
+ * can be overriden by the handler of
+ * WebKitWebView::viewport-attributes-recompute-requested. You
+ * should not do that unless you have a very good reason.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_DEVICE_HEIGHT,
+ g_param_spec_int(
+ "device-height",
+ _("Device Height"),
+ _("The height of the screen."),
+ 0,
+ G_MAXINT,
+ 0,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitViewportAttributs:available-width:
+ *
+ * The width of the current visible area. This will usually be the
+ * same as the space allocated to the widget, but in some cases
+ * you may have decided to make the widget bigger than the visible
+ * area. This value is by default initialized to the size
+ * allocated by the widget, but you can override it in the handler
+ * of WebKitWebView::viewport-attributes-recompute-requested to
+ * let the engine know what the visible area is.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_AVAILABLE_WIDTH,
+ g_param_spec_int(
+ "available-width",
+ _("Available Width"),
+ _("The width of the visible area."),
+ 0,
+ G_MAXINT,
+ 0,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitViewportAttributs:available-height:
+ *
+ * The height of the current visible area. This will usually be the
+ * same as the space allocated to the widget, but in some cases
+ * you may have decided to make the widget bigger than the visible
+ * area. This value is by default initialized to the size
+ * allocated by the widget, but you can override it in the handler
+ * of WebKitWebView::viewport-attributes-recompute-requested to
+ * let the engine know what the visible area is.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_AVAILABLE_HEIGHT,
+ g_param_spec_int(
+ "available-height",
+ _("Available Height"),
+ _("The height of the visible area."),
+ 0,
+ G_MAXINT,
+ 0,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitViewportAttributs:desktop-width:
+ *
+ * The width of viewport that works well for most web pages designed for
+ * desktop. This value is initialized to 980 pixels by default and used
+ * during a viewport attributes recomputation. Also, it can be overriden by
+ * the handler of WebKitWebView::viewport-attributes-recompute-requested.
+ * You should not do that unless you have a very good reason.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_DESKTOP_WIDTH,
+ g_param_spec_int(
+ "desktop-width",
+ _("Desktop Width"),
+ _("The width of viewport that works well for most web pages designed for desktop."),
+ 0,
+ G_MAXINT,
+ 980,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitViewportAttributs:device-dpi:
+ *
+ * The number of dots per inch of the screen. This value is
+ * initialized to 160 dpi by default and used during a viewport
+ * attributes recomputation, because it is the dpi of the original
+ * iPhone and Android devices. Also, it can be overriden by the
+ * handler of WebKitWebView::viewport-attributes-recompute-requested.
+ * You should not do that unless you have a very good reason.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_DEVICE_DPI,
+ g_param_spec_int(
+ "device-dpi",
+ _("Device DPI"),
+ _("The number of dots per inch of the screen."),
+ 0,
+ G_MAXINT,
+ 160,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitViewportAttributs:width:
+ *
+ * The width of the viewport. Before getting this property,
+ * you need to make sure that #WebKitViewportAttributes is valid.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_WIDTH,
+ g_param_spec_int(
+ "width",
+ _("Width"),
+ _("The width of the viewport."),
+ 0,
+ G_MAXINT,
+ 0,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitViewportAttributs:height:
+ *
+ * The height of the viewport. Before getting this property,
+ * you need to make sure that #WebKitViewportAttributes is valid.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_HEIGHT,
+ g_param_spec_int(
+ "height",
+ _("Height"),
+ _("The height of the viewport."),
+ 0,
+ G_MAXINT,
+ 0,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitViewportAttributs:initial-scale-factor:
+ *
+ * The initial scale of the viewport. Before getting this property,
+ * you need to make sure that #WebKitViewportAttributes is valid.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_INITIAL_SCALE_FACTOR,
+ g_param_spec_float(
+ "initial-scale-factor",
+ _("Initial Scale Factor"),
+ _("The initial scale of the viewport."),
+ -1,
+ G_MAXFLOAT,
+ -1,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitViewportAttributs:minimum-scale-factor:
+ *
+ * The minimum scale of the viewport. Before getting this property,
+ * you need to make sure that #WebKitViewportAttributes is valid.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_MINIMUM_SCALE_FACTOR,
+ g_param_spec_float(
+ "minimum-scale-factor",
+ _("Minimum Scale Factor"),
+ _("The minimum scale of the viewport."),
+ -1,
+ G_MAXFLOAT,
+ -1,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitViewportAttributs:maximum-scale-factor:
+ *
+ * The maximum scale of the viewport. Before getting this property,
+ * you need to make sure that #WebKitViewportAttributes is valid.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_MAXIMUM_SCALE_FACTOR,
+ g_param_spec_float(
+ "maximum-scale-factor",
+ _("Maximum Scale Factor"),
+ _("The maximum scale of the viewport."),
+ -1,
+ G_MAXFLOAT,
+ -1,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitViewportAttributs:device-pixel-ratio:
+ *
+ * The device pixel ratio of the viewport. Before getting this property,
+ * you need to make sure that #WebKitViewportAttributes is valid.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_DEVICE_PIXEL_RATIO,
+ g_param_spec_float(
+ "device-pixel-ratio",
+ _("Device Pixel Ratio"),
+ _("The device pixel ratio of the viewport."),
+ -1,
+ G_MAXFLOAT,
+ -1,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitViewportAttributs:user-scalable:
+ *
+ * Determines whether or not the user can zoom in and out.
+ * Before getting this property, you need to make sure that
+ * #WebKitViewportAttributes is valid.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_USER_SCALABLE,
+ g_param_spec_boolean(
+ _("user-scalable"),
+ _("User Scalable"),
+ _("Determines whether or not the user can zoom in and out."),
+ TRUE,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitViewportAttributs:valid:
+ *
+ * Determines whether or not the attributes are valid.
+ * #WebKitViewportAttributes are only valid on pages
+ * which have a viewport meta tag, and have already
+ * had the attributes calculated.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(gobjectClass,
+ PROP_VALID,
+ g_param_spec_boolean(
+ _("valid"),
+ _("Valid"),
+ _("Determines whether or not the attributes are valid, and can be used."),
+ FALSE,
+ WEBKIT_PARAM_READABLE));
+
+ g_type_class_add_private(kclass, sizeof(WebKitViewportAttributesPrivate));
+}
+
+static void webkit_viewport_attributes_init(WebKitViewportAttributes* viewport)
+{
+ viewport->priv = G_TYPE_INSTANCE_GET_PRIVATE(viewport, WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributesPrivate);
+
+ viewport->priv->deviceWidth = 0;
+ viewport->priv->deviceHeight = 0;
+ viewport->priv->availableWidth = 0;
+ viewport->priv->availableHeight = 0;
+ viewport->priv->desktopWidth = 980; // This value works well for most web pages designed for desktop browsers.
+ viewport->priv->deviceDPI = 160; // It is the dpi of the original iPhone and Android devices.
+ viewport->priv->width = 0;
+ viewport->priv->height = 0;
+ viewport->priv->initialScaleFactor = -1;
+ viewport->priv->minimumScaleFactor = -1;
+ viewport->priv->maximumScaleFactor = -1;
+ viewport->priv->devicePixelRatio = -1;
+ viewport->priv->userScalable = TRUE;
+ viewport->priv->isValid = FALSE;
+}
+
+static void webkit_viewport_attributes_get_property(GObject* object, guint propertyID, GValue* value, GParamSpec* paramSpec)
+{
+ WebKitViewportAttributes* viewportAttributes = WEBKIT_VIEWPORT_ATTRIBUTES(object);
+ WebKitViewportAttributesPrivate* priv = viewportAttributes->priv;
+
+ switch (propertyID) {
+ case PROP_DEVICE_WIDTH:
+ g_value_set_int(value, priv->deviceWidth);
+ break;
+ case PROP_DEVICE_HEIGHT:
+ g_value_set_int(value, priv->deviceHeight);
+ break;
+ case PROP_AVAILABLE_WIDTH:
+ g_value_set_int(value, priv->availableWidth);
+ break;
+ case PROP_AVAILABLE_HEIGHT:
+ g_value_set_int(value, priv->availableHeight);
+ break;
+ case PROP_DESKTOP_WIDTH:
+ g_value_set_int(value, priv->desktopWidth);
+ break;
+ case PROP_DEVICE_DPI:
+ g_value_set_int(value, priv->deviceDPI);
+ break;
+ case PROP_WIDTH:
+ g_value_set_int(value, priv->width);
+ break;
+ case PROP_HEIGHT:
+ g_value_set_int(value, priv->height);
+ break;
+ case PROP_INITIAL_SCALE_FACTOR:
+ g_value_set_float(value, priv->initialScaleFactor);
+ break;
+ case PROP_MINIMUM_SCALE_FACTOR:
+ g_value_set_float(value, priv->minimumScaleFactor);
+ break;
+ case PROP_MAXIMUM_SCALE_FACTOR:
+ g_value_set_float(value, priv->maximumScaleFactor);
+ break;
+ case PROP_DEVICE_PIXEL_RATIO:
+ g_value_set_float(value, priv->devicePixelRatio);
+ break;
+ case PROP_USER_SCALABLE:
+ g_value_set_boolean(value, priv->userScalable);
+ break;
+ case PROP_VALID:
+ g_value_set_boolean(value, priv->isValid);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, paramSpec);
+ break;
+ }
+}
+
+static void webkit_viewport_attributes_set_property(GObject* object, guint propertyID, const GValue* value, GParamSpec* paramSpec)
+{
+ WebKitViewportAttributes* viewportAttributes = WEBKIT_VIEWPORT_ATTRIBUTES(object);
+ WebKitViewportAttributesPrivate* priv = viewportAttributes->priv;
+
+ switch (propertyID) {
+ case PROP_DEVICE_WIDTH:
+ priv->deviceWidth = g_value_get_int(value);
+ break;
+ case PROP_DEVICE_HEIGHT:
+ priv->deviceHeight = g_value_get_int(value);
+ break;
+ case PROP_AVAILABLE_WIDTH:
+ priv->availableWidth = g_value_get_int(value);
+ break;
+ case PROP_AVAILABLE_HEIGHT:
+ priv->availableHeight = g_value_get_int(value);
+ break;
+ case PROP_DESKTOP_WIDTH:
+ priv->desktopWidth = g_value_get_int(value);
+ break;
+ case PROP_DEVICE_DPI:
+ priv->deviceDPI = g_value_get_int(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyID, paramSpec);
+ break;
+ }
+}
+
+void webkitViewportAttributesRecompute(WebKitViewportAttributes* viewportAttributes)
+{
+ WebKitViewportAttributesPrivate* priv = viewportAttributes->priv;
+ WebKitWebView* webView = priv->webView;
+
+ IntRect windowRect(webView->priv->corePage->chrome()->windowRect());
+ priv->deviceWidth = windowRect.width();
+ priv->deviceHeight = windowRect.height();
+
+ IntRect rect(webView->priv->corePage->chrome()->pageRect());
+ priv->availableWidth = rect.width();
+ priv->availableHeight = rect.height();
+
+ // First of all, we give the application an opportunity to override some of the values.
+ g_signal_emit_by_name(webView, "viewport-attributes-recompute-requested", viewportAttributes);
+
+ ViewportArguments arguments = webView->priv->corePage->mainFrame()->document()->viewportArguments();
+
+ ViewportAttributes attributes = computeViewportAttributes(arguments, priv->desktopWidth, priv->deviceWidth, priv->deviceHeight, priv->deviceDPI, IntSize(priv->availableWidth, priv->availableHeight));
+
+ priv->width = attributes.layoutSize.width();
+ priv->height = attributes.layoutSize.height();
+ priv->initialScaleFactor = attributes.initialScale;
+ priv->minimumScaleFactor = attributes.minimumScale;
+ priv->maximumScaleFactor = attributes.maximumScale;
+ priv->devicePixelRatio = attributes.devicePixelRatio;
+ priv->userScalable = arguments.userScalable;
+
+ if (!priv->isValid) {
+ priv->isValid = TRUE;
+ g_object_notify(G_OBJECT(viewportAttributes), "valid");
+ }
+
+ // Now let the application know it is safe to use the new values.
+ g_signal_emit_by_name(webView, "viewport-attributes-changed", viewportAttributes);
+}
+
+/**
+ * webkit_viewport_attributes_recompute:
+ * @viewportAttributes: a #WebKitViewportAttributes
+ *
+ * Recompute the optimal viewport attributes and emit the viewport-attribute-changed signal.
+ * The viewport-attributes-recompute-requested signal also will be handled to override
+ * the device size, available size, desktop width, or device DPI.
+ *
+ * Since: 1.3.8
+ */
+void webkit_viewport_attributes_recompute(WebKitViewportAttributes* viewportAttributes)
+{
+ if (!viewportAttributes->priv->isValid)
+ return;
+ webkitViewportAttributesRecompute(viewportAttributes);
+}
diff --git a/Source/WebKit/gtk/webkit/webkitviewportattributes.h b/Source/WebKit/gtk/webkit/webkitviewportattributes.h
new file mode 100644
index 0000000..7d90c1b
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitviewportattributes.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2010 Joone Hur <joone@kldp.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitviewportattributes_h
+#define webkitviewportattributes_h
+
+#include <glib-object.h>
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_VIEWPORT_ATTRIBUTES (webkit_viewport_attributes_get_type())
+#define WEBKIT_VIEWPORT_ATTRIBUTES(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributes))
+#define WEBKIT_VIEWPORT_ATTRIBUTES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributesClass))
+#define WEBKIT_IS_VIEWPORT_ATTRIBUTES(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES))
+#define WEBKIT_IS_VIEWPORT_ATTRIBUTES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES))
+#define WEBKIT_VIEWPORT_ATTRIBUTES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, WebKitViewportAttributesClass))
+
+typedef struct _WebKitViewportAttributesPrivate WebKitViewportAttributesPrivate;
+
+struct _WebKitViewportAttributes {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitViewportAttributesPrivate *priv;
+};
+
+struct _WebKitViewportAttributesClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_viewport_attributes_get_type (void);
+
+WEBKIT_API void
+webkit_viewport_attributes_recompute(WebKitViewportAttributes* viewportAttributes);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h b/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h
new file mode 100644
index 0000000..11cb668
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitviewportattributesprivate.h
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitviewportattributesprivate_h
+#define webkitnavigationactionprivate_h
+
+#include <webkit/webkitviewportattributes.h>
+
+extern "C" {
+
+struct _WebKitViewportAttributesPrivate {
+ WebKitWebView* webView;
+ int deviceWidth;
+ int deviceHeight;
+ int availableWidth;
+ int availableHeight;
+ int desktopWidth;
+ int deviceDPI;
+
+ int width;
+ int height;
+ float initialScaleFactor;
+ float minimumScaleFactor;
+ float maximumScaleFactor;
+ float devicePixelRatio;
+ gboolean userScalable;
+ gboolean isValid;
+};
+
+
+void webkitViewportAttributesRecompute(WebKitViewportAttributes*);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp
new file mode 100644
index 0000000..62f7e8c
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp
@@ -0,0 +1,472 @@
+/*
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebbackforwardlist.h"
+
+#include "BackForwardListImpl.h"
+#include "HistoryItem.h"
+#include "Page.h"
+#include "webkitglobalsprivate.h"
+#include "webkitwebbackforwardlistprivate.h"
+#include "webkitwebhistoryitem.h"
+#include "webkitwebhistoryitemprivate.h"
+#include "webkitwebview.h"
+#include "webkitwebviewprivate.h"
+#include <glib.h>
+
+/**
+ * SECTION:webkitwebbackforwardlist
+ * @short_description: The history of a #WebKitWebView
+ * @see_also: #WebKitWebView, #WebKitWebHistoryItem
+ *
+ * <informalexample><programlisting>
+ * /<!-- -->* Get the WebKitWebBackForwardList from the WebKitWebView *<!-- -->/
+ * WebKitWebBackForwardList *back_forward_list = webkit_web_view_get_back_forward_list (my_web_view);
+ * WebKitWebHistoryItem *item = webkit_web_back_forward_list_get_current_item (back_forward_list);
+ *
+ * /<!-- -->* Do something with a WebKitWebHistoryItem *<!-- -->/
+ * g_print("%p", item);
+ *
+ * /<!-- -->* Control some parameters *<!-- -->/
+ * WebKitWebBackForwardList *back_forward_list = webkit_web_view_get_back_forward_list (my_web_view);
+ * webkit_web_back_forward_list_set_limit (back_forward_list, 30);
+ * </programlisting></informalexample>
+ *
+ */
+
+using namespace WebKit;
+
+struct _WebKitWebBackForwardListPrivate {
+ WebCore::BackForwardListImpl* backForwardList;
+ gboolean disposed;
+};
+
+G_DEFINE_TYPE(WebKitWebBackForwardList, webkit_web_back_forward_list, G_TYPE_OBJECT);
+
+static void webkit_web_back_forward_list_dispose(GObject* object)
+{
+ WebKitWebBackForwardList* list = WEBKIT_WEB_BACK_FORWARD_LIST(object);
+ WebCore::BackForwardListImpl* backForwardList = core(list);
+ WebKitWebBackForwardListPrivate* priv = list->priv;
+
+ if (!priv->disposed) {
+ priv->disposed = true;
+
+ WebCore::HistoryItemVector items = backForwardList->entries();
+ GHashTable* table = webkit_history_items();
+ for (unsigned i = 0; i < items.size(); i++)
+ g_hash_table_remove(table, items[i].get());
+ }
+
+ G_OBJECT_CLASS(webkit_web_back_forward_list_parent_class)->dispose(object);
+}
+
+static void webkit_web_back_forward_list_class_init(WebKitWebBackForwardListClass* klass)
+{
+ GObjectClass* object_class = G_OBJECT_CLASS(klass);
+
+ object_class->dispose = webkit_web_back_forward_list_dispose;
+
+ webkitInit();
+
+ g_type_class_add_private(klass, sizeof(WebKitWebBackForwardListPrivate));
+}
+
+static void webkit_web_back_forward_list_init(WebKitWebBackForwardList* webBackForwardList)
+{
+ webBackForwardList->priv = G_TYPE_INSTANCE_GET_PRIVATE(webBackForwardList, WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListPrivate);
+}
+
+/**
+ * webkit_web_back_forward_list_new_with_web_view: (skip)
+ * @web_view: the back forward list's #WebKitWebView
+ *
+ * Creates an instance of the back forward list with a controlling #WebKitWebView
+ *
+ * Return value: a #WebKitWebBackForwardList
+ *
+ * Deprecated: 1.3.4: Instances of #WebKitWebBackForwardList are
+ * created and owned by #WebKitWebView instances only.
+ */
+WebKitWebBackForwardList* webkit_web_back_forward_list_new_with_web_view(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+
+ WebKitWebBackForwardList* webBackForwardList;
+
+ webBackForwardList = WEBKIT_WEB_BACK_FORWARD_LIST(g_object_new(WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, NULL));
+ WebKitWebBackForwardListPrivate* priv = webBackForwardList->priv;
+
+ priv->backForwardList = static_cast<WebCore::BackForwardListImpl*>(core(webView)->backForwardList());
+ priv->backForwardList->setEnabled(TRUE);
+
+ return webBackForwardList;
+}
+
+/**
+ * webkit_web_back_forward_list_go_forward:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Steps forward in the back forward list
+ */
+void webkit_web_back_forward_list_go_forward(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList));
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (backForwardList->enabled())
+ backForwardList->goForward();
+}
+
+/**
+ * webkit_web_back_forward_list_go_back:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Steps backward in the back forward list
+ */
+void webkit_web_back_forward_list_go_back(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList));
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (backForwardList->enabled())
+ backForwardList->goBack();
+}
+
+/**
+ * webkit_web_back_forward_list_contains_item:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to check
+ *
+ * Checks if @web_history_item is in the back forward list
+ *
+ * Return value: %TRUE if @web_history_item is in the back forward list, %FALSE if it doesn't
+ */
+gboolean webkit_web_back_forward_list_contains_item(WebKitWebBackForwardList* webBackForwardList, WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), FALSE);
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), FALSE);
+
+ WebCore::HistoryItem* historyItem = core(webHistoryItem);
+
+ g_return_val_if_fail(historyItem != NULL, FALSE);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+
+ return (backForwardList->enabled() ? backForwardList->containsItem(historyItem) : FALSE);
+}
+
+/**
+ * webkit_web_back_forward_list_go_to_item:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to go to
+ *
+ * Go to the specified @web_history_item in the back forward list
+ */
+void webkit_web_back_forward_list_go_to_item(WebKitWebBackForwardList* webBackForwardList, WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList));
+ g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem));
+
+ WebCore::HistoryItem* historyItem = core(webHistoryItem);
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+
+ if (backForwardList->enabled() && historyItem)
+ backForwardList->goToItem(historyItem);
+}
+
+/**
+ * webkit_web_back_forward_list_get_forward_list_with_limit:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ * @limit: the number of items to retrieve
+ *
+ * Returns a list of items that succeed the current item, limited by @limit
+ *
+ * Return value: (element-type WebKit.WebHistoryItem) (transfer container): a #GList of items succeeding the current item, limited by @limit
+ */
+GList* webkit_web_back_forward_list_get_forward_list_with_limit(WebKitWebBackForwardList* webBackForwardList, gint limit)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return NULL;
+
+ WebCore::HistoryItemVector items;
+ GList* forwardItems = { 0 };
+
+ backForwardList->forwardListWithLimit(limit, items);
+
+ for (unsigned i = 0; i < items.size(); i++) {
+ WebKitWebHistoryItem* webHistoryItem = kit(items[i]);
+ forwardItems = g_list_prepend(forwardItems, webHistoryItem);
+ }
+
+ return forwardItems;
+}
+
+/**
+ * webkit_web_back_forward_list_get_back_list_with_limit:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ * @limit: the number of items to retrieve
+ *
+ * Returns a list of items that precede the current item, limited by @limit
+ *
+ * Return value: (element-type WebKit.WebHistoryItem) (transfer container): a #GList of items preceding the current item, limited by @limit
+ */
+GList* webkit_web_back_forward_list_get_back_list_with_limit(WebKitWebBackForwardList* webBackForwardList, gint limit)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return NULL;
+
+ WebCore::HistoryItemVector items;
+ GList* backItems = { 0 };
+
+ backForwardList->backListWithLimit(limit, items);
+
+ for (unsigned i = 0; i < items.size(); i++) {
+ WebKitWebHistoryItem* webHistoryItem = kit(items[i]);
+ backItems = g_list_prepend(backItems, webHistoryItem);
+ }
+
+ return backItems;
+}
+
+/**
+ * webkit_web_back_forward_list_get_back_item:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Returns the item that precedes the current item
+ *
+ * Return value: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem preceding the current item
+ */
+WebKitWebHistoryItem* webkit_web_back_forward_list_get_back_item(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return NULL;
+
+ WebCore::HistoryItem* historyItem = backForwardList->backItem();
+
+ return (historyItem ? kit(historyItem) : NULL);
+}
+
+/**
+ * webkit_web_back_forward_list_get_current_item:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Returns the current item.
+ *
+ * Returns a NULL value if the back forward list is empty
+ *
+ * Return value: (type WebKit.WebHistoryItem) (transfer none): a #WebKitWebHistoryItem
+ */
+WebKitWebHistoryItem* webkit_web_back_forward_list_get_current_item(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return NULL;
+
+ WebCore::HistoryItem* historyItem = backForwardList->currentItem();
+
+ return (historyItem ? kit(historyItem) : NULL);
+}
+
+/**
+ * webkit_web_back_forward_list_get_forward_item:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Returns the item that succeeds the current item.
+ *
+ * Returns a NULL value if there nothing that succeeds the current item
+ *
+ * Return value: (type WebKit.WebHistoryItem) (transfer none): a #WebKitWebHistoryItem
+ */
+WebKitWebHistoryItem* webkit_web_back_forward_list_get_forward_item(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return NULL;
+
+ WebCore::HistoryItem* historyItem = backForwardList->forwardItem();
+
+ return (historyItem ? kit(historyItem) : NULL);
+}
+
+/**
+ * webkit_web_back_forward_list_get_nth_item:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ * @index: the index of the item
+ *
+ * Returns the item at a given index relative to the current item.
+ *
+ * Return value: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem located at the specified index relative to the current item
+ */
+WebKitWebHistoryItem* webkit_web_back_forward_list_get_nth_item(WebKitWebBackForwardList* webBackForwardList, gint index)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList)
+ return NULL;
+
+ WebCore::HistoryItem* historyItem = backForwardList->itemAtIndex(index);
+
+ return (historyItem ? kit(historyItem) : NULL);
+}
+
+/**
+ * webkit_web_back_forward_list_get_back_length:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Returns the number of items that preced the current item.
+ *
+ * Return value: a #gint corresponding to the number of items preceding the current item
+ */
+gint webkit_web_back_forward_list_get_back_length(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return 0;
+
+ return backForwardList->backListCount();
+}
+
+/**
+ * webkit_web_back_forward_list_get_forward_length:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Returns the number of items that succeed the current item.
+ *
+ * Return value: a #gint corresponding to the nuber of items succeeding the current item
+ */
+gint webkit_web_back_forward_list_get_forward_length(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return 0;
+
+ return backForwardList->forwardListCount();
+}
+
+/**
+ * webkit_web_back_forward_list_get_limit:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ *
+ * Returns the maximum limit of the back forward list.
+ *
+ * Return value: a #gint indicating the number of #WebKitWebHistoryItem the back forward list can hold
+ */
+gint webkit_web_back_forward_list_get_limit(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled())
+ return 0;
+
+ return backForwardList->capacity();
+}
+
+/**
+ * webkit_web_back_forward_list_set_limit:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ * @limit: the limit to set the back forward list to
+ *
+ * Sets the maximum limit of the back forward list. If the back forward list
+ * exceeds its capacity, items will be removed everytime a new item has been
+ * added.
+ */
+void webkit_web_back_forward_list_set_limit(WebKitWebBackForwardList* webBackForwardList, gint limit)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList));
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (backForwardList)
+ backForwardList->setCapacity(limit);
+}
+
+/**
+ * webkit_web_back_forward_list_add_item:
+ * @web_back_forward_list: a #WebKitWebBackForwardList
+ * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to add
+ *
+ * Adds the item to the #WebKitWebBackForwardList.
+ *
+ * The @webBackForwardList will add a reference to the @webHistoryItem, so you
+ * don't need to keep a reference once you've added it to the list.
+ *
+ * Since: 1.1.1
+ */
+void webkit_web_back_forward_list_add_item(WebKitWebBackForwardList *webBackForwardList, WebKitWebHistoryItem *webHistoryItem)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList));
+
+ g_object_ref(webHistoryItem);
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ WebCore::HistoryItem* historyItem = core(webHistoryItem);
+
+ backForwardList->addItem(historyItem);
+}
+
+/**
+ * webkit_web_back_forward_list_clear:
+ * @web_back_forward_list: the #WebKitWebBackForwardList to be cleared
+ *
+ * Clears the @webBackForwardList by removing all its elements. Note that not even
+ * the current page is kept in list when cleared so you would have to add it later.
+ *
+ * Since: 1.3.1
+ **/
+void webkit_web_back_forward_list_clear(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList));
+
+ WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList);
+ if (!backForwardList || !backForwardList->enabled() || !backForwardList->entries().size())
+ return;
+
+ // Clear the current list by setting capacity to 0
+ int capacity = backForwardList->capacity();
+ backForwardList->setCapacity(0);
+ backForwardList->setCapacity(capacity);
+}
+
+WebCore::BackForwardListImpl* WebKit::core(WebKitWebBackForwardList* webBackForwardList)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
+
+ return webBackForwardList->priv ? webBackForwardList->priv->backForwardList : 0;
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h
new file mode 100644
index 0000000..15ddc94
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebbackforwardlist.h
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2008 Jan Michael C. Alonzo <jmalonzo@unpluggable.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebbackforwardlist_h
+#define webkitwebbackforwardlist_h
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+#include <webkit/webkitwebhistoryitem.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_BACK_FORWARD_LIST (webkit_web_back_forward_list_get_type())
+#define WEBKIT_WEB_BACK_FORWARD_LIST(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardList))
+#define WEBKIT_WEB_BACK_FORWARD_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListClass))
+#define WEBKIT_IS_WEB_BACK_FORWARD_LIST(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST))
+#define WEBKIT_IS_WEB_BACK_FORWARD_LIST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST))
+#define WEBKIT_WEB_BACK_FORWARD_LIST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListClass))
+
+typedef struct _WebKitWebBackForwardListPrivate WebKitWebBackForwardListPrivate;
+
+struct _WebKitWebBackForwardList {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebBackForwardListPrivate *priv;
+};
+
+struct _WebKitWebBackForwardListClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_web_back_forward_list_get_type (void);
+
+WEBKIT_API WebKitWebBackForwardList *
+webkit_web_back_forward_list_new_with_web_view (WebKitWebView *web_view);
+
+WEBKIT_API void
+webkit_web_back_forward_list_go_forward (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API void
+webkit_web_back_forward_list_go_back (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API gboolean
+webkit_web_back_forward_list_contains_item (WebKitWebBackForwardList *web_back_forward_list,
+ WebKitWebHistoryItem *history_item);
+
+WEBKIT_API void
+webkit_web_back_forward_list_go_to_item (WebKitWebBackForwardList *web_back_forward_list,
+ WebKitWebHistoryItem *history_item);
+
+WEBKIT_API GList *
+webkit_web_back_forward_list_get_forward_list_with_limit (WebKitWebBackForwardList *web_back_forward_list,
+ gint limit);
+
+WEBKIT_API GList *
+webkit_web_back_forward_list_get_back_list_with_limit (WebKitWebBackForwardList *web_back_forward_list,
+ gint limit);
+
+WEBKIT_API WebKitWebHistoryItem *
+webkit_web_back_forward_list_get_back_item (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API WebKitWebHistoryItem *
+webkit_web_back_forward_list_get_current_item (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API WebKitWebHistoryItem *
+webkit_web_back_forward_list_get_forward_item (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API WebKitWebHistoryItem *
+webkit_web_back_forward_list_get_nth_item (WebKitWebBackForwardList *web_back_forward_list,
+ gint index);
+
+WEBKIT_API gint
+webkit_web_back_forward_list_get_back_length (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API gint
+webkit_web_back_forward_list_get_forward_length (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API gint
+webkit_web_back_forward_list_get_limit (WebKitWebBackForwardList *web_back_forward_list);
+
+WEBKIT_API void
+webkit_web_back_forward_list_set_limit (WebKitWebBackForwardList *web_back_forward_list,
+ gint limit);
+
+WEBKIT_API void
+webkit_web_back_forward_list_add_item (WebKitWebBackForwardList *web_back_forward_list,
+ WebKitWebHistoryItem *history_item);
+
+WEBKIT_API void
+webkit_web_back_forward_list_clear (WebKitWebBackForwardList *web_back_forward_list);
+
+G_END_DECLS
+
+
+#endif /* webkitwebbackforwardlist_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h b/Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h
new file mode 100644
index 0000000..79424c0
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebbackforwardlistprivate.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebbackforwardlistprivate_h
+#define webkitwebbackforwardlistprivate_h
+
+#include "BackForwardListImpl.h"
+
+namespace WebKit {
+
+WebCore::BackForwardListImpl* core(WebKitWebBackForwardList*);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebdatabase.cpp b/Source/WebKit/gtk/webkit/webkitwebdatabase.cpp
new file mode 100644
index 0000000..1291986
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebdatabase.cpp
@@ -0,0 +1,530 @@
+/*
+ * Copyright (C) 2009 Martin Robinson
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebdatabase.h"
+
+#include "DatabaseDetails.h"
+#include "DatabaseTracker.h"
+#include "webkitglobalsprivate.h"
+#include "webkitsecurityoriginprivate.h"
+#include <glib/gi18n-lib.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkitwebdatabase
+ * @short_description: A WebKit web application database
+ *
+ * #WebKitWebDatabase is a representation of a Web Database database. The
+ * proposed Web Database standard introduces support for SQL databases that web
+ * sites can create and access on a local computer through JavaScript.
+ *
+ * To get access to all databases defined by a security origin, use
+ * #webkit_security_origin_get_databases. Each database has a canonical
+ * name, as well as a user-friendly display name.
+ *
+ * WebKit uses SQLite to create and access the local SQL databases. The location
+ * of a #WebKitWebDatabase can be accessed wth #webkit_web_database_get_filename.
+ * You can configure the location of all databases with
+ * #webkit_set_database_directory_path.
+ *
+ * For each database the web site can define an estimated size which can be
+ * accessed with #webkit_web_database_get_expected_size. The current size of the
+ * database in bytes is returned by #webkit_web_database_get_size.
+ *
+ * For more information refer to the Web Database specification proposal at
+ * http://dev.w3.org/html5/webdatabase
+ */
+
+using namespace WebKit;
+
+enum {
+ PROP_0,
+
+ PROP_SECURITY_ORIGIN,
+ PROP_NAME,
+ PROP_DISPLAY_NAME,
+ PROP_EXPECTED_SIZE,
+ PROP_SIZE,
+ PROP_PATH
+};
+
+G_DEFINE_TYPE(WebKitWebDatabase, webkit_web_database, G_TYPE_OBJECT)
+
+struct _WebKitWebDatabasePrivate {
+ WebKitSecurityOrigin* origin;
+ gchar* name;
+ gchar* displayName;
+ gchar* filename;
+};
+
+static gchar* webkit_database_directory_path = NULL;
+static guint64 webkit_default_database_quota = 5 * 1024 * 1024;
+
+static void webkit_web_database_set_security_origin(WebKitWebDatabase* webDatabase, WebKitSecurityOrigin* security_origin);
+
+static void webkit_web_database_set_name(WebKitWebDatabase* webDatabase, const gchar* name);
+
+static void webkit_web_database_finalize(GObject* object)
+{
+ WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object);
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+
+ g_free(priv->name);
+ g_free(priv->displayName);
+ g_free(priv->filename);
+
+ G_OBJECT_CLASS(webkit_web_database_parent_class)->finalize(object);
+}
+
+static void webkit_web_database_dispose(GObject* object)
+{
+ WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object);
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+
+ if (priv->origin) {
+ g_object_unref(priv->origin);
+ priv->origin = NULL;
+ }
+
+ G_OBJECT_CLASS(webkit_web_database_parent_class)->dispose(object);
+}
+
+static void webkit_web_database_set_property(GObject* object, guint propId, const GValue* value, GParamSpec* pspec)
+{
+ WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object);
+
+ switch (propId) {
+ case PROP_SECURITY_ORIGIN:
+ webkit_web_database_set_security_origin(webDatabase, WEBKIT_SECURITY_ORIGIN(g_value_get_object(value)));
+ break;
+ case PROP_NAME:
+ webkit_web_database_set_name(webDatabase, g_value_get_string(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
+ break;
+ }
+}
+
+static void webkit_web_database_get_property(GObject* object, guint propId, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebDatabase* webDatabase = WEBKIT_WEB_DATABASE(object);
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+
+ switch (propId) {
+ case PROP_SECURITY_ORIGIN:
+ g_value_set_object(value, priv->origin);
+ break;
+ case PROP_NAME:
+ g_value_set_string(value, webkit_web_database_get_name(webDatabase));
+ break;
+ case PROP_DISPLAY_NAME:
+ g_value_set_string(value, webkit_web_database_get_display_name(webDatabase));
+ break;
+ case PROP_EXPECTED_SIZE:
+ g_value_set_uint64(value, webkit_web_database_get_expected_size(webDatabase));
+ break;
+ case PROP_SIZE:
+ g_value_set_uint64(value, webkit_web_database_get_size(webDatabase));
+ break;
+ case PROP_PATH:
+ g_value_set_string(value, webkit_web_database_get_filename(webDatabase));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
+ break;
+ }
+}
+
+static void webkit_web_database_class_init(WebKitWebDatabaseClass* klass)
+{
+ GObjectClass* gobjectClass = G_OBJECT_CLASS(klass);
+ gobjectClass->dispose = webkit_web_database_dispose;
+ gobjectClass->finalize = webkit_web_database_finalize;
+ gobjectClass->set_property = webkit_web_database_set_property;
+ gobjectClass->get_property = webkit_web_database_get_property;
+
+ /**
+ * WebKitWebDatabase:security-origin:
+ *
+ * The security origin of the database.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_SECURITY_ORIGIN,
+ g_param_spec_object("security-origin",
+ _("Security Origin"),
+ _("The security origin of the database"),
+ WEBKIT_TYPE_SECURITY_ORIGIN,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitWebDatabase:name:
+ *
+ * The name of the Web Database database.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_NAME,
+ g_param_spec_string("name",
+ _("Name"),
+ _("The name of the Web Database database"),
+ NULL,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitWebDatabase:display-name:
+ *
+ * The display name of the Web Database database.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_DISPLAY_NAME,
+ g_param_spec_string("display-name",
+ _("Display Name"),
+ _("The display name of the Web Storage database"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebDatabase:expected-size:
+ *
+ * The expected size of the database in bytes as defined by the web author.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_EXPECTED_SIZE,
+ g_param_spec_uint64("expected-size",
+ _("Expected Size"),
+ _("The expected size of the Web Database database"),
+ 0, G_MAXUINT64, 0,
+ WEBKIT_PARAM_READABLE));
+ /**
+ * WebKitWebDatabase:size:
+ *
+ * The current size of the database in bytes.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_SIZE,
+ g_param_spec_uint64("size",
+ _("Size"),
+ _("The current size of the Web Database database"),
+ 0, G_MAXUINT64, 0,
+ WEBKIT_PARAM_READABLE));
+ /**
+ * WebKitWebDatabase:filename:
+ *
+ * The absolute filename of the Web Database database.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobjectClass, PROP_PATH,
+ g_param_spec_string("filename",
+ _("Filename"),
+ _("The absolute filename of the Web Storage database"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ g_type_class_add_private(klass, sizeof(WebKitWebDatabasePrivate));
+}
+
+static void webkit_web_database_init(WebKitWebDatabase* webDatabase)
+{
+ webDatabase->priv = G_TYPE_INSTANCE_GET_PRIVATE(webDatabase, WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabasePrivate);
+}
+
+// Internal use only
+static void webkit_web_database_set_security_origin(WebKitWebDatabase *webDatabase, WebKitSecurityOrigin *securityOrigin)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase));
+ g_return_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin));
+
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+
+ if (priv->origin)
+ g_object_unref(priv->origin);
+
+ g_object_ref(securityOrigin);
+ priv->origin = securityOrigin;
+}
+
+static void webkit_web_database_set_name(WebKitWebDatabase* webDatabase, const gchar* name)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase));
+
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+ g_free(priv->name);
+ priv->name = g_strdup(name);
+}
+
+/**
+ * webkit_web_database_get_security_origin:
+ * @webDatabase: a #WebKitWebDatabase
+ *
+ * Returns the security origin of the #WebKitWebDatabase.
+ *
+ * Returns: (transfer none): the security origin of the database
+ *
+ * Since: 1.1.14
+ **/
+WebKitSecurityOrigin* webkit_web_database_get_security_origin(WebKitWebDatabase* webDatabase)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL);
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+
+ return priv->origin;
+}
+
+/**
+ * webkit_web_database_get_name:
+ * @webDatabase: a #WebKitWebDatabase
+ *
+ * Returns the canonical name of the #WebKitWebDatabase.
+ *
+ * Returns: the name of the database
+ *
+ * Since: 1.1.14
+ **/
+G_CONST_RETURN gchar* webkit_web_database_get_name(WebKitWebDatabase* webDatabase)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL);
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+
+ return priv->name;
+}
+
+/**
+ * webkit_web_database_get_display_name:
+ * @webDatabase: a #WebKitWebDatabase
+ *
+ * Returns the name of the #WebKitWebDatabase as seen by the user.
+ *
+ * Returns: the name of the database as seen by the user.
+ *
+ * Since: 1.1.14
+ **/
+G_CONST_RETURN gchar* webkit_web_database_get_display_name(WebKitWebDatabase* webDatabase)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL);
+
+#if ENABLE(DATABASE)
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+ WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin));
+ WTF::String displayName = details.displayName();
+
+ if (displayName.isEmpty())
+ return "";
+
+ g_free(priv->displayName);
+ priv->displayName = g_strdup(displayName.utf8().data());
+ return priv->displayName;
+#else
+ return "";
+#endif
+}
+
+/**
+ * webkit_web_database_get_expected_size:
+ * @webDatabase: a #WebKitWebDatabase
+ *
+ * Returns the expected size of the #WebKitWebDatabase in bytes as defined by the
+ * web author. The Web Database standard allows web authors to specify an expected
+ * size of the database to optimize the user experience.
+ *
+ * Returns: the expected size of the database in bytes
+ *
+ * Since: 1.1.14
+ **/
+guint64 webkit_web_database_get_expected_size(WebKitWebDatabase* webDatabase)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), 0);
+
+#if ENABLE(DATABASE)
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+ WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin));
+ return details.expectedUsage();
+#else
+ return 0;
+#endif
+}
+
+/**
+ * webkit_web_database_get_size:
+ * @webDatabase: a #WebKitWebDatabase
+ *
+ * Returns the actual size of the #WebKitWebDatabase space on disk in bytes.
+ *
+ * Returns: the actual size of the database in bytes
+ *
+ * Since: 1.1.14
+ **/
+guint64 webkit_web_database_get_size(WebKitWebDatabase* webDatabase)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), 0);
+
+#if ENABLE(DATABASE)
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+ WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin));
+ return details.currentUsage();
+#else
+ return 0;
+#endif
+}
+
+/**
+ * webkit_web_database_get_filename:
+ * @webDatabase: a #WebKitWebDatabase
+ *
+ * Returns the absolute filename to the #WebKitWebDatabase file on disk.
+ *
+ * Returns: the absolute filename of the database
+ *
+ * Since: 1.1.14
+ **/
+G_CONST_RETURN gchar* webkit_web_database_get_filename(WebKitWebDatabase* webDatabase)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL);
+
+#if ENABLE(DATABASE)
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+ WTF::String coreName = WTF::String::fromUTF8(priv->name);
+ WTF::String corePath = WebCore::DatabaseTracker::tracker().fullPathForDatabase(core(priv->origin), coreName);
+
+ if (corePath.isEmpty())
+ return"";
+
+ g_free(priv->filename);
+ priv->filename = g_strdup(corePath.utf8().data());
+ return priv->filename;
+
+#else
+ return "";
+#endif
+}
+
+/**
+ * webkit_web_database_remove:
+ * @webDatabase: a #WebKitWebDatabase
+ *
+ * Removes the #WebKitWebDatabase from its security origin and destroys all data
+ * stored in the database.
+ *
+ * Since: 1.1.14
+ **/
+void webkit_web_database_remove(WebKitWebDatabase* webDatabase)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase));
+
+#if ENABLE(DATABASE)
+ WebKitWebDatabasePrivate* priv = webDatabase->priv;
+ WebCore::DatabaseTracker::tracker().deleteDatabase(core(priv->origin), priv->name);
+#endif
+}
+
+/**
+ * webkit_remove_all_web_databases:
+ *
+ * Removes all web databases from the current database directory path.
+ *
+ * Since: 1.1.14
+ **/
+void webkit_remove_all_web_databases()
+{
+#if ENABLE(DATABASE)
+ WebCore::DatabaseTracker::tracker().deleteAllDatabases();
+#endif
+}
+
+/**
+ * webkit_get_web_database_directory_path:
+ *
+ * Returns the current path to the directory WebKit will write Web
+ * Database databases. By default this path will be in the user data
+ * directory.
+ *
+ * Returns: the current database directory path
+ *
+ * Since: 1.1.14
+ **/
+G_CONST_RETURN gchar* webkit_get_web_database_directory_path()
+{
+#if ENABLE(DATABASE)
+ WTF::String path = WebCore::DatabaseTracker::tracker().databaseDirectoryPath();
+
+ if (path.isEmpty())
+ return "";
+
+ g_free(webkit_database_directory_path);
+ webkit_database_directory_path = g_strdup(path.utf8().data());
+ return webkit_database_directory_path;
+#else
+ return "";
+#endif
+}
+
+/**
+ * webkit_set_web_database_directory_path:
+ * @path: the new database directory path
+ *
+ * Sets the current path to the directory WebKit will write Web
+ * Database databases.
+ *
+ * Since: 1.1.14
+ **/
+void webkit_set_web_database_directory_path(const gchar* path)
+{
+#if ENABLE(DATABASE)
+ WTF::String corePath = WTF::String::fromUTF8(path);
+ WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(corePath);
+
+ g_free(webkit_database_directory_path);
+ webkit_database_directory_path = g_strdup(corePath.utf8().data());
+#endif
+}
+
+/**
+ * webkit_get_default_web_database_quota:
+ *
+ * Returns the default quota for Web Database databases. By default
+ * this value is 5MB.
+
+ * Returns: the current default database quota in bytes
+ *
+ * Since: 1.1.14
+ **/
+guint64 webkit_get_default_web_database_quota()
+{
+ return webkit_default_database_quota;
+}
+
+/**
+ * webkit_set_default_web_database_quota:
+ * @defaultQuota: the new default database quota
+ *
+ * Sets the current path to the directory WebKit will write Web
+ * Database databases.
+ *
+ * Since: 1.1.14
+ **/
+void webkit_set_default_web_database_quota(guint64 defaultQuota)
+{
+ webkit_default_database_quota = defaultQuota;
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebdatabase.h b/Source/WebKit/gtk/webkit/webkitwebdatabase.h
new file mode 100644
index 0000000..8a9a151
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebdatabase.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2009 Martin Robinson
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebdatabase_h
+#define webkitwebdatabase_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_DATABASE (webkit_web_database_get_type())
+#define WEBKIT_WEB_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabase))
+#define WEBKIT_WEB_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabaseClass))
+#define WEBKIT_IS_WEB_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_DATABASE))
+#define WEBKIT_IS_WEB_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_DATABASE))
+#define WEBKIT_WEB_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_DATABASE, WebKitWebDatabaseClass))
+
+typedef struct _WebKitWebDatabasePrivate WebKitWebDatabasePrivate;
+
+struct _WebKitWebDatabase {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebDatabasePrivate* priv;
+};
+
+struct _WebKitWebDatabaseClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+ void (*_webkit_reserved4) (void);
+};
+
+WEBKIT_API GType
+webkit_web_database_get_type (void);
+
+WEBKIT_API WebKitSecurityOrigin *
+webkit_web_database_get_security_origin (WebKitWebDatabase* webDatabase);
+
+WEBKIT_API G_CONST_RETURN gchar*
+webkit_web_database_get_name (WebKitWebDatabase* webDatabase);
+
+WEBKIT_API G_CONST_RETURN gchar*
+webkit_web_database_get_display_name (WebKitWebDatabase* webDatabase);
+
+WEBKIT_API guint64
+webkit_web_database_get_expected_size (WebKitWebDatabase* webDatabase);
+
+WEBKIT_API guint64
+webkit_web_database_get_size (WebKitWebDatabase* webDatabase);
+
+WEBKIT_API G_CONST_RETURN gchar*
+webkit_web_database_get_filename (WebKitWebDatabase* webDatabase);
+
+WEBKIT_API void
+webkit_web_database_remove (WebKitWebDatabase* webDatabase);
+
+WEBKIT_API void
+webkit_remove_all_web_databases (void);
+
+WEBKIT_API G_CONST_RETURN gchar*
+webkit_get_web_database_directory_path (void);
+
+WEBKIT_API void
+webkit_set_web_database_directory_path (const gchar* path);
+
+WEBKIT_API guint64
+webkit_get_default_web_database_quota (void);
+
+WEBKIT_API void
+webkit_set_default_web_database_quota (guint64 defaultQuota);
+
+G_END_DECLS
+
+#endif /* webkitwebdatabase_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebdatasource.cpp b/Source/WebKit/gtk/webkit/webkitwebdatasource.cpp
new file mode 100644
index 0000000..8538665
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebdatasource.cpp
@@ -0,0 +1,442 @@
+/*
+ * Copyright (C) 2009 Jan Michael C. Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebdatasource.h"
+
+#include "ArchiveResource.h"
+#include "DocumentLoaderGtk.h"
+#include "FrameLoader.h"
+#include "FrameLoaderClientGtk.h"
+#include "KURL.h"
+#include "PlatformString.h"
+#include "ResourceRequest.h"
+#include "SharedBuffer.h"
+#include "SubstituteData.h"
+#include "runtime/InitializeThreading.h"
+#include "webkitglobalsprivate.h"
+#include "webkitnetworkrequestprivate.h"
+#include "webkitwebdatasourceprivate.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebresource.h"
+#include "webkitwebviewprivate.h"
+#include "wtf/Assertions.h"
+#include <glib.h>
+
+/**
+ * SECTION:webkitwebdatasource
+ * @short_description: Encapsulates the content to be displayed in a #WebKitWebFrame.
+ * @see_also: #WebKitWebFrame
+ *
+ * Data source encapsulates the content of a #WebKitWebFrame. A
+ * #WebKitWebFrame has a main resource and subresources and the data source
+ * provides access to these resources. When a request gets loaded initially,
+ * it is set to a provisional state. The application can request for the
+ * request that initiated the load by asking for the provisional data source
+ * and invoking the webkit_web_data_source_get_initial_request method of
+ * #WebKitWebDataSource. This data source may not have enough data and some
+ * methods may return empty values. To get a "full" data source with the data
+ * and resources loaded, you need to get the non-provisional data source
+ * through #WebKitWebFrame's webkit_web_frame_get_data_source method. This
+ * data source will have the data after everything was loaded. Make sure that
+ * the data source was finished loading before using any of its methods. You
+ * can do this via webkit_web_data_source_is_loading.
+ */
+
+using namespace WebCore;
+using namespace WebKit;
+
+struct _WebKitWebDataSourcePrivate {
+ WebKit::DocumentLoader* loader;
+
+ WebKitNetworkRequest* initialRequest;
+ WebKitNetworkRequest* networkRequest;
+ WebKitWebResource* mainresource;
+
+ GString* data;
+
+ gchar* textEncoding;
+ gchar* unreachableURL;
+};
+
+G_DEFINE_TYPE(WebKitWebDataSource, webkit_web_data_source, G_TYPE_OBJECT);
+
+static void webkit_web_data_source_dispose(GObject* object)
+{
+ WebKitWebDataSource* webDataSource = WEBKIT_WEB_DATA_SOURCE(object);
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+
+ ASSERT(priv->loader);
+ ASSERT(!priv->loader->isLoading());
+ priv->loader->detachDataSource();
+ priv->loader->deref();
+
+ if (priv->initialRequest) {
+ g_object_unref(priv->initialRequest);
+ priv->initialRequest = NULL;
+ }
+
+ if (priv->networkRequest) {
+ g_object_unref(priv->networkRequest);
+ priv->networkRequest = NULL;
+ }
+
+ if (priv->mainresource) {
+ g_object_unref(priv->mainresource);
+ priv->mainresource = NULL;
+ }
+
+ G_OBJECT_CLASS(webkit_web_data_source_parent_class)->dispose(object);
+}
+
+static void webkit_web_data_source_finalize(GObject* object)
+{
+ WebKitWebDataSource* dataSource = WEBKIT_WEB_DATA_SOURCE(object);
+ WebKitWebDataSourcePrivate* priv = dataSource->priv;
+
+ g_free(priv->unreachableURL);
+ g_free(priv->textEncoding);
+
+ if (priv->data) {
+ g_string_free(priv->data, TRUE);
+ priv->data = NULL;
+ }
+
+ G_OBJECT_CLASS(webkit_web_data_source_parent_class)->finalize(object);
+}
+
+static void webkit_web_data_source_class_init(WebKitWebDataSourceClass* klass)
+{
+ GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
+ gobject_class->dispose = webkit_web_data_source_dispose;
+ gobject_class->finalize = webkit_web_data_source_finalize;
+
+ webkitInit();
+
+ g_type_class_add_private(gobject_class, sizeof(WebKitWebDataSourcePrivate));
+}
+
+static void webkit_web_data_source_init(WebKitWebDataSource* webDataSource)
+{
+ webDataSource->priv = G_TYPE_INSTANCE_GET_PRIVATE(webDataSource, WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSourcePrivate);
+}
+
+/**
+ * webkit_web_data_source_new:
+ *
+ * Creates a new #WebKitWebDataSource instance. The URL of the
+ * #WebKitWebDataSource will be set to "about:blank".
+ *
+ * Return: a new #WebKitWebDataSource.
+ *
+ * Since: 1.1.14
+ */
+WebKitWebDataSource* webkit_web_data_source_new()
+{
+ WebKitNetworkRequest* request = webkit_network_request_new("about:blank");
+ WebKitWebDataSource* datasource = webkit_web_data_source_new_with_request(request);
+ g_object_unref(request);
+
+ return datasource;
+}
+
+/**
+ * webkit_web_data_source_new_with_request:
+ * @request: the #WebKitNetworkRequest to use to create this data source
+ *
+ * Creates a new #WebKitWebDataSource from a #WebKitNetworkRequest. Normally,
+ * #WebKitWebFrame objects create their data sources so you will almost never
+ * want to invoke this method directly.
+ *
+ * Returns: a new #WebKitWebDataSource
+ *
+ * Since: 1.1.14
+ */
+WebKitWebDataSource* webkit_web_data_source_new_with_request(WebKitNetworkRequest* request)
+{
+ ASSERT(request);
+
+ const gchar* uri = webkit_network_request_get_uri(request);
+
+ ResourceRequest resourceRequest(ResourceRequest(KURL(KURL(), String::fromUTF8(uri))));
+ WebKitWebDataSource* datasource = kitNew(WebKit::DocumentLoader::create(resourceRequest, SubstituteData()));
+
+ WebKitWebDataSourcePrivate* priv = datasource->priv;
+ priv->initialRequest = request;
+
+ return datasource;
+}
+
+/**
+ * webkit_web_data_source_get_web_frame:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Returns the #WebKitWebFrame that represents this data source
+ *
+ * Return value: (transfer none): the #WebKitWebFrame that represents
+ * the @data_source. The #WebKitWebFrame is owned by WebKit and should
+ * not be freed or destroyed. This will return %NULL if the
+ * @data_source is not attached to a frame.
+ *
+ * Since: 1.1.14
+ */
+WebKitWebFrame* webkit_web_data_source_get_web_frame(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+ FrameLoader* frameLoader = priv->loader->frameLoader();
+
+ if (!frameLoader)
+ return NULL;
+
+ return static_cast<WebKit::FrameLoaderClient*>(frameLoader->client())->webFrame();
+}
+
+/**
+ * webkit_web_data_source_get_initial_request:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Returns a reference to the original request that was used to load the web
+ * content. The #WebKitNetworkRequest returned by this method is the request
+ * prior to the "committed" load state. See webkit_web_data_source_get_request
+ * for getting the "committed" request.
+ *
+ * Return value: (transfer none): the original #WebKitNetworkRequest
+ *
+ * Since: 1.1.14
+ */
+WebKitNetworkRequest* webkit_web_data_source_get_initial_request(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+ ResourceRequest request = priv->loader->originalRequest();
+
+ if (priv->initialRequest)
+ g_object_unref(priv->initialRequest);
+
+ priv->initialRequest = kitNew(request);
+ return priv->initialRequest;
+}
+
+/**
+ * webkit_web_data_source_get_request:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Returns a #WebKitNetworkRequest that was used to create this
+ * #WebKitWebDataSource. The #WebKitNetworkRequest returned by this method is
+ * the request that was "committed", and hence, different from the request you
+ * get from the webkit_web_data_source_get_initial_request method.
+ *
+ * Return value: (transfer none): the #WebKitNetworkRequest that
+ * created the @data_source or %NULL if the @data_source is not
+ * attached to the frame or the frame hasn't been loaded.
+ *
+ * Since: 1.1.14
+ */
+WebKitNetworkRequest* webkit_web_data_source_get_request(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+ FrameLoader* frameLoader = priv->loader->frameLoader();
+ if (!frameLoader || !frameLoader->frameHasLoaded())
+ return NULL;
+
+ ResourceRequest request = priv->loader->request();
+
+ if (priv->networkRequest)
+ g_object_unref(priv->networkRequest);
+
+ priv->networkRequest = kitNew(request);
+ return priv->networkRequest;
+}
+
+/**
+ * webkit_web_data_source_get_encoding:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Returns the text encoding name as set in the #WebKitWebView, or if not, the
+ * text encoding of the response.
+ *
+ * Return value: the encoding name of the #WebKitWebView or of the response.
+ *
+ * Since: 1.1.14
+ */
+G_CONST_RETURN gchar* webkit_web_data_source_get_encoding(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+ String textEncodingName = priv->loader->overrideEncoding();
+
+ if (!textEncodingName)
+ textEncodingName = priv->loader->response().textEncodingName();
+
+ CString encoding = textEncodingName.utf8();
+ g_free(priv->textEncoding);
+ priv->textEncoding = g_strdup(encoding.data());
+ return priv->textEncoding;
+}
+
+/**
+ * webkit_web_data_source_is_loading:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Determines whether the data source is in the process of loading its content.
+ *
+ * Return value: %TRUE if the @data_source is still loading, %FALSE otherwise
+ *
+ * Since: 1.1.14
+ */
+gboolean webkit_web_data_source_is_loading(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), FALSE);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+
+ return priv->loader->isLoadingInAPISense();
+}
+
+/**
+ * webkit_web_data_source_get_data:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Returns the raw data that represents the the frame's content.The data will
+ * be incomplete until the data has finished loading. Returns %NULL if the web
+ * frame hasn't loaded any data. Use webkit_web_data_source_is_loading to test
+ * if data source is in the process of loading.
+ *
+ * Return value: (transfer none): a #GString which contains the raw
+ * data that represents the @data_source or %NULL if the @data_source
+ * hasn't loaded any data.
+ *
+ * Since: 1.1.14
+ */
+GString* webkit_web_data_source_get_data(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+
+ RefPtr<SharedBuffer> mainResourceData = priv->loader->mainResourceData();
+
+ if (!mainResourceData)
+ return NULL;
+
+ if (priv->data) {
+ g_string_free(priv->data, TRUE);
+ priv->data = NULL;
+ }
+
+ priv->data = g_string_new_len(mainResourceData->data(), mainResourceData->size());
+ return priv->data;
+}
+
+/**
+ * webkit_web_data_source_get_main_resource:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Returns the main resource of the @data_source
+ *
+ * Return value: (transfer none): a new #WebKitWebResource
+ * representing the main resource of the @data_source.
+ *
+ * Since: 1.1.14
+ */
+WebKitWebResource* webkit_web_data_source_get_main_resource(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+
+ if (priv->mainresource)
+ return priv->mainresource;
+
+ WebKitWebFrame* webFrame = webkit_web_data_source_get_web_frame(webDataSource);
+ WebKitWebView* webView = getViewFromFrame(webFrame);
+
+ priv->mainresource = WEBKIT_WEB_RESOURCE(g_object_ref(webkit_web_view_get_main_resource(webView)));
+
+ return priv->mainresource;
+}
+
+/**
+ * webkit_web_data_source_get_unreachable_uri:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Return the unreachable URI of @data_source. The @data_source will have an
+ * unreachable URL if it was created using #WebKitWebFrame's
+ * webkit_web_frame_load_alternate_html_string method.
+ *
+ * Return value: the unreachable URL of @data_source or %NULL if there is no unreachable URL.
+ *
+ * Since: 1.1.14
+ */
+G_CONST_RETURN gchar* webkit_web_data_source_get_unreachable_uri(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+ const KURL& unreachableURL = priv->loader->unreachableURL();
+
+ if (unreachableURL.isEmpty())
+ return NULL;
+
+ g_free(priv->unreachableURL);
+ priv->unreachableURL = g_strdup(unreachableURL.string().utf8().data());
+ return priv->unreachableURL;
+}
+
+/**
+ * webkit_web_data_source_get_subresources:
+ * @data_source: a #WebKitWebDataSource
+ *
+ * Gives you a #GList of #WebKitWebResource objects that compose the
+ * #WebKitWebView to which this #WebKitWebDataSource is attached.
+ *
+ * Return value: (element-type WebKitWebResource) (transfer container):
+ * a #GList of #WebKitWebResource objects; the objects are owned by
+ * WebKit, but the GList must be freed.
+ *
+ * Since: 1.1.15
+ */
+GList* webkit_web_data_source_get_subresources(WebKitWebDataSource* webDataSource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_DATA_SOURCE(webDataSource), NULL);
+
+ WebKitWebFrame* webFrame = webkit_web_data_source_get_web_frame(webDataSource);
+ WebKitWebView* webView = getViewFromFrame(webFrame);
+
+ return webkit_web_view_get_subresources(webView);
+}
+
+namespace WebKit {
+
+WebKitWebDataSource* kitNew(PassRefPtr<WebKit::DocumentLoader> loader)
+{
+ WebKitWebDataSource* webDataSource = WEBKIT_WEB_DATA_SOURCE(g_object_new(WEBKIT_TYPE_WEB_DATA_SOURCE, NULL));
+ WebKitWebDataSourcePrivate* priv = webDataSource->priv;
+ priv->loader = loader.releaseRef();
+
+ return webDataSource;
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebdatasource.h b/Source/WebKit/gtk/webkit/webkitwebdatasource.h
new file mode 100644
index 0000000..df83118
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebdatasource.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2009 Jan Michael C. Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebdatasource_h
+#define webkitwebdatasource_h
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+#include <webkit/webkitwebframe.h>
+#include <webkit/webkitnetworkrequest.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_DATA_SOURCE (webkit_web_data_source_get_type())
+#define WEBKIT_WEB_DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSource))
+#define WEBKIT_WEB_DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSourceClass))
+#define WEBKIT_IS_WEB_DATA_SOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_DATA_SOURCE))
+#define WEBKIT_IS_WEB_DATA_SOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_DATA_SOURCE))
+#define WEBKIT_WEB_DATA_SOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_DATA_SOURCE, WebKitWebDataSourceClass))
+
+typedef struct _WebKitWebDataSourcePrivate WebKitWebDataSourcePrivate;
+
+struct _WebKitWebDataSource {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebDataSourcePrivate *priv;
+};
+
+struct _WebKitWebDataSourceClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_web_data_source_get_type (void);
+
+WEBKIT_API WebKitWebDataSource *
+webkit_web_data_source_new (void);
+
+WEBKIT_API WebKitWebDataSource *
+webkit_web_data_source_new_with_request (WebKitNetworkRequest *request);
+
+WEBKIT_API WebKitWebFrame *
+webkit_web_data_source_get_web_frame (WebKitWebDataSource *data_source);
+
+WEBKIT_API WebKitNetworkRequest *
+webkit_web_data_source_get_initial_request (WebKitWebDataSource *data_source);
+
+WEBKIT_API WebKitNetworkRequest *
+webkit_web_data_source_get_request (WebKitWebDataSource *data_source);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_data_source_get_encoding (WebKitWebDataSource *data_source);
+
+WEBKIT_API gboolean
+webkit_web_data_source_is_loading (WebKitWebDataSource *data_source);
+
+WEBKIT_API GString *
+webkit_web_data_source_get_data (WebKitWebDataSource *data_source);
+
+WEBKIT_API WebKitWebResource *
+webkit_web_data_source_get_main_resource (WebKitWebDataSource *data_source);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_data_source_get_unreachable_uri (WebKitWebDataSource *data_source);
+
+WEBKIT_API GList*
+webkit_web_data_source_get_subresources (WebKitWebDataSource *data_source);
+
+G_END_DECLS
+
+#endif /* webkitwebdatasource_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h b/Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h
new file mode 100644
index 0000000..5c18493
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebdatasourceprivate.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebdatasourceprivate_h
+#define webkitwebdatasourceprivate_h
+
+#include "RefPtr.h"
+#include "webkitwebdatasource.h"
+
+namespace WebKit {
+
+WebKitWebDataSource* kitNew(PassRefPtr<WebKit::DocumentLoader>);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebframe.cpp b/Source/WebKit/gtk/webkit/webkitwebframe.cpp
new file mode 100644
index 0000000..d0ea875
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebframe.cpp
@@ -0,0 +1,1002 @@
+/*
+ * Copyright (C) 2007, 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2007 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2007 Apple Inc.
+ * Copyright (C) 2008 Christian Dywan <christian@imendio.com>
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2009 Jan Alonzo <jmalonzo@gmail.com>
+ * Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebframe.h"
+
+#include "AXObjectCache.h"
+#include "AccessibilityObjectWrapperAtk.h"
+#include "AnimationController.h"
+#include "DOMObjectCache.h"
+#include "DocumentLoader.h"
+#include "DocumentLoaderGtk.h"
+#include "FrameLoader.h"
+#include "FrameLoaderClientGtk.h"
+#include "FrameTree.h"
+#include "FrameView.h"
+#include "GCController.h"
+#include "GraphicsContext.h"
+#include "GtkVersioning.h"
+#include "HTMLFrameOwnerElement.h"
+#include "JSDOMBinding.h"
+#include "JSDOMWindow.h"
+#include "JSElement.h"
+#include "PrintContext.h"
+#include "RenderListItem.h"
+#include "RenderTreeAsText.h"
+#include "RenderView.h"
+#include "ScriptController.h"
+#include "SubstituteData.h"
+#include "webkitenumtypes.h"
+#include "webkitglobalsprivate.h"
+#include "webkitmarshal.h"
+#include "webkitnetworkrequestprivate.h"
+#include "webkitnetworkresponseprivate.h"
+#include "webkitsecurityoriginprivate.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebview.h"
+#include "webkitwebviewprivate.h"
+#include <JavaScriptCore/APICast.h>
+#include <atk/atk.h>
+#include <glib/gi18n-lib.h>
+#include <wtf/text/CString.h>
+
+#if ENABLE(SVG)
+#include "SVGSMILElement.h"
+#endif
+
+/**
+ * SECTION:webkitwebframe
+ * @short_description: The content of a #WebKitWebView
+ *
+ * A #WebKitWebView contains a main #WebKitWebFrame. A #WebKitWebFrame
+ * contains the content of one URI. The URI and name of the frame can
+ * be retrieved, the load status and progress can be observed using the
+ * signals and can be controlled using the methods of the #WebKitWebFrame.
+ * A #WebKitWebFrame can have any number of children and one child can
+ * be found by using #webkit_web_frame_find_frame.
+ *
+ * <informalexample><programlisting>
+ * /<!-- -->* Get the frame from the #WebKitWebView *<!-- -->/
+ * WebKitWebFrame *frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW(my_view));
+ * g_print("The URI of this frame is '%s'", webkit_web_frame_get_uri (frame));
+ * </programlisting></informalexample>
+ */
+
+using namespace WebKit;
+using namespace WebCore;
+using namespace std;
+
+enum {
+ CLEARED,
+ LOAD_COMMITTED,
+ LOAD_DONE,
+ TITLE_CHANGED,
+ HOVERING_OVER_LINK,
+ SCROLLBARS_POLICY_CHANGED,
+ LAST_SIGNAL
+};
+
+enum {
+ PROP_0,
+
+ PROP_NAME,
+ PROP_TITLE,
+ PROP_URI,
+ PROP_LOAD_STATUS,
+ PROP_HORIZONTAL_SCROLLBAR_POLICY,
+ PROP_VERTICAL_SCROLLBAR_POLICY
+};
+
+static guint webkit_web_frame_signals[LAST_SIGNAL] = { 0, };
+
+G_DEFINE_TYPE(WebKitWebFrame, webkit_web_frame, G_TYPE_OBJECT)
+
+static void webkit_web_frame_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* paramSpec)
+{
+ WebKitWebFrame* frame = WEBKIT_WEB_FRAME(object);
+
+ switch (propertyId) {
+ case PROP_NAME:
+ g_value_set_string(value, webkit_web_frame_get_name(frame));
+ break;
+ case PROP_TITLE:
+ g_value_set_string(value, webkit_web_frame_get_title(frame));
+ break;
+ case PROP_URI:
+ g_value_set_string(value, webkit_web_frame_get_uri(frame));
+ break;
+ case PROP_LOAD_STATUS:
+ g_value_set_enum(value, webkit_web_frame_get_load_status(frame));
+ break;
+ case PROP_HORIZONTAL_SCROLLBAR_POLICY:
+ g_value_set_enum(value, webkit_web_frame_get_horizontal_scrollbar_policy(frame));
+ break;
+ case PROP_VERTICAL_SCROLLBAR_POLICY:
+ g_value_set_enum(value, webkit_web_frame_get_vertical_scrollbar_policy(frame));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, paramSpec);
+ break;
+ }
+}
+
+// Called from the FrameLoaderClient when it is destroyed. Normally
+// the unref in the FrameLoaderClient is destroying this object as
+// well but due reference counting a user might have added a reference...
+void webkit_web_frame_core_frame_gone(WebKitWebFrame* frame)
+{
+ ASSERT(WEBKIT_IS_WEB_FRAME(frame));
+ WebKitWebFramePrivate* priv = frame->priv;
+ if (priv->coreFrame)
+ DOMObjectCache::clearByFrame(priv->coreFrame);
+ priv->coreFrame = 0;
+}
+
+static WebKitWebDataSource* webkit_web_frame_get_data_source_from_core_loader(WebCore::DocumentLoader* loader)
+{
+ return loader ? static_cast<WebKit::DocumentLoader*>(loader)->dataSource() : 0;
+}
+
+static void webkit_web_frame_finalize(GObject* object)
+{
+ WebKitWebFrame* frame = WEBKIT_WEB_FRAME(object);
+ WebKitWebFramePrivate* priv = frame->priv;
+
+ if (priv->coreFrame) {
+ DOMObjectCache::clearByFrame(priv->coreFrame);
+ priv->coreFrame->loader()->cancelAndClear();
+ priv->coreFrame = 0;
+ }
+
+ g_free(priv->name);
+ g_free(priv->title);
+ g_free(priv->uri);
+
+ G_OBJECT_CLASS(webkit_web_frame_parent_class)->finalize(object);
+}
+
+static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass)
+{
+ webkitInit();
+
+ /*
+ * signals
+ */
+ webkit_web_frame_signals[CLEARED] = g_signal_new("cleared",
+ G_TYPE_FROM_CLASS(frameClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ 0,
+ 0,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebFrame::load-done
+ * @web_frame: the object on which the signal is emitted
+ *
+ * Emitted when frame loading is done.
+ *
+ * Deprecated: Use the "load-status" property instead.
+ */
+ webkit_web_frame_signals[LOAD_COMMITTED] = g_signal_new("load-committed",
+ G_TYPE_FROM_CLASS(frameClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ 0,
+ 0,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebFrame::load-done
+ * @web_frame: the object on which the signal is emitted
+ *
+ * Emitted when frame loading is done.
+ *
+ * Deprecated: Use the "load-status" property instead, and/or
+ * WebKitWebView::load-error to be notified of load errors
+ */
+ webkit_web_frame_signals[LOAD_DONE] = g_signal_new("load-done",
+ G_TYPE_FROM_CLASS(frameClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ 0,
+ 0,
+ g_cclosure_marshal_VOID__BOOLEAN,
+ G_TYPE_NONE, 1,
+ G_TYPE_BOOLEAN);
+
+ /**
+ * WebKitWebFrame::title-changed:
+ * @frame: the object on which the signal is emitted
+ * @title: the new title
+ *
+ * When a #WebKitWebFrame changes the document title this signal is emitted.
+ *
+ * Deprecated: 1.1.18: Use "notify::title" instead.
+ */
+ webkit_web_frame_signals[TITLE_CHANGED] = g_signal_new("title-changed",
+ G_TYPE_FROM_CLASS(frameClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ 0,
+ 0,
+ webkit_marshal_VOID__STRING,
+ G_TYPE_NONE, 1,
+ G_TYPE_STRING);
+
+ webkit_web_frame_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link",
+ G_TYPE_FROM_CLASS(frameClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ 0,
+ 0,
+ webkit_marshal_VOID__STRING_STRING,
+ G_TYPE_NONE, 2,
+ G_TYPE_STRING, G_TYPE_STRING);
+
+ /**
+ * WebKitWebFrame::scrollbars-policy-changed:
+ * @web_view: the object which received the signal
+ *
+ * Signal emitted when policy for one or both of the scrollbars of
+ * the view has changed. The default handler will apply the new
+ * policy to the container that holds the #WebKitWebFrame if it is
+ * a #GtkScrolledWindow and the frame is the main frame. If you do
+ * not want this to be handled automatically, you need to handle
+ * this signal.
+ *
+ * The exception to this rule is that policies to disable the
+ * scrollbars are applied as %GTK_POLICY_AUTOMATIC instead, since
+ * the size request of the widget would force browser windows to
+ * not be resizable.
+ *
+ * You can obtain the new policies from the
+ * WebKitWebFrame:horizontal-scrollbar-policy and
+ * WebKitWebFrame:vertical-scrollbar-policy properties.
+ *
+ * Return value: %TRUE to stop other handlers from being invoked for the
+ * event. %FALSE to propagate the event further.
+ *
+ * Since: 1.1.14
+ */
+ webkit_web_frame_signals[SCROLLBARS_POLICY_CHANGED] = g_signal_new("scrollbars-policy-changed",
+ G_TYPE_FROM_CLASS(frameClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ g_signal_accumulator_true_handled,
+ 0,
+ webkit_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN, 0);
+
+ /*
+ * implementations of virtual methods
+ */
+ GObjectClass* objectClass = G_OBJECT_CLASS(frameClass);
+ objectClass->finalize = webkit_web_frame_finalize;
+ objectClass->get_property = webkit_web_frame_get_property;
+
+ /*
+ * properties
+ */
+ g_object_class_install_property(objectClass, PROP_NAME,
+ g_param_spec_string("name",
+ _("Name"),
+ _("The name of the frame"),
+ 0,
+ WEBKIT_PARAM_READABLE));
+
+ g_object_class_install_property(objectClass, PROP_TITLE,
+ g_param_spec_string("title",
+ _("Title"),
+ _("The document title of the frame"),
+ 0,
+ WEBKIT_PARAM_READABLE));
+
+ g_object_class_install_property(objectClass, PROP_URI,
+ g_param_spec_string("uri",
+ _("URI"),
+ _("The current URI of the contents displayed by the frame"),
+ 0,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebFrame:load-status:
+ *
+ * Determines the current status of the load.
+ *
+ * Since: 1.1.7
+ */
+ g_object_class_install_property(objectClass, PROP_LOAD_STATUS,
+ g_param_spec_enum("load-status",
+ "Load Status",
+ "Determines the current status of the load",
+ WEBKIT_TYPE_LOAD_STATUS,
+ WEBKIT_LOAD_FINISHED,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebFrame:horizontal-scrollbar-policy:
+ *
+ * Determines the current policy for the horizontal scrollbar of
+ * the frame. For the main frame, make sure to set the same policy
+ * on the scrollable widget containing the #WebKitWebView, unless
+ * you know what you are doing.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(objectClass, PROP_HORIZONTAL_SCROLLBAR_POLICY,
+ g_param_spec_enum("horizontal-scrollbar-policy",
+ _("Horizontal Scrollbar Policy"),
+ _("Determines the current policy for the horizontal scrollbar of the frame."),
+ GTK_TYPE_POLICY_TYPE,
+ GTK_POLICY_AUTOMATIC,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebFrame:vertical-scrollbar-policy:
+ *
+ * Determines the current policy for the vertical scrollbar of
+ * the frame. For the main frame, make sure to set the same policy
+ * on the scrollable widget containing the #WebKitWebView, unless
+ * you know what you are doing.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(objectClass, PROP_VERTICAL_SCROLLBAR_POLICY,
+ g_param_spec_enum("vertical-scrollbar-policy",
+ _("Vertical Scrollbar Policy"),
+ _("Determines the current policy for the vertical scrollbar of the frame."),
+ GTK_TYPE_POLICY_TYPE,
+ GTK_POLICY_AUTOMATIC,
+ WEBKIT_PARAM_READABLE));
+
+ g_type_class_add_private(frameClass, sizeof(WebKitWebFramePrivate));
+}
+
+static void webkit_web_frame_init(WebKitWebFrame* frame)
+{
+ WebKitWebFramePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(frame, WEBKIT_TYPE_WEB_FRAME, WebKitWebFramePrivate);
+
+ // TODO: Move constructor code here.
+ frame->priv = priv;
+}
+
+
+/**
+ * webkit_web_frame_new:
+ * @web_view: the controlling #WebKitWebView
+ *
+ * Creates a new #WebKitWebFrame initialized with a controlling #WebKitWebView.
+ *
+ * Returns: a new #WebKitWebFrame
+ *
+ * Deprecated: 1.0.2: #WebKitWebFrame can only be used to inspect existing
+ * frames.
+ **/
+WebKitWebFrame* webkit_web_frame_new(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+
+ WebKitWebFrame* frame = WEBKIT_WEB_FRAME(g_object_new(WEBKIT_TYPE_WEB_FRAME, NULL));
+ WebKitWebFramePrivate* priv = frame->priv;
+ WebKitWebViewPrivate* viewPriv = webView->priv;
+
+ priv->webView = webView;
+ WebKit::FrameLoaderClient* client = new WebKit::FrameLoaderClient(frame);
+ priv->coreFrame = Frame::create(viewPriv->corePage, 0, client).get();
+ priv->coreFrame->init();
+
+ priv->origin = 0;
+
+ return frame;
+}
+
+/**
+ * webkit_web_frame_get_title:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns the @frame's document title
+ *
+ * Return value: the title of @frame
+ */
+G_CONST_RETURN gchar* webkit_web_frame_get_title(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ return priv->title;
+}
+
+/**
+ * webkit_web_frame_get_uri:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns the current URI of the contents displayed by the @frame
+ *
+ * Return value: the URI of @frame
+ */
+G_CONST_RETURN gchar* webkit_web_frame_get_uri(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ return priv->uri;
+}
+
+/**
+ * webkit_web_frame_get_web_view:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns the #WebKitWebView that manages this #WebKitWebFrame.
+ *
+ * The #WebKitWebView returned manages the entire hierarchy of #WebKitWebFrame
+ * objects that contains @frame.
+ *
+ * Return value: (transfer none): the #WebKitWebView that manages @frame
+ */
+WebKitWebView* webkit_web_frame_get_web_view(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ return priv->webView;
+}
+
+/**
+ * webkit_web_frame_get_name:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns the @frame's name
+ *
+ * Return value: the name of @frame
+ */
+G_CONST_RETURN gchar* webkit_web_frame_get_name(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ WebKitWebFramePrivate* priv = frame->priv;
+
+ if (priv->name)
+ return priv->name;
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return "";
+
+ String string = coreFrame->tree()->uniqueName();
+ priv->name = g_strdup(string.utf8().data());
+ return priv->name;
+}
+
+/**
+ * webkit_web_frame_get_parent:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns the @frame's parent frame, or %NULL if it has none.
+ *
+ * Return value: (transfer none): the parent #WebKitWebFrame or %NULL in case there is none
+ */
+WebKitWebFrame* webkit_web_frame_get_parent(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return 0;
+
+ return kit(coreFrame->tree()->parent());
+}
+
+/**
+ * webkit_web_frame_load_uri:
+ * @frame: a #WebKitWebFrame
+ * @uri: an URI string
+ *
+ * Requests loading of the specified URI string.
+ *
+ * Since: 1.1.1
+ */
+void webkit_web_frame_load_uri(WebKitWebFrame* frame, const gchar* uri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+ g_return_if_fail(uri);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ coreFrame->loader()->load(ResourceRequest(KURL(KURL(), String::fromUTF8(uri))), false);
+}
+
+static void webkit_web_frame_load_data(WebKitWebFrame* frame, const gchar* content, const gchar* mimeType, const gchar* encoding, const gchar* baseURL, const gchar* unreachableURL)
+{
+ Frame* coreFrame = core(frame);
+ ASSERT(coreFrame);
+
+ KURL baseKURL = baseURL ? KURL(KURL(), String::fromUTF8(baseURL)) : blankURL();
+
+ ResourceRequest request(baseKURL);
+
+ RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(content, strlen(content));
+ SubstituteData substituteData(sharedBuffer.release(),
+ mimeType ? String::fromUTF8(mimeType) : String::fromUTF8("text/html"),
+ encoding ? String::fromUTF8(encoding) : String::fromUTF8("UTF-8"),
+ KURL(KURL(), String::fromUTF8(unreachableURL)),
+ KURL(KURL(), String::fromUTF8(unreachableURL)));
+
+ coreFrame->loader()->load(request, substituteData, false);
+}
+
+/**
+ * webkit_web_frame_load_string:
+ * @frame: a #WebKitWebFrame
+ * @content: an URI string
+ * @mime_type: the MIME type, or %NULL
+ * @encoding: the encoding, or %NULL
+ * @base_uri: the base URI for relative locations
+ *
+ * Requests loading of the given @content with the specified @mime_type,
+ * @encoding and @base_uri.
+ *
+ * If @mime_type is %NULL, "text/html" is assumed.
+ *
+ * If @encoding is %NULL, "UTF-8" is assumed.
+ *
+ * Since: 1.1.1
+ */
+void webkit_web_frame_load_string(WebKitWebFrame* frame, const gchar* content, const gchar* contentMimeType, const gchar* contentEncoding, const gchar* baseUri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+ g_return_if_fail(content);
+
+ webkit_web_frame_load_data(frame, content, contentMimeType, contentEncoding, baseUri, 0);
+}
+
+/**
+ * webkit_web_frame_load_alternate_string:
+ * @frame: a #WebKitWebFrame
+ * @content: the alternate content to display as the main page of the @frame
+ * @base_url: the base URI for relative locations
+ * @unreachable_url: the URL for the alternate page content
+ *
+ * Request loading of an alternate content for a URL that is unreachable.
+ * Using this method will preserve the back-forward list. The URI passed in
+ * @base_url has to be an absolute URI.
+ *
+ * Since: 1.1.6
+ */
+void webkit_web_frame_load_alternate_string(WebKitWebFrame* frame, const gchar* content, const gchar* baseURL, const gchar* unreachableURL)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+ g_return_if_fail(content);
+
+ webkit_web_frame_load_data(frame, content, 0, 0, baseURL, unreachableURL);
+}
+
+/**
+ * webkit_web_frame_load_request:
+ * @frame: a #WebKitWebFrame
+ * @request: a #WebKitNetworkRequest
+ *
+ * Connects to a given URI by initiating an asynchronous client request.
+ *
+ * Creates a provisional data source that will transition to a committed data
+ * source once any data has been received. Use webkit_web_frame_stop_loading() to
+ * stop the load. This function is typically invoked on the main frame.
+ */
+void webkit_web_frame_load_request(WebKitWebFrame* frame, WebKitNetworkRequest* request)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+ g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request));
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ coreFrame->loader()->load(core(request), false);
+}
+
+/**
+ * webkit_web_frame_stop_loading:
+ * @frame: a #WebKitWebFrame
+ *
+ * Stops any pending loads on @frame's data source, and those of its children.
+ */
+void webkit_web_frame_stop_loading(WebKitWebFrame* frame)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ coreFrame->loader()->stopAllLoaders();
+}
+
+/**
+ * webkit_web_frame_reload:
+ * @frame: a #WebKitWebFrame
+ *
+ * Reloads the initial request.
+ */
+void webkit_web_frame_reload(WebKitWebFrame* frame)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return;
+
+ coreFrame->loader()->reload();
+}
+
+/**
+ * webkit_web_frame_find_frame:
+ * @frame: a #WebKitWebFrame
+ * @name: the name of the frame to be found
+ *
+ * For pre-defined names, returns @frame if @name is "_self" or "_current",
+ * returns @frame's parent frame if @name is "_parent", and returns the main
+ * frame if @name is "_top". Also returns @frame if it is the main frame and
+ * @name is either "_parent" or "_top". For other names, this function returns
+ * the first frame that matches @name. This function searches @frame and its
+ * descendents first, then @frame's parent and its children moving up the
+ * hierarchy until a match is found. If no match is found in @frame's
+ * hierarchy, this function will search for a matching frame in other main
+ * frame hierarchies. Returns %NULL if no match is found.
+ *
+ * Return value: (transfer none): the found #WebKitWebFrame or %NULL in case none is found
+ */
+WebKitWebFrame* webkit_web_frame_find_frame(WebKitWebFrame* frame, const gchar* name)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+ g_return_val_if_fail(name, 0);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return 0;
+
+ String nameString = String::fromUTF8(name);
+ return kit(coreFrame->tree()->find(AtomicString(nameString)));
+}
+
+/**
+ * webkit_web_frame_get_global_context:
+ * @frame: a #WebKitWebFrame
+ *
+ * Gets the global JavaScript execution context. Use this function to bridge
+ * between the WebKit and JavaScriptCore APIs.
+ *
+ * Return value: (transfer none): the global JavaScript context
+ */
+JSGlobalContextRef webkit_web_frame_get_global_context(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return 0;
+
+ return toGlobalRef(coreFrame->script()->globalObject(mainThreadNormalWorld())->globalExec());
+}
+
+/**
+ * webkit_web_frame_get_data_source:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns the committed data source.
+ *
+ * Return value: (transfer none): the committed #WebKitWebDataSource.
+ *
+ * Since: 1.1.14
+ */
+WebKitWebDataSource* webkit_web_frame_get_data_source(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ Frame* coreFrame = core(frame);
+ return webkit_web_frame_get_data_source_from_core_loader(coreFrame->loader()->documentLoader());
+}
+
+/**
+ * webkit_web_frame_get_provisional_data_source:
+ * @frame: a #WebKitWebFrame
+ *
+ * You use the webkit_web_frame_load_request method to initiate a request that
+ * creates a provisional data source. The provisional data source will
+ * transition to a committed data source once any data has been received. Use
+ * webkit_web_frame_get_data_source to get the committed data source.
+ *
+ * Return value: (transfer none): the provisional #WebKitWebDataSource or %NULL if a load
+ * request is not in progress.
+ *
+ * Since: 1.1.14
+ */
+WebKitWebDataSource* webkit_web_frame_get_provisional_data_source(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), 0);
+
+ Frame* coreFrame = core(frame);
+ return webkit_web_frame_get_data_source_from_core_loader(coreFrame->loader()->provisionalDocumentLoader());
+}
+
+static void begin_print_callback(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data)
+{
+ PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data);
+
+ float width = gtk_print_context_get_width(context);
+ float height = gtk_print_context_get_height(context);
+ FloatRect printRect = FloatRect(0, 0, width, height);
+
+ printContext->begin(width);
+
+ // TODO: Margin adjustments and header/footer support
+ float headerHeight = 0;
+ float footerHeight = 0;
+ float pageHeight; // height of the page adjusted by margins
+ printContext->computePageRects(printRect, headerHeight, footerHeight, 1.0, pageHeight);
+ gtk_print_operation_set_n_pages(op, printContext->pageCount());
+}
+
+static void draw_page_callback(GtkPrintOperation* op, GtkPrintContext* context, gint page_nr, gpointer user_data)
+{
+ PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data);
+
+ if (page_nr >= printContext->pageCount())
+ return;
+
+ cairo_t* cr = gtk_print_context_get_cairo_context(context);
+ GraphicsContext ctx(cr);
+ float width = gtk_print_context_get_width(context);
+ printContext->spoolPage(ctx, page_nr, width);
+}
+
+static void end_print_callback(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data)
+{
+ PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data);
+ printContext->end();
+}
+
+/**
+ * webkit_web_frame_print_full:
+ * @frame: a #WebKitWebFrame to be printed
+ * @operation: the #GtkPrintOperation to be carried
+ * @action: the #GtkPrintOperationAction to be performed
+ * @error: #GError for error return
+ *
+ * Prints the given #WebKitWebFrame, using the given #GtkPrintOperation
+ * and #GtkPrintOperationAction. This function wraps a call to
+ * gtk_print_operation_run() for printing the contents of the
+ * #WebKitWebFrame.
+ *
+ * Since: 1.1.5
+ */
+GtkPrintOperationResult webkit_web_frame_print_full(WebKitWebFrame* frame, GtkPrintOperation* operation, GtkPrintOperationAction action, GError** error)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), GTK_PRINT_OPERATION_RESULT_ERROR);
+ g_return_val_if_fail(GTK_IS_PRINT_OPERATION(operation), GTK_PRINT_OPERATION_RESULT_ERROR);
+
+ GtkWidget* topLevel = gtk_widget_get_toplevel(GTK_WIDGET(webkit_web_frame_get_web_view(frame)));
+
+ if (!gtk_widget_is_toplevel(topLevel))
+ topLevel = 0;
+
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return GTK_PRINT_OPERATION_RESULT_ERROR;
+
+ PrintContext printContext(coreFrame);
+
+ g_signal_connect(operation, "begin-print", G_CALLBACK(begin_print_callback), &printContext);
+ g_signal_connect(operation, "draw-page", G_CALLBACK(draw_page_callback), &printContext);
+ g_signal_connect(operation, "end-print", G_CALLBACK(end_print_callback), &printContext);
+
+ return gtk_print_operation_run(operation, action, GTK_WINDOW(topLevel), error);
+}
+
+/**
+ * webkit_web_frame_print:
+ * @frame: a #WebKitWebFrame
+ *
+ * Prints the given #WebKitWebFrame, by presenting a print dialog to the
+ * user. If you need more control over the printing process, see
+ * webkit_web_frame_print_full().
+ *
+ * Since: 1.1.5
+ */
+void webkit_web_frame_print(WebKitWebFrame* frame)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ GtkPrintOperation* operation = gtk_print_operation_new();
+ GError* error = 0;
+
+ webkit_web_frame_print_full(frame, operation, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, &error);
+ g_object_unref(operation);
+
+ if (error) {
+ GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(priv->webView));
+ GtkWidget* dialog = gtk_message_dialog_new(gtk_widget_is_toplevel(window) ? GTK_WINDOW(window) : 0,
+ GTK_DIALOG_DESTROY_WITH_PARENT,
+ GTK_MESSAGE_ERROR,
+ GTK_BUTTONS_CLOSE,
+ "%s", error->message);
+
+ g_error_free(error);
+
+ g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
+ gtk_widget_show(dialog);
+ }
+}
+
+gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame)
+{
+ Frame* coreFrame = core(frame);
+ WebCore::DocumentLoader* docLoader = coreFrame->loader()->documentLoader();
+ String mimeType = docLoader->responseMIMEType();
+ return g_strdup(mimeType.utf8().data());
+}
+
+/**
+ * webkit_web_frame_get_load_status:
+ * @frame: a #WebKitWebView
+ *
+ * Determines the current status of the load.
+ *
+ * Since: 1.1.7
+ */
+WebKitLoadStatus webkit_web_frame_get_load_status(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), WEBKIT_LOAD_FINISHED);
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ return priv->loadStatus;
+}
+
+GtkPolicyType webkit_web_frame_get_horizontal_scrollbar_policy(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), GTK_POLICY_AUTOMATIC);
+
+ Frame* coreFrame = core(frame);
+ FrameView* view = coreFrame->view();
+ if (!view)
+ return GTK_POLICY_AUTOMATIC;
+
+ ScrollbarMode hMode = view->horizontalScrollbarMode();
+
+ if (hMode == ScrollbarAlwaysOn)
+ return GTK_POLICY_ALWAYS;
+
+ if (hMode == ScrollbarAlwaysOff)
+ return GTK_POLICY_NEVER;
+
+ return GTK_POLICY_AUTOMATIC;
+}
+
+GtkPolicyType webkit_web_frame_get_vertical_scrollbar_policy(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), GTK_POLICY_AUTOMATIC);
+
+ Frame* coreFrame = core(frame);
+ FrameView* view = coreFrame->view();
+ if (!view)
+ return GTK_POLICY_AUTOMATIC;
+
+ ScrollbarMode vMode = view->verticalScrollbarMode();
+
+ if (vMode == ScrollbarAlwaysOn)
+ return GTK_POLICY_ALWAYS;
+
+ if (vMode == ScrollbarAlwaysOff)
+ return GTK_POLICY_NEVER;
+
+ return GTK_POLICY_AUTOMATIC;
+}
+
+/**
+ * webkit_web_frame_get_security_origin:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns the @frame's security origin.
+ *
+ * Return value: (transfer none): the security origin of @frame
+ *
+ * Since: 1.1.14
+ */
+WebKitSecurityOrigin* webkit_web_frame_get_security_origin(WebKitWebFrame* frame)
+{
+ WebKitWebFramePrivate* priv = frame->priv;
+ if (!priv->coreFrame || !priv->coreFrame->document() || !priv->coreFrame->document()->securityOrigin())
+ return 0;
+
+ if (priv->origin && priv->origin->priv->coreOrigin.get() == priv->coreFrame->document()->securityOrigin())
+ return priv->origin;
+
+ if (priv->origin)
+ g_object_unref(priv->origin);
+
+ priv->origin = kit(priv->coreFrame->document()->securityOrigin());
+ return priv->origin;
+}
+
+/**
+ * webkit_web_frame_get_network_response:
+ * @frame: a #WebKitWebFrame
+ *
+ * Returns a #WebKitNetworkResponse object representing the response
+ * that was given to the request for the given frame, or NULL if the
+ * frame was not created by a load. You must unref the object when you
+ * are done with it.
+ *
+ * Return value: (transfer full): a #WebKitNetworkResponse object
+ *
+ * Since: 1.1.18
+ */
+WebKitNetworkResponse* webkit_web_frame_get_network_response(WebKitWebFrame* frame)
+{
+ Frame* coreFrame = core(frame);
+ if (!coreFrame)
+ return 0;
+
+ WebCore::DocumentLoader* loader = coreFrame->loader()->activeDocumentLoader();
+ if (!loader)
+ return 0;
+
+ return kitNew(loader->response());
+}
+
+namespace WebKit {
+
+WebKitWebView* getViewFromFrame(WebKitWebFrame* frame)
+{
+ WebKitWebFramePrivate* priv = frame->priv;
+ return priv->webView;
+}
+
+WebCore::Frame* core(WebKitWebFrame* frame)
+{
+ if (!frame)
+ return 0;
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ return priv ? priv->coreFrame : 0;
+}
+
+WebKitWebFrame* kit(WebCore::Frame* coreFrame)
+{
+ if (!coreFrame)
+ return 0;
+
+ ASSERT(coreFrame->loader());
+ WebKit::FrameLoaderClient* client = static_cast<WebKit::FrameLoaderClient*>(coreFrame->loader()->client());
+ return client ? client->webFrame() : 0;
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebframe.h b/Source/WebKit/gtk/webkit/webkitwebframe.h
new file mode 100644
index 0000000..28d7113
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebframe.h
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ * Copyright (C) 2007 Alp Toker <alp@atoker.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebframe_h
+#define webkitwebframe_h
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+
+#include <JavaScriptCore/JSBase.h>
+
+#include <webkit/webkitdefines.h>
+#include <webkit/webkitnetworkrequest.h>
+#include <webkit/webkitwebdatasource.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_FRAME (webkit_web_frame_get_type())
+#define WEBKIT_WEB_FRAME(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFrame))
+#define WEBKIT_WEB_FRAME_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_FRAME, WebKitWebFrameClass))
+#define WEBKIT_IS_WEB_FRAME(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_FRAME))
+#define WEBKIT_IS_WEB_FRAME_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_FRAME))
+#define WEBKIT_WEB_FRAME_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFrameClass))
+
+typedef struct _WebKitWebFramePrivate WebKitWebFramePrivate;
+
+struct _WebKitWebFrame {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebFramePrivate *priv;
+};
+
+struct _WebKitWebFrameClass {
+ GObjectClass parent_class;
+
+ /*< public >*/
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+ void (*_webkit_reserved4) (void);
+ void (*_webkit_reserved5) (void);
+ void (*_webkit_reserved6) (void);
+};
+
+/**
+ * WebKitLoadStatus
+ * @WEBKIT_LOAD_PROVISIONAL: No data has been received yet, empty
+ * structures have been allocated to perform the load; the load may
+ * still fail for transport issues such as not being able to resolve a
+ * name, or connect to a port.
+ * @WEBKIT_LOAD_COMMITTED: The first data chunk has arrived, meaning
+ * that the necessary transport requirements are stabilished, and the
+ * load is being performed.
+ * @WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT: The first layout with
+ * actual visible content happened; one or more layouts may have
+ * happened before that caused nothing to be visible on the screen,
+ * because the data available at the time was not significant enough.
+ * @WEBKIT_LOAD_FINISHED: This state means that everything that was
+ * required to display the page has been loaded.
+ * @WEBKIT_LOAD_FAILED: This state means that some error occurred
+ * during the page load that prevented it from being completed. You
+ * can connect to the #WebKitWebView::load-error signal if you want to
+ * know precisely what kind of error occurred.
+ */
+typedef enum {
+ WEBKIT_LOAD_PROVISIONAL,
+ WEBKIT_LOAD_COMMITTED,
+ WEBKIT_LOAD_FINISHED,
+ WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT,
+ WEBKIT_LOAD_FAILED
+} WebKitLoadStatus;
+
+WEBKIT_API GType
+webkit_web_frame_get_type (void);
+
+#ifndef WEBKIT_DISABLE_DEPRECATED
+WEBKIT_API WebKitWebFrame *
+webkit_web_frame_new (WebKitWebView *web_view);
+#endif
+
+WEBKIT_API WebKitWebView *
+webkit_web_frame_get_web_view (WebKitWebFrame *frame);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_frame_get_name (WebKitWebFrame *frame);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_frame_get_title (WebKitWebFrame *frame);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_frame_get_uri (WebKitWebFrame *frame);
+
+WEBKIT_API WebKitWebFrame*
+webkit_web_frame_get_parent (WebKitWebFrame *frame);
+
+WEBKIT_API void
+webkit_web_frame_load_uri (WebKitWebFrame *frame,
+ const gchar *uri);
+
+WEBKIT_API void
+webkit_web_frame_load_string (WebKitWebFrame *frame,
+ const gchar *content,
+ const gchar *mime_type,
+ const gchar *encoding,
+ const gchar *base_uri);
+
+WEBKIT_API void
+webkit_web_frame_load_alternate_string (WebKitWebFrame *frame,
+ const gchar *content,
+ const gchar *base_url,
+ const gchar *unreachable_url);
+
+WEBKIT_API void
+webkit_web_frame_load_request (WebKitWebFrame *frame,
+ WebKitNetworkRequest *request);
+
+WEBKIT_API void
+webkit_web_frame_stop_loading (WebKitWebFrame *frame);
+
+WEBKIT_API void
+webkit_web_frame_reload (WebKitWebFrame *frame);
+
+WEBKIT_API WebKitWebFrame *
+webkit_web_frame_find_frame (WebKitWebFrame *frame,
+ const gchar *name);
+
+WEBKIT_API JSGlobalContextRef
+webkit_web_frame_get_global_context (WebKitWebFrame *frame);
+
+WEBKIT_API GtkPrintOperationResult
+webkit_web_frame_print_full (WebKitWebFrame *frame,
+ GtkPrintOperation *operation,
+ GtkPrintOperationAction action,
+ GError **error);
+
+WEBKIT_API void
+webkit_web_frame_print (WebKitWebFrame *frame);
+
+WEBKIT_API WebKitLoadStatus
+webkit_web_frame_get_load_status (WebKitWebFrame *frame);
+
+WEBKIT_API GtkPolicyType
+webkit_web_frame_get_horizontal_scrollbar_policy (WebKitWebFrame *frame);
+
+WEBKIT_API GtkPolicyType
+webkit_web_frame_get_vertical_scrollbar_policy (WebKitWebFrame *frame);
+
+WEBKIT_API WebKitWebDataSource *
+webkit_web_frame_get_data_source (WebKitWebFrame *frame);
+
+WEBKIT_API WebKitWebDataSource *
+webkit_web_frame_get_provisional_data_source (WebKitWebFrame *frame);
+
+WEBKIT_API WebKitSecurityOrigin*
+webkit_web_frame_get_security_origin (WebKitWebFrame *frame);
+
+WEBKIT_API WebKitNetworkResponse*
+webkit_web_frame_get_network_response (WebKitWebFrame *frame);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebframeprivate.h b/Source/WebKit/gtk/webkit/webkitwebframeprivate.h
new file mode 100644
index 0000000..80210d8
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebframeprivate.h
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebframeprivate_h
+#define webkitwebframeprivate_h
+
+#include "Frame.h"
+#include "webkitwebframe.h"
+
+namespace WebKit {
+
+WebKitWebView* getViewFromFrame(WebKitWebFrame*);
+
+WebCore::Frame* core(WebKitWebFrame*);
+WebKitWebFrame* kit(WebCore::Frame*);
+
+}
+
+extern "C" {
+
+typedef struct _WebKitWebFramePrivate WebKitWebFramePrivate;
+struct _WebKitWebFramePrivate {
+ WebCore::Frame* coreFrame;
+ WebKitWebView* webView;
+
+ gchar* name;
+ gchar* title;
+ gchar* uri;
+ WebKitLoadStatus loadStatus;
+ WebKitSecurityOrigin* origin;
+};
+
+void webkit_web_frame_core_frame_gone(WebKitWebFrame*);
+
+// FIXME: move this functionality into 'WebKitWebDataSource'?
+WEBKIT_API gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame*);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
new file mode 100644
index 0000000..eabdc49
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
@@ -0,0 +1,529 @@
+/*
+ * Copyright (C) 2008, 2009 Jan Michael C. Alonzo
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebhistoryitem.h"
+
+#include "HistoryItem.h"
+#include "PlatformString.h"
+#include "webkitglobalsprivate.h"
+#include "webkitwebhistoryitemprivate.h"
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkitwebhistoryitem
+ * @short_description: One item of the #WebKitWebBackForwardList and or global history
+ * @see_also: #WebKitWebBackForwardList
+ *
+ * A history item consists out of a title and a uri. It can be part of the
+ * #WebKitWebBackForwardList and the global history. The global history is used
+ * for coloring the links of visited sites. #WebKitWebHistoryItem's constructed with
+ * #webkit_web_history_item_new and #webkit_web_history_item_new_with_data are
+ * automatically added to the global history.
+ *
+ * <informalexample><programlisting>
+ * /<!-- -->* Inject a visited page into the global history *<!-- -->/
+ * webkit_web_history_item_new_with_data("http://www.gnome.org/", "GNOME: The Free Software Desktop Project");
+ * webkit_web_history_item_new_with_data("http://www.webkit.org/", "The WebKit Open Source Project");
+ * </programlisting></informalexample>
+ *
+ */
+
+using namespace WebKit;
+
+struct _WebKitWebHistoryItemPrivate {
+ WebCore::HistoryItem* historyItem;
+
+ WTF::CString title;
+ WTF::CString alternateTitle;
+ WTF::CString uri;
+ WTF::CString originalUri;
+
+ gboolean disposed;
+};
+
+enum {
+ PROP_0,
+
+ PROP_TITLE,
+ PROP_ALTERNATE_TITLE,
+ PROP_URI,
+ PROP_ORIGINAL_URI,
+ PROP_LAST_VISITED_TIME
+};
+
+G_DEFINE_TYPE(WebKitWebHistoryItem, webkit_web_history_item, G_TYPE_OBJECT);
+
+static void webkit_web_history_item_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
+
+static void webkit_web_history_item_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
+
+GHashTable* webkit_history_items()
+{
+ static GHashTable* historyItems = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, g_object_unref);
+ return historyItems;
+}
+
+void webkit_history_item_add(WebKitWebHistoryItem* webHistoryItem, WebCore::HistoryItem* historyItem)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem));
+
+ GHashTable* table = webkit_history_items();
+ g_hash_table_insert(table, historyItem, webHistoryItem);
+}
+
+static void webkit_web_history_item_dispose(GObject* object)
+{
+ WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object);
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+
+ if (!priv->disposed) {
+ WebCore::HistoryItem* item = core(webHistoryItem);
+ item->deref();
+ priv->disposed = true;
+ }
+
+ G_OBJECT_CLASS(webkit_web_history_item_parent_class)->dispose(object);
+}
+
+static void webkit_web_history_item_finalize(GObject* object)
+{
+ WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object);
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+
+ priv->title = WTF::CString();
+ priv->alternateTitle = WTF::CString();
+ priv->uri = WTF::CString();
+ priv->originalUri = WTF::CString();
+
+ G_OBJECT_CLASS(webkit_web_history_item_parent_class)->finalize(object);
+}
+
+static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass)
+{
+ GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
+
+ gobject_class->dispose = webkit_web_history_item_dispose;
+ gobject_class->finalize = webkit_web_history_item_finalize;
+ gobject_class->set_property = webkit_web_history_item_set_property;
+ gobject_class->get_property = webkit_web_history_item_get_property;
+
+ webkitInit();
+
+ /**
+ * WebKitWebHistoryItem:title:
+ *
+ * The title of the history item.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_TITLE,
+ g_param_spec_string(
+ "title",
+ _("Title"),
+ _("The title of the history item"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebHistoryItem:alternate-title:
+ *
+ * The alternate title of the history item.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ALTERNATE_TITLE,
+ g_param_spec_string(
+ "alternate-title",
+ _("Alternate Title"),
+ _("The alternate title of the history item"),
+ NULL,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitWebHistoryItem:uri:
+ *
+ * The URI of the history item.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_URI,
+ g_param_spec_string(
+ "uri",
+ _("URI"),
+ _("The URI of the history item"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebHistoryItem:original-uri:
+ *
+ * The original URI of the history item.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ORIGINAL_URI,
+ g_param_spec_string(
+ "original-uri",
+ _("Original URI"),
+ _("The original URI of the history item"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebHistoryItem:last-visited-time:
+ *
+ * The time at which the history item was last visited.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_LAST_VISITED_TIME,
+ g_param_spec_double(
+ "last-visited-time",
+ _("Last visited Time"),
+ _("The time at which the history item was last visited"),
+ 0, G_MAXDOUBLE, 0,
+ WEBKIT_PARAM_READABLE));
+
+ g_type_class_add_private(gobject_class, sizeof(WebKitWebHistoryItemPrivate));
+}
+
+static void webkit_web_history_item_init(WebKitWebHistoryItem* webHistoryItem)
+{
+ webHistoryItem->priv = G_TYPE_INSTANCE_GET_PRIVATE(webHistoryItem, WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItemPrivate);
+}
+
+static void webkit_web_history_item_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
+{
+ WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object);
+
+ switch(prop_id) {
+ case PROP_ALTERNATE_TITLE:
+ webkit_web_history_item_set_alternate_title(webHistoryItem, g_value_get_string(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void webkit_web_history_item_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(object);
+
+ switch (prop_id) {
+ case PROP_TITLE:
+ g_value_set_string(value, webkit_web_history_item_get_title(webHistoryItem));
+ break;
+ case PROP_ALTERNATE_TITLE:
+ g_value_set_string(value, webkit_web_history_item_get_alternate_title(webHistoryItem));
+ break;
+ case PROP_URI:
+ g_value_set_string(value, webkit_web_history_item_get_uri(webHistoryItem));
+ break;
+ case PROP_ORIGINAL_URI:
+ g_value_set_string(value, webkit_web_history_item_get_original_uri(webHistoryItem));
+ break;
+ case PROP_LAST_VISITED_TIME:
+ g_value_set_double(value, webkit_web_history_item_get_last_visited_time(webHistoryItem));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+/* Helper function to create a new WebHistoryItem instance when needed */
+WebKitWebHistoryItem* webkit_web_history_item_new_with_core_item(PassRefPtr<WebCore::HistoryItem> historyItem)
+{
+ return kit(historyItem);
+}
+
+
+/**
+ * webkit_web_history_item_new:
+ *
+ * Creates a new #WebKitWebHistoryItem instance
+ *
+ * Return value: the new #WebKitWebHistoryItem
+ */
+WebKitWebHistoryItem* webkit_web_history_item_new()
+{
+ WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, NULL));
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+
+ RefPtr<WebCore::HistoryItem> item = WebCore::HistoryItem::create();
+ priv->historyItem = item.release().releaseRef();
+ webkit_history_item_add(webHistoryItem, priv->historyItem);
+
+ return webHistoryItem;
+}
+
+/**
+ * webkit_web_history_item_new_with_data:
+ * @uri: the uri of the page
+ * @title: the title of the page
+ *
+ * Creates a new #WebKitWebHistoryItem with the given URI and title
+ *
+ * Return value: the new #WebKitWebHistoryItem
+ */
+WebKitWebHistoryItem* webkit_web_history_item_new_with_data(const gchar* uri, const gchar* title)
+{
+ WebKitWebHistoryItem* webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, NULL));
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+
+ WebCore::KURL historyUri(WebCore::KURL(), uri);
+ WTF::String historyTitle = WTF::String::fromUTF8(title);
+ RefPtr<WebCore::HistoryItem> item = WebCore::HistoryItem::create(historyUri, historyTitle, 0);
+ priv->historyItem = item.release().releaseRef();
+ webkit_history_item_add(webHistoryItem, priv->historyItem);
+
+ return webHistoryItem;
+}
+
+/**
+ * webkit_web_history_item_get_title:
+ * @web_history_item: a #WebKitWebHistoryItem
+ *
+ * Returns: the page title of @web_history_item
+ */
+G_CONST_RETURN gchar* webkit_web_history_item_get_title(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
+
+ WebCore::HistoryItem* item = core(webHistoryItem);
+
+ g_return_val_if_fail(item, NULL);
+
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+ priv->title = item->title().utf8();
+
+ return priv->title.data();
+}
+
+/**
+ * webkit_web_history_item_get_alternate_title:
+ * @web_history_item: a #WebKitWebHistoryItem
+ *
+ * Returns the alternate title of @web_history_item
+ *
+ * Return value: the alternate title of @web_history_item
+ */
+G_CONST_RETURN gchar* webkit_web_history_item_get_alternate_title(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
+
+ WebCore::HistoryItem* item = core(webHistoryItem);
+
+ g_return_val_if_fail(item, NULL);
+
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+ priv->alternateTitle = item->alternateTitle().utf8();
+
+ return priv->alternateTitle.data();
+}
+
+/**
+ * webkit_web_history_item_set_alternate_title:
+ * @web_history_item: a #WebKitWebHistoryItem
+ * @title: the alternate title for @this history item
+ *
+ * Sets an alternate title for @web_history_item
+ */
+void webkit_web_history_item_set_alternate_title(WebKitWebHistoryItem* webHistoryItem, const gchar* title)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem));
+ g_return_if_fail(title);
+
+ WebCore::HistoryItem* item = core(webHistoryItem);
+
+ item->setAlternateTitle(WTF::String::fromUTF8(title));
+ g_object_notify(G_OBJECT(webHistoryItem), "alternate-title");
+}
+
+/**
+ * webkit_web_history_item_get_uri:
+ * @web_history_item: a #WebKitWebHistoryItem
+ *
+ * Returns the URI of @this
+ *
+ * Return value: the URI of @web_history_item
+ */
+G_CONST_RETURN gchar* webkit_web_history_item_get_uri(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
+
+ WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem));
+
+ g_return_val_if_fail(item, NULL);
+
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+ priv->uri = item->urlString().utf8();
+
+ return priv->uri.data();
+}
+
+/**
+ * webkit_web_history_item_get_original_uri:
+ * @web_history_item: a #WebKitWebHistoryItem
+ *
+ * Returns the original URI of @web_history_item.
+ *
+ * Return value: the original URI of @web_history_item
+ */
+G_CONST_RETURN gchar* webkit_web_history_item_get_original_uri(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
+
+ WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem));
+
+ g_return_val_if_fail(item, NULL);
+
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+ priv->originalUri = item->originalURLString().utf8();
+
+ return webHistoryItem->priv->originalUri.data();
+}
+
+/**
+ * webkit_web_history_item_get_last_visisted_time :
+ * @web_history_item: a #WebKitWebHistoryItem
+ *
+ * Returns the last time @web_history_item was visited
+ *
+ * Return value: the time in seconds this @web_history_item was last visited
+ */
+gdouble webkit_web_history_item_get_last_visited_time(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), 0);
+
+ WebCore::HistoryItem* item = core(WEBKIT_WEB_HISTORY_ITEM(webHistoryItem));
+
+ g_return_val_if_fail(item, 0);
+
+ return item->lastVisitedTime();
+}
+
+/**
+ * webkit_web_history_item_copy:
+ * @web_history_item: a #WebKitWebHistoryItem
+ *
+ * Makes a copy of the item for use with other WebView objects.
+ *
+ * Since: 1.1.18
+ *
+ * Return value: (transfer full): the new #WebKitWebHistoryItem.
+ */
+WebKitWebHistoryItem* webkit_web_history_item_copy(WebKitWebHistoryItem* self)
+{
+ WebKitWebHistoryItemPrivate* selfPrivate = self->priv;
+
+ WebKitWebHistoryItem* item = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, 0));
+ WebKitWebHistoryItemPrivate* priv = item->priv;
+
+ priv->title = selfPrivate->title;
+ priv->alternateTitle = selfPrivate->alternateTitle;
+ priv->uri = selfPrivate->uri;
+ priv->originalUri = selfPrivate->originalUri;
+
+ priv->historyItem = selfPrivate->historyItem->copy().releaseRef();
+
+ return item;
+}
+
+/* private methods */
+
+G_CONST_RETURN gchar* webkit_web_history_item_get_target(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
+
+ WebCore::HistoryItem* item = core(webHistoryItem);
+
+ g_return_val_if_fail(item, NULL);
+
+ WTF::CString t = item->target().utf8();
+ return g_strdup(t.data());
+}
+
+gboolean webkit_web_history_item_is_target_item(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), false);
+
+ WebCore::HistoryItem* item = core(webHistoryItem);
+
+ g_return_val_if_fail(item, false);
+
+ return item->isTargetItem();
+}
+
+GList* webkit_web_history_item_get_children(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
+
+ WebCore::HistoryItem* item = core(webHistoryItem);
+
+ g_return_val_if_fail(item, NULL);
+
+ const WebCore::HistoryItemVector& children = item->children();
+ if (!children.size())
+ return NULL;
+
+ unsigned size = children.size();
+ GList* kids = NULL;
+ for (unsigned i = 0; i < size; ++i)
+ kids = g_list_prepend(kids, kit(children[i].get()));
+
+ return g_list_reverse(kids);
+}
+
+WebCore::HistoryItem* WebKit::core(WebKitWebHistoryItem* webHistoryItem)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
+
+ return webHistoryItem->priv->historyItem;
+}
+
+WebKitWebHistoryItem* WebKit::kit(PassRefPtr<WebCore::HistoryItem> historyItem)
+{
+ g_return_val_if_fail(historyItem, NULL);
+
+ RefPtr<WebCore::HistoryItem> item = historyItem;
+ GHashTable* table = webkit_history_items();
+ WebKitWebHistoryItem* webHistoryItem = (WebKitWebHistoryItem*) g_hash_table_lookup(table, item.get());
+
+ if (!webHistoryItem) {
+ webHistoryItem = WEBKIT_WEB_HISTORY_ITEM(g_object_new(WEBKIT_TYPE_WEB_HISTORY_ITEM, NULL));
+ WebKitWebHistoryItemPrivate* priv = webHistoryItem->priv;
+
+ priv->historyItem = item.release().releaseRef();
+ webkit_history_item_add(webHistoryItem, priv->historyItem);
+ }
+
+ return webHistoryItem;
+}
+
diff --git a/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h
new file mode 100644
index 0000000..1820736
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebhistoryitem.h
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebhistoryitem_h
+#define webkitwebhistoryitem_h
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_HISTORY_ITEM (webkit_web_history_item_get_type())
+#define WEBKIT_WEB_HISTORY_ITEM(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItem))
+#define WEBKIT_WEB_HISTORY_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItemClass))
+#define WEBKIT_IS_WEB_HISTORY_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_HISTORY_ITEM))
+#define WEBKIT_IS_WEB_HISTORY_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_HISTORY_ITEM))
+#define WEBKIT_WEB_HISTORY_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_HISTORY_ITEM, WebKitWebHistoryItemClass))
+
+typedef struct _WebKitWebHistoryItemPrivate WebKitWebHistoryItemPrivate;
+
+struct _WebKitWebHistoryItem {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebHistoryItemPrivate *priv;
+};
+
+struct _WebKitWebHistoryItemClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_web_history_item_get_type (void);
+
+WEBKIT_API WebKitWebHistoryItem *
+webkit_web_history_item_new (void);
+
+WEBKIT_API WebKitWebHistoryItem *
+webkit_web_history_item_new_with_data (const gchar *uri,
+ const gchar *title);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_history_item_get_title (WebKitWebHistoryItem *web_history_item);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_history_item_get_alternate_title (WebKitWebHistoryItem *web_history_item);
+
+WEBKIT_API void
+webkit_web_history_item_set_alternate_title (WebKitWebHistoryItem *web_history_item,
+ const gchar *title);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_history_item_get_uri (WebKitWebHistoryItem *web_history_item);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_history_item_get_original_uri (WebKitWebHistoryItem *web_history_item);
+
+WEBKIT_API gdouble
+webkit_web_history_item_get_last_visited_time (WebKitWebHistoryItem *web_history_item);
+
+WEBKIT_API WebKitWebHistoryItem*
+webkit_web_history_item_copy (WebKitWebHistoryItem *web_history_item);
+
+G_END_DECLS
+
+#endif /* webkitwebhistoryitem_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h b/Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h
new file mode 100644
index 0000000..22b50ee
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebhistoryitemprivate.h
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebhistoryitemprivate_h
+#define webkitwebhistoryitemprivate_h
+
+#include "HistoryItem.h"
+
+namespace WebKit {
+
+WebCore::HistoryItem* core(WebKitWebHistoryItem*);
+WebKitWebHistoryItem* kit(PassRefPtr<WebCore::HistoryItem>);
+
+}
+
+extern "C" {
+
+GHashTable* webkit_history_items();
+
+WebKitWebHistoryItem* webkit_web_history_item_new_with_core_item(PassRefPtr<WebCore::HistoryItem>);
+
+WEBKIT_API G_CONST_RETURN gchar* webkit_web_history_item_get_target(WebKitWebHistoryItem*);
+
+WEBKIT_API gboolean webkit_web_history_item_is_target_item(WebKitWebHistoryItem*);
+
+WEBKIT_API GList* webkit_web_history_item_get_children(WebKitWebHistoryItem*);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebinspector.cpp b/Source/WebKit/gtk/webkit/webkitwebinspector.cpp
new file mode 100644
index 0000000..df63c63
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebinspector.cpp
@@ -0,0 +1,620 @@
+/*
+ * Copyright (C) 2008 Gustavo Noronha Silva
+ * Copyright (C) 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2009 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebinspector.h"
+
+#include "DumpRenderTreeSupportGtk.h"
+#include "FocusController.h"
+#include "Frame.h"
+#include "HitTestRequest.h"
+#include "HitTestResult.h"
+#include "InspectorClientGtk.h"
+#include "InspectorController.h"
+#include "IntPoint.h"
+#include "Page.h"
+#include "RenderLayer.h"
+#include "RenderView.h"
+#include "webkit/WebKitDOMNodePrivate.h"
+#include "webkitglobalsprivate.h"
+#include "webkitmarshal.h"
+#include "webkitwebinspectorprivate.h"
+#include <glib/gi18n-lib.h>
+
+/**
+ * SECTION:webkitwebinspector
+ * @short_description: Access to the WebKit Inspector
+ *
+ * The WebKit Inspector is a graphical tool to inspect and change
+ * the content of a #WebKitWebView. It also includes an interactive
+ * JavaScriptDebugger. Using this class one can get a GtkWidget which
+ * can be embedded into an application to show the inspector.
+ *
+ * The inspector is available when the #WebKitWebSettings of the
+ * #WebKitWebView has set the #WebKitWebSettings:enable-developer-extras
+ * to true otherwise no inspector is available.
+ *
+ * <informalexample><programlisting>
+ * /<!-- -->* Enable the developer extras *<!-- -->/
+ * WebKitWebSettings *setting = webkit_web_view_get_settings (WEBKIT_WEB_VIEW(my_webview));
+ * g_object_set (G_OBJECT(settings), "enable-developer-extras", TRUE, NULL);
+ *
+ * /<!-- -->* load some data or reload to be able to inspect the page*<!-- -->/
+ * webkit_web_view_open (WEBKIT_WEB_VIEW(my_webview), "http://www.gnome.org");
+ *
+ * /<!-- -->* Embed the inspector somewhere *<!-- -->/
+ * WebKitWebInspector *inspector = webkit_web_view_get_inspector (WEBKIT_WEB_VIEW(my_webview));
+ * g_signal_connect (G_OBJECT (inspector), "inspect-web-view", G_CALLBACK(create_gtk_window_around_it), NULL);
+ * g_signal_connect (G_OBJECT (inspector), "show-window", G_CALLBACK(show_inpector_window), NULL));
+ * g_signal_connect (G_OBJECT (inspector), "notify::inspected-uri", G_CALLBACK(inspected_uri_changed_do_stuff), NULL);
+ * </programlisting></informalexample>
+ */
+
+using namespace WebKit;
+using namespace WebCore;
+
+enum {
+ INSPECT_WEB_VIEW,
+ SHOW_WINDOW,
+ ATTACH_WINDOW,
+ DETACH_WINDOW,
+ CLOSE_WINDOW,
+ FINISHED,
+ LAST_SIGNAL
+};
+
+static guint webkit_web_inspector_signals[LAST_SIGNAL] = { 0, };
+
+enum {
+ PROP_0,
+
+ PROP_WEB_VIEW,
+ PROP_INSPECTED_URI,
+ PROP_JAVASCRIPT_PROFILING_ENABLED,
+ PROP_TIMELINE_PROFILING_ENABLED
+};
+
+G_DEFINE_TYPE(WebKitWebInspector, webkit_web_inspector, G_TYPE_OBJECT)
+
+struct _WebKitWebInspectorPrivate {
+ WebCore::Page* page;
+ WebKitWebView* inspector_view;
+ gchar* inspected_uri;
+};
+
+static void webkit_web_inspector_finalize(GObject* object);
+
+static void webkit_web_inspector_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
+
+static void webkit_web_inspector_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
+
+static gboolean webkit_inspect_web_view_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy)
+{
+ gboolean continueEmission = TRUE;
+ gpointer newWebView = g_value_get_object(handlerReturn);
+ g_value_set_object(returnAccu, newWebView);
+
+ if (newWebView)
+ continueEmission = FALSE;
+
+ return continueEmission;
+}
+
+static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
+{
+ GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
+ gobject_class->finalize = webkit_web_inspector_finalize;
+ gobject_class->set_property = webkit_web_inspector_set_property;
+ gobject_class->get_property = webkit_web_inspector_get_property;
+
+ /**
+ * WebKitWebInspector::inspect-web-view:
+ * @web_inspector: the object on which the signal is emitted
+ * @web_view: the #WebKitWebView which will be inspected
+ *
+ * Emitted when the user activates the 'inspect' context menu item
+ * to inspect a web view. The application which is interested in
+ * the inspector should create a window, or otherwise add the
+ * #WebKitWebView it creates to an existing window.
+ *
+ * You don't need to handle the reference count of the
+ * #WebKitWebView instance you create; the widget to which you add
+ * it will do that.
+ *
+ * Return value: (transfer none): a newly allocated #WebKitWebView or %NULL
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_inspector_signals[INSPECT_WEB_VIEW] = g_signal_new("inspect-web-view",
+ G_TYPE_FROM_CLASS(klass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ webkit_inspect_web_view_request_handled,
+ NULL,
+ webkit_marshal_OBJECT__OBJECT,
+ WEBKIT_TYPE_WEB_VIEW , 1,
+ WEBKIT_TYPE_WEB_VIEW);
+
+ /**
+ * WebKitWebInspector::show-window:
+ * @web_inspector: the object on which the signal is emitted
+ * @return: %TRUE if the signal has been handled
+ *
+ * Emitted when the inspector window should be displayed. Notice
+ * that the window must have been created already by handling
+ * #WebKitWebInspector::inspect-web-view.
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_inspector_signals[SHOW_WINDOW] = g_signal_new("show-window",
+ G_TYPE_FROM_CLASS(klass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN , 0);
+
+ /**
+ * WebKitWebInspector::attach-window:
+ * @web_inspector: the object on which the signal is emitted
+ * @return: %TRUE if the signal has been handled
+ *
+ * Emitted when the inspector should appear at the same window as
+ * the #WebKitWebView being inspected.
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_inspector_signals[ATTACH_WINDOW] = g_signal_new("attach-window",
+ G_TYPE_FROM_CLASS(klass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN , 0);
+
+ /**
+ * WebKitWebInspector::detach-window:
+ * @web_inspector: the object on which the signal is emitted
+ * @return: %TRUE if the signal has been handled
+ *
+ * Emitted when the inspector should appear in a separate window.
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_inspector_signals[DETACH_WINDOW] = g_signal_new("detach-window",
+ G_TYPE_FROM_CLASS(klass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN , 0);
+
+ /**
+ * WebKitWebInspector::close-window:
+ * @web_inspector: the object on which the signal is emitted
+ * @return: %TRUE if the signal has been handled
+ *
+ * Emitted when the inspector window should be closed. You can
+ * destroy the window or hide it so that it can be displayed again
+ * by handling #WebKitWebInspector::show-window later on.
+ *
+ * Notice that the inspected #WebKitWebView may no longer exist
+ * when this signal is emitted.
+ *
+ * Notice, too, that if you decide to destroy the window,
+ * #WebKitWebInspector::inspect-web-view will be emmited again, when the user
+ * inspects an element.
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_inspector_signals[CLOSE_WINDOW] = g_signal_new("close-window",
+ G_TYPE_FROM_CLASS(klass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN , 0);
+
+ /**
+ * WebKitWebInspector::finished:
+ * @web_inspector: the object on which the signal is emitted
+ *
+ * Emitted when the inspection is done. You should release your
+ * references on the inspector at this time. The inspected
+ * #WebKitWebView may no longer exist when this signal is emitted.
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_inspector_signals[FINISHED] = g_signal_new("finished",
+ G_TYPE_FROM_CLASS(klass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE , 0);
+
+ /*
+ * properties
+ */
+
+ /**
+ * WebKitWebInspector:web-view:
+ *
+ * The Web View that renders the Web Inspector itself.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class, PROP_WEB_VIEW,
+ g_param_spec_object("web-view",
+ _("Web View"),
+ _("The Web View that renders the Web Inspector itself"),
+ WEBKIT_TYPE_WEB_VIEW,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebInspector:inspected-uri:
+ *
+ * The URI that is currently being inspected.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class, PROP_INSPECTED_URI,
+ g_param_spec_string("inspected-uri",
+ _("Inspected URI"),
+ _("The URI that is currently being inspected"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebInspector:javascript-profiling-enabled
+ *
+ * This is enabling JavaScript profiling in the Inspector. This means
+ * that Console.profiles will return the profiles.
+ *
+ * Since: 1.1.1
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_JAVASCRIPT_PROFILING_ENABLED,
+ g_param_spec_boolean(
+ "javascript-profiling-enabled",
+ _("Enable JavaScript profiling"),
+ _("Profile the executed JavaScript."),
+ FALSE,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitWebInspector:timeline-profiling-enabled
+ *
+ * This is enabling Timeline profiling in the Inspector.
+ *
+ * Since: 1.1.17
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_TIMELINE_PROFILING_ENABLED,
+ g_param_spec_boolean(
+ "timeline-profiling-enabled",
+ _("Enable Timeline profiling"),
+ _("Profile the WebCore instrumentation."),
+ FALSE,
+ WEBKIT_PARAM_READWRITE));
+
+ g_type_class_add_private(klass, sizeof(WebKitWebInspectorPrivate));
+}
+
+static void webkit_web_inspector_init(WebKitWebInspector* web_inspector)
+{
+ web_inspector->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_inspector, WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorPrivate);
+}
+
+static void webkit_web_inspector_finalize(GObject* object)
+{
+ WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object);
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ if (priv->inspector_view)
+ g_object_unref(priv->inspector_view);
+
+ if (priv->inspected_uri)
+ g_free(priv->inspected_uri);
+
+ G_OBJECT_CLASS(webkit_web_inspector_parent_class)->finalize(object);
+}
+
+static void webkit_web_inspector_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
+{
+ WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object);
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ switch(prop_id) {
+ case PROP_JAVASCRIPT_PROFILING_ENABLED: {
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+ bool enabled = g_value_get_boolean(value);
+ WebCore::InspectorController* controller = priv->page->inspectorController();
+ if (enabled)
+ controller->enableProfiler();
+ else
+ controller->disableProfiler();
+#else
+ g_message("PROP_JAVASCRIPT_PROFILING_ENABLED is not work because of the javascript debugger is disabled\n");
+#endif
+ break;
+ }
+ case PROP_TIMELINE_PROFILING_ENABLED: {
+ bool enabled = g_value_get_boolean(value);
+ WebCore::InspectorController* controller = priv->page->inspectorController();
+ if (enabled)
+ controller->startTimelineProfiler();
+ else
+ controller->stopTimelineProfiler();
+ break;
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void webkit_web_inspector_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebInspector* web_inspector = WEBKIT_WEB_INSPECTOR(object);
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ switch (prop_id) {
+ case PROP_WEB_VIEW:
+ g_value_set_object(value, priv->inspector_view);
+ break;
+ case PROP_INSPECTED_URI:
+ g_value_set_string(value, priv->inspected_uri);
+ break;
+ case PROP_JAVASCRIPT_PROFILING_ENABLED:
+#if ENABLE(JAVASCRIPT_DEBUGGER)
+ g_value_set_boolean(value, priv->page->inspectorController()->profilerEnabled());
+#else
+ g_message("PROP_JAVASCRIPT_PROFILING_ENABLED is not work because of the javascript debugger is disabled\n");
+#endif
+ break;
+ case PROP_TIMELINE_PROFILING_ENABLED:
+ g_value_set_boolean(value, priv->page->inspectorController()->timelineAgent() != 0);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+// internal use only
+void webkit_web_inspector_set_web_view(WebKitWebInspector *web_inspector, WebKitWebView *web_view)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector));
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(web_view));
+
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ if (priv->inspector_view)
+ g_object_unref(priv->inspector_view);
+
+ g_object_ref(web_view);
+ priv->inspector_view = web_view;
+}
+
+/**
+ * webkit_web_inspector_get_web_view:
+ *
+ * Obtains the #WebKitWebView that is used to render the
+ * inspector. The #WebKitWebView instance is created by the
+ * application, by handling the #WebKitWebInspector::inspect-web-view signal. This means
+ * that this method may return %NULL if the user hasn't inspected
+ * anything.
+ *
+ * Returns: (transfer none): the #WebKitWebView instance that is used
+ * to render the inspector or %NULL if it is not yet created.
+ *
+ * Since: 1.0.3
+ **/
+WebKitWebView* webkit_web_inspector_get_web_view(WebKitWebInspector *web_inspector)
+{
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ return priv->inspector_view;
+}
+
+// internal use only
+void webkit_web_inspector_set_inspected_uri(WebKitWebInspector* web_inspector, const gchar* inspected_uri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(web_inspector));
+
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ g_free(priv->inspected_uri);
+ priv->inspected_uri = g_strdup(inspected_uri);
+}
+
+/**
+ * webkit_web_inspector_get_inspected_uri:
+ *
+ * Obtains the URI that is currently being inspected.
+ *
+ * Returns: a pointer to the URI as an internally allocated string; it
+ * should not be freed, modified or stored.
+ *
+ * Since: 1.0.3
+ **/
+const gchar* webkit_web_inspector_get_inspected_uri(WebKitWebInspector *web_inspector)
+{
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ return priv->inspected_uri;
+}
+
+void
+webkit_web_inspector_set_inspector_client(WebKitWebInspector* web_inspector, WebCore::Page* page)
+{
+ WebKitWebInspectorPrivate* priv = web_inspector->priv;
+
+ priv->page = page;
+}
+
+/**
+ * webkit_web_inspector_show:
+ * @webInspector: the #WebKitWebInspector that will be shown
+ *
+ * Causes the Web Inspector to be shown.
+ *
+ * Since: 1.1.17
+ */
+void webkit_web_inspector_show(WebKitWebInspector* webInspector)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector));
+
+ WebKitWebInspectorPrivate* priv = webInspector->priv;
+
+ Frame* frame = priv->page->focusController()->focusedOrMainFrame();
+ FrameView* view = frame->view();
+
+ if (!view)
+ return;
+
+ priv->page->inspectorController()->show();
+}
+
+/**
+ * webkit_web_inspector_inspect_node:
+ * @web_inspector: the #WebKitWebInspector that will do the inspection
+ * @node: the #WebKitDOMNode to inspect
+ *
+ * Causes the Web Inspector to inspect the given node.
+ *
+ * Since: 1.3.7
+ */
+void webkit_web_inspector_inspect_node(WebKitWebInspector* webInspector, WebKitDOMNode* node)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector));
+ g_return_if_fail(WEBKIT_DOM_IS_NODE(node));
+
+ webInspector->priv->page->inspectorController()->inspect(core(node));
+}
+
+/**
+ * webkit_web_inspector_inspect_coordinates:
+ * @web_inspector: the #WebKitWebInspector that will do the inspection
+ * @x: the X coordinate of the node to be inspected
+ * @y: the Y coordinate of the node to be inspected
+ *
+ * Causes the Web Inspector to inspect the node that is located at the
+ * given coordinates of the widget. The coordinates should be relative
+ * to the #WebKitWebView widget, not to the scrollable content, and
+ * may be obtained from a #GdkEvent directly.
+ *
+ * This means @x, and @y being zero doesn't guarantee you will hit the
+ * left-most top corner of the content, since the contents may have
+ * been scrolled.
+ *
+ * Since: 1.1.17
+ */
+void webkit_web_inspector_inspect_coordinates(WebKitWebInspector* webInspector, gdouble x, gdouble y)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector));
+ g_return_if_fail(x >= 0 && y >= 0);
+
+ WebKitWebInspectorPrivate* priv = webInspector->priv;
+
+ Frame* frame = priv->page->focusController()->focusedOrMainFrame();
+ FrameView* view = frame->view();
+
+ if (!view)
+ return;
+
+ HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active);
+ IntPoint documentPoint = view->windowToContents(IntPoint(static_cast<int>(x), static_cast<int>(y)));
+ HitTestResult result(documentPoint);
+
+ frame->contentRenderer()->layer()->hitTest(request, result);
+ priv->page->inspectorController()->inspect(result.innerNonSharedNode());
+}
+
+/**
+ * webkit_web_inspector_close:
+ * @webInspector: the #WebKitWebInspector that will be closed
+ *
+ * Causes the Web Inspector to be closed.
+ *
+ * Since: 1.1.17
+ */
+void webkit_web_inspector_close(WebKitWebInspector* webInspector)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector));
+
+ WebKitWebInspectorPrivate* priv = webInspector->priv;
+ priv->page->inspectorController()->close();
+}
+
+void webkit_web_inspector_execute_script(WebKitWebInspector* webInspector, long callId, const gchar* script)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_INSPECTOR(webInspector));
+ g_return_if_fail(script);
+
+ WebKitWebInspectorPrivate* priv = webInspector->priv;
+ priv->page->inspectorController()->evaluateForTestInFrontend(callId, script);
+}
+
+#ifdef HAVE_GSETTINGS
+static bool isSchemaAvailable(const char* schemaID)
+{
+ const char* const* availableSchemas = g_settings_list_schemas();
+ char* const* iter = const_cast<char* const*>(availableSchemas);
+
+ while (*iter) {
+ if (g_str_equal(schemaID, *iter))
+ return true;
+ iter++;
+ }
+
+ return false;
+}
+
+GSettings* inspectorGSettings()
+{
+ static GSettings* settings = 0;
+ if (settings)
+ return settings;
+
+ // Unfortunately GSettings will abort the process execution if the schema is not
+ // installed, which is the case for when running tests, or even the introspection dump
+ // at build time, so check if we have the schema before trying to initialize it.
+ const gchar* schemaID = "org.webkitgtk-"WEBKITGTK_API_VERSION_STRING".inspector";
+ if (!isSchemaAvailable(schemaID)) {
+
+ // This warning is very common on the build bots, which hides valid warnings.
+ // Skip printing it if we are running inside DumpRenderTree.
+ if (!DumpRenderTreeSupportGtk::dumpRenderTreeModeEnabled())
+ g_warning("GSettings schema not found - settings will not be used or saved.");
+ return 0;
+ }
+
+ settings = g_settings_new(schemaID);
+ return settings;
+}
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebinspector.h b/Source/WebKit/gtk/webkit/webkitwebinspector.h
new file mode 100644
index 0000000..458e370
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebinspector.h
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 Gustavo Noronha Silva
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebinspector_h
+#define webkitwebinspector_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdomdefines.h>
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_INSPECTOR (webkit_web_inspector_get_type())
+#define WEBKIT_WEB_INSPECTOR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspector))
+#define WEBKIT_WEB_INSPECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorClass))
+#define WEBKIT_IS_WEB_INSPECTOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_INSPECTOR))
+#define WEBKIT_IS_WEB_INSPECTOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_INSPECTOR))
+#define WEBKIT_WEB_INSPECTOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_INSPECTOR, WebKitWebInspectorClass))
+
+typedef struct _WebKitWebInspectorPrivate WebKitWebInspectorPrivate;
+
+struct _WebKitWebInspector {
+ GObject parent_instance;
+
+ WebKitWebInspectorPrivate* priv;
+};
+
+struct _WebKitWebInspectorClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+ void (*_webkit_reserved4) (void);
+};
+
+WEBKIT_API GType
+webkit_web_inspector_get_type (void);
+
+WEBKIT_API WebKitWebView*
+webkit_web_inspector_get_web_view(WebKitWebInspector* web_inspector);
+
+WEBKIT_API const gchar*
+webkit_web_inspector_get_inspected_uri(WebKitWebInspector* web_inspector);
+
+WEBKIT_API void
+webkit_web_inspector_inspect_node(WebKitWebInspector* webInspector, WebKitDOMNode* node);
+
+WEBKIT_API void
+webkit_web_inspector_inspect_coordinates(WebKitWebInspector* web_inspector, gdouble x, gdouble y);
+
+WEBKIT_API void
+webkit_web_inspector_show(WebKitWebInspector* webInspector);
+
+WEBKIT_API void
+webkit_web_inspector_close(WebKitWebInspector* webInspector);
+G_END_DECLS
+
+#endif /* webkitwebinspector_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h b/Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h
new file mode 100644
index 0000000..46d57b0
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebinspectorprivate.h
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebinspectorprivate_h
+#define webkitwebinspectorprivate_h
+
+extern "C" {
+
+#ifdef HAVE_GSETTINGS
+GSettings* inspectorGSettings();
+#endif
+
+void webkit_web_inspector_set_inspector_client(WebKitWebInspector*, WebCore::Page*);
+
+void webkit_web_inspector_set_web_view(WebKitWebInspector*, WebKitWebView*);
+
+void webkit_web_inspector_set_inspected_uri(WebKitWebInspector*, const gchar*);
+
+WEBKIT_API void webkit_web_inspector_execute_script(WebKitWebInspector*, long callId, const gchar* script);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp
new file mode 100644
index 0000000..9f13f28
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.cpp
@@ -0,0 +1,381 @@
+/*
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebnavigationaction.h"
+
+#include "FrameLoaderTypes.h"
+#include "webkitenumtypes.h"
+#include "webkitglobalsprivate.h"
+#include <glib/gi18n-lib.h>
+#include <string.h>
+#include <wtf/Assertions.h>
+
+static void webkit_web_navigation_action_set_target_frame(WebKitWebNavigationAction* navigationAction, const gchar* targetFrame);
+
+/**
+ * SECTION:webkitwebnavigationaction
+ * @short_description: Object used to report details of navigation actions
+ *
+ * #WebKitWebNavigationAction is used in signals to provide details about
+ * what led the navigation to happen. This includes, for instance, if the user
+ * clicked a link to start that navigation, and what mouse button was used.
+ */
+
+struct _WebKitWebNavigationActionPrivate {
+ WebKitWebNavigationReason reason;
+ gchar* originalUri;
+ gint button;
+ gint modifier_state;
+ gchar* targetFrame;
+};
+
+enum {
+ PROP_0,
+
+ PROP_REASON,
+ PROP_ORIGINAL_URI,
+ PROP_BUTTON,
+ PROP_MODIFIER_STATE,
+ PROP_TARGET_FRAME
+};
+
+G_DEFINE_TYPE(WebKitWebNavigationAction, webkit_web_navigation_action, G_TYPE_OBJECT)
+
+
+static void webkit_web_navigation_action_get_property(GObject* object, guint propertyId, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebNavigationAction* navigationAction = WEBKIT_WEB_NAVIGATION_ACTION(object);
+
+ switch(propertyId) {
+ case PROP_REASON:
+ g_value_set_enum(value, webkit_web_navigation_action_get_reason(navigationAction));
+ break;
+ case PROP_ORIGINAL_URI:
+ g_value_set_string(value, webkit_web_navigation_action_get_original_uri(navigationAction));
+ break;
+ case PROP_BUTTON:
+ g_value_set_int(value, webkit_web_navigation_action_get_button(navigationAction));
+ break;
+ case PROP_MODIFIER_STATE:
+ g_value_set_int(value, webkit_web_navigation_action_get_modifier_state(navigationAction));
+ break;
+ case PROP_TARGET_FRAME:
+ g_value_set_string(value, webkit_web_navigation_action_get_target_frame(navigationAction));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
+ break;
+ }
+}
+
+static void webkit_web_navigation_action_set_property(GObject* object, guint propertyId, const GValue* value, GParamSpec* pspec)
+{
+ WebKitWebNavigationAction* navigationAction = WEBKIT_WEB_NAVIGATION_ACTION(object);
+ WebKitWebNavigationActionPrivate* priv = navigationAction->priv;
+
+ switch(propertyId) {
+ case PROP_REASON:
+ webkit_web_navigation_action_set_reason(navigationAction, (WebKitWebNavigationReason)g_value_get_enum(value));
+ break;
+ case PROP_ORIGINAL_URI:
+ webkit_web_navigation_action_set_original_uri(navigationAction, g_value_get_string(value));
+ break;
+ case PROP_BUTTON:
+ priv->button = g_value_get_int(value);
+ break;
+ case PROP_MODIFIER_STATE:
+ priv->modifier_state = g_value_get_int(value);
+ break;
+ case PROP_TARGET_FRAME:
+ webkit_web_navigation_action_set_target_frame(navigationAction, g_value_get_string(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propertyId, pspec);
+ break;
+ }
+}
+
+static void webkit_web_navigation_action_init(WebKitWebNavigationAction* navigationAction)
+{
+ navigationAction->priv = G_TYPE_INSTANCE_GET_PRIVATE(navigationAction, WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationActionPrivate);
+}
+
+static void webkit_web_navigation_action_finalize(GObject* obj)
+{
+ WebKitWebNavigationAction* navigationAction = WEBKIT_WEB_NAVIGATION_ACTION(obj);
+ WebKitWebNavigationActionPrivate* priv = navigationAction->priv;
+
+ g_free(priv->originalUri);
+
+ G_OBJECT_CLASS(webkit_web_navigation_action_parent_class)->finalize(obj);
+}
+
+static void webkit_web_navigation_action_class_init(WebKitWebNavigationActionClass* requestClass)
+{
+ GObjectClass* objectClass = G_OBJECT_CLASS(requestClass);
+
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) == static_cast<int>(WebCore::NavigationTypeLinkClicked), navigation_type_link_clicked_enum_match);
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED) == static_cast<int>(WebCore::NavigationTypeFormSubmitted), navigation_type_form_submitted_enum_match);
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD) == static_cast<int>(WebCore::NavigationTypeBackForward), navigation_type_back_forward_enum_match);
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_RELOAD) == static_cast<int>(WebCore::NavigationTypeReload), navigation_type_reload_enum_match);
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED) == static_cast<int>(WebCore::NavigationTypeFormResubmitted), navigation_type_form_resubmitted_enum_match);
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_WEB_NAVIGATION_REASON_OTHER) == static_cast<int>(WebCore::NavigationTypeOther), navigation_type_other_enum_match);
+
+ objectClass->get_property = webkit_web_navigation_action_get_property;
+ objectClass->set_property = webkit_web_navigation_action_set_property;
+ objectClass->dispose = webkit_web_navigation_action_finalize;
+
+ /**
+ * WebKitWebNavigationAction:reason:
+ *
+ * The reason why this navigation is occuring.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(objectClass, PROP_REASON,
+ g_param_spec_enum("reason",
+ _("Reason"),
+ _("The reason why this navigation is occurring"),
+ WEBKIT_TYPE_WEB_NAVIGATION_REASON,
+ WEBKIT_WEB_NAVIGATION_REASON_OTHER,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT)));
+
+ /**
+ * WebKitWebNavigationAction:original-uri:
+ *
+ * The URI that was requested as the target for the navigation.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(objectClass, PROP_ORIGINAL_URI,
+ g_param_spec_string("original-uri",
+ _("Original URI"),
+ _("The URI that was requested as the target for the navigation"),
+ "",
+ (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT)));
+ /**
+ * WebKitWebNavigationAction:button:
+ *
+ * The GTK+ identifier for the mouse button used to click. Notice that GTK+ button values
+ * are 1, 2 and 3 for left, middle and right buttons, so they are DOM button values +1. If the action was not
+ * initiated by a mouse click the value will be -1.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(objectClass, PROP_BUTTON,
+ g_param_spec_int("button",
+ _("Button"),
+ _("The button used to click"),
+ -1,
+ G_MAXINT,
+ -1,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitWebNavigationAction:modifier-state:
+ *
+ * The state of the modifier keys when the action was requested.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(objectClass, PROP_MODIFIER_STATE,
+ g_param_spec_int("modifier-state",
+ _("Modifier state"),
+ _("A bitmask representing the state of the modifier keys"),
+ 0,
+ G_MAXINT,
+ 0,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+ /**
+ * WebKitWebNavigationAction:target-frame:
+ *
+ * The target frame for the navigation.
+ *
+ * Since: 1.1.13
+ */
+ g_object_class_install_property(objectClass, PROP_TARGET_FRAME,
+ g_param_spec_string("target-frame",
+ _("Target frame"),
+ _("The target frame for the navigation"),
+ NULL,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
+
+
+
+ g_type_class_add_private(requestClass, sizeof(WebKitWebNavigationActionPrivate));
+}
+
+/**
+ * webkit_web_navigation_action_get_reason:
+ * @navigationAction: a #WebKitWebNavigationAction
+ *
+ * Returns the reason why WebKit is requesting a navigation.
+ *
+ * Return value: a #WebKitWebNavigationReason
+ *
+ * Since: 1.0.3
+ */
+WebKitWebNavigationReason webkit_web_navigation_action_get_reason(WebKitWebNavigationAction* navigationAction)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), WEBKIT_WEB_NAVIGATION_REASON_OTHER);
+
+ return navigationAction->priv->reason;
+}
+
+/**
+ * webkit_web_navigation_action_set_reason:
+ * @navigationAction: a #WebKitWebNavigationAction
+ * @reason: a #WebKitWebNavigationReason
+ *
+ * Sets the reason why WebKit is requesting a navigation.
+ *
+ * Since: 1.0.3
+ */
+void webkit_web_navigation_action_set_reason(WebKitWebNavigationAction* navigationAction, WebKitWebNavigationReason reason)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction));
+
+ if (navigationAction->priv->reason == reason)
+ return;
+
+ navigationAction->priv->reason = reason;
+ g_object_notify(G_OBJECT(navigationAction), "reason");
+}
+
+/**
+ * webkit_web_navigation_action_get_original_uri:
+ * @navigationAction: a #WebKitWebNavigationAction
+ *
+ * Returns the URI that was originally requested. This may differ from the
+ * navigation target, for instance because of a redirect.
+ *
+ * Return value: the originally requested URI
+ *
+ * Since: 1.0.3
+ */
+const gchar* webkit_web_navigation_action_get_original_uri(WebKitWebNavigationAction* navigationAction)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), NULL);
+
+ return navigationAction->priv->originalUri;
+}
+
+/**
+ * webkit_web_navigation_action_set_original_uri:
+ * @navigationAction: a #WebKitWebNavigationAction
+ * @originalUri: a URI
+ *
+ * Sets the URI that was originally requested. This may differ from the
+ * navigation target, for instance because of a redirect.
+ *
+ * Since: 1.0.3
+ */
+void webkit_web_navigation_action_set_original_uri(WebKitWebNavigationAction* navigationAction, const gchar* originalUri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction));
+ g_return_if_fail(originalUri);
+
+ if (navigationAction->priv->originalUri &&
+ (!strcmp(navigationAction->priv->originalUri, originalUri)))
+ return;
+
+ g_free(navigationAction->priv->originalUri);
+ navigationAction->priv->originalUri = g_strdup(originalUri);
+ g_object_notify(G_OBJECT(navigationAction), "original-uri");
+}
+
+/**
+ * webkit_web_navigation_action_get_button:
+ * @navigationAction: a #WebKitWebNavigationAction
+ *
+ * The GTK+ identifier for the mouse button used to click. Notice that GTK+ button values
+ * are 1, 2 and 3 for left, middle and right buttons, so they are DOM button values +1. If the action was not
+ * initiated by a mouse click the value will be -1.
+ *
+ * Return value: the mouse button used to click
+ *
+ * Since: 1.0.3
+ */
+gint webkit_web_navigation_action_get_button(WebKitWebNavigationAction* navigationAction)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), -1);
+
+ return navigationAction->priv->button;
+}
+
+/**
+ * webkit_web_navigation_action_get_modifier_state:
+ * @navigationAction: a #WebKitWebNavigationAction
+ *
+ * Returns a bitmask with the the state of the modifier keys.
+ *
+ * Return value: a bitmask with the state of the modifier keys
+ *
+ * Since: 1.0.3
+ */
+gint webkit_web_navigation_action_get_modifier_state(WebKitWebNavigationAction* navigationAction)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), 0);
+
+ return navigationAction->priv->modifier_state;
+}
+
+/**
+ * webkit_web_navigation_action_get_target_frame:
+ * @navigationAction: a #WebKitWebNavigationAction
+ *
+ * Returns the target frame of the action.
+ *
+ * Return value: the target frame of the action or NULL
+ * if there is no target.
+ *
+ * Since: 1.1.13
+ */
+G_CONST_RETURN gchar* webkit_web_navigation_action_get_target_frame(WebKitWebNavigationAction* navigationAction)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_NAVIGATION_ACTION(navigationAction), NULL);
+
+ return navigationAction->priv->targetFrame;
+}
+
+static void webkit_web_navigation_action_set_target_frame(WebKitWebNavigationAction* navigationAction, const gchar* targetFrame)
+{
+ if (!g_strcmp0(navigationAction->priv->targetFrame, targetFrame))
+ return;
+
+ g_free(navigationAction->priv->targetFrame);
+ navigationAction->priv->targetFrame = g_strdup(targetFrame);
+ g_object_notify(G_OBJECT(navigationAction), "target-frame");
+}
+
+namespace WebKit {
+
+WebKitWebNavigationReason kit(WebCore::NavigationType type)
+{
+ return (WebKitWebNavigationReason)type;
+}
+
+WebCore::NavigationType core(WebKitWebNavigationReason type)
+{
+ return static_cast<WebCore::NavigationType>(type);
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h
new file mode 100644
index 0000000..dbb47a8
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebnavigationaction.h
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebnavigationaction_h
+#define webkitwebnavigationaction_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+/*
+ * The order of this enum must be the same as NavigationType in
+ * FrameLoaderTypes.h
+ */
+typedef enum {
+ WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED,
+ WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED,
+ WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD,
+ WEBKIT_WEB_NAVIGATION_REASON_RELOAD,
+ WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED,
+ WEBKIT_WEB_NAVIGATION_REASON_OTHER,
+} WebKitWebNavigationReason;
+
+#define WEBKIT_TYPE_WEB_NAVIGATION_ACTION (webkit_web_navigation_action_get_type())
+#define WEBKIT_WEB_NAVIGATION_ACTION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationAction))
+#define WEBKIT_WEB_NAVIGATION_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationActionClass))
+#define WEBKIT_IS_WEB_NAVIGATION_ACTION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_NAVIGATION_ACTION))
+#define WEBKIT_IS_WEB_NAVIGATION_ACTION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_NAVIGATION_ACTION))
+#define WEBKIT_WEB_NAVIGATION_ACTION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationActionClass))
+
+typedef struct _WebKitWebNavigationAction WebKitWebNavigationAction;
+typedef struct _WebKitWebNavigationActionClass WebKitWebNavigationActionClass;
+typedef struct _WebKitWebNavigationActionPrivate WebKitWebNavigationActionPrivate;
+
+struct _WebKitWebNavigationAction {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebNavigationActionPrivate* priv;
+};
+
+struct _WebKitWebNavigationActionClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_web_navigation_action_get_type(void);
+
+WEBKIT_API WebKitWebNavigationReason
+webkit_web_navigation_action_get_reason(WebKitWebNavigationAction* navigationAction);
+
+WEBKIT_API void
+webkit_web_navigation_action_set_reason(WebKitWebNavigationAction* navigationAction, WebKitWebNavigationReason reason);
+
+WEBKIT_API const gchar*
+webkit_web_navigation_action_get_original_uri(WebKitWebNavigationAction* navigationAction);
+
+WEBKIT_API void
+webkit_web_navigation_action_set_original_uri(WebKitWebNavigationAction* navigationAction, const gchar* originalUri);
+
+WEBKIT_API gint
+webkit_web_navigation_action_get_button(WebKitWebNavigationAction* navigationAction);
+
+WEBKIT_API gint
+webkit_web_navigation_action_get_modifier_state(WebKitWebNavigationAction* navigationAction);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_navigation_action_get_target_frame(WebKitWebNavigationAction* navigationAction);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h b/Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h
new file mode 100644
index 0000000..a8bc5ca
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebnavigationactionprivate.h
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebnavigationactionprivate_h
+#define webkitnavigationactionprivate_h
+
+#include <webkit/webkitwebnavigationaction.h>
+
+namespace WebKit {
+
+WebKitWebNavigationReason kit(WebCore::NavigationType);
+WebCore::NavigationType core(WebKitWebNavigationReason);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebplugin.cpp b/Source/WebKit/gtk/webkit/webkitwebplugin.cpp
new file mode 100644
index 0000000..52d5965
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebplugin.cpp
@@ -0,0 +1,251 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "webkitwebplugin.h"
+
+#include "PluginPackage.h"
+#include "webkitglobalsprivate.h"
+#include "webkitwebpluginprivate.h"
+#include <glib/gi18n-lib.h>
+
+/**
+ * SECTION:webkitwebplugin
+ * @short_description: Represents a plugin, enabling fine-grained control
+ * @see_also: #WebKitWebPluginDatabase
+ *
+ * This object represents a single plugin, found by WebKitGTK+ while
+ * scanning the various usual directories. This object can be used to
+ * get more information about a plugin, and enable/disable it,
+ * allowing fine-grained control of plugins. The list of available
+ * plugins can be obtained from the #WebKitWebPluginDatabase object.
+ */
+
+using namespace WebCore;
+
+enum {
+ PROP_0,
+
+ PROP_ENABLED
+};
+
+G_DEFINE_TYPE(WebKitWebPlugin, webkit_web_plugin, G_TYPE_OBJECT)
+
+static void freeMIMEType(WebKitWebPluginMIMEType* mimeType)
+{
+ if (mimeType->name)
+ g_free(mimeType->name);
+ if (mimeType->description)
+ g_free(mimeType->description);
+ if (mimeType->extensions)
+ g_strfreev(mimeType->extensions);
+ g_slice_free(WebKitWebPluginMIMEType, mimeType);
+}
+
+static void webkit_web_plugin_finalize(GObject* object)
+{
+ WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(object);
+ WebKitWebPluginPrivate* priv = plugin->priv;
+
+ g_slist_foreach(priv->mimeTypes, (GFunc)freeMIMEType, 0);
+ g_slist_free(priv->mimeTypes);
+
+ delete plugin->priv;
+
+ G_OBJECT_CLASS(webkit_web_plugin_parent_class)->finalize(object);
+}
+
+static void webkit_web_plugin_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* paramSpec)
+{
+ WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(object);
+
+ switch (prop_id) {
+ case PROP_ENABLED:
+ g_value_set_boolean(value, webkit_web_plugin_get_enabled(plugin));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, paramSpec);
+ }
+}
+
+static void webkit_web_plugin_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* paramSpec)
+{
+ WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(object);
+
+ switch (prop_id) {
+ case PROP_ENABLED:
+ webkit_web_plugin_set_enabled(plugin, g_value_get_boolean(value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, paramSpec);
+ }
+}
+
+static void webkit_web_plugin_class_init(WebKitWebPluginClass* klass)
+{
+ webkitInit();
+
+ GObjectClass* gobjectClass = reinterpret_cast<GObjectClass*>(klass);
+
+ gobjectClass->finalize = webkit_web_plugin_finalize;
+ gobjectClass->get_property = webkit_web_plugin_get_property;
+ gobjectClass->set_property = webkit_web_plugin_set_property;
+
+ g_object_class_install_property(gobjectClass,
+ PROP_ENABLED,
+ g_param_spec_boolean("enabled",
+ _("Enabled"),
+ _("Whether the plugin is enabled"),
+ FALSE,
+ WEBKIT_PARAM_READWRITE));
+}
+
+static void webkit_web_plugin_init(WebKitWebPlugin *plugin)
+{
+ plugin->priv = new WebKitWebPluginPrivate();
+ plugin->priv->mimeTypes = 0;
+}
+
+namespace WebKit {
+WebKitWebPlugin* kitNew(WebCore::PluginPackage* package)
+{
+ WebKitWebPlugin* plugin = WEBKIT_WEB_PLUGIN(g_object_new(WEBKIT_TYPE_WEB_PLUGIN, 0));
+
+ plugin->priv->corePlugin = package;
+
+ return plugin;
+}
+}
+
+/**
+ * webkit_web_plugin_get_name:
+ * @plugin: a #WebKitWebPlugin
+ *
+ * Returns: the name string for @plugin.
+ *
+ * Since: 1.3.8
+ */
+const char* webkit_web_plugin_get_name(WebKitWebPlugin* plugin)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), 0);
+
+ WebKitWebPluginPrivate* priv = plugin->priv;
+
+ if (!priv->name.length())
+ priv->name = priv->corePlugin->name().utf8();
+
+ return priv->name.data();
+}
+
+/**
+ * webkit_web_plugin_get_description:
+ * @plugin: a #WebKitWebPlugin
+ *
+ * Returns: the description string for @plugin.
+ *
+ * Since: 1.3.8
+ */
+const char* webkit_web_plugin_get_description(WebKitWebPlugin* plugin)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), 0);
+
+ WebKitWebPluginPrivate* priv = plugin->priv;
+
+ if (!priv->description.length())
+ priv->description = priv->corePlugin->description().utf8();
+
+ return priv->description.data();
+}
+
+/**
+ * webkit_web_plugin_get_mimetypes:
+ * @plugin: a #WebKitWebPlugin
+ *
+ * Returns all the #WebKitWebPluginMIMEType that @plugin is handling
+ * at the moment.
+ *
+ * Returns: (transfer none) (element-type WebKitWebPluginMIMEType): a #GSList of #WebKitWebPluginMIMEType
+ *
+ * Since: 1.3.8
+ */
+GSList* webkit_web_plugin_get_mimetypes(WebKitWebPlugin* plugin)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), 0);
+
+ WebKitWebPluginPrivate* priv = plugin->priv;
+
+ if (priv->mimeTypes)
+ return priv->mimeTypes;
+
+ const MIMEToDescriptionsMap& mimeToDescriptions = priv->corePlugin->mimeToDescriptions();
+ MIMEToDescriptionsMap::const_iterator end = mimeToDescriptions.end();
+
+ for (MIMEToDescriptionsMap::const_iterator it = mimeToDescriptions.begin(); it != end; ++it) {
+ WebKitWebPluginMIMEType* mimeType = g_slice_new0(WebKitWebPluginMIMEType);
+ mimeType->name = g_strdup(it->first.utf8().data());
+ mimeType->description = g_strdup(it->second.utf8().data());
+
+ Vector<String> extensions = priv->corePlugin->mimeToExtensions().get(it->first);
+ mimeType->extensions = static_cast<gchar**>(g_malloc0(extensions.size() + 1));
+ for (unsigned i = 0; i < extensions.size(); i++)
+ mimeType->extensions[i] = g_strdup(extensions[i].utf8().data());
+
+ priv->mimeTypes = g_slist_append(priv->mimeTypes, mimeType);
+ }
+
+ return priv->mimeTypes;
+}
+
+/**
+ * webkit_web_plugin_set_enabled:
+ * @plugin: a #WebKitWebPlugin
+ * @enabled: whether to enable the plugin
+ *
+ * Sets the enabled status of the @plugin.
+ *
+ * Since: 1.3.8
+ */
+void webkit_web_plugin_set_enabled(WebKitWebPlugin* plugin, gboolean enabled)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin));
+ WebKitWebPluginPrivate* priv = plugin->priv;
+
+ ASSERT(priv->corePlugin);
+ if (priv->corePlugin->isEnabled() == enabled)
+ return;
+
+ priv->corePlugin->setEnabled(enabled);
+
+ g_object_notify(G_OBJECT(plugin), "enabled");
+}
+
+/**
+ * webkit_web_plugin_get_enabled:
+ * @plugin: a #WebKitWebPlugin
+ *
+ * Returns: %TRUE if the plugin is enabled, %FALSE otherwise
+ *
+ * Since: 1.3.8
+ */
+gboolean webkit_web_plugin_get_enabled(WebKitWebPlugin* plugin)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN(plugin), FALSE);
+
+ ASSERT(plugin->priv->corePlugin);
+ return plugin->priv->corePlugin->isEnabled();
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebplugin.h b/Source/WebKit/gtk/webkit/webkitwebplugin.h
new file mode 100644
index 0000000..3514d1e
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebplugin.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef webkitwebplugin_h
+#define webkitwebplugin_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_PLUGIN (webkit_web_plugin_get_type())
+#define WEBKIT_WEB_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_PLUGIN, WebKitWebPlugin))
+#define WEBKIT_WEB_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_PLUGIN, WebKitWebPluginClass))
+#define WEBKIT_IS_WEB_PLUGIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_PLUGIN))
+#define WEBKIT_IS_WEB_PLUGIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_PLUGIN))
+#define WEBKIT_WEB_PLUGIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_PLUGIN, WebKitWebPluginClass))
+
+typedef struct _WebKitWebPluginPrivate WebKitWebPluginPrivate;
+
+/**
+ * WebKitWebPluginMIMEType:
+ * @name: the name of the MIME type.
+ * @description: the description of the MIME type.
+ * @extensions: a %NULL-terminated array with the extensions
+ * associated with this MIME type.
+ *
+ * A structure representing one of the MIME types associated with a
+ * plugin. A #GSList of these objects will be returned by
+ * #webkit_web_plugin_get_mimetypes, use
+ * #webkit_web_plugin_mime_type_list_free to free it.
+ *
+ * Since: 1.3.8
+ */
+typedef struct _WebKitWebPluginMIMEType {
+ char* name;
+ char* description;
+ char** extensions;
+} WebKitWebPluginMIMEType;
+
+struct _WebKitWebPluginClass {
+ GObjectClass parentClass;
+};
+
+struct _WebKitWebPlugin {
+ GObject parentInstance;
+
+ WebKitWebPluginPrivate* priv;
+};
+
+WEBKIT_API GType
+webkit_web_plugin_get_type (void) G_GNUC_CONST;
+
+WEBKIT_API const char*
+webkit_web_plugin_get_name (WebKitWebPlugin*);
+
+WEBKIT_API const char*
+webkit_web_plugin_get_description (WebKitWebPlugin*);
+
+WEBKIT_API GSList*
+webkit_web_plugin_get_mimetypes (WebKitWebPlugin*);
+
+WEBKIT_API void
+webkit_web_plugin_set_enabled (WebKitWebPlugin*, gboolean);
+
+WEBKIT_API gboolean
+webkit_web_plugin_get_enabled (WebKitWebPlugin*);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp
new file mode 100644
index 0000000..2d36115
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.cpp
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "webkitwebplugindatabase.h"
+
+#include "PluginDatabase.h"
+#include "webkitglobalsprivate.h"
+#include "webkitwebplugindatabaseprivate.h"
+#include "webkitwebpluginprivate.h"
+
+/**
+ * SECTION:webkitwebplugindatabase
+ * @short_description: Provides information about the plugins the engine knows about
+ * @see_also: #WebKitWebPlugin
+ *
+ * This object allows you to query information about the plugins found
+ * by the engine while scanning the usual directories. You can then
+ * use the #WebKitWebPlugin objects to get more information or
+ * enable/disable individual plugins.
+ */
+
+using namespace WebKit;
+using namespace WebCore;
+
+G_DEFINE_TYPE(WebKitWebPluginDatabase, webkit_web_plugin_database, G_TYPE_OBJECT)
+
+static void webkit_web_plugin_database_dispose(GObject* object)
+{
+ G_OBJECT_CLASS(webkit_web_plugin_database_parent_class)->dispose(object);
+}
+
+static void webkit_web_plugin_database_class_init(WebKitWebPluginDatabaseClass* klass)
+{
+ webkitInit();
+
+ GObjectClass* gobjectClass = reinterpret_cast<GObjectClass*>(klass);
+
+ gobjectClass->dispose = webkit_web_plugin_database_dispose;
+
+ g_type_class_add_private(klass, sizeof(WebKitWebPluginDatabasePrivate));
+}
+
+static void webkit_web_plugin_database_init(WebKitWebPluginDatabase* database)
+{
+ WebKitWebPluginDatabasePrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(database, WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabasePrivate);
+ database->priv = priv;
+
+ priv->coreDatabase = PluginDatabase::installedPlugins();
+}
+
+/**
+ * webkit_web_plugin_database_list_free:
+ * @list: a #WebKitWebPluginDatabasePluginList
+ *
+ * Frees @list.
+ *
+ * Since: 1.3.8
+ */
+void webkit_web_plugin_database_plugins_list_free(GSList* list)
+{
+ g_return_if_fail(list);
+
+ for (GSList* p = list; p; p = p->next)
+ g_object_unref(p->data);
+
+ g_slist_free(list);
+}
+
+/**
+ * webkit_web_plugin_database_get_plugins:
+ * @database: a #WebKitWebPluginDatabase
+ *
+ * Returns all #WebKitWebPlugin available in @database.
+ * The returned list must be freed with webkit_web_plugin_database_plugins_list_free()
+ *
+ * Returns: (transfer full) (element-type WebKitWebPlugin): a #GSList of #WebKitWebPlugin
+ *
+ * Since: 1.3.8
+ */
+GSList* webkit_web_plugin_database_get_plugins(WebKitWebPluginDatabase* database)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database), 0);
+
+ GSList* gPlugins = 0;
+ const Vector<PluginPackage*>& plugins = database->priv->coreDatabase->plugins();
+
+ for (unsigned int i = 0; i < plugins.size(); ++i) {
+ PluginPackage* plugin = plugins[i];
+ gPlugins = g_slist_append(gPlugins, kitNew(plugin));
+ }
+
+ return gPlugins;
+}
+
+/**
+ * webkit_web_plugin_database_get_plugin_for_mimetype:
+ * @database: a #WebKitWebPluginDatabase
+ * @mimeType: a mime type
+ *
+ * Returns the #WebKitWebPlugin that is handling @mimeType in the
+ * @database, or %NULL if there's none doing so.
+ *
+ * Returns: (transfer full): a #WebKitWebPlugin
+ *
+ * Since: 1.3.8
+ */
+WebKitWebPlugin* webkit_web_plugin_database_get_plugin_for_mimetype(WebKitWebPluginDatabase* database, const char* mimeType)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database), 0);
+ g_return_val_if_fail(mimeType, 0);
+
+ return kitNew(database->priv->coreDatabase->pluginForMIMEType(mimeType));
+}
+
+/**
+ * webkit_web_plugin_database_refresh:
+ * @database: a #WebKitWebPluginDatabase
+ *
+ * Refreshes @database adding new plugins that are now in use and
+ * removing those that have been disabled or are otherwise no longer
+ * available.
+ *
+ * Since: 1.3.8
+ */
+void webkit_web_plugin_database_refresh(WebKitWebPluginDatabase* database)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_PLUGIN_DATABASE(database));
+
+ database->priv->coreDatabase->refresh();
+}
+
+WebKitWebPluginDatabase* webkit_web_plugin_database_new(void)
+{
+ return WEBKIT_WEB_PLUGIN_DATABASE(g_object_new(WEBKIT_TYPE_WEB_PLUGIN_DATABASE, 0));
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h
new file mode 100644
index 0000000..0b02c26
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebplugindatabase.h
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef webkitwebplugindatabase_h
+#define webkitwebplugindatabase_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_PLUGIN_DATABASE (webkit_web_plugin_database_get_type())
+#define WEBKIT_WEB_PLUGIN_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabase))
+#define WEBKIT_WEB_PLUGIN_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabaseClass))
+#define WEBKIT_IS_WEB_PLUGIN_DATABASE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_PLUGIN_DATABASE))
+#define WEBKIT_IS_WEB_PLUGIN_DATABASE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_PLUGIN_DATABASE))
+#define WEBKIT_WEB_PLUGIN_DATABASE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_PLUGIN_DATABASE, WebKitWebPluginDatabaseClass))
+
+typedef struct _WebKitWebPluginDatabasePrivate WebKitWebPluginDatabasePrivate;
+
+struct _WebKitWebPluginDatabaseClass {
+ GObjectClass parentClass;
+};
+
+struct _WebKitWebPluginDatabase {
+ GObject parentInstance;
+
+ WebKitWebPluginDatabasePrivate* priv;
+};
+
+WEBKIT_API GType
+webkit_web_plugin_database_get_type (void) G_GNUC_CONST;
+
+WEBKIT_API void
+webkit_web_plugin_database_plugins_list_free (GSList*);
+
+WEBKIT_API GSList*
+webkit_web_plugin_database_get_plugins (WebKitWebPluginDatabase*);
+
+WEBKIT_API WebKitWebPlugin*
+webkit_web_plugin_database_get_plugin_for_mimetype (WebKitWebPluginDatabase*, const char *);
+
+WEBKIT_API void
+webkit_web_plugin_database_refresh (WebKitWebPluginDatabase*);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h b/Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h
new file mode 100644
index 0000000..199aede
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebplugindatabaseprivate.h
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebplugindatabaseprivate_h
+#define webkitwebplugindatabaseprivate_h
+
+#include <glib-object.h>
+
+namespace WebCore {
+class PluginDatabase;
+}
+
+extern "C" {
+
+typedef struct _WebKitWebPluginDatabasePrivate WebKitWebPluginDatabasePrivate;
+struct _WebKitWebPluginDatabasePrivate {
+ WebCore::PluginDatabase* coreDatabase;
+};
+
+WebKitWebPluginDatabase* webkit_web_plugin_database_new();
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebpluginprivate.h b/Source/WebKit/gtk/webkit/webkitwebpluginprivate.h
new file mode 100644
index 0000000..4ae204b
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebpluginprivate.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef webkitwebpluginprivate_h
+#define webkitwebpluginprivate_h
+
+#include "webkitwebplugin.h"
+#include <glib-object.h>
+#include <wtf/text/CString.h>
+
+namespace WebCore {
+class PluginPackage;
+}
+
+namespace WebKit {
+WebKitWebPlugin* kitNew(WebCore::PluginPackage* package);
+}
+
+extern "C" {
+
+typedef struct _WebKitWebPluginPrivate WebKitWebPluginPrivate;
+struct _WebKitWebPluginPrivate {
+ RefPtr<WebCore::PluginPackage> corePlugin;
+ CString name;
+ CString description;
+ GSList* mimeTypes;
+};
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp
new file mode 100644
index 0000000..624ff9a
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.cpp
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebpolicydecision.h"
+
+#include "FrameLoaderClient.h"
+#include "FrameLoaderTypes.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebpolicydecisionprivate.h"
+
+using namespace WebKit;
+using namespace WebCore;
+
+/**
+ * SECTION:webkitwebpolicydecision
+ * @short_description: Liason between WebKit and the application regarding asynchronous policy decisions
+ *
+ * #WebKitWebPolicyDecision objects are given to the application on
+ * signal emissions that deal with policy decisions, such as if a new
+ * window should be opened, or if a given navigation should be
+ * allowed. The application uses it to tell the engine what to do.
+ */
+
+G_DEFINE_TYPE(WebKitWebPolicyDecision, webkit_web_policy_decision, G_TYPE_OBJECT);
+
+struct _WebKitWebPolicyDecisionPrivate {
+ WebKitWebFrame* frame;
+ FramePolicyFunction framePolicyFunction;
+ gboolean isCancelled;
+};
+
+static void webkit_web_policy_decision_class_init(WebKitWebPolicyDecisionClass* decisionClass)
+{
+ g_type_class_add_private(decisionClass, sizeof(WebKitWebPolicyDecisionPrivate));
+}
+
+static void webkit_web_policy_decision_init(WebKitWebPolicyDecision* decision)
+{
+ decision->priv = G_TYPE_INSTANCE_GET_PRIVATE(decision, WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecisionPrivate);
+}
+
+WebKitWebPolicyDecision* webkit_web_policy_decision_new(WebKitWebFrame* frame, WebCore::FramePolicyFunction function)
+{
+ g_return_val_if_fail(frame, NULL);
+
+ WebKitWebPolicyDecision* decision = WEBKIT_WEB_POLICY_DECISION(g_object_new(WEBKIT_TYPE_WEB_POLICY_DECISION, NULL));
+ WebKitWebPolicyDecisionPrivate* priv = decision->priv;
+
+ priv->frame = frame;
+ priv->framePolicyFunction = function;
+ priv->isCancelled = FALSE;
+
+ return decision;
+}
+
+/**
+ * webkit_web_policy_decision_use
+ * @decision: a #WebKitWebPolicyDecision
+ *
+ * Will send the USE decision to the policy implementer.
+ *
+ * Since: 1.0.3
+ */
+void webkit_web_policy_decision_use(WebKitWebPolicyDecision* decision)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision));
+
+ WebKitWebPolicyDecisionPrivate* priv = decision->priv;
+
+ if (!priv->isCancelled)
+ (core(priv->frame)->loader()->policyChecker()->*(priv->framePolicyFunction))(WebCore::PolicyUse);
+}
+
+/**
+ * webkit_web_policy_decision_ignore
+ * @decision: a #WebKitWebPolicyDecision
+ *
+ * Will send the IGNORE decision to the policy implementer.
+ *
+ * Since: 1.0.3
+ */
+void webkit_web_policy_decision_ignore(WebKitWebPolicyDecision* decision)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision));
+
+ WebKitWebPolicyDecisionPrivate* priv = decision->priv;
+
+ if (!priv->isCancelled)
+ (core(priv->frame)->loader()->policyChecker()->*(priv->framePolicyFunction))(WebCore::PolicyIgnore);
+}
+
+/**
+ * webkit_web_policy_decision_download
+ * @decision: a #WebKitWebPolicyDecision
+ *
+ * Will send the DOWNLOAD decision to the policy implementer.
+ *
+ * Since: 1.0.3
+ */
+void webkit_web_policy_decision_download(WebKitWebPolicyDecision* decision)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision));
+
+ WebKitWebPolicyDecisionPrivate* priv = decision->priv;
+
+ if (!priv->isCancelled)
+ (core(priv->frame)->loader()->policyChecker()->*(priv->framePolicyFunction))(WebCore::PolicyDownload);
+}
+
+void webkit_web_policy_decision_cancel(WebKitWebPolicyDecision* decision)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_POLICY_DECISION(decision));
+
+ WebKitWebPolicyDecisionPrivate* priv = decision->priv;
+
+ priv->isCancelled = TRUE;
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h
new file mode 100644
index 0000000..2b61837
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebpolicydecision.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebpolicydecision_h
+#define webkitwebpolicydecision_h
+
+#include <glib-object.h>
+#include <stdint.h>
+#include "webkitdefines.h"
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_POLICY_DECISION (webkit_web_policy_decision_get_type())
+#define WEBKIT_WEB_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecision))
+#define WEBKIT_WEB_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecisionClass))
+#define WEBKIT_IS_WEB_POLICY_DECISION(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_POLICY_DECISION))
+#define WEBKIT_IS_WEB_POLICY_DECISION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_POLICY_DECISION))
+#define WEBKIT_WEB_POLICY_DECISION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_POLICY_DECISION, WebKitWebPolicyDecisionClass))
+
+typedef struct _WebKitWebPolicyDecisionPrivate WebKitWebPolicyDecisionPrivate;
+struct _WebKitWebPolicyDecision {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebPolicyDecisionPrivate* priv;
+};
+
+struct _WebKitWebPolicyDecisionClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_web_policy_decision_get_type (void);
+
+WEBKIT_API void
+webkit_web_policy_decision_use (WebKitWebPolicyDecision* decision);
+
+WEBKIT_API void
+webkit_web_policy_decision_ignore (WebKitWebPolicyDecision* decision);
+
+WEBKIT_API void
+webkit_web_policy_decision_download (WebKitWebPolicyDecision* decision);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h b/Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h
new file mode 100644
index 0000000..2d264ab
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebpolicydecisionprivate.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebpolicydecisionprivate_h
+#define webkitwebpolicydecisionprivate_h
+
+#include "webkitwebpolicydecision.h"
+
+extern "C" {
+
+WebKitWebPolicyDecision* webkit_web_policy_decision_new(WebKitWebFrame*, WebCore::FramePolicyFunction);
+
+void webkit_web_policy_decision_cancel(WebKitWebPolicyDecision*);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebresource.cpp b/Source/WebKit/gtk/webkit/webkitwebresource.cpp
new file mode 100644
index 0000000..b7f4036
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebresource.cpp
@@ -0,0 +1,400 @@
+/*
+ * Copyright (C) 2009 Jan Michael C. Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebresource.h"
+
+#include "ArchiveResource.h"
+#include "KURL.h"
+#include "PlatformString.h"
+#include "SharedBuffer.h"
+#include "webkitenumtypes.h"
+#include "webkitglobalsprivate.h"
+#include "webkitmarshal.h"
+#include "webkitwebresourceprivate.h"
+#include <glib.h>
+#include <glib/gi18n-lib.h>
+#include <wtf/Assertions.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkitwebresource
+ * @short_description: Represents a downloaded URI.
+ * @see_also: #WebKitWebDataSource
+ *
+ * A web resource encapsulates the data of the download as well as the URI,
+ * MIME type and frame name of the resource.
+ */
+
+using namespace WebCore;
+
+enum {
+ PROP_0,
+
+ PROP_URI,
+ PROP_MIME_TYPE,
+ PROP_ENCODING,
+ PROP_FRAME_NAME
+};
+
+G_DEFINE_TYPE(WebKitWebResource, webkit_web_resource, G_TYPE_OBJECT);
+
+static void webkit_web_resource_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
+static void webkit_web_resource_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
+
+static void webkit_web_resource_cleanup(WebKitWebResource* webResource)
+{
+ WebKitWebResourcePrivate* priv = webResource->priv;
+
+ g_free(priv->uri);
+ priv->uri = NULL;
+
+ g_free(priv->mimeType);
+ priv->mimeType = NULL;
+
+ g_free(priv->textEncoding);
+ priv->textEncoding = NULL;
+
+ g_free(priv->frameName);
+ priv->frameName = NULL;
+
+ if (priv->data)
+ g_string_free(priv->data, TRUE);
+ priv->data = NULL;
+}
+
+static void webkit_web_resource_dispose(GObject* object)
+{
+ WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object);
+ WebKitWebResourcePrivate* priv = webResource->priv;
+
+ if (priv->resource) {
+ priv->resource->deref();
+ priv->resource = 0;
+ }
+
+ G_OBJECT_CLASS(webkit_web_resource_parent_class)->dispose(object);
+}
+
+static void webkit_web_resource_finalize(GObject* object)
+{
+ WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object);
+
+ webkit_web_resource_cleanup(webResource);
+
+ G_OBJECT_CLASS(webkit_web_resource_parent_class)->finalize(object);
+}
+
+static void webkit_web_resource_class_init(WebKitWebResourceClass* klass)
+{
+ GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
+
+ gobject_class->dispose = webkit_web_resource_dispose;
+ gobject_class->finalize = webkit_web_resource_finalize;
+ gobject_class->get_property = webkit_web_resource_get_property;
+ gobject_class->set_property = webkit_web_resource_set_property;
+
+ /**
+ * WebKitWebResource:uri:
+ *
+ * The URI of the web resource
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_URI,
+ g_param_spec_string(
+ "uri",
+ _("URI"),
+ _("The uri of the resource"),
+ NULL,
+ (GParamFlags)(WEBKIT_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)));
+ /**
+ * WebKitWebResource:mime-type:
+ *
+ * The MIME type of the web resource.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_MIME_TYPE,
+ g_param_spec_string(
+ "mime-type",
+ _("MIME Type"),
+ _("The MIME type of the resource"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+ /**
+ * WebKitWebResource:encoding:
+ *
+ * The encoding name to which the web resource was encoded in.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENCODING,
+ g_param_spec_string(
+ "encoding",
+ _("Encoding"),
+ _("The text encoding name of the resource"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebResource:frame-name:
+ *
+ * The frame name for the web resource.
+ *
+ * Since: 1.1.14
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_FRAME_NAME,
+ g_param_spec_string(
+ "frame-name",
+ _("Frame Name"),
+ _("The frame name of the resource"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ g_type_class_add_private(gobject_class, sizeof(WebKitWebResourcePrivate));
+}
+
+static void webkit_web_resource_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object);
+
+ switch (prop_id) {
+ case PROP_URI:
+ g_value_set_string(value, webkit_web_resource_get_uri(webResource));
+ break;
+ case PROP_MIME_TYPE:
+ g_value_set_string(value, webkit_web_resource_get_mime_type(webResource));
+ break;
+ case PROP_ENCODING:
+ g_value_set_string(value, webkit_web_resource_get_encoding(webResource));
+ break;
+ case PROP_FRAME_NAME:
+ g_value_set_string(value, webkit_web_resource_get_frame_name(webResource));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void webkit_web_resource_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
+{
+ WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(object);
+
+ switch (prop_id) {
+ case PROP_URI:
+ g_free(webResource->priv->uri);
+ webResource->priv->uri = g_value_dup_string(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void webkit_web_resource_init(WebKitWebResource* webResource)
+{
+ webResource->priv = G_TYPE_INSTANCE_GET_PRIVATE(webResource, WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourcePrivate);
+}
+
+// internal use only
+WebKitWebResource* webkit_web_resource_new_with_core_resource(PassRefPtr<ArchiveResource> resource)
+{
+ WebKitWebResource* webResource = WEBKIT_WEB_RESOURCE(g_object_new(WEBKIT_TYPE_WEB_RESOURCE, NULL));
+ WebKitWebResourcePrivate* priv = webResource->priv;
+ priv->resource = resource.releaseRef();
+
+ return webResource;
+}
+
+void webkit_web_resource_init_with_core_resource(WebKitWebResource* webResource, PassRefPtr<ArchiveResource> resource)
+{
+ ASSERT(resource);
+
+ WebKitWebResourcePrivate* priv = webResource->priv;
+
+ if (priv->resource)
+ priv->resource->deref();
+
+ priv->resource = resource.releaseRef();
+}
+
+/**
+ * webkit_web_resource_new:
+ * @data: the data to initialize the #WebKitWebResource
+ * @size: the length of @data
+ * @uri: the uri of the #WebKitWebResource
+ * @mime_type: the MIME type of the #WebKitWebResource
+ * @encoding: the text encoding name of the #WebKitWebResource
+ * @frame_name: the frame name of the #WebKitWebResource
+ *
+ * Returns a new #WebKitWebResource. The @encoding can be %NULL. The
+ * @frame_name argument can be used if the resource represents contents of an
+ * entire HTML frame, otherwise pass %NULL.
+ *
+ * Return value: a new #WebKitWebResource
+ *
+ * Since: 1.1.14
+ */
+WebKitWebResource* webkit_web_resource_new(const gchar* data,
+ gssize size,
+ const gchar* uri,
+ const gchar* mimeType,
+ const gchar* encoding,
+ const gchar* frameName)
+{
+ g_return_val_if_fail(data, NULL);
+ g_return_val_if_fail(uri, NULL);
+ g_return_val_if_fail(mimeType, NULL);
+
+ if (size < 0)
+ size = strlen(data);
+
+ RefPtr<SharedBuffer> buffer = SharedBuffer::create(data, size);
+ WebKitWebResource* webResource = webkit_web_resource_new_with_core_resource(ArchiveResource::create(buffer, KURL(KURL(), String::fromUTF8(uri)), String::fromUTF8(mimeType), String::fromUTF8(encoding), String::fromUTF8(frameName)));
+
+ return webResource;
+}
+
+/**
+ * webkit_web_resource_get_data:
+ * @web_resource: a #WebKitWebResource
+ *
+ * Returns the data of the @webResource.
+ *
+ * Return value: (transfer none): a #GString containing the character
+ * data of the @webResource. The string is owned by WebKit and should
+ * not be freed or destroyed.
+ *
+ * Since: 1.1.14
+ */
+GString* webkit_web_resource_get_data(WebKitWebResource* webResource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL);
+
+ WebKitWebResourcePrivate* priv = webResource->priv;
+
+ if (!priv->resource)
+ return NULL;
+
+ if (!priv->data)
+ priv->data = g_string_new_len(priv->resource->data()->data(), priv->resource->data()->size());
+
+ return priv->data;
+}
+
+/**
+ * webkit_web_resource_get_uri:
+ * @web_resource: a #WebKitWebResource
+ *
+ * Return value: the URI of the resource
+ *
+ * Since: 1.1.14
+ */
+G_CONST_RETURN gchar* webkit_web_resource_get_uri(WebKitWebResource* webResource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL);
+
+ WebKitWebResourcePrivate* priv = webResource->priv;
+
+
+ // We may have an URI without having a resource assigned to us (e.g., if the
+ // FrameLoaderClient only had a ResourceRequest when we got created
+ if (priv->uri)
+ return priv->uri;
+
+ if (!priv->resource)
+ return NULL;
+
+ priv->uri = g_strdup(priv->resource->url().string().utf8().data());
+
+ return priv->uri;
+}
+
+/**
+ * webkit_web_resource_get_mime_type:
+ * @web_resource: a #WebKitWebResource
+ *
+ * Return value: the MIME type of the resource
+ *
+ * Since: 1.1.14
+ */
+G_CONST_RETURN gchar* webkit_web_resource_get_mime_type(WebKitWebResource* webResource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL);
+
+ WebKitWebResourcePrivate* priv = webResource->priv;
+ if (!priv->resource)
+ return NULL;
+
+ if (!priv->mimeType)
+ priv->mimeType = g_strdup(priv->resource->mimeType().utf8().data());
+
+ return priv->mimeType;
+}
+
+/**
+ * webkit_web_resource_get_encoding:
+ * @web_resource: a #WebKitWebResource
+ *
+ * Return value: the encoding name of the resource
+ *
+ * Since: 1.1.14
+ */
+G_CONST_RETURN gchar* webkit_web_resource_get_encoding(WebKitWebResource* webResource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL);
+
+ WebKitWebResourcePrivate* priv = webResource->priv;
+ if (!priv->resource)
+ return NULL;
+
+ if (!priv->textEncoding)
+ priv->textEncoding = g_strdup(priv->resource->textEncoding().utf8().data());
+
+ return priv->textEncoding;
+}
+
+/**
+ * webkit_web_resource_get_frame_name:
+ * @web_resource: a #WebKitWebResource
+ *
+ * Return value: the frame name of the resource.
+ *
+ * Since: 1.1.14
+ */
+G_CONST_RETURN gchar* webkit_web_resource_get_frame_name(WebKitWebResource* webResource)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_RESOURCE(webResource), NULL);
+
+ WebKitWebResourcePrivate* priv = webResource->priv;
+ if (!priv->resource)
+ return NULL;
+
+ if (!priv->frameName)
+ priv->frameName = g_strdup(priv->resource->frameName().utf8().data());
+
+ return priv->frameName;
+}
+
diff --git a/Source/WebKit/gtk/webkit/webkitwebresource.h b/Source/WebKit/gtk/webkit/webkitwebresource.h
new file mode 100644
index 0000000..05f6066
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebresource.h
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2009 Jan Michael C. Alonzo
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebresource_h
+#define webkitwebresource_h
+
+#include <glib.h>
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_RESOURCE (webkit_web_resource_get_type())
+#define WEBKIT_WEB_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResource))
+#define WEBKIT_WEB_RESOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourceClass))
+#define WEBKIT_IS_WEB_RESOURCE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_RESOURCE))
+#define WEBKIT_IS_WEB_RESOURCE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_RESOURCE))
+#define WEBKIT_WEB_RESOURCE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_RESOURCE, WebKitWebResourceClass))
+
+typedef struct _WebKitWebResourcePrivate WebKitWebResourcePrivate;
+
+struct _WebKitWebResource {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebResourcePrivate *priv;
+};
+
+struct _WebKitWebResourceClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+};
+
+WEBKIT_API GType
+webkit_web_resource_get_type (void);
+
+WEBKIT_API WebKitWebResource *
+webkit_web_resource_new (const gchar *data,
+ gssize size,
+ const gchar *uri,
+ const gchar *mime_type,
+ const gchar *encoding,
+ const gchar *frame_name);
+
+WEBKIT_API GString *
+webkit_web_resource_get_data (WebKitWebResource *web_resource);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_resource_get_uri (WebKitWebResource *web_resource);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_resource_get_mime_type (WebKitWebResource *web_resource);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_resource_get_encoding (WebKitWebResource *web_resource);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_resource_get_frame_name (WebKitWebResource *web_resource);
+
+G_END_DECLS
+
+#endif /* webkitwebresource_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebresourceprivate.h b/Source/WebKit/gtk/webkit/webkitwebresourceprivate.h
new file mode 100644
index 0000000..2ae3d05
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebresourceprivate.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebresourceprivate_h
+#define webkitwebresourceprivate_h
+
+#include "ArchiveResource.h"
+#include "webkitwebresource.h"
+
+extern "C" {
+
+struct _WebKitWebResourcePrivate {
+ WebCore::ArchiveResource* resource;
+
+ gchar* uri;
+ gchar* mimeType;
+ gchar* textEncoding;
+ gchar* frameName;
+
+ GString* data;
+};
+
+WebKitWebResource* webkit_web_resource_new_with_core_resource(PassRefPtr<WebCore::ArchiveResource>);
+
+void webkit_web_resource_init_with_core_resource(WebKitWebResource*, PassRefPtr<WebCore::ArchiveResource>);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebsettings.cpp b/Source/WebKit/gtk/webkit/webkitwebsettings.cpp
new file mode 100644
index 0000000..492c7b6
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebsettings.cpp
@@ -0,0 +1,1443 @@
+/*
+ * Copyright (C) 2008 Christian Dywan <christian@imendio.com>
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2009 Jan Michael Alonzo
+ * Copyright (C) 2009 Movial Creative Technologies Inc.
+ * Copyright (C) 2009 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebsettings.h"
+
+#include "EditingBehavior.h"
+#include "FileSystem.h"
+#include "Language.h"
+#include "PluginDatabase.h"
+#include "webkitenumtypes.h"
+#include "webkitglobalsprivate.h"
+#include "webkitversion.h"
+#include "webkitwebsettingsprivate.h"
+#include <enchant.h>
+#include <wtf/text/CString.h>
+#include <wtf/text/StringConcatenate.h>
+#include <glib/gi18n-lib.h>
+
+#if OS(UNIX)
+#include <sys/utsname.h>
+#endif
+
+/**
+ * SECTION:webkitwebsettings
+ * @short_description: Control the behaviour of a #WebKitWebView
+ *
+ * #WebKitWebSettings can be applied to a #WebKitWebView to control text encoding,
+ * color, font sizes, printing mode, script support, loading of images and various other things.
+ * After creation, a #WebKitWebSettings object contains default settings.
+ *
+ * <informalexample><programlisting>
+ * /<!-- -->* Create a new websettings and disable java script *<!-- -->/
+ * WebKitWebSettings *settings = webkit_web_settings_new ();
+ * g_object_set (G_OBJECT(settings), "enable-scripts", FALSE, NULL);
+ *
+ * /<!-- -->* Apply the result *<!-- -->/
+ * webkit_web_view_set_settings (WEBKIT_WEB_VIEW(my_webview), settings);
+ * </programlisting></informalexample>
+ */
+
+using namespace WebCore;
+
+G_DEFINE_TYPE(WebKitWebSettings, webkit_web_settings, G_TYPE_OBJECT)
+
+struct _WebKitWebSettingsPrivate {
+ gchar* default_encoding;
+ gchar* cursive_font_family;
+ gchar* default_font_family;
+ gchar* fantasy_font_family;
+ gchar* monospace_font_family;
+ gchar* sans_serif_font_family;
+ gchar* serif_font_family;
+ guint default_font_size;
+ guint default_monospace_font_size;
+ guint minimum_font_size;
+ guint minimum_logical_font_size;
+ gboolean enforce_96_dpi;
+ gboolean auto_load_images;
+ gboolean auto_shrink_images;
+ gboolean print_backgrounds;
+ gboolean enable_scripts;
+ gboolean enable_plugins;
+ gboolean resizable_text_areas;
+ gchar* user_stylesheet_uri;
+ gfloat zoom_step;
+ gboolean enable_developer_extras;
+ gboolean enable_private_browsing;
+ gboolean enable_spell_checking;
+ gchar* spell_checking_languages;
+ GSList* enchant_dicts;
+ gboolean enable_caret_browsing;
+ gboolean enable_html5_database;
+ gboolean enable_html5_local_storage;
+ gboolean enable_xss_auditor;
+ gboolean enable_spatial_navigation;
+ gboolean enable_frame_flattening;
+ gchar* user_agent;
+ gboolean javascript_can_open_windows_automatically;
+ gboolean javascript_can_access_clipboard;
+ gboolean enable_offline_web_application_cache;
+ WebKitEditingBehavior editing_behavior;
+ gboolean enable_universal_access_from_file_uris;
+ gboolean enable_file_access_from_file_uris;
+ gboolean enable_dom_paste;
+ gboolean tab_key_cycles_through_elements;
+ gboolean enable_default_context_menu;
+ gboolean enable_site_specific_quirks;
+ gboolean enable_page_cache;
+ gboolean auto_resize_window;
+ gboolean enable_java_applet;
+ gboolean enable_hyperlink_auditing;
+ gboolean enable_fullscreen;
+};
+
+#define WEBKIT_WEB_SETTINGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate))
+
+enum {
+ PROP_0,
+
+ PROP_DEFAULT_ENCODING,
+ PROP_CURSIVE_FONT_FAMILY,
+ PROP_DEFAULT_FONT_FAMILY,
+ PROP_FANTASY_FONT_FAMILY,
+ PROP_MONOSPACE_FONT_FAMILY,
+ PROP_SANS_SERIF_FONT_FAMILY,
+ PROP_SERIF_FONT_FAMILY,
+ PROP_DEFAULT_FONT_SIZE,
+ PROP_DEFAULT_MONOSPACE_FONT_SIZE,
+ PROP_MINIMUM_FONT_SIZE,
+ PROP_MINIMUM_LOGICAL_FONT_SIZE,
+ PROP_ENFORCE_96_DPI,
+ PROP_AUTO_LOAD_IMAGES,
+ PROP_AUTO_SHRINK_IMAGES,
+ PROP_PRINT_BACKGROUNDS,
+ PROP_ENABLE_SCRIPTS,
+ PROP_ENABLE_PLUGINS,
+ PROP_RESIZABLE_TEXT_AREAS,
+ PROP_USER_STYLESHEET_URI,
+ PROP_ZOOM_STEP,
+ PROP_ENABLE_DEVELOPER_EXTRAS,
+ PROP_ENABLE_PRIVATE_BROWSING,
+ PROP_ENABLE_SPELL_CHECKING,
+ PROP_SPELL_CHECKING_LANGUAGES,
+ PROP_ENABLE_CARET_BROWSING,
+ PROP_ENABLE_HTML5_DATABASE,
+ PROP_ENABLE_HTML5_LOCAL_STORAGE,
+ PROP_ENABLE_XSS_AUDITOR,
+ PROP_ENABLE_SPATIAL_NAVIGATION,
+ PROP_ENABLE_FRAME_FLATTENING,
+ PROP_USER_AGENT,
+ PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY,
+ PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD,
+ PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE,
+ PROP_EDITING_BEHAVIOR,
+ PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS,
+ PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS,
+ PROP_ENABLE_DOM_PASTE,
+ PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS,
+ PROP_ENABLE_DEFAULT_CONTEXT_MENU,
+ PROP_ENABLE_SITE_SPECIFIC_QUIRKS,
+ PROP_ENABLE_PAGE_CACHE,
+ PROP_AUTO_RESIZE_WINDOW,
+ PROP_ENABLE_JAVA_APPLET,
+ PROP_ENABLE_HYPERLINK_AUDITING,
+ PROP_ENABLE_FULLSCREEN
+};
+
+// Create a default user agent string
+// This is a liberal interpretation of http://www.mozilla.org/build/revised-user-agent-strings.html
+// See also http://developer.apple.com/internet/safari/faq.html#anchor2
+static String webkitPlatform()
+{
+#if PLATFORM(X11)
+ DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("X11")));
+#elif OS(WINDOWS)
+ DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("Windows")));
+#elif PLATFORM(MAC)
+ DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("Macintosh")));
+#elif defined(GDK_WINDOWING_DIRECTFB)
+ DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("DirectFB")));
+#else
+ DEFINE_STATIC_LOCAL(const String, uaPlatform, (String("Unknown")));
+#endif
+
+ return uaPlatform;
+}
+
+static String webkitOSVersion()
+{
+ // FIXME: platform/version detection can be shared.
+#if OS(DARWIN)
+
+#if CPU(X86)
+ DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("Intel Mac OS X")));
+#else
+ DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("PPC Mac OS X")));
+#endif
+
+#elif OS(UNIX)
+ DEFINE_STATIC_LOCAL(String, uaOSVersion, (String()));
+
+ if (!uaOSVersion.isEmpty())
+ return uaOSVersion;
+
+ struct utsname name;
+ if (uname(&name) != -1)
+ uaOSVersion = makeString(name.sysname, ' ', name.machine);
+ else
+ uaOSVersion = String("Unknown");
+#elif OS(WINDOWS)
+ DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("Windows")));
+#else
+ DEFINE_STATIC_LOCAL(const String, uaOSVersion, (String("Unknown")));
+#endif
+
+ return uaOSVersion;
+}
+
+String webkitUserAgent()
+{
+ // We mention Safari since many broken sites check for it (OmniWeb does this too)
+ // We re-use the WebKit version, though it doesn't seem to matter much in practice
+
+ DEFINE_STATIC_LOCAL(const String, uaVersion, (makeString(String::number(WEBKIT_USER_AGENT_MAJOR_VERSION), '.', String::number(WEBKIT_USER_AGENT_MINOR_VERSION), '+')));
+ DEFINE_STATIC_LOCAL(const String, staticUA, (makeString("Mozilla/5.0 (", webkitPlatform(), "; U; ", webkitOSVersion(), "; ", defaultLanguage(), ") AppleWebKit/", uaVersion) +
+ makeString(" (KHTML, like Gecko) Version/5.0 Safari/", uaVersion)));
+
+ return staticUA;
+}
+
+static void webkit_web_settings_finalize(GObject* object);
+
+static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
+
+static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
+
+static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
+{
+ GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
+ gobject_class->finalize = webkit_web_settings_finalize;
+ gobject_class->set_property = webkit_web_settings_set_property;
+ gobject_class->get_property = webkit_web_settings_get_property;
+
+ webkitInit();
+
+ GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+
+ g_object_class_install_property(gobject_class,
+ PROP_DEFAULT_ENCODING,
+ g_param_spec_string(
+ "default-encoding",
+ _("Default Encoding"),
+ _("The default encoding used to display text."),
+ "iso-8859-1",
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_CURSIVE_FONT_FAMILY,
+ g_param_spec_string(
+ "cursive-font-family",
+ _("Cursive Font Family"),
+ _("The default Cursive font family used to display text."),
+ "serif",
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_DEFAULT_FONT_FAMILY,
+ g_param_spec_string(
+ "default-font-family",
+ _("Default Font Family"),
+ _("The default font family used to display text."),
+ "sans-serif",
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_FANTASY_FONT_FAMILY,
+ g_param_spec_string(
+ "fantasy-font-family",
+ _("Fantasy Font Family"),
+ _("The default Fantasy font family used to display text."),
+ "serif",
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_MONOSPACE_FONT_FAMILY,
+ g_param_spec_string(
+ "monospace-font-family",
+ _("Monospace Font Family"),
+ _("The default font family used to display monospace text."),
+ "monospace",
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_SANS_SERIF_FONT_FAMILY,
+ g_param_spec_string(
+ "sans-serif-font-family",
+ _("Sans Serif Font Family"),
+ _("The default Sans Serif font family used to display text."),
+ "sans-serif",
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_SERIF_FONT_FAMILY,
+ g_param_spec_string(
+ "serif-font-family",
+ _("Serif Font Family"),
+ _("The default Serif font family used to display text."),
+ "serif",
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_DEFAULT_FONT_SIZE,
+ g_param_spec_int(
+ "default-font-size",
+ _("Default Font Size"),
+ _("The default font size used to display text."),
+ 5, G_MAXINT, 12,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_DEFAULT_MONOSPACE_FONT_SIZE,
+ g_param_spec_int(
+ "default-monospace-font-size",
+ _("Default Monospace Font Size"),
+ _("The default font size used to display monospace text."),
+ 5, G_MAXINT, 10,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_MINIMUM_FONT_SIZE,
+ g_param_spec_int(
+ "minimum-font-size",
+ _("Minimum Font Size"),
+ _("The minimum font size used to display text."),
+ 0, G_MAXINT, 5,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_MINIMUM_LOGICAL_FONT_SIZE,
+ g_param_spec_int(
+ "minimum-logical-font-size",
+ _("Minimum Logical Font Size"),
+ _("The minimum logical font size used to display text."),
+ 1, G_MAXINT, 5,
+ flags));
+
+ /**
+ * WebKitWebSettings:enforce-96-dpi:
+ *
+ * Enforce a resolution of 96 DPI. This is meant for compatibility
+ * with web pages which cope badly with different screen resolutions
+ * and for automated testing.
+ * Web browsers and applications that typically display arbitrary
+ * content from the web should provide a preference for this.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENFORCE_96_DPI,
+ g_param_spec_boolean(
+ "enforce-96-dpi",
+ _("Enforce 96 DPI"),
+ _("Enforce a resolution of 96 DPI"),
+ FALSE,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_AUTO_LOAD_IMAGES,
+ g_param_spec_boolean(
+ "auto-load-images",
+ _("Auto Load Images"),
+ _("Load images automatically."),
+ TRUE,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_AUTO_SHRINK_IMAGES,
+ g_param_spec_boolean(
+ "auto-shrink-images",
+ _("Auto Shrink Images"),
+ _("Automatically shrink standalone images to fit."),
+ TRUE,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_PRINT_BACKGROUNDS,
+ g_param_spec_boolean(
+ "print-backgrounds",
+ _("Print Backgrounds"),
+ _("Whether background images should be printed."),
+ TRUE,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_SCRIPTS,
+ g_param_spec_boolean(
+ "enable-scripts",
+ _("Enable Scripts"),
+ _("Enable embedded scripting languages."),
+ TRUE,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_PLUGINS,
+ g_param_spec_boolean(
+ "enable-plugins",
+ _("Enable Plugins"),
+ _("Enable embedded plugin objects."),
+ TRUE,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_RESIZABLE_TEXT_AREAS,
+ g_param_spec_boolean(
+ "resizable-text-areas",
+ _("Resizable Text Areas"),
+ _("Whether text areas are resizable."),
+ TRUE,
+ flags));
+
+ g_object_class_install_property(gobject_class,
+ PROP_USER_STYLESHEET_URI,
+ g_param_spec_string("user-stylesheet-uri",
+ _("User Stylesheet URI"),
+ _("The URI of a stylesheet that is applied to every page."),
+ 0,
+ flags));
+
+ /**
+ * WebKitWebSettings:zoom-step:
+ *
+ * The value by which the zoom level is changed when zooming in or out.
+ *
+ * Since: 1.0.1
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ZOOM_STEP,
+ g_param_spec_float(
+ "zoom-step",
+ _("Zoom Stepping Value"),
+ _("The value by which the zoom level is changed when zooming in or out."),
+ 0.0f, G_MAXFLOAT, 0.1f,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-developer-extras:
+ *
+ * Whether developer extensions should be enabled. This enables,
+ * for now, the Web Inspector, which can be controlled using the
+ * #WebKitWebInspector instance held by the #WebKitWebView this
+ * setting is enabled for.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_DEVELOPER_EXTRAS,
+ g_param_spec_boolean(
+ "enable-developer-extras",
+ _("Enable Developer Extras"),
+ _("Enables special extensions that help developers"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-private-browsing:
+ *
+ * Whether to enable private browsing mode. Private browsing mode prevents
+ * WebKit from updating the global history and storing any session
+ * information e.g., on-disk cache, as well as suppressing any messages
+ * from being printed into the (javascript) console.
+ *
+ * This is currently experimental for WebKitGtk.
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_PRIVATE_BROWSING,
+ g_param_spec_boolean(
+ "enable-private-browsing",
+ _("Enable Private Browsing"),
+ _("Enables private browsing mode"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-spell-checking:
+ *
+ * Whether to enable spell checking while typing.
+ *
+ * Since: 1.1.6
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_SPELL_CHECKING,
+ g_param_spec_boolean(
+ "enable-spell-checking",
+ _("Enable Spell Checking"),
+ _("Enables spell checking while typing"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:spell-checking-languages:
+ *
+ * The languages to be used for spell checking, separated by commas.
+ *
+ * The locale string typically is in the form lang_COUNTRY, where lang
+ * is an ISO-639 language code, and COUNTRY is an ISO-3166 country code.
+ * For instance, sv_FI for Swedish as written in Finland or pt_BR
+ * for Portuguese as written in Brazil.
+ *
+ * If no value is specified then the value returned by
+ * gtk_get_default_language will be used.
+ *
+ * Since: 1.1.6
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_SPELL_CHECKING_LANGUAGES,
+ g_param_spec_string(
+ "spell-checking-languages",
+ _("Languages to use for spell checking"),
+ _("Comma separated list of languages to use for spell checking"),
+ 0,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-caret-browsing:
+ *
+ * Whether to enable caret browsing mode.
+ *
+ * Since: 1.1.6
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_CARET_BROWSING,
+ g_param_spec_boolean("enable-caret-browsing",
+ _("Enable Caret Browsing"),
+ _("Whether to enable accesibility enhanced keyboard navigation"),
+ FALSE,
+ flags));
+ /**
+ * WebKitWebSettings:enable-html5-database:
+ *
+ * Whether to enable HTML5 client-side SQL database support. Client-side
+ * SQL database allows web pages to store structured data and be able to
+ * use SQL to manipulate that data asynchronously.
+ *
+ * Since: 1.1.8
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_HTML5_DATABASE,
+ g_param_spec_boolean("enable-html5-database",
+ _("Enable HTML5 Database"),
+ _("Whether to enable HTML5 database support"),
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-html5-local-storage:
+ *
+ * Whether to enable HTML5 localStorage support. localStorage provides
+ * simple synchronous storage access.
+ *
+ * Since: 1.1.8
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_HTML5_LOCAL_STORAGE,
+ g_param_spec_boolean("enable-html5-local-storage",
+ _("Enable HTML5 Local Storage"),
+ _("Whether to enable HTML5 Local Storage support"),
+ TRUE,
+ flags));
+ /**
+ * WebKitWebSettings:enable-xss-auditor
+ *
+ * Whether to enable the XSS Auditor. This feature filters some kinds of
+ * reflective XSS attacks on vulnerable web sites.
+ *
+ * Since: 1.1.11
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_XSS_AUDITOR,
+ g_param_spec_boolean("enable-xss-auditor",
+ _("Enable XSS Auditor"),
+ _("Whether to enable the XSS auditor"),
+ TRUE,
+ flags));
+ /**
+ * WebKitWebSettings:enable-spatial-navigation
+ *
+ * Whether to enable the Spatial Navigation. This feature consists in the ability
+ * to navigate between focusable elements in a Web page, such as hyperlinks and
+ * form controls, by using Left, Right, Up and Down arrow keys. For example, if
+ * an user presses the Right key, heuristics determine whether there is an element
+ * he might be trying to reach towards the right, and if there are multiple elements,
+ * which element he probably wants.
+ *
+ * Since: 1.1.23
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_SPATIAL_NAVIGATION,
+ g_param_spec_boolean("enable-spatial-navigation",
+ _("Enable Spatial Navigation"),
+ _("Whether to enable Spatial Navigation"),
+ FALSE,
+ flags));
+ /**
+ * WebKitWebSettings:enable-frame-flattening
+ *
+ * Whether to enable the Frame Flattening. With this setting each subframe is expanded
+ * to its contents, which will flatten all the frames to become one scrollable page.
+ * On touch devices, it is desired to not have any scrollable sub parts of the page as
+ * it results in a confusing user experience, with scrolling sometimes scrolling sub parts
+ * and at other times scrolling the page itself. For this reason iframes and framesets are
+ * barely usable on touch devices.
+ *
+ * Since: 1.3.5
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_FRAME_FLATTENING,
+ g_param_spec_boolean("enable-frame-flattening",
+ _("Enable Frame Flattening"),
+ _("Whether to enable Frame Flattening"),
+ FALSE,
+ flags));
+ /**
+ * WebKitWebSettings:user-agent:
+ *
+ * The User-Agent string used by WebKitGtk.
+ *
+ * This will return a default User-Agent string if a custom string wasn't
+ * provided by the application. Setting this property to a NULL value or
+ * an empty string will result in the User-Agent string being reset to the
+ * default value.
+ *
+ * Since: 1.1.11
+ */
+ g_object_class_install_property(gobject_class, PROP_USER_AGENT,
+ g_param_spec_string("user-agent",
+ _("User Agent"),
+ _("The User-Agent string used by WebKitGtk"),
+ webkitUserAgent().utf8().data(),
+ flags));
+
+ /**
+ * WebKitWebSettings:javascript-can-open-windows-automatically
+ *
+ * Whether JavaScript can open popup windows automatically without user
+ * intervention.
+ *
+ * Since: 1.1.11
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY,
+ g_param_spec_boolean("javascript-can-open-windows-automatically",
+ _("JavaScript can open windows automatically"),
+ _("Whether JavaScript can open windows automatically"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:javascript-can-access-clipboard
+ *
+ * Whether JavaScript can access Clipboard.
+ *
+ * Since: 1.3.0
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD,
+ g_param_spec_boolean("javascript-can-access-clipboard",
+ _("JavaScript can access Clipboard"),
+ _("Whether JavaScript can access Clipboard"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-offline-web-application-cache
+ *
+ * Whether to enable HTML5 offline web application cache support. Offline
+ * Web Application Cache ensures web applications are available even when
+ * the user is not connected to the network.
+ *
+ * Since: 1.1.13
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE,
+ g_param_spec_boolean("enable-offline-web-application-cache",
+ _("Enable offline web application cache"),
+ _("Whether to enable offline web application cache"),
+ TRUE,
+ flags));
+
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_EDITING_BEHAVIOR_MAC) == static_cast<int>(WebCore::EditingMacBehavior), editing_behavior_type_mac_match);
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_EDITING_BEHAVIOR_WINDOWS) == static_cast<int>(WebCore::EditingWindowsBehavior), editing_behavior_type_windows_match);
+ COMPILE_ASSERT(static_cast<int>(WEBKIT_EDITING_BEHAVIOR_UNIX) == static_cast<int>(WebCore::EditingUnixBehavior), editing_behavior_type_unix_match);
+
+ /**
+ * WebKitWebSettings:editing-behavior
+ *
+ * This setting controls various editing behaviors that differ
+ * between platforms and that have been combined in two groups,
+ * 'Mac' and 'Windows'. Some examples:
+ *
+ * 1) Clicking below the last line of an editable area puts the
+ * caret at the end of the last line on Mac, but in the middle of
+ * the last line on Windows.
+ *
+ * 2) Pushing down the arrow key on the last line puts the caret
+ * at the end of the last line on Mac, but does nothing on
+ * Windows. A similar case exists on the top line.
+ *
+ * Since: 1.1.13
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_EDITING_BEHAVIOR,
+ g_param_spec_enum("editing-behavior",
+ _("Editing behavior"),
+ _("The behavior mode to use in editing mode"),
+ WEBKIT_TYPE_EDITING_BEHAVIOR,
+ WEBKIT_EDITING_BEHAVIOR_UNIX,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-universal-access-from-file-uris
+ *
+ * Whether to allow files loaded through file:// URIs universal access to
+ * all pages.
+ *
+ * Since: 1.1.13
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS,
+ g_param_spec_boolean("enable-universal-access-from-file-uris",
+ _("Enable universal access from file URIs"),
+ _("Whether to allow universal access from file URIs"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-dom-paste
+ *
+ * Whether to enable DOM paste. If set to %TRUE, document.execCommand("Paste")
+ * will correctly execute and paste content of the clipboard.
+ *
+ * Since: 1.1.16
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_DOM_PASTE,
+ g_param_spec_boolean("enable-dom-paste",
+ _("Enable DOM paste"),
+ _("Whether to enable DOM paste"),
+ FALSE,
+ flags));
+ /**
+ * WebKitWebSettings:tab-key-cycles-through-elements:
+ *
+ * Whether the tab key cycles through elements on the page.
+ *
+ * If @flag is %TRUE, pressing the tab key will focus the next element in
+ * the @web_view. If @flag is %FALSE, the @web_view will interpret tab
+ * key presses as normal key presses. If the selected element is editable, the
+ * tab key will cause the insertion of a tab character.
+ *
+ * Since: 1.1.17
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS,
+ g_param_spec_boolean("tab-key-cycles-through-elements",
+ _("Tab key cycles through elements"),
+ _("Whether the tab key cycles through elements on the page."),
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-default-context-menu:
+ *
+ * Whether right-clicks should be handled automatically to create,
+ * and display the context menu. Turning this off will make
+ * WebKitGTK+ not emit the populate-popup signal. Notice that the
+ * default button press event handler may still handle right
+ * clicks for other reasons, such as in-page context menus, or
+ * right-clicks that are handled by the page itself.
+ *
+ * Since: 1.1.18
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_DEFAULT_CONTEXT_MENU,
+ g_param_spec_boolean(
+ "enable-default-context-menu",
+ _("Enable Default Context Menu"),
+ _("Enables the handling of right-clicks for the creation of the default context menu"),
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebSettings::enable-site-specific-quirks
+ *
+ * Whether to turn on site-specific hacks. Turning this on will
+ * tell WebKitGTK+ to use some site-specific workarounds for
+ * better web compatibility. For example, older versions of
+ * MediaWiki will incorrectly send WebKit a css file with KHTML
+ * workarounds. By turning on site-specific quirks, WebKit will
+ * special-case this and other cases to make the sites work.
+ *
+ * Since: 1.1.18
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_SITE_SPECIFIC_QUIRKS,
+ g_param_spec_boolean(
+ "enable-site-specific-quirks",
+ _("Enable Site Specific Quirks"),
+ _("Enables the site-specific compatibility workarounds"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-page-cache:
+ *
+ * Enable or disable the page cache. Disabling the page cache is
+ * generally only useful for special circumstances like low-memory
+ * scenarios or special purpose applications like static HTML
+ * viewers. This setting only controls the Page Cache, this cache
+ * is different than the disk-based or memory-based traditional
+ * resource caches, its point is to make going back and forth
+ * between pages much faster. For details about the different types
+ * of caches and their purposes see:
+ * http://webkit.org/blog/427/webkit-page-cache-i-the-basics/
+ *
+ * Since: 1.1.18
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_PAGE_CACHE,
+ g_param_spec_boolean("enable-page-cache",
+ _("Enable page cache"),
+ _("Whether the page cache should be used"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:auto-resize-window:
+ *
+ * Web pages can request to modify the size and position of the
+ * window containing the #WebKitWebView through various DOM methods
+ * (resizeTo, moveTo, resizeBy, moveBy). By default WebKit will not
+ * honor this requests, but you can set this property to %TRUE if
+ * you'd like it to do so. If you wish to handle this manually, you
+ * can connect to the notify signal for the
+ * #WebKitWebWindowFeatures of your #WebKitWebView.
+ *
+ * Since: 1.1.22
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_AUTO_RESIZE_WINDOW,
+ g_param_spec_boolean("auto-resize-window",
+ _("Auto Resize Window"),
+ _("Automatically resize the toplevel window when a page requests it"),
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-file-access-from-file-uris:
+ *
+ * Boolean property to control file access for file:// URIs. If this
+ * option is enabled every file:// will have its own security unique domain.
+ *
+ * Since: 1.1.22
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS,
+ g_param_spec_boolean("enable-file-access-from-file-uris",
+ "Enable file access from file URIs",
+ "Controls file access for file:// URIs.",
+ FALSE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-java-applet:
+ *
+ * Enable or disable support for the Java &lt;applet&gt; tag. Keep in
+ * mind that Java content can be still shown in the page through
+ * &lt;object&gt; or &lt;embed&gt;, which are the preferred tags for this task.
+ *
+ * Since: 1.1.22
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_JAVA_APPLET,
+ g_param_spec_boolean("enable-java-applet",
+ _("Enable Java Applet"),
+ _("Whether Java Applet support through <applet> should be enabled"),
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebSettings:enable-hyperlink-auditing:
+ *
+ * Enable or disable support for <a ping>.
+ *
+ * Since: 1.2.5
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_HYPERLINK_AUDITING,
+ g_param_spec_boolean("enable-hyperlink-auditing",
+ _("Enable Hyperlink Auditing"),
+ _("Whether <a ping> should be able to send pings"),
+ FALSE,
+ flags));
+
+ /* Undocumented for now */
+ g_object_class_install_property(gobject_class,
+ PROP_ENABLE_FULLSCREEN,
+ g_param_spec_boolean("enable-fullscreen",
+ _("Enable Fullscreen"),
+ _("Whether the Mozilla style API should be enabled."),
+ FALSE,
+ flags));
+
+ g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate));
+}
+
+static void webkit_web_settings_init(WebKitWebSettings* web_settings)
+{
+ web_settings->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_settings, WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate);
+}
+
+static EnchantBroker* get_enchant_broker()
+{
+ static EnchantBroker* broker = 0;
+ if (!broker)
+ broker = enchant_broker_init();
+
+ return broker;
+}
+
+static void free_spell_checking_language(gpointer data, gpointer user_data)
+{
+ EnchantDict* dict = static_cast<EnchantDict*>(data);
+ EnchantBroker* broker = get_enchant_broker();
+
+ enchant_broker_free_dict(broker, dict);
+}
+
+static void webkit_web_settings_finalize(GObject* object)
+{
+ WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
+ WebKitWebSettingsPrivate* priv = web_settings->priv;
+
+ g_free(priv->default_encoding);
+ g_free(priv->cursive_font_family);
+ g_free(priv->default_font_family);
+ g_free(priv->fantasy_font_family);
+ g_free(priv->monospace_font_family);
+ g_free(priv->sans_serif_font_family);
+ g_free(priv->serif_font_family);
+ g_free(priv->user_stylesheet_uri);
+ g_free(priv->spell_checking_languages);
+
+ g_slist_foreach(priv->enchant_dicts, free_spell_checking_language, 0);
+ g_slist_free(priv->enchant_dicts);
+
+ g_free(priv->user_agent);
+
+ G_OBJECT_CLASS(webkit_web_settings_parent_class)->finalize(object);
+}
+
+static void getAvailableDictionariesCallback(const char* const languageTag, const char* const, const char* const, const char* const, void* data)
+{
+ Vector<CString>* dicts = static_cast<Vector<CString>*>(data);
+
+ dicts->append(languageTag);
+}
+
+static void webkit_web_settings_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
+{
+ WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
+ WebKitWebSettingsPrivate* priv = web_settings->priv;
+ EnchantBroker* broker;
+ EnchantDict* dict;
+ GSList* spellDictionaries = 0;
+
+ switch(prop_id) {
+ case PROP_DEFAULT_ENCODING:
+ g_free(priv->default_encoding);
+ priv->default_encoding = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_CURSIVE_FONT_FAMILY:
+ g_free(priv->cursive_font_family);
+ priv->cursive_font_family = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_DEFAULT_FONT_FAMILY:
+ g_free(priv->default_font_family);
+ priv->default_font_family = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_FANTASY_FONT_FAMILY:
+ g_free(priv->fantasy_font_family);
+ priv->fantasy_font_family = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_MONOSPACE_FONT_FAMILY:
+ g_free(priv->monospace_font_family);
+ priv->monospace_font_family = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_SANS_SERIF_FONT_FAMILY:
+ g_free(priv->sans_serif_font_family);
+ priv->sans_serif_font_family = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_SERIF_FONT_FAMILY:
+ g_free(priv->serif_font_family);
+ priv->serif_font_family = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_DEFAULT_FONT_SIZE:
+ priv->default_font_size = g_value_get_int(value);
+ break;
+ case PROP_DEFAULT_MONOSPACE_FONT_SIZE:
+ priv->default_monospace_font_size = g_value_get_int(value);
+ break;
+ case PROP_MINIMUM_FONT_SIZE:
+ priv->minimum_font_size = g_value_get_int(value);
+ break;
+ case PROP_MINIMUM_LOGICAL_FONT_SIZE:
+ priv->minimum_logical_font_size = g_value_get_int(value);
+ break;
+ case PROP_ENFORCE_96_DPI:
+ priv->enforce_96_dpi = g_value_get_boolean(value);
+ break;
+ case PROP_AUTO_LOAD_IMAGES:
+ priv->auto_load_images = g_value_get_boolean(value);
+ break;
+ case PROP_AUTO_SHRINK_IMAGES:
+ priv->auto_shrink_images = g_value_get_boolean(value);
+ break;
+ case PROP_PRINT_BACKGROUNDS:
+ priv->print_backgrounds = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_SCRIPTS:
+ priv->enable_scripts = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_PLUGINS:
+ priv->enable_plugins = g_value_get_boolean(value);
+ break;
+ case PROP_RESIZABLE_TEXT_AREAS:
+ priv->resizable_text_areas = g_value_get_boolean(value);
+ break;
+ case PROP_USER_STYLESHEET_URI:
+ g_free(priv->user_stylesheet_uri);
+ priv->user_stylesheet_uri = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_ZOOM_STEP:
+ priv->zoom_step = g_value_get_float(value);
+ break;
+ case PROP_ENABLE_DEVELOPER_EXTRAS:
+ priv->enable_developer_extras = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_PRIVATE_BROWSING:
+ priv->enable_private_browsing = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_CARET_BROWSING:
+ priv->enable_caret_browsing = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_HTML5_DATABASE:
+ priv->enable_html5_database = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_HTML5_LOCAL_STORAGE:
+ priv->enable_html5_local_storage = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_SPELL_CHECKING:
+ priv->enable_spell_checking = g_value_get_boolean(value);
+ break;
+ case PROP_SPELL_CHECKING_LANGUAGES:
+ g_free(priv->spell_checking_languages);
+ priv->spell_checking_languages = g_strdup(g_value_get_string(value));
+
+ broker = get_enchant_broker();
+ if (priv->spell_checking_languages) {
+ char** langs = g_strsplit(priv->spell_checking_languages, ",", -1);
+ for (int i = 0; langs[i]; i++) {
+ if (enchant_broker_dict_exists(broker, langs[i])) {
+ dict = enchant_broker_request_dict(broker, langs[i]);
+ spellDictionaries = g_slist_append(spellDictionaries, dict);
+ }
+ }
+ g_strfreev(langs);
+ } else {
+ const char* language = pango_language_to_string(gtk_get_default_language());
+ if (enchant_broker_dict_exists(broker, language)) {
+ dict = enchant_broker_request_dict(broker, language);
+ spellDictionaries = g_slist_append(spellDictionaries, dict);
+ } else {
+ // No dictionaries selected, we get one from the list
+ Vector<CString> allDictionaries;
+ enchant_broker_list_dicts(broker, getAvailableDictionariesCallback, &allDictionaries);
+ if (!allDictionaries.isEmpty()) {
+ dict = enchant_broker_request_dict(broker, allDictionaries[0].data());
+ spellDictionaries = g_slist_append(spellDictionaries, dict);
+ }
+ }
+ }
+ g_slist_foreach(priv->enchant_dicts, free_spell_checking_language, 0);
+ g_slist_free(priv->enchant_dicts);
+ priv->enchant_dicts = spellDictionaries;
+ break;
+ case PROP_ENABLE_XSS_AUDITOR:
+ priv->enable_xss_auditor = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_SPATIAL_NAVIGATION:
+ priv->enable_spatial_navigation = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_FRAME_FLATTENING:
+ priv->enable_frame_flattening = g_value_get_boolean(value);
+ break;
+ case PROP_USER_AGENT:
+ g_free(priv->user_agent);
+ if (!g_value_get_string(value) || !strlen(g_value_get_string(value)))
+ priv->user_agent = g_strdup(webkitUserAgent().utf8().data());
+ else
+ priv->user_agent = g_strdup(g_value_get_string(value));
+ break;
+ case PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY:
+ priv->javascript_can_open_windows_automatically = g_value_get_boolean(value);
+ break;
+ case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD:
+ priv->javascript_can_access_clipboard = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
+ priv->enable_offline_web_application_cache = g_value_get_boolean(value);
+ break;
+ case PROP_EDITING_BEHAVIOR:
+ priv->editing_behavior = static_cast<WebKitEditingBehavior>(g_value_get_enum(value));
+ break;
+ case PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS:
+ priv->enable_universal_access_from_file_uris = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS:
+ priv->enable_file_access_from_file_uris = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_DOM_PASTE:
+ priv->enable_dom_paste = g_value_get_boolean(value);
+ break;
+ case PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS:
+ priv->tab_key_cycles_through_elements = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_DEFAULT_CONTEXT_MENU:
+ priv->enable_default_context_menu = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_SITE_SPECIFIC_QUIRKS:
+ priv->enable_site_specific_quirks = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_PAGE_CACHE:
+ priv->enable_page_cache = g_value_get_boolean(value);
+ break;
+ case PROP_AUTO_RESIZE_WINDOW:
+ priv->auto_resize_window = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_JAVA_APPLET:
+ priv->enable_java_applet = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_HYPERLINK_AUDITING:
+ priv->enable_hyperlink_auditing = g_value_get_boolean(value);
+ break;
+ case PROP_ENABLE_FULLSCREEN:
+ priv->enable_fullscreen = g_value_get_boolean(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void webkit_web_settings_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
+ WebKitWebSettingsPrivate* priv = web_settings->priv;
+
+ switch (prop_id) {
+ case PROP_DEFAULT_ENCODING:
+ g_value_set_string(value, priv->default_encoding);
+ break;
+ case PROP_CURSIVE_FONT_FAMILY:
+ g_value_set_string(value, priv->cursive_font_family);
+ break;
+ case PROP_DEFAULT_FONT_FAMILY:
+ g_value_set_string(value, priv->default_font_family);
+ break;
+ case PROP_FANTASY_FONT_FAMILY:
+ g_value_set_string(value, priv->fantasy_font_family);
+ break;
+ case PROP_MONOSPACE_FONT_FAMILY:
+ g_value_set_string(value, priv->monospace_font_family);
+ break;
+ case PROP_SANS_SERIF_FONT_FAMILY:
+ g_value_set_string(value, priv->sans_serif_font_family);
+ break;
+ case PROP_SERIF_FONT_FAMILY:
+ g_value_set_string(value, priv->serif_font_family);
+ break;
+ case PROP_DEFAULT_FONT_SIZE:
+ g_value_set_int(value, priv->default_font_size);
+ break;
+ case PROP_DEFAULT_MONOSPACE_FONT_SIZE:
+ g_value_set_int(value, priv->default_monospace_font_size);
+ break;
+ case PROP_MINIMUM_FONT_SIZE:
+ g_value_set_int(value, priv->minimum_font_size);
+ break;
+ case PROP_MINIMUM_LOGICAL_FONT_SIZE:
+ g_value_set_int(value, priv->minimum_logical_font_size);
+ break;
+ case PROP_ENFORCE_96_DPI:
+ g_value_set_boolean(value, priv->enforce_96_dpi);
+ break;
+ case PROP_AUTO_LOAD_IMAGES:
+ g_value_set_boolean(value, priv->auto_load_images);
+ break;
+ case PROP_AUTO_SHRINK_IMAGES:
+ g_value_set_boolean(value, priv->auto_shrink_images);
+ break;
+ case PROP_PRINT_BACKGROUNDS:
+ g_value_set_boolean(value, priv->print_backgrounds);
+ break;
+ case PROP_ENABLE_SCRIPTS:
+ g_value_set_boolean(value, priv->enable_scripts);
+ break;
+ case PROP_ENABLE_PLUGINS:
+ g_value_set_boolean(value, priv->enable_plugins);
+ break;
+ case PROP_RESIZABLE_TEXT_AREAS:
+ g_value_set_boolean(value, priv->resizable_text_areas);
+ break;
+ case PROP_USER_STYLESHEET_URI:
+ g_value_set_string(value, priv->user_stylesheet_uri);
+ break;
+ case PROP_ZOOM_STEP:
+ g_value_set_float(value, priv->zoom_step);
+ break;
+ case PROP_ENABLE_DEVELOPER_EXTRAS:
+ g_value_set_boolean(value, priv->enable_developer_extras);
+ break;
+ case PROP_ENABLE_PRIVATE_BROWSING:
+ g_value_set_boolean(value, priv->enable_private_browsing);
+ break;
+ case PROP_ENABLE_CARET_BROWSING:
+ g_value_set_boolean(value, priv->enable_caret_browsing);
+ break;
+ case PROP_ENABLE_HTML5_DATABASE:
+ g_value_set_boolean(value, priv->enable_html5_database);
+ break;
+ case PROP_ENABLE_HTML5_LOCAL_STORAGE:
+ g_value_set_boolean(value, priv->enable_html5_local_storage);
+ break;
+ case PROP_ENABLE_SPELL_CHECKING:
+ g_value_set_boolean(value, priv->enable_spell_checking);
+ break;
+ case PROP_SPELL_CHECKING_LANGUAGES:
+ g_value_set_string(value, priv->spell_checking_languages);
+ break;
+ case PROP_ENABLE_XSS_AUDITOR:
+ g_value_set_boolean(value, priv->enable_xss_auditor);
+ break;
+ case PROP_ENABLE_SPATIAL_NAVIGATION:
+ g_value_set_boolean(value, priv->enable_spatial_navigation);
+ break;
+ case PROP_ENABLE_FRAME_FLATTENING:
+ g_value_set_boolean(value, priv->enable_frame_flattening);
+ break;
+ case PROP_USER_AGENT:
+ g_value_set_string(value, priv->user_agent);
+ break;
+ case PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY:
+ g_value_set_boolean(value, priv->javascript_can_open_windows_automatically);
+ break;
+ case PROP_JAVASCRIPT_CAN_ACCESS_CLIPBOARD:
+ g_value_set_boolean(value, priv->javascript_can_access_clipboard);
+ break;
+ case PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
+ g_value_set_boolean(value, priv->enable_offline_web_application_cache);
+ break;
+ case PROP_EDITING_BEHAVIOR:
+ g_value_set_enum(value, priv->editing_behavior);
+ break;
+ case PROP_ENABLE_UNIVERSAL_ACCESS_FROM_FILE_URIS:
+ g_value_set_boolean(value, priv->enable_universal_access_from_file_uris);
+ break;
+ case PROP_ENABLE_FILE_ACCESS_FROM_FILE_URIS:
+ g_value_set_boolean(value, priv->enable_file_access_from_file_uris);
+ break;
+ case PROP_ENABLE_DOM_PASTE:
+ g_value_set_boolean(value, priv->enable_dom_paste);
+ break;
+ case PROP_TAB_KEY_CYCLES_THROUGH_ELEMENTS:
+ g_value_set_boolean(value, priv->tab_key_cycles_through_elements);
+ break;
+ case PROP_ENABLE_DEFAULT_CONTEXT_MENU:
+ g_value_set_boolean(value, priv->enable_default_context_menu);
+ break;
+ case PROP_ENABLE_SITE_SPECIFIC_QUIRKS:
+ g_value_set_boolean(value, priv->enable_site_specific_quirks);
+ break;
+ case PROP_ENABLE_PAGE_CACHE:
+ g_value_set_boolean(value, priv->enable_page_cache);
+ break;
+ case PROP_AUTO_RESIZE_WINDOW:
+ g_value_set_boolean(value, priv->auto_resize_window);
+ break;
+ case PROP_ENABLE_JAVA_APPLET:
+ g_value_set_boolean(value, priv->enable_java_applet);
+ break;
+ case PROP_ENABLE_HYPERLINK_AUDITING:
+ g_value_set_boolean(value, priv->enable_hyperlink_auditing);
+ break;
+ case PROP_ENABLE_FULLSCREEN:
+ g_value_set_boolean(value, priv->enable_fullscreen);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+/**
+ * webkit_web_settings_new:
+ *
+ * Creates a new #WebKitWebSettings instance with default values. It must
+ * be manually attached to a WebView.
+ *
+ * Returns: a new #WebKitWebSettings instance
+ **/
+WebKitWebSettings* webkit_web_settings_new()
+{
+ return WEBKIT_WEB_SETTINGS(g_object_new(WEBKIT_TYPE_WEB_SETTINGS, NULL));
+}
+
+/**
+ * webkit_web_settings_copy:
+ *
+ * Copies an existing #WebKitWebSettings instance.
+ *
+ * Returns: (transfer full): a new #WebKitWebSettings instance
+ **/
+WebKitWebSettings* webkit_web_settings_copy(WebKitWebSettings* web_settings)
+{
+ WebKitWebSettingsPrivate* priv = web_settings->priv;
+
+ WebKitWebSettings* copy = WEBKIT_WEB_SETTINGS(g_object_new(WEBKIT_TYPE_WEB_SETTINGS,
+ "default-encoding", priv->default_encoding,
+ "cursive-font-family", priv->cursive_font_family,
+ "default-font-family", priv->default_font_family,
+ "fantasy-font-family", priv->fantasy_font_family,
+ "monospace-font-family", priv->monospace_font_family,
+ "sans-serif-font-family", priv->sans_serif_font_family,
+ "serif-font-family", priv->serif_font_family,
+ "default-font-size", priv->default_font_size,
+ "default-monospace-font-size", priv->default_monospace_font_size,
+ "minimum-font-size", priv->minimum_font_size,
+ "minimum-logical-font-size", priv->minimum_logical_font_size,
+ "auto-load-images", priv->auto_load_images,
+ "auto-shrink-images", priv->auto_shrink_images,
+ "print-backgrounds", priv->print_backgrounds,
+ "enable-scripts", priv->enable_scripts,
+ "enable-plugins", priv->enable_plugins,
+ "resizable-text-areas", priv->resizable_text_areas,
+ "user-stylesheet-uri", priv->user_stylesheet_uri,
+ "zoom-step", priv->zoom_step,
+ "enable-developer-extras", priv->enable_developer_extras,
+ "enable-private-browsing", priv->enable_private_browsing,
+ "enable-spell-checking", priv->enable_spell_checking,
+ "spell-checking-languages", priv->spell_checking_languages,
+ "enable-caret-browsing", priv->enable_caret_browsing,
+ "enable-html5-database", priv->enable_html5_database,
+ "enable-html5-local-storage", priv->enable_html5_local_storage,
+ "enable-xss-auditor", priv->enable_xss_auditor,
+ "enable-spatial-navigation", priv->enable_spatial_navigation,
+ "enable-frame-flattening", priv->enable_frame_flattening,
+ "user-agent", webkit_web_settings_get_user_agent(web_settings),
+ "javascript-can-open-windows-automatically", priv->javascript_can_open_windows_automatically,
+ "javascript-can-access-clipboard", priv->javascript_can_access_clipboard,
+ "enable-offline-web-application-cache", priv->enable_offline_web_application_cache,
+ "editing-behavior", priv->editing_behavior,
+ "enable-universal-access-from-file-uris", priv->enable_universal_access_from_file_uris,
+ "enable-file-access-from-file-uris", priv->enable_file_access_from_file_uris,
+ "enable-dom-paste", priv->enable_dom_paste,
+ "tab-key-cycles-through-elements", priv->tab_key_cycles_through_elements,
+ "enable-default-context-menu", priv->enable_default_context_menu,
+ "enable-site-specific-quirks", priv->enable_site_specific_quirks,
+ "enable-page-cache", priv->enable_page_cache,
+ "auto-resize-window", priv->auto_resize_window,
+ "enable-java-applet", priv->enable_java_applet,
+ "enable-hyperlink-auditing", priv->enable_hyperlink_auditing,
+ "enable-fullscreen", priv->enable_fullscreen,
+ NULL));
+
+ return copy;
+}
+
+/**
+ * webkit_web_settings_add_extra_plugin_directory:
+ * @web_view: a #WebKitWebView
+ * @directory: the directory to add
+ *
+ * Adds the @directory to paths where @web_view will search for plugins.
+ *
+ * Since: 1.0.3
+ */
+void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* webView, const gchar* directory)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ PluginDatabase::installedPlugins()->addExtraPluginDirectory(filenameToString(directory));
+}
+
+/**
+ * webkit_web_settings_get_user_agent:
+ * @web_settings: a #WebKitWebSettings
+ *
+ * Returns the User-Agent string currently used by the web view(s) associated
+ * with the @web_settings.
+ *
+ * Since: 1.1.11
+ */
+G_CONST_RETURN gchar* webkit_web_settings_get_user_agent(WebKitWebSettings* webSettings)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_SETTINGS(webSettings), NULL);
+
+ WebKitWebSettingsPrivate* priv = webSettings->priv;
+
+ return priv->user_agent;
+}
+
+GSList* webkitWebViewGetEnchantDicts(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+
+ WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
+
+ return settings->priv->enchant_dicts;
+}
+
+namespace WebKit {
+
+WebCore::EditingBehaviorType core(WebKitEditingBehavior type)
+{
+ return (WebCore::EditingBehaviorType)type;
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebsettings.h b/Source/WebKit/gtk/webkit/webkitwebsettings.h
new file mode 100644
index 0000000..eee0d04
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebsettings.h
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2008 Christian Dywan <christian@imendio.com>
+ * Copyright (C) 2009 Jan Michael Alonzo <jmalonzo@gmail.com
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebsettings_h
+#define webkitwebsettings_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_SETTINGS (webkit_web_settings_get_type())
+#define WEBKIT_WEB_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettings))
+#define WEBKIT_WEB_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsClass))
+#define WEBKIT_IS_WEB_SETTINGS(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_SETTINGS))
+#define WEBKIT_IS_WEB_SETTINGS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_SETTINGS))
+#define WEBKIT_WEB_SETTINGS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsClass))
+
+typedef enum {
+ WEBKIT_EDITING_BEHAVIOR_MAC,
+ WEBKIT_EDITING_BEHAVIOR_WINDOWS,
+ WEBKIT_EDITING_BEHAVIOR_UNIX
+} WebKitEditingBehavior;
+
+typedef struct _WebKitWebSettingsPrivate WebKitWebSettingsPrivate;
+
+struct _WebKitWebSettings {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebSettingsPrivate *priv;
+};
+
+struct _WebKitWebSettingsClass {
+ GObjectClass parent_class;
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+ void (*_webkit_reserved4) (void);
+};
+
+WEBKIT_API GType
+webkit_web_settings_get_type (void);
+
+WEBKIT_API WebKitWebSettings *
+webkit_web_settings_new (void);
+
+WEBKIT_API WebKitWebSettings *
+webkit_web_settings_copy (WebKitWebSettings *web_settings);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_settings_get_user_agent (WebKitWebSettings *web_settings);
+
+G_END_DECLS
+
+#endif /* webkitwebsettings_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h b/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h
new file mode 100644
index 0000000..9700ba5
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebsettingsprivate.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebsettingsprivate_h
+#define webkitwebsettingsprivate_h
+
+#include "webkitwebsettings.h"
+
+extern "C" {
+
+WEBKIT_API void webkit_web_settings_add_extra_plugin_directory(WebKitWebView*, const gchar* directory);
+
+GSList* webkitWebViewGetEnchantDicts(WebKitWebView*);
+
+WTF::String webkitUserAgent();
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebview.cpp b/Source/WebKit/gtk/webkit/webkitwebview.cpp
new file mode 100644
index 0000000..e5d5b84
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebview.cpp
@@ -0,0 +1,5143 @@
+/*
+ * Copyright (C) 2007, 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2007, 2008, 2009 Christian Dywan <christian@imendio.com>
+ * Copyright (C) 2007 Xan Lopez <xan@gnome.org>
+ * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2008 Jan Alonzo <jmalonzo@unpluggable.com>
+ * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org>
+ * Copyright (C) 2008 Nuanti Ltd.
+ * Copyright (C) 2008, 2009, 2010 Collabora Ltd.
+ * Copyright (C) 2009, 2010 Igalia S.L.
+ * Copyright (C) 2009 Movial Creative Technologies Inc.
+ * Copyright (C) 2009 Bobby Powers
+ * Copyright (C) 2010 Joone Hur <joone@kldp.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+#include "webkitwebview.h"
+
+#include "AXObjectCache.h"
+#include "AbstractDatabase.h"
+#include "BackForwardListImpl.h"
+#include "Chrome.h"
+#include "ChromeClientGtk.h"
+#include "ClipboardUtilitiesGtk.h"
+#include "ContextMenu.h"
+#include "ContextMenuClientGtk.h"
+#include "ContextMenuController.h"
+#include "Cursor.h"
+#include "Document.h"
+#include "DocumentLoader.h"
+#include "DragActions.h"
+#include "DragClientGtk.h"
+#include "DragController.h"
+#include "DragData.h"
+#include "Editor.h"
+#include "EditorClientGtk.h"
+#include "EventHandler.h"
+#include "FloatQuad.h"
+#include "FocusController.h"
+#include "FrameLoader.h"
+#include "FrameLoaderTypes.h"
+#include "FrameView.h"
+#include "GOwnPtrGtk.h"
+#include "GraphicsContext.h"
+#include "GtkVersioning.h"
+#include "HTMLNames.h"
+#include "HitTestRequest.h"
+#include "HitTestResult.h"
+#include "IconDatabase.h"
+#include "InspectorClientGtk.h"
+#include "InspectorController.h"
+#include "MemoryCache.h"
+#include "MouseEventWithHitTestResults.h"
+#include "NotImplemented.h"
+#include "PageCache.h"
+#include "Pasteboard.h"
+#include "PasteboardHelper.h"
+#include "PasteboardHelperGtk.h"
+#include "PlatformKeyboardEvent.h"
+#include "PlatformWheelEvent.h"
+#include "ProgressTracker.h"
+#include "RenderView.h"
+#include "ResourceHandle.h"
+#include "ScriptValue.h"
+#include "Scrollbar.h"
+#include "Settings.h"
+#include "webkit/WebKitDOMDocumentPrivate.h"
+#include "webkitdownload.h"
+#include "webkitdownloadprivate.h"
+#include "webkitenumtypes.h"
+#include "webkitgeolocationpolicydecision.h"
+#include "webkitglobalsprivate.h"
+#include "webkithittestresultprivate.h"
+#include "webkitmarshal.h"
+#include "webkitnetworkrequest.h"
+#include "webkitnetworkresponse.h"
+#include "webkitviewportattributes.h"
+#include "webkitviewportattributesprivate.h"
+#include "webkitwebbackforwardlist.h"
+#include "webkitwebframeprivate.h"
+#include "webkitwebhistoryitem.h"
+#include "webkitwebhistoryitemprivate.h"
+#include "webkitwebinspector.h"
+#include "webkitwebinspectorprivate.h"
+#include "webkitwebpolicydecision.h"
+#include "webkitwebresource.h"
+#include "webkitwebsettingsprivate.h"
+#include "webkitwebplugindatabaseprivate.h"
+#include "webkitwebwindowfeatures.h"
+#include "webkitwebviewprivate.h"
+#include <gdk/gdkkeysyms.h>
+#include <glib/gi18n-lib.h>
+#include <wtf/gobject/GOwnPtr.h>
+#include <wtf/text/CString.h>
+
+/**
+ * SECTION:webkitwebview
+ * @short_description: The central class of the WebKitGTK+ API
+ * @see_also: #WebKitWebSettings, #WebKitWebFrame
+ *
+ * #WebKitWebView is the central class of the WebKitGTK+ API. It is a
+ * #GtkWidget implementing the scrolling interface which means you can
+ * embed in a #GtkScrolledWindow. It is responsible for managing the
+ * drawing of the content, forwarding of events. You can load any URI
+ * into the #WebKitWebView or any kind of data string. With #WebKitWebSettings
+ * you can control various aspects of the rendering and loading of the content.
+ * Each #WebKitWebView has exactly one #WebKitWebFrame as main frame. A
+ * #WebKitWebFrame can have n children.
+ *
+ * <programlisting>
+ * /<!-- -->* Create the widgets *<!-- -->/
+ * GtkWidget *main_window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
+ * GtkWidget *scrolled_window = gtk_scrolled_window_new (NULL, NULL);
+ * GtkWidget *web_view = webkit_web_view_new ();
+ *
+ * /<!-- -->* Place the WebKitWebView in the GtkScrolledWindow *<!-- -->/
+ * gtk_container_add (GTK_CONTAINER (scrolled_window), web_view);
+ * gtk_container_add (GTK_CONTAINER (main_window), scrolled_window);
+ *
+ * /<!-- -->* Open a webpage *<!-- -->/
+ * webkit_web_view_load_uri (WEBKIT_WEB_VIEW (web_view), "http://www.gnome.org");
+ *
+ * /<!-- -->* Show the result *<!-- -->/
+ * gtk_window_set_default_size (GTK_WINDOW (main_window), 800, 600);
+ * gtk_widget_show_all (main_window);
+ * </programlisting>
+ */
+
+static const double defaultDPI = 96.0;
+static IntPoint globalPointForClientPoint(GdkWindow* window, const IntPoint& clientPoint);
+
+using namespace WebKit;
+using namespace WebCore;
+
+enum {
+ /* normal signals */
+ NAVIGATION_REQUESTED,
+ NEW_WINDOW_POLICY_DECISION_REQUESTED,
+ NAVIGATION_POLICY_DECISION_REQUESTED,
+ MIME_TYPE_POLICY_DECISION_REQUESTED,
+ CREATE_WEB_VIEW,
+ WEB_VIEW_READY,
+ WINDOW_OBJECT_CLEARED,
+ LOAD_STARTED,
+ LOAD_COMMITTED,
+ LOAD_PROGRESS_CHANGED,
+ LOAD_ERROR,
+ LOAD_FINISHED,
+ TITLE_CHANGED,
+ HOVERING_OVER_LINK,
+ POPULATE_POPUP,
+ STATUS_BAR_TEXT_CHANGED,
+ ICON_LOADED,
+ SELECTION_CHANGED,
+ CONSOLE_MESSAGE,
+ SCRIPT_ALERT,
+ SCRIPT_CONFIRM,
+ SCRIPT_PROMPT,
+ SELECT_ALL,
+ COPY_CLIPBOARD,
+ PASTE_CLIPBOARD,
+ CUT_CLIPBOARD,
+ DOWNLOAD_REQUESTED,
+ MOVE_CURSOR,
+ PRINT_REQUESTED,
+ PLUGIN_WIDGET,
+ CLOSE_WEB_VIEW,
+ UNDO,
+ REDO,
+ DATABASE_QUOTA_EXCEEDED,
+ RESOURCE_REQUEST_STARTING,
+ DOCUMENT_LOAD_FINISHED,
+ GEOLOCATION_POLICY_DECISION_REQUESTED,
+ GEOLOCATION_POLICY_DECISION_CANCELLED,
+ ONLOAD_EVENT,
+ FRAME_CREATED,
+ SHOULD_BEGIN_EDITING,
+ SHOULD_END_EDITING,
+ SHOULD_INSERT_NODE,
+ SHOULD_INSERT_TEXT,
+ SHOULD_DELETE_RANGE,
+ SHOULD_SHOW_DELETE_INTERFACE_FOR_ELEMENT,
+ SHOULD_CHANGE_SELECTED_RANGE,
+ SHOULD_APPLY_STYLE,
+ EDITING_BEGAN,
+ USER_CHANGED_CONTENTS,
+ EDITING_ENDED,
+ VIEWPORT_ATTRIBUTES_RECOMPUTE_REQUESTED,
+ VIEWPORT_ATTRIBUTES_CHANGED,
+
+ LAST_SIGNAL
+};
+
+enum {
+ PROP_0,
+
+ PROP_TITLE,
+ PROP_URI,
+ PROP_COPY_TARGET_LIST,
+ PROP_PASTE_TARGET_LIST,
+ PROP_EDITABLE,
+ PROP_SETTINGS,
+ PROP_WEB_INSPECTOR,
+ PROP_VIEWPORT_ATTRIBUTES,
+ PROP_WINDOW_FEATURES,
+ PROP_TRANSPARENT,
+ PROP_ZOOM_LEVEL,
+ PROP_FULL_CONTENT_ZOOM,
+ PROP_LOAD_STATUS,
+ PROP_PROGRESS,
+ PROP_ENCODING,
+ PROP_CUSTOM_ENCODING,
+ PROP_ICON_URI,
+ PROP_IM_CONTEXT,
+#ifdef GTK_API_VERSION_2
+ PROP_VIEW_MODE
+#else
+ PROP_VIEW_MODE,
+ PROP_HADJUSTMENT,
+ PROP_VADJUSTMENT,
+ PROP_HSCROLL_POLICY,
+ PROP_VSCROLL_POLICY
+#endif
+};
+
+static guint webkit_web_view_signals[LAST_SIGNAL] = { 0, };
+
+#ifdef GTK_API_VERSION_2
+G_DEFINE_TYPE(WebKitWebView, webkit_web_view, GTK_TYPE_CONTAINER)
+#else
+G_DEFINE_TYPE_WITH_CODE(WebKitWebView, webkit_web_view, GTK_TYPE_CONTAINER,
+ G_IMPLEMENT_INTERFACE(GTK_TYPE_SCROLLABLE, 0))
+#endif
+
+static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GParamSpec* pspec, WebKitWebView* webView);
+static void webkit_web_view_set_window_features(WebKitWebView* webView, WebKitWebWindowFeatures* webWindowFeatures);
+
+static GtkIMContext* webkit_web_view_get_im_context(WebKitWebView*);
+
+static void PopupMenuPositionFunc(GtkMenu* menu, gint *x, gint *y, gboolean *pushIn, gpointer userData)
+{
+ WebKitWebView* view = WEBKIT_WEB_VIEW(userData);
+ WebKitWebViewPrivate* priv = view->priv;
+ GdkScreen* screen = gtk_widget_get_screen(GTK_WIDGET(view));
+ GtkRequisition menuSize;
+
+#ifdef GTK_API_VERSION_2
+ gtk_widget_size_request(GTK_WIDGET(menu), &menuSize);
+#else
+ gtk_widget_get_preferred_size(GTK_WIDGET(menu), &menuSize, NULL);
+#endif
+
+ *x = priv->lastPopupXPosition;
+ if ((*x + menuSize.width) >= gdk_screen_get_width(screen))
+ *x -= menuSize.width;
+
+ *y = priv->lastPopupYPosition;
+ if ((*y + menuSize.height) >= gdk_screen_get_height(screen))
+ *y -= menuSize.height;
+
+ *pushIn = FALSE;
+}
+
+static Node* getFocusedNode(Frame* frame)
+{
+ if (Document* doc = frame->document())
+ return doc->focusedNode();
+ return 0;
+}
+
+static void contextMenuItemActivated(GtkMenuItem* item, ContextMenuController* controller)
+{
+ ContextMenuItem contextItem(item);
+ controller->contextMenuItemSelected(&contextItem);
+}
+
+static void contextMenuConnectActivate(GtkMenuItem* item, ContextMenuController* controller)
+{
+ if (GTK_IS_SEPARATOR_MENU_ITEM(item))
+ return;
+
+ if (GtkWidget* menu = gtk_menu_item_get_submenu(item)) {
+ gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)contextMenuConnectActivate, controller);
+ return;
+ }
+
+ g_signal_connect(item, "activate", G_CALLBACK(contextMenuItemActivated), controller);
+}
+
+static gboolean webkit_web_view_forward_context_menu_event(WebKitWebView* webView, const PlatformMouseEvent& event)
+{
+ Page* page = core(webView);
+ page->contextMenuController()->clearContextMenu();
+ Frame* focusedFrame;
+ Frame* mainFrame = page->mainFrame();
+ gboolean mousePressEventResult = FALSE;
+
+ if (!mainFrame->view())
+ return FALSE;
+
+ mainFrame->view()->setCursor(pointerCursor());
+ if (page->frameCount()) {
+ HitTestRequest request(HitTestRequest::Active);
+ IntPoint point = mainFrame->view()->windowToContents(event.pos());
+ MouseEventWithHitTestResults mev = mainFrame->document()->prepareMouseEvent(request, point, event);
+
+ Frame* targetFrame = EventHandler::subframeForTargetNode(mev.targetNode());
+ if (!targetFrame)
+ targetFrame = mainFrame;
+
+ focusedFrame = page->focusController()->focusedOrMainFrame();
+ if (targetFrame != focusedFrame) {
+ page->focusController()->setFocusedFrame(targetFrame);
+ focusedFrame = targetFrame;
+ }
+ } else
+ focusedFrame = mainFrame;
+
+ if (focusedFrame->view() && focusedFrame->eventHandler()->handleMousePressEvent(event))
+ mousePressEventResult = TRUE;
+
+
+ bool handledEvent = focusedFrame->eventHandler()->sendContextMenuEvent(event);
+ if (!handledEvent)
+ return FALSE;
+
+ // If coreMenu is NULL, this means WebCore decided to not create
+ // the default context menu; this may happen when the page is
+ // handling the right-click for reasons other than the context menu.
+ ContextMenuController* controller = page->contextMenuController();
+ ContextMenu* coreMenu = controller->contextMenu();
+ if (!coreMenu)
+ return mousePressEventResult;
+
+ // If we reach here, it's because WebCore is going to show the
+ // default context menu. We check our setting to figure out
+ // whether we want it or not.
+ WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
+ gboolean enableDefaultContextMenu;
+ g_object_get(settings, "enable-default-context-menu", &enableDefaultContextMenu, NULL);
+
+ if (!enableDefaultContextMenu)
+ return FALSE;
+
+ GtkMenu* menu = GTK_MENU(coreMenu->platformDescription());
+ if (!menu)
+ return FALSE;
+
+ // We connect the "activate" signal here rather than in ContextMenuGtk to avoid
+ // a layering violation. ContextMenuGtk should not know about the ContextMenuController.
+ gtk_container_foreach(GTK_CONTAINER(menu), (GtkCallback)contextMenuConnectActivate, controller);
+
+ g_signal_emit(webView, webkit_web_view_signals[POPULATE_POPUP], 0, menu);
+
+ // If the context menu is now empty, don't show it.
+ GOwnPtr<GList> items(gtk_container_get_children(GTK_CONTAINER(menu)));
+ if (!items)
+ return FALSE;
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ priv->currentMenu = menu;
+ priv->lastPopupXPosition = event.globalX();
+ priv->lastPopupYPosition = event.globalY();
+
+ gtk_menu_popup(menu, 0, 0, &PopupMenuPositionFunc, webView, event.button() + 1, gtk_get_current_event_time());
+ return TRUE;
+}
+
+static gboolean webkit_web_view_popup_menu_handler(GtkWidget* widget)
+{
+ static const int contextMenuMargin = 1;
+
+ // The context menu event was generated from the keyboard, so show the context menu by the current selection.
+ Page* page = core(WEBKIT_WEB_VIEW(widget));
+ Frame* frame = page->focusController()->focusedOrMainFrame();
+ FrameView* view = frame->view();
+ if (!view)
+ return FALSE;
+
+ Position start = frame->selection()->selection().start();
+ Position end = frame->selection()->selection().end();
+
+ int rightAligned = FALSE;
+ IntPoint location;
+
+ if (!start.node() || !end.node()
+ || (frame->selection()->selection().isCaret() && !frame->selection()->selection().isContentEditable())) {
+ // If there's a focused elment, use its location.
+ if (Node* focusedNode = getFocusedNode(frame)) {
+ IntRect focusedNodeRect = focusedNode->getRect();
+ location = IntPoint(rightAligned ? focusedNodeRect.right() : focusedNodeRect.x(), focusedNodeRect.bottom());
+ } else
+ location = IntPoint(rightAligned ? view->contentsWidth() - contextMenuMargin : contextMenuMargin, contextMenuMargin);
+ } else {
+ RenderObject* renderer = start.node()->renderer();
+ if (!renderer)
+ return FALSE;
+
+ // Calculate the rect of the first line of the selection (cribbed from -[WebCoreFrameBridge firstRectForDOMRange:],
+ // now Frame::firstRectForRange(), which perhaps this should call).
+ int extraWidthToEndOfLine = 0;
+
+ InlineBox* startInlineBox;
+ int startCaretOffset;
+ start.getInlineBoxAndOffset(DOWNSTREAM, startInlineBox, startCaretOffset);
+ IntRect startCaretRect = renderer->localCaretRect(startInlineBox, startCaretOffset, &extraWidthToEndOfLine);
+ if (startCaretRect != IntRect())
+ startCaretRect = renderer->localToAbsoluteQuad(FloatRect(startCaretRect)).enclosingBoundingBox();
+
+ InlineBox* endInlineBox;
+ int endCaretOffset;
+ end.getInlineBoxAndOffset(UPSTREAM, endInlineBox, endCaretOffset);
+ IntRect endCaretRect = renderer->localCaretRect(endInlineBox, endCaretOffset);
+ if (endCaretRect != IntRect())
+ endCaretRect = renderer->localToAbsoluteQuad(FloatRect(endCaretRect)).enclosingBoundingBox();
+
+ IntRect firstRect;
+ if (startCaretRect.y() == endCaretRect.y())
+ firstRect = IntRect(MIN(startCaretRect.x(), endCaretRect.x()),
+ startCaretRect.y(),
+ abs(endCaretRect.x() - startCaretRect.x()),
+ MAX(startCaretRect.height(), endCaretRect.height()));
+ else
+ firstRect = IntRect(startCaretRect.x(),
+ startCaretRect.y(),
+ startCaretRect.width() + extraWidthToEndOfLine,
+ startCaretRect.height());
+
+ location = IntPoint(rightAligned ? firstRect.right() : firstRect.x(), firstRect.bottom());
+ }
+
+ // FIXME: The IntSize(0, -1) is a hack to get the hit-testing to result in the selected element.
+ // Ideally we'd have the position of a context menu event be separate from its target node.
+ location = view->contentsToWindow(location) + IntSize(0, -1);
+ if (location.y() < 0)
+ location.setY(contextMenuMargin);
+ else if (location.y() > view->height())
+ location.setY(view->height() - contextMenuMargin);
+ if (location.x() < 0)
+ location.setX(contextMenuMargin);
+ else if (location.x() > view->width())
+ location.setX(view->width() - contextMenuMargin);
+ IntPoint global(globalPointForClientPoint(gtk_widget_get_window(widget), location));
+
+ PlatformMouseEvent event(location, global, RightButton, MouseEventPressed, 0, false, false, false, false, gtk_get_current_event_time());
+
+ return webkit_web_view_forward_context_menu_event(WEBKIT_WEB_VIEW(widget), event);
+}
+
+#ifndef GTK_API_VERSION_2
+static void setHorizontalAdjustment(WebKitWebView* webView, GtkAdjustment* adjustment)
+{
+ if (!core(webView))
+ return;
+
+ webView->priv->horizontalAdjustment = adjustment;
+ FrameView* view = core(webkit_web_view_get_main_frame(webView))->view();
+ if (!view)
+ return;
+ view->setHorizontalAdjustment(adjustment);
+}
+
+static void setVerticalAdjustment(WebKitWebView* webView, GtkAdjustment* adjustment)
+{
+ if (!core(webView))
+ return;
+
+ webView->priv->verticalAdjustment = adjustment;
+ FrameView* view = core(webkit_web_view_get_main_frame(webView))->view();
+ if (!view)
+ return;
+ view->setVerticalAdjustment(adjustment);
+}
+
+static GtkAdjustment* getHorizontalAdjustment(WebKitWebView* webView)
+{
+ return webView->priv->horizontalAdjustment.get();
+}
+
+static GtkAdjustment* getVerticalAdjustment(WebKitWebView* webView)
+{
+ return webView->priv->verticalAdjustment.get();
+}
+
+static void setHorizontalScrollPolicy(WebKitWebView* webView, GtkScrollablePolicy policy)
+{
+ webView->priv->horizontalScrollingPolicy = policy;
+ gtk_widget_queue_resize(GTK_WIDGET(webView));
+}
+
+static void setVerticalScrollPolicy(WebKitWebView* webView, GtkScrollablePolicy policy)
+{
+ webView->priv->verticalScrollingPolicy = policy;
+ gtk_widget_queue_resize(GTK_WIDGET(webView));
+}
+
+static GtkScrollablePolicy getHorizontalScrollPolicy(WebKitWebView* webView)
+{
+ return webView->priv->horizontalScrollingPolicy;
+}
+
+static GtkScrollablePolicy getVerticalScrollPolicy(WebKitWebView* webView)
+{
+ return webView->priv->verticalScrollingPolicy;
+}
+
+#endif
+
+static void webkit_web_view_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
+
+ switch(prop_id) {
+ case PROP_TITLE:
+ g_value_set_string(value, webkit_web_view_get_title(webView));
+ break;
+ case PROP_URI:
+ g_value_set_string(value, webkit_web_view_get_uri(webView));
+ break;
+ case PROP_COPY_TARGET_LIST:
+ g_value_set_boxed(value, webkit_web_view_get_copy_target_list(webView));
+ break;
+ case PROP_PASTE_TARGET_LIST:
+ g_value_set_boxed(value, webkit_web_view_get_paste_target_list(webView));
+ break;
+ case PROP_EDITABLE:
+ g_value_set_boolean(value, webkit_web_view_get_editable(webView));
+ break;
+ case PROP_SETTINGS:
+ g_value_set_object(value, webkit_web_view_get_settings(webView));
+ break;
+ case PROP_WEB_INSPECTOR:
+ g_value_set_object(value, webkit_web_view_get_inspector(webView));
+ break;
+ case PROP_VIEWPORT_ATTRIBUTES:
+ g_value_set_object(value, webkit_web_view_get_viewport_attributes(webView));
+ break;
+ case PROP_WINDOW_FEATURES:
+ g_value_set_object(value, webkit_web_view_get_window_features(webView));
+ break;
+ case PROP_TRANSPARENT:
+ g_value_set_boolean(value, webkit_web_view_get_transparent(webView));
+ break;
+ case PROP_ZOOM_LEVEL:
+ g_value_set_float(value, webkit_web_view_get_zoom_level(webView));
+ break;
+ case PROP_FULL_CONTENT_ZOOM:
+ g_value_set_boolean(value, webkit_web_view_get_full_content_zoom(webView));
+ break;
+ case PROP_ENCODING:
+ g_value_set_string(value, webkit_web_view_get_encoding(webView));
+ break;
+ case PROP_CUSTOM_ENCODING:
+ g_value_set_string(value, webkit_web_view_get_custom_encoding(webView));
+ break;
+ case PROP_LOAD_STATUS:
+ g_value_set_enum(value, webkit_web_view_get_load_status(webView));
+ break;
+ case PROP_PROGRESS:
+ g_value_set_double(value, webkit_web_view_get_progress(webView));
+ break;
+ case PROP_ICON_URI:
+ g_value_set_string(value, webkit_web_view_get_icon_uri(webView));
+ break;
+ case PROP_IM_CONTEXT:
+ g_value_set_object(value, webkit_web_view_get_im_context(webView));
+ break;
+ case PROP_VIEW_MODE:
+ g_value_set_enum(value, webkit_web_view_get_view_mode(webView));
+ break;
+#ifndef GTK_API_VERSION_2
+ case PROP_HADJUSTMENT:
+ g_value_set_object(value, getHorizontalAdjustment(webView));
+ break;
+ case PROP_VADJUSTMENT:
+ g_value_set_object(value, getVerticalAdjustment(webView));
+ break;
+ case PROP_HSCROLL_POLICY:
+ g_value_set_enum(value, getHorizontalScrollPolicy(webView));
+ break;
+ case PROP_VSCROLL_POLICY:
+ g_value_set_enum(value, getVerticalScrollPolicy(webView));
+ break;
+#endif
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ }
+}
+
+static void webkit_web_view_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec *pspec)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
+
+ switch(prop_id) {
+ case PROP_EDITABLE:
+ webkit_web_view_set_editable(webView, g_value_get_boolean(value));
+ break;
+ case PROP_SETTINGS:
+ webkit_web_view_set_settings(webView, WEBKIT_WEB_SETTINGS(g_value_get_object(value)));
+ break;
+ case PROP_WINDOW_FEATURES:
+ webkit_web_view_set_window_features(webView, WEBKIT_WEB_WINDOW_FEATURES(g_value_get_object(value)));
+ break;
+ case PROP_TRANSPARENT:
+ webkit_web_view_set_transparent(webView, g_value_get_boolean(value));
+ break;
+ case PROP_ZOOM_LEVEL:
+ webkit_web_view_set_zoom_level(webView, g_value_get_float(value));
+ break;
+ case PROP_FULL_CONTENT_ZOOM:
+ webkit_web_view_set_full_content_zoom(webView, g_value_get_boolean(value));
+ break;
+ case PROP_CUSTOM_ENCODING:
+ webkit_web_view_set_custom_encoding(webView, g_value_get_string(value));
+ break;
+ case PROP_VIEW_MODE:
+ webkit_web_view_set_view_mode(webView, static_cast<WebKitWebViewViewMode>(g_value_get_enum(value)));
+ break;
+#ifndef GTK_API_VERSION_2
+ case PROP_HADJUSTMENT:
+ setHorizontalAdjustment(webView, static_cast<GtkAdjustment*>(g_value_get_object(value)));
+ break;
+ case PROP_VADJUSTMENT:
+ setVerticalAdjustment(webView, static_cast<GtkAdjustment*>(g_value_get_object(value)));
+ break;
+ case PROP_HSCROLL_POLICY:
+ setHorizontalScrollPolicy(webView, static_cast<GtkScrollablePolicy>(g_value_get_enum(value)));
+ break;
+ case PROP_VSCROLL_POLICY:
+ setVerticalScrollPolicy(webView, static_cast<GtkScrollablePolicy>(g_value_get_enum(value)));
+ break;
+#endif
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ }
+}
+
+static bool shouldCoalesce(const IntRect& rect, const Vector<IntRect>& rects)
+{
+ const unsigned int cRectThreshold = 10;
+ const float cWastedSpaceThreshold = 0.75f;
+ bool useUnionedRect = (rects.size() <= 1) || (rects.size() > cRectThreshold);
+ if (useUnionedRect)
+ return true;
+ // Attempt to guess whether or not we should use the unioned rect or the individual rects.
+ // We do this by computing the percentage of "wasted space" in the union. If that wasted space
+ // is too large, then we will do individual rect painting instead.
+ float unionPixels = (rect.width() * rect.height());
+ float singlePixels = 0;
+ for (size_t i = 0; i < rects.size(); ++i)
+ singlePixels += rects[i].width() * rects[i].height();
+ float wastedSpace = 1 - (singlePixels / unionPixels);
+ if (wastedSpace <= cWastedSpaceThreshold)
+ useUnionedRect = true;
+ return useUnionedRect;
+}
+
+static void paintWebView(Frame* frame, gboolean transparent, GraphicsContext& context, const IntRect& clipRect, const Vector<IntRect>& rects)
+{
+ bool coalesce = true;
+
+ if (rects.size() > 0)
+ coalesce = shouldCoalesce(clipRect, rects);
+
+ if (coalesce) {
+ context.clip(clipRect);
+ if (transparent)
+ context.clearRect(clipRect);
+ frame->view()->paint(&context, clipRect);
+ } else {
+ for (size_t i = 0; i < rects.size(); i++) {
+ IntRect rect = rects[i];
+ context.save();
+ context.clip(rect);
+ if (transparent)
+ context.clearRect(rect);
+ frame->view()->paint(&context, rect);
+ context.restore();
+ }
+ }
+
+ context.save();
+ context.clip(clipRect);
+ frame->page()->inspectorController()->drawNodeHighlight(context);
+ context.restore();
+}
+#ifdef GTK_API_VERSION_2
+static gboolean webkit_web_view_expose_event(GtkWidget* widget, GdkEventExpose* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ Frame* frame = core(webView)->mainFrame();
+ if (frame->contentRenderer() && frame->view()) {
+ frame->view()->updateLayoutAndStyleIfNeededRecursive();
+
+ cairo_t* cr = gdk_cairo_create(event->window);
+ GraphicsContext ctx(cr);
+ cairo_destroy(cr);
+ ctx.setGdkExposeEvent(event);
+
+ int rectCount;
+ GOwnPtr<GdkRectangle> rects;
+ gdk_region_get_rectangles(event->region, &rects.outPtr(), &rectCount);
+ Vector<IntRect> paintRects;
+ for (int i = 0; i < rectCount; i++)
+ paintRects.append(IntRect(rects.get()[i]));
+
+ paintWebView(frame, priv->transparent, ctx, static_cast<IntRect>(event->area), paintRects);
+ }
+
+ return FALSE;
+}
+#else
+static gboolean webkit_web_view_draw(GtkWidget* widget, cairo_t* cr)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+ GdkRectangle clipRect;
+
+ if (!gdk_cairo_get_clip_rectangle(cr, &clipRect))
+ return FALSE;
+
+ Frame* frame = core(webView)->mainFrame();
+ if (frame->contentRenderer() && frame->view()) {
+ GraphicsContext ctx(cr);
+ IntRect rect = clipRect;
+ cairo_rectangle_list_t* rectList = cairo_copy_clip_rectangle_list(cr);
+
+ frame->view()->updateLayoutAndStyleIfNeededRecursive();
+
+ Vector<IntRect> rects;
+ if (!rectList->status && rectList->num_rectangles > 0) {
+ for (int i = 0; i < rectList->num_rectangles; i++)
+ rects.append(enclosingIntRect(FloatRect(rectList->rectangles[i])));
+ }
+ paintWebView(frame, priv->transparent, ctx, rect, rects);
+
+ cairo_rectangle_list_destroy(rectList);
+ }
+
+ return FALSE;
+}
+#endif // GTK_API_VERSION_2
+
+static gboolean webkit_web_view_key_press_event(GtkWidget* widget, GdkEventKey* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ PlatformKeyboardEvent keyboardEvent(event);
+
+ if (!frame->view())
+ return FALSE;
+
+ if (frame->eventHandler()->keyEvent(keyboardEvent))
+ return TRUE;
+
+ /* Chain up to our parent class for binding activation */
+ return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->key_press_event(widget, event);
+}
+
+static gboolean webkit_web_view_key_release_event(GtkWidget* widget, GdkEventKey* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ // GTK+ IM contexts often require us to filter key release events, which
+ // WebCore does not do by default, so we filter the event here. We only block
+ // the event if we don't have a pending composition, because that means we
+ // are using a context like 'simple' which marks every keystroke as filtered.
+ WebKit::EditorClient* client = static_cast<WebKit::EditorClient*>(core(webView)->editorClient());
+ if (gtk_im_context_filter_keypress(webView->priv->imContext.get(), event) && !client->hasPendingComposition())
+ return TRUE;
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ if (!frame->view())
+ return FALSE;
+
+ PlatformKeyboardEvent keyboardEvent(event);
+ if (frame->eventHandler()->keyEvent(keyboardEvent))
+ return TRUE;
+
+ /* Chain up to our parent class for binding activation */
+ return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->key_release_event(widget, event);
+}
+
+static guint32 getEventTime(GdkEvent* event)
+{
+ guint32 time = gdk_event_get_time(event);
+ if (time)
+ return time;
+
+ // Real events always have a non-zero time, but events synthesized
+ // by the DRT do not and we must calculate a time manually. This time
+ // is not calculated in the DRT, because GTK+ does not work well with
+ // anything other than GDK_CURRENT_TIME on synthesized events.
+ GTimeVal timeValue;
+ g_get_current_time(&timeValue);
+ return (timeValue.tv_sec * 1000) + (timeValue.tv_usec / 1000);
+}
+
+static gboolean webkit_web_view_button_press_event(GtkWidget* widget, GdkEventButton* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ // FIXME: need to keep track of subframe focus for key events
+ gtk_widget_grab_focus(widget);
+
+ // For double and triple clicks GDK sends both a normal button press event
+ // and a specific type (like GDK_2BUTTON_PRESS). If we detect a special press
+ // coming up, ignore this event as it certainly generated the double or triple
+ // click. The consequence of not eating this event is two DOM button press events
+ // are generated.
+ GOwnPtr<GdkEvent> nextEvent(gdk_event_peek());
+ if (nextEvent && (nextEvent->any.type == GDK_2BUTTON_PRESS || nextEvent->any.type == GDK_3BUTTON_PRESS))
+ return TRUE;
+
+ gint doubleClickDistance = 250;
+ gint doubleClickTime = 5;
+ GtkSettings* settings = gtk_settings_get_for_screen(gtk_widget_get_screen(widget));
+ g_object_get(settings,
+ "gtk-double-click-distance", &doubleClickDistance,
+ "gtk-double-click-time", &doubleClickTime, NULL);
+
+ // GTK+ only counts up to triple clicks, but WebCore wants to know about
+ // quadruple clicks, quintuple clicks, ad infinitum. Here, we replicate the
+ // GDK logic for counting clicks.
+ guint32 eventTime = getEventTime(reinterpret_cast<GdkEvent*>(event));
+ if ((event->type == GDK_2BUTTON_PRESS || event->type == GDK_3BUTTON_PRESS)
+ || ((abs(event->x - priv->previousClickPoint.x()) < doubleClickDistance)
+ && (abs(event->y - priv->previousClickPoint.y()) < doubleClickDistance)
+ && (eventTime - priv->previousClickTime < static_cast<guint>(doubleClickTime))
+ && (event->button == priv->previousClickButton)))
+ priv->currentClickCount++;
+ else
+ priv->currentClickCount = 1;
+
+ PlatformMouseEvent platformEvent(event);
+ platformEvent.setClickCount(priv->currentClickCount);
+ priv->previousClickPoint = platformEvent.pos();
+ priv->previousClickButton = event->button;
+ priv->previousClickTime = eventTime;
+
+ if (event->button == 3)
+ return webkit_web_view_forward_context_menu_event(webView, PlatformMouseEvent(event));
+
+ Frame* frame = core(webView)->mainFrame();
+ if (!frame->view())
+ return FALSE;
+
+ gboolean result = frame->eventHandler()->handleMousePressEvent(platformEvent);
+ // Handle the IM context when a mouse press fires
+ static_cast<WebKit::EditorClient*>(core(webView)->editorClient())->handleInputMethodMousePress();
+
+#if PLATFORM(X11)
+ /* Copy selection to the X11 selection clipboard */
+ if (event->button == 2) {
+ bool primary = webView->priv->usePrimaryForPaste;
+ webView->priv->usePrimaryForPaste = true;
+
+ Editor* editor = webView->priv->corePage->focusController()->focusedOrMainFrame()->editor();
+ result = result || editor->canPaste() || editor->canDHTMLPaste();
+ editor->paste();
+
+ webView->priv->usePrimaryForPaste = primary;
+ }
+#endif
+
+ return result;
+}
+
+static gboolean webkit_web_view_button_release_event(GtkWidget* widget, GdkEventButton* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ Frame* focusedFrame = core(webView)->focusController()->focusedFrame();
+
+ if (focusedFrame && focusedFrame->editor()->canEdit()) {
+#ifdef MAEMO_CHANGES
+ WebKitWebViewPrivate* priv = webView->priv;
+ hildon_gtk_im_context_filter_event(priv->imContext.get(), (GdkEvent*)event);
+#endif
+ }
+
+ Frame* mainFrame = core(webView)->mainFrame();
+ if (mainFrame->view())
+ mainFrame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event));
+
+ /* We always return FALSE here because WebKit can, for the same click, decide
+ * to not handle press-event but handle release-event, which can totally confuse
+ * some GTK+ containers when there are no other events in between. This way we
+ * guarantee that this case never happens, and that if press-event goes through
+ * release-event also goes through.
+ */
+
+ return FALSE;
+}
+
+static gboolean webkit_web_view_motion_event(GtkWidget* widget, GdkEventMotion* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ Frame* frame = core(webView)->mainFrame();
+ if (!frame->view())
+ return FALSE;
+
+ return frame->eventHandler()->mouseMoved(PlatformMouseEvent(event));
+}
+
+static gboolean webkit_web_view_scroll_event(GtkWidget* widget, GdkEventScroll* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ Frame* frame = core(webView)->mainFrame();
+ if (!frame->view())
+ return FALSE;
+
+ PlatformWheelEvent wheelEvent(event);
+ return frame->eventHandler()->handleWheelEvent(wheelEvent);
+}
+
+#ifdef GTK_API_VERSION_2
+static void webkit_web_view_size_request(GtkWidget* widget, GtkRequisition* requisition)
+{
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(widget);
+ Frame* coreFrame = core(webkit_web_view_get_main_frame(web_view));
+ if (!coreFrame)
+ return;
+
+ FrameView* view = coreFrame->view();
+ if (!view)
+ return;
+
+ requisition->width = view->contentsWidth();
+ requisition->height = view->contentsHeight();
+}
+#else
+static void webkit_web_view_get_preferred_width(GtkWidget* widget, gint* minimum, gint* natural)
+{
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(widget);
+ Frame* coreFrame = core(webkit_web_view_get_main_frame(web_view));
+ if (!coreFrame)
+ return;
+
+ FrameView* view = coreFrame->view();
+ if (!view)
+ return;
+
+ *minimum = *natural = view->contentsWidth();
+}
+
+static void webkit_web_view_get_preferred_height(GtkWidget* widget, gint* minimum, gint* natural)
+{
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(widget);
+ Frame* coreFrame = core(webkit_web_view_get_main_frame(web_view));
+ if (!coreFrame)
+ return;
+
+ FrameView* view = coreFrame->view();
+ if (!view)
+ return;
+
+ *minimum = *natural = view->contentsHeight();
+}
+#endif
+
+static void webkit_web_view_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
+{
+ GTK_WIDGET_CLASS(webkit_web_view_parent_class)->size_allocate(widget,allocation);
+
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ Frame* frame = core(webView)->mainFrame();
+ if (!frame->view())
+ return;
+
+ frame->view()->resize(allocation->width, allocation->height);
+}
+
+static void webkit_web_view_grab_focus(GtkWidget* widget)
+{
+
+ if (gtk_widget_is_sensitive(widget)) {
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ FocusController* focusController = core(webView)->focusController();
+
+ focusController->setActive(true);
+
+ if (focusController->focusedFrame())
+ focusController->setFocused(true);
+ else
+ focusController->setFocusedFrame(core(webView)->mainFrame());
+ }
+
+ return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->grab_focus(widget);
+}
+
+static gboolean webkit_web_view_focus_in_event(GtkWidget* widget, GdkEventFocus* event)
+{
+ // TODO: Improve focus handling as suggested in
+ // http://bugs.webkit.org/show_bug.cgi?id=16910
+ GtkWidget* toplevel = gtk_widget_get_toplevel(widget);
+ if (gtk_widget_is_toplevel(toplevel) && gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ FocusController* focusController = core(webView)->focusController();
+
+ focusController->setActive(true);
+
+ if (focusController->focusedFrame())
+ focusController->setFocused(true);
+ else
+ focusController->setFocusedFrame(core(webView)->mainFrame());
+
+ if (focusController->focusedFrame()->editor()->canEdit())
+ gtk_im_context_focus_in(webView->priv->imContext.get());
+ }
+ return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->focus_in_event(widget, event);
+}
+
+static gboolean webkit_web_view_focus_out_event(GtkWidget* widget, GdkEventFocus* event)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ // We may hit this code while destroying the widget, and we might
+ // no longer have a page, then.
+ Page* page = core(webView);
+ if (page) {
+ page->focusController()->setActive(false);
+ page->focusController()->setFocused(false);
+ }
+
+ if (webView->priv->imContext)
+ gtk_im_context_focus_out(webView->priv->imContext.get());
+
+ return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->focus_out_event(widget, event);
+}
+
+static void webkit_web_view_realize(GtkWidget* widget)
+{
+ gtk_widget_set_realized(widget, TRUE);
+
+ GtkAllocation allocation;
+#if GTK_CHECK_VERSION(2, 18, 0)
+ gtk_widget_get_allocation(widget, &allocation);
+#else
+ allocation = widget->allocation;
+#endif
+
+ GdkWindowAttr attributes;
+ attributes.window_type = GDK_WINDOW_CHILD;
+ attributes.x = allocation.x;
+ attributes.y = allocation.y;
+ attributes.width = allocation.width;
+ attributes.height = allocation.height;
+ attributes.wclass = GDK_INPUT_OUTPUT;
+ attributes.visual = gtk_widget_get_visual(widget);
+#ifdef GTK_API_VERSION_2
+ attributes.colormap = gtk_widget_get_colormap(widget);
+#endif
+ attributes.event_mask = GDK_VISIBILITY_NOTIFY_MASK
+ | GDK_EXPOSURE_MASK
+ | GDK_BUTTON_PRESS_MASK
+ | GDK_BUTTON_RELEASE_MASK
+ | GDK_POINTER_MOTION_MASK
+ | GDK_KEY_PRESS_MASK
+ | GDK_KEY_RELEASE_MASK
+ | GDK_BUTTON_MOTION_MASK
+ | GDK_BUTTON1_MOTION_MASK
+ | GDK_BUTTON2_MOTION_MASK
+ | GDK_BUTTON3_MOTION_MASK;
+
+ gint attributes_mask = GDK_WA_X | GDK_WA_Y | GDK_WA_VISUAL;
+#ifdef GTK_API_VERSION_2
+ attributes_mask |= GDK_WA_COLORMAP;
+#endif
+ GdkWindow* window = gdk_window_new(gtk_widget_get_parent_window(widget), &attributes, attributes_mask);
+ gtk_widget_set_window(widget, window);
+ gdk_window_set_user_data(window, widget);
+
+#ifdef GTK_API_VERSION_2
+#if GTK_CHECK_VERSION(2, 20, 0)
+ gtk_widget_style_attach(widget);
+#else
+ widget->style = gtk_style_attach(gtk_widget_get_style(widget), window);
+#endif
+ gtk_style_set_background(gtk_widget_get_style(widget), window, GTK_STATE_NORMAL);
+#else
+ gtk_style_context_set_background(gtk_widget_get_style_context(widget), window);
+#endif
+
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+ gtk_im_context_set_client_window(priv->imContext.get(), window);
+}
+
+#ifdef GTK_API_VERSION_2
+static void webkit_web_view_set_scroll_adjustments(WebKitWebView* webView, GtkAdjustment* hadj, GtkAdjustment* vadj)
+{
+ if (!core(webView))
+ return;
+
+ webView->priv->horizontalAdjustment = hadj;
+ webView->priv->verticalAdjustment = vadj;
+
+ FrameView* view = core(webkit_web_view_get_main_frame(webView))->view();
+ if (!view)
+ return;
+ view->setGtkAdjustments(hadj, vadj);
+}
+#endif
+
+static void webkit_web_view_container_add(GtkContainer* container, GtkWidget* widget)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(container);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ priv->children.add(widget);
+ gtk_widget_set_parent(widget, GTK_WIDGET(container));
+}
+
+static void webkit_web_view_container_remove(GtkContainer* container, GtkWidget* widget)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(container);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (priv->children.contains(widget)) {
+ gtk_widget_unparent(widget);
+ priv->children.remove(widget);
+ }
+}
+
+static void webkit_web_view_container_forall(GtkContainer* container, gboolean, GtkCallback callback, gpointer callbackData)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(container);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ HashSet<GtkWidget*> children = priv->children;
+ HashSet<GtkWidget*>::const_iterator end = children.end();
+ for (HashSet<GtkWidget*>::const_iterator current = children.begin(); current != end; ++current)
+ (*callback)(*current, callbackData);
+}
+
+static WebKitWebView* webkit_web_view_real_create_web_view(WebKitWebView*, WebKitWebFrame*)
+{
+ return 0;
+}
+
+static gboolean webkit_web_view_real_web_view_ready(WebKitWebView*)
+{
+ return FALSE;
+}
+
+static gboolean webkit_web_view_real_close_web_view(WebKitWebView*)
+{
+ return FALSE;
+}
+
+static WebKitNavigationResponse webkit_web_view_real_navigation_requested(WebKitWebView*, WebKitWebFrame*, WebKitNetworkRequest*)
+{
+ return WEBKIT_NAVIGATION_RESPONSE_ACCEPT;
+}
+
+static void webkit_web_view_real_window_object_cleared(WebKitWebView*, WebKitWebFrame*, JSGlobalContextRef context, JSObjectRef window_object)
+{
+ notImplemented();
+}
+
+static gchar* webkit_web_view_real_choose_file(WebKitWebView*, WebKitWebFrame*, const gchar* old_name)
+{
+ notImplemented();
+ return g_strdup(old_name);
+}
+
+typedef enum {
+ WEBKIT_SCRIPT_DIALOG_ALERT,
+ WEBKIT_SCRIPT_DIALOG_CONFIRM,
+ WEBKIT_SCRIPT_DIALOG_PROMPT
+ } WebKitScriptDialogType;
+
+static gboolean webkit_web_view_script_dialog(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, WebKitScriptDialogType type, const gchar* defaultValue, gchar** value)
+{
+ GtkMessageType messageType;
+ GtkButtonsType buttons;
+ gint defaultResponse;
+ GtkWidget* window;
+ GtkWidget* dialog;
+ GtkWidget* entry = 0;
+ gboolean didConfirm = FALSE;
+
+ switch (type) {
+ case WEBKIT_SCRIPT_DIALOG_ALERT:
+ messageType = GTK_MESSAGE_WARNING;
+ buttons = GTK_BUTTONS_CLOSE;
+ defaultResponse = GTK_RESPONSE_CLOSE;
+ break;
+ case WEBKIT_SCRIPT_DIALOG_CONFIRM:
+ messageType = GTK_MESSAGE_QUESTION;
+ buttons = GTK_BUTTONS_OK_CANCEL;
+ defaultResponse = GTK_RESPONSE_OK;
+ break;
+ case WEBKIT_SCRIPT_DIALOG_PROMPT:
+ messageType = GTK_MESSAGE_QUESTION;
+ buttons = GTK_BUTTONS_OK_CANCEL;
+ defaultResponse = GTK_RESPONSE_OK;
+ break;
+ default:
+ g_warning("Unknown value for WebKitScriptDialogType.");
+ return FALSE;
+ }
+
+ window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
+ dialog = gtk_message_dialog_new(gtk_widget_is_toplevel(window) ? GTK_WINDOW(window) : 0, GTK_DIALOG_DESTROY_WITH_PARENT, messageType, buttons, "%s", message);
+ gchar* title = g_strconcat("JavaScript - ", webkit_web_frame_get_uri(frame), NULL);
+ gtk_window_set_title(GTK_WINDOW(dialog), title);
+ g_free(title);
+
+ if (type == WEBKIT_SCRIPT_DIALOG_PROMPT) {
+ entry = gtk_entry_new();
+ gtk_entry_set_text(GTK_ENTRY(entry), defaultValue);
+ gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(GTK_DIALOG(dialog))), entry);
+ gtk_entry_set_activates_default(GTK_ENTRY(entry), TRUE);
+ gtk_widget_show(entry);
+ }
+
+ gtk_dialog_set_default_response(GTK_DIALOG(dialog), defaultResponse);
+ gint response = gtk_dialog_run(GTK_DIALOG(dialog));
+
+ switch (response) {
+ case GTK_RESPONSE_OK:
+ didConfirm = TRUE;
+ if (entry)
+ *value = g_strdup(gtk_entry_get_text(GTK_ENTRY(entry)));
+ break;
+ case GTK_RESPONSE_CANCEL:
+ didConfirm = FALSE;
+ break;
+
+ }
+ gtk_widget_destroy(GTK_WIDGET(dialog));
+ return didConfirm;
+}
+
+static gboolean webkit_web_view_real_script_alert(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message)
+{
+ webkit_web_view_script_dialog(webView, frame, message, WEBKIT_SCRIPT_DIALOG_ALERT, 0, 0);
+ return TRUE;
+}
+
+static gboolean webkit_web_view_real_script_confirm(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, gboolean* didConfirm)
+{
+ *didConfirm = webkit_web_view_script_dialog(webView, frame, message, WEBKIT_SCRIPT_DIALOG_CONFIRM, 0, 0);
+ return TRUE;
+}
+
+static gboolean webkit_web_view_real_script_prompt(WebKitWebView* webView, WebKitWebFrame* frame, const gchar* message, const gchar* defaultValue, gchar** value)
+{
+ if (!webkit_web_view_script_dialog(webView, frame, message, WEBKIT_SCRIPT_DIALOG_PROMPT, defaultValue, value))
+ *value = NULL;
+ return TRUE;
+}
+
+static gboolean webkit_web_view_real_console_message(WebKitWebView* webView, const gchar* message, unsigned int line, const gchar* sourceId)
+{
+ g_message("console message: %s @%d: %s\n", sourceId, line, message);
+ return TRUE;
+}
+
+static void webkit_web_view_real_select_all(WebKitWebView* webView)
+{
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ frame->editor()->command("SelectAll").execute();
+}
+
+static void webkit_web_view_real_cut_clipboard(WebKitWebView* webView)
+{
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ frame->editor()->command("Cut").execute();
+}
+
+static void webkit_web_view_real_copy_clipboard(WebKitWebView* webView)
+{
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ frame->editor()->command("Copy").execute();
+}
+
+static void webkit_web_view_real_undo(WebKitWebView* webView)
+{
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ frame->editor()->command("Undo").execute();
+}
+
+static void webkit_web_view_real_redo(WebKitWebView* webView)
+{
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ frame->editor()->command("Redo").execute();
+}
+
+static gboolean webkit_web_view_real_move_cursor (WebKitWebView* webView, GtkMovementStep step, gint count)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW (webView), FALSE);
+ g_return_val_if_fail(step == GTK_MOVEMENT_VISUAL_POSITIONS ||
+ step == GTK_MOVEMENT_DISPLAY_LINES ||
+ step == GTK_MOVEMENT_PAGES ||
+ step == GTK_MOVEMENT_BUFFER_ENDS, FALSE);
+ g_return_val_if_fail(count == 1 || count == -1, FALSE);
+
+ ScrollDirection direction;
+ ScrollGranularity granularity;
+
+ switch (step) {
+ case GTK_MOVEMENT_DISPLAY_LINES:
+ granularity = ScrollByLine;
+ if (count == 1)
+ direction = ScrollDown;
+ else
+ direction = ScrollUp;
+ break;
+ case GTK_MOVEMENT_VISUAL_POSITIONS:
+ granularity = ScrollByLine;
+ if (count == 1)
+ direction = ScrollRight;
+ else
+ direction = ScrollLeft;
+ break;
+ case GTK_MOVEMENT_PAGES:
+ granularity = ScrollByPage;
+ if (count == 1)
+ direction = ScrollDown;
+ else
+ direction = ScrollUp;
+ break;
+ case GTK_MOVEMENT_BUFFER_ENDS:
+ granularity = ScrollByDocument;
+ if (count == 1)
+ direction = ScrollDown;
+ else
+ direction = ScrollUp;
+ break;
+ default:
+ g_assert_not_reached();
+ return false;
+ }
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ if (!frame->eventHandler()->scrollOverflow(direction, granularity))
+ frame->view()->scroll(direction, granularity);
+
+ return true;
+}
+
+static void webkit_web_view_real_paste_clipboard(WebKitWebView* webView)
+{
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ frame->editor()->command("Paste").execute();
+}
+
+static gboolean webkit_web_view_real_should_allow_editing_action(WebKitWebView*)
+{
+ return TRUE;
+}
+
+static void webkit_web_view_dispose(GObject* object)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(object);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ priv->disposing = TRUE;
+
+ // These smart pointers are cleared manually, because some cleanup operations are
+ // very sensitive to their value. We may crash if these are done in the wrong order.
+ priv->horizontalAdjustment.clear();
+ priv->verticalAdjustment.clear();
+ priv->backForwardList.clear();
+
+ if (priv->corePage) {
+ webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(object));
+ core(priv->mainFrame)->loader()->detachFromParent();
+ delete priv->corePage;
+ priv->corePage = 0;
+ }
+
+ if (priv->webSettings) {
+ g_signal_handlers_disconnect_by_func(priv->webSettings.get(), (gpointer)webkit_web_view_settings_notify, webView);
+ priv->webSettings.clear();
+ }
+
+ if (priv->currentMenu) {
+ gtk_widget_destroy(GTK_WIDGET(priv->currentMenu));
+ priv->currentMenu = 0;
+ }
+
+ priv->webInspector.clear();
+ priv->viewportAttributes.clear();
+ priv->webWindowFeatures.clear();
+ priv->mainResource.clear();
+ priv->subResources.clear();
+
+ HashMap<GdkDragContext*, DroppingContext*>::iterator endDroppingContexts = priv->droppingContexts.end();
+ for (HashMap<GdkDragContext*, DroppingContext*>::iterator iter = priv->droppingContexts.begin(); iter != endDroppingContexts; ++iter)
+ delete (iter->second);
+ priv->droppingContexts.clear();
+
+ G_OBJECT_CLASS(webkit_web_view_parent_class)->dispose(object);
+}
+
+static void webkit_web_view_finalize(GObject* object)
+{
+ // We need to manually call the destructor here, since this object's memory is managed
+ // by GLib. This calls all C++ members' destructors and prevents memory leaks.
+ WEBKIT_WEB_VIEW(object)->priv->~WebKitWebViewPrivate();
+ G_OBJECT_CLASS(webkit_web_view_parent_class)->finalize(object);
+}
+
+static gboolean webkit_signal_accumulator_object_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy)
+{
+ gpointer newWebView = g_value_get_object(handlerReturn);
+ g_value_set_object(returnAccu, newWebView);
+
+ // Continue if we don't have a newWebView
+ return !newWebView;
+}
+
+static gboolean webkit_navigation_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy)
+{
+ WebKitNavigationResponse navigationResponse = (WebKitNavigationResponse)g_value_get_enum(handlerReturn);
+ g_value_set_enum(returnAccu, navigationResponse);
+
+ if (navigationResponse != WEBKIT_NAVIGATION_RESPONSE_ACCEPT)
+ return FALSE;
+
+ return TRUE;
+}
+
+static AtkObject* webkit_web_view_get_accessible(GtkWidget* widget)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ if (!core(webView))
+ return 0;
+
+ AXObjectCache::enableAccessibility();
+
+ Frame* coreFrame = core(webView)->mainFrame();
+ if (!coreFrame)
+ return 0;
+
+ Document* doc = coreFrame->document();
+ if (!doc)
+ return 0;
+
+ AccessibilityObject* rootAccessible = doc->axObjectCache()->rootObject();
+ if (!rootAccessible)
+ return 0;
+
+ // We need to return the root accessibility object's first child
+ // to get to the actual ATK Object associated with the web view.
+ // See https://bugs.webkit.org/show_bug.cgi?id=51932
+ AtkObject* axRoot = rootAccessible->wrapper();
+ if (!axRoot || !ATK_IS_OBJECT(axRoot))
+ return 0;
+
+ AtkObject* axWebView = atk_object_ref_accessible_child(ATK_OBJECT(axRoot), 0);
+ if (!axWebView || !ATK_IS_OBJECT(axWebView))
+ return 0;
+
+ // We don't want the extra reference returned by ref_accessible_child.
+ g_object_unref(axWebView);
+ return axWebView;
+}
+
+static gdouble webViewGetDPI(WebKitWebView* webView)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+ WebKitWebSettings* webSettings = priv->webSettings.get();
+ gboolean enforce96DPI;
+ g_object_get(webSettings, "enforce-96-dpi", &enforce96DPI, NULL);
+ if (enforce96DPI)
+ return 96.0;
+
+ gdouble DPI = defaultDPI;
+ GdkScreen* screen = gtk_widget_has_screen(GTK_WIDGET(webView)) ? gtk_widget_get_screen(GTK_WIDGET(webView)) : gdk_screen_get_default();
+ if (screen) {
+ DPI = gdk_screen_get_resolution(screen);
+ // gdk_screen_get_resolution() returns -1 when no DPI is set.
+ if (DPI == -1)
+ DPI = defaultDPI;
+ }
+ ASSERT(DPI > 0);
+ return DPI;
+}
+
+static void webkit_web_view_screen_changed(GtkWidget* widget, GdkScreen* previousScreen)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (priv->disposing)
+ return;
+
+ WebKitWebSettings* webSettings = priv->webSettings.get();
+ Settings* settings = core(webView)->settings();
+ gdouble DPI = webViewGetDPI(webView);
+
+ guint defaultFontSize, defaultMonospaceFontSize, minimumFontSize, minimumLogicalFontSize;
+
+ g_object_get(webSettings,
+ "default-font-size", &defaultFontSize,
+ "default-monospace-font-size", &defaultMonospaceFontSize,
+ "minimum-font-size", &minimumFontSize,
+ "minimum-logical-font-size", &minimumLogicalFontSize,
+ NULL);
+
+ settings->setDefaultFontSize(defaultFontSize / 72.0 * DPI);
+ settings->setDefaultFixedFontSize(defaultMonospaceFontSize / 72.0 * DPI);
+ settings->setMinimumFontSize(minimumFontSize / 72.0 * DPI);
+ settings->setMinimumLogicalFontSize(minimumLogicalFontSize / 72.0 * DPI);
+}
+
+static IntPoint globalPointForClientPoint(GdkWindow* window, const IntPoint& clientPoint)
+{
+ int x, y;
+ gdk_window_get_origin(window, &x, &y);
+ return clientPoint + IntSize(x, y);
+}
+
+
+static void webkit_web_view_drag_end(GtkWidget* widget, GdkDragContext* context)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ // This might happen if a drag is still in progress after a WebKitWebView
+ // is disposed and before it is finalized.
+ if (!priv->draggingDataObjects.contains(context))
+ return;
+
+ priv->draggingDataObjects.remove(context);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ if (!frame)
+ return;
+
+ GOwnPtr<GdkEvent> event(gdk_event_new(GDK_BUTTON_RELEASE));
+ int x, y, xRoot, yRoot;
+ GdkModifierType modifiers = static_cast<GdkModifierType>(0);
+#ifdef GTK_API_VERSION_2
+ GdkDisplay* display = gdk_display_get_default();
+ gdk_display_get_pointer(display, 0, &xRoot, &yRoot, &modifiers);
+ event->button.window = gdk_display_get_window_at_pointer(display, &x, &y);
+#else
+ GdkDevice* device = gdk_drag_context_get_device(context);
+ event->button.window = gdk_device_get_window_at_position(device, &x, &y);
+ gdk_device_get_position(device, 0, &xRoot, &yRoot);
+#endif
+
+ if (event->button.window)
+ g_object_ref(event->button.window);
+ event->button.x = x;
+ event->button.y = y;
+ event->button.x_root = xRoot;
+ event->button.y_root = yRoot;
+ event->button.state = modifiers;
+
+ PlatformMouseEvent platformEvent(&event->button);
+ frame->eventHandler()->dragSourceEndedAt(platformEvent, gdkDragActionToDragOperation(gdk_drag_context_get_selected_action(context)));
+}
+
+static void webkit_web_view_drag_data_get(GtkWidget* widget, GdkDragContext* context, GtkSelectionData* selectionData, guint info, guint)
+{
+ WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW(widget)->priv;
+
+ // This might happen if a drag is still in progress after a WebKitWebView
+ // is diposed and before it is finalized.
+ if (!priv->draggingDataObjects.contains(context))
+ return;
+
+ pasteboardHelperInstance()->fillSelectionData(selectionData, info, priv->draggingDataObjects.get(context).get());
+}
+
+static gboolean doDragLeaveLater(DroppingContext* context)
+{
+ WebKitWebView* webView = context->webView;
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (!priv->droppingContexts.contains(context->gdkContext))
+ return FALSE;
+
+ // If the view doesn't know about the drag yet (there are still pending data)
+ // requests, don't update it with information about the drag.
+ if (context->pendingDataRequests)
+ return FALSE;
+
+ // Don't call dragExited if we have just received a drag-drop signal. This
+ // happens in the case of a successful drop onto the view.
+ if (!context->dropHappened) {
+ const IntPoint& position = context->lastMotionPosition;
+ DragData dragData(context->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(GTK_WIDGET(webView)), position), DragOperationNone);
+ core(webView)->dragController()->dragExited(&dragData);
+ }
+
+ core(webView)->dragController()->dragEnded();
+ priv->droppingContexts.remove(context->gdkContext);
+ delete context;
+ return FALSE;
+}
+
+static void webkit_web_view_drag_leave(GtkWidget* widget, GdkDragContext* context, guint time)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (!priv->droppingContexts.contains(context))
+ return;
+
+ // During a drop GTK+ will fire a drag-leave signal right before firing
+ // the drag-drop signal. We want the actions for drag-leave to happen after
+ // those for drag-drop, so schedule them to happen asynchronously here.
+ g_timeout_add(0, reinterpret_cast<GSourceFunc>(doDragLeaveLater), priv->droppingContexts.get(context));
+}
+
+static gboolean webkit_web_view_drag_motion(GtkWidget* widget, GdkDragContext* context, gint x, gint y, guint time)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ DroppingContext* droppingContext = 0;
+ IntPoint position = IntPoint(x, y);
+ if (!priv->droppingContexts.contains(context)) {
+ droppingContext = new DroppingContext;
+ droppingContext->webView = webView;
+ droppingContext->gdkContext = context;
+ droppingContext->dataObject = WebCore::DataObjectGtk::create();
+ droppingContext->dropHappened = false;
+ droppingContext->lastMotionPosition = position;
+ priv->droppingContexts.set(context, droppingContext);
+
+ Vector<GdkAtom> acceptableTargets(pasteboardHelperInstance()->dropAtomsForContext(widget, context));
+ droppingContext->pendingDataRequests = acceptableTargets.size();
+ for (size_t i = 0; i < acceptableTargets.size(); i++)
+ gtk_drag_get_data(widget, context, acceptableTargets.at(i), time);
+ } else {
+ droppingContext = priv->droppingContexts.get(context);
+ droppingContext->lastMotionPosition = position;
+ }
+
+ // Don't send any drag information to WebCore until we've retrieved all
+ // the data for this drag operation. Otherwise we'd have to block to wait
+ // for the drag's data.
+ ASSERT(droppingContext);
+ if (droppingContext->pendingDataRequests > 0)
+ return TRUE;
+
+ DragData dragData(droppingContext->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(widget), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context)));
+ DragOperation operation = core(webView)->dragController()->dragUpdated(&dragData);
+ gdk_drag_status(context, dragOperationToSingleGdkDragAction(operation), time);
+
+ return TRUE;
+}
+
+static void webkit_web_view_drag_data_received(GtkWidget* widget, GdkDragContext* context, gint x, gint y, GtkSelectionData* selectionData, guint info, guint time)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (!priv->droppingContexts.contains(context))
+ return;
+
+ DroppingContext* droppingContext = priv->droppingContexts.get(context);
+ droppingContext->pendingDataRequests--;
+ pasteboardHelperInstance()->fillDataObjectFromDropData(selectionData, info, droppingContext->dataObject.get());
+
+ if (droppingContext->pendingDataRequests)
+ return;
+
+ // The coordinates passed to drag-data-received signal are sometimes
+ // inaccurate in DRT, so use the coordinates of the last motion event.
+ const IntPoint& position = droppingContext->lastMotionPosition;
+
+ // If there are no more pending requests, start sending dragging data to WebCore.
+ DragData dragData(droppingContext->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(widget), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context)));
+ DragOperation operation = core(webView)->dragController()->dragEntered(&dragData);
+ gdk_drag_status(context, dragOperationToSingleGdkDragAction(operation), time);
+}
+
+static gboolean webkit_web_view_drag_drop(GtkWidget* widget, GdkDragContext* context, gint x, gint y, guint time)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (!priv->droppingContexts.contains(context))
+ return FALSE;
+
+ DroppingContext* droppingContext = priv->droppingContexts.get(context);
+ droppingContext->dropHappened = true;
+
+ IntPoint position(x, y);
+ DragData dragData(droppingContext->dataObject.get(), position, globalPointForClientPoint(gtk_widget_get_window(widget), position), gdkDragActionToDragOperation(gdk_drag_context_get_actions(context)));
+ core(webView)->dragController()->performDrag(&dragData);
+
+ gtk_drag_finish(context, TRUE, FALSE, time);
+ return TRUE;
+}
+
+#if GTK_CHECK_VERSION(2, 12, 0)
+static gboolean webkit_web_view_query_tooltip(GtkWidget *widget, gint x, gint y, gboolean keyboard_mode, GtkTooltip *tooltip)
+{
+ WebKitWebViewPrivate* priv = WEBKIT_WEB_VIEW(widget)->priv;
+
+ if (keyboard_mode) {
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+
+ // Get the title of the current focused element.
+ Frame* coreFrame = core(webView)->focusController()->focusedOrMainFrame();
+ if (!coreFrame)
+ return FALSE;
+
+ Node* node = getFocusedNode(coreFrame);
+ if (!node)
+ return FALSE;
+
+ for (Node* titleNode = node; titleNode; titleNode = titleNode->parentNode()) {
+ if (titleNode->isElementNode()) {
+ String title = static_cast<Element*>(titleNode)->title();
+ if (!title.isEmpty()) {
+ if (FrameView* view = coreFrame->view()) {
+ GdkRectangle area = view->contentsToWindow(node->getRect());
+ gtk_tooltip_set_tip_area(tooltip, &area);
+ }
+ gtk_tooltip_set_text(tooltip, title.utf8().data());
+
+ return TRUE;
+ }
+ }
+ }
+
+ return FALSE;
+ }
+
+ if (priv->tooltipText.length() > 0) {
+ if (!keyboard_mode) {
+ if (!priv->tooltipArea.isEmpty()) {
+ GdkRectangle area = priv->tooltipArea;
+ gtk_tooltip_set_tip_area(tooltip, &area);
+ } else
+ gtk_tooltip_set_tip_area(tooltip, 0);
+ }
+ gtk_tooltip_set_text(tooltip, priv->tooltipText.data());
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static gboolean webkit_web_view_show_help(GtkWidget* widget, GtkWidgetHelpType help_type)
+{
+ if (help_type == GTK_WIDGET_HELP_TOOLTIP)
+ gtk_widget_set_has_tooltip(widget, TRUE);
+
+ return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->show_help(widget, help_type);
+}
+#endif
+
+static GtkIMContext* webkit_web_view_get_im_context(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+ return GTK_IM_CONTEXT(webView->priv->imContext.get());
+}
+
+static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
+{
+ GtkBindingSet* binding_set;
+
+ webkitInit();
+
+ /*
+ * Signals
+ */
+
+ /**
+ * WebKitWebView::create-web-view:
+ * @webView: the object on which the signal is emitted
+ * @frame: the #WebKitWebFrame
+ *
+ * Emitted when the creation of a new window is requested.
+ * If this signal is handled the signal handler should return the
+ * newly created #WebKitWebView.
+ *
+ * The new #WebKitWebView should not be displayed to the user
+ * until the #WebKitWebView::web-view-ready signal is emitted.
+ *
+ * The signal handlers should not try to deal with the reference count for
+ * the new #WebKitWebView. The widget to which the widget is added will
+ * handle that.
+ *
+ * Return value: (transfer full): a newly allocated #WebKitWebView, or %NULL
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_view_signals[CREATE_WEB_VIEW] = g_signal_new("create-web-view",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (WebKitWebViewClass, create_web_view),
+ webkit_signal_accumulator_object_handled,
+ NULL,
+ webkit_marshal_OBJECT__OBJECT,
+ WEBKIT_TYPE_WEB_VIEW , 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ /**
+ * WebKitWebView::web-view-ready:
+ * @webView: the object on which the signal is emitted
+ *
+ * Emitted after #WebKitWebView::create-web-view when the new #WebKitWebView
+ * should be displayed to the user. When this signal is emitted
+ * all the information about how the window should look, including
+ * size, position, whether the location, status and scroll bars
+ * should be displayed, is already set on the
+ * #WebKitWebWindowFeatures object contained by the #WebKitWebView.
+ *
+ * Notice that some of that information may change during the life
+ * time of the window, so you may want to connect to the ::notify
+ * signal of the #WebKitWebWindowFeatures object to handle those.
+ *
+ * Return value: %TRUE to stop handlers from being invoked for the event or
+ * %FALSE to propagate the event furter
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_view_signals[WEB_VIEW_READY] = g_signal_new("web-view-ready",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (WebKitWebViewClass, web_view_ready),
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN, 0);
+
+ /**
+ * WebKitWebView::close-web-view:
+ * @webView: the object on which the signal is emitted
+ *
+ * Emitted when closing a #WebKitWebView is requested. This occurs when a
+ * call is made from JavaScript's window.close function. The default
+ * signal handler does not do anything. It is the owner's responsibility
+ * to hide or delete the web view, if necessary.
+ *
+ * Return value: %TRUE to stop handlers from being invoked for the event or
+ * %FALSE to propagate the event furter
+ *
+ * Since: 1.1.11
+ */
+ webkit_web_view_signals[CLOSE_WEB_VIEW] = g_signal_new("close-web-view",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (WebKitWebViewClass, close_web_view),
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__VOID,
+ G_TYPE_BOOLEAN, 0);
+
+ /**
+ * WebKitWebView::navigation-requested:
+ * @webView: the object on which the signal is emitted
+ * @frame: the #WebKitWebFrame that required the navigation
+ * @request: a #WebKitNetworkRequest
+ *
+ * Emitted when @frame requests a navigation to another page.
+ *
+ * Return value: a #WebKitNavigationResponse
+ *
+ * Deprecated: Use WebKitWebView::navigation-policy-decision-requested
+ * instead
+ */
+ webkit_web_view_signals[NAVIGATION_REQUESTED] = g_signal_new("navigation-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (WebKitWebViewClass, navigation_requested),
+ webkit_navigation_request_handled,
+ NULL,
+ webkit_marshal_ENUM__OBJECT_OBJECT,
+ WEBKIT_TYPE_NAVIGATION_RESPONSE, 2,
+ WEBKIT_TYPE_WEB_FRAME,
+ WEBKIT_TYPE_NETWORK_REQUEST);
+
+ /**
+ * WebKitWebView::new-window-policy-decision-requested:
+ * @webView: the object on which the signal is emitted
+ * @frame: the #WebKitWebFrame that required the navigation
+ * @request: a #WebKitNetworkRequest
+ * @navigation_action: a #WebKitWebNavigationAction
+ * @policy_decision: a #WebKitWebPolicyDecision
+ *
+ * Emitted when @frame requests opening a new window. With this
+ * signal the browser can use the context of the request to decide
+ * about the new window. If the request is not handled the default
+ * behavior is to allow opening the new window to load the URI,
+ * which will cause a create-web-view signal emission where the
+ * browser handles the new window action but without information
+ * of the context that caused the navigation. The following
+ * navigation-policy-decision-requested emissions will load the
+ * page after the creation of the new window just with the
+ * information of this new navigation context, without any
+ * information about the action that made this new window to be
+ * opened.
+ *
+ * Notice that if you return TRUE, meaning that you handled the
+ * signal, you are expected to have decided what to do, by calling
+ * webkit_web_policy_decision_ignore(),
+ * webkit_web_policy_decision_use(), or
+ * webkit_web_policy_decision_download() on the @policy_decision
+ * object.
+ *
+ * Return value: %TRUE if a decision was made, %FALSE to have the
+ * default behavior apply
+ *
+ * Since: 1.1.4
+ */
+ webkit_web_view_signals[NEW_WINDOW_POLICY_DECISION_REQUESTED] =
+ g_signal_new("new-window-policy-decision-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT_OBJECT_OBJECT_OBJECT,
+ G_TYPE_BOOLEAN, 4,
+ WEBKIT_TYPE_WEB_FRAME,
+ WEBKIT_TYPE_NETWORK_REQUEST,
+ WEBKIT_TYPE_WEB_NAVIGATION_ACTION,
+ WEBKIT_TYPE_WEB_POLICY_DECISION);
+
+ /**
+ * WebKitWebView::navigation-policy-decision-requested:
+ * @webView: the object on which the signal is emitted
+ * @frame: the #WebKitWebFrame that required the navigation
+ * @request: a #WebKitNetworkRequest
+ * @navigation_action: a #WebKitWebNavigationAction
+ * @policy_decision: a #WebKitWebPolicyDecision
+ *
+ * Emitted when @frame requests a navigation to another page.
+ * If this signal is not handled, the default behavior is to allow the
+ * navigation.
+ *
+ * Notice that if you return TRUE, meaning that you handled the
+ * signal, you are expected to have decided what to do, by calling
+ * webkit_web_policy_decision_ignore(),
+ * webkit_web_policy_decision_use(), or
+ * webkit_web_policy_decision_download() on the @policy_decision
+ * object.
+ *
+ * Return value: %TRUE if a decision was made, %FALSE to have the
+ * default behavior apply
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_view_signals[NAVIGATION_POLICY_DECISION_REQUESTED] = g_signal_new("navigation-policy-decision-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT_OBJECT_OBJECT_OBJECT,
+ G_TYPE_BOOLEAN, 4,
+ WEBKIT_TYPE_WEB_FRAME,
+ WEBKIT_TYPE_NETWORK_REQUEST,
+ WEBKIT_TYPE_WEB_NAVIGATION_ACTION,
+ WEBKIT_TYPE_WEB_POLICY_DECISION);
+
+ /**
+ * WebKitWebView::mime-type-policy-decision-requested:
+ * @webView: the object on which the signal is emitted
+ * @frame: the #WebKitWebFrame that required the policy decision
+ * @request: a WebKitNetworkRequest
+ * @mimetype: the MIME type attempted to load
+ * @policy_decision: a #WebKitWebPolicyDecision
+ *
+ * Decide whether or not to display the given MIME type. If this
+ * signal is not handled, the default behavior is to show the
+ * content of the requested URI if WebKit can show this MIME
+ * type and the content disposition is not a download; if WebKit
+ * is not able to show the MIME type nothing happens.
+ *
+ * Notice that if you return TRUE, meaning that you handled the
+ * signal, you are expected to be aware of the "Content-Disposition"
+ * header. A value of "attachment" usually indicates a download
+ * regardless of the MIME type, see also
+ * soup_message_headers_get_content_disposition(). And you must call
+ * webkit_web_policy_decision_ignore(),
+ * webkit_web_policy_decision_use(), or
+ * webkit_web_policy_decision_download() on the @policy_decision
+ * object.
+ *
+ * Return value: %TRUE if a decision was made, %FALSE to have the
+ * default behavior apply
+ *
+ * Since: 1.0.3
+ */
+ webkit_web_view_signals[MIME_TYPE_POLICY_DECISION_REQUESTED] = g_signal_new("mime-type-policy-decision-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT_OBJECT_STRING_OBJECT,
+ G_TYPE_BOOLEAN, 4,
+ WEBKIT_TYPE_WEB_FRAME,
+ WEBKIT_TYPE_NETWORK_REQUEST,
+ G_TYPE_STRING,
+ WEBKIT_TYPE_WEB_POLICY_DECISION);
+
+ /**
+ * WebKitWebView::window-object-cleared:
+ * @webView: the object on which the signal is emitted
+ * @frame: the #WebKitWebFrame to which @window_object belongs
+ * @context: the #JSGlobalContextRef holding the global object and other
+ * execution state; equivalent to the return value of
+ * webkit_web_frame_get_global_context(@frame)
+ * @window_object: the #JSObjectRef representing the frame's JavaScript
+ * window object
+ *
+ * Emitted when the JavaScript window object in a #WebKitWebFrame has been
+ * cleared in preparation for a new load. This is the preferred place to
+ * set custom properties on the window object using the JavaScriptCore API.
+ */
+ webkit_web_view_signals[WINDOW_OBJECT_CLEARED] = g_signal_new("window-object-cleared",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (WebKitWebViewClass, window_object_cleared),
+ NULL,
+ NULL,
+ webkit_marshal_VOID__OBJECT_POINTER_POINTER,
+ G_TYPE_NONE, 3,
+ WEBKIT_TYPE_WEB_FRAME,
+ G_TYPE_POINTER,
+ G_TYPE_POINTER);
+
+ /**
+ * WebKitWebView::download-requested:
+ * @webView: the object on which the signal is emitted
+ * @download: a #WebKitDownload object that lets you control the
+ * download process
+ *
+ * A new Download is being requested. By default, if the signal is
+ * not handled, the download is cancelled. If you handle the download
+ * and call webkit_download_set_destination_uri(), it will be
+ * started for you. If you need to set the destination asynchronously
+ * you are responsible for starting or cancelling it yourself.
+ *
+ * If you intend to handle downloads yourself rather than using
+ * the #WebKitDownload helper object you must handle this signal,
+ * and return %FALSE.
+ *
+ * Also, keep in mind that the default policy for WebKitGTK+ is to
+ * ignore files with a MIME type that it does not know how to
+ * handle, which means this signal won't be emitted in the default
+ * setup. One way to trigger downloads is to connect to
+ * WebKitWebView::mime-type-policy-decision-requested and call
+ * webkit_web_policy_decision_download() on the
+ * #WebKitWebPolicyDecision in the parameter list for the kind of
+ * files you want your application to download (a common solution
+ * is to download anything that WebKit can't handle, which you can
+ * figure out by using webkit_web_view_can_show_mime_type()).
+ *
+ * Return value: TRUE if the download should be performed, %FALSE to
+ * cancel it
+ *
+ * Since: 1.1.2
+ */
+ webkit_web_view_signals[DOWNLOAD_REQUESTED] = g_signal_new("download-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN, 1,
+ G_TYPE_OBJECT);
+
+ /**
+ * WebKitWebView::load-started:
+ * @webView: the object on which the signal is emitted
+ * @frame: the frame going to do the load
+ *
+ * When a #WebKitWebFrame begins to load this signal is emitted.
+ *
+ * Deprecated: Use the "load-status" property instead.
+ */
+ webkit_web_view_signals[LOAD_STARTED] = g_signal_new("load-started",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ /**
+ * WebKitWebView::load-committed:
+ * @webView: the object on which the signal is emitted
+ * @frame: the main frame that received the first data
+ *
+ * When a #WebKitWebFrame loaded the first data this signal is emitted.
+ *
+ * Deprecated: Use the "load-status" property instead.
+ */
+ webkit_web_view_signals[LOAD_COMMITTED] = g_signal_new("load-committed",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+
+ /**
+ * WebKitWebView::load-progress-changed:
+ * @webView: the #WebKitWebView
+ * @progress: the global progress
+ *
+ * Deprecated: Use the "progress" property instead.
+ */
+ webkit_web_view_signals[LOAD_PROGRESS_CHANGED] = g_signal_new("load-progress-changed",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__INT,
+ G_TYPE_NONE, 1,
+ G_TYPE_INT);
+
+ /**
+ * WebKitWebView::load-error
+ * @webView: the object on which the signal is emitted
+ * @web_frame: the #WebKitWebFrame
+ * @uri: the URI that triggered the error
+ * @web_error: the #GError that was triggered
+ *
+ * An error occurred while loading. By default, if the signal is not
+ * handled, the @web_view will display a stock error page. You need to
+ * handle the signal if you want to provide your own error page.
+ *
+ * Since: 1.1.6
+ *
+ * Return value: %TRUE to stop other handlers from being invoked for the
+ * event. %FALSE to propagate the event further.
+ */
+ webkit_web_view_signals[LOAD_ERROR] = g_signal_new("load-error",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT_STRING_POINTER,
+ G_TYPE_BOOLEAN, 3,
+ WEBKIT_TYPE_WEB_FRAME,
+ G_TYPE_STRING,
+ G_TYPE_POINTER);
+
+ /**
+ * WebKitWebView::load-finished:
+ * @webView: the #WebKitWebView
+ * @frame: the #WebKitWebFrame
+ *
+ * Deprecated: Use the "load-status" property instead.
+ */
+ webkit_web_view_signals[LOAD_FINISHED] = g_signal_new("load-finished",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ /**
+ * WebKitWebView::onload-event:
+ * @webView: the object on which the signal is emitted
+ * @frame: the frame
+ *
+ * When a #WebKitWebFrame receives an onload event this signal is emitted.
+ */
+ webkit_web_view_signals[ONLOAD_EVENT] = g_signal_new("onload-event",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ /**
+ * WebKitWebView::title-changed:
+ * @webView: the object on which the signal is emitted
+ * @frame: the main frame
+ * @title: the new title
+ *
+ * When a #WebKitWebFrame changes the document title this signal is emitted.
+ *
+ * Deprecated: 1.1.4: Use "notify::title" instead.
+ */
+ webkit_web_view_signals[TITLE_CHANGED] = g_signal_new("title-changed",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ webkit_marshal_VOID__OBJECT_STRING,
+ G_TYPE_NONE, 2,
+ WEBKIT_TYPE_WEB_FRAME,
+ G_TYPE_STRING);
+
+ /**
+ * WebKitWebView::hovering-over-link:
+ * @webView: the object on which the signal is emitted
+ * @title: the link's title
+ * @uri: the URI the link points to
+ *
+ * When the cursor is over a link, this signal is emitted.
+ */
+ webkit_web_view_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ webkit_marshal_VOID__STRING_STRING,
+ G_TYPE_NONE, 2,
+ G_TYPE_STRING,
+ G_TYPE_STRING);
+
+ /**
+ * WebKitWebView::populate-popup:
+ * @webView: the object on which the signal is emitted
+ * @menu: the context menu
+ *
+ * When a context menu is about to be displayed this signal is emitted.
+ *
+ * Add menu items to #menu to extend the context menu.
+ */
+ webkit_web_view_signals[POPULATE_POPUP] = g_signal_new("populate-popup",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ GTK_TYPE_MENU);
+
+ /**
+ * WebKitWebView::print-requested
+ * @webView: the object in which the signal is emitted
+ * @web_frame: the frame that is requesting to be printed
+ *
+ * Emitted when printing is requested by the frame, usually
+ * because of a javascript call. When handling this signal you
+ * should call webkit_web_frame_print_full() or
+ * webkit_web_frame_print() to do the actual printing.
+ *
+ * The default handler will present a print dialog and carry a
+ * print operation. Notice that this means that if you intend to
+ * ignore a print request you must connect to this signal, and
+ * return %TRUE.
+ *
+ * Return value: %TRUE if the print request has been handled, %FALSE if
+ * the default handler should run
+ *
+ * Since: 1.1.5
+ */
+ webkit_web_view_signals[PRINT_REQUESTED] = g_signal_new("print-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT,
+ G_TYPE_BOOLEAN, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ webkit_web_view_signals[STATUS_BAR_TEXT_CHANGED] = g_signal_new("status-bar-text-changed",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1,
+ G_TYPE_STRING);
+
+ /**
+ * WebKitWebView::icon-loaded:
+ * @webView: the object on which the signal is emitted
+ * @icon_uri: the URI for the icon
+ *
+ * This signal is emitted when the main frame has got a favicon.
+ *
+ * Since: 1.1.18
+ */
+ webkit_web_view_signals[ICON_LOADED] = g_signal_new("icon-loaded",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ 0,
+ NULL,
+ NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1,
+ G_TYPE_STRING);
+
+ /**
+ * WebKitWebView::console-message:
+ * @webView: the object on which the signal is emitted
+ * @message: the message text
+ * @line: the line where the error occured
+ * @source_id: the source id
+ *
+ * A JavaScript console message was created.
+ *
+ * Return value: %TRUE to stop other handlers from being invoked for the
+ * event. %FALSE to propagate the event further.
+ */
+ webkit_web_view_signals[CONSOLE_MESSAGE] = g_signal_new("console-message",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(WebKitWebViewClass, console_message),
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__STRING_INT_STRING,
+ G_TYPE_BOOLEAN, 3,
+ G_TYPE_STRING, G_TYPE_INT, G_TYPE_STRING);
+
+ /**
+ * WebKitWebView::script-alert:
+ * @webView: the object on which the signal is emitted
+ * @frame: the relevant frame
+ * @message: the message text
+ *
+ * A JavaScript alert dialog was created.
+ *
+ * Return value: %TRUE to stop other handlers from being invoked for the
+ * event. %FALSE to propagate the event further.
+ */
+ webkit_web_view_signals[SCRIPT_ALERT] = g_signal_new("script-alert",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(WebKitWebViewClass, script_alert),
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT_STRING,
+ G_TYPE_BOOLEAN, 2,
+ WEBKIT_TYPE_WEB_FRAME, G_TYPE_STRING);
+
+ /**
+ * WebKitWebView::script-confirm:
+ * @webView: the object on which the signal is emitted
+ * @frame: the relevant frame
+ * @message: the message text
+ * @confirmed: whether the dialog has been confirmed
+ *
+ * A JavaScript confirm dialog was created, providing Yes and No buttons.
+ *
+ * Return value: %TRUE to stop other handlers from being invoked for the
+ * event. %FALSE to propagate the event further.
+ */
+ webkit_web_view_signals[SCRIPT_CONFIRM] = g_signal_new("script-confirm",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(WebKitWebViewClass, script_confirm),
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT_STRING_POINTER,
+ G_TYPE_BOOLEAN, 3,
+ WEBKIT_TYPE_WEB_FRAME, G_TYPE_STRING, G_TYPE_POINTER);
+
+ /**
+ * WebKitWebView::script-prompt:
+ * @webView: the object on which the signal is emitted
+ * @frame: the relevant frame
+ * @message: the message text
+ * @default: the default value
+ * @text: To be filled with the return value or NULL if the dialog was cancelled.
+ *
+ * A JavaScript prompt dialog was created, providing an entry to input text.
+ *
+ * Return value: %TRUE to stop other handlers from being invoked for the
+ * event. %FALSE to propagate the event further.
+ */
+ webkit_web_view_signals[SCRIPT_PROMPT] = g_signal_new("script-prompt",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET(WebKitWebViewClass, script_prompt),
+ g_signal_accumulator_true_handled,
+ NULL,
+ webkit_marshal_BOOLEAN__OBJECT_STRING_STRING_STRING,
+ G_TYPE_BOOLEAN, 4,
+ WEBKIT_TYPE_WEB_FRAME, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
+
+ /**
+ * WebKitWebView::select-all:
+ * @webView: the object which received the signal
+ *
+ * The #WebKitWebView::select-all signal is a keybinding signal which gets emitted to
+ * select the complete contents of the text view.
+ *
+ * The default bindings for this signal is Ctrl-a.
+ */
+ webkit_web_view_signals[SELECT_ALL] = g_signal_new("select-all",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, select_all),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebView::cut-clipboard:
+ * @webView: the object which received the signal
+ *
+ * The #WebKitWebView::cut-clipboard signal is a keybinding signal which gets emitted to
+ * cut the selection to the clipboard.
+ *
+ * The default bindings for this signal are Ctrl-x and Shift-Delete.
+ */
+ webkit_web_view_signals[CUT_CLIPBOARD] = g_signal_new("cut-clipboard",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, cut_clipboard),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebView::copy-clipboard:
+ * @webView: the object which received the signal
+ *
+ * The #WebKitWebView::copy-clipboard signal is a keybinding signal which gets emitted to
+ * copy the selection to the clipboard.
+ *
+ * The default bindings for this signal are Ctrl-c and Ctrl-Insert.
+ */
+ webkit_web_view_signals[COPY_CLIPBOARD] = g_signal_new("copy-clipboard",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, copy_clipboard),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebView::paste-clipboard:
+ * @webView: the object which received the signal
+ *
+ * The #WebKitWebView::paste-clipboard signal is a keybinding signal which gets emitted to
+ * paste the contents of the clipboard into the Web view.
+ *
+ * The default bindings for this signal are Ctrl-v and Shift-Insert.
+ */
+ webkit_web_view_signals[PASTE_CLIPBOARD] = g_signal_new("paste-clipboard",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, paste_clipboard),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebView::undo
+ * @webView: the object which received the signal
+ *
+ * The #WebKitWebView::undo signal is a keybinding signal which gets emitted to
+ * undo the last editing command.
+ *
+ * The default binding for this signal is Ctrl-z
+ *
+ * Since: 1.1.14
+ */
+ webkit_web_view_signals[UNDO] = g_signal_new("undo",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, undo),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebView::redo
+ * @webView: the object which received the signal
+ *
+ * The #WebKitWebView::redo signal is a keybinding signal which gets emitted to
+ * redo the last editing command.
+ *
+ * The default binding for this signal is Ctrl-Shift-z
+ *
+ * Since: 1.1.14
+ */
+ webkit_web_view_signals[REDO] = g_signal_new("redo",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, redo),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__VOID,
+ G_TYPE_NONE, 0);
+
+ /**
+ * WebKitWebView::move-cursor:
+ * @webView: the object which received the signal
+ * @step: the type of movement, one of #GtkMovementStep
+ * @count: an integer indicating the subtype of movement. Currently
+ * the permitted values are '1' = forward, '-1' = backwards.
+ *
+ * The #WebKitWebView::move-cursor will be emitted to apply the
+ * cursor movement described by its parameters to the @view.
+ *
+ * Return value: %TRUE or %FALSE
+ *
+ * Since: 1.1.4
+ */
+ webkit_web_view_signals[MOVE_CURSOR] = g_signal_new("move-cursor",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, move_cursor),
+ NULL, NULL,
+ webkit_marshal_BOOLEAN__ENUM_INT,
+ G_TYPE_BOOLEAN, 2,
+ GTK_TYPE_MOVEMENT_STEP,
+ G_TYPE_INT);
+
+ /**
+ * WebKitWebView::create-plugin-widget:
+ * @webView: the object which received the signal
+ * @mime_type: the mimetype of the requested object
+ * @uri: the URI to load
+ * @param: a #GHashTable with additional attributes (strings)
+ *
+ * The #WebKitWebView::create-plugin-widget signal will be emitted to
+ * create a plugin widget for embed or object HTML tags. This
+ * allows to embed a GtkWidget as a plugin into HTML content. In
+ * case of a textual selection of the GtkWidget WebCore will attempt
+ * to set the property value of "webkit-widget-is-selected". This can
+ * be used to draw a visual indicator of the selection.
+ *
+ * Return value: (transfer full): a new #GtkWidget, or %NULL
+ *
+ * Since: 1.1.8
+ */
+ webkit_web_view_signals[PLUGIN_WIDGET] = g_signal_new("create-plugin-widget",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags) (G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ webkit_signal_accumulator_object_handled,
+ NULL,
+ webkit_marshal_OBJECT__STRING_STRING_POINTER,
+ GTK_TYPE_WIDGET, 3,
+ G_TYPE_STRING, G_TYPE_STRING, G_TYPE_HASH_TABLE);
+
+ /**
+ * WebKitWebView::database-quota-exceeded
+ * @webView: the object which received the signal
+ * @frame: the relevant frame
+ * @database: the #WebKitWebDatabase which exceeded the quota of its #WebKitSecurityOrigin
+ *
+ * The #WebKitWebView::database-quota-exceeded signal will be emitted when
+ * a Web Database exceeds the quota of its security origin. This signal
+ * may be used to increase the size of the quota before the originating
+ * operation fails.
+ *
+ * Since: 1.1.14
+ */
+ webkit_web_view_signals[DATABASE_QUOTA_EXCEEDED] = g_signal_new("database-quota-exceeded",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags) (G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ NULL, NULL,
+ webkit_marshal_VOID__OBJECT_OBJECT,
+ G_TYPE_NONE, 2,
+ G_TYPE_OBJECT, G_TYPE_OBJECT);
+
+ /**
+ * WebKitWebView::resource-request-starting:
+ * @webView: the object which received the signal
+ * @web_frame: the #WebKitWebFrame whose load dispatched this request
+ * @web_resource: an empty #WebKitWebResource object
+ * @request: the #WebKitNetworkRequest that will be dispatched
+ * @response: the #WebKitNetworkResponse representing the redirect
+ * response, if any
+ *
+ * Emitted when a request is about to be sent. You can modify the
+ * request while handling this signal. You can set the URI in the
+ * #WebKitNetworkRequest object itself, and add/remove/replace
+ * headers using the #SoupMessage object it carries, if it is
+ * present. See webkit_network_request_get_message(). Setting the
+ * request URI to "about:blank" will effectively cause the request
+ * to load nothing, and can be used to disable the loading of
+ * specific resources.
+ *
+ * Notice that information about an eventual redirect is available
+ * in @response's #SoupMessage, not in the #SoupMessage carried by
+ * the @request. If @response is %NULL, then this is not a
+ * redirected request.
+ *
+ * The #WebKitWebResource object will be the same throughout all
+ * the lifetime of the resource, but the contents may change from
+ * inbetween signal emissions.
+ *
+ * Since: 1.1.14
+ */
+ webkit_web_view_signals[RESOURCE_REQUEST_STARTING] = g_signal_new("resource-request-starting",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ NULL, NULL,
+ webkit_marshal_VOID__OBJECT_OBJECT_OBJECT_OBJECT,
+ G_TYPE_NONE, 4,
+ WEBKIT_TYPE_WEB_FRAME,
+ WEBKIT_TYPE_WEB_RESOURCE,
+ WEBKIT_TYPE_NETWORK_REQUEST,
+ WEBKIT_TYPE_NETWORK_RESPONSE);
+
+ /**
+ * WebKitWebView::geolocation-policy-decision-requested:
+ * @webView: the object on which the signal is emitted
+ * @frame: the frame that requests permission
+ * @policy_decision: a WebKitGeolocationPolicyDecision
+ *
+ * This signal is emitted when a @frame wants to obtain the user's
+ * location. The decision can be made asynchronously, but you must
+ * call g_object_ref() the @policy_decision, and return %TRUE if
+ * you are going to handle the request. To actually make the
+ * decision you need to call webkit_geolocation_policy_allow() or
+ * webkit_geolocation_policy_deny() on @policy_decision.
+ *
+ * Since: 1.1.23
+ */
+ webkit_web_view_signals[GEOLOCATION_POLICY_DECISION_REQUESTED] = g_signal_new("geolocation-policy-decision-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ 0,
+ NULL, NULL,
+ webkit_marshal_BOOLEAN__OBJECT_OBJECT,
+ G_TYPE_BOOLEAN, 2,
+ WEBKIT_TYPE_WEB_FRAME,
+ WEBKIT_TYPE_GEOLOCATION_POLICY_DECISION);
+
+ /**
+ * WebKitWebView::geolocation-policy-decision-cancelled:
+ * @webView: the object on which the signal is emitted
+ * @frame: the frame that cancels geolocation request.
+ *
+ * When a @frame wants to cancel geolocation permission it had requested
+ * before.
+ *
+ * Since: 1.1.23
+ */
+ webkit_web_view_signals[GEOLOCATION_POLICY_DECISION_CANCELLED] = g_signal_new("geolocation-policy-decision-cancelled",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ /*
+ * DOM-related signals. These signals are experimental, for now,
+ * and may change API and ABI. Their comments lack one * on
+ * purpose, to make them not be catched by gtk-doc.
+ */
+
+ /*
+ * WebKitWebView::document-load-finished
+ * @webView: the object which received the signal
+ * @web_frame: the #WebKitWebFrame whose load dispatched this request
+ *
+ * Emitted when the DOM document object load is finished for the
+ * given frame.
+ */
+ webkit_web_view_signals[DOCUMENT_LOAD_FINISHED] = g_signal_new("document-load-finished",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ /*
+ * WebKitWebView::frame-created
+ * @webView: the object which received the signal
+ * @web_frame: the #WebKitWebFrame which was just created.
+ *
+ * Emitted when a WebKitWebView has created a new frame. This signal will
+ * be emitted for all sub-frames created during page load. It will not be
+ * emitted for the main frame, which originates in the WebKitWebView constructor
+ * and may be accessed at any time using webkit_web_view_get_main_frame.
+ *
+ * Since: 1.3.4
+ */
+ webkit_web_view_signals[FRAME_CREATED] = g_signal_new("frame-created",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ NULL, NULL,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_WEB_FRAME);
+
+ webkit_web_view_signals[SHOULD_BEGIN_EDITING] = g_signal_new("should-begin-editing",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_RANGE);
+
+ webkit_web_view_signals[SHOULD_END_EDITING] = g_signal_new("should-end-editing", G_TYPE_FROM_CLASS(webViewClass),
+ static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_RANGE);
+
+ webkit_web_view_signals[SHOULD_INSERT_NODE] = g_signal_new("should-insert-node", G_TYPE_FROM_CLASS(webViewClass),
+ static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__OBJECT_OBJECT_ENUM, G_TYPE_BOOLEAN,
+ 3, WEBKIT_TYPE_DOM_NODE, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_INSERT_ACTION);
+
+ webkit_web_view_signals[SHOULD_INSERT_TEXT] = g_signal_new("should-insert-text", G_TYPE_FROM_CLASS(webViewClass),
+ static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__STRING_OBJECT_ENUM, G_TYPE_BOOLEAN,
+ 3, G_TYPE_STRING, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_INSERT_ACTION);
+
+ webkit_web_view_signals[SHOULD_DELETE_RANGE] = g_signal_new("should-delete-range", G_TYPE_FROM_CLASS(webViewClass),
+ static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_RANGE);
+
+ webkit_web_view_signals[SHOULD_SHOW_DELETE_INTERFACE_FOR_ELEMENT] = g_signal_new("should-show-delete-interface-for-element",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__OBJECT, G_TYPE_BOOLEAN, 1, WEBKIT_TYPE_DOM_HTML_ELEMENT);
+
+ webkit_web_view_signals[SHOULD_CHANGE_SELECTED_RANGE] = g_signal_new("should-change-selected-range",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__OBJECT_OBJECT_ENUM_BOOLEAN, G_TYPE_BOOLEAN,
+ 4, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_DOM_RANGE, WEBKIT_TYPE_SELECTION_AFFINITY, G_TYPE_BOOLEAN);
+
+ webkit_web_view_signals[SHOULD_APPLY_STYLE] = g_signal_new("should-apply-style",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, should_allow_editing_action), g_signal_accumulator_first_wins, 0,
+ webkit_marshal_BOOLEAN__OBJECT_OBJECT, G_TYPE_BOOLEAN,
+ 2, WEBKIT_TYPE_DOM_CSS_STYLE_DECLARATION, WEBKIT_TYPE_DOM_RANGE);
+
+ webkit_web_view_signals[EDITING_BEGAN] = g_signal_new("editing-began",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+ webkit_web_view_signals[USER_CHANGED_CONTENTS] = g_signal_new("user-changed-contents",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+ webkit_web_view_signals[EDITING_ENDED] = g_signal_new("editing-ended",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+ webkit_web_view_signals[SELECTION_CHANGED] = g_signal_new("selection-changed",
+ G_TYPE_FROM_CLASS(webViewClass), static_cast<GSignalFlags>(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION), 0, 0, 0,
+ g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0);
+
+ /*
+ * WebKitWebView::viewport-attributes-recompute-requested
+ * @web_view: the object which received the signal
+ * @viewport_attributes: the #WebKitViewportAttributes which has the viewport attributes.
+ *
+ * The #WebKitWebView::viewport-attributes-recompute-requested
+ * signal will be emitted when a page with a viewport meta tag
+ * loads and when webkit_viewport_attributes_recompute is called.
+ *
+ * The #WebKitViewportAttributes will have device size, available size,
+ * desktop width, and device DPI pre-filled by values that make sense
+ * for the current screen and widget, but you can override those values
+ * if you have special requirements (for instance, if you made your
+ * widget bigger than the available visible area, you should override
+ * the available-width and available-height properties to the actual
+ * visible area).
+ *
+ * Since: 1.3.8
+ */
+ webkit_web_view_signals[VIEWPORT_ATTRIBUTES_RECOMPUTE_REQUESTED] = g_signal_new("viewport-attributes-recompute-requested",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ 0, 0,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_VIEWPORT_ATTRIBUTES);
+
+ /*
+ * WebKitWebView::viewport-attributes-changed
+ * @web_view: the object which received the signal
+ * @viewport_attributes: the #WebKitViewportAttributes which has the viewport attributes.
+ *
+ * The #WebKitWebView::viewport-attributes-changed signal will be emitted
+ * after the emission of #WebKitWebView::viewport-attributes-recompute-requested
+ * and the subsequent viewport attribute recomputation. At this point,
+ * if the #WebKitViewportAttributes are valid, the viewport attributes are available.
+ *
+ * Since: 1.3.8
+ */
+ webkit_web_view_signals[VIEWPORT_ATTRIBUTES_CHANGED] = g_signal_new("viewport-attributes-changed",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ 0,
+ 0, 0,
+ g_cclosure_marshal_VOID__OBJECT,
+ G_TYPE_NONE, 1,
+ WEBKIT_TYPE_VIEWPORT_ATTRIBUTES);
+
+ /*
+ * implementations of virtual methods
+ */
+ webViewClass->create_web_view = webkit_web_view_real_create_web_view;
+ webViewClass->web_view_ready = webkit_web_view_real_web_view_ready;
+ webViewClass->close_web_view = webkit_web_view_real_close_web_view;
+ webViewClass->navigation_requested = webkit_web_view_real_navigation_requested;
+ webViewClass->window_object_cleared = webkit_web_view_real_window_object_cleared;
+ webViewClass->choose_file = webkit_web_view_real_choose_file;
+ webViewClass->script_alert = webkit_web_view_real_script_alert;
+ webViewClass->script_confirm = webkit_web_view_real_script_confirm;
+ webViewClass->script_prompt = webkit_web_view_real_script_prompt;
+ webViewClass->console_message = webkit_web_view_real_console_message;
+ webViewClass->select_all = webkit_web_view_real_select_all;
+ webViewClass->cut_clipboard = webkit_web_view_real_cut_clipboard;
+ webViewClass->copy_clipboard = webkit_web_view_real_copy_clipboard;
+ webViewClass->paste_clipboard = webkit_web_view_real_paste_clipboard;
+ webViewClass->undo = webkit_web_view_real_undo;
+ webViewClass->redo = webkit_web_view_real_redo;
+ webViewClass->move_cursor = webkit_web_view_real_move_cursor;
+ webViewClass->should_allow_editing_action = webkit_web_view_real_should_allow_editing_action;
+
+ GObjectClass* objectClass = G_OBJECT_CLASS(webViewClass);
+ objectClass->dispose = webkit_web_view_dispose;
+ objectClass->finalize = webkit_web_view_finalize;
+ objectClass->get_property = webkit_web_view_get_property;
+ objectClass->set_property = webkit_web_view_set_property;
+
+ GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(webViewClass);
+ widgetClass->realize = webkit_web_view_realize;
+#ifdef GTK_API_VERSION_2
+ widgetClass->expose_event = webkit_web_view_expose_event;
+#else
+ widgetClass->draw = webkit_web_view_draw;
+#endif
+ widgetClass->key_press_event = webkit_web_view_key_press_event;
+ widgetClass->key_release_event = webkit_web_view_key_release_event;
+ widgetClass->button_press_event = webkit_web_view_button_press_event;
+ widgetClass->button_release_event = webkit_web_view_button_release_event;
+ widgetClass->motion_notify_event = webkit_web_view_motion_event;
+ widgetClass->scroll_event = webkit_web_view_scroll_event;
+ widgetClass->size_allocate = webkit_web_view_size_allocate;
+#ifdef GTK_API_VERSION_2
+ widgetClass->size_request = webkit_web_view_size_request;
+#else
+ widgetClass->get_preferred_width = webkit_web_view_get_preferred_width;
+ widgetClass->get_preferred_height = webkit_web_view_get_preferred_height;
+#endif
+ widgetClass->popup_menu = webkit_web_view_popup_menu_handler;
+ widgetClass->grab_focus = webkit_web_view_grab_focus;
+ widgetClass->focus_in_event = webkit_web_view_focus_in_event;
+ widgetClass->focus_out_event = webkit_web_view_focus_out_event;
+ widgetClass->get_accessible = webkit_web_view_get_accessible;
+ widgetClass->screen_changed = webkit_web_view_screen_changed;
+ widgetClass->drag_end = webkit_web_view_drag_end;
+ widgetClass->drag_data_get = webkit_web_view_drag_data_get;
+ widgetClass->drag_motion = webkit_web_view_drag_motion;
+ widgetClass->drag_leave = webkit_web_view_drag_leave;
+ widgetClass->drag_drop = webkit_web_view_drag_drop;
+ widgetClass->drag_data_received = webkit_web_view_drag_data_received;
+#if GTK_CHECK_VERSION(2, 12, 0)
+ widgetClass->query_tooltip = webkit_web_view_query_tooltip;
+ widgetClass->show_help = webkit_web_view_show_help;
+#endif
+
+ GtkContainerClass* containerClass = GTK_CONTAINER_CLASS(webViewClass);
+ containerClass->add = webkit_web_view_container_add;
+ containerClass->remove = webkit_web_view_container_remove;
+ containerClass->forall = webkit_web_view_container_forall;
+
+ /*
+ * make us scrollable (e.g. addable to a GtkScrolledWindow)
+ */
+#ifdef GTK_API_VERSION_2
+ webViewClass->set_scroll_adjustments = webkit_web_view_set_scroll_adjustments;
+ GTK_WIDGET_CLASS(webViewClass)->set_scroll_adjustments_signal = g_signal_new("set-scroll-adjustments",
+ G_TYPE_FROM_CLASS(webViewClass),
+ (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ G_STRUCT_OFFSET(WebKitWebViewClass, set_scroll_adjustments),
+ NULL, NULL,
+ webkit_marshal_VOID__OBJECT_OBJECT,
+ G_TYPE_NONE, 2,
+ GTK_TYPE_ADJUSTMENT, GTK_TYPE_ADJUSTMENT);
+#else
+ g_object_class_override_property(objectClass, PROP_HADJUSTMENT, "hadjustment");
+ g_object_class_override_property(objectClass, PROP_VADJUSTMENT, "vadjustment");
+ g_object_class_override_property(objectClass, PROP_HSCROLL_POLICY, "hscroll-policy");
+ g_object_class_override_property(objectClass, PROP_VSCROLL_POLICY, "vscroll-policy");
+#endif
+
+ /*
+ * Key bindings
+ */
+
+ binding_set = gtk_binding_set_by_class(webViewClass);
+
+ gtk_binding_entry_add_signal(binding_set, GDK_a, GDK_CONTROL_MASK,
+ "select_all", 0);
+
+ /* Cut/copy/paste */
+
+ gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK,
+ "cut_clipboard", 0);
+ gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK,
+ "copy_clipboard", 0);
+ gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK,
+ "paste_clipboard", 0);
+ gtk_binding_entry_add_signal(binding_set, GDK_z, GDK_CONTROL_MASK,
+ "undo", 0);
+ gtk_binding_entry_add_signal(binding_set, GDK_z, static_cast<GdkModifierType>(GDK_CONTROL_MASK | GDK_SHIFT_MASK),
+ "redo", 0);
+
+ gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK,
+ "cut_clipboard", 0);
+ gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK,
+ "copy_clipboard", 0);
+ gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_SHIFT_MASK,
+ "paste_clipboard", 0);
+
+ /* Movement */
+
+ gtk_binding_entry_add_signal(binding_set, GDK_Down, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINES,
+ G_TYPE_INT, 1);
+ gtk_binding_entry_add_signal(binding_set, GDK_Up, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_DISPLAY_LINES,
+ G_TYPE_INT, -1);
+ gtk_binding_entry_add_signal(binding_set, GDK_Right, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS,
+ G_TYPE_INT, 1);
+ gtk_binding_entry_add_signal(binding_set, GDK_Left, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_VISUAL_POSITIONS,
+ G_TYPE_INT, -1);
+ gtk_binding_entry_add_signal(binding_set, GDK_space, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_PAGES,
+ G_TYPE_INT, 1);
+ gtk_binding_entry_add_signal(binding_set, GDK_space, GDK_SHIFT_MASK,
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_PAGES,
+ G_TYPE_INT, -1);
+ gtk_binding_entry_add_signal(binding_set, GDK_Page_Down, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_PAGES,
+ G_TYPE_INT, 1);
+ gtk_binding_entry_add_signal(binding_set, GDK_Page_Up, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_PAGES,
+ G_TYPE_INT, -1);
+ gtk_binding_entry_add_signal(binding_set, GDK_End, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_BUFFER_ENDS,
+ G_TYPE_INT, 1);
+ gtk_binding_entry_add_signal(binding_set, GDK_Home, static_cast<GdkModifierType>(0),
+ "move-cursor", 2,
+ G_TYPE_ENUM, GTK_MOVEMENT_BUFFER_ENDS,
+ G_TYPE_INT, -1);
+
+ /*
+ * properties
+ */
+
+ /**
+ * WebKitWebView:title:
+ *
+ * Returns the @web_view's document title.
+ *
+ * Since: 1.1.4
+ */
+ g_object_class_install_property(objectClass, PROP_TITLE,
+ g_param_spec_string("title",
+ _("Title"),
+ _("Returns the @web_view's document title"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:uri:
+ *
+ * Returns the current URI of the contents displayed by the @web_view.
+ *
+ * Since: 1.1.4
+ */
+ g_object_class_install_property(objectClass, PROP_URI,
+ g_param_spec_string("uri",
+ _("URI"),
+ _("Returns the current URI of the contents displayed by the @web_view"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:copy-target-list:
+ *
+ * The list of targets this web view supports for clipboard copying.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property(objectClass, PROP_COPY_TARGET_LIST,
+ g_param_spec_boxed("copy-target-list",
+ _("Copy target list"),
+ _("The list of targets this web view supports for clipboard copying"),
+ GTK_TYPE_TARGET_LIST,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:paste-target-list:
+ *
+ * The list of targets this web view supports for clipboard pasting.
+ *
+ * Since: 1.0.2
+ */
+ g_object_class_install_property(objectClass, PROP_PASTE_TARGET_LIST,
+ g_param_spec_boxed("paste-target-list",
+ _("Paste target list"),
+ _("The list of targets this web view supports for clipboard pasting"),
+ GTK_TYPE_TARGET_LIST,
+ WEBKIT_PARAM_READABLE));
+
+ g_object_class_install_property(objectClass, PROP_SETTINGS,
+ g_param_spec_object("settings",
+ _("Settings"),
+ _("An associated WebKitWebSettings instance"),
+ WEBKIT_TYPE_WEB_SETTINGS,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitWebView:web-inspector:
+ *
+ * The associated WebKitWebInspector instance.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(objectClass, PROP_WEB_INSPECTOR,
+ g_param_spec_object("web-inspector",
+ _("Web Inspector"),
+ _("The associated WebKitWebInspector instance"),
+ WEBKIT_TYPE_WEB_INSPECTOR,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:viewport-attributes:
+ *
+ * The associated #WebKitViewportAttributes instance.
+ *
+ * Since: 1.3.8
+ */
+ g_object_class_install_property(objectClass, PROP_VIEWPORT_ATTRIBUTES,
+ g_param_spec_object("viewport-attributes",
+ _("Viewport Attributes"),
+ _("The associated WebKitViewportAttributes instance"),
+ WEBKIT_TYPE_VIEWPORT_ATTRIBUTES,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:window-features:
+ *
+ * An associated WebKitWebWindowFeatures instance.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(objectClass, PROP_WINDOW_FEATURES,
+ g_param_spec_object("window-features",
+ "Window Features",
+ "An associated WebKitWebWindowFeatures instance",
+ WEBKIT_TYPE_WEB_WINDOW_FEATURES,
+ WEBKIT_PARAM_READWRITE));
+
+ g_object_class_install_property(objectClass, PROP_EDITABLE,
+ g_param_spec_boolean("editable",
+ _("Editable"),
+ _("Whether content can be modified by the user"),
+ FALSE,
+ WEBKIT_PARAM_READWRITE));
+
+ g_object_class_install_property(objectClass, PROP_TRANSPARENT,
+ g_param_spec_boolean("transparent",
+ _("Transparent"),
+ _("Whether content has a transparent background"),
+ FALSE,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitWebView:zoom-level:
+ *
+ * The level of zoom of the content.
+ *
+ * Since: 1.0.1
+ */
+ g_object_class_install_property(objectClass, PROP_ZOOM_LEVEL,
+ g_param_spec_float("zoom-level",
+ _("Zoom level"),
+ _("The level of zoom of the content"),
+ G_MINFLOAT,
+ G_MAXFLOAT,
+ 1.0f,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitWebView:full-content-zoom:
+ *
+ * Whether the full content is scaled when zooming.
+ *
+ * Since: 1.0.1
+ */
+ g_object_class_install_property(objectClass, PROP_FULL_CONTENT_ZOOM,
+ g_param_spec_boolean("full-content-zoom",
+ _("Full content zoom"),
+ _("Whether the full content is scaled when zooming"),
+ FALSE,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitWebView:encoding:
+ *
+ * The default encoding of the web view.
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass, PROP_ENCODING,
+ g_param_spec_string("encoding",
+ _("Encoding"),
+ _("The default encoding of the web view"),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:custom-encoding:
+ *
+ * The custom encoding of the web view.
+ *
+ * Since: 1.1.2
+ */
+ g_object_class_install_property(objectClass, PROP_CUSTOM_ENCODING,
+ g_param_spec_string("custom-encoding",
+ _("Custom Encoding"),
+ _("The custom encoding of the web view"),
+ NULL,
+ WEBKIT_PARAM_READWRITE));
+
+ /**
+ * WebKitWebView:load-status:
+ *
+ * Determines the current status of the load.
+ *
+ * Connect to "notify::load-status" to monitor loading.
+ *
+ * Some versions of WebKitGTK+ emitted this signal for the default
+ * error page, while loading it. This behavior was considered bad,
+ * because it was essentially exposing an implementation
+ * detail. From 1.1.19 onwards this signal is no longer emitted for
+ * the default error pages, but keep in mind that if you override
+ * the error pages by using webkit_web_frame_load_alternate_string()
+ * the signals will be emitted.
+ *
+ * Since: 1.1.7
+ */
+ g_object_class_install_property(objectClass, PROP_LOAD_STATUS,
+ g_param_spec_enum("load-status",
+ "Load Status",
+ "Determines the current status of the load",
+ WEBKIT_TYPE_LOAD_STATUS,
+ WEBKIT_LOAD_FINISHED,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:progress:
+ *
+ * Determines the current progress of the load.
+ *
+ * Since: 1.1.7
+ */
+ g_object_class_install_property(objectClass, PROP_PROGRESS,
+ g_param_spec_double("progress",
+ "Progress",
+ "Determines the current progress of the load",
+ 0.0, 1.0, 1.0,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:icon-uri:
+ *
+ * The URI for the favicon for the #WebKitWebView.
+ *
+ * Since: 1.1.18
+ */
+ g_object_class_install_property(objectClass, PROP_ICON_URI,
+ g_param_spec_string("icon-uri",
+ _("Icon URI"),
+ _("The URI for the favicon for the #WebKitWebView."),
+ NULL,
+ WEBKIT_PARAM_READABLE));
+ /**
+ * WebKitWebView:im-context:
+ *
+ * The GtkIMMulticontext for the #WebKitWebView.
+ *
+ * This is the input method context used for all text entry widgets inside
+ * the #WebKitWebView. It can be used to generate context menu items for
+ * controlling the active input method.
+ *
+ * Since: 1.1.20
+ */
+ g_object_class_install_property(objectClass, PROP_IM_CONTEXT,
+ g_param_spec_object("im-context",
+ "IM Context",
+ "The GtkIMMultiContext for the #WebKitWebView.",
+ GTK_TYPE_IM_CONTEXT,
+ WEBKIT_PARAM_READABLE));
+
+ /**
+ * WebKitWebView:view-mode:
+ *
+ * The "view-mode" media feature for the #WebKitWebView.
+ *
+ * The "view-mode" media feature is additional information for web
+ * applications about how the application is running, when it comes
+ * to user experience. Whether the application is running inside a
+ * regular browser window, in a dedicated window, fullscreen, for
+ * instance.
+ *
+ * This property stores a %WebKitWebViewViewMode value that matches
+ * the "view-mode" media feature the web application will see.
+ *
+ * See http://www.w3.org/TR/view-mode/ for more information.
+ *
+ * Since: 1.3.4
+ */
+ g_object_class_install_property(objectClass, PROP_VIEW_MODE,
+ g_param_spec_enum("view-mode",
+ "View Mode",
+ "The view-mode media feature for the #WebKitWebView.",
+ WEBKIT_TYPE_WEB_VIEW_VIEW_MODE,
+ WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED,
+ WEBKIT_PARAM_READWRITE));
+
+ g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate));
+}
+
+static void webkit_web_view_update_settings(WebKitWebView* webView)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+ WebKitWebSettings* webSettings = priv->webSettings.get();
+ Settings* settings = core(webView)->settings();
+
+ gchar* defaultEncoding, *cursiveFontFamily, *defaultFontFamily, *fantasyFontFamily, *monospaceFontFamily, *sansSerifFontFamily, *serifFontFamily, *userStylesheetUri;
+ gboolean autoLoadImages, autoShrinkImages, printBackgrounds,
+ enableScripts, enablePlugins, enableDeveloperExtras, resizableTextAreas,
+ enablePrivateBrowsing, enableCaretBrowsing, enableHTML5Database, enableHTML5LocalStorage,
+ enableXSSAuditor, enableSpatialNavigation, enableFrameFlattening, javascriptCanOpenWindows,
+ javaScriptCanAccessClipboard, enableOfflineWebAppCache,
+ enableUniversalAccessFromFileURI, enableFileAccessFromFileURI,
+ enableDOMPaste, tabKeyCyclesThroughElements,
+ enableSiteSpecificQuirks, usePageCache, enableJavaApplet, enableHyperlinkAuditing, enableFullscreen;
+
+ WebKitEditingBehavior editingBehavior;
+
+ g_object_get(webSettings,
+ "default-encoding", &defaultEncoding,
+ "cursive-font-family", &cursiveFontFamily,
+ "default-font-family", &defaultFontFamily,
+ "fantasy-font-family", &fantasyFontFamily,
+ "monospace-font-family", &monospaceFontFamily,
+ "sans-serif-font-family", &sansSerifFontFamily,
+ "serif-font-family", &serifFontFamily,
+ "auto-load-images", &autoLoadImages,
+ "auto-shrink-images", &autoShrinkImages,
+ "print-backgrounds", &printBackgrounds,
+ "enable-scripts", &enableScripts,
+ "enable-plugins", &enablePlugins,
+ "resizable-text-areas", &resizableTextAreas,
+ "user-stylesheet-uri", &userStylesheetUri,
+ "enable-developer-extras", &enableDeveloperExtras,
+ "enable-private-browsing", &enablePrivateBrowsing,
+ "enable-caret-browsing", &enableCaretBrowsing,
+ "enable-html5-database", &enableHTML5Database,
+ "enable-html5-local-storage", &enableHTML5LocalStorage,
+ "enable-xss-auditor", &enableXSSAuditor,
+ "enable-spatial-navigation", &enableSpatialNavigation,
+ "enable-frame-flattening", &enableFrameFlattening,
+ "javascript-can-open-windows-automatically", &javascriptCanOpenWindows,
+ "javascript-can-access-clipboard", &javaScriptCanAccessClipboard,
+ "enable-offline-web-application-cache", &enableOfflineWebAppCache,
+ "editing-behavior", &editingBehavior,
+ "enable-universal-access-from-file-uris", &enableUniversalAccessFromFileURI,
+ "enable-file-access-from-file-uris", &enableFileAccessFromFileURI,
+ "enable-dom-paste", &enableDOMPaste,
+ "tab-key-cycles-through-elements", &tabKeyCyclesThroughElements,
+ "enable-site-specific-quirks", &enableSiteSpecificQuirks,
+ "enable-page-cache", &usePageCache,
+ "enable-java-applet", &enableJavaApplet,
+ "enable-hyperlink-auditing", &enableHyperlinkAuditing,
+ "enable-fullscreen", &enableFullscreen,
+ NULL);
+
+ settings->setDefaultTextEncodingName(defaultEncoding);
+ settings->setCursiveFontFamily(cursiveFontFamily);
+ settings->setStandardFontFamily(defaultFontFamily);
+ settings->setFantasyFontFamily(fantasyFontFamily);
+ settings->setFixedFontFamily(monospaceFontFamily);
+ settings->setSansSerifFontFamily(sansSerifFontFamily);
+ settings->setSerifFontFamily(serifFontFamily);
+ settings->setLoadsImagesAutomatically(autoLoadImages);
+ settings->setShrinksStandaloneImagesToFit(autoShrinkImages);
+ settings->setShouldPrintBackgrounds(printBackgrounds);
+ settings->setJavaScriptEnabled(enableScripts);
+ settings->setPluginsEnabled(enablePlugins);
+ settings->setTextAreasAreResizable(resizableTextAreas);
+ settings->setUserStyleSheetLocation(KURL(KURL(), userStylesheetUri));
+ settings->setDeveloperExtrasEnabled(enableDeveloperExtras);
+ settings->setPrivateBrowsingEnabled(enablePrivateBrowsing);
+ settings->setCaretBrowsingEnabled(enableCaretBrowsing);
+#if ENABLE(DATABASE)
+ AbstractDatabase::setIsAvailable(enableHTML5Database);
+#endif
+ settings->setLocalStorageEnabled(enableHTML5LocalStorage);
+ settings->setXSSAuditorEnabled(enableXSSAuditor);
+ settings->setSpatialNavigationEnabled(enableSpatialNavigation);
+ settings->setFrameFlatteningEnabled(enableFrameFlattening);
+ settings->setJavaScriptCanOpenWindowsAutomatically(javascriptCanOpenWindows);
+ settings->setJavaScriptCanAccessClipboard(javaScriptCanAccessClipboard);
+ settings->setOfflineWebApplicationCacheEnabled(enableOfflineWebAppCache);
+ settings->setEditingBehaviorType(static_cast<WebCore::EditingBehaviorType>(editingBehavior));
+ settings->setAllowUniversalAccessFromFileURLs(enableUniversalAccessFromFileURI);
+ settings->setAllowFileAccessFromFileURLs(enableFileAccessFromFileURI);
+ settings->setDOMPasteAllowed(enableDOMPaste);
+ settings->setNeedsSiteSpecificQuirks(enableSiteSpecificQuirks);
+ settings->setUsesPageCache(usePageCache);
+ settings->setJavaEnabled(enableJavaApplet);
+ settings->setHyperlinkAuditingEnabled(enableHyperlinkAuditing);
+#if ENABLE(FULLSCREEN_API)
+ settings->setFullScreenEnabled(enableFullscreen);
+#endif
+ Page* page = core(webView);
+ if (page)
+ page->setTabKeyCyclesThroughElements(tabKeyCyclesThroughElements);
+
+ g_free(defaultEncoding);
+ g_free(cursiveFontFamily);
+ g_free(defaultFontFamily);
+ g_free(fantasyFontFamily);
+ g_free(monospaceFontFamily);
+ g_free(sansSerifFontFamily);
+ g_free(serifFontFamily);
+ g_free(userStylesheetUri);
+
+ webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL);
+}
+
+static inline gint pixelsFromSize(WebKitWebView* webView, gint size)
+{
+ gdouble DPI = webViewGetDPI(webView);
+ return size / 72.0 * DPI;
+}
+
+static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GParamSpec* pspec, WebKitWebView* webView)
+{
+ Settings* settings = core(webView)->settings();
+
+ const gchar* name = g_intern_string(pspec->name);
+ GValue value = { 0, { { 0 } } };
+ g_value_init(&value, pspec->value_type);
+ g_object_get_property(G_OBJECT(webSettings), name, &value);
+
+ if (name == g_intern_string("default-encoding"))
+ settings->setDefaultTextEncodingName(g_value_get_string(&value));
+ else if (name == g_intern_string("cursive-font-family"))
+ settings->setCursiveFontFamily(g_value_get_string(&value));
+ else if (name == g_intern_string("default-font-family"))
+ settings->setStandardFontFamily(g_value_get_string(&value));
+ else if (name == g_intern_string("fantasy-font-family"))
+ settings->setFantasyFontFamily(g_value_get_string(&value));
+ else if (name == g_intern_string("monospace-font-family"))
+ settings->setFixedFontFamily(g_value_get_string(&value));
+ else if (name == g_intern_string("sans-serif-font-family"))
+ settings->setSansSerifFontFamily(g_value_get_string(&value));
+ else if (name == g_intern_string("serif-font-family"))
+ settings->setSerifFontFamily(g_value_get_string(&value));
+ else if (name == g_intern_string("default-font-size"))
+ settings->setDefaultFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+ else if (name == g_intern_string("default-monospace-font-size"))
+ settings->setDefaultFixedFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+ else if (name == g_intern_string("minimum-font-size"))
+ settings->setMinimumFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+ else if (name == g_intern_string("minimum-logical-font-size"))
+ settings->setMinimumLogicalFontSize(pixelsFromSize(webView, g_value_get_int(&value)));
+ else if (name == g_intern_string("enforce-96-dpi"))
+ webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL);
+ else if (name == g_intern_string("auto-load-images"))
+ settings->setLoadsImagesAutomatically(g_value_get_boolean(&value));
+ else if (name == g_intern_string("auto-shrink-images"))
+ settings->setShrinksStandaloneImagesToFit(g_value_get_boolean(&value));
+ else if (name == g_intern_string("print-backgrounds"))
+ settings->setShouldPrintBackgrounds(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-scripts"))
+ 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("resizable-text-areas"))
+ settings->setTextAreasAreResizable(g_value_get_boolean(&value));
+ else if (name == g_intern_string("user-stylesheet-uri"))
+ settings->setUserStyleSheetLocation(KURL(KURL(), g_value_get_string(&value)));
+ else if (name == g_intern_string("enable-developer-extras"))
+ settings->setDeveloperExtrasEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-private-browsing"))
+ settings->setPrivateBrowsingEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-caret-browsing"))
+ settings->setCaretBrowsingEnabled(g_value_get_boolean(&value));
+#if ENABLE(DATABASE)
+ else if (name == g_intern_string("enable-html5-database")) {
+ AbstractDatabase::setIsAvailable(g_value_get_boolean(&value));
+ }
+#endif
+ else if (name == g_intern_string("enable-html5-local-storage"))
+ settings->setLocalStorageEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-xss-auditor"))
+ settings->setXSSAuditorEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-spatial-navigation"))
+ settings->setSpatialNavigationEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-frame-flattening"))
+ settings->setFrameFlatteningEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("javascript-can-open-windows-automatically"))
+ settings->setJavaScriptCanOpenWindowsAutomatically(g_value_get_boolean(&value));
+ else if (name == g_intern_string("javascript-can-access-clipboard"))
+ settings->setJavaScriptCanAccessClipboard(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-offline-web-application-cache"))
+ settings->setOfflineWebApplicationCacheEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("editing-behavior"))
+ settings->setEditingBehaviorType(static_cast<WebCore::EditingBehaviorType>(g_value_get_enum(&value)));
+ else if (name == g_intern_string("enable-universal-access-from-file-uris"))
+ settings->setAllowUniversalAccessFromFileURLs(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-file-access-from-file-uris"))
+ settings->setAllowFileAccessFromFileURLs(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-dom-paste"))
+ settings->setDOMPasteAllowed(g_value_get_boolean(&value));
+ else if (name == g_intern_string("tab-key-cycles-through-elements")) {
+ Page* page = core(webView);
+ if (page)
+ page->setTabKeyCyclesThroughElements(g_value_get_boolean(&value));
+ } else if (name == g_intern_string("enable-site-specific-quirks"))
+ settings->setNeedsSiteSpecificQuirks(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-page-cache"))
+ settings->setUsesPageCache(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-java-applet"))
+ settings->setJavaEnabled(g_value_get_boolean(&value));
+ else if (name == g_intern_string("enable-hyperlink-auditing"))
+ settings->setHyperlinkAuditingEnabled(g_value_get_boolean(&value));
+ else if (!g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), name))
+ g_warning("Unexpected setting '%s'", name);
+ g_value_unset(&value);
+}
+
+static void webkit_web_view_init(WebKitWebView* webView)
+{
+ WebKitWebViewPrivate* priv = G_TYPE_INSTANCE_GET_PRIVATE(webView, WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate);
+ webView->priv = priv;
+ // This is the placement new syntax: http://www.parashift.com/c++-faq-lite/dtors.html#faq-11.10
+ // It allows us to call a constructor on manually allocated locations in memory. We must use it
+ // in this case, because GLib manages the memory for the private data section, but we wish it
+ // to contain C++ object members. The use of placement new calls the constructor on all C++ data
+ // members, which ensures they are initialized properly.
+ new (priv) WebKitWebViewPrivate();
+
+ priv->imContext = adoptGRef(gtk_im_multicontext_new());
+
+ Page::PageClients pageClients;
+ pageClients.chromeClient = new WebKit::ChromeClient(webView);
+ pageClients.contextMenuClient = new WebKit::ContextMenuClient(webView);
+ pageClients.editorClient = new WebKit::EditorClient(webView);
+ pageClients.dragClient = new WebKit::DragClient(webView);
+ pageClients.inspectorClient = new WebKit::InspectorClient(webView);
+ priv->corePage = new Page(pageClients);
+
+ // Pages within a same session need to be linked together otherwise some functionalities such
+ // as visited link coloration (across pages) and changing popup window location will not work.
+ // To keep the default behavior simple (and because no PageGroup API exist in WebKitGTK at the
+ // time of writing this comment), we simply set all the pages to the same group.
+ priv->corePage->setGroupName("org.webkit.gtk.WebKitGTK");
+
+ // We also add a simple wrapper class to provide the public
+ // interface for the Web Inspector.
+ priv->webInspector = adoptGRef(WEBKIT_WEB_INSPECTOR(g_object_new(WEBKIT_TYPE_WEB_INSPECTOR, NULL)));
+ webkit_web_inspector_set_inspector_client(priv->webInspector.get(), priv->corePage);
+
+ // And our ViewportAttributes friend.
+ priv->viewportAttributes = adoptGRef(WEBKIT_VIEWPORT_ATTRIBUTES(g_object_new(WEBKIT_TYPE_VIEWPORT_ATTRIBUTES, NULL)));
+ priv->viewportAttributes->priv->webView = webView;
+
+ // The smart pointer will call g_object_ref_sink on these adjustments.
+ priv->horizontalAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
+ priv->verticalAdjustment = GTK_ADJUSTMENT(gtk_adjustment_new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0));
+
+ gtk_widget_set_can_focus(GTK_WIDGET(webView), TRUE);
+ priv->mainFrame = WEBKIT_WEB_FRAME(webkit_web_frame_new(webView));
+ priv->lastPopupXPosition = priv->lastPopupYPosition = -1;
+ priv->editable = false;
+
+ priv->backForwardList = adoptGRef(webkit_web_back_forward_list_new_with_web_view(webView));
+
+ priv->zoomFullContent = FALSE;
+
+ priv->webSettings = adoptGRef(webkit_web_settings_new());
+ webkit_web_view_update_settings(webView);
+ g_signal_connect(priv->webSettings.get(), "notify", G_CALLBACK(webkit_web_view_settings_notify), webView);
+
+ priv->webWindowFeatures = adoptGRef(webkit_web_window_features_new());
+
+ priv->subResources = adoptGRef(g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_object_unref));
+
+ priv->currentClickCount = 0;
+ priv->previousClickButton = 0;
+ priv->previousClickTime = 0;
+ gtk_drag_dest_set(GTK_WIDGET(webView), static_cast<GtkDestDefaults>(0), 0, 0, static_cast<GdkDragAction>(GDK_ACTION_COPY | GDK_ACTION_COPY | GDK_ACTION_MOVE | GDK_ACTION_LINK | GDK_ACTION_PRIVATE));
+ gtk_drag_dest_set_target_list(GTK_WIDGET(webView), pasteboardHelperInstance()->targetList());
+}
+
+GtkWidget* webkit_web_view_new(void)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, NULL));
+
+ return GTK_WIDGET(webView);
+}
+
+// for internal use only
+void webkit_web_view_notify_ready(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ gboolean isHandled = FALSE;
+ g_signal_emit(webView, webkit_web_view_signals[WEB_VIEW_READY], 0, &isHandled);
+}
+
+void webkit_web_view_request_download(WebKitWebView* webView, WebKitNetworkRequest* request, const ResourceResponse& response, ResourceHandle* handle)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitDownload* download;
+
+ if (handle)
+ download = webkit_download_new_with_handle(request, handle, response);
+ else
+ download = webkit_download_new(request);
+
+ gboolean handled;
+ g_signal_emit(webView, webkit_web_view_signals[DOWNLOAD_REQUESTED], 0, download, &handled);
+
+ if (!handled) {
+ webkit_download_cancel(download);
+ g_object_unref(download);
+ return;
+ }
+
+ /* Start the download now if it has a destination URI, otherwise it
+ may be handled asynchronously by the application. */
+ if (webkit_download_get_destination_uri(download))
+ webkit_download_start(download);
+}
+
+bool webkit_web_view_use_primary_for_paste(WebKitWebView* webView)
+{
+ return webView->priv->usePrimaryForPaste;
+}
+
+/**
+ * webkit_web_view_set_settings:
+ * @webView: a #WebKitWebView
+ * @settings: (transfer none): the #WebKitWebSettings to be set
+ *
+ * Replaces the #WebKitWebSettings instance that is currently attached
+ * to @web_view with @settings. The reference held by the @web_view on
+ * the old #WebKitWebSettings instance is dropped, and the reference
+ * count of @settings is inscreased.
+ *
+ * The settings are automatically applied to @web_view.
+ */
+void webkit_web_view_set_settings(WebKitWebView* webView, WebKitWebSettings* webSettings)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(WEBKIT_IS_WEB_SETTINGS(webSettings));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ g_signal_handlers_disconnect_by_func(priv->webSettings.get(), (gpointer)webkit_web_view_settings_notify, webView);
+ priv->webSettings = webSettings;
+ webkit_web_view_update_settings(webView);
+ g_signal_connect(webSettings, "notify", G_CALLBACK(webkit_web_view_settings_notify), webView);
+ g_object_notify(G_OBJECT(webView), "settings");
+}
+
+/**
+ * webkit_web_view_get_settings:
+ * @webView: a #WebKitWebView
+ *
+ * Obtains the #WebKitWebSettings associated with the
+ * #WebKitWebView. The #WebKitWebView always has an associated
+ * instance of #WebKitWebSettings. The reference that is returned by
+ * this call is owned by the #WebKitWebView. You may need to increase
+ * its reference count if you intend to keep it alive for longer than
+ * the #WebKitWebView.
+ *
+ * Return value: (transfer none): the #WebKitWebSettings instance
+ */
+WebKitWebSettings* webkit_web_view_get_settings(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+ return webView->priv->webSettings.get();
+}
+
+/**
+ * webkit_web_view_get_inspector:
+ * @webView: a #WebKitWebView
+ *
+ * Obtains the #WebKitWebInspector associated with the
+ * #WebKitWebView. Every #WebKitWebView object has a
+ * #WebKitWebInspector object attached to it as soon as it is created,
+ * so this function will only return NULL if the argument is not a
+ * valid #WebKitWebView.
+ *
+ * Return value: (transfer none): the #WebKitWebInspector instance.
+ *
+ * Since: 1.0.3
+ */
+WebKitWebInspector* webkit_web_view_get_inspector(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+ return webView->priv->webInspector.get();
+}
+
+/**
+ * webkit_web_view_get_viewport_attributes:
+ * @webView: a #WebKitWebView
+ *
+ * Obtains the #WebKitViewportAttributes associated with the
+ * #WebKitWebView. Every #WebKitWebView object has a
+ * #WebKitWebViewporAttributes object attached to it as soon as it is
+ * created, so this function will only return NULL if the argument is
+ * not a valid #WebKitWebView. Do note however that the viewport
+ * attributes object only contains valid information when the current
+ * page has a viewport meta tag. You can check whether the data should
+ * be used by checking the #WebKitViewport:valid property.
+ *
+ * Return value: (transfer none): the #WebKitViewportAttributes instance.
+ *
+ * Since: 1.3.8
+ */
+WebKitViewportAttributes* webkit_web_view_get_viewport_attributes(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+ return webView->priv->viewportAttributes.get();
+}
+
+// internal
+static void webkit_web_view_set_window_features(WebKitWebView* webView, WebKitWebWindowFeatures* webWindowFeatures)
+{
+ if (!webWindowFeatures)
+ return;
+ if (webkit_web_window_features_equal(webView->priv->webWindowFeatures.get(), webWindowFeatures))
+ return;
+ webView->priv->webWindowFeatures = webWindowFeatures;
+}
+
+/**
+ * webkit_web_view_get_window_features:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the instance of #WebKitWebWindowFeatures held by the given
+ * #WebKitWebView.
+ *
+ * Return value: (transfer none): the #WebKitWebWindowFeatures
+ *
+ * Since: 1.0.3
+ */
+WebKitWebWindowFeatures* webkit_web_view_get_window_features(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+ return webView->priv->webWindowFeatures.get();
+}
+
+/**
+ * webkit_web_view_get_title:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the @web_view's document title
+ *
+ * Since: 1.1.4
+ *
+ * Return value: the title of @web_view
+ */
+G_CONST_RETURN gchar* webkit_web_view_get_title(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ return priv->mainFrame->priv->title;
+}
+
+/**
+ * webkit_web_view_get_uri:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the current URI of the contents displayed by the @web_view
+ *
+ * Since: 1.1.4
+ *
+ * Return value: the URI of @web_view
+ */
+G_CONST_RETURN gchar* webkit_web_view_get_uri(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ return priv->mainFrame->priv->uri;
+}
+
+/**
+ * webkit_web_view_set_maintains_back_forward_list:
+ * @webView: a #WebKitWebView
+ * @flag: to tell the view to maintain a back or forward list
+ *
+ * Set the view to maintain a back or forward list of history items.
+ */
+void webkit_web_view_set_maintains_back_forward_list(WebKitWebView* webView, gboolean flag)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ static_cast<BackForwardListImpl*>(core(webView)->backForwardList())->setEnabled(flag);
+}
+
+/**
+ * webkit_web_view_get_back_forward_list:
+ * @webView: a #WebKitWebView
+ *
+ * Obtains the #WebKitWebBackForwardList associated with the given #WebKitWebView. The
+ * #WebKitWebBackForwardList is owned by the #WebKitWebView.
+ *
+ * Return value: (transfer none): the #WebKitWebBackForwardList
+ */
+WebKitWebBackForwardList* webkit_web_view_get_back_forward_list(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+ if (!core(webView) || !static_cast<BackForwardListImpl*>(core(webView)->backForwardList())->enabled())
+ return 0;
+ return webView->priv->backForwardList.get();
+}
+
+/**
+ * webkit_web_view_go_to_back_forward_item:
+ * @webView: a #WebKitWebView
+ * @item: a #WebKitWebHistoryItem*
+ *
+ * Go to the specified #WebKitWebHistoryItem
+ *
+ * Return value: %TRUE if loading of item is successful, %FALSE if not
+ */
+gboolean webkit_web_view_go_to_back_forward_item(WebKitWebView* webView, WebKitWebHistoryItem* item)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+ g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(item), FALSE);
+
+ WebKitWebBackForwardList* backForwardList = webkit_web_view_get_back_forward_list(webView);
+ if (!webkit_web_back_forward_list_contains_item(backForwardList, item))
+ return FALSE;
+
+ core(webView)->goToItem(core(item), FrameLoadTypeIndexedBackForward);
+ return TRUE;
+}
+
+/**
+ * webkit_web_view_go_back:
+ * @webView: a #WebKitWebView
+ *
+ * Loads the previous history item.
+ */
+void webkit_web_view_go_back(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ core(webView)->goBack();
+}
+
+/**
+ * webkit_web_view_go_back_or_forward:
+ * @webView: a #WebKitWebView
+ * @steps: the number of steps
+ *
+ * Loads the history item that is the number of @steps away from the current
+ * item. Negative values represent steps backward while positive values
+ * represent steps forward.
+ */
+void webkit_web_view_go_back_or_forward(WebKitWebView* webView, gint steps)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ core(webView)->goBackOrForward(steps);
+}
+
+/**
+ * webkit_web_view_go_forward:
+ * @webView: a #WebKitWebView
+ *
+ * Loads the next history item.
+ */
+void webkit_web_view_go_forward(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ core(webView)->goForward();
+}
+
+/**
+ * webkit_web_view_can_go_back:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether #web_view has a previous history item.
+ *
+ * Return value: %TRUE if able to move back, %FALSE otherwise
+ */
+gboolean webkit_web_view_can_go_back(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ if (!core(webView) || !core(webView)->backForwardList()->backItem())
+ return FALSE;
+
+ return TRUE;
+}
+
+/**
+ * webkit_web_view_can_go_back_or_forward:
+ * @webView: a #WebKitWebView
+ * @steps: the number of steps
+ *
+ * Determines whether #web_view has a history item of @steps. Negative values
+ * represent steps backward while positive values represent steps forward.
+ *
+ * Return value: %TRUE if able to move back or forward the given number of
+ * steps, %FALSE otherwise
+ */
+gboolean webkit_web_view_can_go_back_or_forward(WebKitWebView* webView, gint steps)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ return core(webView)->canGoBackOrForward(steps);
+}
+
+/**
+ * webkit_web_view_can_go_forward:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether #web_view has a next history item.
+ *
+ * Return value: %TRUE if able to move forward, %FALSE otherwise
+ */
+gboolean webkit_web_view_can_go_forward(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ Page* page = core(webView);
+
+ if (!page)
+ return FALSE;
+
+ if (!page->backForwardList()->forwardItem())
+ return FALSE;
+
+ return TRUE;
+}
+
+/**
+ * webkit_web_view_open:
+ * @webView: a #WebKitWebView
+ * @uri: an URI
+ *
+ * Requests loading of the specified URI string.
+ *
+ * Deprecated: 1.1.1: Use webkit_web_view_load_uri() instead.
+ */
+void webkit_web_view_open(WebKitWebView* webView, const gchar* uri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(uri);
+
+ // We used to support local paths, unlike the newer
+ // function webkit_web_view_load_uri
+ if (g_path_is_absolute(uri)) {
+ gchar* fileUri = g_filename_to_uri(uri, NULL, NULL);
+ webkit_web_view_load_uri(webView, fileUri);
+ g_free(fileUri);
+ }
+ else
+ webkit_web_view_load_uri(webView, uri);
+}
+
+void webkit_web_view_reload(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ core(webView)->mainFrame()->loader()->reload();
+}
+
+/**
+ * webkit_web_view_reload_bypass_cache:
+ * @webView: a #WebKitWebView
+ *
+ * Reloads the @web_view without using any cached data.
+ *
+ * Since: 1.0.3
+ */
+void webkit_web_view_reload_bypass_cache(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ core(webView)->mainFrame()->loader()->reload(true);
+}
+
+/**
+ * webkit_web_view_load_uri:
+ * @webView: a #WebKitWebView
+ * @uri: an URI string
+ *
+ * Requests loading of the specified URI string.
+ *
+ * Since: 1.1.1
+ */
+void webkit_web_view_load_uri(WebKitWebView* webView, const gchar* uri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(uri);
+
+ WebKitWebFrame* frame = webView->priv->mainFrame;
+ webkit_web_frame_load_uri(frame, uri);
+}
+
+/**
+ * webkit_web_view_load_string:
+ * @webView: a #WebKitWebView
+ * @content: an URI string
+ * @mime_type: the MIME type, or %NULL
+ * @encoding: the encoding, or %NULL
+ * @base_uri: the base URI for relative locations
+ *
+ * Requests loading of the given @content with the specified @mime_type,
+ * @encoding and @base_uri.
+ *
+ * If @mime_type is %NULL, "text/html" is assumed.
+ *
+ * If @encoding is %NULL, "UTF-8" is assumed.
+ */
+void webkit_web_view_load_string(WebKitWebView* webView, const gchar* content, const gchar* mimeType, const gchar* encoding, const gchar* baseUri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(content);
+
+ WebKitWebFrame* frame = webView->priv->mainFrame;
+ webkit_web_frame_load_string(frame, content, mimeType, encoding, baseUri);
+}
+/**
+ * webkit_web_view_load_html_string:
+ * @webView: a #WebKitWebView
+ * @content: an URI string
+ * @base_uri: the base URI for relative locations
+ *
+ * Requests loading of the given @content with the specified @base_uri.
+ *
+ * Deprecated: 1.1.1: Use webkit_web_view_load_string() instead.
+ */
+void webkit_web_view_load_html_string(WebKitWebView* webView, const gchar* content, const gchar* baseUri)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(content);
+
+ webkit_web_view_load_string(webView, content, NULL, NULL, baseUri);
+}
+
+/**
+ * webkit_web_view_load_request:
+ * @webView: a #WebKitWebView
+ * @request: a #WebKitNetworkRequest
+ *
+ * Requests loading of the specified asynchronous client request.
+ *
+ * Creates a provisional data source that will transition to a committed data
+ * source once any data has been received. Use webkit_web_view_stop_loading() to
+ * stop the load.
+ *
+ * Since: 1.1.1
+ */
+void webkit_web_view_load_request(WebKitWebView* webView, WebKitNetworkRequest* request)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(WEBKIT_IS_NETWORK_REQUEST(request));
+
+ WebKitWebFrame* frame = webView->priv->mainFrame;
+ webkit_web_frame_load_request(frame, request);
+}
+
+/**
+ * webkit_web_view_stop_loading:
+ * @webView: a #WebKitWebView
+ *
+ * Stops any ongoing load in the @webView.
+ **/
+void webkit_web_view_stop_loading(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ Frame* frame = core(webView)->mainFrame();
+
+ if (FrameLoader* loader = frame->loader())
+ loader->stopForUserCancel();
+}
+
+/**
+ * webkit_web_view_search_text:
+ * @webView: a #WebKitWebView
+ * @text: a string to look for
+ * @forward: whether to find forward or not
+ * @case_sensitive: whether to respect the case of text
+ * @wrap: whether to continue looking at the beginning after reaching the end
+ *
+ * Looks for a specified string inside #web_view.
+ *
+ * Return value: %TRUE on success or %FALSE on failure
+ */
+gboolean webkit_web_view_search_text(WebKitWebView* webView, const gchar* string, gboolean caseSensitive, gboolean forward, gboolean shouldWrap)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+ g_return_val_if_fail(string, FALSE);
+
+ TextCaseSensitivity caseSensitivity = caseSensitive ? TextCaseSensitive : TextCaseInsensitive;
+ FindDirection direction = forward ? FindDirectionForward : FindDirectionBackward;
+
+ return core(webView)->findString(String::fromUTF8(string), caseSensitivity, direction, shouldWrap);
+}
+
+/**
+ * webkit_web_view_mark_text_matches:
+ * @webView: a #WebKitWebView
+ * @string: a string to look for
+ * @case_sensitive: whether to respect the case of text
+ * @limit: the maximum number of strings to look for or 0 for all
+ *
+ * Attempts to highlight all occurances of #string inside #web_view.
+ *
+ * Return value: the number of strings highlighted
+ */
+guint webkit_web_view_mark_text_matches(WebKitWebView* webView, const gchar* string, gboolean caseSensitive, guint limit)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+ g_return_val_if_fail(string, 0);
+
+ TextCaseSensitivity caseSensitivity = caseSensitive ? TextCaseSensitive : TextCaseInsensitive;
+
+ return core(webView)->markAllMatchesForText(String::fromUTF8(string), caseSensitivity, false, limit);
+}
+
+/**
+ * webkit_web_view_set_highlight_text_matches:
+ * @webView: a #WebKitWebView
+ * @highlight: whether to highlight text matches
+ *
+ * Highlights text matches previously marked by webkit_web_view_mark_text_matches.
+ */
+void webkit_web_view_set_highlight_text_matches(WebKitWebView* webView, gboolean shouldHighlight)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ Frame *frame = core(webView)->mainFrame();
+ do {
+ frame->editor()->setMarkedTextMatchesAreHighlighted(shouldHighlight);
+ frame = frame->tree()->traverseNextWithWrap(false);
+ } while (frame);
+}
+
+/**
+ * webkit_web_view_unmark_text_matches:
+ * @webView: a #WebKitWebView
+ *
+ * Removes highlighting previously set by webkit_web_view_mark_text_matches.
+ */
+void webkit_web_view_unmark_text_matches(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ return core(webView)->unmarkAllTextMatches();
+}
+
+/**
+ * webkit_web_view_get_main_frame:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the main frame for the @webView.
+ *
+ * Return value: (transfer none): the main #WebKitWebFrame for @webView
+ */
+WebKitWebFrame* webkit_web_view_get_main_frame(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+
+ return webView->priv->mainFrame;
+}
+
+/**
+ * webkit_web_view_get_focused_frame:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the frame that has focus or an active text selection.
+ *
+ * Return value: (transfer none): The focused #WebKitWebFrame or %NULL if no frame is focused
+ */
+WebKitWebFrame* webkit_web_view_get_focused_frame(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+
+ Frame* focusedFrame = core(webView)->focusController()->focusedFrame();
+ return kit(focusedFrame);
+}
+
+void webkit_web_view_execute_script(WebKitWebView* webView, const gchar* script)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(script);
+
+ core(webView)->mainFrame()->script()->executeScript(String::fromUTF8(script), true);
+}
+
+/**
+ * webkit_web_view_can_cut_clipboard:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether or not it is currently possible to cut to the clipboard.
+ *
+ * Return value: %TRUE if a selection can be cut, %FALSE if not
+ */
+gboolean webkit_web_view_can_cut_clipboard(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ return frame->editor()->canCut() || frame->editor()->canDHTMLCut();
+}
+
+/**
+ * webkit_web_view_can_copy_clipboard:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether or not it is currently possible to copy to the clipboard.
+ *
+ * Return value: %TRUE if a selection can be copied, %FALSE if not
+ */
+gboolean webkit_web_view_can_copy_clipboard(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ return frame->editor()->canCopy() || frame->editor()->canDHTMLCopy();
+}
+
+/**
+ * webkit_web_view_can_paste_clipboard:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether or not it is currently possible to paste from the clipboard.
+ *
+ * Return value: %TRUE if a selection can be pasted, %FALSE if not
+ */
+gboolean webkit_web_view_can_paste_clipboard(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ return frame->editor()->canPaste() || frame->editor()->canDHTMLPaste();
+}
+
+/**
+ * webkit_web_view_cut_clipboard:
+ * @webView: a #WebKitWebView
+ *
+ * Cuts the current selection inside the @web_view to the clipboard.
+ */
+void webkit_web_view_cut_clipboard(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ if (webkit_web_view_can_cut_clipboard(webView))
+ g_signal_emit(webView, webkit_web_view_signals[CUT_CLIPBOARD], 0);
+}
+
+/**
+ * webkit_web_view_copy_clipboard:
+ * @webView: a #WebKitWebView
+ *
+ * Copies the current selection inside the @web_view to the clipboard.
+ */
+void webkit_web_view_copy_clipboard(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ if (webkit_web_view_can_copy_clipboard(webView))
+ g_signal_emit(webView, webkit_web_view_signals[COPY_CLIPBOARD], 0);
+}
+
+/**
+ * webkit_web_view_paste_clipboard:
+ * @webView: a #WebKitWebView
+ *
+ * Pastes the current contents of the clipboard to the @web_view.
+ */
+void webkit_web_view_paste_clipboard(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ if (webkit_web_view_can_paste_clipboard(webView))
+ g_signal_emit(webView, webkit_web_view_signals[PASTE_CLIPBOARD], 0);
+}
+
+/**
+ * webkit_web_view_delete_selection:
+ * @webView: a #WebKitWebView
+ *
+ * Deletes the current selection inside the @web_view.
+ */
+void webkit_web_view_delete_selection(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ frame->editor()->performDelete();
+}
+
+/**
+ * webkit_web_view_has_selection:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether text was selected.
+ *
+ * Return value: %TRUE if there is selected text, %FALSE if not
+ */
+gboolean webkit_web_view_has_selection(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ return !core(webView)->selection().isNone();
+}
+
+/**
+ * webkit_web_view_get_selected_text:
+ * @webView: a #WebKitWebView
+ *
+ * Retrieves the selected text if any.
+ *
+ * Return value: a newly allocated string with the selection or %NULL
+ */
+gchar* webkit_web_view_get_selected_text(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ return g_strdup(frame->editor()->selectedText().utf8().data());
+}
+
+/**
+ * webkit_web_view_select_all:
+ * @webView: a #WebKitWebView
+ *
+ * Attempts to select everything inside the @web_view.
+ */
+void webkit_web_view_select_all(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ g_signal_emit(webView, webkit_web_view_signals[SELECT_ALL], 0);
+}
+
+/**
+ * webkit_web_view_get_editable:
+ * @webView: a #WebKitWebView
+ *
+ * Returns whether the user is allowed to edit the document.
+ *
+ * Returns %TRUE if @web_view allows the user to edit the HTML document, %FALSE if
+ * it doesn't. You can change @web_view's document programmatically regardless of
+ * this setting.
+ *
+ * Return value: a #gboolean indicating the editable state
+ */
+gboolean webkit_web_view_get_editable(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ return priv->editable;
+}
+
+/**
+ * webkit_web_view_set_editable:
+ * @webView: a #WebKitWebView
+ * @flag: a #gboolean indicating the editable state
+ *
+ * Sets whether @web_view allows the user to edit its HTML document.
+ *
+ * If @flag is %TRUE, @web_view allows the user to edit the document. If @flag is
+ * %FALSE, an element in @web_view's document can only be edited if the
+ * CONTENTEDITABLE attribute has been set on the element or one of its parent
+ * elements. You can change @web_view's document programmatically regardless of
+ * this setting. By default a #WebKitWebView is not editable.
+
+ * Normally, an HTML document is not editable unless the elements within the
+ * document are editable. This function provides a low-level way to make the
+ * contents of a #WebKitWebView editable without altering the document or DOM
+ * structure.
+ */
+void webkit_web_view_set_editable(WebKitWebView* webView, gboolean flag)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ Frame* frame = core(webView)->mainFrame();
+ g_return_if_fail(frame);
+
+ // TODO: What happens when the frame is replaced?
+ flag = flag != FALSE;
+ if (flag == priv->editable)
+ return;
+
+ priv->editable = flag;
+
+ if (flag) {
+ frame->editor()->applyEditingStyleToBodyElement();
+ // TODO: If the WebKitWebView is made editable and the selection is empty, set it to something.
+ //if (!webkit_web_view_get_selected_dom_range(webView))
+ // mainFrame->setSelectionFromNone();
+ }
+ g_object_notify(G_OBJECT(webView), "editable");
+}
+
+/**
+ * webkit_web_view_get_copy_target_list:
+ * @webView: a #WebKitWebView
+ *
+ * This function returns the list of targets this #WebKitWebView can
+ * provide for clipboard copying and as DND source. The targets in the list are
+ * added with values from the #WebKitWebViewTargetInfo enum,
+ * using gtk_target_list_add() and
+ * gtk_target_list_add_text_targets().
+ *
+ * Return value: the #GtkTargetList
+ **/
+GtkTargetList* webkit_web_view_get_copy_target_list(WebKitWebView* webView)
+{
+ return pasteboardHelperInstance()->targetList();
+}
+
+/**
+ * webkit_web_view_get_paste_target_list:
+ * @webView: a #WebKitWebView
+ *
+ * This function returns the list of targets this #WebKitWebView can
+ * provide for clipboard pasting and as DND destination. The targets in the list are
+ * added with values from the #WebKitWebViewTargetInfo enum,
+ * using gtk_target_list_add() and
+ * gtk_target_list_add_text_targets().
+ *
+ * Return value: the #GtkTargetList
+ **/
+GtkTargetList* webkit_web_view_get_paste_target_list(WebKitWebView* webView)
+{
+ return pasteboardHelperInstance()->targetList();
+}
+
+/**
+ * webkit_web_view_can_show_mime_type:
+ * @webView: a #WebKitWebView
+ * @mime_type: a MIME type
+ *
+ * This functions returns whether or not a MIME type can be displayed using this view.
+ *
+ * Return value: a #gboolean indicating if the MIME type can be displayed
+ *
+ * Since: 1.0.3
+ **/
+
+gboolean webkit_web_view_can_show_mime_type(WebKitWebView* webView, const gchar* mimeType)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ Frame* frame = core(webkit_web_view_get_main_frame(webView));
+ if (FrameLoader* loader = frame->loader())
+ return loader->canShowMIMEType(String::fromUTF8(mimeType));
+ else
+ return FALSE;
+}
+
+/**
+ * webkit_web_view_get_transparent:
+ * @webView: a #WebKitWebView
+ *
+ * Returns whether the #WebKitWebView has a transparent background.
+ *
+ * Return value: %FALSE when the #WebKitWebView draws a solid background
+ * (the default), otherwise %TRUE.
+ */
+gboolean webkit_web_view_get_transparent(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ return priv->transparent;
+}
+
+/**
+ * webkit_web_view_set_transparent:
+ * @webView: a #WebKitWebView
+ *
+ * Sets whether the #WebKitWebView has a transparent background.
+ *
+ * Pass %FALSE to have the #WebKitWebView draw a solid background
+ * (the default), otherwise %TRUE.
+ */
+void webkit_web_view_set_transparent(WebKitWebView* webView, gboolean flag)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ priv->transparent = flag;
+
+ // TODO: This needs to be made persistent or it could become a problem when
+ // the main frame is replaced.
+ Frame* frame = core(webView)->mainFrame();
+ g_return_if_fail(frame);
+ frame->view()->setTransparent(flag);
+ g_object_notify(G_OBJECT(webView), "transparent");
+}
+
+/**
+ * webkit_web_view_get_zoom_level:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the zoom level of @web_view, i.e. the factor by which elements in
+ * the page are scaled with respect to their original size.
+ * If the "full-content-zoom" property is set to %FALSE (the default)
+ * the zoom level changes the text size, or if %TRUE, scales all
+ * elements in the page.
+ *
+ * Return value: the zoom level of @web_view
+ *
+ * Since: 1.0.1
+ */
+gfloat webkit_web_view_get_zoom_level(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 1.0f);
+
+ Frame* frame = core(webView)->mainFrame();
+ if (!frame)
+ return 1.0f;
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ return priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor();
+}
+
+static void webkit_web_view_apply_zoom_level(WebKitWebView* webView, gfloat zoomLevel)
+{
+ Frame* frame = core(webView)->mainFrame();
+ if (!frame)
+ return;
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ if (priv->zoomFullContent)
+ frame->setPageZoomFactor(zoomLevel);
+ else
+ frame->setTextZoomFactor(zoomLevel);
+}
+
+/**
+ * webkit_web_view_set_zoom_level:
+ * @webView: a #WebKitWebView
+ * @zoom_level: the new zoom level
+ *
+ * Sets the zoom level of @web_view, i.e. the factor by which elements in
+ * the page are scaled with respect to their original size.
+ * If the "full-content-zoom" property is set to %FALSE (the default)
+ * the zoom level changes the text size, or if %TRUE, scales all
+ * elements in the page.
+ *
+ * Since: 1.0.1
+ */
+void webkit_web_view_set_zoom_level(WebKitWebView* webView, gfloat zoomLevel)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ webkit_web_view_apply_zoom_level(webView, zoomLevel);
+ g_object_notify(G_OBJECT(webView), "zoom-level");
+}
+
+/**
+ * webkit_web_view_zoom_in:
+ * @webView: a #WebKitWebView
+ *
+ * Increases the zoom level of @web_view. The current zoom
+ * level is incremented by the value of the "zoom-step"
+ * property of the #WebKitWebSettings associated with @web_view.
+ *
+ * Since: 1.0.1
+ */
+void webkit_web_view_zoom_in(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ gfloat zoomMultiplierRatio;
+ g_object_get(priv->webSettings.get(), "zoom-step", &zoomMultiplierRatio, NULL);
+
+ webkit_web_view_set_zoom_level(webView, webkit_web_view_get_zoom_level(webView) + zoomMultiplierRatio);
+}
+
+/**
+ * webkit_web_view_zoom_out:
+ * @webView: a #WebKitWebView
+ *
+ * Decreases the zoom level of @web_view. The current zoom
+ * level is decremented by the value of the "zoom-step"
+ * property of the #WebKitWebSettings associated with @web_view.
+ *
+ * Since: 1.0.1
+ */
+void webkit_web_view_zoom_out(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ gfloat zoomMultiplierRatio;
+ g_object_get(priv->webSettings.get(), "zoom-step", &zoomMultiplierRatio, NULL);
+
+ webkit_web_view_set_zoom_level(webView, webkit_web_view_get_zoom_level(webView) - zoomMultiplierRatio);
+}
+
+/**
+ * webkit_web_view_get_full_content_zoom:
+ * @webView: a #WebKitWebView
+ *
+ * Returns whether the zoom level affects only text or all elements.
+ *
+ * Return value: %FALSE if only text should be scaled (the default),
+ * %TRUE if the full content of the view should be scaled.
+ *
+ * Since: 1.0.1
+ */
+gboolean webkit_web_view_get_full_content_zoom(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ return priv->zoomFullContent;
+}
+
+/**
+ * webkit_web_view_set_full_content_zoom:
+ * @webView: a #WebKitWebView
+ * @full_content_zoom: %FALSE if only text should be scaled (the default),
+ * %TRUE if the full content of the view should be scaled.
+ *
+ * Sets whether the zoom level affects only text or all elements.
+ *
+ * Since: 1.0.1
+ */
+void webkit_web_view_set_full_content_zoom(WebKitWebView* webView, gboolean zoomFullContent)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ if (priv->zoomFullContent == zoomFullContent)
+ return;
+
+ Frame* frame = core(webView)->mainFrame();
+ if (!frame)
+ return;
+
+ gfloat zoomLevel = priv->zoomFullContent ? frame->pageZoomFactor() : frame->textZoomFactor();
+
+ priv->zoomFullContent = zoomFullContent;
+ if (priv->zoomFullContent)
+ frame->setPageAndTextZoomFactors(zoomLevel, 1);
+ else
+ frame->setPageAndTextZoomFactors(1, zoomLevel);
+
+ g_object_notify(G_OBJECT(webView), "full-content-zoom");
+}
+
+/**
+ * webkit_web_view_get_load_status:
+ * @webView: a #WebKitWebView
+ *
+ * Determines the current status of the load.
+ *
+ * Since: 1.1.7
+ */
+WebKitLoadStatus webkit_web_view_get_load_status(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), WEBKIT_LOAD_FINISHED);
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ return priv->loadStatus;
+}
+
+/**
+ * webkit_web_view_get_progress:
+ * @webView: a #WebKitWebView
+ *
+ * Determines the current progress of the load.
+ *
+ * Since: 1.1.7
+ */
+gdouble webkit_web_view_get_progress(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 1.0);
+
+ return core(webView)->progress()->estimatedProgress();
+}
+
+/**
+ * webkit_web_view_get_encoding:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the default encoding of the #WebKitWebView.
+ *
+ * Return value: the default encoding
+ *
+ * Since: 1.1.1
+ */
+const gchar* webkit_web_view_get_encoding(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+ String encoding = core(webView)->mainFrame()->loader()->writer()->encoding();
+ if (encoding.isEmpty())
+ return 0;
+ webView->priv->encoding = encoding.utf8();
+ return webView->priv->encoding.data();
+}
+
+/**
+ * webkit_web_view_set_custom_encoding:
+ * @webView: a #WebKitWebView
+ * @encoding: the new encoding, or %NULL to restore the default encoding
+ *
+ * Sets the current #WebKitWebView encoding, without modifying the default one,
+ * and reloads the page.
+ *
+ * Since: 1.1.1
+ */
+void webkit_web_view_set_custom_encoding(WebKitWebView* webView, const char* encoding)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ core(webView)->mainFrame()->loader()->reloadWithOverrideEncoding(String::fromUTF8(encoding));
+}
+
+/**
+ * webkit_web_view_get_custom_encoding:
+ * @webView: a #WebKitWebView
+ *
+ * Returns the current encoding of the #WebKitWebView, not the default-encoding
+ * of WebKitWebSettings.
+ *
+ * Return value: a string containing the current custom encoding for @web_view, or %NULL if there's none set.
+ *
+ * Since: 1.1.1
+ */
+const char* webkit_web_view_get_custom_encoding(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+ String overrideEncoding = core(webView)->mainFrame()->loader()->documentLoader()->overrideEncoding();
+ if (overrideEncoding.isEmpty())
+ return 0;
+ webView->priv->customEncoding = overrideEncoding.utf8();
+ return webView->priv->customEncoding.data();
+}
+
+/**
+ * webkit_web_view_set_view_mode:
+ * @webView: the #WebKitWebView that will have its view mode set
+ * @mode: the %WebKitWebViewViewMode to be set
+ *
+ * Sets the view-mode property of the #WebKitWebView. Check the
+ * property's documentation for more information.
+ *
+ * Since: 1.3.4
+ */
+void webkit_web_view_set_view_mode(WebKitWebView* webView, WebKitWebViewViewMode mode)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ Page* page = core(webView);
+
+ switch (mode) {
+ case WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING:
+ page->setViewMode(Page::ViewModeFloating);
+ break;
+ case WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN:
+ page->setViewMode(Page::ViewModeFullscreen);
+ break;
+ case WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED:
+ page->setViewMode(Page::ViewModeMaximized);
+ break;
+ case WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED:
+ page->setViewMode(Page::ViewModeMinimized);
+ break;
+ default:
+ page->setViewMode(Page::ViewModeWindowed);
+ break;
+ }
+}
+
+/**
+ * webkit_web_view_get_view_mode:
+ * @webView: the #WebKitWebView to obtain the view mode from
+ *
+ * Gets the value of the view-mode property of the
+ * #WebKitWebView. Check the property's documentation for more
+ * information.
+ *
+ * Return value: the %WebKitWebViewViewMode currently set for the
+ * #WebKitWebView.
+ *
+ * Since: 1.3.4
+ */
+WebKitWebViewViewMode webkit_web_view_get_view_mode(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED);
+
+ Page* page = core(webView);
+ Page::ViewMode mode = page->viewMode();
+
+ if (mode == Page::ViewModeFloating)
+ return WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING;
+
+ if (mode == Page::ViewModeFullscreen)
+ return WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN;
+
+ if (mode == Page::ViewModeMaximized)
+ return WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED;
+
+ if (mode == Page::ViewModeMinimized)
+ return WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED;
+
+ return WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED;
+}
+
+/**
+ * webkit_web_view_move_cursor:
+ * @webView: a #WebKitWebView
+ * @step: a #GtkMovementStep
+ * @count: integer describing the direction of the movement. 1 for forward, -1 for backwards.
+ *
+ * Move the cursor in @view as described by @step and @count.
+ *
+ * Since: 1.1.4
+ */
+void webkit_web_view_move_cursor(WebKitWebView* webView, GtkMovementStep step, gint count)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+ g_return_if_fail(step == GTK_MOVEMENT_VISUAL_POSITIONS ||
+ step == GTK_MOVEMENT_DISPLAY_LINES ||
+ step == GTK_MOVEMENT_PAGES ||
+ step == GTK_MOVEMENT_BUFFER_ENDS);
+ g_return_if_fail(count == 1 || count == -1);
+
+ gboolean handled;
+ g_signal_emit(webView, webkit_web_view_signals[MOVE_CURSOR], 0, step, count, &handled);
+}
+
+/**
+ * webkit_web_view_can_undo:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether or not it is currently possible to undo the last
+ * editing command in the view.
+ *
+ * Return value: %TRUE if a undo can be done, %FALSE if not
+ *
+ * Since: 1.1.14
+ */
+gboolean webkit_web_view_can_undo(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ return frame->editor()->canUndo();
+}
+
+/**
+ * webkit_web_view_undo:
+ * @webView: a #WebKitWebView
+ *
+ * Undoes the last editing command in the view, if possible.
+ *
+ * Since: 1.1.14
+ */
+void webkit_web_view_undo(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ if (webkit_web_view_can_undo(webView))
+ g_signal_emit(webView, webkit_web_view_signals[UNDO], 0);
+}
+
+/**
+ * webkit_web_view_can_redo:
+ * @webView: a #WebKitWebView
+ *
+ * Determines whether or not it is currently possible to redo the last
+ * editing command in the view.
+ *
+ * Return value: %TRUE if a redo can be done, %FALSE if not
+ *
+ * Since: 1.1.14
+ */
+gboolean webkit_web_view_can_redo(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ return frame->editor()->canRedo();
+}
+
+/**
+ * webkit_web_view_redo:
+ * @webView: a #WebKitWebView
+ *
+ * Redoes the last editing command in the view, if possible.
+ *
+ * Since: 1.1.14
+ */
+void webkit_web_view_redo(WebKitWebView* webView)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ if (webkit_web_view_can_redo(webView))
+ g_signal_emit(webView, webkit_web_view_signals[REDO], 0);
+}
+
+
+/**
+ * webkit_web_view_set_view_source_mode:
+ * @webView: a #WebKitWebView
+ * @view_source_mode: the mode to turn on or off view source mode
+ *
+ * Set whether the view should be in view source mode. Setting this mode to
+ * %TRUE before loading a URI will display the source of the web page in a
+ * nice and readable format.
+ *
+ * Since: 1.1.14
+ */
+void webkit_web_view_set_view_source_mode (WebKitWebView* webView, gboolean mode)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ if (Frame* mainFrame = core(webView)->mainFrame())
+ mainFrame->setInViewSourceMode(mode);
+}
+
+/**
+ * webkit_web_view_get_view_source_mode:
+ * @webView: a #WebKitWebView
+ *
+ * Return value: %TRUE if @web_view is in view source mode, %FALSE otherwise.
+ *
+ * Since: 1.1.14
+ */
+gboolean webkit_web_view_get_view_source_mode (WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), FALSE);
+
+ if (Frame* mainFrame = core(webView)->mainFrame())
+ return mainFrame->inViewSourceMode();
+
+ return FALSE;
+}
+
+// Internal subresource management
+void webkit_web_view_add_main_resource(WebKitWebView* webView, const char* identifier, WebKitWebResource* webResource)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ priv->mainResource = adoptGRef(webResource);
+ priv->mainResourceIdentifier = identifier;
+}
+
+void webkit_web_view_add_resource(WebKitWebView* webView, const char* identifier, WebKitWebResource* webResource)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+ g_hash_table_insert(priv->subResources.get(), g_strdup(identifier), webResource);
+}
+
+void webkit_web_view_remove_resource(WebKitWebView* webView, const char* identifier)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+ if (g_str_equal(identifier, priv->mainResourceIdentifier.data())) {
+ priv->mainResourceIdentifier = "";
+ priv->mainResource = 0;
+ } else
+ g_hash_table_remove(priv->subResources.get(), identifier);
+}
+
+WebKitWebResource* webkit_web_view_get_resource(WebKitWebView* webView, char* identifier)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+ gpointer webResource = 0;
+ gboolean resourceFound = g_hash_table_lookup_extended(priv->subResources.get(), identifier, NULL, &webResource);
+
+ // The only resource we do not store in this hash table is the
+ // main! If we did not find a request, it probably means the load
+ // has been interrupted while while a resource was still being
+ // loaded.
+ if (!resourceFound && !g_str_equal(identifier, priv->mainResourceIdentifier.data()))
+ return 0;
+
+ if (!webResource)
+ return webkit_web_view_get_main_resource(webView);
+
+ return WEBKIT_WEB_RESOURCE(webResource);
+}
+
+WebKitWebResource* webkit_web_view_get_main_resource(WebKitWebView* webView)
+{
+ return webView->priv->mainResource.get();
+}
+
+void webkit_web_view_clear_resources(WebKitWebView* webView)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (priv->subResources)
+ g_hash_table_remove_all(priv->subResources.get());
+}
+
+GList* webkit_web_view_get_subresources(WebKitWebView* webView)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+ GList* subResources = g_hash_table_get_values(priv->subResources.get());
+ return g_list_remove(subResources, priv->mainResource.get());
+}
+
+/* From EventHandler.cpp */
+static IntPoint documentPointForWindowPoint(Frame* frame, const IntPoint& windowPoint)
+{
+ FrameView* view = frame->view();
+ // FIXME: Is it really OK to use the wrong coordinates here when view is 0?
+ // Historically the code would just crash; this is clearly no worse than that.
+ return view ? view->windowToContents(windowPoint) : windowPoint;
+}
+
+void webkit_web_view_set_tooltip_text(WebKitWebView* webView, const char* tooltip)
+{
+#if GTK_CHECK_VERSION(2, 12, 0)
+ WebKitWebViewPrivate* priv = webView->priv;
+ if (tooltip && *tooltip != '\0') {
+ priv->tooltipText = tooltip;
+ gtk_widget_set_has_tooltip(GTK_WIDGET(webView), TRUE);
+ } else {
+ priv->tooltipText = "";
+ gtk_widget_set_has_tooltip(GTK_WIDGET(webView), FALSE);
+ }
+
+ gtk_widget_trigger_tooltip_query(GTK_WIDGET(webView));
+#else
+ // TODO: Support older GTK+ versions
+ // See http://bugs.webkit.org/show_bug.cgi?id=15793
+ notImplemented();
+#endif
+}
+
+/**
+ * webkit_web_view_get_hit_test_result:
+ * @webView: a #WebKitWebView
+ * @event: a #GdkEventButton
+ *
+ * Does a 'hit test' in the coordinates specified by @event to figure
+ * out context information about that position in the @webView.
+ *
+ * Returns: (transfer none): a newly created #WebKitHitTestResult with the context of the
+ * specified position.
+ *
+ * Since: 1.1.15
+ **/
+WebKitHitTestResult* webkit_web_view_get_hit_test_result(WebKitWebView* webView, GdkEventButton* event)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL);
+ g_return_val_if_fail(event, NULL);
+
+ PlatformMouseEvent mouseEvent = PlatformMouseEvent(event);
+ Frame* frame = core(webView)->focusController()->focusedOrMainFrame();
+ HitTestRequest request(HitTestRequest::Active);
+ IntPoint documentPoint = documentPointForWindowPoint(frame, mouseEvent.pos());
+ MouseEventWithHitTestResults mev = frame->document()->prepareMouseEvent(request, documentPoint, mouseEvent);
+
+ return kit(mev.hitTestResult());
+}
+
+/**
+ * webkit_web_view_get_icon_uri:
+ * @webView: the #WebKitWebView object
+ *
+ * Obtains the URI for the favicon for the given #WebKitWebView, or
+ * %NULL if there is none.
+ *
+ * Return value: the URI for the favicon, or %NULL
+ *
+ * Since: 1.1.18
+ */
+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()->loader()->url().prettyURL());
+ webView->priv->iconURI = iconURL.utf8();
+ return webView->priv->iconURI.data();
+}
+
+/**
+ * webkit_web_view_get_dom_document:
+ * @webView: a #WebKitWebView
+ *
+ * Returns: (transfer none): the #WebKitDOMDocument currently loaded in the @webView
+ *
+ * Since: 1.3.1
+ **/
+WebKitDOMDocument*
+webkit_web_view_get_dom_document(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+
+ Frame* coreFrame = core(webView)->mainFrame();
+ if (!coreFrame)
+ return 0;
+
+ Document* doc = coreFrame->document();
+ if (!doc)
+ return 0;
+
+ return kit(doc);
+}
+
+GtkMenu* webkit_web_view_get_context_menu(WebKitWebView* webView)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), 0);
+
+#if ENABLE(CONTEXT_MENUS)
+ ContextMenu* menu = core(webView)->contextMenuController()->contextMenu();
+ if (!menu)
+ return 0;
+ return menu->platformDescription();
+#else
+ return 0;
+#endif
+}
+
+void webViewEnterFullscreen(WebKitWebView* webView, Node* node)
+{
+ if (!node->hasTagName(HTMLNames::videoTag))
+ return;
+
+#if ENABLE(VIDEO)
+ HTMLMediaElement* videoElement = static_cast<HTMLMediaElement*>(node);
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ // First exit Fullscreen for the old mediaElement.
+ if (priv->fullscreenVideoController)
+ priv->fullscreenVideoController->exitFullscreen();
+
+ priv->fullscreenVideoController = new FullscreenVideoController;
+ priv->fullscreenVideoController->setMediaElement(videoElement);
+ priv->fullscreenVideoController->enterFullscreen();
+#endif
+}
+
+void webViewExitFullscreen(WebKitWebView* webView)
+{
+#if ENABLE(VIDEO)
+ WebKitWebViewPrivate* priv = webView->priv;
+ if (priv->fullscreenVideoController)
+ priv->fullscreenVideoController->exitFullscreen();
+#endif
+}
+
+namespace WebKit {
+
+WebCore::Page* core(WebKitWebView* webView)
+{
+ if (!webView)
+ return 0;
+
+ WebKitWebViewPrivate* priv = webView->priv;
+ return priv ? priv->corePage : 0;
+}
+
+WebKitWebView* kit(WebCore::Page* corePage)
+{
+ if (!corePage)
+ return 0;
+
+ ASSERT(corePage->chrome());
+ WebKit::ChromeClient* client = static_cast<WebKit::ChromeClient*>(corePage->chrome()->client());
+ return client ? client->webView() : 0;
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebview.h b/Source/WebKit/gtk/webkit/webkitwebview.h
new file mode 100644
index 0000000..1838bfe
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebview.h
@@ -0,0 +1,408 @@
+/*
+ * Copyright (C) 2007 Holger Hans Peter Freyther
+ * Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com>
+ * Copyright (C) 2008 Collabora Ltd.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebview_h
+#define webkitwebview_h
+
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+#include <JavaScriptCore/JSBase.h>
+
+#include <webkit/webkitdefines.h>
+#include <webkit/webkitdom.h>
+#include <webkit/webkitwebbackforwardlist.h>
+#include <webkit/webkitwebframe.h>
+#include <webkit/webkitwebhistoryitem.h>
+#include <webkit/webkitwebsettings.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_VIEW (webkit_web_view_get_type())
+#define WEBKIT_WEB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebView))
+#define WEBKIT_WEB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass))
+#define WEBKIT_IS_WEB_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_VIEW))
+#define WEBKIT_IS_WEB_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_VIEW))
+#define WEBKIT_WEB_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewClass))
+
+typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
+
+typedef enum {
+ WEBKIT_NAVIGATION_RESPONSE_ACCEPT,
+ WEBKIT_NAVIGATION_RESPONSE_IGNORE,
+ WEBKIT_NAVIGATION_RESPONSE_DOWNLOAD
+} WebKitNavigationResponse;
+
+typedef enum
+{
+ WEBKIT_WEB_VIEW_TARGET_INFO_HTML,
+ WEBKIT_WEB_VIEW_TARGET_INFO_TEXT,
+ WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE,
+ WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST,
+ WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL
+} WebKitWebViewTargetInfo;
+
+typedef enum
+{
+ WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED,
+ WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING,
+ WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN,
+ WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED,
+ WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED
+} WebKitWebViewViewMode;
+
+typedef enum
+{
+ WEBKIT_SELECTION_AFFINITY_UPSTREAM,
+ WEBKIT_SELECTION_AFFINITY_DOWNSTREAM,
+} WebKitSelectionAffinity;
+
+typedef enum
+{
+ WEBKIT_INSERT_ACTION_TYPED,
+ WEBKIT_INSERT_ACTION_PASTED,
+ WEBKIT_INSERT_ACTION_DROPPED,
+} WebKitInsertAction;
+
+struct _WebKitWebView {
+ GtkContainer parent_instance;
+
+ /*< private >*/
+ WebKitWebViewPrivate *priv;
+};
+
+struct _WebKitWebViewClass {
+ GtkContainerClass parent_class;
+
+ /*< public >*/
+ /*
+ * default handler/virtual methods
+ */
+ WebKitWebView * (* create_web_view) (WebKitWebView *web_view,
+ WebKitWebFrame *web_frame);
+
+ gboolean (* web_view_ready) (WebKitWebView* web_view);
+
+ gboolean (* close_web_view) (WebKitWebView* web_view);
+
+ WebKitNavigationResponse (* navigation_requested) (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ WebKitNetworkRequest *request);
+ void (* window_object_cleared) (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ JSGlobalContextRef context,
+ JSObjectRef window_object);
+ gchar * (* choose_file) (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ const gchar *old_file);
+ gboolean (* script_alert) (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ const gchar *alert_message);
+ gboolean (* script_confirm) (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ const gchar *confirm_message,
+ gboolean *did_confirm);
+ gboolean (* script_prompt) (WebKitWebView *web_view,
+ WebKitWebFrame *frame,
+ const gchar *message,
+ const gchar *default_value,
+ gchar* *value);
+ gboolean (* console_message) (WebKitWebView *web_view,
+ const gchar *message,
+ guint line_number,
+ const gchar* source_id);
+ void (* select_all) (WebKitWebView *web_view);
+ void (* cut_clipboard) (WebKitWebView *web_view);
+ void (* copy_clipboard) (WebKitWebView *web_view);
+ void (* paste_clipboard) (WebKitWebView *web_view);
+ gboolean (* move_cursor) (WebKitWebView *web_view,
+ GtkMovementStep step,
+ gint count);
+
+ /*
+ * internal
+ */
+ void (* set_scroll_adjustments) (WebKitWebView *web_view,
+ GtkAdjustment *hadjustment,
+ GtkAdjustment *vadjustment);
+
+ void (* undo) (WebKitWebView *web_view);
+ void (* redo) (WebKitWebView *web_view);
+ gboolean (* should_allow_editing_action) (WebKitWebView *web_view);
+
+ /* Padding for future expansion */
+ void (*_webkit_reserved0) (void);
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+};
+
+WEBKIT_API GType
+webkit_web_view_get_type (void);
+
+WEBKIT_API GtkWidget *
+webkit_web_view_new (void);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_view_get_title (WebKitWebView *webView);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_view_get_uri (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_set_maintains_back_forward_list (WebKitWebView *webView,
+ gboolean flag);
+
+WEBKIT_API WebKitWebBackForwardList *
+webkit_web_view_get_back_forward_list (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_go_to_back_forward_item (WebKitWebView *webView,
+ WebKitWebHistoryItem *item);
+
+WEBKIT_API gboolean
+webkit_web_view_can_go_back (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_can_go_back_or_forward (WebKitWebView *webView,
+ gint steps);
+
+WEBKIT_API gboolean
+webkit_web_view_can_go_forward (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_go_back (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_go_back_or_forward (WebKitWebView *webView,
+ gint steps);
+
+WEBKIT_API void
+webkit_web_view_go_forward (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_stop_loading (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_open (WebKitWebView *webView,
+ const gchar *uri);
+
+WEBKIT_API void
+webkit_web_view_reload (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_reload_bypass_cache (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_load_uri (WebKitWebView *webView,
+ const gchar *uri);
+
+WEBKIT_API void
+webkit_web_view_load_string (WebKitWebView *webView,
+ const gchar *content,
+ const gchar *mime_type,
+ const gchar *encoding,
+ const gchar *base_uri);
+
+WEBKIT_API void
+webkit_web_view_load_html_string (WebKitWebView *webView,
+ const gchar *content,
+ const gchar *base_uri);
+
+WEBKIT_API void
+webkit_web_view_load_request (WebKitWebView *webView,
+ WebKitNetworkRequest *request);
+
+WEBKIT_API gboolean
+webkit_web_view_search_text (WebKitWebView *webView,
+ const gchar *text,
+ gboolean case_sensitive,
+ gboolean forward,
+ gboolean wrap);
+
+WEBKIT_API guint
+webkit_web_view_mark_text_matches (WebKitWebView *webView,
+ const gchar *string,
+ gboolean case_sensitive,
+ guint limit);
+
+WEBKIT_API void
+webkit_web_view_set_highlight_text_matches (WebKitWebView *webView,
+ gboolean highlight);
+
+WEBKIT_API void
+webkit_web_view_unmark_text_matches (WebKitWebView *webView);
+
+WEBKIT_API WebKitWebFrame *
+webkit_web_view_get_main_frame (WebKitWebView *webView);
+
+WEBKIT_API WebKitWebFrame *
+webkit_web_view_get_focused_frame (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_execute_script (WebKitWebView *webView,
+ const gchar *script);
+
+WEBKIT_API gboolean
+webkit_web_view_can_cut_clipboard (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_can_copy_clipboard (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_can_paste_clipboard (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_cut_clipboard (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_copy_clipboard (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_paste_clipboard (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_delete_selection (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_has_selection (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_select_all (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_get_editable (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_set_editable (WebKitWebView *webView,
+ gboolean flag);
+
+WEBKIT_API GtkTargetList *
+webkit_web_view_get_copy_target_list (WebKitWebView *webView);
+
+WEBKIT_API GtkTargetList *
+webkit_web_view_get_paste_target_list (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_set_settings (WebKitWebView *webView,
+ WebKitWebSettings *settings);
+
+WEBKIT_API WebKitWebSettings *
+webkit_web_view_get_settings (WebKitWebView *webView);
+
+WEBKIT_API WebKitWebInspector *
+webkit_web_view_get_inspector (WebKitWebView *webView);
+
+WEBKIT_API WebKitWebWindowFeatures*
+webkit_web_view_get_window_features (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_can_show_mime_type (WebKitWebView *webView,
+ const gchar *mime_type);
+
+WEBKIT_API gboolean
+webkit_web_view_get_transparent (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_set_transparent (WebKitWebView *webView,
+ gboolean flag);
+
+WEBKIT_API gfloat
+webkit_web_view_get_zoom_level (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_set_zoom_level (WebKitWebView *webView,
+ gfloat zoom_level);
+
+WEBKIT_API void
+webkit_web_view_zoom_in (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_zoom_out (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_get_full_content_zoom (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_set_full_content_zoom (WebKitWebView *webView,
+ gboolean full_content_zoom);
+
+WEBKIT_API const gchar*
+webkit_web_view_get_encoding (WebKitWebView * webView);
+
+WEBKIT_API void
+webkit_web_view_set_custom_encoding (WebKitWebView * webView,
+ const gchar * encoding);
+
+WEBKIT_API const char*
+webkit_web_view_get_custom_encoding (WebKitWebView * webView);
+
+WEBKIT_API void
+webkit_web_view_set_view_mode (WebKitWebView *webView,
+ WebKitWebViewViewMode mode);
+
+WEBKIT_API WebKitWebViewViewMode
+webkit_web_view_get_view_mode (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_move_cursor (WebKitWebView * webView,
+ GtkMovementStep step,
+ gint count);
+
+WEBKIT_API WebKitLoadStatus
+webkit_web_view_get_load_status (WebKitWebView *webView);
+
+WEBKIT_API gdouble
+webkit_web_view_get_progress (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_undo (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_can_undo (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_redo (WebKitWebView *webView);
+
+WEBKIT_API gboolean
+webkit_web_view_can_redo (WebKitWebView *webView);
+
+WEBKIT_API void
+webkit_web_view_set_view_source_mode (WebKitWebView *webView,
+ gboolean view_source_mode);
+
+WEBKIT_API gboolean
+webkit_web_view_get_view_source_mode (WebKitWebView *webView);
+
+WEBKIT_API WebKitHitTestResult*
+webkit_web_view_get_hit_test_result (WebKitWebView *webView,
+ GdkEventButton *event);
+
+WEBKIT_API G_CONST_RETURN gchar *
+webkit_web_view_get_icon_uri (WebKitWebView *webView);
+
+WEBKIT_API WebKitDOMDocument *
+webkit_web_view_get_dom_document (WebKitWebView *webView);
+
+WEBKIT_API WebKitViewportAttributes*
+webkit_web_view_get_viewport_attributes (WebKitWebView *webView);
+
+G_END_DECLS
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebviewprivate.h b/Source/WebKit/gtk/webkit/webkitwebviewprivate.h
new file mode 100644
index 0000000..03e632a
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebviewprivate.h
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008, 2010 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebviewprivate_h
+#define webkitwebviewprivate_h
+
+#include "DataObjectGtk.h"
+#include "FullscreenVideoController.h"
+#include "GOwnPtr.h"
+#include "ResourceHandle.h"
+#include <webkit/webkitwebview.h>
+
+namespace WebKit {
+
+WebCore::Page* core(WebKitWebView*);
+WebKitWebView* kit(WebCore::Page*);
+
+
+typedef struct DroppingContext_ {
+ WebKitWebView* webView;
+ GdkDragContext* gdkContext;
+ RefPtr<WebCore::DataObjectGtk> dataObject;
+ WebCore::IntPoint lastMotionPosition;
+ int pendingDataRequests;
+ bool dropHappened;
+} DroppingContext;
+
+}
+
+extern "C" {
+
+#define WEBKIT_WEB_VIEW_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_VIEW, WebKitWebViewPrivate))
+typedef struct _WebKitWebViewPrivate WebKitWebViewPrivate;
+struct _WebKitWebViewPrivate {
+ WebCore::Page* corePage;
+ GRefPtr<WebKitWebSettings> webSettings;
+ GRefPtr<WebKitWebInspector> webInspector;
+ GRefPtr<WebKitViewportAttributes> viewportAttributes;
+ GRefPtr<WebKitWebWindowFeatures> webWindowFeatures;
+
+ WebKitWebFrame* mainFrame;
+ GRefPtr<WebKitWebBackForwardList> backForwardList;
+
+ GtkMenu* currentMenu;
+ gint lastPopupXPosition;
+ gint lastPopupYPosition;
+
+ HashSet<GtkWidget*> children;
+ bool editable;
+ GRefPtr<GtkIMContext> imContext;
+
+ gboolean transparent;
+
+ GRefPtr<GtkAdjustment> horizontalAdjustment;
+ GRefPtr<GtkAdjustment> verticalAdjustment;
+
+#ifndef GTK_API_VERSION_2
+ // GtkScrollablePolicy needs to be checked when
+ // driving the scrollable adjustment values
+ GtkScrollablePolicy horizontalScrollingPolicy;
+ GtkScrollablePolicy verticalScrollingPolicy;
+#endif
+
+ gboolean zoomFullContent;
+ WebKitLoadStatus loadStatus;
+ CString encoding;
+ CString customEncoding;
+
+ CString iconURI;
+
+ gboolean disposing;
+ gboolean usePrimaryForPaste;
+
+#if ENABLE(VIDEO)
+ FullscreenVideoController* fullscreenVideoController;
+#endif
+
+ // These are hosted here because the DataSource object is
+ // created too late in the frame loading process.
+ GRefPtr<WebKitWebResource> mainResource;
+ CString mainResourceIdentifier;
+ GRefPtr<GHashTable> subResources;
+ CString tooltipText;
+ WebCore::IntRect tooltipArea;
+
+ int currentClickCount;
+ WebCore::IntPoint previousClickPoint;
+ guint previousClickButton;
+ guint32 previousClickTime;
+ HashMap<GdkDragContext*, RefPtr<WebCore::DataObjectGtk> > draggingDataObjects;
+ HashMap<GdkDragContext*, WebKit::DroppingContext*> droppingContexts;
+};
+
+void webkit_web_view_notify_ready(WebKitWebView*);
+
+void webkit_web_view_request_download(WebKitWebView*, WebKitNetworkRequest*, const WebCore::ResourceResponse& = WebCore::ResourceResponse(), WebCore::ResourceHandle* = 0);
+
+void webkit_web_view_add_resource(WebKitWebView*, const char*, WebKitWebResource*);
+void webkit_web_view_add_main_resource(WebKitWebView*, const char*, WebKitWebResource*);
+void webkit_web_view_remove_resource(WebKitWebView*, const char*);
+WebKitWebResource* webkit_web_view_get_resource(WebKitWebView*, char*);
+WebKitWebResource* webkit_web_view_get_main_resource(WebKitWebView*);
+void webkit_web_view_clear_resources(WebKitWebView*);
+GList* webkit_web_view_get_subresources(WebKitWebView*);
+
+void webkit_web_view_set_tooltip_text(WebKitWebView*, const char*);
+GtkMenu* webkit_web_view_get_context_menu(WebKitWebView*);
+
+WEBKIT_API gchar* webkit_web_view_get_selected_text(WebKitWebView*);
+bool webkit_web_view_use_primary_for_paste(WebKitWebView*);
+
+void webViewEnterFullscreen(WebKitWebView* webView, WebCore::Node*);
+void webViewExitFullscreen(WebKitWebView* webView);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp
new file mode 100644
index 0000000..93e08ac
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp
@@ -0,0 +1,449 @@
+/*
+ * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org>
+ * Copyright (C) 2008 Holger Hans Peter Freyther
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#include "config.h"
+#include "webkitwebwindowfeatures.h"
+
+#include "WindowFeatures.h"
+#include "webkitglobalsprivate.h"
+#include "webkitwebwindowfeaturesprivate.h"
+
+/**
+ * SECTION:webkitwebwindowfeatures
+ * @short_description: Window properties of a #WebKitWebView
+ * @see_also: #WebKitWebView::web-view-ready
+ *
+ * The content of a #WebKitWebView can request to change certain
+ * properties of a #WebKitWebView. This can include the x, y position
+ * of the window, the width and height but also if a toolbar,
+ * scrollbar, statusbar, locationbar should be visible to the user,
+ * the request to show the #WebKitWebView fullscreen.
+ *
+ * In the normal case one will use #webkit_web_view_get_window_features
+ * to get the #WebKitWebWindowFeatures and then monitor the property
+ * changes. Be aware that the #WebKitWebWindowFeatures might change
+ * before #WebKitWebView::web-view-ready signal is emitted.
+ * To be safe listen to the notify::window-features signal of the #WebKitWebView
+ * and reconnect the signals whenever the #WebKitWebWindowFeatures of
+ * a #WebKitWebView changes.
+ *
+ * <informalexample><programlisting>
+ * /<!-- -->* Get the current WebKitWebWindowFeatures *<!-- -->/
+ * WebKitWebWindowFeatures *features = webkit_web_view_get_window_features (my_webview);
+ *
+ * /<!-- -->* Connect to the property changes *<!-- -->/
+ * g_signal_connect (G_OBJECT(features), "notify::menubar-visible", G_CALLBACK(make_menu_bar_visible), NULL);
+ * g_signal_connect (G_OBJECT(features), "notify::statusbar-visible", G_CALLBACK(make_status_bar_visible), NULL);
+ *
+ * </programlisting></informalexample>
+ */
+
+enum {
+ PROP_0,
+
+ PROP_X,
+ PROP_Y,
+ PROP_WIDTH,
+ PROP_HEIGHT,
+ PROP_TOOLBAR_VISIBLE,
+ PROP_STATUSBAR_VISIBLE,
+ PROP_SCROLLBAR_VISIBLE,
+ PROP_MENUBAR_VISIBLE,
+ PROP_LOCATIONBAR_VISIBLE,
+ PROP_FULLSCREEN,
+};
+
+G_DEFINE_TYPE(WebKitWebWindowFeatures, webkit_web_window_features, G_TYPE_OBJECT)
+
+struct _WebKitWebWindowFeaturesPrivate {
+ gint x;
+ gint y;
+ gint width;
+ gint height;
+
+ gboolean toolbar_visible;
+ gboolean statusbar_visible;
+ gboolean scrollbar_visible;
+ gboolean menubar_visible;
+ gboolean locationbar_visible;
+
+ gboolean fullscreen;
+};
+
+#define WEBKIT_WEB_WINDOW_FEATURES_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesPrivate))
+
+static void webkit_web_window_features_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec);
+
+static void webkit_web_window_features_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
+
+static void webkit_web_window_features_class_init(WebKitWebWindowFeaturesClass* klass)
+{
+ GObjectClass* gobject_class = G_OBJECT_CLASS(klass);
+ gobject_class->set_property = webkit_web_window_features_set_property;
+ gobject_class->get_property = webkit_web_window_features_get_property;
+
+ GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+
+ webkitInit();
+
+ /**
+ * WebKitWebWindowFeatures:x:
+ *
+ * The starting x position of the window on the screen.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_X,
+ g_param_spec_int(
+ "x",
+ "x",
+ "The starting x position of the window on the screen.",
+ -1,
+ G_MAXINT,
+ -1,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:y:
+ *
+ * The starting y position of the window on the screen.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_Y,
+ g_param_spec_int(
+ "y",
+ "y",
+ "The starting y position of the window on the screen.",
+ -1,
+ G_MAXINT,
+ -1,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:width:
+ *
+ * The width of the window on the screen.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_WIDTH,
+ g_param_spec_int(
+ "width",
+ "Width",
+ "The width of the window on the screen.",
+ -1,
+ G_MAXINT,
+ -1,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:height:
+ *
+ * The height of the window on the screen.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_HEIGHT,
+ g_param_spec_int(
+ "height",
+ "Height",
+ "The height of the window on the screen.",
+ -1,
+ G_MAXINT,
+ -1,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:toolbar-visible:
+ *
+ * Controls whether the toolbar should be visible for the window.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_TOOLBAR_VISIBLE,
+ g_param_spec_boolean(
+ "toolbar-visible",
+ "Toolbar Visible",
+ "Controls whether the toolbar should be visible for the window.",
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:statusbar-visible:
+ *
+ * Controls whether the statusbar should be visible for the window.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_STATUSBAR_VISIBLE,
+ g_param_spec_boolean(
+ "statusbar-visible",
+ "Statusbar Visible",
+ "Controls whether the statusbar should be visible for the window.",
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:scrollbar-visible:
+ *
+ * Controls whether the scrollbars should be visible for the window.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_SCROLLBAR_VISIBLE,
+ g_param_spec_boolean(
+ "scrollbar-visible",
+ "Scrollbar Visible",
+ "Controls whether the scrollbars should be visible for the window.",
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:menubar-visible:
+ *
+ * Controls whether the menubar should be visible for the window.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_MENUBAR_VISIBLE,
+ g_param_spec_boolean(
+ "menubar-visible",
+ "Menubar Visible",
+ "Controls whether the menubar should be visible for the window.",
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:locationbar-visible:
+ *
+ * Controls whether the locationbar should be visible for the window.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_LOCATIONBAR_VISIBLE,
+ g_param_spec_boolean(
+ "locationbar-visible",
+ "Locationbar Visible",
+ "Controls whether the locationbar should be visible for the window.",
+ TRUE,
+ flags));
+
+ /**
+ * WebKitWebWindowFeatures:fullscreen:
+ *
+ * Controls whether window will be displayed fullscreen.
+ *
+ * Since: 1.0.3
+ */
+ g_object_class_install_property(gobject_class,
+ PROP_FULLSCREEN,
+ g_param_spec_boolean(
+ "fullscreen",
+ "Fullscreen",
+ "Controls whether window will be displayed fullscreen.",
+ FALSE,
+ flags));
+
+
+ g_type_class_add_private(klass, sizeof(WebKitWebWindowFeaturesPrivate));
+}
+
+static void webkit_web_window_features_init(WebKitWebWindowFeatures* web_window_features)
+{
+ web_window_features->priv = G_TYPE_INSTANCE_GET_PRIVATE(web_window_features, WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesPrivate);
+}
+
+static void webkit_web_window_features_set_property(GObject* object, guint prop_id, const GValue* value, GParamSpec* pspec)
+{
+ WebKitWebWindowFeatures* web_window_features = WEBKIT_WEB_WINDOW_FEATURES(object);
+ WebKitWebWindowFeaturesPrivate* priv = web_window_features->priv;
+
+ switch(prop_id) {
+ case PROP_X:
+ priv->x = g_value_get_int(value);
+ break;
+ case PROP_Y:
+ priv->y = g_value_get_int(value);
+ break;
+ case PROP_WIDTH:
+ priv->width = g_value_get_int(value);
+ break;
+ case PROP_HEIGHT:
+ priv->height = g_value_get_int(value);
+ break;
+ case PROP_TOOLBAR_VISIBLE:
+ priv->toolbar_visible = g_value_get_boolean(value);
+ break;
+ case PROP_STATUSBAR_VISIBLE:
+ priv->statusbar_visible = g_value_get_boolean(value);
+ break;
+ case PROP_SCROLLBAR_VISIBLE:
+ priv->scrollbar_visible = g_value_get_boolean(value);
+ break;
+ case PROP_MENUBAR_VISIBLE:
+ priv->menubar_visible = g_value_get_boolean(value);
+ break;
+ case PROP_LOCATIONBAR_VISIBLE:
+ priv->locationbar_visible = g_value_get_boolean(value);
+ break;
+ case PROP_FULLSCREEN:
+ priv->fullscreen = g_value_get_boolean(value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+static void webkit_web_window_features_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec)
+{
+ WebKitWebWindowFeatures* web_window_features = WEBKIT_WEB_WINDOW_FEATURES(object);
+ WebKitWebWindowFeaturesPrivate* priv = web_window_features->priv;
+
+ switch (prop_id) {
+ case PROP_X:
+ g_value_set_int(value, priv->x);
+ break;
+ case PROP_Y:
+ g_value_set_int(value, priv->y);
+ break;
+ case PROP_WIDTH:
+ g_value_set_int(value, priv->width);
+ break;
+ case PROP_HEIGHT:
+ g_value_set_int(value, priv->height);
+ break;
+ case PROP_TOOLBAR_VISIBLE:
+ g_value_set_boolean(value, priv->toolbar_visible);
+ break;
+ case PROP_STATUSBAR_VISIBLE:
+ g_value_set_boolean(value, priv->statusbar_visible);
+ break;
+ case PROP_SCROLLBAR_VISIBLE:
+ g_value_set_boolean(value, priv->scrollbar_visible);
+ break;
+ case PROP_MENUBAR_VISIBLE:
+ g_value_set_boolean(value, priv->menubar_visible);
+ break;
+ case PROP_LOCATIONBAR_VISIBLE:
+ g_value_set_boolean(value, priv->locationbar_visible);
+ break;
+ case PROP_FULLSCREEN:
+ g_value_set_boolean(value, priv->fullscreen);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
+ break;
+ }
+}
+
+/**
+ * webkit_web_window_features_new:
+ *
+ * Creates a new #WebKitWebWindowFeatures instance with default values. It must
+ * be manually attached to a WebView.
+ *
+ * Returns: a new #WebKitWebWindowFeatures instance
+ *
+ * Since: 1.0.3
+ */
+WebKitWebWindowFeatures* webkit_web_window_features_new()
+{
+ return WEBKIT_WEB_WINDOW_FEATURES(g_object_new(WEBKIT_TYPE_WEB_WINDOW_FEATURES, NULL));
+}
+
+/**
+ * webkit_web_window_features_equal:
+ * @features1: a #WebKitWebWindowFeatures instance
+ * @features2: another #WebKitWebWindowFeatures instance
+ *
+ * Decides if a #WebKitWebWindowFeatures instance equals another, as
+ * in has the same values.
+ *
+ * Returns: %TRUE if the instances have the same values, %FALSE
+ * otherwise
+ *
+ * Since: 1.0.3
+ */
+gboolean webkit_web_window_features_equal(WebKitWebWindowFeatures* features1, WebKitWebWindowFeatures* features2)
+{
+ if (features1 == features2)
+ return TRUE;
+ if (!features1 || !features2)
+ return FALSE;
+
+ WebKitWebWindowFeaturesPrivate* priv1 = features1->priv;
+ WebKitWebWindowFeaturesPrivate* priv2 = features2->priv;
+
+ if ((priv1->x == priv2->x)
+ && (priv1->y == priv2->y)
+ && (priv1->width == priv2->width)
+ && (priv1->height == priv2->height)
+ && (priv1->toolbar_visible == priv2->toolbar_visible)
+ && (priv1->statusbar_visible == priv2->statusbar_visible)
+ && (priv1->scrollbar_visible == priv2->scrollbar_visible)
+ && (priv1->menubar_visible == priv2->menubar_visible)
+ && (priv1->locationbar_visible == priv2->locationbar_visible)
+ && (priv1->fullscreen == priv2->fullscreen))
+ return TRUE;
+ return FALSE;
+}
+
+namespace WebKit {
+
+WebKitWebWindowFeatures* kitNew(const WebCore::WindowFeatures& features)
+{
+ WebKitWebWindowFeatures *webWindowFeatures = webkit_web_window_features_new();
+
+ if(features.xSet)
+ g_object_set(webWindowFeatures, "x", static_cast<int>(features.x), NULL);
+
+ if(features.ySet)
+ g_object_set(webWindowFeatures, "y", static_cast<int>(features.y), NULL);
+
+ if(features.widthSet)
+ g_object_set(webWindowFeatures, "width", static_cast<int>(features.width), NULL);
+
+ if(features.heightSet)
+ g_object_set(webWindowFeatures, "height", static_cast<int>(features.height), NULL);
+
+ g_object_set(webWindowFeatures,
+ "toolbar-visible", features.toolBarVisible,
+ "statusbar-visible", features.statusBarVisible,
+ "scrollbar-visible", features.scrollbarsVisible,
+ "menubar-visible", features.menuBarVisible,
+ "locationbar-visible", features.locationBarVisible,
+ "fullscreen", features.fullscreen,
+ NULL);
+
+ return webWindowFeatures;
+}
+
+}
diff --git a/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h
new file mode 100644
index 0000000..a79119d
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebwindowfeatures.h
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 Gustavo Noronha Silva <gns@gnome.org>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebwindowfeatures_h
+#define webkitwebwindowfeatures_h
+
+#include <glib-object.h>
+
+#include <webkit/webkitdefines.h>
+
+G_BEGIN_DECLS
+
+#define WEBKIT_TYPE_WEB_WINDOW_FEATURES (webkit_web_window_features_get_type())
+#define WEBKIT_WEB_WINDOW_FEATURES(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeatures))
+#define WEBKIT_WEB_WINDOW_FEATURES_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesClass))
+#define WEBKIT_IS_WEB_WINDOW_FEATURES(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES))
+#define WEBKIT_IS_WEB_WINDOW_FEATURES_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), WEBKIT_TYPE_WEB_WINDOW_FEATURES))
+#define WEBKIT_WEB_WINDOW_FEATURES_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), WEBKIT_TYPE_WEB_WINDOW_FEATURES, WebKitWebWindowFeaturesClass))
+
+typedef struct _WebKitWebWindowFeaturesPrivate WebKitWebWindowFeaturesPrivate;
+
+struct _WebKitWebWindowFeatures {
+ GObject parent_instance;
+
+ /*< private >*/
+ WebKitWebWindowFeaturesPrivate* priv;
+};
+
+struct _WebKitWebWindowFeaturesClass {
+ GObjectClass parent_class;
+
+ /*< private >*/
+ /* Padding for future expansion */
+ void (*_webkit_reserved1) (void);
+ void (*_webkit_reserved2) (void);
+ void (*_webkit_reserved3) (void);
+ void (*_webkit_reserved4) (void);
+};
+
+WEBKIT_API GType
+webkit_web_window_features_get_type (void);
+
+WEBKIT_API WebKitWebWindowFeatures*
+webkit_web_window_features_new (void);
+
+WEBKIT_API gboolean
+webkit_web_window_features_equal (WebKitWebWindowFeatures* features1,
+ WebKitWebWindowFeatures* features2);
+
+G_END_DECLS
+
+#endif /* webkitwebwindowfeatures_h */
diff --git a/Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h b/Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h
new file mode 100644
index 0000000..6ea919b
--- /dev/null
+++ b/Source/WebKit/gtk/webkit/webkitwebwindowfeaturesprivate.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
+ * Copyright (C) 2008 Jan Michael C. Alonzo
+ * Copyright (C) 2008 Collabora Ltd.
+ * Copyright (C) 2010 Igalia S.L.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public License
+ * along with this library; see the file COPYING.LIB. If not, write to
+ * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+#ifndef webkitwebwindowfeaturesprivate_h
+#define webkitwebwindowfeaturesprivate_h
+
+#include "webkitwebwindowfeatures.h"
+
+namespace WebKit {
+
+WebKitWebWindowFeatures* kitNew(const WebCore::WindowFeatures&);
+
+}
+
+#endif
diff --git a/Source/WebKit/gtk/webkitmarshal.list b/Source/WebKit/gtk/webkitmarshal.list
new file mode 100644
index 0000000..5372c57
--- /dev/null
+++ b/Source/WebKit/gtk/webkitmarshal.list
@@ -0,0 +1,25 @@
+BOOLEAN:ENUM,INT
+BOOLEAN:INT,INT,STRING
+BOOLEAN:OBJECT
+BOOLEAN:OBJECT,OBJECT
+BOOLEAN:OBJECT,OBJECT,ENUM
+BOOLEAN:OBJECT,OBJECT,ENUM,BOOLEAN
+BOOLEAN:OBJECT,OBJECT,OBJECT,OBJECT
+BOOLEAN:OBJECT,OBJECT,STRING,OBJECT
+BOOLEAN:OBJECT,STRING
+BOOLEAN:OBJECT,STRING,POINTER
+BOOLEAN:OBJECT,STRING,STRING,STRING
+BOOLEAN:STRING,INT,STRING
+BOOLEAN:STRING,OBJECT,ENUM
+BOOLEAN:VOID
+ENUM:OBJECT,OBJECT
+OBJECT:OBJECT
+OBJECT:STRING,STRING,POINTER
+OBJECT:VOID
+VOID:OBJECT,OBJECT
+VOID:OBJECT,OBJECT,OBJECT,OBJECT
+VOID:OBJECT,POINTER,POINTER
+VOID:OBJECT,STRING
+VOID:STRING
+VOID:STRING,STRING
+