summaryrefslogtreecommitdiffstats
path: root/WebKit/gtk
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2009-08-11 17:01:47 +0100
committerBen Murdoch <benm@google.com>2009-08-11 18:21:02 +0100
commit0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5 (patch)
tree2943df35f62d885c89d01063cc528dd73b480fea /WebKit/gtk
parent7e7a70bfa49a1122b2597a1e6367d89eb4035eca (diff)
downloadexternal_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.zip
external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.gz
external_webkit-0bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5.tar.bz2
Merge in WebKit r47029.
Diffstat (limited to 'WebKit/gtk')
-rw-r--r--WebKit/gtk/ChangeLog2076
-rw-r--r--WebKit/gtk/NEWS178
-rw-r--r--WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp87
-rw-r--r--WebKit/gtk/WebCoreSupport/ChromeClientGtk.h14
-rw-r--r--WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp24
-rw-r--r--WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h1
-rw-r--r--WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp457
-rw-r--r--WebKit/gtk/WebCoreSupport/EditorClientGtk.h8
-rw-r--r--WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp304
-rw-r--r--WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h6
-rw-r--r--WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp15
-rw-r--r--WebKit/gtk/WebCoreSupport/InspectorClientGtk.h2
-rw-r--r--WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp28
-rw-r--r--WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h3
-rw-r--r--WebKit/gtk/docs/GNUmakefile.am104
-rw-r--r--WebKit/gtk/docs/version.xml.in1
-rw-r--r--WebKit/gtk/docs/webkitenvironment.xml98
-rw-r--r--WebKit/gtk/docs/webkitgtk-docs.sgml53
-rw-r--r--WebKit/gtk/docs/webkitgtk-sections.txt140
-rw-r--r--WebKit/gtk/gdom/ConvertToGCharPrivate.h48
-rw-r--r--WebKit/gtk/po/ChangeLog123
-rw-r--r--WebKit/gtk/po/GNUmakefile.am210
-rw-r--r--WebKit/gtk/po/POTFILES12
-rw-r--r--WebKit/gtk/po/README11
-rw-r--r--WebKit/gtk/po/de.po696
-rw-r--r--WebKit/gtk/po/en_GB.po693
-rw-r--r--WebKit/gtk/po/es.po696
-rw-r--r--WebKit/gtk/po/it.po773
-rw-r--r--WebKit/gtk/po/nl.po697
-rw-r--r--WebKit/gtk/po/pt_BR.po699
-rw-r--r--WebKit/gtk/po/ru.po717
-rw-r--r--WebKit/gtk/po/sr.po705
-rw-r--r--WebKit/gtk/po/sr@latin.po705
-rw-r--r--WebKit/gtk/po/sv.po693
-rw-r--r--WebKit/gtk/po/vi.po692
-rw-r--r--WebKit/gtk/po/webkit.pot693
-rw-r--r--WebKit/gtk/po/zh_CN.po694
-rw-r--r--WebKit/gtk/resources/error.html60
-rw-r--r--WebKit/gtk/tests/testatk.c240
-rw-r--r--WebKit/gtk/tests/testdownload.c167
-rw-r--r--WebKit/gtk/tests/testhttpbackend.c86
-rw-r--r--WebKit/gtk/tests/testloading.c115
-rw-r--r--WebKit/gtk/tests/testnetworkrequest.c107
-rw-r--r--WebKit/gtk/tests/testwebbackforwardlist.c30
-rw-r--r--WebKit/gtk/tests/testwebframe.c102
-rw-r--r--WebKit/gtk/tests/testwebhistoryitem.c4
-rw-r--r--WebKit/gtk/tests/testwebsettings.c81
-rw-r--r--WebKit/gtk/webkit.pc.in2
-rw-r--r--WebKit/gtk/webkit/webkitapplicationcache.cpp32
-rw-r--r--WebKit/gtk/webkit/webkitdownload.cpp109
-rw-r--r--WebKit/gtk/webkit/webkiterror.cpp37
-rw-r--r--WebKit/gtk/webkit/webkiterror.h71
-rw-r--r--WebKit/gtk/webkit/webkitnetworkrequest.cpp179
-rw-r--r--WebKit/gtk/webkit/webkitnetworkrequest.h4
-rw-r--r--WebKit/gtk/webkit/webkitprivate.cpp22
-rw-r--r--WebKit/gtk/webkit/webkitprivate.h68
-rw-r--r--WebKit/gtk/webkit/webkitsoupauthdialog.c78
-rw-r--r--WebKit/gtk/webkit/webkitsoupauthdialog.h5
-rw-r--r--WebKit/gtk/webkit/webkitversion.cpp4
-rw-r--r--WebKit/gtk/webkit/webkitversion.h.in2
-rw-r--r--WebKit/gtk/webkit/webkitwebbackforwardlist.cpp35
-rw-r--r--WebKit/gtk/webkit/webkitwebframe.cpp251
-rw-r--r--WebKit/gtk/webkit/webkitwebframe.h44
-rw-r--r--WebKit/gtk/webkit/webkitwebhistoryitem.cpp50
-rw-r--r--WebKit/gtk/webkit/webkitwebinspector.cpp29
-rw-r--r--WebKit/gtk/webkit/webkitwebnavigationaction.cpp94
-rw-r--r--WebKit/gtk/webkit/webkitwebnavigationaction.h3
-rw-r--r--WebKit/gtk/webkit/webkitwebpolicydecision.cpp12
-rw-r--r--WebKit/gtk/webkit/webkitwebsettings.cpp492
-rw-r--r--WebKit/gtk/webkit/webkitwebsettings.h10
-rw-r--r--WebKit/gtk/webkit/webkitwebview.cpp768
-rw-r--r--WebKit/gtk/webkit/webkitwebview.h19
-rw-r--r--WebKit/gtk/webkit/webkitwebwindowfeatures.cpp7
-rw-r--r--WebKit/gtk/webkitmarshal.list2
74 files changed, 15777 insertions, 800 deletions
diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
index 3691b4b..4d49861 100644
--- a/WebKit/gtk/ChangeLog
+++ b/WebKit/gtk/ChangeLog
@@ -1,3 +1,2079 @@
+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 lifetime.
+
+ * 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.
diff --git a/WebKit/gtk/NEWS b/WebKit/gtk/NEWS
index c8f656c..39a54ff 100644
--- a/WebKit/gtk/NEWS
+++ b/WebKit/gtk/NEWS
@@ -1,3 +1,181 @@
+=================
+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
================
diff --git a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
index 7125305..1292e99 100644
--- a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
@@ -23,6 +23,7 @@
#include "config.h"
#include "ChromeClientGtk.h"
+#include "Console.h"
#include "FileSystem.h"
#include "FileChooser.h"
#include "FloatRect.h"
@@ -42,7 +43,7 @@
#endif
#include <glib.h>
-#include <glib/gi18n.h>
+#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
using namespace WebCore;
@@ -214,7 +215,18 @@ void ChromeClient::setResizable(bool)
void ChromeClient::closeWindowSoon()
{
- notImplemented();
+ webkit_web_view_stop_loading(m_webView);
+
+ gboolean isHandled = false;
+ g_signal_emit_by_name(m_webView, "close-web-view", &isHandled);
+
+ if (isHandled)
+ return;
+
+ // FIXME: should we clear the frame group name here explicitly? Mac does it.
+ // But this gets cleared in Page's destructor anyway.
+ // webkit_web_view_set_group_name(m_webView, "");
+ g_object_unref(m_webView);
}
bool ChromeClient::canTakeFocus(FocusDirection)
@@ -237,7 +249,7 @@ bool ChromeClient::runBeforeUnloadConfirmPanel(const WebCore::String& message, W
return runJavaScriptConfirm(frame, message);
}
-void ChromeClient::addMessageToConsole(const WebCore::String& message, unsigned int lineNumber, const WebCore::String& sourceId)
+void ChromeClient::addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WebCore::String& message, unsigned int lineNumber, const WebCore::String& sourceId)
{
gboolean retval;
g_signal_emit_by_name(m_webView, "console-message", message.utf8().data(), lineNumber, sourceId.utf8().data(), &retval);
@@ -313,6 +325,9 @@ void ChromeClient::scroll(const IntSize& delta, const IntRect& rectToScroll, con
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;
@@ -334,16 +349,38 @@ void ChromeClient::scroll(const IntSize& delta, const IntRect& rectToScroll, con
gdk_region_destroy(invalidRegion);
}
+// 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(window->window, &originX, &originY);
+ result.move(originX, originY);
+
+ return result;
+}
+
IntRect ChromeClient::windowToScreen(const IntRect& rect) const
{
- notImplemented();
- return rect;
+ 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
{
- notImplemented();
- return point;
+ IntPoint result(point);
+ IntPoint screenPosition = widgetScreenPosition(GTK_WIDGET(m_webView));
+ result.move(-screenPosition.x(), -screenPosition.y());
+
+ return result;
}
PlatformWidget ChromeClient::platformWindow() const
@@ -351,9 +388,15 @@ PlatformWidget ChromeClient::platformWindow() const
return GTK_WIDGET(m_webView);
}
-void ChromeClient::contentsSizeChanged(Frame*, const IntSize&) const
+void ChromeClient::contentsSizeChanged(Frame* frame, const IntSize& size) const
{
- notImplemented();
+ // 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);
+ if (GTK_WIDGET_REALIZED(widget) &&
+ (widget->requisition.height != size.height()) &&
+ (widget->requisition.width != size.width()))
+ gtk_widget_queue_resize_no_redraw(widget);
}
void ChromeClient::mouseDidMoveOverElement(const HitTestResult& hit, unsigned modifierFlags)
@@ -377,7 +420,8 @@ void ChromeClient::mouseDidMoveOverElement(const HitTestResult& hit, unsigned mo
if (isLink) {
KURL url = hit.absoluteLinkURL();
if (!url.isEmpty() && url != m_hoveredLinkURL) {
- CString titleString = hit.title().utf8();
+ 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;
@@ -388,7 +432,7 @@ void ChromeClient::mouseDidMoveOverElement(const HitTestResult& hit, unsigned mo
}
}
-void ChromeClient::setToolTip(const String& toolTip)
+void ChromeClient::setToolTip(const String& toolTip, TextDirection)
{
#if GTK_CHECK_VERSION(2,12,0)
if (toolTip.isEmpty())
@@ -404,7 +448,14 @@ void ChromeClient::setToolTip(const String& toolTip)
void ChromeClient::print(Frame* frame)
{
- webkit_web_frame_print(kit(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)
@@ -461,4 +512,16 @@ void ChromeClient::runOpenPanel(Frame*, PassRefPtr<FileChooser> prpFileChooser)
gtk_widget_destroy(dialog);
}
+bool ChromeClient::setCursor(PlatformCursorHandle)
+{
+ notImplemented();
+ return false;
+}
+
+void ChromeClient::requestGeolocationPermissionForFrame(Frame*, Geolocation*)
+{
+ // See the comment in WebCore/page/ChromeClient.h
+ notImplemented();
+}
+
}
diff --git a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
index bac9940..0f35e52 100644
--- a/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/ChromeClientGtk.h
@@ -67,8 +67,9 @@ namespace WebKit {
virtual void setResizable(bool);
- virtual void addMessageToConsole(const WebCore::String& message, unsigned int lineNumber,
- const WebCore::String& sourceID);
+ virtual void addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type,
+ WebCore::MessageLevel level, const WebCore::String& message,
+ unsigned int lineNumber, const WebCore::String& sourceID);
virtual bool canRunBeforeUnloadConfirmPanel();
virtual bool runBeforeUnloadConfirmPanel(const WebCore::String& message, WebCore::Frame* frame);
@@ -93,7 +94,7 @@ namespace WebKit {
virtual void mouseDidMoveOverElement(const WebCore::HitTestResult&, unsigned modifierFlags);
- virtual void setToolTip(const WebCore::String&);
+ virtual void setToolTip(const WebCore::String&, WebCore::TextDirection);
virtual void print(WebCore::Frame*);
#if ENABLE(DATABASE)
@@ -106,6 +107,13 @@ namespace WebKit {
virtual void formStateDidChange(const WebCore::Node*) { }
+ virtual PassOwnPtr<WebCore::HTMLParserQuirks> createHTMLParserQuirks() { return 0; }
+
+ virtual bool setCursor(WebCore::PlatformCursorHandle);
+
+ virtual void scrollRectIntoView(const WebCore::IntRect&, const WebCore::ScrollView*) const {}
+ virtual void requestGeolocationPermissionForFrame(WebCore::Frame*, WebCore::Geolocation*);
+
private:
WebKitWebView* m_webView;
WebCore::KURL m_hoveredLinkURL;
diff --git a/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp b/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp
index 42d4813..bf47ca8 100644
--- a/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp
@@ -26,8 +26,8 @@
#include "KURL.h"
#include "NotImplemented.h"
+#include <glib/gi18n-lib.h>
#include <glib-object.h>
-#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include "webkitprivate.h"
@@ -165,20 +165,10 @@ void ContextMenuClient::contextMenuItemSelected(ContextMenuItem*, const ContextM
void ContextMenuClient::downloadURL(const KURL& url)
{
- WebKitNetworkRequest* network_request = webkit_network_request_new(url.string().utf8().data());
- WebKitDownload* download = webkit_download_new(network_request);
- g_object_unref(network_request);
+ WebKitNetworkRequest* networkRequest = webkit_network_request_new(url.string().utf8().data());
- gboolean handled;
- g_signal_emit_by_name(m_webView, "download-requested", download, &handled);
-
- if (!handled) {
- webkit_download_cancel(download);
- g_object_unref(download);
- return;
- }
-
- webkit_download_start(download);
+ webkit_web_view_request_download(m_webView, networkRequest);
+ g_object_unref(networkRequest);
}
void ContextMenuClient::copyImageToClipboard(const HitTestResult&)
@@ -206,5 +196,11 @@ void ContextMenuClient::stopSpeaking()
notImplemented();
}
+bool ContextMenuClient::isSpeaking()
+{
+ notImplemented();
+ return false;
+}
+
}
diff --git a/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h b/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
index 52f7ad7..d320c0e 100644
--- a/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h
@@ -52,6 +52,7 @@ namespace WebKit {
virtual void lookUpInDictionary(WebCore::Frame*);
virtual void speak(const WebCore::String&);
virtual void stopSpeaking();
+ virtual bool isSpeaking();
private:
WebKitWebView* m_webView;
diff --git a/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp b/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
index a1f2509..b5148d8 100644
--- a/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp
@@ -1,6 +1,9 @@
/*
* 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, 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
@@ -23,8 +26,11 @@
#include "CString.h"
#include "EditCommand.h"
#include "Editor.h"
+#include <enchant.h>
+#include "EventNames.h"
#include "FocusController.h"
#include "Frame.h"
+#include <glib.h>
#include "KeyboardCodes.h"
#include "KeyboardEvent.h"
#include "NotImplemented.h"
@@ -33,6 +39,12 @@
#include "markup.h"
#include "webkitprivate.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 {
@@ -102,8 +114,12 @@ bool EditorClient::shouldShowDeleteInterface(HTMLElement*)
bool EditorClient::isContinuousSpellCheckingEnabled()
{
- notImplemented();
- return false;
+ 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()
@@ -164,7 +180,6 @@ void EditorClient::respondToChangedContents()
notImplemented();
}
-#if GTK_CHECK_VERSION(2,10,0)
static void clipboard_get_contents_cb(GtkClipboard* clipboard, GtkSelectionData* selection_data, guint info, gpointer data)
{
WebKitWebView* webView = reinterpret_cast<WebKitWebView*>(data);
@@ -189,7 +204,6 @@ static void clipboard_clear_contents_cb(GtkClipboard* clipboard, gpointer data)
// Collapse the selection without clearing it
frame->selection()->setBase(frame->selection()->extent(), frame->selection()->affinity());
}
-#endif
void EditorClient::respondToChangedSelection()
{
@@ -202,7 +216,6 @@ void EditorClient::respondToChangedSelection()
if (targetFrame->editor()->ignoreCompositionSelectionChange())
return;
-#if GTK_CHECK_VERSION(2,10,0)
GtkClipboard* clipboard = gtk_widget_get_clipboard(GTK_WIDGET(m_webView), GDK_SELECTION_PRIMARY);
if (targetFrame->selection()->isRange()) {
GtkTargetList* targetList = webkit_web_view_get_copy_target_list(m_webView);
@@ -213,7 +226,6 @@ void EditorClient::respondToChangedSelection()
gtk_target_table_free(targets, targetCount);
} else if (gtk_clipboard_get_owner(clipboard) == G_OBJECT(m_webView))
gtk_clipboard_clear(clipboard);
-#endif
if (!targetFrame->editor()->hasComposition())
return;
@@ -247,41 +259,58 @@ bool EditorClient::isEditable()
return webkit_web_view_get_editable(m_webView);
}
-void EditorClient::registerCommandForUndo(WTF::PassRefPtr<WebCore::EditCommand>)
+void EditorClient::registerCommandForUndo(WTF::PassRefPtr<WebCore::EditCommand> command)
{
- notImplemented();
+ if (undoStack.size() == maximumUndoStackDepth)
+ undoStack.removeFirst();
+ if (!m_isInRedo)
+ redoStack.clear();
+ undoStack.append(command);
}
-void EditorClient::registerCommandForRedo(WTF::PassRefPtr<WebCore::EditCommand>)
+void EditorClient::registerCommandForRedo(WTF::PassRefPtr<WebCore::EditCommand> command)
{
- notImplemented();
+ redoStack.append(command);
}
void EditorClient::clearUndoRedoOperations()
{
- notImplemented();
+ undoStack.clear();
+ redoStack.clear();
}
bool EditorClient::canUndo() const
{
- notImplemented();
- return false;
+ return !undoStack.isEmpty();
}
bool EditorClient::canRedo() const
{
- notImplemented();
- return false;
+ return !redoStack.isEmpty();
}
void EditorClient::undo()
{
- notImplemented();
+ 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()
{
- notImplemented();
+ 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*, Range*, EditorInsertAction)
@@ -309,150 +338,197 @@ bool EditorClient::isSelectTrailingWhitespaceEnabled()
void EditorClient::toggleContinuousSpellChecking()
{
- notImplemented();
+ 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()
{
}
-void EditorClient::handleKeyboardEvent(KeyboardEvent* event)
-{
- Frame* frame = core(m_webView)->focusController()->focusedOrMainFrame();
- if (!frame || !frame->document()->focusedNode())
- return;
+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[] = {
+ { VK_LEFT, 0, "MoveLeft" },
+ { VK_LEFT, ShiftKey, "MoveLeftAndModifySelection" },
+ { VK_LEFT, CtrlKey, "MoveWordLeft" },
+ { VK_LEFT, CtrlKey | ShiftKey, "MoveWordLeftAndModifySelection" },
+ { VK_RIGHT, 0, "MoveRight" },
+ { VK_RIGHT, ShiftKey, "MoveRightAndModifySelection" },
+ { VK_RIGHT, CtrlKey, "MoveWordRight" },
+ { VK_RIGHT, CtrlKey | ShiftKey, "MoveWordRightAndModifySelection" },
+ { VK_UP, 0, "MoveUp" },
+ { VK_UP, ShiftKey, "MoveUpAndModifySelection" },
+ { VK_PRIOR, ShiftKey, "MovePageUpAndModifySelection" },
+ { VK_DOWN, 0, "MoveDown" },
+ { VK_DOWN, ShiftKey, "MoveDownAndModifySelection" },
+ { VK_NEXT, ShiftKey, "MovePageDownAndModifySelection" },
+ { VK_PRIOR, 0, "MovePageUp" },
+ { VK_NEXT, 0, "MovePageDown" },
+ { VK_HOME, 0, "MoveToBeginningOfLine" },
+ { VK_HOME, ShiftKey, "MoveToBeginningOfLineAndModifySelection" },
+ { VK_HOME, CtrlKey, "MoveToBeginningOfDocument" },
+ { VK_HOME, CtrlKey | ShiftKey, "MoveToBeginningOfDocumentAndModifySelection" },
+
+ { VK_END, 0, "MoveToEndOfLine" },
+ { VK_END, ShiftKey, "MoveToEndOfLineAndModifySelection" },
+ { VK_END, CtrlKey, "MoveToEndOfDocument" },
+ { VK_END, CtrlKey | ShiftKey, "MoveToEndOfDocumentAndModifySelection" },
+
+ { VK_BACK, 0, "DeleteBackward" },
+ { VK_BACK, ShiftKey, "DeleteBackward" },
+ { VK_DELETE, 0, "DeleteForward" },
+ { VK_BACK, CtrlKey, "DeleteWordBackward" },
+ { VK_DELETE, CtrlKey, "DeleteWordForward" },
+
+ { '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" },
+
+ // It's not quite clear whether Undo/Redo should be handled
+ // in the application or in WebKit. We chose WebKit.
+ { 'Z', CtrlKey, "Undo" },
+ { 'Z', CtrlKey | ShiftKey, "Redo" },
+};
+
+static const KeyPressEntry keyPressEntries[] = {
+ { '\t', 0, "InsertTab" },
+ { '\t', ShiftKey, "InsertBacktab" },
+ { '\r', 0, "InsertNewline" },
+ { '\r', CtrlKey, "InsertNewline" },
+ { '\r', AltKey, "InsertNewline" },
+ { '\r', AltKey | ShiftKey, "InsertNewline" },
+};
+
+static const char* interpretKeyEvent(const KeyboardEvent* evt)
+{
+ ASSERT(evt->type() == eventNames().keydownEvent || evt->type() == eventNames().keypressEvent);
+
+ static HashMap<int, const char*>* keyDownCommandsMap = 0;
+ static HashMap<int, const char*>* keyPressCommandsMap = 0;
+
+ if (!keyDownCommandsMap) {
+ keyDownCommandsMap = new HashMap<int, const char*>;
+ keyPressCommandsMap = new HashMap<int, const char*>;
+
+ 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);
+ }
- const PlatformKeyboardEvent* kevent = event->keyEvent();
- if (!kevent || kevent->type() == PlatformKeyboardEvent::KeyUp)
- return;
+ unsigned modifiers = 0;
+ if (evt->shiftKey())
+ modifiers |= ShiftKey;
+ if (evt->altKey())
+ modifiers |= AltKey;
+ if (evt->ctrlKey())
+ modifiers |= CtrlKey;
+
+ if (evt->type() == eventNames().keydownEvent) {
+ int mapKey = modifiers << 16 | evt->keyCode();
+ return mapKey ? keyDownCommandsMap->get(mapKey) : 0;
+ }
- Node* start = frame->selection()->start().node();
- if (!start)
- return;
+ int mapKey = modifiers << 16 | evt->charCode();
+ return mapKey ? keyPressCommandsMap->get(mapKey) : 0;
+}
+
+static bool handleEditingKeyboardEvent(KeyboardEvent* evt)
+{
+ Node* node = evt->target()->toNode();
+ ASSERT(node);
+ Frame* frame = node->document()->frame();
+ ASSERT(frame);
+
+ const PlatformKeyboardEvent* keyEvent = evt->keyEvent();
+ if (!keyEvent)
+ return false;
- // FIXME: Use GtkBindingSet instead of this hard-coded switch
- // http://bugs.webkit.org/show_bug.cgi?id=15911
-
- if (start->isContentEditable()) {
- switch (kevent->windowsVirtualKeyCode()) {
- case VK_BACK:
- frame->editor()->deleteWithDirection(SelectionController::BACKWARD,
- kevent->ctrlKey() ? WordGranularity : CharacterGranularity, false, true);
- break;
- case VK_DELETE:
- frame->editor()->deleteWithDirection(SelectionController::FORWARD,
- kevent->ctrlKey() ? WordGranularity : CharacterGranularity, false, true);
- break;
+ bool caretBrowsing = frame->settings()->caretBrowsingEnabled();
+ if (caretBrowsing) {
+ switch (keyEvent->windowsVirtualKeyCode()) {
case VK_LEFT:
- frame->selection()->modify(kevent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
+ frame->selection()->modify(keyEvent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
SelectionController::LEFT,
- kevent->ctrlKey() ? WordGranularity : CharacterGranularity,
+ keyEvent->ctrlKey() ? WordGranularity : CharacterGranularity,
true);
- break;
+ return true;
case VK_RIGHT:
- frame->selection()->modify(kevent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
+ frame->selection()->modify(keyEvent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
SelectionController::RIGHT,
- kevent->ctrlKey() ? WordGranularity : CharacterGranularity,
+ keyEvent->ctrlKey() ? WordGranularity : CharacterGranularity,
true);
- break;
+ return true;
case VK_UP:
- frame->selection()->modify(kevent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
+ frame->selection()->modify(keyEvent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
SelectionController::BACKWARD,
- kevent->ctrlKey() ? ParagraphGranularity : LineGranularity,
+ keyEvent->ctrlKey() ? ParagraphGranularity : LineGranularity,
true);
- break;
+ return true;
case VK_DOWN:
- frame->selection()->modify(kevent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
+ frame->selection()->modify(keyEvent->shiftKey() ? SelectionController::EXTEND : SelectionController::MOVE,
SelectionController::FORWARD,
- kevent->ctrlKey() ? ParagraphGranularity : LineGranularity,
+ keyEvent->ctrlKey() ? ParagraphGranularity : LineGranularity,
true);
- break;
- case VK_PRIOR: // PageUp
- frame->editor()->command(kevent->shiftKey() ? "MovePageUpAndModifySelection" : "MovePageUp").execute();
- break;
- case VK_NEXT: // PageDown
- frame->editor()->command(kevent->shiftKey() ? "MovePageDownAndModifySelection" : "MovePageDown").execute();
- break;
- case VK_HOME:
- if (kevent->ctrlKey() && kevent->shiftKey())
- frame->editor()->command("MoveToBeginningOfDocumentAndModifySelection").execute();
- else if (kevent->ctrlKey())
- frame->editor()->command("MoveToBeginningOfDocument").execute();
- else if (kevent->shiftKey())
- frame->editor()->command("MoveToBeginningOfLineAndModifySelection").execute();
- else
- frame->editor()->command("MoveToBeginningOfLine").execute();
- break;
- case VK_END:
- if (kevent->ctrlKey() && kevent->shiftKey())
- frame->editor()->command("MoveToEndOfDocumentAndModifySelection").execute();
- else if (kevent->ctrlKey())
- frame->editor()->command("MoveToEndOfDocument").execute();
- else if (kevent->shiftKey())
- frame->editor()->command("MoveToEndOfLineAndModifySelection").execute();
- else
- frame->editor()->command("MoveToEndOfLine").execute();
- break;
- case VK_RETURN:
- frame->editor()->command("InsertLineBreak").execute();
- break;
- case VK_TAB:
- return;
- default:
- if (!kevent->ctrlKey() && !kevent->altKey() && !kevent->text().isEmpty()) {
- if (kevent->text().length() == 1) {
- UChar ch = kevent->text()[0];
- // Don't insert null or control characters as they can result in unexpected behaviour
- if (ch < ' ')
- break;
- }
- frame->editor()->insertText(kevent->text(), event);
- } else if (kevent->ctrlKey()) {
- switch (kevent->windowsVirtualKeyCode()) {
- case VK_B:
- frame->editor()->command("ToggleBold").execute();
- break;
- case VK_I:
- frame->editor()->command("ToggleItalic").execute();
- break;
- case VK_Y:
- frame->editor()->command("Redo").execute();
- break;
- case VK_Z:
- frame->editor()->command("Undo").execute();
- break;
- default:
- return;
- }
- } else return;
- }
- } else {
- switch (kevent->windowsVirtualKeyCode()) {
- case VK_UP:
- frame->editor()->command("MoveUp").execute();
- break;
- case VK_DOWN:
- frame->editor()->command("MoveDown").execute();
- break;
- case VK_PRIOR: // PageUp
- frame->editor()->command("MovePageUp").execute();
- break;
- case VK_NEXT: // PageDown
- frame->editor()->command("MovePageDown").execute();
- break;
- case VK_HOME:
- if (kevent->ctrlKey())
- frame->editor()->command("MoveToBeginningOfDocument").execute();
- break;
- case VK_END:
- if (kevent->ctrlKey())
- frame->editor()->command("MoveToEndOfDocument").execute();
- break;
- default:
- return;
+ return true;
}
}
- event->setDefaultHandled();
+
+ Editor::Command command = frame->editor()->command(interpretKeyEvent(evt));
+
+ if (keyEvent->type() == PlatformKeyboardEvent::RawKeyDown) {
+ // WebKit doesn't have enough information about mode to decide how commands that just insert text if executed via Editor should be treated,
+ // so we leave it upon WebCore to either handle them immediately (e.g. Tab that changes focus) or let a keypress event be generated
+ // (e.g. Tab that inserts a Tab character, or Enter).
+ return !command.isTextInsertion() && command.execute(evt);
+ }
+
+ if (command.execute(evt))
+ return true;
+
+ // Don't insert null or control characters as they can result in unexpected behaviour
+ if (evt->charCode() < ' ')
+ return false;
+
+ // Don't insert anything if a modifier is pressed
+ if (keyEvent->ctrlKey() || keyEvent->altKey())
+ return false;
+
+ return frame->editor()->insertText(evt->keyEvent()->text(), evt);
+}
+
+void EditorClient::handleKeyboardEvent(KeyboardEvent* event)
+{
+ if (handleEditingKeyboardEvent(event))
+ event->setDefaultHandled();
}
void EditorClient::handleInputMethodKeydown(KeyboardEvent* event)
@@ -468,7 +544,8 @@ void EditorClient::handleInputMethodKeydown(KeyboardEvent* event)
}
EditorClient::EditorClient(WebKitWebView* webView)
- : m_webView(webView)
+ : m_isInRedo(false)
+ , m_webView(webView)
{
WebKitWebViewPrivate* priv = m_webView->priv;
g_signal_connect(priv->imContext, "commit", G_CALLBACK(imContextCommitted), this);
@@ -509,19 +586,90 @@ void EditorClient::textDidChangeInTextArea(Element*)
notImplemented();
}
-void EditorClient::ignoreWordInSpellDocument(const String&)
+void EditorClient::ignoreWordInSpellDocument(const String& text)
{
- notImplemented();
+ GSList* langs = webkit_web_settings_get_spell_languages(m_webView);
+
+ for (; langs; langs = langs->next) {
+ SpellLanguage* lang = static_cast<SpellLanguage*>(langs->data);
+
+ enchant_dict_add_to_session(lang->speller, text.utf8().data(), -1);
+ }
}
-void EditorClient::learnWord(const String&)
+void EditorClient::learnWord(const String& text)
{
- notImplemented();
+ GSList* langs = webkit_web_settings_get_spell_languages(m_webView);
+
+ for (; langs; langs = langs->next) {
+ SpellLanguage* lang = static_cast<SpellLanguage*>(langs->data);
+
+ enchant_dict_add_to_personal(lang->speller, text.utf8().data(), -1);
+ }
}
-void EditorClient::checkSpellingOfString(const UChar*, int, int*, int*)
+void EditorClient::checkSpellingOfString(const UChar* text, int length, int* misspellingLocation, int* misspellingLength)
+{
+ 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;
+ GSList* langs = webkit_web_settings_get_spell_languages(m_webView);
+
+ 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 (; langs; langs = langs->next) {
+ SpellLanguage* lang = static_cast<SpellLanguage*>(langs->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(lang->speller, 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)
{
- notImplemented();
+ // 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*)
@@ -550,9 +698,24 @@ bool EditorClient::spellingUIIsShowing()
return false;
}
-void EditorClient::getGuessesForWord(const String&, Vector<String>&)
+void EditorClient::getGuessesForWord(const String& word, WTF::Vector<String>& guesses)
{
- notImplemented();
+ GSList* langs = webkit_web_settings_get_spell_languages(m_webView);
+ guesses.clear();
+
+ for (; langs; langs = langs->next) {
+ size_t numberOfSuggestions;
+ size_t i;
+
+ SpellLanguage* lang = static_cast<SpellLanguage*>(langs->data);
+ gchar** suggestions = enchant_dict_suggest(lang->speller, 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(lang->speller, suggestions);
+ }
}
}
diff --git a/WebKit/gtk/WebCoreSupport/EditorClientGtk.h b/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
index 14514f5..68034cf 100644
--- a/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/EditorClientGtk.h
@@ -32,6 +32,7 @@
#include "EditorClient.h"
+#include <wtf/Deque.h>
#include <wtf/Forward.h>
typedef struct _WebKitWebView WebKitWebView;
@@ -43,6 +44,12 @@ namespace WebCore {
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();
@@ -102,6 +109,7 @@ namespace WebKit {
virtual void ignoreWordInSpellDocument(const WebCore::String&);
virtual void learnWord(const WebCore::String&);
virtual void checkSpellingOfString(const UChar*, int length, int* misspellingLocation, int* misspellingLength);
+ virtual WebCore::String getAutoCorrectSuggestionForMisspelledWord(const WebCore::String&);
virtual void checkGrammarOfString(const UChar*, int length, WTF::Vector<WebCore::GrammarDetail>&, int* badGrammarLocation, int* badGrammarLength);
virtual void updateSpellingUIWithGrammarString(const WebCore::String&, const WebCore::GrammarDetail&);
virtual void updateSpellingUIWithMisspelledWord(const WebCore::String&);
diff --git a/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp b/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
index a54aecc..68c0435 100644
--- a/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
@@ -1,6 +1,6 @@
/*
* Copyright (C) 2007, 2008 Alp Toker <alp@atoker.com>
- * Copyright (C) 2007, 2008 Holger Hans Peter Freyther
+ * Copyright (C) 2007, 2008, 2009 Holger Hans Peter Freyther
* Copyright (C) 2007 Christian Dywan <christian@twotoasts.de>
* Copyright (C) 2008 Collabora Ltd. All rights reserved.
* Copyright (C) 2009 Gustavo Noronha Silva <gns@gnome.org>
@@ -29,6 +29,8 @@
#include "FrameLoader.h"
#include "FrameView.h"
#include "FrameTree.h"
+#include "GOwnPtr.h"
+#include "GtkPluginWidget.h"
#include "HTMLAppletElement.h"
#include "HTMLFormElement.h"
#include "HTMLFrameElement.h"
@@ -49,18 +51,19 @@
#include "ProgressTracker.h"
#include "JSDOMBinding.h"
#include "ScriptController.h"
-#include "webkitwebview.h"
+#include "webkiterror.h"
#include "webkitnetworkrequest.h"
+#include "webkitprivate.h"
#include "webkitwebframe.h"
#include "webkitwebnavigationaction.h"
#include "webkitwebpolicydecision.h"
-#include "webkitprivate.h"
+#include "webkitwebview.h"
#include <JavaScriptCore/APICast.h>
+#include <gio/gio.h>
+#include <glib.h>
+#include <glib/gi18n-lib.h>
#include <stdio.h>
-#if PLATFORM(UNIX)
-#include <sys/utsname.h>
-#endif
using namespace WebCore;
@@ -68,7 +71,6 @@ namespace WebKit {
FrameLoaderClient::FrameLoaderClient(WebKitWebFrame* frame)
: m_frame(frame)
- , m_userAgent("")
, m_policyDecision(0)
, m_pluginView(0)
, m_hasSentResponseToPlugin(false)
@@ -82,86 +84,29 @@ FrameLoaderClient::~FrameLoaderClient()
g_object_unref(m_policyDecision);
}
-static String agentPlatform()
-{
-#ifdef GDK_WINDOWING_X11
- return "X11";
-#elif defined(GDK_WINDOWING_WIN32)
- return "Windows";
-#elif defined(GDK_WINDOWING_QUARTZ)
- return "Macintosh";
-#elif defined(GDK_WINDOWING_DIRECTFB)
- return "DirectFB";
-#else
- notImplemented();
- return "Unknown";
-#endif
-}
-
-static String agentOS()
+String FrameLoaderClient::userAgent(const KURL&)
{
-#if PLATFORM(DARWIN)
-#if PLATFORM(X86)
- return "Intel Mac OS X";
-#else
- return "PPC Mac OS X";
-#endif
-#elif PLATFORM(UNIX)
- struct utsname name;
- if (uname(&name) != -1)
- return String::format("%s %s", name.sysname, name.machine);
- else
- return "Unknown";
-#elif PLATFORM(WIN_OS)
- // FIXME: Compute the Windows version
- return "Windows";
-#else
- notImplemented();
- return "Unknown";
-#endif
+ WebKitWebSettings* settings = webkit_web_view_get_settings(getViewFromFrame(m_frame));
+ return String::fromUTF8(webkit_web_settings_get_user_agent(settings));
}
-static String composeUserAgent()
+static void notifyStatus(WebKitWebFrame* frame, WebKitLoadStatus loadStatus)
{
- // 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
-
- String ua;
-
- // Product
- ua += "Mozilla/5.0";
-
- // Comment
- ua += " (";
- ua += agentPlatform(); // Platform
- ua += "; U; "; // Security
- ua += agentOS(); // OS-or-CPU
- ua += "; ";
- ua += defaultLanguage(); // Localization information
- ua += ") ";
-
- // WebKit Product
- // FIXME: The WebKit version is hardcoded
- static const String webKitVersion = "528.5+";
- ua += "AppleWebKit/" + webKitVersion;
- ua += " (KHTML, like Gecko, ";
- // 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
- ua += "Safari/" + webKitVersion;
- ua += ") ";
+ frame->priv->loadStatus = loadStatus;
+ g_object_notify(G_OBJECT(frame), "load-status");
- // Vendor Product
- ua += g_get_prgname();
-
- return ua;
+ 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");
+ }
}
-String FrameLoaderClient::userAgent(const KURL&)
+static void loadDone(WebKitWebFrame* frame, bool didSucceed)
{
- if (m_userAgent.isEmpty())
- m_userAgent = composeUserAgent();
-
- return m_userAgent;
+ // 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)
@@ -201,6 +146,13 @@ void FrameLoaderClient::committedLoad(DocumentLoader* loader, const char* data,
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);
}
}
@@ -236,6 +188,8 @@ 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()
@@ -244,6 +198,8 @@ void FrameLoaderClient::postProgressEstimateChangedNotification()
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()
@@ -282,7 +238,7 @@ void FrameLoaderClient::dispatchDecidePolicyForMIMEType(FramePolicyFunction poli
}
WebKitWebView* page = getViewFromFrame(m_frame);
- WebKitNetworkRequest* request = webkit_network_request_new(resourceRequest.url().string().utf8().data());
+ WebKitNetworkRequest* request = webkit_network_request_new_with_core_request(resourceRequest);
WebKitWebPolicyDecision* policyDecision = webkit_web_policy_decision_new(m_frame, policyFunction);
if (m_policyDecision)
@@ -303,7 +259,7 @@ void FrameLoaderClient::dispatchDecidePolicyForMIMEType(FramePolicyFunction poli
webkit_web_policy_decision_ignore (policyDecision);
}
-static WebKitWebNavigationAction* getNavigationAction(const NavigationAction& action)
+static WebKitWebNavigationAction* getNavigationAction(const NavigationAction& action, const char* targetFrame)
{
gint button = -1;
@@ -333,10 +289,11 @@ static WebKitWebNavigationAction* getNavigationAction(const NavigationAction& ac
"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& s)
+void FrameLoaderClient::dispatchDecidePolicyForNewWindowAction(FramePolicyFunction policyFunction, const NavigationAction& action, const ResourceRequest& resourceRequest, PassRefPtr<FormState>, const String& frameName)
{
ASSERT(policyFunction);
if (!policyFunction)
@@ -355,7 +312,7 @@ void FrameLoaderClient::dispatchDecidePolicyForNewWindowAction(FramePolicyFuncti
WebKitWebView* webView = getViewFromFrame(m_frame);
WebKitNetworkRequest* request = webkit_network_request_new(resourceRequest.url().string().utf8().data());
- WebKitWebNavigationAction* navigationAction = getNavigationAction(action);
+ WebKitWebNavigationAction* navigationAction = getNavigationAction(action, frameName.utf8().data());
gboolean isHandled = false;
g_signal_emit_by_name(webView, "new-window-policy-decision-requested", m_frame, request, navigationAction, policyDecision, &isHandled);
@@ -381,7 +338,7 @@ void FrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFunct
}
WebKitWebView* webView = getViewFromFrame(m_frame);
- WebKitNetworkRequest* request = webkit_network_request_new(resourceRequest.url().string().utf8().data());
+ WebKitNetworkRequest* request = webkit_network_request_new_with_core_request(resourceRequest);
WebKitNavigationResponse response;
/*
* We still support the deprecated navigation-requested signal, if the
@@ -403,7 +360,7 @@ void FrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFunct
g_object_unref(m_policyDecision);
m_policyDecision = policyDecision;
- WebKitWebNavigationAction* navigationAction = getNavigationAction(action);
+ WebKitWebNavigationAction* navigationAction = getNavigationAction(action, NULL);
gboolean isHandled = false;
g_signal_emit_by_name(webView, "navigation-policy-decision-requested", m_frame, request, navigationAction, policyDecision, &isHandled);
@@ -415,9 +372,27 @@ void FrameLoaderClient::dispatchDecidePolicyForNavigationAction(FramePolicyFunct
webkit_web_policy_decision_use(m_policyDecision);
}
-Widget* FrameLoaderClient::createPlugin(const IntSize& pluginSize, HTMLPlugInElement* element, const KURL& url, const Vector<String>& paramNames, const Vector<String>& paramValues, const String& mimeType, bool loadManually)
+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)
{
- PluginView* pluginView = PluginView::create(core(m_frame), pluginSize, element, url, paramNames, paramValues, mimeType, 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());
+ GOwnPtr<GHashTable> hash(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;
@@ -438,7 +413,12 @@ PassRefPtr<Frame> FrameLoaderClient::createFrame(const KURL& url, const String&
childFrame->tree()->setName(name);
childFrame->init();
- childFrame->loader()->loadURL(url, referrer, String(), false, FrameLoadTypeRedirectWithLockedBackForwardList, 0, 0);
+
+ // The creation of the frame may have run arbitrary JavaScript that removed it from the page already.
+ if (!childFrame->page())
+ return 0;
+
+ childFrame->loader()->loadURLIntoChildFrame(url, referrer, childFrame.get());
// The frame's onload handler may have removed it from the document.
if (!childFrame->tree()->parent())
@@ -454,7 +434,7 @@ void FrameLoaderClient::redirectDataToPlugin(Widget* pluginWidget)
m_hasSentResponseToPlugin = false;
}
-Widget* FrameLoaderClient::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL,
+PassRefPtr<Widget> FrameLoaderClient::createJavaAppletWidget(const IntSize&, HTMLAppletElement*, const KURL& baseURL,
const Vector<String>& paramNames, const Vector<String>& paramValues)
{
notImplemented();
@@ -540,7 +520,7 @@ bool FrameLoaderClient::hasWebView() const
void FrameLoaderClient::dispatchDidFinishLoad()
{
- g_signal_emit_by_name(m_frame, "load-done", true);
+ loadDone(m_frame, true);
}
void FrameLoaderClient::frameLoadCompleted()
@@ -624,6 +604,9 @@ void FrameLoaderClient::dispatchDidChangeLocationWithinPage()
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::dispatchWillClose()
@@ -640,6 +623,7 @@ void FrameLoaderClient::dispatchDidReceiveIcon()
void FrameLoaderClient::dispatchDidStartProvisionalLoad()
{
+ notifyStatus(m_frame, WEBKIT_LOAD_PROVISIONAL);
}
void FrameLoaderClient::dispatchDidReceiveTitle(const String& title)
@@ -674,6 +658,7 @@ void FrameLoaderClient::dispatchDidCommitLoad()
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)) {
@@ -699,7 +684,7 @@ void FrameLoaderClient::dispatchDidFirstLayout()
void FrameLoaderClient::dispatchDidFirstVisuallyNonEmptyLayout()
{
- notImplemented();
+ notifyStatus(m_frame, WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT);
}
void FrameLoaderClient::dispatchShow()
@@ -799,7 +784,13 @@ void FrameLoaderClient::dispatchDidFinishLoading(DocumentLoader*, unsigned long
notImplemented();
}
-void FrameLoaderClient::dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError&)
+void FrameLoaderClient::dispatchDidFailLoading(DocumentLoader*, unsigned long identifier, const ResourceError& error)
+{
+ // FIXME: when does this occur and what should happen?
+ notImplemented();
+}
+
+void FrameLoaderClient::dispatchDidLoadResourceByXMLHttpRequest(unsigned long, const ScriptString&)
{
notImplemented();
}
@@ -810,73 +801,122 @@ bool FrameLoaderClient::dispatchDidLoadResourceFromMemoryCache(DocumentLoader*,
return false;
}
-void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError&)
+void FrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error)
{
- g_signal_emit_by_name(m_frame, "load-done", false);
+ dispatchDidFailLoad(error);
+
+ loadDone(m_frame, false);
}
-void FrameLoaderClient::dispatchDidFailLoad(const ResourceError&)
+void FrameLoaderClient::dispatchDidFailLoad(const ResourceError& error)
{
- g_signal_emit_by_name(m_frame, "load-done", false);
+ 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);
+ loadDone(m_frame, false);
+ return;
+ }
+
+ 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 = String::format("<html><body>%s</body></html>", webError->message);
+ else {
+ gboolean loaded = g_file_load_contents(errorFile, 0, &fileContent, 0, 0, 0);
+ if (!loaded)
+ content = String::format("<html><body>%s</body></html>", webError->message);
+ 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);
+
+ loadDone(m_frame, false);
}
-void FrameLoaderClient::download(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest&, const ResourceResponse&)
+void FrameLoaderClient::download(ResourceHandle* handle, const ResourceRequest& request, const ResourceRequest&, const ResourceResponse& response)
{
// FIXME: We could reuse the same handle here, but when I tried
// implementing that the main load would fail and stop, so I have
// simplified this case for now.
handle->cancel();
- startDownload(request);
+
+ WebKitNetworkRequest* networkRequest = webkit_network_request_new(request.url().string().utf8().data());
+ WebKitWebView* view = getViewFromFrame(m_frame);
+
+ webkit_web_view_request_download(view, networkRequest, response);
+ g_object_unref(networkRequest);
}
-ResourceError FrameLoaderClient::cancelledError(const ResourceRequest&)
+ResourceError FrameLoaderClient::cancelledError(const ResourceRequest& request)
{
- notImplemented();
- ResourceError error("", 0, "", "");
- error.setIsCancellation(true);
- return error;
+ return ResourceError(g_quark_to_string(WEBKIT_NETWORK_ERROR), WEBKIT_NETWORK_ERROR_CANCELLED,
+ request.url().string(), _("Load request cancelled"));
}
-ResourceError FrameLoaderClient::blockedError(const ResourceRequest&)
+ResourceError FrameLoaderClient::blockedError(const ResourceRequest& request)
{
- notImplemented();
- return ResourceError("", 0, "", "");
+ 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&)
+ResourceError FrameLoaderClient::cannotShowURLError(const ResourceRequest& request)
{
- notImplemented();
- return ResourceError("", 0, "", "");
+ 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&)
+ResourceError FrameLoaderClient::interruptForPolicyChangeError(const ResourceRequest& request)
{
- notImplemented();
- return ResourceError("", 0, "", "");
+ 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&)
+ResourceError FrameLoaderClient::cannotShowMIMETypeError(const ResourceResponse& response)
{
- notImplemented();
- return ResourceError("", 0, "", "");
+ 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&)
+ResourceError FrameLoaderClient::fileDoesNotExistError(const ResourceResponse& response)
{
- notImplemented();
- return ResourceError("", 0, "", "");
+ 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&)
+ResourceError FrameLoaderClient::pluginWillHandleLoadError(const ResourceResponse& response)
{
- notImplemented();
- return ResourceError("", 0, "", "");
+ 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&)
+bool FrameLoaderClient::shouldFallBack(const ResourceError& error)
{
- notImplemented();
- return false;
+ // FIXME: Mac checks for WebKitErrorPlugInWillHandleLoad here to avoid
+ // loading plugin content twice. Do we need it?
+ return !(error.isCancellation() || error.errorCode() == WEBKIT_POLICY_ERROR_FRAME_LOAD_INTERRUPTED_BY_POLICY_CHANGE);
}
bool FrameLoaderClient::canCachePage() const
@@ -914,21 +954,11 @@ void FrameLoaderClient::setMainDocumentError(DocumentLoader*, const ResourceErro
void FrameLoaderClient::startDownload(const ResourceRequest& request)
{
- WebKitNetworkRequest* networkRequest = webkit_network_request_new(request.url().string().utf8().data());
- WebKitDownload* download = webkit_download_new(networkRequest);
- g_object_unref(networkRequest);
-
+ WebKitNetworkRequest* networkRequest = webkit_network_request_new_with_core_request(request);
WebKitWebView* view = getViewFromFrame(m_frame);
- gboolean handled;
- g_signal_emit_by_name(view, "download-requested", download, &handled);
- if (!handled) {
- webkit_download_cancel(download);
- g_object_unref(download);
- return;
- }
-
- webkit_download_start(download);
+ webkit_web_view_request_download(view, networkRequest);
+ g_object_unref(networkRequest);
}
void FrameLoaderClient::updateGlobalHistory()
diff --git a/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h b/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
index cb4786d..bc64c2f 100644
--- a/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h
@@ -69,6 +69,7 @@ namespace WebKit {
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 dispatchDidLoadResourceByXMLHttpRequest(unsigned long, const WebCore::ScriptString&);
virtual void dispatchDidHandleOnloadEvents();
virtual void dispatchDidReceiveServerRedirectForProvisionalLoad();
@@ -109,9 +110,9 @@ namespace WebKit {
virtual PassRefPtr<WebCore::Frame> createFrame(const WebCore::KURL& url, const WebCore::String& name, WebCore::HTMLFrameOwnerElement* ownerElement,
const WebCore::String& referrer, bool allowsScrolling, int marginWidth, int marginHeight);
- virtual WebCore::Widget* createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WebCore::String>&, const WTF::Vector<WebCore::String>&, const WebCore::String&, bool);
+ virtual PassRefPtr<WebCore::Widget> createPlugin(const WebCore::IntSize&, WebCore::HTMLPlugInElement*, const WebCore::KURL&, const WTF::Vector<WebCore::String>&, const WTF::Vector<WebCore::String>&, const WebCore::String&, bool);
virtual void redirectDataToPlugin(WebCore::Widget* pluginWidget);
- virtual WebCore::Widget* createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues);
+ virtual PassRefPtr<WebCore::Widget> createJavaAppletWidget(const WebCore::IntSize&, WebCore::HTMLAppletElement*, const WebCore::KURL& baseURL, const WTF::Vector<WebCore::String>& paramNames, const WTF::Vector<WebCore::String>& paramValues);
virtual WebCore::String overrideMediaType() const;
virtual void windowObjectCleared();
virtual void documentElementAvailable();
@@ -172,7 +173,6 @@ namespace WebKit {
private:
WebKitWebFrame* m_frame;
WebCore::ResourceResponse m_response;
- WebCore::String m_userAgent;
WebKitWebPolicyDecision* m_policyDecision;
// Plugin view to redirect data to
diff --git a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
index faa3e28..908bffa 100644
--- a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp
@@ -92,7 +92,10 @@ Page* InspectorClient::createPage()
g_signal_connect(m_webView, "destroy",
G_CALLBACK(notifyWebViewDestroyed), (gpointer)this);
- webkit_web_view_open(m_webView, "file://"DATA_DIR"/webkit-1.0/webinspector/inspector.html");
+ gchar* inspectorURI = g_filename_to_uri(DATA_DIR"/webkit-1.0/webinspector/inspector.html", NULL, NULL);
+ webkit_web_view_load_uri(m_webView, inspectorURI);
+ g_free(inspectorURI);
+
gtk_widget_show(GTK_WIDGET(m_webView));
return core(m_webView);
@@ -100,8 +103,8 @@ Page* InspectorClient::createPage()
String InspectorClient::localizedStringsURL()
{
- notImplemented();
- return String();
+ // FIXME: support l10n of localizedStrings.js
+ return String::fromUTF8(g_filename_to_uri(DATA_DIR"/webkit-1.0/webinspector/localizedStrings.js", NULL, NULL));
}
String InspectorClient::hiddenPanels()
@@ -173,6 +176,12 @@ void InspectorClient::inspectedURLChanged(const String& newURL)
webkit_web_inspector_set_inspected_uri(m_webInspector, newURL.utf8().data());
}
+void InspectorClient::inspectorWindowObjectCleared()
+{
+ notImplemented();
+}
+
+
void InspectorClient::populateSetting(const String& key, InspectorController::Setting& setting)
{
notImplemented();
diff --git a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
index 43894b3..ed9fe08 100644
--- a/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
+++ b/WebKit/gtk/WebCoreSupport/InspectorClientGtk.h
@@ -70,6 +70,8 @@ namespace WebKit {
virtual void storeSetting(const WebCore::String& key, const WebCore::InspectorController::Setting&);
virtual void removeSetting(const WebCore::String& key);
+ virtual void inspectorWindowObjectCleared();
+
private:
WebKitWebView* m_webView;
WebKitWebView* m_inspectedWebView;
diff --git a/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp b/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp
index ad8b077..5a7157e 100644
--- a/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp
+++ b/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2007 Luca Bruno <lethalman88@gmail.com>
+ * Copyright (C) 2009 Holger Hans Peter Freyther
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -28,21 +29,40 @@
using namespace WebCore;
-namespace WebKit
+namespace WebKit {
+
+GtkClipboard* PasteboardHelperGtk::getCurrentTarget(Frame* frame) const
{
+ WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame));
+
+ if (webkit_web_view_use_primary_for_paste(webView))
+ return getPrimary(frame);
+ else
+ return getClipboard(frame);
+}
-GtkClipboard* PasteboardHelperGtk::getClipboard(Frame* frame) const {
+GtkClipboard* PasteboardHelperGtk::getClipboard(Frame* frame) const
+{
WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame));
return gtk_widget_get_clipboard(GTK_WIDGET (webView),
GDK_SELECTION_CLIPBOARD);
}
-GtkTargetList* PasteboardHelperGtk::getCopyTargetList(Frame* frame) const {
+GtkClipboard* PasteboardHelperGtk::getPrimary(Frame* frame) const
+{
+ WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame));
+ return gtk_widget_get_clipboard(GTK_WIDGET (webView),
+ GDK_SELECTION_PRIMARY);
+}
+
+GtkTargetList* PasteboardHelperGtk::getCopyTargetList(Frame* frame) const
+{
WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame));
return webkit_web_view_get_copy_target_list(webView);
}
-GtkTargetList* PasteboardHelperGtk::getPasteTargetList(Frame* frame) const {
+GtkTargetList* PasteboardHelperGtk::getPasteTargetList(Frame* frame) const
+{
WebKitWebView* webView = webkit_web_frame_get_web_view(kit(frame));
return webkit_web_view_get_paste_target_list(webView);
}
diff --git a/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h b/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
index 77e0457..4e66357 100644
--- a/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
+++ b/WebKit/gtk/WebCoreSupport/PasteboardHelperGtk.h
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2007 Luca Bruno <lethalman88@gmail.com>
+ * Copyright (C) 2009 Holger Hans Peter Freyther
* All rights reserved.
*
* This library is free software; you can redistribute it and/or
@@ -39,7 +40,9 @@ namespace WebKit {
class PasteboardHelperGtk : public PasteboardHelper {
public:
PasteboardHelperGtk() { }
+ virtual GtkClipboard* getCurrentTarget(Frame*) const;
virtual GtkClipboard* getClipboard(Frame*) const;
+ virtual GtkClipboard* getPrimary(Frame*) const;
virtual GtkTargetList* getCopyTargetList(Frame*) const;
virtual GtkTargetList* getPasteTargetList(Frame*) const;
};
diff --git a/WebKit/gtk/docs/GNUmakefile.am b/WebKit/gtk/docs/GNUmakefile.am
new file mode 100644
index 0000000..b34dace
--- /dev/null
+++ b/WebKit/gtk/docs/GNUmakefile.am
@@ -0,0 +1,104 @@
+## 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)/JavaScriptCore \
+ -I$(top_srcdir)/JavaScriptCore/ForwardingHeaders \
+ -I$(top_srcdir)/JavaScriptCore/parser \
+ -I$(top_srcdir)/JavaScriptCore/wtf \
+ -I$(top_builddir)/DerivedSources \
+ $(GLOBALDEPS_CFLAGS) \
+ $(CAIRO_CFLAGS) \
+ $(GTK_CFLAGS) \
+ $(LIBSOUP_CFLAGS)
+GTKDOC_LIBS= \
+ $(top_builddir)/libwebkit-1.0.la \
+ $(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/WebKit/gtk/docs/version.xml.in b/WebKit/gtk/docs/version.xml.in
new file mode 100644
index 0000000..d78bda9
--- /dev/null
+++ b/WebKit/gtk/docs/version.xml.in
@@ -0,0 +1 @@
+@VERSION@
diff --git a/WebKit/gtk/docs/webkitenvironment.xml b/WebKit/gtk/docs/webkitenvironment.xml
new file mode 100644
index 0000000..03d64b7
--- /dev/null
+++ b/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/WebKit/gtk/docs/webkitgtk-docs.sgml b/WebKit/gtk/docs/webkitgtk-docs.sgml
index 655a991..402b41a 100644
--- a/WebKit/gtk/docs/webkitgtk-docs.sgml
+++ b/WebKit/gtk/docs/webkitgtk-docs.sgml
@@ -1,14 +1,12 @@
<?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">
+ "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]
- The latest version of this documentation can be found on-line at
- <ulink role="online-location" url="http://[SERVER]/webkitgtk/index.html">http://[SERVER]/webkitgtk/</ulink>.
- </releaseinfo>
+ <title>WebKitGTK+ Reference Manual</title>
+ <releaseinfo>for WebKitGTK+ &version;</releaseinfo>
</bookinfo>
<chapter>
@@ -18,16 +16,25 @@
<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/webkitnetworkrequest.xml"/>
<xi:include href="xml/webkitwebinspector.xml"/>
+ <xi:include href="xml/webkitdownload.xml"/>
+ <xi:include href="xml/webkitsoupauthdialog.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 deprectaed symbols</title>
+ <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>
@@ -38,4 +45,34 @@
<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>
</book>
diff --git a/WebKit/gtk/docs/webkitgtk-sections.txt b/WebKit/gtk/docs/webkitgtk-sections.txt
index d20bc7a..d038ae9 100644
--- a/WebKit/gtk/docs/webkitgtk-sections.txt
+++ b/WebKit/gtk/docs/webkitgtk-sections.txt
@@ -4,6 +4,7 @@
WebKitWebSettings
webkit_web_settings_copy
webkit_web_settings_new
+webkit_web_settings_get_user_agent
<SUBSECTION Standard>
WEBKIT_WEB_SETTINGS
WEBKIT_IS_WEB_SETTINGS
@@ -22,6 +23,7 @@ WebKitWebSettingsClass
<FILE>webkitwebbackforwardlist</FILE>
<TITLE>WebKitWebBackForwardList</TITLE>
WebKitWebBackForwardList
+webkit_web_back_forward_list_add_item
webkit_web_back_forward_list_contains_item
webkit_web_back_forward_list_get_back_item
webkit_web_back_forward_list_get_back_length
@@ -80,16 +82,23 @@ WebKitWebHistoryItemClass
<SECTION>
<FILE>webkitwebframe</FILE>
<TITLE>WebKitWebFrame</TITLE>
+WebKitLoadStatus
WebKitWebFrame
webkit_web_frame_find_frame
webkit_web_frame_get_global_context
+webkit_web_frame_get_load_status
webkit_web_frame_get_name
webkit_web_frame_get_parent
webkit_web_frame_get_title
webkit_web_frame_get_uri
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>
@@ -108,6 +117,60 @@ WebKitWebFrameClass
</SECTION>
<SECTION>
+<FILE>webkitdownload</FILE>
+<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_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
+WebKitDownloadError
+WebKitDownloadPrivate
+WebKitDownloadStatus
+</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
@@ -128,10 +191,60 @@ 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_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>webkitnetworkrequest</FILE>
<TITLE>WebKitNetworkRequest</TITLE>
WebKitNetworkRequest
webkit_network_request_get_uri
+webkit_network_request_get_message
+webkit_network_request_set_uri
<SUBSECTION Standard>
WEBKIT_NETWORK_REQUEST
WEBKIT_IS_NETWORK_REQUEST
@@ -142,7 +255,6 @@ WEBKIT_NETWORK_REQUEST_GET_CLASS
<SUBSECTION Private>
webkit_network_request_get_type
webkit_network_request_new
-webkit_network_request_set_uri
WebKitNetworkRequestPrivate
WebKitNetworkRequest
WebKitNetworkRequestClass
@@ -160,20 +272,27 @@ 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_show_mime_type
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_editable
+webkit_web_view_get_encoding
webkit_web_view_get_focused_frame
webkit_web_view_get_full_content_zoom
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_zoom_level
webkit_web_view_go_back
webkit_web_view_go_back_or_forward
@@ -181,14 +300,19 @@ 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_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
@@ -241,6 +365,7 @@ WebKitWebWindowFeaturesPrivate
<SECTION>
<FILE>webkit</FILE>
webkit_init
+webkit_get_default_session
</SECTION>
<SECTION>
@@ -257,6 +382,19 @@ 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
diff --git a/WebKit/gtk/gdom/ConvertToGCharPrivate.h b/WebKit/gtk/gdom/ConvertToGCharPrivate.h
new file mode 100644
index 0000000..621fb99
--- /dev/null
+++ b/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 "AtomicString.h"
+#include "CString.h"
+#include "KURL.h"
+#include "PlatformString.h"
+
+inline gchar* copyAsGchar(WebCore::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(WebCore::AtomicString const& s)
+{
+ return g_strdup(s.string().utf8().data());
+}
+
+#endif /* ConvertToGCharPrivate_h*/
diff --git a/WebKit/gtk/po/ChangeLog b/WebKit/gtk/po/ChangeLog
new file mode 100644
index 0000000..68321ad
--- /dev/null
+++ b/WebKit/gtk/po/ChangeLog
@@ -0,0 +1,123 @@
+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/WebKit/gtk/po/GNUmakefile.am b/WebKit/gtk/po/GNUmakefile.am
new file mode 100644
index 0000000..b5b0c4c
--- /dev/null
+++ b/WebKit/gtk/po/GNUmakefile.am
@@ -0,0 +1,210 @@
+# 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)/WebKit/gtk/po/*.po)
+
+MOFILES += $(shell echo $(POFILES) | tr ' ' '\n' | sed "s,^$(srcdir)/,,g" | sed 's/\.po/.mo/g')
+
+.po.mo:
+ test -d WebKit/gtk/po/ || mkdir -p 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)/WebKit/gtk/po/$(DOMAIN).pot $(MOFILES)
+ test ! -f $(srcdir)/WebKit/gtk/po/$(DOMAIN).pot || \
+ test -z "$(MOFILES)" || $(MAKE) $(MOFILES)
+ @test ! -f $(srcdir)/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)/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)/WebKit/gtk/po/POTFILES \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --msgid-bugs-address="$$msgid_bugs_address" \
+ --keyword=_ --keyword=N_ -o $(srcdir)/WebKit/gtk/po/webkit.pot \
+ ;; \
+ *) \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+ --files-from=$(srcdir)/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)/WebKit/gtk/po/webkit.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)/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.
+$(POFILES): $(srcdir)/WebKit/gtk/po/$(DOMAIN).pot
+ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \
+ if test -f "$(srcdir)/WebKit/gtk/po/$${lang}.po"; then \
+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir)/WebKit/gtk/po && "; \
+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir)/WebKit/gtk/po && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+ else \
+ $(MAKE) $${lang}.po-create; \
+ fi
+
+update-po: GNUmakefile
+ $(MAKE) $(DOMAIN).pot-update
+ $(MAKE) $(POFILES)
+ $(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
+stamp_files += \
+ 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 WebKit/gtk/po/$$cat; then realcat=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/WebKit/gtk/po/POTFILES b/WebKit/gtk/po/POTFILES
new file mode 100644
index 0000000..05ba138
--- /dev/null
+++ b/WebKit/gtk/po/POTFILES
@@ -0,0 +1,12 @@
+# List of source files which contain translatable strings.
+WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp
+WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.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/WebKit/gtk/po/README b/WebKit/gtk/po/README
new file mode 100644
index 0000000..22dbcc0
--- /dev/null
+++ b/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/WebKit/gtk/po/de.po b/WebKit/gtk/po/de.po
new file mode 100644
index 0000000..f3785af
--- /dev/null
+++ b/WebKit/gtk/po/de.po
@@ -0,0 +1,696 @@
+# German translations for WebKit package.
+# Copyright (C) 2009 Christian Dywan <christian@twotoasts.de>
+#
+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: 2009-04-07 00:27+0100\n"
+"Last-Translator: Christian Dywan <christian@twotoasts.de>\n"
+"Language-Team: German\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:425
+msgid "Upload File"
+msgstr "Datei hochladen"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Unicode-Steuerzeichen einfügen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Netzwerkanfrage"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr "Die Netzwerkanfrage der URI welche heruntergeladen werden soll"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr "Ziel-URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "Die Ziel-URI an welcher die Datei gespeichert werden soll"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Vorgeschlagener Dateiname"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "Der beim Speichern als Standard vorgeschlagene Dateiname"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Fortschritt"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "Bestimmt den aktuellen Fortschritt des Herunterladens"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Bestimmt den aktuellen Status des Herunterladens"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Aktuelle Größe"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "Die Länge der bereits heruntergeladenen Daten"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Gesamtgröße"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "Die Gesamtgröße der Datei"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Name"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Der Name des Rahmens"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Titel"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "Der Titel des Dokuments in dem Rahmen"
+
+#: 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 "Die aktuelle URI der im Rahmen dargestellten Inhalte"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+#, fuzzy
+msgid "The title of the history item"
+msgstr "Die Gesamtgröße der Datei"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+#, fuzzy
+msgid "The alternate title of the history item"
+msgstr "Der Titel des Dokuments in dem Rahmen"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+msgid "Inspected URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+msgid "The default font size used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:210
+msgid "Minimum Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+msgid "The minimum logical font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Enforce 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+#, fuzzy
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Die aktuelle URI der im Rahmen dargestellten Inhalte"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+#, fuzzy
+msgid "Editable"
+msgstr "Titel"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Absenden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Zurücksetzen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "Durchsuchbarer _Index"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Datei wählen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Kein)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Verweis in neuem _Reiter öffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "Verweisziel herunter_laden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Verweisziel _kopieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "_Bild in neuem Fenster öffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Bil_d speichern unter"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Bild k_opieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "_Rahmen in neuem Fenster öffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "_Neu laden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Keine Vorschläge verfügbar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "Rechtschreibung _ignorieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "Rechtschreibung _hinzufügen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "Im Netz _suchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "In _Wörterbuch nachschlagen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "Verweis ö_ffnen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Grammatik _ignorieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Rechtschreibung und _Grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "Rechtschreibung und Grammatik _anzeigen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "Rechtschreibung und Grammatik _verbergen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "Dokument jetzt ü_berprüfen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Rechtschreibung beim _Eintippen überprüfen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "Grammatik beim _Eintippen überprüfen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Schriftart"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Umrandung"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "Element _untersuchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Keine vergangen Suchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Vergangene Suchen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Limpar buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "begriff"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "bedeutung"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "drucken"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "markieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "aktivieren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "auswählen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "abwählen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "überspringen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " dateien"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Unbekannt"
diff --git a/WebKit/gtk/po/en_GB.po b/WebKit/gtk/po/en_GB.po
new file mode 100644
index 0000000..6b6ecc0
--- /dev/null
+++ b/WebKit/gtk/po/en_GB.po
@@ -0,0 +1,693 @@
+# 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: 2009-04-09 19:09-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:425
+msgid "Upload File"
+msgstr "Upload File"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Insert Unicode Control Character"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Network Request"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+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:265
+msgid "Destination URI"
+msgstr "Destination URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "The destination URI where to save the file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Suggested Filename"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "The filename suggested as default when saving"
+
+#: 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 "Determines the current progress of the download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Determines the current status of the download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Current Size"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "The length of the data already downloaded"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Total Size"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "The total size of the file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "User cancelled the download"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, 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:269
+msgid "Username:"
+msgstr "Username:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Password:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Remember password"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Name"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "The name of the frame"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Title"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "The document title of the frame"
+
+#: 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 "The current URI of the contents displayed by the frame"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "The title of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Alternate Title"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr "The alternate title of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "The URI of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "Original URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "The original URI of the history item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Last visited Time"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+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:260
+msgid "Web View"
+msgstr "Web View"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+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:274
+msgid "Inspected URI"
+msgstr "Inspected URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr "The URI that is currently being inspected"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "Enable JavaScript profiling"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "Profile the executed JavaScript."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Reason"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "The reason why this navigation is occurring"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+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:180
+msgid "Button"
+msgstr "Button"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "The button used to click"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Modifier state"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "A bitmask representing the state of the modifier keys"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Default Encoding"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "The default encoding used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "Cursive Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+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:147
+msgid "Default Font Family"
+msgstr "Default Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr "The default font family used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr "Fantasy Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+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:165
+msgid "Monospace Font Family"
+msgstr "Monospace Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+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:174
+msgid "Sans Serif Font Family"
+msgstr "Sans Serif Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+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:183
+msgid "Serif Font Family"
+msgstr "Serif Font Family"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+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:192
+msgid "Default Font Size"
+msgstr "Default Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr "The default font size used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr "Default Monospace Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+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:210
+msgid "Minimum Font Size"
+msgstr "Minimum Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr "The minimum font size used to display text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr "Minimum Logical Font Size"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+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:239
+msgid "Enforce 96 DPI"
+msgstr "Enforce 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Enforce a resolution of 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Auto Load Images"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Load images automatically."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Auto Shrink Images"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automatically shrink standalone images to fit."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Print Backgrounds"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Whether background images should be printed."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Enable Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Enable embedded scripting languages."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Enable Plugins"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Enable embedded plugin objects."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Resizable Text Areas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "Whether text areas are resizable."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "User Stylesheet URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+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:317
+msgid "Zoom Stepping Value"
+msgstr "Zoom Stepping Value"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+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:336
+msgid "Enable Developer Extras"
+msgstr "Enable Developer Extras"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "Enables special extensions that help developers"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Enable Private Browsing"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Enables private browsing mode"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr "Returns the @web_view's document title"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+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:1743
+msgid "Copy target list"
+msgstr "Copy target list"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+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:1757
+msgid "Paste target list"
+msgstr "Paste target list"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+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:1764
+msgid "Settings"
+msgstr "Settings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "An associated WebKitWebSettings instance"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Web Inspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "The associated WebKitWebInspector instance"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Editable"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr "Whether content can be modified by the user"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Transparent"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "Whether content has a transparent background"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Zoom level"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "The level of zoom of the content"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "Full content zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr "Whether the full content is scaled when zooming"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "Encoding"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "The default encoding of the web view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Custom Encoding"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "The custom encoding of the web view"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Submit"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Reset"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "_Searchable Index"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Choose File"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(None)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Open Link in New _Window"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Download Linked File"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Copy Link Loc_ation"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Open _Image in New Window"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Sa_ve Image As"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Cop_y Image"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "Open _Frame in New Window"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "_Reload"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "No Guesses Found"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Ignore Spelling"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Learn Spelling"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Search the Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "_Look Up in Dictionary"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Open Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Ignore _Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Spelling and _Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Show Spelling and Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "_Hide Spelling and Grammar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "_Check Document Now"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Check Spelling While _Typing"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "Check _Grammar With Spelling"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Font"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Outline"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "Inspect _Element"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "No recent searches"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Recent searches"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Clear recent searches"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "term"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definition"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "press"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "select"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "activate"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "untick"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "tick"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "jump"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " files"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Unknown"
diff --git a/WebKit/gtk/po/es.po b/WebKit/gtk/po/es.po
new file mode 100644
index 0000000..eda63bc
--- /dev/null
+++ b/WebKit/gtk/po/es.po
@@ -0,0 +1,696 @@
+# translation of webkit.webkit.HEAD.es.po.po to Español
+# This file is put in the public domain.
+#
+# Jacinto Capote Robles <fastangel@gmail.com>, 2009.
+# Jorge González <jorgegonz@svn.gnome.org>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit.webkit.HEAD.es.po\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2009-06-11 15:36+0200\n"
+"Last-Translator: Jorge González <jorgegonz@svn.gnome.org>\n"
+"Language-Team: Español <gnome-es-list@gnome.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:425
+msgid "Upload File"
+msgstr "Subir archivo"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Insertar un carácter de control Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Progreso"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Estado"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Determina el estado actual de la descarga"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Tamaño actual"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Tamaño total"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr "Nombre de usuario:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Contraseña:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Recordar contraseña"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Nombre"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Título"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr ""
+
+#: 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 ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Título alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr "Vista web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+msgid "Inspected URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Razón"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "Botón"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Codificación predeterminada"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr "Tamaño de predeterminado de tipografía"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+msgid "The default font size used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:210
+msgid "Minimum Font Size"
+msgstr "Tamaño mínimo de tipografía"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+msgid "The minimum logical font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Enforce 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Activar complementos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "URI de la hoja de estilo del usuario"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr "Copiar la lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr "Pegar la lista de destinos"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr "Ajustes"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Inspector web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Editable"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Nivel de ampliación"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "El nivel de ampliación del contenido"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "Codificación"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "La codificación predeterminada de la vista web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Enviar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Restablecer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "Índice buscable"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Elegir archivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Ninguno)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Abrir enlace en una _ventana nueva"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Descargar el archivo enlazado"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "_Copiar dirección del enlace"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Abrir _imagen en una ventana nueva"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "_Guardar imagen como"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Copia_r imagen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "Abrir _marco en una ventana nueva"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "Re_cargar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Ignorar ortografía"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Aprender ortografía"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Buscar en la web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Abrir enlace"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Ignorar gra_mática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Ortografía y gra_mática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Mostrar ortografía y gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Tipografía"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "Inspeccionar _elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "No hay búsquedas recientes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Búsquedas recientes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Cancelar búsquedas recientes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "término"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definición"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "seleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "activar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "deseleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "seleccionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "saltar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr "archivos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Desconocido"
+
diff --git a/WebKit/gtk/po/it.po b/WebKit/gtk/po/it.po
new file mode 100644
index 0000000..e02dce7
--- /dev/null
+++ b/WebKit/gtk/po/it.po
@@ -0,0 +1,773 @@
+# This is the Italian locale translation for WebKitGtk
+# Copyright (C) 2009 Free Software Foundation, Inc.
+#
+# Luca Ferretti <elle.uca@libero.it>, 2009.
+msgid ""
+msgstr ""
+"Project-Id-Version: WebKitGtk\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2009-05-11 14:10+0200\n"
+"Last-Translator: Luca Ferretti <elle.uca@libero.it>\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:425
+msgid "Upload File"
+msgstr "Carica file"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+msgid "Input _Methods"
+msgstr "_Metodi di input"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM marcatura _sinistra-destra"
+
+# merge da gtk
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM marcatura _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 cancella 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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Inserisci carattere di controllo unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Richiesta di rete"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+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:265
+msgid "Destination URI"
+msgstr "URI di destinazione"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "L'URI di destinazione in cui salvare il file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Nome file suggerito"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "Il nome di file suggerito come predefinito quando si salva"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Avanzamento"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "Determina l'avanzamento corrente dello scaricamento"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Stato"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Determina lo stato corrente dello scaricamento"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Dimensione corrente"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "La lunghezza dei dati già scaricati"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Dimensione totale"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "La dimensione totale del file"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "L'utente ha annullato lo scaricamento"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, 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:269
+msgid "Username:"
+msgstr "Nome utente:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Password:"
+
+# checkbox
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Ricordare la password"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Nome"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Il nome della cornice"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Titolo"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "Il titolo del documento nella cornice"
+
+#: 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 "L'URI corrente del contenuto mostrato dalla cornice"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "Il titolo dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Titolo alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr "Il titolo alternativo dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "L'URI dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "URI originale"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "L'URI originale dell'elemento di cronologia"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Data ultima visita"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+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:260
+msgid "Web View"
+msgstr "Web View"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+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:274
+msgid "Inspected URI"
+msgstr "URI ispezionato"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr "L'URI che attualmente è ispezionato"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "Abilitare profiling JavaScript"
+
+# FIXME
+# oppure Esegue il profiling?
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "Traccia un profilo del codice JavaScript eseguito."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Motivo"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "Il motivo per cui questa navigazione si sta verificando"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+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:180
+msgid "Button"
+msgstr "Pulsante"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "Il pulsante usato per fare clic"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Stato modificatori"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+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/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Codifica predefinita"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+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:138
+msgid "Cursive Font Family"
+msgstr "Famiglia carattere corsivo"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+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:147
+msgid "Default Font Family"
+msgstr "Famiglia carattere predefinita"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+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:156
+msgid "Fantasy Font Family"
+msgstr "Famiglia carattere fantasia"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+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:165
+msgid "Monospace Font Family"
+msgstr "Famiglia carattere monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+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:174
+msgid "Sans Serif Font Family"
+msgstr "Famiglia carattere sans serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+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:183
+msgid "Serif Font Family"
+msgstr "Famiglia carattere serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+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:192
+msgid "Default Font Size"
+msgstr "Dimensione predefinita carattere"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+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:201
+msgid "Default Monospace Font Size"
+msgstr "Dimensione predefinita carattere monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+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:210
+msgid "Minimum Font Size"
+msgstr "Dimensione minima carattere"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+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:219
+msgid "Minimum Logical Font Size"
+msgstr "Dimensione minima naturale carattere"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+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:239
+msgid "Enforce 96 DPI"
+msgstr "Forza 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Forza la risoluzione a 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Caricamento automatico immagini"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Carica le immagini in modo automatico."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Restringimento automatico immagini"
+
+# assolutamente libertario
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "Restringe automaticamente le immagini singole alla dimensione adatta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Stampa sfondi"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Indica se le immagini di sfondo devono essere stampate."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Abilita script"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Abilita i linguaggi di scripting incorporati."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Abilita plugin"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Abilita gli oggetti plugin incorporati."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Aree testo ridimensionabili"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "Indica se le aree di testo sono ridimensionabili."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "URI foglio stile utente"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+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:317
+msgid "Zoom Stepping Value"
+msgstr "Valore passo ingrandimento"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+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:336
+msgid "Enable Developer Extras"
+msgstr "Abilita extra per sviluppatori"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "Abilita estensioni speciali che sono d'aiuto per gli sviluppatori"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Abilita navigazione privata"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Abilita la modalità di navigazione privata"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr "Restituisce il titolo del documento di @web_view"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+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:1743
+msgid "Copy target list"
+msgstr "Copia elenco destinazioni"
+
+# ma ha senso??
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+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:1757
+msgid "Paste target list"
+msgstr "Incolla elenco destinazioni"
+
+# ma ha senso??
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+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:1764
+msgid "Settings"
+msgstr "Impostazioni"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "Un'istanza WebKitWebSettings associata"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Ispettore web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "L'istanza WebKitWebInspector associata"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Modificabile"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr "Indica se il contenuto può essere modificato dall'utente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Trasparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "Indica se il contenuto ha uno sfondo trasparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Livello ingrandimento"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "Il livello di ingrandimento del contenuto"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "Ingrandimento intero contenuto"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr "Indica se all'ingrandimento viene scalato l'intero contenuto"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "Codifica"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "La codifica predefinita della vista web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Codifica personalizzata"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "La codifica personalizzata della vista web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Invia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Azzera"
+
+# FIXME
+# https://bugs.webkit.org/show_bug.cgi?id=25375
+# Aperto bug chiedeno lumi...
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "Indice _cercabile"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Scelta file"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Nessuno)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Apri collegamento in nuova _finestra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Scarica file collegato"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Copia _posizione collegamento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Apri _immagine in nuova finestra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Sal_va immagine come"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Copia i_mmagine"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "Apri c_ornice in nuova finestra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "A_ggiorna"
+
+# omesso Found
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Nessun suggerimento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Ignora ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "A_pprendi ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Cerca nel web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "Consu_lta dizionario"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Apri collegamento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Ignora _grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Ortografia e _grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Mostra ortografia e grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "_Nascondi ortografia e grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "_Controlla documento ora"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Controlla ortografia durante _digitazione"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "Controlla _grammatica con ortografia"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+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:262
+msgid "_Outline"
+msgstr "Co_ntorno"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "Ispeziona _elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Nessuna ricerca recente"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Ricerche recenti"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "Pu_lisci ricerche recenti"
+
+# String AXDefinitionListTermText()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "termine"
+
+# String AXDefinitionListDefinitionText()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definizione"
+
+# String AXButtonActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "premi"
+
+# String AXRadioButtonActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "seleziona"
+
+# String AXTextFieldActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "attiva"
+
+# String AXCheckedCheckBoxActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "togli spunta"
+
+# String AXUncheckedCheckBoxActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "metti spunta"
+
+# String AXLinkActionVerb()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "salta"
+
+# String multipleFileUploadText(unsigned numberOfFiles)
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " file"
+
+# String unknownFileSizeText()
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Sconosciuta"
diff --git a/WebKit/gtk/po/nl.po b/WebKit/gtk/po/nl.po
new file mode 100644
index 0000000..f5dc752
--- /dev/null
+++ b/WebKit/gtk/po/nl.po
@@ -0,0 +1,697 @@
+# Dutch translation of webkit-gtk
+# Released under the same license as webkit-gtk
+# Reinout van Schouwen <reinouts@gnome.org>, 2009
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.10\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2009-07-05 18:58+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"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:425
+msgid "Upload File"
+msgstr "Bestand uploaden"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+msgid "Input _Methods"
+msgstr "Invoer_methoden"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:78
+msgid "LRM _Left-to-right mark"
+msgstr "LRM _Links-naar-rechts markering"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:79
+msgid "RLM _Right-to-left mark"
+msgstr "RLM _Rechts-naar-links markering"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:80
+msgid "LRE Left-to-right _embedding"
+msgstr "LRE Links-naar-rechts _inbedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:81
+msgid "RLE Right-to-left e_mbedding"
+msgstr "RLE Rechts-naar-links i_nbedding"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:82
+msgid "LRO Left-to-right _override"
+msgstr "LRO Links-naar-rechts _tenietdoen"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:83
+msgid "RLO Right-to-left o_verride"
+msgstr "RLO Rechts-naar-links t_enietdoen"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:84
+msgid "PDF _Pop directional formatting"
+msgstr "PDF _Pop richtingsformattering"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:85
+msgid "ZWS _Zero width space"
+msgstr "ZWS Spatie _zonder breedte"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:86
+msgid "ZWJ Zero width _joiner"
+msgstr "ZWJ _koppelaar zonder breedte"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:87
+msgid "ZWNJ Zero width _non-joiner"
+msgstr "ZWNJ Niet-k_oppelaar zonder breedte"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:109
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Unicode controleteken invoegen "
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Netwerkaanvraag"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr "De netwerkaanvraag voor de te downloaden URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr "Bestemmings-URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "De bestemmings-URI waar dit bestand opgeslagen moet worden"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Gesuggereerde bestandsnaam"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "De standaard gesuggereerde bestandsnaam bij het opslaan"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Voortgang"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "Bepaalt de huidige voortgang van de download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Bepaalt de huidige status van de download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Huidige grootte"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "De hoeveelheid reeds gedownloade data"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Totale grootte"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "De totale grootte van het bestand"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "Downloaden door gebruiker gestopt"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "De site %s vraagt een gebruikersnaam en wachtwoord"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr "Gebruikersnaam:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Wachtwoord:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Wachtwoord onthouden"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Naam"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Naam van het frame"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Titel"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "De titel van het huidige frame"
+
+#: 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 "De huidige URI van de in het frame weergegeven inhoud"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "De titel van het geschiedenis-item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Alternatieve titel"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr "De alternatieve titel van het geschiedenis-item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "De URI van het geschiedenis-item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "Originele URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "De originele URI van het geschiedenis-item"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Laatst bezocht op:"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr "De tijd waarop het geschiedenis-item het laatst is bezocht"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr "Webweergave"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "De webweergave die die Webinspector zelf weergeeft"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+msgid "Inspected URI"
+msgstr "Geïnspecteerde URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr "De URI die momenteel geïnspecteerd wordt"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "JavaScript-profilering inschakelen"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "De uitgevoerde JavaScript profileren."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Reden"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "De reden waarom deze navigatie optreedt"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr "De URI die werd aangevraagd als bestemming voor de navigatie"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "Knop"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "De knop voor het klikken"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Staat van de optietoets"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Een bitmask dat de staat van de optietoets representeert"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Standaardcodering"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "De standaardcodering om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "Cursive-lettertypefamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr "De standaard Cursive-lettertypefamilie om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr "Standaard lettertypefamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr "De standaard lettertypefamilie om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr "Fantasy-lettertypefamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr "De standaard Fantasy-lettertypefamilie om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr "Monospace-lettertypefamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr "De standaard lettertypefamilie om vaste-breedte-tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr "Sans Serif-lettertypefamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr "De standaard Sans Serif-lettertypefamilie om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr "Serif-lettertypefamilie"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr "De standaard Serif-lettertypefamilie om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr "Standaard korpsgrootte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr "De standaard korpsgrootte om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr "Standaard Monospace-lettergrootte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+msgid "The default font size used to display monospace text."
+msgstr "De standaard lettergrootte om vaste-breedte-tekst weer te geven."
+
+# Korpsgrootte/lettergrootte?
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:210
+msgid "Minimum Font Size"
+msgstr "Minimum korpsgrootte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr "De minimum lettergrootte om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr "Minimum logische korpsgrootte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+msgid "The minimum logical font size used to display text."
+msgstr "De minimum logische korpsgrootte om tekst weer te geven."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Enforce 96 DPI"
+msgstr "96 DPI afdwingen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Een resolutie van 96 DPI afdwingen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Afbeeldingen automatisch laden"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Automatisch afbeeldingen laden."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Afbeeldingen automatisch verkleinen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automatisch losstaande afbeeldingen passend maken."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Achtergronden afdrukken"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Of achtergrondafbeeldingen afgedrukt moeten worden."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Scripts inschakelen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Ingebedde scripttalen inschakelen."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Plugins inschakelen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Ingebedde plugin-objecten inschakelen."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Tekstgebieden van grootte veranderbaar"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "Of de grootte van tekstgebieden gewijzigd kan worden."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "URI van gebruikersstijlblad"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+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/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr "Stapgrootte voor in- en uitzoomen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+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/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr "Extraatjes voor ontwikkelaars"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "Schakelt speciale uitbreidingen in die ontwikkelaars helpen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Privé-browsen inschakelen"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Schakelt de stand voor privé-browsen in"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr "Geeft de documenttitel van de @web_view terug"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+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/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr "Kopieerdoellijst"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+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/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr "Plakdoellijst"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+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/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr "Instellingen"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "Een geassocieerde instantie van WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Web-inspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "De geassocieerde instantie van WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Bewerkbaar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr "Of de tekst gewijzigd kan worden door de gebruiker"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Transparant"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "Of de inhoud een transparante achtergrond heeft"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Zoomniveau"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "Zoomfactor van de inhoud"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "Zoomen op volledige inhoud"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr "Of de volledige inhoud op schaal wordt gebracht bij het zoomen"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "Codering"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "Standaard codering van de webweergave"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Aangepaste codering"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "De aangepaste codering van de webweergave"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Indienen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Herinitialiseren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "Door_zoekbare index"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Kies een bestand"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Geen)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Verwijzing openen in _nieuw venster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "Bestand _downloaden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Verwijzings_adres kopiëren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Af_beelding openen in nieuw venster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Afbeelding opslaan _als…"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Afbeelding _kopiëren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "_Deelvenster openen in nieuw venster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "Ve_rversen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Geen suggesties gevonden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "Spelling _negeren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Spelling leren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "Het web door_zoeken"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "O_pzoeken in woordenboek"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "Koppeling _openen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "_Grammatica negeren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Spelling en _grammatica"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "Spelling en grammatica _tonen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "Spelling en grammatica ver_bergen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "Het document nu _controleren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "_Spelling controleren tijdens het typen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "_Grammatica controleren naast spelling"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Lettertype"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Omtrek"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "_Element inspecteren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Geen recente zoekopdrachten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Recente zoekopdrachten"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "Recente zoekopdrachten _wissen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "term"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definitie"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "druk"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "selecteren"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "activeren"
+
+# check / uncheck is aankruisen / deselecteren?
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "deselecteren"
+
+# check / uncheck is aankruisen / deselecteren?
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "aankruisen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "springen"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " bestanden"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Onbekend"
diff --git a/WebKit/gtk/po/pt_BR.po b/WebKit/gtk/po/pt_BR.po
new file mode 100644
index 0000000..b471707
--- /dev/null
+++ b/WebKit/gtk/po/pt_BR.po
@@ -0,0 +1,699 @@
+# 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: 2009-04-23 15:57-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:454
+msgid "Upload File"
+msgstr "Enviar Arquivo"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Inserir caractere de controle Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:254
+msgid "Network Request"
+msgstr "Requisição de Rede"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:255
+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:269
+msgid "Destination URI"
+msgstr "URI de Destino"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:270
+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:284
+msgid "Suggested Filename"
+msgstr "Nome de Arquivo Sugerido"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:285
+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:298
+msgid "Progress"
+msgstr "Progresso"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:299
+msgid "Determines the current progress of the download"
+msgstr "Determina o progresso atual do download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:312
+msgid "Status"
+msgstr "Estado"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:313
+msgid "Determines the current status of the download"
+msgstr "Determina o estado atual do download"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:328
+msgid "Current Size"
+msgstr "Tamanho Atual"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:329
+msgid "The length of the data already downloaded"
+msgstr "A quantidade de dados já baixados"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:343
+msgid "Total Size"
+msgstr "Tamanho total"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:344
+msgid "The total size of the file"
+msgstr "O tamanho total do arquivo"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:473
+msgid "User cancelled the download"
+msgstr "Usuário cancelou o download"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, 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:269
+msgid "Username:"
+msgstr "Usuário:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Senha:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Lembrar senha"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "Name"
+msgstr "Nome"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:213
+msgid "The name of the frame"
+msgstr "O nome do quadro"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1745
+msgid "Title"
+msgstr "Título"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:220
+msgid "The document title of the frame"
+msgstr "O título do documento do quadro"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:226
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:186
+#: WebKit/gtk/webkit/webkitwebview.cpp:1759
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:227
+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/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "O título do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Título Alternativo"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr "O título alternativo do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "A URI do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "URI Original"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "A URI original do item do histórico"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Hora da Última Visita"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+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:260
+msgid "Web View"
+msgstr "Visão Web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+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:274
+msgid "Inspected URI"
+msgstr "URI Inspecionada"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr "A URI que está sendo atualmente inspecionada"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "Habilitar análise de desempenho de JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "Analisar desempenho de JavaScript em execução."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Razão"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "A razão pela qual essa navegação ocorre"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+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:180
+msgid "Button"
+msgstr "Botão"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "O botão usado no clique"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Estado do modificador"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+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/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Codificação Padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "A codificação padrão usada para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "Família de Fontes Cursivas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+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:147
+msgid "Default Font Family"
+msgstr "Família de Fontes Padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+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:156
+msgid "Fantasy Font Family"
+msgstr "Família de Fontes Fantasia"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+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:165
+msgid "Monospace Font Family"
+msgstr "Família de Fontes Mono-espaçadas"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+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:174
+msgid "Sans Serif Font Family"
+msgstr "Família de Fontes Sem Serifa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+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:183
+msgid "Serif Font Family"
+msgstr "Família de Fontes Com Serifa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+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:192
+msgid "Default Font Size"
+msgstr "Tamanho de Fonte Padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr "O tamanho de fonte padrão para exibir texto."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr "Tamanho de fonte mono-espaçada padrão"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+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:210
+msgid "Minimum Font Size"
+msgstr "Tamanho Mínimo de Fonte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+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:219
+msgid "Minimum Logical Font Size"
+msgstr "Tamanho de Fonte Mínimo Lógico"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+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:239
+msgid "Enforce 96 DPI"
+msgstr "Forçar 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Força uma resolução de 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Auto-carregamento de Imagens"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Carregar imagens automaticamente."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Auto-Diminuição de Imagens"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automaticamente diminuir imagens sozinhas para caber na tela."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Imprimir Fundos"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Se as imagens de fundo devem ser impressas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Habilitar Scripts"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Habilitar linguagens de script embutidas."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Habilitar Plugins"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Habilitar objetos de plugins embutidos."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Áreas de Texto Redimensionáveis"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "Se as áreas de texto devem ser redimensionáveis."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "URI da Folha de Estilo do Usuário"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+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:317
+msgid "Zoom Stepping Value"
+msgstr "Valor de Passo do Zoom"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+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:336
+msgid "Enable Developer Extras"
+msgstr "Habilitar Extas de Desenvolvimento"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "Habilita extensões especiais que auxiliam desenvolvedores"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Habilitar Navegação Privativa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Habilita o modo de navegação privativa"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1746
+msgid "Returns the @web_view's document title"
+msgstr "Retorna o título da visão web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1760
+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:1773
+msgid "Copy target list"
+msgstr "Lista de alvos de cópia"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1774
+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:1787
+msgid "Paste target list"
+msgstr "Lista de alvos de cola"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1788
+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:1794
+msgid "Settings"
+msgstr "Configurações"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1795
+msgid "An associated WebKitWebSettings instance"
+msgstr "Uma instância de WebKitWebSettings associada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1808
+msgid "Web Inspector"
+msgstr "Inspetor Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1809
+msgid "The associated WebKitWebInspector instance"
+msgstr "A instância de WebKitWebInspector que está associada a essa visão"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1829
+msgid "Editable"
+msgstr "Editável"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1830
+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:1836
+msgid "Transparent"
+msgstr "Transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether content has a transparent background"
+msgstr "Se o conteúdo tem um fundo transparente"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Zoom level"
+msgstr "Nível de Zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The level of zoom of the content"
+msgstr "O nível de zoom do conteúdo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1866
+msgid "Full content zoom"
+msgstr "Zoom Completo do Conteúdo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1867
+msgid "Whether the full content is scaled when zooming"
+msgstr "Se todo o conteúdo é redimensionado no zoom"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1880
+msgid "Encoding"
+msgstr "Codificação"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1881
+msgid "The default encoding of the web view"
+msgstr "A codificação padrão da visão web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1894
+msgid "Custom Encoding"
+msgstr "Codificação Customizada"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1895
+msgid "The custom encoding of the web view"
+msgstr "A codificação customizada da visão web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Enviar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Limpar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "Índice de bu_sca"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Escolher arquivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Nenhum)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Abrir Link em Nova _Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Baixar Arquivo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Copiar _Endereço do Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Abrir _Imagem em Nova Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Sal_var Imagem Como"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Co_piar Imagem"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "Abrir _Quadro em Nova Janela"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "_Recarregar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Nenhuma Sugestão Encontrada"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Ignorar Palavra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Aprender Palavra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Procurar na Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "Procurar no _Dicionário"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Abrir Link"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Ignorar _Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "E_xibir Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "E_sconder Ortografia e Gramática"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "_Verificar Documento Agora"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Verifiação _Ortográfica ao Digitar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "Verificação _Gramatical ao Digitar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Fonte"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Outline"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "Inspecionar _Elemento"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Não há buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Limpar buscas recentes"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "termo"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definição"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "pressionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "selecionar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "ativar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "desmarcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "marcar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "pular"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr "arquivos"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#~ msgid "Select _All"
+#~ msgstr "Selecionar _Tudo"
diff --git a/WebKit/gtk/po/ru.po b/WebKit/gtk/po/ru.po
new file mode 100644
index 0000000..ad176d7
--- /dev/null
+++ b/WebKit/gtk/po/ru.po
@@ -0,0 +1,717 @@
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit git\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-05-11 16:48+0900\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:455
+msgid "Upload File"
+msgstr "Отправка файла"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:142
+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:137
+msgid "_Insert Unicode Control Character"
+msgstr "Вст_авить управляющий символ Юникод"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:245
+msgid "Network Request"
+msgstr "Сетевой запрос"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:246
+msgid "The network request for the URI that should be downloaded"
+msgstr "Сетевой запрос для заданного URI, который должен быть выполнен"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:260
+msgid "Destination URI"
+msgstr "URI назначения"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:261
+msgid "The destination URI where to save the file"
+msgstr "Конечный URI для сохранения файла"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:275
+msgid "Suggested Filename"
+msgstr "Предлагаемое имя файла"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:276
+msgid "The filename suggested as default when saving"
+msgstr "Имя файла, которое предлагается при загрузке по умолчанию"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:289
+msgid "Progress"
+msgstr "Прогресс"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:290
+msgid "Determines the current progress of the download"
+msgstr "Текущий прогресс загрузки"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:303
+msgid "Status"
+msgstr "Состояние"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:304
+msgid "Determines the current status of the download"
+msgstr "Текущее состояния загрузки"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:319
+msgid "Current Size"
+msgstr "Текущий размер"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:320
+msgid "The length of the data already downloaded"
+msgstr "Объём уже загруженных данных"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:334
+msgid "Total Size"
+msgstr "Общий размер"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:335
+msgid "The total size of the file"
+msgstr "Общий размер файла"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:464
+msgid "User cancelled the download"
+msgstr "Передача прервана пользователем"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Для сайта %s требуется ввод имени пользователя и пароля"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr "Имя пользователя:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Пароль:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Запомнить пароль"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:224
+msgid "Name"
+msgstr "Имя"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:225
+msgid "The name of the frame"
+msgstr "Имя фрейма"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:231
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:152
+#: WebKit/gtk/webkit/webkitwebview.cpp:1771
+msgid "Title"
+msgstr "Заголовок"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:232
+msgid "The document title of the frame"
+msgstr "Заголовок документа фрейма"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:238
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:184
+#: WebKit/gtk/webkit/webkitwebview.cpp:1785
+msgid "URI"
+msgstr "URI"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:239
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Текущий URI содержимого фрейма"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:153
+msgid "The title of the history item"
+msgstr "Заголовок элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:168
+msgid "Alternate Title"
+msgstr "Альтернативный заголовок"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:169
+msgid "The alternate title of the history item"
+msgstr "Альтернативный заголовок элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:185
+msgid "The URI of the history item"
+msgstr "URI элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:200
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:165
+msgid "Original URI"
+msgstr "Изначальный URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:201
+msgid "The original URI of the history item"
+msgstr "Изначальный URI элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:216
+msgid "Last visited Time"
+msgstr "Время последнего посещения"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:217
+msgid "The time at which the history item was last visited"
+msgstr "Время последнего посещения элемента истории"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:258
+msgid "Web View"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:259
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:272
+msgid "Inspected URI"
+msgstr "Исследуемый URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:273
+msgid "The URI that is currently being inspected"
+msgstr "URI, который исследуется в данный момент"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:289
+msgid "Enable JavaScript profiling"
+msgstr "Включить профилирование JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:290
+msgid "Profile the executed JavaScript."
+msgstr "Профилировать выполняемый код JavaScript."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:150
+msgid "Reason"
+msgstr "Причина"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:151
+msgid "The reason why this navigation is occurring"
+msgstr "Причина, по которой происходит данный переход"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:166
+msgid "The URI that was requested as the target for the navigation"
+msgstr "URI, который был указан в запросе на переход"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:178
+msgid "Button"
+msgstr "Кнопка"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:179
+msgid "The button used to click"
+msgstr "Кнопка для нажатия"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:194
+msgid "Modifier state"
+msgstr "Состояние модификаторов"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:195
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Битовая маска, представляющая состояния клавиш-модификаторов"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:134
+msgid "Default Encoding"
+msgstr "Кодировка по умолчанию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:135
+msgid "The default encoding used to display text."
+msgstr "Кодировка текста по умолчанию."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:143
+msgid "Cursive Font Family"
+msgstr "Семейство курсивного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:144
+msgid "The default Cursive font family used to display text."
+msgstr "Семейство курсивного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:152
+msgid "Default Font Family"
+msgstr "Семейство шрифта по умолчанию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:153
+msgid "The default font family used to display text."
+msgstr "Семейство шрифта по умолчанию для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:161
+msgid "Fantasy Font Family"
+msgstr "Семейство декоративного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:162
+msgid "The default Fantasy font family used to display text."
+msgstr "Семейство декоративного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:170
+msgid "Monospace Font Family"
+msgstr "Семейство моноширинного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:171
+msgid "The default font family used to display monospace text."
+msgstr "Семейство моноширинного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:179
+msgid "Sans Serif Font Family"
+msgstr "Семейство шрифта без засечек"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:180
+msgid "The default Sans Serif font family used to display text."
+msgstr "Семейство шрифта без засечек для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:188
+msgid "Serif Font Family"
+msgstr "Семейство шрифта с засечками"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:189
+msgid "The default Serif font family used to display text."
+msgstr "Семейство шрифта с засечками для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:197
+msgid "Default Font Size"
+msgstr "Размер шрифта по умолчанию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:198
+msgid "The default font size used to display text."
+msgstr "Размер шрифта по умолчанию для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:206
+msgid "Default Monospace Font Size"
+msgstr "Размер моноширинного шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:207
+msgid "The default font size used to display monospace text."
+msgstr "Размер моноширинного шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:215
+msgid "Minimum Font Size"
+msgstr "Минимальный размер шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:216
+msgid "The minimum font size used to display text."
+msgstr "Минимальный размер шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:224
+msgid "Minimum Logical Font Size"
+msgstr "Минимальный логический размер шрифта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:225
+msgid "The minimum logical font size used to display text."
+msgstr "Минимальный логический размер шрифта для отображения текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:244
+msgid "Enforce 96 DPI"
+msgstr "Всегда использовать 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:245
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Принудительно использовать разрешение 96 точек на дюйм"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:253
+msgid "Auto Load Images"
+msgstr "Загружать изображения автоматически"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:254
+msgid "Load images automatically."
+msgstr "Загружать изображения автоматически."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:262
+msgid "Auto Shrink Images"
+msgstr "Масштабировать изображения автоматически"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:263
+msgid "Automatically shrink standalone images to fit."
+msgstr "Автоматически уменьшать отдельные изображения по размеру экрана."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:271
+msgid "Print Backgrounds"
+msgstr "Печатать фоновые изображения"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:272
+msgid "Whether background images should be printed."
+msgstr "Должны ли быть выведены на печать фоновые изображения."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:280
+msgid "Enable Scripts"
+msgstr "Выполнять сценарии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:281
+msgid "Enable embedded scripting languages."
+msgstr "Выполнять встроенные сценарии на страницах."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:289
+msgid "Enable Plugins"
+msgstr "Использовать модули"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:290
+msgid "Enable embedded plugin objects."
+msgstr "Разрешить встроенные объекты модулей на страницах."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:298
+msgid "Resizable Text Areas"
+msgstr "Изменяемый размер текстовых полей"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:299
+msgid "Whether text areas are resizable."
+msgstr "Текстовые поля могут изменять размер."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:306
+msgid "User Stylesheet URI"
+msgstr "URI пользовательской таблицы стилей"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:307
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "URI таблицы стилей, которая будет применена для всех страниц."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:322
+msgid "Zoom Stepping Value"
+msgstr "Приращение масштаба"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:323
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Значение, на которое будет изменяться значение масштаба."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:341
+msgid "Enable Developer Extras"
+msgstr "Включить средства разработчика"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:342
+msgid "Enables special extensions that help developers"
+msgstr "Включить особые расширения, которые могут быть полезны разработчикам"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:362
+msgid "Enable Private Browsing"
+msgstr "Включить конфиденциальный режим"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:363
+msgid "Enables private browsing mode"
+msgstr "Включает конфиденциальный режим просмотра"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:378
+msgid "Enable Spell Checking"
+msgstr "Проверять орфографию"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:379
+msgid "Enables spell checking while typing"
+msgstr "Выполнять проверку орфографии при вводе текста"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:402
+msgid "Languages to use for spell checking"
+msgstr "Языки для проверки орфографии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:403
+msgid "Comma separated list of languages to use for spell checking"
+msgstr "Список языков через запятую, которые будут использоваться для проверки орфографии"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:417
+msgid "Enable Caret Browsing"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:418
+msgid "Whether to enable accesibility enhanced keyboard navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1772
+msgid "Returns the @web_view's document title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1786
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Copy target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1813
+msgid "Paste target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1814
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Settings"
+msgstr "Настройки"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "An associated WebKitWebSettings instance"
+msgstr "Связанный экземпляр WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1834
+msgid "Web Inspector"
+msgstr "Веб-инспектор"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1835
+msgid "The associated WebKitWebInspector instance"
+msgstr "Связанный экземпляр WebKitWebInspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1855
+msgid "Editable"
+msgstr "Изменяемое"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1856
+msgid "Whether content can be modified by the user"
+msgstr "Может ли содержимое быть изменено пользователем"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1862
+msgid "Transparent"
+msgstr "Прозрачное"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1863
+msgid "Whether content has a transparent background"
+msgstr "Имеется ли у содержимого прозрачный фон"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1876
+msgid "Zoom level"
+msgstr "Масштаб"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1877
+msgid "The level of zoom of the content"
+msgstr "Масштаб содержимого страницы"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1892
+msgid "Full content zoom"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1893
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1906
+msgid "Encoding"
+msgstr "Кодировка"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1907
+msgid "The default encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1920
+msgid "Custom Encoding"
+msgstr "Особая кодировка"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1921
+msgid "The custom encoding of the web view"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:54
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:59
+msgid "Submit"
+msgstr "Отправить"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:64
+msgid "Reset"
+msgstr "Сброс"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:69
+msgid "_Searchable Index"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:74
+msgid "Choose File"
+msgstr "Выбрать файл"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:79
+msgid "(None)"
+msgstr "(Нет)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:84
+msgid "Open Link in New _Window"
+msgstr "Открыть ссылку в новом _окне"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:89
+msgid "_Download Linked File"
+msgstr "_Загрузить связанный файл"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:94
+msgid "Copy Link Loc_ation"
+msgstr "_Копировать ссылку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:99
+msgid "Open _Image in New Window"
+msgstr "Открыть _изображение в новом окне"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:104
+msgid "Sa_ve Image As"
+msgstr "Со_хранить изображение как..."
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:109
+msgid "Cop_y Image"
+msgstr "Коп_ировать изображение"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:114
+msgid "Open _Frame in New Window"
+msgstr "Открыть _фрейм в новом окне"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:165
+msgid "_Reload"
+msgstr "_Обновить"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:182
+msgid "No Guesses Found"
+msgstr "Нет вариантов"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:187
+msgid "_Ignore Spelling"
+msgstr "_Пропустить слово"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:192
+msgid "_Learn Spelling"
+msgstr "_Добавить слово"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:197
+msgid "_Search the Web"
+msgstr "_Найти в сети"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:202
+msgid "_Look Up in Dictionary"
+msgstr "Найти в _словаре"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:207
+msgid "_Open Link"
+msgstr "О_ткрыть ссылку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:212
+msgid "Ignore _Grammar"
+msgstr "_Игнорировать грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:217
+msgid "Spelling and _Grammar"
+msgstr "_Орфография и грамматика"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:222
+msgid "_Show Spelling and Grammar"
+msgstr "_Показать орфографию и грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:222
+msgid "_Hide Spelling and Grammar"
+msgstr "_Скрыть орфографию и грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:227
+msgid "_Check Document Now"
+msgstr "Проверить _документ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:232
+msgid "Check Spelling While _Typing"
+msgstr "Проверять _орфографию в процессе ввода"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:237
+msgid "Check _Grammar With Spelling"
+msgstr "Проверять _также грамматику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:242
+msgid "_Font"
+msgstr "_Шрифт"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:265
+msgid "_Outline"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:270
+msgid "Inspect _Element"
+msgstr "Исследовать _элемент"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:275
+msgid "No recent searches"
+msgstr "Нет недавних поисковых запросов"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:280
+msgid "Recent searches"
+msgstr "Недавние поисковые запросы"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:285
+msgid "_Clear recent searches"
+msgstr "_Удалить недавние поисковые запросы"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:290
+msgid "term"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:295
+msgid "definition"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:300
+msgid "press"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:305
+msgid "select"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:310
+msgid "activate"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:315
+msgid "uncheck"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:320
+msgid "check"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:325
+msgid "jump"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:331
+msgid " files"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:336
+msgid "Unknown"
+msgstr "Неизвестно"
+
diff --git a/WebKit/gtk/po/sr.po b/WebKit/gtk/po/sr.po
new file mode 100644
index 0000000..e7274d5
--- /dev/null
+++ b/WebKit/gtk/po/sr.po
@@ -0,0 +1,705 @@
+# 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.
+#
+# Милош Поповић <gpopac@gmail.com>
+# Review by Бранко Кокановић <branko.kokanovic@gmail.com> (27.6.2009.)
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.10\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2009-06-19 02:35+100\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=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:425
+msgid "Upload File"
+msgstr "Пошаљи датотеку"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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
+#, fuzzy
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Уметни уникод контролни знак"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Захтев на мрежи"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr "Захтевана адресе датотеке коју желите да преузмете"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr "Циљна адреса"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "Циљна адреса где желите да сачувате датотеку"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Предложено име датотеке"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "Подразумевано име датотеке приликом чувања"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Преузето"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "Показује тренутни напредак преузимања"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Стање"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Показује тренутно стање преузимања"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Величина"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "Приказује величину преузете датотеке"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Укупна величина"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "Приказује укупну величину преузете датотеке"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "Прекинута преузимања"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "Страница %s захтева корисничко име и лозинку"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr "Корисничко име:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Лозинка:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Упамти лозинку"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Име"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Име оквира"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Наслов"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "Наслов документа унутар оквира"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:225
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:186
+#: WebKit/gtk/webkit/webkitwebview.cpp:1729
+msgid "URI"
+msgstr "Адреса"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:226
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Адреса садржаја који је приказан унутар оквира"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "Наслов за ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+#, fuzzy
+msgid "Alternate Title"
+msgstr "Променљив наслов"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+#, fuzzy
+msgid "The alternate title of the history item"
+msgstr "Променљив наслов ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "Адреса ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "Оригинална адреса"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "Оригинална адреса ставке у историјату"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Последња посета"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr "Време када је ставка из историјата последњи пут посећена"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr "Веб приказ"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Веб приказ кога исцртава „Веб инспектор“"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+#, fuzzy
+msgid "Inspected URI"
+msgstr "Инспекција адресе"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+#, fuzzy
+msgid "The URI that is currently being inspected"
+msgstr "Адреса коју тренутно обрађује инспектор"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "Омогући учење Јава скрипте"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "Прави профил покренуте Јава скрипте."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Разлог"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "Разлог због кога је приказана навигација"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Циљна адреса коју захтева навигација"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "Дугме"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "Дугме које се притиска"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Стање измењивача"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "Ознака која одређује да ли је укључен тастер за измену функције"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Подразумевано кодирање"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "Подразумевано кодирање за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "Скуп искошених фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr "Подразумевани скуп искошених фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr "Подразумевани скуп фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr "Подразумевани скуп фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr "Скуп фантази фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr "Подразумевани скуп фантази фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr "Скуп равномерних фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr "Подразумевани скуп равномерно широких фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr "Скуп безсерифних фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr "Подразумевани скуп безсерифних фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr "Скуп серифних фонтова"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr "Подразумевани скуп серифних фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr "Подразумевана величина фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr "Подразумевана величина фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr "Подразумевана величина разномерног фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+msgid "The default font size used to display monospace text."
+msgstr "Подразумевана величина равномерно широких фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:210
+msgid "Minimum Font Size"
+msgstr "Најмања величина фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr "Најмања величина фонта за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr "Најмања логичка величина фонта"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+msgid "The minimum logical font size used to display text."
+msgstr "Најмања логичка величина фонтова за приказ текста."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Enforce 96 DPI"
+msgstr "Приморај 96 ТПИ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Приморава резолуцију од 96 ТПИ"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Сам учитај слике"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Аутоматски учитава слике."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Сам смањи слике"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "Аутоматску умањује слике тако да се уклопиле у страну."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Исцртај позадину"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Одређује да ли да се приказују позадинске слике."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Омогући скрипте"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Укључује језике за скрипте уметнуте унутар страница."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Омогући додатке"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Укључује објекте уметнуте унутар страница."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Текст променљиве величине"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "Одређује да ли да област са текстом буде променљиве величине."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "Адреса датотеке са стилом"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+"Путања до датотеке са сопственим стилом који се примењује на сваку страницу."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr "Корак увећања"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "Вредност за коју се мења приказ приликом повећања или смањења."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr "Укључи додатке за развој"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "Укључује додатке који помажу приликом развоја овог програма"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Приватни режим"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Укључује режим разгледања уз чување ваше приватности"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr "Исписује наслов документа из @веб_прегледа"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "Исписује тренутну адресу садржаја приказаног у @веб_прегледу"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr "Умножи списак циљева"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "Циљева за копирање међу списак исечака које подржава веб преглед"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr "Убаци списак циљева"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "Списак циљева за убацивање из оставе које подржава веб преглед"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr "Подешавања"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "Повезано са WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Веб инспектор"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "Повезано са WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Измењиво"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr "Омогућава кориснику да уређује приказани садржај"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Провидност"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "Омогућава провидну позадину за садржај"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Увећање"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "Ниво увећања приказаног садржаја"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "Увећавај све"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr "Одређује да ли да се увећава целокупан садржај"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "Кодирање"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "Подразумевано кодирање веб странице"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Произвољно кодирање"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "Произвољно кодирање веб странице"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Пошаљи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Поништи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "_Претражив индекс"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Изаберите датотеку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(ништа)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Отвори везу у _новом прозору"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Преузми циљну датотеку"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Умножи _адресу везе"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "_Отвори слику у новом прозору"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "_Сачувај слику као"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "_Умножи слику"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "О_твори оквир у новом прозору"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "_Освежи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Нема поклапања"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Занемари ову реч"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Упамти ову реч"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Потражи на мрежи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "_Потражи у директоријуму"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Отвори везу"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Занемари _правопис"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Провера пи_сања и правописа"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Прикажи проверу писања и правописа"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "С_акриј проверу писања и правописа"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "Про_вери документ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Провери писање _док куцам"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "П_ровери правопис и писање"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Фонт"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Оквир"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+#, fuzzy
+msgid "Inspect _Element"
+msgstr "Инспекција _елемента"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Нема скорашњих претрага"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Скорашње претраге"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Очисти скорашње претраге"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "термин"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "дефиниција"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "притисни"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "изабери"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "покрени"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "искључи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "укључи"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "иди"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " датотеке"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Непознато"
diff --git a/WebKit/gtk/po/sr@latin.po b/WebKit/gtk/po/sr@latin.po
new file mode 100644
index 0000000..4cdb0bb
--- /dev/null
+++ b/WebKit/gtk/po/sr@latin.po
@@ -0,0 +1,705 @@
+# 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.
+#
+# Miloš Popović <gpopac@gmail.com>
+# Review by Branko Kokanović <branko.kokanovic@gmail.com> (27.6.2009.)
+msgid ""
+msgstr ""
+"Project-Id-Version: webkit 1.1.10\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2009-06-19 02:35+100\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=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:425
+msgid "Upload File"
+msgstr "Pošalji datoteku"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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
+#, fuzzy
+msgid "PDF _Pop directional formatting"
+msgstr "Iskačuće _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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Umetni unikod kontrolni znak"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Zahtev na mreži"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr "Zahtevana adrese datoteke koju želite da preuzmete"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr "Ciljna adresa"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "Ciljna adresa gde želite da sačuvate datoteku"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Predloženo ime datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "Podrazumevano ime datoteke prilikom čuvanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Preuzeto"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "Pokazuje trenutni napredak preuzimanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Stanje"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Pokazuje trenutno stanje preuzimanja"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Veličina"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "Prikazuje veličinu preuzete datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Ukupna veličina"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "Prikazuje ukupnu veličinu preuzete datoteke"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "Prekinuta preuzimanja"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, 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:269
+msgid "Username:"
+msgstr "Korisničko ime:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Lozinka:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Upamti lozinku"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Ime"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Ime okvira"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Naslov"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "Naslov dokumenta unutar okvira"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:225
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:186
+#: WebKit/gtk/webkit/webkitwebview.cpp:1729
+msgid "URI"
+msgstr "Adresa"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:226
+msgid "The current URI of the contents displayed by the frame"
+msgstr "Adresa sadržaja koji je prikazan unutar okvira"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "Naslov za stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+#, fuzzy
+msgid "Alternate Title"
+msgstr "Promenljiv naslov"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+#, fuzzy
+msgid "The alternate title of the history item"
+msgstr "Promenljiv naslov stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "Adresa stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "Originalna adresa"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "Originalna adresa stavke u istorijatu"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Poslednja poseta"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+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:260
+msgid "Web View"
+msgstr "Veb prikaz"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Veb prikaz koga iscrtava „Veb inspektor“"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+#, fuzzy
+msgid "Inspected URI"
+msgstr "Inspekcija adrese"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+#, fuzzy
+msgid "The URI that is currently being inspected"
+msgstr "Adresa koju trenutno obrađuje inspektor"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "Omogući učenje Java skripte"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "Pravi profil pokrenute Java skripte."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Razlog"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "Razlog zbog koga je prikazana navigacija"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr "Ciljna adresa koju zahteva navigacija"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "Dugme"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "Dugme koje se pritiska"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Stanje izmenjivača"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+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/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Podrazumevano kodiranje"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "Podrazumevano kodiranje za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "Skup iskošenih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr "Podrazumevani skup iskošenih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr "Podrazumevani skup fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr "Podrazumevani skup fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr "Skup fantazi fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr "Podrazumevani skup fantazi fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr "Skup ravnomernih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr "Podrazumevani skup ravnomerno širokih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr "Skup bezserifnih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr "Podrazumevani skup bezserifnih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr "Skup serifnih fontova"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr "Podrazumevani skup serifnih fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr "Podrazumevana veličina fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr "Podrazumevana veličina fontova za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr "Podrazumevana veličina raznomernog fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+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:210
+msgid "Minimum Font Size"
+msgstr "Najmanja veličina fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr "Najmanja veličina fonta za prikaz teksta."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr "Najmanja logička veličina fonta"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+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:239
+msgid "Enforce 96 DPI"
+msgstr "Primoraj 96 TPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Primorava rezoluciju od 96 TPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Sam učitaj slike"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Automatski učitava slike."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Sam smanji slike"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "Automatsku umanjuje slike tako da se uklopile u stranu."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Iscrtaj pozadinu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Određuje da li da se prikazuju pozadinske slike."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Omogući skripte"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Uključuje jezike za skripte umetnute unutar stranica."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Omogući dodatke"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Uključuje objekte umetnute unutar stranica."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Tekst promenljive veličine"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "Određuje da li da oblast sa tekstom bude promenljive veličine."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "Adresa datoteke sa stilom"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+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:317
+msgid "Zoom Stepping Value"
+msgstr "Korak uvećanja"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+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:336
+msgid "Enable Developer Extras"
+msgstr "Uključi dodatke za razvoj"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "Uključuje dodatke koji pomažu prilikom razvoja ovog programa"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Privatni režim"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Uključuje režim razgledanja uz čuvanje vaše privatnosti"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr "Ispisuje naslov dokumenta iz @veb_pregleda"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+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:1743
+msgid "Copy target list"
+msgstr "Umnoži spisak ciljeva"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+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:1757
+msgid "Paste target list"
+msgstr "Ubaci spisak ciljeva"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+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:1764
+msgid "Settings"
+msgstr "Podešavanja"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "Povezano sa WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Veb inspektor"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "Povezano sa WebKitWebSettings"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Izmenjivo"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr "Omogućava korisniku da uređuje prikazani sadržaj"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Providnost"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "Omogućava providnu pozadinu za sadržaj"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Uvećanje"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "Nivo uvećanja prikazanog sadržaja"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "Uvećavaj sve"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+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:1850
+msgid "Encoding"
+msgstr "Kodiranje"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "Podrazumevano kodiranje veb stranice"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Proizvoljno kodiranje"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "Proizvoljno kodiranje veb stranice"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Pošalji"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Poništi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "_Pretraživ indeks"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Izaberite datoteku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(ništa)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Otvori vezu u _novom prozoru"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Preuzmi ciljnu datoteku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Umnoži _adresu veze"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "_Otvori sliku u novom prozoru"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "_Sačuvaj sliku kao"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "_Umnoži sliku"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "O_tvori okvir u novom prozoru"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "_Osveži"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Nema poklapanja"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Zanemari ovu reč"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Upamti ovu reč"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Potraži na mreži"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "_Potraži u direktorijumu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Otvori vezu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Zanemari _pravopis"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Provera pi_sanja i pravopisa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Prikaži proveru pisanja i pravopisa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "S_akrij proveru pisanja i pravopisa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "Pro_veri dokument"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Proveri pisanje _dok kucam"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "P_roveri pravopis i pisanje"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Font"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Okvir"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+#, fuzzy
+msgid "Inspect _Element"
+msgstr "Inspekcija _elementa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Nema skorašnjih pretraga"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Skorašnje pretrage"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Očisti skorašnje pretrage"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "termin"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definicija"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "pritisni"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "izaberi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "pokreni"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "isključi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "uključi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "idi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " datoteke"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Nepoznato"
diff --git a/WebKit/gtk/po/sv.po b/WebKit/gtk/po/sv.po
new file mode 100644
index 0000000..0454658
--- /dev/null
+++ b/WebKit/gtk/po/sv.po
@@ -0,0 +1,693 @@
+# Swedish translation for webkitgtk+.
+# This file is put in the public domain.
+# Daniel Nylander <po@danielnylander.se>, 2009.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: webkitgtk+\n"
+"Report-Msgid-Bugs-To: http://bugs.webkit.org/\n"
+"POT-Creation-Date: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2009-04-30 12:26+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:425
+msgid "Upload File"
+msgstr "Skicka upp fil"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+msgid "Input _Methods"
+msgstr "Inmatnings_metoder"
+
+#: 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:134
+msgid "_Insert Unicode Control Character"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Nätverksbegäran"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Föreslaget filnamn"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "Förlopp"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "Fastställer aktuellt förlopp för hämtningen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "Status"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "Fastställer aktuell status för hämtningen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "Aktuell storlek"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Total storlek"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "Totala storleken för filen"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "Användaren avbröt hämtningen"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, 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:269
+msgid "Username:"
+msgstr "Användarnamn:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Lösenord:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Kom ihåg lösenordet"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Namn"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Namnet på ramen"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Titel"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "Dokumenttiteln för ramen"
+
+#: 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 ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Alternativ titel"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Senast besökt"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+msgid "Inspected URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Anledning"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "Knapp"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Standardteckenkodning"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "Standardkodningen som används för att visa text."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "Typsnittsfamiljen Cursive"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+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:147
+msgid "Default Font Family"
+msgstr "Standardfamilj för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+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:156
+msgid "Fantasy Font Family"
+msgstr "Typsnittsfamiljen Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+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:165
+msgid "Monospace Font Family"
+msgstr "Typsnittsfamiljen Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+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:174
+msgid "Sans Serif Font Family"
+msgstr "Typsnittsfamiljen Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+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:183
+msgid "Serif Font Family"
+msgstr "Typsnittsfamiljen Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+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:192
+msgid "Default Font Size"
+msgstr "Standardstorlek för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+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:201
+msgid "Default Monospace Font Size"
+msgstr "Standardstorlek för Monospace-typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+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:210
+msgid "Minimum Font Size"
+msgstr "Minimumstorlek för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+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:219
+msgid "Minimum Logical Font Size"
+msgstr "Logisk minimumstorlek för typsnitt"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+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:239
+msgid "Enforce 96 DPI"
+msgstr "Tvinga 96 punkter/tum"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Tvinga en upplösning på 96 punkter/tum"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Läs automatiskt in bilder"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Läs in bilder automatiskt."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "Skriv ut bakgrunder"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Huruvida bakgrundsbilder ska skrivas ut."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "Aktivera skript"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "Aktivera inbäddade skriptspråk."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Aktivera insticksmoduler"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Aktivera inbäddade insticksobjekt."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "Aktivera privat surfning"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Aktiverar läget för privat surfning"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr "Kopiera mållista"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr "Inställningar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Redigeringsbar"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "Genomskinlig"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "Huruvida innehållet har en genomskinlig bakgrund"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "Zoomnivå"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "Zoomnivån för innehållet"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "Teckenkodning"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Anpassad teckenkodning"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Skicka"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Återställ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "_Sökbart index"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Välj fil"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Ingen)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "Öppna länk i nytt _fönster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Hämta länkad fil"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Kopiera länkens ad_ress"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Öppna _bild i nytt fönster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Spa_ra bild som"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Kop_iera bild"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "Öppna _ram i nytt fönster"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "_Uppdatera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Inga gissningar hittades"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Ignorera stavfel"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Lär stavning"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Sök på webben"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "Sl_å upp i ordbok"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Öppna länk"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Ignorera _grammatikfel"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Stavning och _grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Visa stavning och grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "_Dölj stavning och grammatik"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "_Kontrollera dokumentet nu"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Kontrollera stavning vid _inmatning"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "Kontrollera _grammatik med stavning"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Typsnitt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Kontur"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Inga tidigare sökningar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Tidigare sökningar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Töm tidigare sökningar"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "term"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "definition"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "tryck"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "välj"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "aktivera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "avmarkera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "markera"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "hoppa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " filer"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Okänt"
+
diff --git a/WebKit/gtk/po/vi.po b/WebKit/gtk/po/vi.po
new file mode 100644
index 0000000..27baa21
--- /dev/null
+++ b/WebKit/gtk/po/vi.po
@@ -0,0 +1,692 @@
+# 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: 2009-04-09 19:09-0300\n"
+"PO-Revision-Date: 2009-06-26 08:31+1000\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:425
+msgid "Upload File"
+msgstr "Tải tập tin lên"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr "_Chèn kí tự Unicode"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "Yêu cầu mạng"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+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:265
+msgid "Destination URI"
+msgstr "URI đích"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "URI đích nơi lưu tập tin"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "Tên tập tin đề nghị"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+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:294
+msgid "Progress"
+msgstr "Tiến trình"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+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:308
+msgid "Status"
+msgstr "Tình trạng"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+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:324
+msgid "Current Size"
+msgstr "Kích thước hiện thời"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "Lượng dữ liệu đã tải về"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "Kích thước tổng cộng"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+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:469
+msgid "User cancelled the download"
+msgstr "Người dùng đã huỷ tải về"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, 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:269
+msgid "Username:"
+msgstr "Tên người dùng:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "Mật khẩu:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "Nhớ mật khẩu"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "Tên"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "Tên khung"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "Tựa đề"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "Tựa đề tài liệu của khung"
+
+#: 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 "URI hiện thời của nội dung khung đang hiển thị"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "Tựa đề mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "Tựa đề thay thế"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr "Tựa đề thay thế cho mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "URI cho mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "URI gốc"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "URI gốc của mục lược sử"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "Lần xem cuối"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+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:260
+msgid "Web View"
+msgstr "Khung xem Web"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+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:274
+msgid "Inspected URI"
+msgstr "URI được điều tra"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr "URI đang được điều tra"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "Bật kiểm định JavaScript"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "Kiểm định JavaScript được thực thi."
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "Nguyên nhân"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "Nút"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "Nút được dùng để nhấn"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "Trạng thái phím bổ trợ"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+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/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "Bảng mã mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+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:138
+msgid "Cursive Font Family"
+msgstr "Họ phông Cursive"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+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:147
+msgid "Default Font Family"
+msgstr "Họ phông mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+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:156
+msgid "Fantasy Font Family"
+msgstr "Họ phông Fantasy"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+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:165
+msgid "Monospace Font Family"
+msgstr "Họ phông Monospace"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+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:174
+msgid "Sans Serif Font Family"
+msgstr "Họ phông Sans Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+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:183
+msgid "Serif Font Family"
+msgstr "Họ phông Serif"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+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:192
+msgid "Default Font Size"
+msgstr "Cỡ phông mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+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:201
+msgid "Default Monospace Font Size"
+msgstr "Cỡ phông Monospace mặc định"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+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:210
+msgid "Minimum Font Size"
+msgstr "Cỡ phông tối thiểu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+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:219
+msgid "Minimum Logical Font Size"
+msgstr "Cỡ phông logic tối thiểu"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+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:239
+msgid "Enforce 96 DPI"
+msgstr "Ép 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "Ép độ phân giảii 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "Tự động nạp ảnh"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "Nạp ảnh tự động."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "Tự động co ảnh."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "Tự động co ảnh độc lập cho khít."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "In ảnh nền"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "Có in ảnh nền hay không."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "Bật phần mở rộng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "Bật phần mở rộng,"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "Ô văn bản có thể thay đổi kích thước."
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+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:301
+msgid "User Stylesheet URI"
+msgstr "URI stylesheet người dùng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+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:317
+msgid "Zoom Stepping Value"
+msgstr "Giá trị bước thu/phóng"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+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:336
+msgid "Enable Developer Extras"
+msgstr "Bật Developer Extras"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+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:357
+msgid "Enable Private Browsing"
+msgstr "Bật duyệt riêng tư"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "Bật chế độ duyệt riêng tư"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+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:1730
+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:1743
+msgid "Copy target list"
+msgstr "Danh sách đích chép"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+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:1757
+msgid "Paste target list"
+msgstr "Danh sách đích dán"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+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:1764
+msgid "Settings"
+msgstr "Thiết lập"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "Một thể hiện WebKitWebSettings liên kết"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Thanh tra Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "Một thể hiện WebKitWebInspector liên kết"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "Có thể thay đổi"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+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:1806
+msgid "Transparent"
+msgstr "Trong suốt"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+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:1820
+msgid "Zoom level"
+msgstr "Mức phóng"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "Mức phóng to/thu nhỏ nội dung"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "Phóng nội dung đầy đủ"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+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:1850
+msgid "Encoding"
+msgstr "Bảng mã"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "Bảng mã mặc định cho khung xem Web"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "Bảng mã tự chọn"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "Bảng mã tự chọn cho khung xem Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "Gửi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "Phục hồi"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "Chỉ mục _tìm được"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "Chọn tập tin"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(Không)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "_Mở liên kết trong cửa sổ mới"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "_Tải tập tin được liên kết"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "Chép vị trí _liên kết"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "Mở ả_nh trong cửa sổ mới"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "Lưu ảnh _là"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "Chép ả_nh"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "Mở _khung trong cửa sổ mới"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "Nạp _lại"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "Không đoán ra"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "_Bỏ qua lỗi chính tả"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "_Học lỗi chính tả"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "_Tìm trên Web"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "_Tra từ điển"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "_Mở liên kết"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "Bỏ qua _ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "Chính tả và _Ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "_Hiện lỗi chính tả và ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "Ẩ_n Chính tả và Ngữ pháp"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "_Kiểm tra tài liệu ngay"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "Kiểm tra khi đang _gõ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "Kiểm tra lỗi _ngữ pháp kèm chính tả"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "_Phông"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "_Nét ngoài"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "Thanh tra _yếu tố"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "Không có tìm kiếm gần đây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "Tìm kiếm gần đây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "_Xoá tìm kiếm gần đây"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "thuật ngữ"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "định nghĩa"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "nhấn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "chọn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "kích hoạt"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "bỏ chọn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "chọn"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "nhảy"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr " tập tin"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "Không biết"
diff --git a/WebKit/gtk/po/webkit.pot b/WebKit/gtk/po/webkit.pot
new file mode 100644
index 0000000..90cb868
--- /dev/null
+++ b/WebKit/gtk/po/webkit.pot
@@ -0,0 +1,693 @@
+# SOME DESCRIPTIVE TITLE.
+# This file is put in the public domain.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+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: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:425
+msgid "Upload File"
+msgstr ""
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:225
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:186
+#: WebKit/gtk/webkit/webkitwebview.cpp:1729
+msgid "URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:226
+msgid "The current URI of the contents displayed by the frame"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+msgid "Inspected URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+msgid "The default font size used to display monospace text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:210
+msgid "Minimum Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+msgid "The minimum logical font size used to display text."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Enforce 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr ""
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr ""
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr ""
diff --git a/WebKit/gtk/po/zh_CN.po b/WebKit/gtk/po/zh_CN.po
new file mode 100644
index 0000000..5046880
--- /dev/null
+++ b/WebKit/gtk/po/zh_CN.po
@@ -0,0 +1,694 @@
+# 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: 2009-04-09 19:09-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:425
+msgid "Upload File"
+msgstr "上传文件"
+
+#: WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp:61
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:139
+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:134
+msgid "_Insert Unicode Control Character"
+msgstr "插入 Unicode 控制字符(_I)"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:250
+msgid "Network Request"
+msgstr "网络请求"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:251
+msgid "The network request for the URI that should be downloaded"
+msgstr "网络请求该 URI 应当被下载"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:265
+msgid "Destination URI"
+msgstr "目的 URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:266
+msgid "The destination URI where to save the file"
+msgstr "保存文件的目的 URI"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:280
+msgid "Suggested Filename"
+msgstr "建议文件名"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:281
+msgid "The filename suggested as default when saving"
+msgstr "保存时默认建议使用的文件名"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:294
+msgid "Progress"
+msgstr "进度"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:295
+msgid "Determines the current progress of the download"
+msgstr "显示当前下载进度"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:308
+msgid "Status"
+msgstr "状态"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:309
+msgid "Determines the current status of the download"
+msgstr "显示当前下载状态"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:324
+msgid "Current Size"
+msgstr "当前尺寸"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:325
+msgid "The length of the data already downloaded"
+msgstr "当前已下载的数据大小"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:339
+msgid "Total Size"
+msgstr "总尺寸"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:340
+msgid "The total size of the file"
+msgstr "文件总尺寸"
+
+#: WebKit/gtk/webkit/webkitdownload.cpp:469
+msgid "User cancelled the download"
+msgstr "用户取消了下载"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:244
+#, c-format
+msgid "A username and password are being requested by the site %s"
+msgstr "站点 %s 请求用户名和密码"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:269
+msgid "Username:"
+msgstr "用户名:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:271
+msgid "Password:"
+msgstr "密码:"
+
+#: WebKit/gtk/webkit/webkitsoupauthdialog.c:281
+msgid "Remember password"
+msgstr "记住密码"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:211
+msgid "Name"
+msgstr "名称"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:212
+msgid "The name of the frame"
+msgstr "框架名称"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:218
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:154
+#: WebKit/gtk/webkit/webkitwebview.cpp:1715
+msgid "Title"
+msgstr "标题"
+
+#: WebKit/gtk/webkit/webkitwebframe.cpp:219
+msgid "The document title of the frame"
+msgstr "标题名称"
+
+#: 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 "框架中当前显示内容的 URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:155
+msgid "The title of the history item"
+msgstr "历史条目的标题"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:170
+msgid "Alternate Title"
+msgstr "可选标题"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:171
+msgid "The alternate title of the history item"
+msgstr "历史条目的可选标题"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:187
+msgid "The URI of the history item"
+msgstr "历史条目的 URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:202
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:167
+msgid "Original URI"
+msgstr "原始 URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:203
+msgid "The original URI of the history item"
+msgstr "历史条目的原始 URI"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:218
+msgid "Last visited Time"
+msgstr "最近访问时间"
+
+#: WebKit/gtk/webkit/webkitwebhistoryitem.cpp:219
+msgid "The time at which the history item was last visited"
+msgstr "最近访问历史条目的时间"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:260
+msgid "Web View"
+msgstr "Web View"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:261
+msgid "The Web View that renders the Web Inspector itself"
+msgstr "Web View 渲染 Web Inspector 本身"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:274
+msgid "Inspected URI"
+msgstr "已检查的 URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:275
+msgid "The URI that is currently being inspected"
+msgstr "当前已经被检查的 URI"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:291
+msgid "Enable JavaScript profiling"
+msgstr "启用 JavaScript 摘要"
+
+#: WebKit/gtk/webkit/webkitwebinspector.cpp:292
+msgid "Profile the executed JavaScript."
+msgstr "记录已执行的 JavaScript 的摘要信息。"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:152
+msgid "Reason"
+msgstr "原因"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:153
+msgid "The reason why this navigation is occurring"
+msgstr "导航产生的原因"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:168
+msgid "The URI that was requested as the target for the navigation"
+msgstr "此 URI 是被作为导航目标而请求的"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:180
+msgid "Button"
+msgstr "按钮"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:181
+msgid "The button used to click"
+msgstr "用以点击的按钮"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:196
+msgid "Modifier state"
+msgstr "修饰键信息"
+
+#: WebKit/gtk/webkit/webkitwebnavigationaction.cpp:197
+msgid "A bitmask representing the state of the modifier keys"
+msgstr "一个代表当前修饰键状态的位掩码"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:129
+msgid "Default Encoding"
+msgstr "默认编码"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:130
+msgid "The default encoding used to display text."
+msgstr "用以显示文本的默认编码。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:138
+msgid "Cursive Font Family"
+msgstr "草书字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:139
+msgid "The default Cursive font family used to display text."
+msgstr "用以显示文本的默认草书字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:147
+msgid "Default Font Family"
+msgstr "默认字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:148
+msgid "The default font family used to display text."
+msgstr "用以显示文本的默认字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:156
+msgid "Fantasy Font Family"
+msgstr "幻想字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:157
+msgid "The default Fantasy font family used to display text."
+msgstr "用以显示文本的默认幻想字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:165
+msgid "Monospace Font Family"
+msgstr "等宽字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:166
+msgid "The default font family used to display monospace text."
+msgstr "用以显示文本的默认等宽字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:174
+msgid "Sans Serif Font Family"
+msgstr "Sans Serif 字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:175
+msgid "The default Sans Serif font family used to display text."
+msgstr "用以显示文本的默认 Sans Serif 字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:183
+msgid "Serif Font Family"
+msgstr "Serif 字体"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:184
+msgid "The default Serif font family used to display text."
+msgstr "用以显示文本的默认 Serif 字体。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:192
+msgid "Default Font Size"
+msgstr "默认字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:193
+msgid "The default font size used to display text."
+msgstr "用以显示文本的默认字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:201
+msgid "Default Monospace Font Size"
+msgstr "默认等宽字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:202
+msgid "The default font size used to display monospace text."
+msgstr "用以显示等宽文本的默认字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:210
+msgid "Minimum Font Size"
+msgstr "最小字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:211
+msgid "The minimum font size used to display text."
+msgstr "用以显示文本的最小字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:219
+msgid "Minimum Logical Font Size"
+msgstr "最小逻辑字号"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:220
+msgid "The minimum logical font size used to display text."
+msgstr "用以显示文本的最小逻辑字号。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:239
+msgid "Enforce 96 DPI"
+msgstr "强制为 96 DPI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:240
+msgid "Enforce a resolution of 96 DPI"
+msgstr "强制 96 DPI 分辨率"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:248
+msgid "Auto Load Images"
+msgstr "自动载入图像"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:249
+msgid "Load images automatically."
+msgstr "自动载入图像。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:257
+msgid "Auto Shrink Images"
+msgstr "自动缩小图像"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:258
+msgid "Automatically shrink standalone images to fit."
+msgstr "自动缩小单个图像以适应需求。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:266
+msgid "Print Backgrounds"
+msgstr "打印背景"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:267
+msgid "Whether background images should be printed."
+msgstr "是否打印背景。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:275
+msgid "Enable Scripts"
+msgstr "启用脚本"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:276
+msgid "Enable embedded scripting languages."
+msgstr "启用嵌入式脚步语言"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:284
+msgid "Enable Plugins"
+msgstr "启用插件"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:285
+msgid "Enable embedded plugin objects."
+msgstr "启用嵌入式插件对象。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:293
+msgid "Resizable Text Areas"
+msgstr "大小可变文本域"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:294
+msgid "Whether text areas are resizable."
+msgstr "文本域大小是否是否可变。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:301
+msgid "User Stylesheet URI"
+msgstr "用户样式表 URI"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:302
+msgid "The URI of a stylesheet that is applied to every page."
+msgstr "应用于每个页面的样式表的 URI。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:317
+msgid "Zoom Stepping Value"
+msgstr "缩放步值"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:318
+msgid "The value by which the zoom level is changed when zooming in or out."
+msgstr "在放大或缩小中每次缩放的步值。"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:336
+msgid "Enable Developer Extras"
+msgstr "启用开发者附加"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:337
+msgid "Enables special extensions that help developers"
+msgstr "启用帮助开发者的特殊扩展"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:357
+msgid "Enable Private Browsing"
+msgstr "启用隐私浏览"
+
+#: WebKit/gtk/webkit/webkitwebsettings.cpp:358
+msgid "Enables private browsing mode"
+msgstr "启用隐私浏览模式"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1716
+msgid "Returns the @web_view's document title"
+msgstr "返回 @web_view 的文档标题"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1730
+msgid "Returns the current URI of the contents displayed by the @web_view"
+msgstr "返回当前由 @web_view 显示的内容的 URI"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1743
+msgid "Copy target list"
+msgstr "复制目标列表"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1744
+msgid "The list of targets this web view supports for clipboard copying"
+msgstr "目标 Web View 列表支持剪贴簿复制"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1757
+msgid "Paste target list"
+msgstr "粘贴目标列表"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1758
+msgid "The list of targets this web view supports for clipboard pasting"
+msgstr "目标 Web View 列表支持剪贴簿粘贴"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1764
+msgid "Settings"
+msgstr "设置"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1765
+msgid "An associated WebKitWebSettings instance"
+msgstr "一个关联的 WebKitWebSettings 样例"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1778
+msgid "Web Inspector"
+msgstr "Web Inspector"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1779
+msgid "The associated WebKitWebInspector instance"
+msgstr "一个关联的 WebKitWebInspector 样例"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1799
+msgid "Editable"
+msgstr "可编辑"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1800
+msgid "Whether content can be modified by the user"
+msgstr "用户是否可编辑内容"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1806
+msgid "Transparent"
+msgstr "透明"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1807
+msgid "Whether content has a transparent background"
+msgstr "内容是否包含透明背景"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1820
+msgid "Zoom level"
+msgstr "缩放级别"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1821
+msgid "The level of zoom of the content"
+msgstr "内容缩放级别"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1836
+msgid "Full content zoom"
+msgstr "完整内容缩放"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1837
+msgid "Whether the full content is scaled when zooming"
+msgstr "是否将所有内容完整缩放"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1850
+msgid "Encoding"
+msgstr "编码"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1851
+msgid "The default encoding of the web view"
+msgstr "Web View 的默认编码"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1864
+msgid "Custom Encoding"
+msgstr "自定义编码"
+
+#: WebKit/gtk/webkit/webkitwebview.cpp:1865
+msgid "The custom encoding of the web view"
+msgstr "Web View的自定义编码"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:51
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:56
+msgid "Submit"
+msgstr "提交"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:61
+msgid "Reset"
+msgstr "重置"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:66
+msgid "_Searchable Index"
+msgstr "可搜索索引(_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:71
+msgid "Choose File"
+msgstr "选择文件"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:76
+msgid "(None)"
+msgstr "(无)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:81
+msgid "Open Link in New _Window"
+msgstr "在新窗口打开链接(_W)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:86
+msgid "_Download Linked File"
+msgstr "下载目标文件(_D)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:91
+msgid "Copy Link Loc_ation"
+msgstr "复制链接地址(_A)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:96
+msgid "Open _Image in New Window"
+msgstr "在新窗口打开图像(_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:101
+msgid "Sa_ve Image As"
+msgstr "保存图像(_V)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:106
+msgid "Cop_y Image"
+msgstr "复制图像(_Y)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:111
+msgid "Open _Frame in New Window"
+msgstr "在新窗口打开框架(_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:162
+msgid "_Reload"
+msgstr "重载(_R)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:179
+msgid "No Guesses Found"
+msgstr "没有找到拼写建议"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:184
+msgid "_Ignore Spelling"
+msgstr "忽略拼写(_I)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:189
+msgid "_Learn Spelling"
+msgstr "记录特例(_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:194
+msgid "_Search the Web"
+msgstr "搜索互联网(_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:199
+msgid "_Look Up in Dictionary"
+msgstr "查询词典(_L)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:204
+msgid "_Open Link"
+msgstr "打开链接(_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:209
+msgid "Ignore _Grammar"
+msgstr "忽略语法(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:214
+msgid "Spelling and _Grammar"
+msgstr "拼写和语法(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Show Spelling and Grammar"
+msgstr "显示拼写和语法(_S)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:219
+msgid "_Hide Spelling and Grammar"
+msgstr "隐藏拼写和语法(_H)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:224
+msgid "_Check Document Now"
+msgstr "立即检查文档(_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:229
+msgid "Check Spelling While _Typing"
+msgstr "输入时检查拼写(_T)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:234
+msgid "Check _Grammar With Spelling"
+msgstr "检查拼写时检查语法(_G)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:239
+msgid "_Font"
+msgstr "字体(_F)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:262
+msgid "_Outline"
+msgstr "概要(_O)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:267
+msgid "Inspect _Element"
+msgstr "检查元素(_E)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:272
+msgid "No recent searches"
+msgstr "无最近搜索"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:277
+msgid "Recent searches"
+msgstr "最近搜索"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:282
+msgid "_Clear recent searches"
+msgstr "清除最近搜索记录(_C)"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:287
+msgid "term"
+msgstr "术语"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:292
+msgid "definition"
+msgstr "定义"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:297
+msgid "press"
+msgstr "按"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:302
+msgid "select"
+msgstr "选择"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:307
+msgid "activate"
+msgstr "激活"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:312
+msgid "uncheck"
+msgstr "反选"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:317
+msgid "check"
+msgstr "勾选"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:322
+msgid "jump"
+msgstr "跳转"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:328
+msgid " files"
+msgstr "文件"
+
+#: WebCore/platform/gtk/LocalizedStringsGtk.cpp:333
+msgid "Unknown"
+msgstr "未知"
diff --git a/WebKit/gtk/resources/error.html b/WebKit/gtk/resources/error.html
new file mode 100644
index 0000000..27d4a57
--- /dev/null
+++ b/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/WebKit/gtk/tests/testatk.c b/WebKit/gtk/tests/testatk.c
new file mode 100644
index 0000000..61eae60
--- /dev/null
+++ b/WebKit/gtk/tests/testatk.c
@@ -0,0 +1,240 @@
+/*
+ * 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 <unistd.h>
+#include <glib.h>
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+
+static const char* contents = "<html><body><p>This is a test. This is the second sentence. And this the third.</p></body></html>";
+
+static gboolean bail_out(GMainLoop* loop)
+{
+ if (g_main_loop_is_running(loop))
+ g_main_loop_quit(loop);
+
+ return FALSE;
+}
+
+typedef gchar* (*AtkGetTextFunction) (AtkText*, gint, AtkTextBoundary, gint*, gint*);
+
+static void test_get_text_function(AtkText* text_obj, AtkGetTextFunction fn, AtkTextBoundary boundary, gint offset, const char* text_result, gint start_offset_result, gint end_offset_result)
+{
+ gint start_offset, end_offset;
+ char* text;
+
+ text = fn(text_obj, offset, boundary, &start_offset, &end_offset);
+ g_assert_cmpstr(text, ==, text_result);
+ g_assert_cmpint(start_offset, ==, start_offset_result);
+ g_assert_cmpint(end_offset, ==, end_offset_result);
+ g_free(text);
+}
+
+static void test_webkit_atk_get_text_at_offset(void)
+{
+ WebKitWebView* webView;
+ AtkObject *obj;
+ GMainLoop* loop;
+ AtkText* text_obj;
+ char* text;
+
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_object_ref_sink(webView);
+ webkit_web_view_load_string(webView, contents, NULL, NULL, NULL);
+ loop = g_main_loop_new(NULL, TRUE);
+
+ g_timeout_add(100, (GSourceFunc)bail_out, loop);
+ g_main_loop_run(loop);
+
+ /* Get to the inner AtkText object */
+ obj = gtk_widget_get_accessible(GTK_WIDGET(webView));
+ g_assert(obj);
+ obj = atk_object_ref_accessible_child(obj, 0);
+ g_assert(obj);
+ obj = atk_object_ref_accessible_child(obj, 0);
+ g_assert(obj);
+
+ text_obj = ATK_TEXT(obj);
+ g_assert(ATK_IS_TEXT(text_obj));
+
+ text = atk_text_get_text(text_obj, 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 */
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 0, "T", 0, 1);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 0, "h", 1, 2);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 0, "", 0, 0);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_CHAR,
+ 1, "T", 0, 1);
+
+ /* ATK_TEXT_BOUNDARY_WORD_START */
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 0, "This ", 0, 5);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 4, "This ", 0, 5);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 10, "test. ", 10, 16);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 58, "third.", 58, 64);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 5, "This ", 0, 5);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 7, "This ", 0, 5);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 0, "is ", 5, 8);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 4, "is ", 5, 8);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_START,
+ 3, "is ", 5, 8);
+
+ /* ATK_TEXT_BOUNDARY_WORD_END */
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 0, "This", 0, 4);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 4, " is", 4, 7);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 5, " is", 4, 7);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 9, " test", 9, 14);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 5, "This", 0, 4);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 4, "This", 0, 4);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 7, " is", 4, 7);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 5, " a", 7, 9);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 4, " a", 7, 9);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_WORD_END,
+ 58, " third", 57, 63);
+
+ /* ATK_TEXT_BOUNDARY_SENTENCE_START */
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 0, "This is a test. ", 0, 16);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 15, "This is a test. ", 0, 16);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 0, "This is the second sentence. ", 16, 45);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 15, "This is the second sentence. ", 16, 45);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 16, "This is a test. ", 0, 16);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 44, "This is a test. ", 0, 16);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_START,
+ 15, "", 0, 0);
+
+ /* ATK_TEXT_BOUNDARY_SENTENCE_END */
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 0, "This is a test.", 0, 15);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 15, " This is the second sentence.", 15, 44);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 16, " This is the second sentence.", 15, 44);
+
+ test_get_text_function(text_obj, atk_text_get_text_at_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 17, " This is the second sentence.", 15, 44);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 0, " This is the second sentence.", 15, 44);
+
+ test_get_text_function(text_obj, atk_text_get_text_after_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 15, " And this the third.", 44, 64);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 16, "This is a test.", 0, 15);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 15, "This is a test.", 0, 15);
+
+ test_get_text_function(text_obj, atk_text_get_text_before_offset, ATK_TEXT_BOUNDARY_SENTENCE_END,
+ 14, "", 0, 0);
+
+ test_get_text_function(text_obj, 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 */
+ test_get_text_function(text_obj, 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 */
+ test_get_text_function(text_obj, 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);
+
+ 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/atk/get_text_at_offset", test_webkit_atk_get_text_at_offset);
+ return g_test_run ();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/WebKit/gtk/tests/testdownload.c b/WebKit/gtk/tests/testdownload.c
new file mode 100644
index 0000000..0d964ed
--- /dev/null
+++ b/WebKit/gtk/tests/testdownload.c
@@ -0,0 +1,167 @@
+/*
+ * 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;
+
+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
+download_requested_cb(WebKitWebView* web_view,
+ WebKitDownload* download,
+ gboolean* beenThere)
+{
+ *beenThere = TRUE;
+ if (temporaryFilename) {
+ 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);
+
+ return TRUE;
+}
+
+static void
+test_webkit_download_perform(void)
+{
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+
+ g_object_ref_sink(G_OBJECT(webView));
+
+ g_signal_connect(webView, "navigation-policy-decision-requested",
+ G_CALLBACK(navigation_policy_decision_requested_cb),
+ NULL);
+
+ gboolean beenThere = FALSE;
+ g_signal_connect(webView, "download-requested",
+ G_CALLBACK(download_requested_cb),
+ &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;
+ int fd = g_file_open_tmp ("webkit-testwebdownload-XXXXXX",
+ &temporaryFilename, &error);
+ close(fd);
+
+ if (error)
+ g_critical("Failed to open a temporary file for writing: %s.", error->message);
+
+ if (g_unlink(temporaryFilename) == -1)
+ g_critical("Failed to delete the temporary file: %s.", g_strerror(errno));
+
+ 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);
+ 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/perform", test_webkit_download_perform);
+ 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/WebKit/gtk/tests/testhttpbackend.c b/WebKit/gtk/tests/testhttpbackend.c
new file mode 100644
index 0000000..c061374
--- /dev/null
+++ b/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 GLIB_CHECK_VERSION(2, 16, 0) && 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 at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/WebKit/gtk/tests/testloading.c b/WebKit/gtk/tests/testloading.c
new file mode 100644
index 0000000..cd5f08e
--- /dev/null
+++ b/WebKit/gtk/tests/testloading.c
@@ -0,0 +1,115 @@
+/*
+ * 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 <gtk/gtk.h>
+#include <webkit/webkit.h>
+
+#if GLIB_CHECK_VERSION(2, 16, 0) && GTK_CHECK_VERSION(2, 14, 0)
+
+static gboolean has_been_provisional = FALSE;
+static gboolean has_been_committed = FALSE;
+static gboolean has_been_first_visually_non_empty_layout = FALSE;
+
+static void load_finished_cb(WebKitWebView* web_view, WebKitWebFrame* web_frame, gpointer data)
+{
+ GMainLoop* loop = (GMainLoop*)data;
+
+ g_assert(has_been_provisional);
+ g_assert(has_been_committed);
+ g_assert(has_been_first_visually_non_empty_layout);
+
+ g_main_loop_quit(loop);
+}
+
+
+static void status_changed_cb(GObject* object, GParamSpec* pspec, gpointer data)
+{
+ WebKitLoadStatus status = webkit_web_view_get_load_status(WEBKIT_WEB_VIEW(object));
+
+ switch (status) {
+ case WEBKIT_LOAD_PROVISIONAL:
+ g_assert(!has_been_provisional);
+ g_assert(!has_been_committed);
+ g_assert(!has_been_first_visually_non_empty_layout);
+ has_been_provisional = TRUE;
+ break;
+ case WEBKIT_LOAD_COMMITTED:
+ g_assert(has_been_provisional);
+ g_assert(!has_been_committed);
+ g_assert(!has_been_first_visually_non_empty_layout);
+ has_been_committed = TRUE;
+ break;
+ case WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT:
+ g_assert(has_been_provisional);
+ g_assert(has_been_committed);
+ g_assert(!has_been_first_visually_non_empty_layout);
+ has_been_first_visually_non_empty_layout = TRUE;
+ break;
+ case WEBKIT_LOAD_FINISHED:
+ g_assert(has_been_provisional);
+ g_assert(has_been_committed);
+ g_assert(has_been_first_visually_non_empty_layout);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+}
+
+static void test_loading_status()
+{
+ WebKitWebView* web_view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ GMainLoop* loop = g_main_loop_new(NULL, TRUE);
+
+ g_object_ref_sink(web_view);
+
+ g_assert_cmpint(webkit_web_view_get_load_status(web_view), ==, WEBKIT_LOAD_PROVISIONAL);
+
+ g_object_connect(G_OBJECT(web_view),
+ "signal::notify::load-status", G_CALLBACK(status_changed_cb), NULL,
+ "signal::load-finished", G_CALLBACK(load_finished_cb), loop,
+ NULL);
+
+ /* load_uri will trigger the navigation-policy-decision-requested
+ * signal emission;
+ */
+ webkit_web_view_load_uri(web_view, "http://gnome.org/");
+
+ g_main_loop_run(loop);
+
+ 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/loading/status", test_loading_status);
+ return g_test_run();
+}
+
+#else
+int main(int argc, char** argv)
+{
+ g_critical("You will need at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/WebKit/gtk/tests/testnetworkrequest.c b/WebKit/gtk/tests/testnetworkrequest.c
new file mode 100644
index 0000000..40f8e7f
--- /dev/null
+++ b/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 GLIB_CHECK_VERSION(2, 16, 0) && 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 at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/WebKit/gtk/tests/testwebbackforwardlist.c b/WebKit/gtk/tests/testwebbackforwardlist.c
index 8d53c3e..115c079 100644
--- a/WebKit/gtk/tests/testwebbackforwardlist.c
+++ b/WebKit/gtk/tests/testwebbackforwardlist.c
@@ -47,15 +47,19 @@ static void test_webkit_web_history_item_lifetime(void)
/* 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);
@@ -93,16 +97,12 @@ static void test_webkit_web_history_item_lifetime(void)
g_list_free(forwardList);
g_list_free(backList);
- g_object_unref(item1);
- g_object_unref(item2);
- g_object_unref(item3);
- g_object_unref(item4);
-
- g_object_ref(backForwardList);
- g_object_unref(webView);
-
+ 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(backForwardList);
+ g_object_unref(webView);
}
static void test_webkit_web_back_forward_list_order(void)
@@ -135,18 +135,22 @@ static void test_webkit_web_back_forward_list_order(void)
// 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
@@ -187,10 +191,6 @@ static void test_webkit_web_back_forward_list_order(void)
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_object_unref(item1);
- g_object_unref(item2);
- g_object_unref(item3);
- g_object_unref(item4);
g_list_free(forwardList);
g_object_unref(webView);
}
@@ -222,6 +222,7 @@ static void test_webkit_web_back_forward_list_add_item(void)
// 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.
@@ -237,8 +238,8 @@ static void test_webkit_web_back_forward_list_add_item(void)
// 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_assert(webkit_web_back_forward_list_contains_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);
@@ -262,7 +263,6 @@ static void test_webkit_web_back_forward_list_add_item(void)
g_assert(webkit_web_view_can_go_forward(webView));
g_assert(!webkit_web_view_can_go_back(webView));
- g_object_unref(addItem1);
g_object_unref(webView);
}
diff --git a/WebKit/gtk/tests/testwebframe.c b/WebKit/gtk/tests/testwebframe.c
index e2da29c..068e2cf 100644
--- a/WebKit/gtk/tests/testwebframe.c
+++ b/WebKit/gtk/tests/testwebframe.c
@@ -1,5 +1,6 @@
/*
* 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
@@ -17,7 +18,10 @@
* 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>
@@ -25,15 +29,23 @@
static void test_webkit_web_frame_create_destroy(void)
{
- WebKitWebView* webView;
- g_test_bug("21837");
+ GtkWidget *webView;
+ GtkWidget *window;
- webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ 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)
@@ -62,6 +74,87 @@ static void test_webkit_web_frame_lifetime(void)
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);
+}
+
int main(int argc, char** argv)
{
g_thread_init(NULL);
@@ -70,6 +163,7 @@ int main(int argc, char** argv)
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/webframe/lifetime", test_webkit_web_frame_lifetime);
+ g_test_add_func("/webkit/webview/printing", test_webkit_web_frame_printing);
return g_test_run ();
}
diff --git a/WebKit/gtk/tests/testwebhistoryitem.c b/WebKit/gtk/tests/testwebhistoryitem.c
index 6038c647..b940afb 100644
--- a/WebKit/gtk/tests/testwebhistoryitem.c
+++ b/WebKit/gtk/tests/testwebhistoryitem.c
@@ -31,7 +31,7 @@ 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, == , 2);
+ g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, == , 1);
g_assert(fixture->item != NULL);
}
@@ -39,8 +39,6 @@ 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, ==, 2);
- g_object_unref(fixture->item);
g_assert_cmpint(G_OBJECT(fixture->item)->ref_count, ==, 1);
}
diff --git a/WebKit/gtk/tests/testwebsettings.c b/WebKit/gtk/tests/testwebsettings.c
new file mode 100644
index 0000000..8c77def
--- /dev/null
+++ b/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 GLIB_CHECK_VERSION(2, 16, 0) && 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 at least glib-2.16.0 and gtk-2.14.0 to run the unit tests. Doing nothing now.");
+ return 0;
+}
+
+#endif
diff --git a/WebKit/gtk/webkit.pc.in b/WebKit/gtk/webkit.pc.in
index 84d6115..895aa19 100644
--- a/WebKit/gtk/webkit.pc.in
+++ b/WebKit/gtk/webkit.pc.in
@@ -6,6 +6,6 @@ includedir=@includedir@
Name: WebKit
Description: Web content engine for GTK+
Version: @VERSION@
-Requires: gtk+-2.0 libsoup-2.4
+Requires: glib-2.0 gtk+-2.0 libsoup-2.4
Libs: -L${libdir} -lwebkit-1.0
Cflags: -I${includedir}/webkit-1.0
diff --git a/WebKit/gtk/webkit/webkitapplicationcache.cpp b/WebKit/gtk/webkit/webkitapplicationcache.cpp
new file mode 100644
index 0000000..2c6b71f
--- /dev/null
+++ b/WebKit/gtk/webkit/webkitapplicationcache.cpp
@@ -0,0 +1,32 @@
+/*
+ * 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 "webkitprivate.h"
+
+#include "ApplicationCacheStorage.h"
+
+void webkit_application_cache_set_maximum_size(unsigned long long size)
+{
+ WebCore::cacheStorage().empty();
+ WebCore::cacheStorage().vacuumDatabaseFile();
+ WebCore::cacheStorage().setMaximumSize(size);
+}
+
+
diff --git a/WebKit/gtk/webkit/webkitdownload.cpp b/WebKit/gtk/webkit/webkitdownload.cpp
index 4488304..c0c6ea7 100644
--- a/WebKit/gtk/webkit/webkitdownload.cpp
+++ b/WebKit/gtk/webkit/webkitdownload.cpp
@@ -21,6 +21,7 @@
#include "config.h"
#include "CString.h"
+#include <glib/gi18n-lib.h>
#include "Noncopyable.h"
#include "NotImplemented.h"
#include "ResourceHandleClient.h"
@@ -36,7 +37,17 @@
using namespace WebKit;
using namespace WebCore;
-class DownloadClient : Noncopyable, public ResourceHandleClient {
+/**
+ * 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*);
@@ -51,8 +62,6 @@ class DownloadClient : Noncopyable, public ResourceHandleClient {
WebKitDownload* m_download;
};
-extern "C" {
-
#define WEBKIT_DOWNLOAD_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_DOWNLOAD, WebKitDownloadPrivate))
struct _WebKitDownloadPrivate {
@@ -179,9 +188,6 @@ static void webkit_download_set_property(GObject* object, guint prop_id, const G
switch(prop_id) {
case PROP_NETWORK_REQUEST:
priv->networkRequest = WEBKIT_NETWORK_REQUEST(g_value_dup_object(value));
- // This is safe as network-request is a construct only property and
- // suggestedFilename is initially null.
- priv->suggestedFilename = g_path_get_basename(webkit_network_request_get_uri(priv->networkRequest));
break;
case PROP_DESTINATION_URI:
webkit_download_set_destination_uri(download, g_value_get_string(value));
@@ -202,6 +208,8 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
objectClass->get_property = webkit_download_get_property;
objectClass->set_property = webkit_download_set_property;
+ webkit_init();
+
/**
* WebKitDownload::error:
* @download: the object on which the signal is emitted
@@ -214,7 +222,7 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
*/
webkit_download_signals[ERROR] = g_signal_new("error",
G_TYPE_FROM_CLASS(downloadClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -236,8 +244,8 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
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",
+ _("Network Request"),
+ _("The network request for the URI that should be downloaded"),
WEBKIT_TYPE_NETWORK_REQUEST,
(GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)));
@@ -251,8 +259,8 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
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",
+ _("Destination URI"),
+ _("The destination URI where to save the file"),
"",
WEBKIT_PARAM_READWRITE));
@@ -266,22 +274,26 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
g_object_class_install_property(objectClass,
PROP_SUGGESTED_FILENAME,
g_param_spec_string("suggested-filename",
- "Suggested Filename",
- "The filename suggested as default when saving",
+ _("Suggested Filename"),
+ _("The filename suggested as default when saving"),
"",
WEBKIT_PARAM_READABLE));
/**
* WebKitDownload:progress:
*
- * Determines the current progress of the download.
+ * 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",
+ _("Progress"),
+ _("Determines the current progress of the download"),
0.0, 1.0, 1.0,
WEBKIT_PARAM_READABLE));
@@ -294,8 +306,8 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
*/
g_object_class_install_property(objectClass, PROP_STATUS,
g_param_spec_enum("status",
- "Status",
- "Determines the current status of the download",
+ _("Status"),
+ _("Determines the current status of the download"),
WEBKIT_TYPE_DOWNLOAD_STATUS,
WEBKIT_DOWNLOAD_STATUS_CREATED,
WEBKIT_PARAM_READABLE));
@@ -310,8 +322,8 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
g_object_class_install_property(objectClass,
PROP_CURRENT_SIZE,
g_param_spec_uint64("current-size",
- "Current Size",
- "The length of the data already downloaded",
+ _("Current Size"),
+ _("The length of the data already downloaded"),
0, G_MAXUINT64, 0,
WEBKIT_PARAM_READABLE));
@@ -325,8 +337,8 @@ static void webkit_download_class_init(WebKitDownloadClass* downloadClass)
g_object_class_install_property(objectClass,
PROP_CURRENT_SIZE,
g_param_spec_uint64("total-size",
- "Total Size",
- "The total size of the file",
+ _("Total Size"),
+ _("The total size of the file"),
0, G_MAXUINT64, 0,
WEBKIT_PARAM_READABLE));
@@ -415,11 +427,8 @@ void webkit_download_start(WebKitDownload* download)
if (priv->resourceHandle)
priv->resourceHandle->setClient(priv->downloadClient);
- else {
- // FIXME: Use the actual request object when WebKitNetworkRequest is finished.
- ResourceRequest request(webkit_network_request_get_uri(priv->networkRequest));
- priv->resourceHandle = ResourceHandle::create(request, priv->downloadClient, 0, false, false, false);
- }
+ else
+ priv->resourceHandle = ResourceHandle::create(core(priv->networkRequest), priv->downloadClient, 0, false, false, false);
priv->timer = g_timer_new();
webkit_download_open_stream_for_uri(download, priv->destinationURI);
@@ -455,7 +464,7 @@ void webkit_download_cancel(WebKitDownload* download)
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);
+ g_signal_emit_by_name(download, "error", 0, WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER, _("User cancelled the download"), &handled);
}
/**
@@ -519,9 +528,25 @@ 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);
+}
+
+
/**
* webkit_download_get_destination_uri:
* @download: the #WebKitDownload
@@ -688,6 +713,9 @@ 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;
+
gdouble total_size = (gdouble)priv->networkResponse->expectedContentLength();
if (total_size == 0)
@@ -713,6 +741,9 @@ 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);
}
@@ -745,9 +776,23 @@ static void webkit_download_received_data(WebKitDownload* download, const gchar*
if (priv->currentSize > priv->networkResponse->expectedContentLength())
g_object_notify(G_OBJECT(download), "total-size");
- // FIXME: Throttle the number of updates? Should we remove the
- // previous g_object_notify()s if we are going to throttle the
- // progress updates?
+ gdouble lastProgress = webkit_download_get_progress(download);
+
+ // Throttle progress notification to not consume high amounts of
+ // CPU on fast links, except when the progress is >= 3%, or we
+ // reached the end.
+ static gdouble lastElapsed = 0;
+ gdouble currentElapsed = g_timer_elapsed(priv->timer, NULL);
+
+ if (lastElapsed
+ && (currentElapsed - lastElapsed) < 0.1
+ && (webkit_download_get_progress(download) - lastProgress) < 0.03
+ && webkit_download_get_progress(download) < 1.0) {
+ lastElapsed = currentElapsed;
+ return;
+ }
+ lastElapsed = currentElapsed;
+
g_object_notify(G_OBJECT(download), "progress");
}
@@ -814,5 +859,3 @@ void DownloadClient::cannotShowURL(ResourceHandle*)
// and error handling.
notImplemented();
}
-
-}
diff --git a/WebKit/gtk/webkit/webkiterror.cpp b/WebKit/gtk/webkit/webkiterror.cpp
new file mode 100644
index 0000000..e93a5d5
--- /dev/null
+++ b/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/WebKit/gtk/webkit/webkiterror.h b/WebKit/gtk/webkit/webkiterror.h
new file mode 100644
index 0000000..512bc7d
--- /dev/null
+++ b/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 WEBKIT_ERROR_H
+#define WEBKIT_ERROR_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/WebKit/gtk/webkit/webkitnetworkrequest.cpp b/WebKit/gtk/webkit/webkitnetworkrequest.cpp
index 3ad8b5d..e8a225c 100644
--- a/WebKit/gtk/webkit/webkitnetworkrequest.cpp
+++ b/WebKit/gtk/webkit/webkitnetworkrequest.cpp
@@ -1,5 +1,6 @@
/*
* 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
@@ -18,9 +19,25 @@
*/
#include "config.h"
-
#include "webkitnetworkrequest.h"
+#include "CString.h"
+#include "GOwnPtr.h"
+#include "ResourceRequest.h"
+#include "webkitprivate.h"
+
+#include <glib/gi18n-lib.h>
+
+namespace WTF {
+
+template <> void freeOwnedGPtr<SoupMessage>(SoupMessage* soupMessage)
+{
+ if (soupMessage)
+ g_object_unref(soupMessage);
+}
+
+}
+
/**
* SECTION:webkitnetworkrequest
* @short_description: The target of a navigation request
@@ -34,16 +51,22 @@
*
*/
-extern "C" {
-
G_DEFINE_TYPE(WebKitNetworkRequest, webkit_network_request, G_TYPE_OBJECT);
struct _WebKitNetworkRequestPrivate {
gchar* uri;
+ SoupMessage* message;
};
#define WEBKIT_NETWORK_REQUEST_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_NETWORK_REQUEST, WebKitNetworkRequestPrivate))
+enum {
+ PROP_0,
+
+ PROP_URI,
+ PROP_MESSAGE,
+};
+
static void webkit_network_request_finalize(GObject* object)
{
WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(object);
@@ -51,12 +74,84 @@ static void webkit_network_request_finalize(GObject* object)
g_free(priv->uri);
+ if (priv->message) {
+ g_object_unref(priv->message);
+ priv->message = NULL;
+ }
+
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)
{
- G_OBJECT_CLASS(requestClass)->finalize = webkit_network_request_finalize;
+ GObjectClass* objectClass = G_OBJECT_CLASS(requestClass);
+
+ objectClass->finalize = webkit_network_request_finalize;
+ objectClass->get_property = webkit_network_request_get_property;
+ objectClass->set_property = webkit_network_request_set_property;
+
+ webkit_init();
+
+ /**
+ * 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));
}
@@ -67,18 +162,42 @@ static void webkit_network_request_init(WebKitNetworkRequest* request)
request->priv = priv;
}
-WebKitNetworkRequest* webkit_network_request_new(const gchar* uri)
+// for internal use only
+WebKitNetworkRequest* webkit_network_request_new_with_core_request(const WebCore::ResourceRequest& resourceRequest)
{
- g_return_val_if_fail(uri, NULL);
+ GOwnPtr<SoupMessage> soupMessage(resourceRequest.toSoupMessage());
+ if (soupMessage)
+ return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "message", soupMessage.get(), NULL));
- WebKitNetworkRequest* request = WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, NULL));
- WebKitNetworkRequestPrivate* priv = request->priv;
+ return WEBKIT_NETWORK_REQUEST(g_object_new(WEBKIT_TYPE_NETWORK_REQUEST, "uri", resourceRequest.url().string().utf8().data(), NULL));
+}
- priv->uri = g_strdup(uri);
+/**
+ * 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 request;
+ 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));
@@ -86,8 +205,21 @@ void webkit_network_request_set_uri(WebKitNetworkRequest* request, const gchar*
WebKitNetworkRequestPrivate* priv = request->priv;
- g_free(priv->uri);
+ if (priv->uri)
+ g_free(priv->uri);
priv->uri = g_strdup(uri);
+
+ if (!priv->message)
+ return;
+
+ SoupURI* soupURI = soup_uri_new(uri);
+ if (!soupURI) {
+ g_warning("Invalid URI: %s", uri);
+ return;
+ }
+
+ soup_message_set_uri(priv->message, soupURI);
+ soup_uri_free(soupURI);
}
/**
@@ -103,7 +235,32 @@ G_CONST_RETURN gchar* webkit_network_request_get_uri(WebKitNetworkRequest* reque
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_soup_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: 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;
}
diff --git a/WebKit/gtk/webkit/webkitnetworkrequest.h b/WebKit/gtk/webkit/webkitnetworkrequest.h
index 01ab8bb..78e04a1 100644
--- a/WebKit/gtk/webkit/webkitnetworkrequest.h
+++ b/WebKit/gtk/webkit/webkitnetworkrequest.h
@@ -21,6 +21,7 @@
#define WEBKIT_NETWORK_REQUEST_H
#include <glib-object.h>
+#include <libsoup/soup.h>
#include <webkit/webkitdefines.h>
@@ -65,6 +66,9 @@ webkit_network_request_set_uri (WebKitNetworkRequest *request,
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/WebKit/gtk/webkit/webkitprivate.cpp b/WebKit/gtk/webkit/webkitprivate.cpp
index c4264c9..755b4d3 100644
--- a/WebKit/gtk/webkit/webkitprivate.cpp
+++ b/WebKit/gtk/webkit/webkitprivate.cpp
@@ -22,12 +22,13 @@
#include "webkitsoupauthdialog.h"
#include "webkitprivate.h"
+#include "ApplicationCacheStorage.h"
#include "ChromeClientGtk.h"
#include "Frame.h"
#include "FrameLoader.h"
#include "FrameLoaderClientGtk.h"
+#include <libintl.h>
#include "Logging.h"
-#include "NotImplemented.h"
#include "PageCache.h"
#include "PageGroup.h"
#include "Pasteboard.h"
@@ -99,6 +100,16 @@ WebCore::NavigationType core(WebKitWebNavigationReason type)
return (WebCore::NavigationType)type;
}
+WebCore::ResourceRequest core(WebKitNetworkRequest* request)
+{
+ SoupMessage* soupMessage = webkit_network_request_get_message(request);
+ if (soupMessage)
+ return ResourceRequest(soupMessage);
+
+ KURL url = KURL(KURL(), String::fromUTF8(webkit_network_request_get_uri(request)));
+ return ResourceRequest(url);
+}
+
} /** end namespace WebKit */
static GtkWidget* currentToplevelCallback(WebKitSoupAuthDialog* feature, SoupMessage* message, gpointer userData)
@@ -133,6 +144,9 @@ void webkit_init()
return;
isInitialized = true;
+ bindtextdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR);
+ bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
+
JSC::initializeThreading();
WebCore::InitializeLoggingChannelsIfNecessary();
@@ -145,6 +159,7 @@ void webkit_init()
// FIXME: It should be possible for client applications to override this default location
gchar* databaseDirectory = g_build_filename(g_get_user_data_dir(), "webkit", "databases", NULL);
WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(databaseDirectory);
+ WebCore::cacheStorage().setCacheDirectory(databaseDirectory);
g_free(databaseDirectory);
#endif
@@ -153,8 +168,13 @@ void webkit_init()
Pasteboard::generalPasteboard()->setHelper(new WebKit::PasteboardHelperGtk());
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);
}
diff --git a/WebKit/gtk/webkit/webkitprivate.h b/WebKit/gtk/webkit/webkitprivate.h
index 0b83a11..0c3fbd3 100644
--- a/WebKit/gtk/webkit/webkitprivate.h
+++ b/WebKit/gtk/webkit/webkitprivate.h
@@ -23,12 +23,14 @@
#define WEBKIT_PRIVATE_H
/*
- * This file knows the shared secret of WebKitWebView and WebKitWebFrame.
+ * This file knows the shared secret of WebKitWebView, WebKitWebFrame,
+ * and WebKitNetworkRequest.
* They are using WebCore which musn't be exposed to the outer world.
*/
#include <webkit/webkitdefines.h>
#include <webkit/webkitdownload.h>
+#include <webkit/webkitnetworkrequest.h>
#include <webkit/webkitwebview.h>
#include <webkit/webkitwebframe.h>
#include <webkit/webkitwebpolicydecision.h>
@@ -36,8 +38,10 @@
#include <webkit/webkitwebsettings.h>
#include <webkit/webkitwebwindowfeatures.h>
#include <webkit/webkitwebbackforwardlist.h>
+#include <webkit/webkitnetworkrequest.h>
#include "BackForwardList.h"
+#include <enchant.h>
#include "HistoryItem.h"
#include "Settings.h"
#include "Page.h"
@@ -45,10 +49,13 @@
#include "InspectorClientGtk.h"
#include "FrameLoaderClient.h"
#include "ResourceHandle.h"
+#include "ResourceRequest.h"
#include "ResourceResponse.h"
#include "WindowFeatures.h"
+#include <atk/atk.h>
#include <glib.h>
+#include <libsoup/soup.h>
class DownloadClient;
@@ -68,8 +75,15 @@ namespace WebKit {
WebKitWebNavigationReason kit(WebCore::NavigationType type);
WebCore::NavigationType core(WebKitWebNavigationReason reason);
+
+ WebCore::ResourceRequest core(WebKitNetworkRequest* request);
}
+typedef struct {
+ EnchantBroker* config;
+ EnchantDict* speller;
+} SpellLanguage;
+
extern "C" {
void webkit_init();
@@ -85,9 +99,6 @@ extern "C" {
WebKitWebWindowFeatures* webWindowFeatures;
WebKitWebFrame* mainFrame;
- WebCore::String applicationNameForUserAgent;
- WebCore::String* userAgent;
-
WebKitWebBackForwardList* backForwardList;
gint lastPopupXPosition;
@@ -106,10 +117,12 @@ extern "C" {
GtkAdjustment* verticalAdjustment;
gboolean zoomFullContent;
+ WebKitLoadStatus loadStatus;
char* encoding;
char* customEncoding;
gboolean disposing;
+ gboolean usePrimaryForPaste;
};
#define WEBKIT_WEB_FRAME_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_FRAME, WebKitWebFramePrivate))
@@ -121,6 +134,7 @@ extern "C" {
gchar* name;
gchar* title;
gchar* uri;
+ WebKitLoadStatus loadStatus;
};
PassRefPtr<WebCore::Frame>
@@ -158,12 +172,25 @@ extern "C" {
void
webkit_web_view_notify_ready (WebKitWebView* web_view);
+ void
+ webkit_web_view_request_download(WebKitWebView* web_view, WebKitNetworkRequest* request, const WebCore::ResourceResponse& response = WebCore::ResourceResponse());
+
+ void
+ webkit_download_set_suggested_filename(WebKitDownload* download, const gchar* suggestedFilename);
+
WebKitWebPolicyDecision*
webkit_web_policy_decision_new (WebKitWebFrame*, WebCore::FramePolicyFunction);
void
webkit_web_policy_decision_cancel (WebKitWebPolicyDecision* decision);
+ WebKitNetworkRequest*
+ webkit_network_request_new_with_core_request(const WebCore::ResourceRequest& resourceRequest);
+
+ // FIXME: move this to webkitnetworkrequest.h once the API is agreed upon.
+ WEBKIT_API SoupMessage*
+ webkit_network_request_get_message(WebKitNetworkRequest* request);
+
// FIXME: move this functionality into a 'WebKitWebDataSource' once implemented
WEBKIT_API gchar*
webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame);
@@ -176,9 +203,6 @@ extern "C" {
WEBKIT_API gchar*
webkit_web_frame_get_inner_text (WebKitWebFrame* frame);
- WEBKIT_API void
- webkit_web_frame_print (WebKitWebFrame* frame);
-
WEBKIT_API gchar*
webkit_web_frame_dump_render_tree (WebKitWebFrame* frame);
@@ -191,11 +215,41 @@ extern "C" {
WEBKIT_API unsigned int
webkit_web_frame_number_of_active_animations(WebKitWebFrame* frame);
+ WEBKIT_API void
+ webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame);
+
+ WEBKIT_API AtkObject*
+ webkit_web_frame_get_focused_accessible_element(WebKitWebFrame* frame);
+
WEBKIT_API gchar*
webkit_web_view_get_selected_text (WebKitWebView* web_view);
WEBKIT_API void
+ webkit_web_view_set_group_name(WebKitWebView* web_view, const gchar* group_name);
+
+ WEBKIT_API void
webkit_web_settings_add_extra_plugin_directory (WebKitWebView *web_view, const gchar* directory);
+
+ GSList*
+ webkit_web_settings_get_spell_languages(WebKitWebView* web_view);
+
+ bool
+ webkit_web_view_use_primary_for_paste(WebKitWebView* web_view);
+
+ GHashTable*
+ webkit_history_items(void);
+
+ WEBKIT_API void
+ webkit_gc_collect_javascript_objects();
+
+ WEBKIT_API void
+ webkit_gc_collect_javascript_objects_on_alternate_thread(gboolean waitUntilDone);
+
+ WEBKIT_API gsize
+ webkit_gc_count_javascript_objects();
+
+ WEBKIT_API void
+ webkit_application_cache_set_maximum_size(unsigned long long size);
}
#endif
diff --git a/WebKit/gtk/webkit/webkitsoupauthdialog.c b/WebKit/gtk/webkit/webkitsoupauthdialog.c
index 139000b..9bc188e 100644
--- a/WebKit/gtk/webkit/webkitsoupauthdialog.c
+++ b/WebKit/gtk/webkit/webkitsoupauthdialog.c
@@ -19,6 +19,7 @@
#include "config.h"
+#include <glib/gi18n-lib.h>
#include <gtk/gtk.h>
#include <libsoup/soup.h>
#if USE(GNOMEKEYRING)
@@ -28,6 +29,17 @@
#include "webkitmarshal.h"
#include "webkitsoupauthdialog.h"
+/**
+ * SECTION:webkitsoupauthdialog
+ * @short_description: A #SoupFeature to provide a simple
+ * authentication dialog for HTTP basic auth support.
+ *
+ * #WebKitSoupAuthDialog is a #SoupFeature that you can attach to your
+ * #SoupSession to provide a simple authentication dialog, with
+ * optional GNOME Keyring support, 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);
@@ -79,11 +91,15 @@ typedef struct _WebKitAuthData {
#if USE(GNOMEKEYRING)
GtkWidget* checkButton;
#endif
+ 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);
}
@@ -92,47 +108,49 @@ static void set_password_callback(GnomeKeyringResult result, guint32 val, gpoint
{
/* Dummy callback, gnome_keyring_set_network_password does not accept a NULL one */
}
-#endif
-static void response_callback(GtkDialog* dialog, gint response_id, WebKitAuthData* authData)
+static void save_password_callback(SoupMessage* msg, WebKitAuthData* authData)
{
- const char* login;
- const char* password;
-#if USE(GNOMEKEYRING)
- SoupURI* uri;
- gboolean storePassword;
+ /* Check only for Success status codes (2xx) */
+ if (msg->status_code >= 200 && msg->status_code < 300) {
+ SoupURI* uri = soup_message_get_uri(authData->msg);
+ gnome_keyring_set_network_password(NULL,
+ authData->username,
+ soup_auth_get_realm(authData->auth),
+ uri->host,
+ NULL,
+ uri->scheme,
+ soup_auth_get_scheme_name(authData->auth),
+ uri->port,
+ authData->password,
+ (GnomeKeyringOperationGetIntCallback)set_password_callback,
+ NULL,
+ NULL);
+ }
+ free_authData(authData);
+}
#endif
+static void response_callback(GtkDialog* dialog, gint response_id, WebKitAuthData* authData)
+{
switch(response_id) {
case GTK_RESPONSE_OK:
- login = gtk_entry_get_text(GTK_ENTRY(authData->loginEntry));
- password = gtk_entry_get_text(GTK_ENTRY(authData->passwordEntry));
- soup_auth_authenticate(authData->auth, login, password);
+ 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);
#if USE(GNOMEKEYRING)
- storePassword = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData->checkButton));
- if (storePassword) {
- uri = soup_message_get_uri(authData->msg);
- gnome_keyring_set_network_password(NULL,
- login,
- soup_auth_get_realm(authData->auth),
- uri->host,
- NULL,
- uri->scheme,
- soup_auth_get_scheme_name(authData->auth),
- uri->port,
- password,
- (GnomeKeyringOperationGetIntCallback)set_password_callback,
- NULL,
- NULL);
- }
+ if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(authData->checkButton)))
+ g_signal_connect(authData->msg, "got-headers", G_CALLBACK(save_password_callback), authData);
#endif
default:
break;
}
soup_session_unpause_message(authData->session, authData->msg);
+#if !USE(GNOMEKEYRING)
free_authData(authData);
+#endif
gtk_widget_destroy(GTK_WIDGET(dialog));
}
@@ -229,7 +247,7 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
gtk_box_pack_start(GTK_BOX(hbox), mainVBox, TRUE, TRUE, 0);
uri = soup_message_get_uri(authData->msg);
- message = g_strdup_printf("A username and password are being requested by the site %s", uri->host);
+ message = g_strdup_printf(_("A username and password are being requested by the site %s"), uri->host);
messageLabel = gtk_label_new(message);
g_free(message);
gtk_misc_set_alignment(GTK_MISC(messageLabel), 0.0, 0.5);
@@ -254,9 +272,9 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
gtk_table_set_row_spacings(GTK_TABLE (table), 6);
gtk_container_add(GTK_CONTAINER(entryContainer), table);
- authData->loginEntry = table_add_entry(table, 0, "Username:",
+ authData->loginEntry = table_add_entry(table, 0, _("Username:"),
login, NULL);
- authData->passwordEntry = table_add_entry(table, 1, "Password:",
+ authData->passwordEntry = table_add_entry(table, 1, _("Password:"),
password, NULL);
gtk_entry_set_visibility(GTK_ENTRY(authData->passwordEntry), FALSE);
@@ -266,7 +284,7 @@ static void show_auth_dialog(WebKitAuthData* authData, const char* login, const
gtk_box_pack_start (GTK_BOX (vbox), rememberBox,
FALSE, FALSE, 0);
- checkButton = gtk_check_button_new_with_label("Remember password");
+ 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);
diff --git a/WebKit/gtk/webkit/webkitsoupauthdialog.h b/WebKit/gtk/webkit/webkitsoupauthdialog.h
index 2c030b4..9721c72 100644
--- a/WebKit/gtk/webkit/webkitsoupauthdialog.h
+++ b/WebKit/gtk/webkit/webkitsoupauthdialog.h
@@ -20,6 +20,8 @@
#include <gtk/gtk.h>
#include <libsoup/soup.h>
+#include <webkit/webkitdefines.h>
+
#ifndef WEBKIT_SOUP_AUTH_DIALOG_H
#define WEBKIT_SOUP_AUTH_DIALOG_H 1
@@ -42,7 +44,8 @@ typedef struct {
GtkWidget* (*current_toplevel) (WebKitSoupAuthDialog* feature, SoupMessage* message);
} WebKitSoupAuthDialogClass;
-GType webkit_soup_auth_dialog_get_type (void);
+WEBKIT_API GType
+webkit_soup_auth_dialog_get_type (void);
G_END_DECLS
diff --git a/WebKit/gtk/webkit/webkitversion.cpp b/WebKit/gtk/webkit/webkitversion.cpp
index 3f35750..62750f5 100644
--- a/WebKit/gtk/webkit/webkitversion.cpp
+++ b/WebKit/gtk/webkit/webkitversion.cpp
@@ -20,8 +20,6 @@
#include "config.h"
#include "webkitversion.h"
-extern "C" {
-
/**
* webkit_major_version:
*
@@ -63,5 +61,3 @@ guint webkit_micro_version()
{
return WEBKIT_MICRO_VERSION;
}
-
-}
diff --git a/WebKit/gtk/webkit/webkitversion.h.in b/WebKit/gtk/webkit/webkitversion.h.in
index f70800d..9f1b818 100644
--- a/WebKit/gtk/webkit/webkitversion.h.in
+++ b/WebKit/gtk/webkit/webkitversion.h.in
@@ -28,6 +28,8 @@ 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 WEBKIT_CHECK_VERSION(major, minor, micro) \
(WEBKIT_MAJOR_VERSION > (major) || \
diff --git a/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp b/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp
index 5c93df0..31631a5 100644
--- a/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp
+++ b/WebKit/gtk/webkit/webkitwebbackforwardlist.cpp
@@ -1,5 +1,6 @@
/*
* 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
@@ -51,18 +52,41 @@
using namespace WebKit;
-extern "C" {
-
struct _WebKitWebBackForwardListPrivate {
WebCore::BackForwardList* backForwardList;
+ gboolean disposed;
};
#define WEBKIT_WEB_BACK_FORWARD_LIST_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListPrivate))
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::BackForwardList* 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;
+
+ webkit_init();
+
g_type_class_add_private(klass, sizeof(WebKitWebBackForwardListPrivate));
}
@@ -397,20 +421,23 @@ void webkit_web_back_forward_list_set_limit(WebKitWebBackForwardList* webBackFor
*
* 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::BackForwardList* backForwardList = core(webBackForwardList);
WebCore::HistoryItem* historyItem = core(webHistoryItem);
backForwardList->addItem(historyItem);
}
-} /* end extern "C" */
-
WebCore::BackForwardList* WebKit::core(WebKitWebBackForwardList* webBackForwardList)
{
g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL);
diff --git a/WebKit/gtk/webkit/webkitwebframe.cpp b/WebKit/gtk/webkit/webkitwebframe.cpp
index e2b10b6..fba084e 100644
--- a/WebKit/gtk/webkit/webkitwebframe.cpp
+++ b/WebKit/gtk/webkit/webkitwebframe.cpp
@@ -6,6 +6,7 @@
* 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
@@ -25,21 +26,27 @@
#include "config.h"
+#include "webkitenumtypes.h"
#include "webkitwebframe.h"
#include "webkitwebview.h"
#include "webkitmarshal.h"
#include "webkitprivate.h"
+#include "AccessibilityObjectWrapperAtk.h"
#include "AnimationController.h"
+#include "AXObjectCache.h"
#include "CString.h"
#include "DocumentLoader.h"
#include "FrameLoader.h"
#include "FrameLoaderClientGtk.h"
#include "FrameTree.h"
#include "FrameView.h"
+#include <glib/gi18n-lib.h>
+#include "GCController.h"
#include "GraphicsContext.h"
#include "HTMLFrameOwnerElement.h"
#include "JSDOMWindow.h"
+#include "JSLock.h"
#include "PrintContext.h"
#include "RenderView.h"
#include "RenderTreeAsText.h"
@@ -47,6 +54,7 @@
#include "ScriptController.h"
#include "SubstituteData.h"
+#include <atk/atk.h>
#include <JavaScriptCore/APICast.h>
/**
@@ -71,8 +79,6 @@ using namespace WebKit;
using namespace WebCore;
using namespace std;
-extern "C" {
-
enum {
CLEARED,
LOAD_COMMITTED,
@@ -87,7 +93,8 @@ enum {
PROP_NAME,
PROP_TITLE,
- PROP_URI
+ PROP_URI,
+ PROP_LOAD_STATUS
};
static guint webkit_web_frame_signals[LAST_SIGNAL] = { 0, };
@@ -108,6 +115,9 @@ static void webkit_web_frame_get_property(GObject* object, guint prop_id, GValue
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;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -149,7 +159,7 @@ static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass)
*/
webkit_web_frame_signals[CLEARED] = g_signal_new("cleared",
G_TYPE_FROM_CLASS(frameClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -158,16 +168,25 @@ static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass)
webkit_web_frame_signals[LOAD_COMMITTED] = g_signal_new("load-committed",
G_TYPE_FROM_CLASS(frameClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
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 WebKitWebView::load-finished 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 | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -177,7 +196,7 @@ static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass)
webkit_web_frame_signals[TITLE_CHANGED] = g_signal_new("title-changed",
G_TYPE_FROM_CLASS(frameClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -187,7 +206,7 @@ static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass)
webkit_web_frame_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link",
G_TYPE_FROM_CLASS(frameClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -207,25 +226,40 @@ static void webkit_web_frame_class_init(WebKitWebFrameClass* frameClass)
*/
g_object_class_install_property(objectClass, PROP_NAME,
g_param_spec_string("name",
- "Name",
- "The name of the frame",
+ _("Name"),
+ _("The name of the frame"),
NULL,
WEBKIT_PARAM_READABLE));
g_object_class_install_property(objectClass, PROP_TITLE,
g_param_spec_string("title",
- "Title",
- "The document title of the frame",
+ _("Title"),
+ _("The document title of the frame"),
NULL,
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",
+ _("URI"),
+ _("The current URI of the contents displayed by the frame"),
NULL,
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));
+
g_type_class_add_private(frameClass, sizeof(WebKitWebFramePrivate));
}
@@ -396,6 +430,25 @@ void webkit_web_frame_load_uri(WebKitWebFrame* frame, const gchar* uri)
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"),
+ baseKURL,
+ KURL(KURL(), String::fromUTF8(unreachableURL)));
+
+ coreFrame->loader()->load(request, substituteData, false);
+}
+
/**
* webkit_web_frame_load_string:
* @frame: a #WebKitWebFrame
@@ -418,15 +471,28 @@ void webkit_web_frame_load_string(WebKitWebFrame* frame, const gchar* content, c
g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
g_return_if_fail(content);
- Frame* coreFrame = core(frame);
- if (!coreFrame)
- return;
+ webkit_web_frame_load_data(frame, content, contentMimeType, contentEncoding, baseUri, NULL);
+}
- KURL url(KURL(), baseUri ? String::fromUTF8(baseUri) : "");
- RefPtr<SharedBuffer> sharedBuffer = SharedBuffer::create(content, strlen(content));
- SubstituteData substituteData(sharedBuffer.release(), contentMimeType ? String(contentMimeType) : "text/html", contentEncoding ? String(contentEncoding) : "UTF-8", blankURL(), url);
+/**
+ * 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);
- coreFrame->loader()->load(ResourceRequest(url), substituteData, false);
+ webkit_web_frame_load_data(frame, content, NULL, NULL, baseURL, unreachableURL);
}
/**
@@ -449,9 +515,7 @@ void webkit_web_frame_load_request(WebKitWebFrame* frame, WebKitNetworkRequest*
if (!coreFrame)
return;
- // TODO: Use the ResourceRequest carried by WebKitNetworkRequest when it is implemented.
- String string = String::fromUTF8(webkit_network_request_get_uri(request));
- coreFrame->loader()->load(ResourceRequest(KURL(KURL(), string)), false);
+ coreFrame->loader()->load(core(request), false);
}
/**
@@ -610,9 +674,7 @@ gchar* webkit_web_frame_dump_render_tree(WebKitWebFrame* frame)
return g_strdup(string.utf8().data());
}
-#if GTK_CHECK_VERSION(2,10,0)
-
-static void begin_print(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data)
+static void begin_print_callback(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data)
{
PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data);
@@ -630,7 +692,7 @@ static void begin_print(GtkPrintOperation* op, GtkPrintContext* context, gpointe
gtk_print_operation_set_n_pages(op, printContext->pageCount());
}
-static void draw_page(GtkPrintOperation* op, GtkPrintContext* context, gint page_nr, gpointer user_data)
+static void draw_page_callback(GtkPrintOperation* op, GtkPrintContext* context, gint page_nr, gpointer user_data)
{
PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data);
@@ -640,34 +702,72 @@ static void draw_page(GtkPrintOperation* op, GtkPrintContext* context, gint page
printContext->spoolPage(ctx, page_nr, width);
}
-static void end_print(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data)
+static void end_print_callback(GtkPrintOperation* op, GtkPrintContext* context, gpointer user_data)
{
PrintContext* printContext = reinterpret_cast<PrintContext*>(user_data);
printContext->end();
}
-void webkit_web_frame_print(WebKitWebFrame* frame)
+/**
+ * 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 #WebKitFrame, 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_TOPLEVEL(topLevel))
topLevel = NULL;
Frame* coreFrame = core(frame);
if (!coreFrame)
- return;
+ return GTK_PRINT_OPERATION_RESULT_ERROR;
PrintContext printContext(coreFrame);
- GtkPrintOperation* op = gtk_print_operation_new();
- g_signal_connect(op, "begin-print", G_CALLBACK(begin_print), &printContext);
- g_signal_connect(op, "draw-page", G_CALLBACK(draw_page), &printContext);
- g_signal_connect(op, "end-print", G_CALLBACK(end_print), &printContext);
- GError *error = NULL;
- gtk_print_operation_run(op, GTK_PRINT_OPERATION_ACTION_PRINT_DIALOG, GTK_WINDOW(topLevel), &error);
- g_object_unref(op);
+ 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 #WebKitFrame, 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* dialog = gtk_message_dialog_new(GTK_WINDOW(topLevel),
+ GtkWidget* window = gtk_widget_get_toplevel(GTK_WIDGET(priv->webView));
+ GtkWidget* dialog = gtk_message_dialog_new(GTK_WIDGET_TOPLEVEL(window) ? GTK_WINDOW(window) : 0,
GTK_DIALOG_DESTROY_WITH_PARENT,
GTK_MESSAGE_ERROR,
GTK_BUTTONS_CLOSE,
@@ -679,15 +779,6 @@ void webkit_web_frame_print(WebKitWebFrame* frame)
}
}
-#else
-
-void webkit_web_frame_print(WebKitWebFrame*)
-{
- g_warning("Printing support is not available in older versions of GTK+");
-}
-
-#endif
-
bool webkit_web_frame_pause_animation(WebKitWebFrame* frame, const gchar* name, double time, const gchar* element)
{
ASSERT(core(frame));
@@ -727,4 +818,68 @@ gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame)
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;
+}
+
+void webkit_web_frame_clear_main_frame_name(WebKitWebFrame* frame)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_FRAME(frame));
+
+ core(frame)->tree()->clearName();
+}
+
+void webkit_gc_collect_javascript_objects()
+{
+ gcController().garbageCollectNow();
+}
+
+void webkit_gc_collect_javascript_objects_on_alternate_thread(gboolean waitUntilDone)
+{
+ gcController().garbageCollectOnAlternateThreadForDebugging(waitUntilDone);
+}
+
+gsize webkit_gc_count_javascript_objects()
+{
+ JSC::JSLock lock(JSC::SilenceAssertionsOnly);
+ return JSDOMWindow::commonJSGlobalData()->heap.objectCount();
+
+}
+
+AtkObject* webkit_web_frame_get_focused_accessible_element(WebKitWebFrame* frame)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_FRAME(frame), NULL);
+
+#if HAVE(ACCESSIBILITY)
+ if (!AXObjectCache::accessibilityEnabled())
+ AXObjectCache::enableAccessibility();
+
+ WebKitWebFramePrivate* priv = frame->priv;
+ if (!priv->coreFrame || !priv->coreFrame->document())
+ return NULL;
+
+ RenderView* root = toRenderView(priv->coreFrame->document()->renderer());
+ if (!root)
+ return NULL;
+
+ AtkObject* wrapper = priv->coreFrame->document()->axObjectCache()->getOrCreate(root)->wrapper();
+ if (!wrapper)
+ return NULL;
+
+ return webkit_accessible_get_focused_element(WEBKIT_ACCESSIBLE(wrapper));
+#else
+ return NULL;
+#endif
}
diff --git a/WebKit/gtk/webkit/webkitwebframe.h b/WebKit/gtk/webkit/webkitwebframe.h
index 7e24565..b2e61b9 100644
--- a/WebKit/gtk/webkit/webkitwebframe.h
+++ b/WebKit/gtk/webkit/webkitwebframe.h
@@ -22,6 +22,8 @@
#define WEBKIT_WEB_FRAME_H
#include <glib-object.h>
+#include <gtk/gtk.h>
+
#include <JavaScriptCore/JSBase.h>
#include <webkit/webkitdefines.h>
@@ -57,6 +59,30 @@ struct _WebKitWebFrameClass {
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 either that everything that
+ * was required to display the page has been loaded, or that an error
+ * has happened.
+ */
+typedef enum {
+ WEBKIT_LOAD_PROVISIONAL,
+ WEBKIT_LOAD_COMMITTED,
+ WEBKIT_LOAD_FINISHED,
+ WEBKIT_LOAD_FIRST_VISUALLY_NON_EMPTY_LAYOUT
+} WebKitLoadStatus;
+
WEBKIT_API GType
webkit_web_frame_get_type (void);
@@ -92,6 +118,12 @@ webkit_web_frame_load_string (WebKitWebFrame *frame,
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);
@@ -108,6 +140,18 @@ webkit_web_frame_find_frame (WebKitWebFrame *frame,
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);
+
G_END_DECLS
#endif
diff --git a/WebKit/gtk/webkit/webkitwebhistoryitem.cpp b/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
index 42e6a9b..a75bc0d 100644
--- a/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
+++ b/WebKit/gtk/webkit/webkitwebhistoryitem.cpp
@@ -1,5 +1,6 @@
/*
* 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
@@ -23,6 +24,7 @@
#include "webkitprivate.h"
#include <glib.h>
+#include <glib/gi18n-lib.h>
#include "CString.h"
#include "HistoryItem.h"
@@ -49,8 +51,6 @@
using namespace WebKit;
-extern "C" {
-
struct _WebKitWebHistoryItemPrivate {
WebCore::HistoryItem* historyItem;
@@ -80,37 +80,28 @@ static void webkit_web_history_item_set_property(GObject* object, guint prop_id,
static void webkit_web_history_item_get_property(GObject* object, guint prop_id, GValue* value, GParamSpec* pspec);
-static GHashTable* webkit_history_items()
+GHashTable* webkit_history_items()
{
static GHashTable* historyItems = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, g_object_unref);
return historyItems;
}
-static void webkit_history_item_add(WebKitWebHistoryItem* webHistoryItem, WebCore::HistoryItem* historyItem)
+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, g_object_ref(webHistoryItem));
+ 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;
- WebCore::HistoryItem* item = core(webHistoryItem);
if (!priv->disposed) {
- GHashTable* table = webkit_history_items();
-
- g_hash_table_remove(table, item);
+ WebCore::HistoryItem* item = core(webHistoryItem);
item->deref();
-
- /* destroy table if empty */
- if (!g_hash_table_size(table))
- g_hash_table_destroy(table);
-
priv->disposed = true;
}
@@ -139,6 +130,8 @@ static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass)
gobject_class->set_property = webkit_web_history_item_set_property;
gobject_class->get_property = webkit_web_history_item_get_property;
+ webkit_init();
+
/**
* WebKitWebHistoryItem:title:
*
@@ -150,8 +143,8 @@ static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass)
PROP_TITLE,
g_param_spec_string(
"title",
- "Title",
- "The title of the history item",
+ _("Title"),
+ _("The title of the history item"),
NULL,
WEBKIT_PARAM_READABLE));
@@ -166,8 +159,8 @@ static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass)
PROP_ALTERNATE_TITLE,
g_param_spec_string(
"alternate-title",
- "Alternate Title",
- "The alternate title of the history item",
+ _("Alternate Title"),
+ _("The alternate title of the history item"),
NULL,
WEBKIT_PARAM_READWRITE));
@@ -182,8 +175,8 @@ static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass)
PROP_URI,
g_param_spec_string(
"uri",
- "URI",
- "The URI of the history item",
+ _("URI"),
+ _("The URI of the history item"),
NULL,
WEBKIT_PARAM_READABLE));
@@ -198,8 +191,8 @@ static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass)
PROP_ORIGINAL_URI,
g_param_spec_string(
"original-uri",
- "Original URI",
- "The original URI of the history item",
+ _("Original URI"),
+ _("The original URI of the history item"),
NULL,
WEBKIT_PARAM_READABLE));
@@ -214,8 +207,8 @@ static void webkit_web_history_item_class_init(WebKitWebHistoryItemClass* klass)
PROP_LAST_VISITED_TIME,
g_param_spec_double(
"last-visited-time",
- "Last visited Time",
- "The time at which the history item was last visited",
+ _("Last visited Time"),
+ _("The time at which the history item was last visited"),
0, G_MAXDOUBLE, 0,
WEBKIT_PARAM_READABLE));
@@ -485,8 +478,6 @@ GList* webkit_web_history_item_get_children(WebKitWebHistoryItem* webHistoryItem
return g_list_reverse(kids);
}
-} /* end extern "C" */
-
WebCore::HistoryItem* WebKit::core(WebKitWebHistoryItem* webHistoryItem)
{
g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), NULL);
@@ -499,11 +490,8 @@ WebKitWebHistoryItem* WebKit::kit(PassRefPtr<WebCore::HistoryItem> historyItem)
g_return_val_if_fail(historyItem, NULL);
RefPtr<WebCore::HistoryItem> item = historyItem;
-
- WebKitWebHistoryItem* webHistoryItem;
GHashTable* table = webkit_history_items();
-
- webHistoryItem = (WebKitWebHistoryItem*) g_hash_table_lookup(table, item.get());
+ 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));
diff --git a/WebKit/gtk/webkit/webkitwebinspector.cpp b/WebKit/gtk/webkit/webkitwebinspector.cpp
index 8e1c8c0..4e4f8de 100644
--- a/WebKit/gtk/webkit/webkitwebinspector.cpp
+++ b/WebKit/gtk/webkit/webkitwebinspector.cpp
@@ -20,6 +20,7 @@
#include "config.h"
+#include <glib/gi18n-lib.h>
#include "webkitwebinspector.h"
#include "webkitmarshal.h"
#include "InspectorClientGtk.h"
@@ -56,8 +57,6 @@
using namespace WebKit;
-extern "C" {
-
enum {
INSPECT_WEB_VIEW,
SHOW_WINDOW,
@@ -132,7 +131,7 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
webkit_web_inspector_signals[INSPECT_WEB_VIEW] = g_signal_new("inspect-web-view",
G_TYPE_FROM_CLASS(klass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
webkit_inspect_web_view_request_handled,
NULL,
@@ -153,7 +152,7 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
webkit_web_inspector_signals[SHOW_WINDOW] = g_signal_new("show-window",
G_TYPE_FROM_CLASS(klass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -172,7 +171,7 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
webkit_web_inspector_signals[ATTACH_WINDOW] = g_signal_new("attach-window",
G_TYPE_FROM_CLASS(klass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -190,7 +189,7 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
webkit_web_inspector_signals[DETACH_WINDOW] = g_signal_new("detach-window",
G_TYPE_FROM_CLASS(klass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -217,7 +216,7 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
webkit_web_inspector_signals[CLOSE_WINDOW] = g_signal_new("close-window",
G_TYPE_FROM_CLASS(klass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -236,7 +235,7 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
webkit_web_inspector_signals[FINISHED] = g_signal_new("finished",
G_TYPE_FROM_CLASS(klass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -256,8 +255,8 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
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",
+ _("Web View"),
+ _("The Web View that renders the Web Inspector itself"),
WEBKIT_TYPE_WEB_VIEW,
WEBKIT_PARAM_READABLE));
@@ -270,8 +269,8 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
*/
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",
+ _("Inspected URI"),
+ _("The URI that is currently being inspected"),
NULL,
WEBKIT_PARAM_READABLE));
@@ -287,8 +286,8 @@ static void webkit_web_inspector_class_init(WebKitWebInspectorClass* klass)
PROP_JAVASCRIPT_PROFILING_ENABLED,
g_param_spec_boolean(
"javascript-profiling-enabled",
- "Enable JavaScript profiling",
- "Profile the executed JavaScript.",
+ _("Enable JavaScript profiling"),
+ _("Profile the executed JavaScript."),
FALSE,
WEBKIT_PARAM_READWRITE));
@@ -427,5 +426,3 @@ webkit_web_inspector_set_inspector_client(WebKitWebInspector* web_inspector, Web
priv->page = page;
}
-
-}
diff --git a/WebKit/gtk/webkit/webkitwebnavigationaction.cpp b/WebKit/gtk/webkit/webkitwebnavigationaction.cpp
index 48e36ac..c866c0f 100644
--- a/WebKit/gtk/webkit/webkitwebnavigationaction.cpp
+++ b/WebKit/gtk/webkit/webkitwebnavigationaction.cpp
@@ -22,19 +22,30 @@
#include <wtf/Assertions.h>
#include "FrameLoaderTypes.h"
+#include <glib/gi18n-lib.h>
#include "webkitwebnavigationaction.h"
#include "webkitprivate.h"
#include "webkitenumtypes.h"
#include <string.h>
-extern "C" {
+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;
};
#define WEBKIT_WEB_NAVIGATION_ACTION_GET_PRIVATE(obj)(G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_NAVIGATION_ACTION, WebKitWebNavigationActionPrivate))
@@ -45,7 +56,8 @@ enum {
PROP_REASON,
PROP_ORIGINAL_URI,
PROP_BUTTON,
- PROP_MODIFIER_STATE
+ PROP_MODIFIER_STATE,
+ PROP_TARGET_FRAME
};
G_DEFINE_TYPE(WebKitWebNavigationAction, webkit_web_navigation_action, G_TYPE_OBJECT)
@@ -68,6 +80,9 @@ static void webkit_web_navigation_action_get_property(GObject* object, guint pro
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;
@@ -92,6 +107,9 @@ static void webkit_web_navigation_action_set_property(GObject* object, guint pro
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;
@@ -101,8 +119,6 @@ static void webkit_web_navigation_action_set_property(GObject* object, guint pro
static void webkit_web_navigation_action_init(WebKitWebNavigationAction* navigationAction)
{
navigationAction->priv = WEBKIT_WEB_NAVIGATION_ACTION_GET_PRIVATE(navigationAction);
-
- WebKitWebNavigationActionPrivate* priv = navigationAction->priv;
}
static void webkit_web_navigation_action_finalize(GObject* obj)
@@ -119,12 +135,12 @@ static void webkit_web_navigation_action_class_init(WebKitWebNavigationActionCla
{
GObjectClass* objectClass = G_OBJECT_CLASS(requestClass);
- COMPILE_ASSERT(WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED == WebCore::NavigationTypeLinkClicked, navigation_type_link_clicked_enum_match);
- COMPILE_ASSERT(WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED == WebCore::NavigationTypeFormSubmitted, navigation_type_form_submitted_enum_match);
- COMPILE_ASSERT(WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD == WebCore::NavigationTypeBackForward, navigation_type_back_forward_enum_match);
- COMPILE_ASSERT(WEBKIT_WEB_NAVIGATION_REASON_RELOAD == WebCore::NavigationTypeReload, navigation_type_reload_enum_match);
- COMPILE_ASSERT(WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED == WebCore::NavigationTypeFormResubmitted, navigation_type_form_resubmitted_enum_match);
- COMPILE_ASSERT(WEBKIT_WEB_NAVIGATION_REASON_OTHER == WebCore::NavigationTypeOther, navigation_type_other_enum_match);
+ 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;
@@ -139,8 +155,8 @@ static void webkit_web_navigation_action_class_init(WebKitWebNavigationActionCla
*/
g_object_class_install_property(objectClass, PROP_REASON,
g_param_spec_enum("reason",
- "Reason",
- "The reason why this navigation is occurring",
+ _("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)));
@@ -154,8 +170,8 @@ static void webkit_web_navigation_action_class_init(WebKitWebNavigationActionCla
*/
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",
+ _("Original URI"),
+ _("The URI that was requested as the target for the navigation"),
"",
(GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT)));
/**
@@ -167,8 +183,8 @@ static void webkit_web_navigation_action_class_init(WebKitWebNavigationActionCla
*/
g_object_class_install_property(objectClass, PROP_BUTTON,
g_param_spec_int("button",
- "Button",
- "The button used to click",
+ _("Button"),
+ _("The button used to click"),
-1,
G_MAXINT,
-1,
@@ -183,13 +199,27 @@ static void webkit_web_navigation_action_class_init(WebKitWebNavigationActionCla
*/
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",
+ _("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));
@@ -308,5 +338,31 @@ gint webkit_web_navigation_action_get_modifier_state(WebKitWebNavigationAction*
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");
}
diff --git a/WebKit/gtk/webkit/webkitwebnavigationaction.h b/WebKit/gtk/webkit/webkitwebnavigationaction.h
index d83e7a0..c437c50 100644
--- a/WebKit/gtk/webkit/webkitwebnavigationaction.h
+++ b/WebKit/gtk/webkit/webkitwebnavigationaction.h
@@ -88,6 +88,9 @@ webkit_web_navigation_action_get_button(WebKitWebNavigationAction* navigationAct
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/WebKit/gtk/webkit/webkitwebpolicydecision.cpp b/WebKit/gtk/webkit/webkitwebpolicydecision.cpp
index db4d10f..b2bab6b 100644
--- a/WebKit/gtk/webkit/webkitwebpolicydecision.cpp
+++ b/WebKit/gtk/webkit/webkitwebpolicydecision.cpp
@@ -27,7 +27,15 @@
using namespace WebKit;
using namespace WebCore;
-extern "C" {
+/**
+ * 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);
@@ -125,5 +133,3 @@ void webkit_web_policy_decision_cancel(WebKitWebPolicyDecision* decision)
priv->isCancelled = TRUE;
}
-
-}
diff --git a/WebKit/gtk/webkit/webkitwebsettings.cpp b/WebKit/gtk/webkit/webkitwebsettings.cpp
index d31ec2f..061d3e2 100644
--- a/WebKit/gtk/webkit/webkitwebsettings.cpp
+++ b/WebKit/gtk/webkit/webkitwebsettings.cpp
@@ -3,6 +3,7 @@
* Copyright (C) 2008 Nuanti Ltd.
* Copyright (C) 2008 Collabora Ltd.
* Copyright (C) 2008 Holger Hans Peter Freyther
+ * 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
@@ -21,12 +22,21 @@
*/
#include "config.h"
-
#include "webkitwebsettings.h"
+
#include "webkitprivate.h"
+#include "webkitversion.h"
+#include "CString.h"
#include "FileSystem.h"
#include "PluginDatabase.h"
+#include "Language.h"
+#include "PlatformString.h"
+
+#include <glib/gi18n-lib.h>
+#if PLATFORM(UNIX)
+#include <sys/utsname.h>
+#endif
/**
* SECTION:webkitwebsettings
@@ -48,8 +58,6 @@
using namespace WebCore;
-extern "C" {
-
G_DEFINE_TYPE(WebKitWebSettings, webkit_web_settings, G_TYPE_OBJECT)
struct _WebKitWebSettingsPrivate {
@@ -75,6 +83,16 @@ struct _WebKitWebSettingsPrivate {
gfloat zoom_step;
gboolean enable_developer_extras;
gboolean enable_private_browsing;
+ gboolean enable_spell_checking;
+ gchar* spell_checking_languages;
+ GSList* spell_checking_languages_list;
+ gboolean enable_caret_browsing;
+ gboolean enable_html5_database;
+ gboolean enable_html5_local_storage;
+ gboolean enable_xss_auditor;
+ gchar* user_agent;
+ gboolean javascript_can_open_windows_automatically;
+ gboolean enable_offline_web_application_cache;
};
#define WEBKIT_WEB_SETTINGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate))
@@ -103,9 +121,75 @@ enum {
PROP_USER_STYLESHEET_URI,
PROP_ZOOM_STEP,
PROP_ENABLE_DEVELOPER_EXTRAS,
- PROP_ENABLE_PRIVATE_BROWSING
+ 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_USER_AGENT,
+ PROP_JAVASCRIPT_CAN_OPEN_WINDOWS_AUTOMATICALLY,
+ PROP_ENABLE_OFFLINE_WEB_APPLICATION_CACHE
};
+// 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 webkit_get_user_agent()
+{
+ gchar* platform;
+ gchar* osVersion;
+
+#if PLATFORM(X11)
+ platform = g_strdup("X11");
+#elif PLATFORM(WIN_OS)
+ platform = g_strdup("Windows");
+#elif PLATFORM(MAC)
+ platform = g_strdup("Macintosh");
+#elif defined(GDK_WINDOWING_DIRECTFB)
+ platform = g_strdup("DirectFB");
+#else
+ platform = g_strdup("Unknown");
+#endif
+
+ // FIXME: platform/version detection can be shared.
+#if PLATFORM(DARWIN)
+
+#if PLATFORM(X86)
+ osVersion = g_strdup("Intel Mac OS X");
+#else
+ osVersion = g_strdup("PPC Mac OS X");
+#endif
+
+#elif PLATFORM(UNIX)
+ struct utsname name;
+ if (uname(&name) != -1)
+ osVersion = g_strdup_printf("%s %s", name.sysname, name.machine);
+ else
+ osVersion = g_strdup("Unknown");
+
+#elif PLATFORM(WIN_OS)
+ // FIXME: Compute the Windows version
+ osVersion = g_strdup("Windows");
+
+#else
+ osVersion = g_strdup("Unknown");
+#endif
+
+ // 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, (String::format("%d.%d+", WEBKIT_USER_AGENT_MAJOR_VERSION, WEBKIT_USER_AGENT_MINOR_VERSION)));
+ DEFINE_STATIC_LOCAL(const String, staticUA, (String::format("Mozilla/5.0 (%s; U; %s; %s) AppleWebKit/%s (KHTML, like Gecko) Safari/%s",
+ platform, osVersion, defaultLanguage().utf8().data(), uaVersion.utf8().data(), uaVersion.utf8().data())));
+
+ g_free(osVersion);
+ g_free(platform);
+
+ 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);
@@ -119,14 +203,16 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
gobject_class->set_property = webkit_web_settings_set_property;
gobject_class->get_property = webkit_web_settings_get_property;
+ webkit_init();
+
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.",
+ _("Default Encoding"),
+ _("The default encoding used to display text."),
"iso-8859-1",
flags));
@@ -134,8 +220,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_CURSIVE_FONT_FAMILY,
g_param_spec_string(
"cursive-font-family",
- "Cursive Font Family",
- "The default Cursive font family used to display text.",
+ _("Cursive Font Family"),
+ _("The default Cursive font family used to display text."),
"serif",
flags));
@@ -143,8 +229,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_DEFAULT_FONT_FAMILY,
g_param_spec_string(
"default-font-family",
- "Default Font Family",
- "The default font family used to display text.",
+ _("Default Font Family"),
+ _("The default font family used to display text."),
"sans-serif",
flags));
@@ -152,8 +238,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_FANTASY_FONT_FAMILY,
g_param_spec_string(
"fantasy-font-family",
- "Fantasy Font Family",
- "The default Fantasy font family used to display text.",
+ _("Fantasy Font Family"),
+ _("The default Fantasy font family used to display text."),
"serif",
flags));
@@ -161,8 +247,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_MONOSPACE_FONT_FAMILY,
g_param_spec_string(
"monospace-font-family",
- "Monospace Font Family",
- "The default font family used to display monospace text.",
+ _("Monospace Font Family"),
+ _("The default font family used to display monospace text."),
"monospace",
flags));
@@ -170,8 +256,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
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 Font Family"),
+ _("The default Sans Serif font family used to display text."),
"sans-serif",
flags));
@@ -179,8 +265,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_SERIF_FONT_FAMILY,
g_param_spec_string(
"serif-font-family",
- "Serif Font Family",
- "The default Serif font family used to display text.",
+ _("Serif Font Family"),
+ _("The default Serif font family used to display text."),
"serif",
flags));
@@ -188,8 +274,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_DEFAULT_FONT_SIZE,
g_param_spec_int(
"default-font-size",
- "Default Font Size",
- "The default font size used to display text.",
+ _("Default Font Size"),
+ _("The default font size used to display text."),
5, G_MAXINT, 12,
flags));
@@ -197,8 +283,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
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.",
+ _("Default Monospace Font Size"),
+ _("The default font size used to display monospace text."),
5, G_MAXINT, 10,
flags));
@@ -206,8 +292,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_MINIMUM_FONT_SIZE,
g_param_spec_int(
"minimum-font-size",
- "Minimum Font Size",
- "The minimum font size used to display text.",
+ _("Minimum Font Size"),
+ _("The minimum font size used to display text."),
1, G_MAXINT, 5,
flags));
@@ -215,8 +301,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
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.",
+ _("Minimum Logical Font Size"),
+ _("The minimum logical font size used to display text."),
1, G_MAXINT, 5,
flags));
@@ -235,8 +321,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_ENFORCE_96_DPI,
g_param_spec_boolean(
"enforce-96-dpi",
- "Enforce 96 DPI",
- "Enforce a resolution of 96 DPI",
+ _("Enforce 96 DPI"),
+ _("Enforce a resolution of 96 DPI"),
FALSE,
flags));
@@ -244,8 +330,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_AUTO_LOAD_IMAGES,
g_param_spec_boolean(
"auto-load-images",
- "Auto Load Images",
- "Load images automatically.",
+ _("Auto Load Images"),
+ _("Load images automatically."),
TRUE,
flags));
@@ -253,8 +339,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_AUTO_SHRINK_IMAGES,
g_param_spec_boolean(
"auto-shrink-images",
- "Auto Shrink Images",
- "Automatically shrink standalone images to fit.",
+ _("Auto Shrink Images"),
+ _("Automatically shrink standalone images to fit."),
TRUE,
flags));
@@ -262,8 +348,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_PRINT_BACKGROUNDS,
g_param_spec_boolean(
"print-backgrounds",
- "Print Backgrounds",
- "Whether background images should be printed.",
+ _("Print Backgrounds"),
+ _("Whether background images should be printed."),
TRUE,
flags));
@@ -271,8 +357,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_ENABLE_SCRIPTS,
g_param_spec_boolean(
"enable-scripts",
- "Enable Scripts",
- "Enable embedded scripting languages.",
+ _("Enable Scripts"),
+ _("Enable embedded scripting languages."),
TRUE,
flags));
@@ -280,8 +366,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_ENABLE_PLUGINS,
g_param_spec_boolean(
"enable-plugins",
- "Enable Plugins",
- "Enable embedded plugin objects.",
+ _("Enable Plugins"),
+ _("Enable embedded plugin objects."),
TRUE,
flags));
@@ -289,16 +375,16 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_RESIZABLE_TEXT_AREAS,
g_param_spec_boolean(
"resizable-text-areas",
- "Resizable Text Areas",
- "Whether text areas are resizable.",
+ _("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.",
+ _("User Stylesheet URI"),
+ _("The URI of a stylesheet that is applied to every page."),
0,
flags));
@@ -313,8 +399,8 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
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.",
+ _("Zoom Stepping Value"),
+ _("The value by which the zoom level is changed when zooming in or out."),
0.0f, G_MAXFLOAT, 0.1f,
flags));
@@ -332,15 +418,20 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_ENABLE_DEVELOPER_EXTRAS,
g_param_spec_boolean(
"enable-developer-extras",
- "Enable Developer Extras",
- "Enables special extensions that help developers",
+ _("Enable Developer Extras"),
+ _("Enables special extensions that help developers"),
FALSE,
flags));
/**
* WebKitWebSettings:enable-private-browsing:
*
- * Whether to enable private browsing mode.
+ * 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
*/
@@ -348,11 +439,166 @@ static void webkit_web_settings_class_init(WebKitWebSettingsClass* klass)
PROP_ENABLE_PRIVATE_BROWSING,
g_param_spec_boolean(
"enable-private-browsing",
- "Enable Private Browsing",
- "Enables private browsing mode",
+ _("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 teh XSS auditor"),
+ TRUE,
+ 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"),
+ webkit_get_user_agent().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: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));
+
+
+
g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate));
}
@@ -361,6 +607,18 @@ static void webkit_web_settings_init(WebKitWebSettings* web_settings)
web_settings->priv = WEBKIT_WEB_SETTINGS_GET_PRIVATE(web_settings);
}
+static void free_spell_checking_language(gpointer data, gpointer user_data)
+{
+ SpellLanguage* language = static_cast<SpellLanguage*>(data);
+ if (language->config) {
+ if (language->speller)
+ enchant_broker_free_dict(language->config, language->speller);
+
+ enchant_broker_free(language->config);
+ }
+ g_slice_free(SpellLanguage, language);
+}
+
static void webkit_web_settings_finalize(GObject* object)
{
WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
@@ -374,6 +632,12 @@ static void webkit_web_settings_finalize(GObject* object)
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->spell_checking_languages_list, free_spell_checking_language, NULL);
+ g_slist_free(priv->spell_checking_languages_list);
+
+ g_free(priv->user_agent);
G_OBJECT_CLASS(webkit_web_settings_parent_class)->finalize(object);
}
@@ -382,6 +646,8 @@ static void webkit_web_settings_set_property(GObject* object, guint prop_id, con
{
WebKitWebSettings* web_settings = WEBKIT_WEB_SETTINGS(object);
WebKitWebSettingsPrivate* priv = web_settings->priv;
+ SpellLanguage* lang;
+ GSList* spellLanguages = NULL;
switch(prop_id) {
case PROP_DEFAULT_ENCODING:
@@ -458,6 +724,61 @@ static void webkit_web_settings_set_property(GObject* object, guint prop_id, con
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:
+ priv->spell_checking_languages = g_strdup(g_value_get_string(value));
+
+ if (priv->spell_checking_languages) {
+ char** langs = g_strsplit(priv->spell_checking_languages, ",", -1);
+ for (int i = 0; langs[i]; i++) {
+ lang = g_slice_new0(SpellLanguage);
+ lang->config = enchant_broker_init();
+ lang->speller = enchant_broker_request_dict(lang->config, langs[i]);
+
+ spellLanguages = g_slist_append(spellLanguages, lang);
+ }
+
+ g_strfreev(langs);
+ } else {
+ const char* language = pango_language_to_string(gtk_get_default_language());
+
+ lang = g_slice_new0(SpellLanguage);
+ lang->config = enchant_broker_init();
+ lang->speller = enchant_broker_request_dict(lang->config, language);
+
+ spellLanguages = g_slist_append(spellLanguages, lang);
+ }
+ g_slist_foreach(priv->spell_checking_languages_list, free_spell_checking_language, NULL);
+ g_slist_free(priv->spell_checking_languages_list);
+ priv->spell_checking_languages_list = spellLanguages;
+ break;
+ case PROP_ENABLE_XSS_AUDITOR:
+ priv->enable_xss_auditor = 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(webkit_get_user_agent().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_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
+ priv->enable_offline_web_application_cache = g_value_get_boolean(value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -536,6 +857,33 @@ static void webkit_web_settings_get_property(GObject* object, guint prop_id, GVa
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_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_ENABLE_OFFLINE_WEB_APPLICATION_CACHE:
+ g_value_set_boolean(value, priv->enable_offline_web_application_cache);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
break;
@@ -588,6 +936,16 @@ WebKitWebSettings* webkit_web_settings_copy(WebKitWebSettings* web_settings)
"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,
+ "spell-checking-languages-list", priv->spell_checking_languages_list,
+ "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,
+ "user-agent", webkit_web_settings_get_user_agent(web_settings),
+ "javascript-can-open-windows-automatically", priv->javascript_can_open_windows_automatically,
+ "enable-offline-web-application-cache", priv->enable_offline_web_application_cache,
NULL));
return copy;
@@ -609,4 +967,40 @@ void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* webView, cons
PluginDatabase::installedPlugins()->addExtraPluginDirectory(filenameToString(directory));
}
+/**
+ * webkit_web_settings_get_spell_languages:
+ * @web_view: a #WebKitWebView
+ *
+ * Internal use only. Retrieves a GSList of SpellLanguages from the
+ * #WebKitWebSettings of @web_view.
+ *
+ * Since: 1.1.6
+ */
+GSList* webkit_web_settings_get_spell_languages(WebKitWebView *web_view)
+{
+ g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(web_view), 0);
+
+ WebKitWebSettings* settings = webkit_web_view_get_settings(web_view);
+ WebKitWebSettingsPrivate* priv = settings->priv;
+ GSList* list = priv->spell_checking_languages_list;
+
+ return list;
+}
+
+/**
+ * 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;
}
diff --git a/WebKit/gtk/webkit/webkitwebsettings.h b/WebKit/gtk/webkit/webkitwebsettings.h
index 5d25fee..9eac321 100644
--- a/WebKit/gtk/webkit/webkitwebsettings.h
+++ b/WebKit/gtk/webkit/webkitwebsettings.h
@@ -1,5 +1,6 @@
/*
* 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
@@ -53,13 +54,16 @@ struct _WebKitWebSettingsClass {
};
WEBKIT_API GType
-webkit_web_settings_get_type (void);
+webkit_web_settings_get_type (void);
WEBKIT_API WebKitWebSettings *
-webkit_web_settings_new (void);
+webkit_web_settings_new (void);
WEBKIT_API WebKitWebSettings *
-webkit_web_settings_copy (WebKitWebSettings *web_settings);
+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
diff --git a/WebKit/gtk/webkit/webkitwebview.cpp b/WebKit/gtk/webkit/webkitwebview.cpp
index d6a0d54..ec59e60 100644
--- a/WebKit/gtk/webkit/webkitwebview.cpp
+++ b/WebKit/gtk/webkit/webkitwebview.cpp
@@ -55,6 +55,7 @@
#include "FrameLoaderTypes.h"
#include "HitTestRequest.h"
#include "HitTestResult.h"
+#include <glib/gi18n-lib.h>
#include "GraphicsContext.h"
#include "InspectorClientGtk.h"
#include "FrameLoader.h"
@@ -62,6 +63,7 @@
#include "PasteboardHelper.h"
#include "PlatformKeyboardEvent.h"
#include "PlatformWheelEvent.h"
+#include "ProgressTracker.h"
#include "ResourceHandle.h"
#include "ScriptValue.h"
#include "Scrollbar.h"
@@ -71,10 +73,10 @@
/**
* SECTION:webkitwebview
- * @short_description: The central class of the WebKit/Gtk+ API
+ * @short_description: The central class of the WebKitGTK+ API
* @see_also: #WebKitWebSettings, #WebKitWebFrame
*
- * #WebKitWebView is the central class of the WebKit/Gtk+ API. It is a
+ * #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
@@ -107,8 +109,6 @@ static const double defaultDPI = 96.0;
using namespace WebKit;
using namespace WebCore;
-extern "C" {
-
enum {
/* normal signals */
NAVIGATION_REQUESTED,
@@ -121,6 +121,7 @@ enum {
LOAD_STARTED,
LOAD_COMMITTED,
LOAD_PROGRESS_CHANGED,
+ LOAD_ERROR,
LOAD_FINISHED,
TITLE_CHANGED,
HOVERING_OVER_LINK,
@@ -137,6 +138,10 @@ enum {
PASTE_CLIPBOARD,
CUT_CLIPBOARD,
DOWNLOAD_REQUESTED,
+ MOVE_CURSOR,
+ PRINT_REQUESTED,
+ PLUGIN_WIDGET,
+ CLOSE_WEB_VIEW,
LAST_SIGNAL
};
@@ -154,6 +159,8 @@ enum {
PROP_TRANSPARENT,
PROP_ZOOM_LEVEL,
PROP_FULL_CONTENT_ZOOM,
+ PROP_LOAD_STATUS,
+ PROP_PROGRESS,
PROP_ENCODING,
PROP_CUSTOM_ENCODING
};
@@ -165,13 +172,6 @@ G_DEFINE_TYPE(WebKitWebView, webkit_web_view, GTK_TYPE_CONTAINER)
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 void webkit_web_view_context_menu_position_func(GtkMenu*, gint* x, gint* y, gboolean* pushIn, WebKitWebViewPrivate* data)
-{
- *pushIn = FALSE;
- *x = data->lastPopupXPosition;
- *y = data->lastPopupYPosition;
-}
-
static gboolean webkit_web_view_forward_context_menu_event(WebKitWebView* webView, const PlatformMouseEvent& event)
{
Page* page = core(webView);
@@ -206,7 +206,7 @@ static gboolean webkit_web_view_forward_context_menu_event(WebKitWebView* webVie
priv->lastPopupXPosition = event.globalX();
priv->lastPopupYPosition = event.globalY();
gtk_menu_popup(menu, NULL, NULL,
- reinterpret_cast<GtkMenuPositionFunc>(webkit_web_view_context_menu_position_func),
+ NULL,
priv, event.button() + 1, gtk_get_current_event_time());
return TRUE;
}
@@ -290,14 +290,12 @@ static void webkit_web_view_get_property(GObject* object, guint prop_id, GValue*
case PROP_URI:
g_value_set_string(value, webkit_web_view_get_uri(webView));
break;
-#if GTK_CHECK_VERSION(2,10,0)
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;
-#endif
case PROP_EDITABLE:
g_value_set_boolean(value, webkit_web_view_get_editable(webView));
break;
@@ -325,6 +323,12 @@ static void webkit_web_view_get_property(GObject* object, guint prop_id, GValue*
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;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec);
}
@@ -437,48 +441,6 @@ static gboolean webkit_web_view_key_press_event(GtkWidget* widget, GdkEventKey*
if (frame->eventHandler()->keyEvent(keyboardEvent))
return TRUE;
- FrameView* view = frame->view();
- SelectionController::EAlteration alteration;
- if (event->state & GDK_SHIFT_MASK)
- alteration = SelectionController::EXTEND;
- else
- alteration = SelectionController::MOVE;
-
- // TODO: We probably want to use GTK+ key bindings here and perhaps take an
- // approach more like the Win and Mac ports for key handling.
- switch (event->keyval) {
- case GDK_Down:
- view->scrollBy(IntSize(0, cScrollbarPixelsPerLineStep));
- return TRUE;
- case GDK_Up:
- view->scrollBy(IntSize(0, -cScrollbarPixelsPerLineStep));
- return TRUE;
- case GDK_Right:
- view->scrollBy(IntSize(cScrollbarPixelsPerLineStep, 0));
- return TRUE;
- case GDK_Left:
- view->scrollBy(IntSize(-cScrollbarPixelsPerLineStep, 0));
- return TRUE;
- case GDK_space:
- if ((event->state & GDK_SHIFT_MASK) == GDK_SHIFT_MASK)
- view->scrollBy(IntSize(0, -view->visibleHeight()));
- else
- view->scrollBy(IntSize(0, view->visibleHeight()));
- return TRUE;
- case GDK_Page_Up:
- view->scrollBy(IntSize(0, -view->visibleHeight()));
- return TRUE;
- case GDK_Page_Down:
- view->scrollBy(IntSize(0, view->visibleHeight()));
- return TRUE;
- case GDK_Home:
- view->scrollBy(IntSize(0, -view->contentsHeight()));
- return TRUE;
- case GDK_End:
- view->scrollBy(IntSize(0, view->contentsHeight()));
- 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);
}
@@ -514,7 +476,23 @@ static gboolean webkit_web_view_button_press_event(GtkWidget* widget, GdkEventBu
if (!frame->view())
return FALSE;
- return frame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event));
+ gboolean result = frame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event));
+
+#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)
@@ -567,6 +545,21 @@ static gboolean webkit_web_view_scroll_event(GtkWidget* widget, GdkEventScroll*
return frame->eventHandler()->handleWheelEvent(wheelEvent);
}
+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();
+}
+
static void webkit_web_view_size_allocate(GtkWidget* widget, GtkAllocation* allocation)
{
GTK_WIDGET_CLASS(webkit_web_view_parent_class)->size_allocate(widget,allocation);
@@ -582,6 +575,21 @@ static void webkit_web_view_size_allocate(GtkWidget* widget, GtkAllocation* allo
frame->view()->adjustViewSize();
}
+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();
+
+ 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
@@ -589,9 +597,14 @@ static gboolean webkit_web_view_focus_in_event(GtkWidget* widget, GdkEventFocus*
GtkWidget* toplevel = gtk_widget_get_toplevel(widget);
if (GTK_WIDGET_TOPLEVEL(toplevel) && gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
+ FocusController* focusController = core(webView)->focusController();
- Frame* frame = core(webView)->mainFrame();
- core(webView)->focusController()->setActive(frame);
+ focusController->setActive(true);
+
+ if (focusController->focusedFrame())
+ focusController->setFocused(true);
+ else
+ focusController->setFocusedFrame(core(webView)->mainFrame());
}
return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->focus_in_event(widget, event);
}
@@ -601,6 +614,7 @@ static gboolean webkit_web_view_focus_out_event(GtkWidget* widget, GdkEventFocus
WebKitWebView* webView = WEBKIT_WEB_VIEW(widget);
core(webView)->focusController()->setActive(false);
+ core(webView)->focusController()->setFocused(false);
return GTK_WIDGET_CLASS(webkit_web_view_parent_class)->focus_out_event(widget, event);
}
@@ -713,6 +727,11 @@ 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;
@@ -847,6 +866,59 @@ static void webkit_web_view_real_copy_clipboard(WebKitWebView* webView)
frame->editor()->command("Copy").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();
@@ -860,14 +932,6 @@ static void webkit_web_view_dispose(GObject* object)
priv->disposing = TRUE;
- if (priv->corePage) {
- webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(object));
-
- core(priv->mainFrame)->loader()->detachChildren();
- delete priv->corePage;
- priv->corePage = NULL;
- }
-
if (priv->horizontalAdjustment) {
g_object_unref(priv->horizontalAdjustment);
priv->horizontalAdjustment = NULL;
@@ -881,7 +945,17 @@ static void webkit_web_view_dispose(GObject* object)
if (priv->backForwardList) {
g_object_unref(priv->backForwardList);
priv->backForwardList = NULL;
+ }
+ if (priv->corePage) {
+ webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(object));
+
+ core(priv->mainFrame)->loader()->detachFromParent();
+ delete priv->corePage;
+ priv->corePage = NULL;
+ }
+
+ if (priv->webSettings) {
g_signal_handlers_disconnect_by_func(priv->webSettings, (gpointer)webkit_web_view_settings_notify, webView);
g_object_unref(priv->webSettings);
priv->webSettings = NULL;
@@ -900,9 +974,6 @@ static void webkit_web_view_dispose(GObject* object)
gtk_target_list_unref(priv->paste_target_list);
priv->paste_target_list = NULL;
-
- delete priv->userAgent;
- priv->userAgent = NULL;
}
G_OBJECT_CLASS(webkit_web_view_parent_class)->dispose(object);
@@ -919,7 +990,7 @@ static void webkit_web_view_finalize(GObject* object)
G_OBJECT_CLASS(webkit_web_view_parent_class)->finalize(object);
}
-static gboolean webkit_create_web_view_request_handled(GSignalInvocationHint* ihint, GValue* returnAccu, const GValue* handlerReturn, gpointer dummy)
+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);
@@ -955,13 +1026,61 @@ static AtkObject* webkit_web_view_get_accessible(GtkWidget* widget)
if (!doc)
return NULL;
- AccessibilityObject* coreAccessible = doc->axObjectCache()->get(doc->renderer());
+ AccessibilityObject* coreAccessible = doc->axObjectCache()->getOrCreate(doc->renderer());
if (!coreAccessible || !coreAccessible->wrapper())
return NULL;
return coreAccessible->wrapper();
}
+static gdouble webViewGetDPI(WebKitWebView* webView)
+{
+ WebKitWebViewPrivate* priv = webView->priv;
+ WebKitWebSettings* webSettings = priv->webSettings;
+ 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;
+ 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 void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
{
GtkBindingSet* binding_set;
@@ -993,9 +1112,9 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[CREATE_WEB_VIEW] = g_signal_new("create-web-view",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (WebKitWebViewClass, create_web_view),
- webkit_create_web_view_request_handled,
+ webkit_signal_accumulator_object_handled,
NULL,
webkit_marshal_OBJECT__OBJECT,
WEBKIT_TYPE_WEB_VIEW , 1,
@@ -1022,7 +1141,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[WEB_VIEW_READY] = g_signal_new("web-view-ready",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (WebKitWebViewClass, web_view_ready),
g_signal_accumulator_true_handled,
NULL,
@@ -1030,6 +1149,26 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
G_TYPE_BOOLEAN, 0);
/**
+ * WebKitWebView::close-web-view:
+ * @web_view: the object on which the signal is emitted
+ * @return: %TRUE to stop handlers from being invoked for the event or
+ * %FALSE to propagate the event furter
+ *
+ * Emitted when closing a WebView is requested. This occurs when a call
+ * is made from JavaScript's window.close function.
+ *
+ * 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:
* @web_view: the object on which the signal is emitted
* @frame: the #WebKitWebFrame that required the navigation
@@ -1043,7 +1182,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[NAVIGATION_REQUESTED] = g_signal_new("navigation-requested",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (WebKitWebViewClass, navigation_requested),
webkit_navigation_request_handled,
NULL,
@@ -1059,13 +1198,13 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
* @request: a #WebKitNetworkRequest
* @navigation_action: a #WebKitWebNavigation
* @policy_decision: a #WebKitWebPolicyDecision
- * @return: TRUE if the signal will be handled, FALSE to have the
+ * @return: TRUE if a decision was made, FALSE to have the
* default behavior apply
*
* 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 url,
+ * 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
@@ -1075,12 +1214,19 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
* 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.
+ *
* 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 | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -1098,18 +1244,25 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
* @request: a #WebKitNetworkRequest
* @navigation_action: a #WebKitWebNavigation
* @policy_decision: a #WebKitWebPolicyDecision
- * @return: TRUE if the signal will be handled, FALSE to have the
+ * @return: TRUE if a decision was made, FALSE to have the
* default behavior apply
*
* 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.
+ *
* 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 | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -1127,7 +1280,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
* @request: a WebKitNetworkRequest
* @mimetype: the MIME type attempted to load
* @policy_decision: a #WebKitWebPolicyDecision
- * @return: TRUE if the signal will be handled, FALSE to have the
+ * @return: TRUE if a decision was made, FALSE to have the
* default behavior apply
*
* Decide whether or not to display the given MIME type. If this
@@ -1136,11 +1289,18 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
* type; 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 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.
+ *
* 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 | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -1168,7 +1328,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[WINDOW_OBJECT_CLEARED] = g_signal_new("window-object-cleared",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET (WebKitWebViewClass, window_object_cleared),
NULL,
NULL,
@@ -1194,11 +1354,22 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
* 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()).
+ *
* 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 | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
g_signal_accumulator_true_handled,
NULL,
@@ -1215,7 +1386,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[LOAD_STARTED] = g_signal_new("load-started",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1232,7 +1403,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[LOAD_COMMITTED] = g_signal_new("load-committed",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1248,7 +1419,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[LOAD_PROGRESS_CHANGED] = g_signal_new("load-progress-changed",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1256,9 +1427,34 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
G_TYPE_NONE, 1,
G_TYPE_INT);
+ /**
+ * WebKitWebView::load-error
+ * @web_view: 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
+ */
+ 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);
+
webkit_web_view_signals[LOAD_FINISHED] = g_signal_new("load-finished",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1278,7 +1474,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[TITLE_CHANGED] = g_signal_new("title-changed",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1297,7 +1493,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[HOVERING_OVER_LINK] = g_signal_new("hovering-over-link",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1317,7 +1513,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[POPULATE_POPUP] = g_signal_new("populate-popup",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1325,9 +1521,38 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
G_TYPE_NONE, 1,
GTK_TYPE_MENU);
+ /**
+ * WebKitWebView::print-requested
+ * @web_view: the object in which the signal is emitted
+ * @web_frame: the frame that is requesting to be printed
+ * @return: %TRUE if the print request has been handled, %FALSE if
+ * the default handler should run
+ *
+ * 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.
+ *
+ * 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 | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1337,7 +1562,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
webkit_web_view_signals[ICOND_LOADED] = g_signal_new("icon-loaded",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1346,7 +1571,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
webkit_web_view_signals[SELECTION_CHANGED] = g_signal_new("selection-changed",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
0,
NULL,
NULL,
@@ -1365,7 +1590,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[CONSOLE_MESSAGE] = g_signal_new("console-message",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(WebKitWebViewClass, console_message),
g_signal_accumulator_true_handled,
NULL,
@@ -1384,7 +1609,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[SCRIPT_ALERT] = g_signal_new("script-alert",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(WebKitWebViewClass, script_alert),
g_signal_accumulator_true_handled,
NULL,
@@ -1404,7 +1629,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[SCRIPT_CONFIRM] = g_signal_new("script-confirm",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(WebKitWebViewClass, script_confirm),
g_signal_accumulator_true_handled,
NULL,
@@ -1425,7 +1650,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
webkit_web_view_signals[SCRIPT_PROMPT] = g_signal_new("script-prompt",
G_TYPE_FROM_CLASS(webViewClass),
- (GSignalFlags)(G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION),
+ (GSignalFlags)G_SIGNAL_RUN_LAST,
G_STRUCT_OFFSET(WebKitWebViewClass, script_prompt),
g_signal_accumulator_true_handled,
NULL,
@@ -1501,11 +1726,60 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
g_cclosure_marshal_VOID__VOID,
G_TYPE_NONE, 0);
+ /**
+ * WebKitWebView::move-cursor:
+ * @web_view: 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.
+ *
+ * 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:
+ * @web_view: 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 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.
+ *
+ * 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);
+
/*
* 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;
@@ -1517,6 +1791,7 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
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->move_cursor = webkit_web_view_real_move_cursor;
GObjectClass* objectClass = G_OBJECT_CLASS(webViewClass);
objectClass->dispose = webkit_web_view_dispose;
@@ -1534,10 +1809,13 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
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;
+ widgetClass->size_request = webkit_web_view_size_request;
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;
GtkContainerClass* containerClass = GTK_CONTAINER_CLASS(webViewClass);
containerClass->add = webkit_web_view_container_add;
@@ -1582,6 +1860,49 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
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
*/
@@ -1595,8 +1916,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
g_object_class_install_property(objectClass, PROP_TITLE,
g_param_spec_string("title",
- "Title",
- "Returns the @web_view's document title",
+ _("Title"),
+ _("Returns the @web_view's document title"),
NULL,
WEBKIT_PARAM_READABLE));
@@ -1609,12 +1930,11 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
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",
+ _("URI"),
+ _("Returns the current URI of the contents displayed by the @web_view"),
NULL,
WEBKIT_PARAM_READABLE));
-#if GTK_CHECK_VERSION(2,10,0)
/**
* WebKitWebView:copy-target-list:
*
@@ -1624,8 +1944,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
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",
+ _("Copy target list"),
+ _("The list of targets this web view supports for clipboard copying"),
GTK_TYPE_TARGET_LIST,
WEBKIT_PARAM_READABLE));
@@ -1638,16 +1958,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
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",
+ _("Paste target list"),
+ _("The list of targets this web view supports for clipboard pasting"),
GTK_TYPE_TARGET_LIST,
WEBKIT_PARAM_READABLE));
-#endif
g_object_class_install_property(objectClass, PROP_SETTINGS,
g_param_spec_object("settings",
- "Settings",
- "An associated WebKitWebSettings instance",
+ _("Settings"),
+ _("An associated WebKitWebSettings instance"),
WEBKIT_TYPE_WEB_SETTINGS,
WEBKIT_PARAM_READWRITE));
@@ -1660,8 +1979,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
g_object_class_install_property(objectClass, PROP_WEB_INSPECTOR,
g_param_spec_object("web-inspector",
- "Web Inspector",
- "The associated WebKitWebInspector instance",
+ _("Web Inspector"),
+ _("The associated WebKitWebInspector instance"),
WEBKIT_TYPE_WEB_INSPECTOR,
WEBKIT_PARAM_READABLE));
@@ -1681,15 +2000,15 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
g_object_class_install_property(objectClass, PROP_EDITABLE,
g_param_spec_boolean("editable",
- "Editable",
- "Whether content can be modified by the user",
+ _("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",
+ _("Transparent"),
+ _("Whether content has a transparent background"),
FALSE,
WEBKIT_PARAM_READWRITE));
@@ -1702,8 +2021,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
g_object_class_install_property(objectClass, PROP_ZOOM_LEVEL,
g_param_spec_float("zoom-level",
- "Zoom level",
- "The level of zoom of the content",
+ _("Zoom level"),
+ _("The level of zoom of the content"),
G_MINFLOAT,
G_MAXFLOAT,
1.0f,
@@ -1718,8 +2037,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
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",
+ _("Full content zoom"),
+ _("Whether the full content is scaled when zooming"),
FALSE,
WEBKIT_PARAM_READWRITE));
@@ -1732,8 +2051,8 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
g_object_class_install_property(objectClass, PROP_ENCODING,
g_param_spec_string("encoding",
- "Encoding",
- "The default encoding of the web view",
+ _("Encoding"),
+ _("The default encoding of the web view"),
NULL,
WEBKIT_PARAM_READABLE));
@@ -1746,57 +2065,41 @@ static void webkit_web_view_class_init(WebKitWebViewClass* webViewClass)
*/
g_object_class_install_property(objectClass, PROP_CUSTOM_ENCODING,
g_param_spec_string("custom-encoding",
- "Custom Encoding",
- "The custom encoding of the web view",
+ _("Custom Encoding"),
+ _("The custom encoding of the web view"),
NULL,
WEBKIT_PARAM_READWRITE));
- g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate));
-}
-
-static gdouble webViewGetDPI(WebKitWebView* webView)
-{
- WebKitWebViewPrivate* priv = webView->priv;
- WebKitWebSettings* webSettings = priv->webSettings;
- gboolean enforce96DPI;
- g_object_get(webSettings, "enforce-96-dpi", &enforce96DPI, NULL);
- if (enforce96DPI)
- return 96.0;
-
- gdouble DPI = defaultDPI;
-#if GTK_CHECK_VERSION(2,10,0)
- 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;
- }
-#endif
- ASSERT(DPI > 0);
- return DPI;
-}
-
-static void webkit_web_view_screen_changed(WebKitWebView* webView, GdkScreen* previousScreen, gpointer userdata)
-{
- WebKitWebViewPrivate* priv = webView->priv;
- WebKitWebSettings* webSettings = priv->webSettings;
- Settings* settings = core(webView)->settings();
- gdouble DPI = webViewGetDPI(webView);
-
- guint defaultFontSize, defaultMonospaceFontSize, minimumFontSize, minimumLogicalFontSize;
+ /**
+ * WebKitWebView: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));
- g_object_get(webSettings,
- "default-font-size", &defaultFontSize,
- "default-monospace-font-size", &defaultMonospaceFontSize,
- "minimum-font-size", &minimumFontSize,
- "minimum-logical-font-size", &minimumLogicalFontSize,
- NULL);
+ /**
+ * 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));
- settings->setDefaultFontSize(defaultFontSize / 72.0 * DPI);
- settings->setDefaultFixedFontSize(defaultMonospaceFontSize / 72.0 * DPI);
- settings->setMinimumFontSize(minimumFontSize / 72.0 * DPI);
- settings->setMinimumLogicalFontSize(minimumLogicalFontSize / 72.0 * DPI);
+ g_type_class_add_private(webViewClass, sizeof(WebKitWebViewPrivate));
}
static void webkit_web_view_update_settings(WebKitWebView* webView)
@@ -1808,7 +2111,8 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
gchar* defaultEncoding, *cursiveFontFamily, *defaultFontFamily, *fantasyFontFamily, *monospaceFontFamily, *sansSerifFontFamily, *serifFontFamily, *userStylesheetUri;
gboolean autoLoadImages, autoShrinkImages, printBackgrounds,
enableScripts, enablePlugins, enableDeveloperExtras, resizableTextAreas,
- enablePrivateBrowsing;
+ enablePrivateBrowsing, enableCaretBrowsing, enableHTML5Database, enableHTML5LocalStorage,
+ enableXSSAuditor, javascriptCanOpenWindows, enableOfflineWebAppCache;
g_object_get(webSettings,
"default-encoding", &defaultEncoding,
@@ -1827,6 +2131,12 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
"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,
+ "javascript-can-open-windows-automatically", &javascriptCanOpenWindows,
+ "enable-offline-web-application-cache", &enableOfflineWebAppCache,
NULL);
settings->setDefaultTextEncodingName(defaultEncoding);
@@ -1845,6 +2155,12 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
settings->setUserStyleSheetLocation(KURL(KURL(), userStylesheetUri));
settings->setDeveloperExtrasEnabled(enableDeveloperExtras);
settings->setPrivateBrowsingEnabled(enablePrivateBrowsing);
+ settings->setCaretBrowsingEnabled(enableCaretBrowsing);
+ settings->setDatabasesEnabled(enableHTML5Database);
+ settings->setLocalStorageEnabled(enableHTML5LocalStorage);
+ settings->setXSSAuditorEnabled(enableXSSAuditor);
+ settings->setJavaScriptCanOpenWindowsAutomatically(javascriptCanOpenWindows);
+ settings->setOfflineWebApplicationCacheEnabled(enableOfflineWebAppCache);
g_free(defaultEncoding);
g_free(cursiveFontFamily);
@@ -1855,7 +2171,7 @@ static void webkit_web_view_update_settings(WebKitWebView* webView)
g_free(serifFontFamily);
g_free(userStylesheetUri);
- webkit_web_view_screen_changed(webView, NULL, NULL);
+ webkit_web_view_screen_changed(GTK_WIDGET(webView), NULL);
}
static inline gint pixelsFromSize(WebKitWebView* webView, gint size)
@@ -1896,7 +2212,7 @@ static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GPar
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(webView, NULL, NULL);
+ 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"))
@@ -1915,6 +2231,18 @@ static void webkit_web_view_settings_notify(WebKitWebSettings* webSettings, GPar
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));
+ else if (name == g_intern_string("enable-html5-database"))
+ settings->setDatabasesEnabled(g_value_get_boolean(&value));
+ 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("javascript-can-open-windows-automatically"))
+ settings->setJavaScriptCanOpenWindowsAutomatically(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 (!g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), name))
g_warning("Unexpected setting '%s'", name);
g_value_unset(&value);
@@ -1950,11 +2278,7 @@ static void webkit_web_view_init(WebKitWebView* webView)
priv->zoomFullContent = FALSE;
-#if GTK_CHECK_VERSION(2,10,0)
GdkAtom textHtml = gdk_atom_intern_static_string("text/html");
-#else
- GdkAtom textHtml = gdk_atom_intern("text/html", false);
-#endif
/* Targets for copy */
priv->copy_target_list = gtk_target_list_new(NULL, 0);
gtk_target_list_add(priv->copy_target_list, textHtml, 0, WEBKIT_WEB_VIEW_TARGET_INFO_HTML);
@@ -1967,7 +2291,6 @@ static void webkit_web_view_init(WebKitWebView* webView)
priv->webSettings = webkit_web_settings_new();
webkit_web_view_update_settings(webView);
- g_signal_connect(webView, "screen-changed", G_CALLBACK(webkit_web_view_screen_changed), NULL);
g_signal_connect(priv->webSettings, "notify", G_CALLBACK(webkit_web_view_settings_notify), webView);
priv->webWindowFeatures = webkit_web_window_features_new();
@@ -1989,6 +2312,31 @@ void webkit_web_view_notify_ready(WebKitWebView* webView)
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)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitDownload* download = webkit_download_new(request);
+
+ if (!response.isNull() && !response.suggestedFilename().isEmpty())
+ webkit_download_set_suggested_filename(download, response.suggestedFilename().utf8().data());
+
+ 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;
+ }
+
+ webkit_download_start(download);
+}
+
+bool webkit_web_view_use_primary_for_paste(WebKitWebView* webView)
+{
+ return webView->priv->usePrimaryForPaste;
+}
void webkit_web_view_set_settings(WebKitWebView* webView, WebKitWebSettings* webSettings)
{
@@ -2281,7 +2629,7 @@ void webkit_web_view_open(WebKitWebView* webView, const gchar* 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_strdup_printf("file://%s", uri);
+ gchar* fileUri = g_filename_to_uri(uri, NULL, NULL);
webkit_web_view_load_uri(webView, fileUri);
g_free(fileUri);
}
@@ -2981,6 +3329,35 @@ SoupSession* webkit_get_default_session ()
return ResourceHandle::defaultSession();
}
+/**
+ * webkit_web_view_get_load_status:
+ * @web_view: 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:
+ * @web_view: 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();
}
/**
@@ -3050,3 +3427,38 @@ const char* webkit_web_view_get_custom_encoding(WebKitWebView* webView)
} else
return NULL;
}
+
+/**
+ * webkit_web_view_move_cursor:
+ * @web_view: 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);
+}
+
+void webkit_web_view_set_group_name(WebKitWebView* webView, const gchar* groupName)
+{
+ g_return_if_fail(WEBKIT_IS_WEB_VIEW(webView));
+
+ WebKitWebViewPrivate* priv = webView->priv;
+
+ if (!priv->corePage)
+ return;
+
+ priv->corePage->setGroupName(String::fromUTF8(groupName));
+}
diff --git a/WebKit/gtk/webkit/webkitwebview.h b/WebKit/gtk/webkit/webkitwebview.h
index 1455a79..fbdefa8 100644
--- a/WebKit/gtk/webkit/webkitwebview.h
+++ b/WebKit/gtk/webkit/webkitwebview.h
@@ -28,6 +28,7 @@
#include <webkit/webkitdefines.h>
#include <webkit/webkitwebbackforwardlist.h>
+#include <webkit/webkitwebframe.h>
#include <webkit/webkitwebhistoryitem.h>
#include <webkit/webkitwebsettings.h>
@@ -73,6 +74,8 @@ struct _WebKitWebViewClass {
gboolean (* web_view_ready) (WebKitWebView* web_view);
+ gboolean (* close_web_view) (WebKitWebView* web_view);
+
WebKitNavigationResponse (* navigation_requested) (WebKitWebView *web_view,
WebKitWebFrame *frame,
WebKitNetworkRequest *request);
@@ -103,6 +106,9 @@ struct _WebKitWebViewClass {
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
@@ -117,8 +123,6 @@ struct _WebKitWebViewClass {
void (*_webkit_reserved3) (void);
void (*_webkit_reserved4) (void);
void (*_webkit_reserved5) (void);
- void (*_webkit_reserved6) (void);
- void (*_webkit_reserved7) (void);
};
WEBKIT_API GType
@@ -324,6 +328,17 @@ webkit_web_view_set_custom_encoding (WebKitWebView * webView,
WEBKIT_API const char*
webkit_web_view_get_custom_encoding (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 *web_view);
+
+WEBKIT_API gdouble
+webkit_web_view_get_progress (WebKitWebView *web_view);
+
G_END_DECLS
#endif
diff --git a/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp b/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp
index 7e61b59..47610d3 100644
--- a/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp
+++ b/WebKit/gtk/webkit/webkitwebwindowfeatures.cpp
@@ -54,8 +54,6 @@
* </programlisting></informalexample>
*/
-extern "C" {
-
enum {
PROP_0,
@@ -102,6 +100,8 @@ static void webkit_web_window_features_class_init(WebKitWebWindowFeaturesClass*
GParamFlags flags = (GParamFlags)(WEBKIT_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+ webkit_init();
+
/**
* WebKitWebWindowFeatures:x:
*
@@ -438,6 +438,3 @@ gboolean webkit_web_window_features_equal(WebKitWebWindowFeatures* features1, We
return TRUE;
return FALSE;
}
-
-
-}
diff --git a/WebKit/gtk/webkitmarshal.list b/WebKit/gtk/webkitmarshal.list
index b714a7c..aa0d40c 100644
--- a/WebKit/gtk/webkitmarshal.list
+++ b/WebKit/gtk/webkitmarshal.list
@@ -1,3 +1,4 @@
+BOOLEAN:ENUM,INT
BOOLEAN:INT,INT,STRING
BOOLEAN:OBJECT
BOOLEAN:OBJECT,OBJECT,OBJECT,OBJECT
@@ -9,6 +10,7 @@ BOOLEAN:STRING,INT,STRING
BOOLEAN:VOID
ENUM:OBJECT,OBJECT
OBJECT:OBJECT
+OBJECT:STRING,STRING,POINTER
OBJECT:VOID
VOID:OBJECT,OBJECT
VOID:OBJECT,POINTER,POINTER